Agent Skills
pracht ships 28 Claude Code skills for scaffolding, auditing, testing, and deploying apps. They are published at stable URLs with a signed discovery manifest, seeded into new apps by create-pracht, and pair with the built-in MCP server.
What Ships
Every skill is a single SKILL.md — frontmatter (name, version, description, allowed-tools) plus an action-oriented body — that Claude Code loads from .claude/skills/<name>/SKILL.md and invokes with /<skill-name>. The catalog covers four categories:
| Category | Skills |
|---|---|
| Framework & migration | /pracht-scaffold, /pracht-debug, /pracht-deploy, /migrate-nextjs, /upgrade-pracht |
| Audit & review | /audit-loaders, /audit-shells, /audit-islands, /audit-auth, /audit-csrf, /audit-headers, /audit-secrets, /audit-redirects, /audit-deps, /audit-bundles, /audit-seo, /audit-a11y, /tune-render-mode, /pre-deploy |
| Testing scaffolds | /scaffold-tests, /scaffold-e2e, /pracht-test-api |
| App primitives | /add-auth, /add-db, /add-i18n, /add-observability, /typed-routes, /configure-isg |
The source of truth lives in the repo's skills/ directory, with per-skill descriptions in skills/README.md. Instead of globbing src/, the skills read the resolved app graph via pracht inspect routes|api|build --json, so they account for groups, inheritance, and both routers.
Discovery Endpoint
The skills are published following the agent skills discovery RFC. A well-known manifest lists every skill with a canonical URL and a SHA-256 digest of its source:
curl https://pracht.resynapse.dev/.well-known/agent-skills/index.json{
"$schema": "https://agentskills.io/schema/v0.2.0/index.json",
"skills": [
{
"name": "audit-csrf",
"type": "claude-skill",
"description": "Verify CSRF posture on forms and mutation APIs...",
"url": "https://pracht.resynapse.dev/skills/audit-csrf/SKILL.md",
"sha256": "…"
}
]
}Agents landing on the home page can find the manifest without prior knowledge — it is advertised with an RFC 8288 Link header:
Link: </.well-known/agent-skills/index.json>; rel="agent-skills"Both are emitted by a small Vite plugin (vite-plugin-agent-skills.ts) that reads the repo skills at build time, computes the digests, and serves each SKILL.md as a public asset.
Manual Install
Each skill is a plain Markdown file at a stable URL, so installing one into any app is a single curl into your .claude/skills/ directory:
mkdir -p .claude/skills/audit-csrf
curl -o .claude/skills/audit-csrf/SKILL.md \
https://pracht.resynapse.dev/skills/audit-csrf/SKILL.mdRestart Claude Code (or start a new session) and invoke it with /audit-csrf. Verify a download against the manifest's sha256 if you want integrity checking:
shasum -a 256 .claude/skills/audit-csrf/SKILL.mdSeeded by create-pracht
New apps do not need to install anything manually. npm create pracht@latest asks — with a yes default — whether to set up agent tooling:
Set up Claude Code skills + MCP? (Y/n):Accepting seeds two things into the scaffold:
.claude/skills/<name>/SKILL.md— the full skill catalog, ready for Claude Code to discover..mcp.json— registers thepracht mcpserver so MCP clients pick it up automatically.
Pass --agent-tools / --no-agent-tools to skip the prompt in scripted runs; --yes includes the tooling.
Relationship to the MCP Server
The skills shell out to pracht inspect ... --json, pracht doctor, and pracht verify. The built-in MCP server (pracht mcp) exposes the same capabilities as native tools — inspect, doctor, verify, and generate — for clients that prefer tool calls over shell access. The seeded .mcp.json wires it up:
{
"mcpServers": {
"pracht": {
"command": "npx",
"args": ["pracht", "mcp"]
}
}
}Skills and MCP tools share the same source of truth: the resolved app manifest. Use whichever fits your client — or both.