skillseal/skillseal
Functional quality seal for AI agent skills. Tests every skill in an isolated Docker environment - structure, functionality and security - and certifies it actually works.
SkillSeal is a trust system for AI agent skills that uses verifiable evidence and cryptographic signatures to certify them. It employs an evaluator to test skills in isolated Docker containers and a certifying authority to sign the resulting evidence.
- Tests structure, functionality, and security in isolated Docker containers
- Produces cryptographically verifiable certificates using Ed25519 signatures
- Provides a public API for certificate verification and skill submission
full readme from github
SkillSeal — Evidence-Based Skill Certification
SkillSeal is a trust system for AI agent skills based on verifiable evidence and cryptographic signatures — not reputation or marketing.
The problem it solves
Agent skills (packages of SKILL.md + scripts) are powerful — and dangerous:
- They can execute code.
- They can access the network, files, and environment.
- Today the market is a "wild west": many people publish skills with no guarantee they work or are safe.
SkillSeal answers, in a verifiable way:
"Was this skill actually tested, in an isolated environment, and did it pass structure, functionality, and security?"
Role of each file
1. seal.py — the evaluator
It does not certify. It produces evidence.
Flow:
- Structure — checks the skill is well-formed (
SKILL.mdwith frontmatter, referenced scripts exist, etc.). - Functional test — runs the skill for real inside a hardened Docker container:
- no network
- read-only filesystem
- memory, CPU, and process limits
- minimal capabilities
stracecapturing syscalls- Each test has
command(a list of arguments) andexpect(what should appear in the output). No tests → no functional evidence → it fails.
- Static security — scans the code for risk patterns (
eval, network, destructive, obfuscation, etc.), classified asinfo/warning/fail. - Runtime security — analyzes the real
stracetelemetry:- tried to connect to the internet?
- tried to write outside
/tmp? - read sensitive files?
- executed suspicious processes?
At the end it produces an evidence report (JSON) with:
- skill hash
- test-suite hash
- result of each layer
- final status:
PASS,PASS_WITH_WARNINGS,FAIL, orERROR
The report is the proof of what was observed.
2. certificates.py — the certifying authority
It does not re-evaluate. It signs the evidence.
Flow:
- Receives the report from
seal.py. - Validates the report is complete (schema 2) and that the result is
PASS. - Confirms the skill hash in the report matches the current directory.
- Requires all layers and the runtime to be
PASS. - Rejects scan reports (no functional evidence).
- Builds a canonical payload with:
- short code (
SKL-XXXX-XXXX-XX) - content hash
- checks (layer results)
- evidence (hashes, environment, scope)
- short code (
- Signs with Ed25519 (private key).
- Stores in the catalog (
certificates.json).
The real authority is not the catalog JSON — it is the cryptographic signature.
On verification:
- Recomputes the content hash.
- Validates the signature with the public key.
- Only then declares
CERTIFIED.
If someone modifies the skill afterward, the hash changes and the certificate stops being valid.
The trust chain (full view)
Skill (code)
│
▼
seal.py
→ runs in a sandbox
→ observes real behavior
→ produces an evidence report
│
▼
certificates.py
→ only accepts if result == PASS
→ verifies the hash
→ signs the report
→ issues a certificate
│
▼
Anyone
→ verifies signature + hash
→ trusts (or not) the certificate
Important separation:
| Role | Responsibility |
|---|---|
seal.py |
Produce evidence (what was observed) |
certificates.py |
Sign evidence (who attests) |
This avoids mixing "evaluating" with "certifying".
What the system is NOT
- It is not a marketplace.
- It is not a "decorative badge".
- It does not guarantee a skill is perfect forever.
- It does not replace human review in ambiguous cases (
PASS_WITH_WARNINGS).
It guarantees something more specific and useful:
"On this date, with this test suite, in this environment, the skill passed structure, functionality, and security — and that is signed."
In one sentence:
seal.pyproves what the skill does and whether it is safe;certificates.pyturns that proof into a cryptographically verifiable certificate.
Usage
Evaluate a skill
# Full evaluation (runs in Docker, requires a test suite)
python3 seal.py test ./my-skill --tests tests.json
# Human-readable report
python3 seal.py report ./my-skill --tests tests.json
# Machine-readable report (JSON, for certification)
python3 seal.py report ./my-skill --tests tests.json --json > report.json
# Static-only scan (structure + static security; NOT certifiable)
python3 seal.py scan ./my-skill
Issue and verify a certificate
# Issue a certificate from a PASS report (the recommended path)
python3 certificates.py issue --report report.json ./my-skill \
--name "My Skill" --version 1.0.0 --author "Workloop"
# Verify by code, hash, or directory
python3 certificates.py verify SKL-XXXX-XXXX-XX
python3 certificates.py verify ./my-skill
# List issued certificates
python3 certificates.py list
Test suite format
Each test specifies an explicit command (list of arguments) and expect:
{
"tests": [
{
"name": "basic input",
"command": ["python3", "scripts/main.py"],
"input": "hello",
"expect": ["hello"]
}
]
}
Project status
seal.py is a mature MVP evaluator and certificates.py a closed certifier with a verifiable trust chain. The report schema is versioned (schema_version), and the evaluator version is embedded in every report (seal_version) so certificates remain auditable over time.
Public API
SkillSeal exposes a public API (no auth required for GET endpoints) so anyone can verify certificates, fetch the report, or submit skills for certification programmatically — from scripts, CI/CD pipelines, n8n workflows, or other agents.
Base URL: https://skillseal.workloop.com.br
GET /api/verify?code=SKL-XXXX-XXXX-XX
Verify whether a certificate code is genuine. Returns the certificate details if certified.
curl "https://skillseal.workloop.com.br/api/verify?code=SKL-D266-F285-BC"
{
"status": "CERTIFIED",
"skill": "rag-engineer",
"author": "Dan 02",
"content_sha256": "38db355331ea...",
"issued_at": "2026-08-10T18:45:47Z",
"issuer": "SkillSeal Certification Authority",
"checks": { "structure": {...}, "functional": {...}, "static_security": {...} },
"signature": "hex-ed25519-signature..."
}
GET /api/report
Get the full certification report: summary counts, all certified skills (with download links), and submission history (approved / rejected / pending).
curl "https://skillseal.workloop.com.br/api/report"
{
"gerado_em": "2026-08-10T19:44:20Z",
"resumo": { "total_certificados": 34, "submissoes_aprovadas": 5, "submissoes_reprovadas": 4, "submissoes_pendentes": 0 },
"skills_certificadas": [ { "code", "skill", "author", "download_url", ... } ],
"submissoes": { "aprovadas": [...], "reprovadas": [...], "pendentes": [...] }
}
POST /submit
Submit a skill (.zip, .tar.gz, or single .md/.py/.sh/.js/.sql file) for certification. Evaluated in an isolated sandbox; verdict returned instantly.
curl -F "name=João" -F "email=j@j.com" -F "file=@minha-skill.zip" \
"https://skillseal.workloop.com.br/submit"
Form fields (multipart/form-data): name (required), email, file (required, max 10MB), notes.
{
"success": true,
"skill_name": "rag-engineer",
"skill_desc": "RAG system design & auditing",
"veredito": "CERTIFICADO",
"certificado": "SKL-D266-F285-BC",
"status_certificado": "CERTIFIED",
"detalhe": "..."
}
Verdicts: CERTIFICADO (passed), NAO_CERTIFICADO (failed), DUPLICADO (content already certified — copy of an existing skill), ERRO_*.
GET /health
curl "https://skillseal.workloop.com.br/health"
// { "status": "ok", "time": 1789234567 }
Notes
- Authentication: none required for GET endpoints;
POST /submitis rate-limited. - Format: all responses are JSON (
Content-Type: application/json). - Certificate proof: the SKL code is the proof of certification — anyone can verify it via
/api/verifyor the web UI.
Certified skills
The skills/ directory contains certified skills. Each one has a verified certificate (accessible via the site's /verify page with its SKL-XXXX-XXXX-XX code).
Original skills (by Workloop):
- PostgreSQL Doctor — query tuning & EXPLAIN analysis
- n8n Automation Agent — workflow validation & best practices
- RAG Engineer — RAG system design & auditing
- No-Code Builder — platform selection & architecture
- ClickUp Expert — workspace setup & optimization
- Obsidian Expert — second brain & vault auditing
- Todoist Productivity — task management & GTD
- Instagram Growth Agent — account growth & metrics audit
- Yampi E-commerce Agent — checkout, upsell & cart recovery
- Bitrix24 CRM Agent — sales pipeline & funnel automation
- AI Money Agent — AI income streams & monetization audit
Community skills (MIT/Apache-2.0, enhanced by SkillSeal):
- Pytest Testing Agent — fixtures, mocking & markers
- Playwright E2E Agent — browser test config & selectors
- GitHub PR Agent — pull request quality checklist
- TypeScript Agent — strict config & best practices
- React 19 Agent — React Compiler patterns
- Django REST Agent — DRF setup & viewsets
- LangChain Agent — RAG pipeline config audit
- Chroma DB Agent — vector store config
- FAISS Agent — similarity search index setup
- Whisper Agent — speech recognition config
- vLLM Agent — high-throughput LLM serving config
- LlamaIndex Agent — RAG data framework setup
The skills/ directory also includes community skills that were enhanced with executable audit scripts and passed the SkillSeal three-layer certification (structure, functional, security). Original authors are credited in each skill's frontmatter; enhancements are MIT/Apache-2.0 compatible.
Why this matters
- Authors: the seal increases downloads and trust → more revenue.
- Users: install proven skills, not just "seems fine".
- Ecosystem: raises the quality bar in a market flooded with junk.
Built by Workloop · skillseal.workloop.com.br