create-skill skill
scriptsCreates and registers complete, portable agent skills including documentation, tests, evaluations, and thumbnail art in a managed repository.
- GitHub stars
- 18
- Files
- 23
- Last commit
- Nov 12, 2026
- License
- MIT
- Allowed tools
- —
What does the create-skill skill do?
create-skill creates and registers complete, portable agent skills including documentation, tests, evaluations, and thumbnail art in a managed repository.
Summary generated from the skill's SKILL.md.
About the create-skill skill
Developers looking to build and deploy standardized agent capabilities can use this tool to scaffold and register complete, portable skills within a managed repository. It automates the creation of essential files including SKILL.md, README.md, license files, and package configurations, while also generating deterministic tests and Vally evaluations. The workflow ensures that every new skill is properly integrated into existing registration surfaces like marketplaces, plugins, or catalogs.
When an agent needs to add a new capability to a repository, it loads this skill to plan the entire file structure and registration process. It relies on a skills-repo.config.json file for discovery and uses a strict dry-run and approval mechanism to prevent accidental writes. Beyond code, it handles thumbnail art generation through providers like Azure OpenAI GPT Image 2 or OpenAI Images, or via custom delivery workflows. This ensures that every skill is not only functional and tested but also visually represented in the repository catalog.
What an agent can do with it
- 1Scaffold a new portable skillCreate a complete skill directory with all required documentation, tests, and metadata from a single command.
- 2Generate skill thumbnail artProduce or ingest validated thumbnail images for an existing skill using AI providers or custom workflows.
- 3Register an existing skillAdd a previously authored skill to the repository's registration surfaces without overwriting its local files.
- 4Create skills from JSON fixturesUse a non-interactive mode to deterministically generate validated example skills from a provided JSON input.
Written from the skill's SKILL.md. Every use case is checked against a quote from it.
How to install the create-skill skill
Each command copies the skill folder into the client's skills directory. Restart the client or start a new session to load it.Install the create-skill skill in Plugin
/plugin marketplace add jongio/skills /plugin install jongio-skills@jongio-skills
Install the create-skill skill in Claude Code
~/.claude/skills/create-skill/SKILL.md
$ npx degit jongio/skills/skills/create-skill ~/.claude/skills/create-skillInstall the create-skill skill in Claude Code (project)
.claude/skills/create-skill/SKILL.md
$ npx degit jongio/skills/skills/create-skill .claude/skills/create-skillInstall the create-skill skill in Codex
~/.agents/skills/create-skill/SKILL.md
$ npx degit jongio/skills/skills/create-skill ~/.agents/skills/create-skillInstall the create-skill skill in Gemini CLI
~/.gemini/skills/create-skill/SKILL.md
$ npx degit jongio/skills/skills/create-skill ~/.gemini/skills/create-skillInstall the create-skill skill in Claude.ai
npx degit jongio/skills/skills/create-skill create-skill && zip -r create-skill.zip create-skill # claude.ai → Customize → Skills → + → Create skill → Upload a skill → create-skill.zip
SKILL.md
View on GitHub[!CAUTION] Read and follow the shared safety rules before any action. Preview local writes and obtain explicit approval. Git and GitHub writes require their own approval and are outside this skill.
Create Skill
Create one complete skill and register every repository surface without guessing. The workflow plans first, fails closed on ambiguous conventions, and applies one approved change set.
Commands
| Command | Purpose |
|---|---|
create-skill <name> |
Create and register a new skill with deterministic placeholder art. |
create-skill art <name> |
Preview and create or ingest thumbnail art for an existing skill. |
create-skill register <name> |
Preview and register an existing complete skill without replacing its authored files. |
create-skill check <name> |
Validate the skill shape and thumbnail parity without writing. |
create-skill fixture --input <json> --repo-root <path> |
Deterministically create a validated fixture skill without interview prompts. |
Every mutating command starts with --dry-run. Apply the unchanged plan only after the user
approves its single-use hash.
Workflow
1. Resolve the request
Collect only missing values:
- Skill name in lowercase-dash form.
- A one-sentence summary.
- Specific
USE FORphrases that users will type. - Specific
DO NOT USE FORboundaries and the sibling workflow that should win. - Copyright holder, when repository conventions do not identify one.
- Art choice: Azure OpenAI GPT Image 2, OpenAI Images, custom workflow, or placeholder.
Search installed and repository skills for overlapping triggers before creation. If another skill already owns the same job, stop and propose extending it.
2. Discover the repository
Run from the target repository, not this installed skill directory.
- Prefer the nearest
skills-repo.config.json. - Validate managed identity and settings before deriving canonical repository paths.
- Without managed config, discover the existing populated
skills/directory and known registration surfaces. - Stop before any write when multiple skill roots or catalog surfaces are plausible.
See repository discovery for the exact contract.
3. Preview creation
Invoke this script by absolute path while keeping the target repository as the working directory:
node <skill-dir>/scripts/create-skill.mjs <name> \
--summary "<summary>" \
--use-for "<trigger phrases>" \
--do-not-use-for "<boundaries>" \
--author "<holder>" \
--dry-run
Show the complete JSON preview and approval token. The preview includes every skill file and every registration surface. Ask the user to approve that exact hash once.
4. Apply creation
Repeat the same command and replace --dry-run with --approve <hash>. Do not alter any input
between preview and apply. The tool rejects a stale hash, existing skill directory, symlinked
destination, missing locked Vally toolchain, ambiguous registration, or invalid PNG.
Creation includes:
SKILL.mdwithname,description, andmetadata.versionfrontmatter.README.md,LICENSE,package.json, andpackage-lock.json..vally.yaml, deterministic tests, andevals/<name>/eval.yaml.thumbnail.pngas the tracked source for catalog synchronization when a catalog is present.- Marketplace, plugin, README, eval workflow, Dependabot, and catalog registration when present.
- Prompt and non-secret provenance in
docs/thumbnail-prompts.mdwhen present.
5. Choose art
The initial placeholder is deliberate and deterministic. Replace it only when requested.
Built-in providers
Preview the exact action:
node <skill-dir>/scripts/create-skill.mjs art <name> \
--provider azure-openai \
--prompt "<exact prompt>" \
--dry-run
Supported choices:
azure-openai: Azure OpenAI GPT Image 2 at the exact configuredhttps://<resource>.openai.azure.comorigin.openai: OpenAI Images at the exacthttps://api.openai.comorigin.placeholder: deterministic local PNG with no network or billed call.
The placeholder and check commands run on bare Node. Before a network provider, run
npm ci --ignore-scripts in the installed create-skill directory so its locked SDKs are
available.
Show provider, exact endpoint, model, prompt, targets, billing status, one attempt, and no fallback.
Ask for approval of the single-use action hash. Then repeat with --approve <hash>.
Built-in requests disable redirects and SDK retries. Never retry automatically. Never switch providers after a timeout, redirect, rate limit, service error, invalid response, or rejected PNG. Report the failure and ask the user what to do.
Custom provider or delivery workflow
Ask: "Describe any provider and delivery workflow you want me to use for the thumbnail."
The answer is open-ended. It may name an API, MCP tool, browser flow, local application, uploaded attachment, shared storage location, human handoff, or another delivery mechanism. Never reduce the choice to a local command.
Convert the answer into an exact action preview containing:
- Provider and destination.
- Exact prompt and non-secret data sent.
- Exact tool calls, API origin, browser actions, or human handoff steps.
- Billing or external side effects.
- One attempt and no fallback.
- How the final PNG will arrive in the target repository workspace.
- The skill and catalog paths that will receive the validated bytes.
Show that preview and obtain explicit single-use approval before taking the custom action. Execute only the approved steps once. Never place credentials in the preview or provenance.
After delivery, save the result as a repository-relative regular file and ingest it:
node <skill-dir>/scripts/create-skill.mjs art <name> \
--provider custom \
--custom-description "<approved provider and delivery steps>" \
--custom-provider "<provider name>" \
--custom-model "<model or method>" \
--delivery "<delivery method>" \
--input "<repository-relative PNG>" \
--dry-run
Approve the displayed hash, then repeat with --approve <hash>. The CLI never executes a custom
command. It accepts the delivered PNG only after the same strict validation used for built-in art.
See art and provenance.
6. Validate
Run:
node <skill-dir>/scripts/create-skill.mjs check <name>
npm test
npm run eval:lint
Run vally lint <skill-dir>, skill-doctor, and registration parity checks when available in
the target repository. Do not run the full capability eval unless the user accepts
its agent usage.
7. Generate a deterministic fixture
Repository generators may create functional example skills through the stable fixture contract:
node <skill-dir>/scripts/create-skill.mjs fixture \
--input "<fixture.json>" \
--repo-root "<target-repository>" \
--dry-run
Parse the JSON preview, obtain or propagate approval for its hash, then repeat the unchanged
command with --approve <hash>. Fixture mode is always noninteractive. It accepts only the version
1 schema, deterministic built-in placeholder art, and the normal repository registration path.
It never bypasses dry-run, approval, validation, atomic writes, or provenance.
Read fixture mode for the exact payload and exit contract.
Repository generators use create-skill register create-skill --dry-run, followed by the
unchanged command with --approve <hash>, after catalog staging. This registers the bundled
authoring skill through the same atomic path without rewriting its skill files.
Safety
- Dry-run never writes files or calls an image provider.
- Approval binds the exact inputs and target paths. Changed inputs require a new preview.
- Provider requests make one attempt with no retry, redirect, or fallback.
- Custom workflows require an exact preview and approval before any external action.
- Provider output is untrusted until the complete PNG validator accepts it.
- The validated skill thumbnail is the tracked source; catalog builds generate public copies.
- Secrets never enter prompts, previews, logs, generated files, or provenance.
- Existing files are preserved when planning fails. Apply uses staged sibling files and rollback.
- No git staging, commit, push, issue, pull request, or repository setting change is part of this skill.
Exit Criteria
-
New skills declare
metadata.versionas a quoted SemVer string. Preserve existing skill versions during registration; use the repository's version helper to bump a release and synchronize plugin listings when available. -
The skill has every required file and only portable SKILL.md frontmatter keys.
-
Every discovered or configured registration surface includes the skill.
-
The tracked skill thumbnail passes strict PNG validation; catalog builds generate the public copy.
-
Prompt and non-secret provenance are recorded when that repository surface exists.
-
Deterministic tests and Vally lint pass.
-
The final report lists exact changed files, commands, results, and any blocked work.
Files in this skill
23create-skill skill questions
How do I install the create-skill skill in Claude Code?
Run npx degit jongio/skills/skills/create-skill ~/.claude/skills/create-skill. Claude Code loads skills from ~/.claude/skills (all projects) or .claude/skills (one project) and uses a skill when its description matches the task.
Which clients can use the create-skill skill?
Any client that reads the Agent Skills format: Claude Code, Codex, Gemini CLI and claude.ai (upload as a ZIP). Scripts in the skill run only where the client allows code execution.
Does this skill handle Git operations like committing or pushing?
No, this skill does not perform any git staging, commits, pushes, or other repository setting changes.