From scaffold-skill
Write, update, validate, and package agent skills inside an existing or new repository. Use when the user asks to scaffold a skill in a repo, write a SKILL.md, add references/scripts/assets by hand, create project-local .agents/skills entries, optionally add skills.sh/Claude/Codex packaging, or validate skill files before use or publishing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/scaffold-skill:scaffold-skillThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill to write production-quality Agent Skills in the repository the user is working in. It is knowledge-only: read the instructions and references, inspect the repo, then create or edit the skill files in context.
agents/openai.yamlreferences/distribution-targets.mdreferences/in-repo-scaffolding.mdreferences/portable-skill-format.mdreferences/production-examples.mdreferences/quality-gates.mdreferences/repo-architecture.mdreferences/verification-process.mdscripts/validate_skill_repo.pyscripts/verify_reference_facts.pyUse this skill to write production-quality Agent Skills in the repository the user is working in. It is knowledge-only: read the instructions and references, inspect the repo, then create or edit the skill files in context.
Hard rule: This skill does not run a generator.
<skill-root>/scripts/verify_reference_facts.py is for maintaining scaffold-skill itself against local agentskills and Vercel skills checkouts. It is not part of the normal workflow for scaffolding skills in user repos.
When updating scaffold-skill's own references or making claims about packaging behavior, directory paths, frontmatter constraints, plugin manifest fields, or install commands, verify against current source when available:
python3 <skill-root>/scripts/verify_reference_facts.py
The verifier auto-discovers sibling checkouts when possible. If auto-discovery fails, pass local paths explicitly with --agentskills <path>, --vercel-skills <path>, and repeatable --production-repo <path>. If sources are unavailable, say what could not be verified, then use the bundled references as a fallback. Do not invent undocumented client-specific behavior.
README.md, plugin directories, package metadata, and .agents/skills/. Use the current repo's conventions when they are clear. Never overwrite existing files unless the user explicitly asks.references/portable-skill-format.md for SKILL.md and resource rules.references/in-repo-scaffolding.md for placement and safe file creation in user repos.references/repo-architecture.md for repository layouts.references/distribution-targets.md only when the user wants publishing or plugin packaging.references/quality-gates.md before finalizing descriptions, scripts, references, or evals.references/production-examples.md when choosing between layouts or metadata patterns.references/verification-process.md only when maintaining scaffold-skill references..agents/skills/<name>/SKILL.md. For a repo that ships skills, this is usually skills/<name>/SKILL.md plus optional references/, scripts/, assets/, and agents/openai.yaml.<skill-root>/scripts/... paths because agents may be running from the target repo, not from this skill directory.python3 <skill-root>/scripts/validate_skill_repo.py <repo-root> --strict-frontmatter
For a single skill directory, passing the skill directory path also works:
python3 <skill-root>/scripts/validate_skill_repo.py <repo-root>/.agents/skills/<name> --strict-frontmatter
python3 <skill-root>/scripts/validate_skill_repo.py <repo-root>/skills/<name> --strict-frontmatter
Only pass packaging targets that were actually created:
python3 <skill-root>/scripts/validate_skill_repo.py <repo-root> --targets vercel --strict-frontmatter
python3 <skill-root>/scripts/validate_skill_repo.py <repo-root> --targets claude --strict-frontmatter
python3 <skill-root>/scripts/validate_skill_repo.py <repo-root> --targets codex --strict-frontmatter
Never run --targets vercel,claude,codex for in-repo-only work unless all those manifests exist; the validator correctly exits 1 when requested target manifests are missing.
If Vercel packaging was added and the CLI is available, smoke-test discovery and install:
npx skills add <repo-root> --list
npx skills add <repo-root> -y
npx skills add is the documented install command. The CLI also accepts install as an alias for add. experimental_install only restores from skills-lock.json.
README.md (see references/distribution-targets.md).SKILL.md frontmatter strict: name, description, and only spec fields such as license, compatibility, metadata, or allowed-tools when needed.disable-model-invocation into a portable/public skill unless the user intentionally accepts client-specific validation failures. For Codex, prefer skills/<skill>/agents/openai.yaml with policy.allow_implicit_invocation: false for explicit-only skills.description; a body section titled “When to use” is too late for automatic activation.SKILL.md lean and procedural. If the file approaches 500 lines or mixes unrelated variants, split details into references/ and say exactly when to read each reference.--help, noninteractive flags, structured stdout, useful stderr, and idempotent/dry-run behavior in bundled scripts.[TODO: ...] values.README.md with an ## Install section whose first command is npx skills add owner/repo (no --skill flag when the repo has one skill). Verify against vercel/skills when local source is available.Before final response, confirm:
SKILL.md with matching lowercase kebab-case name.scripts/, references/, assets/, and agents/openai.yaml paths exist.skills.sh.json references real skill names if created..claude-plugin/plugin.json skill paths resolve if created..codex-plugin/plugin.json and .agents/plugins/marketplace.json are internally consistent if created.README.md with ## Install and a working npx skills add owner/repo one-liner (smoke-tested with --list or -y when the CLI is available).Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub backnotprop/scaffold-skill --plugin scaffold-skill