PaulRBerg/agent-skills/skills/create-skill/SKILL.md
create-skill
Use to create/scaffold/init a new agent skill under `.agents/skills` in the working directory where invoked.
- Source repository stars
- 68
- Declared platforms
- 1
- Static risk flags
- 1
- Last source update
- 2026-08-04
- Source checked
- 2026-08-04
Decision brief
What it does—and where it fits
Bootstrap a skill with a small observable contract, then symlink it into .claude/skills/ so Claude Code can discover it. Keep invariant workflow guidance in SKILL.md; move deterministic mechanics and conditional detail into scripts and references.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/PaulRBerg/agent-skills --skill "skills/create-skill"Inspect the Agent Skill "create-skill" from https://github.com/PaulRBerg/agent-skills/blob/2c47aa0b01d513aaa36e0c8271cc8c524734eaee/skills/create-skill/SKILL.md at commit 2c47aa0b01d513aaa36e0c8271cc8c524734eaee. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Workflow
Always fetch the latest spec before authoring frontmatter or content:
https://agentskills.ioReject names that are not kebab-case or collide with an existing skill at the resolved path.Confirm is the invocation working directory and is not a home-level or global skill directory. - 02
Model Optimization
Optimize every new skill and its content for GPT-5.6 and Claude Fable 5. The summaries below are reminders, not substitutes for the live guides. Read both guides before designing or writing a complex, long-running, multi-tool, or orchestration-heavy skill because their recommend…
GPT-5.6 prompting guidance: Prefer lean,Claude Fable 5 prompting guidance:Optimize every new skill and its content for GPT-5.6 and Claude Fable 5. The summaries below are reminders, not substitutes for the live guides. Read both guides before designing or writing a complex, long-running, mult… - 03
Arguments
Reject --global, explicit destination paths, and other scope overrides. The invocation working directory is the only supported scope.
skill-name (required): kebab-case name (e.g., my-skill). Stop if missing or invalid.- skill-name (required): kebab-case name (e.g., my-skill). Stop if missing or invalid.Reject --global, explicit destination paths, and other scope overrides. The invocation working directory is the only supported scope. - 04
Resolved Paths
Set to the working directory where the skill was invoked. Create the source at /.agents/skills// and the Claude Code symlink at /.claude/skills/. Do not redirect the scope to the repository root when invoked from a nested project or workspace. Never create or modify a skill unde…
Set to the working directory where the skill was invoked. Create the source at /.agents/skills// and the Claude Code symlink at /.claude/skills/. Do not redirect the scope to the repository root when invoked from a nest…The symlink target is always the relative path ../../.agents/skills/. - 05
Skill Layout
Agents load skills via progressive disclosure, in three stages:
Discovery — only name + description are visible at startup. Front-load triggers in description.Activation — the full SKILL.md body is read once a task matches.Execution — scripts/ run without being read into context; references/ are read only when SKILL.md
Permission review
Static risk signals and limitations
Writes files
The documentation asks the agent to create, modify, or delete local files.
Set `coordination: exempt` only for skills that can never write repository files: pure read-only or reporting skills,Writes files
The documentation asks the agent to create, modify, or delete local files.
skills that write only external or out-of-repository state, or repository-local metadata-only skills such asEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 93/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 68 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- PaulRBerg/agent-skills
- Skill path
- skills/create-skill/SKILL.md
- Commit
- 2c47aa0b01d513aaa36e0c8271cc8c524734eaee
- License
- MIT
- Collected
- 2026-08-04
- Default branch
- main
View the original SKILL.md
Create Skill
Bootstrap a skill with a small observable contract, then symlink it into .claude/skills/ so Claude Code can discover
it. Keep invariant workflow guidance in SKILL.md; move deterministic mechanics and conditional detail into scripts and
references.
Model Optimization
Optimize every new skill and its content for GPT-5.6 and Claude Fable 5. The summaries below are reminders, not substitutes for the live guides. Read both guides before designing or writing a complex, long-running, multi-tool, or orchestration-heavy skill because their recommendations may evolve.
- GPT-5.6 prompting guidance: Prefer lean, outcome-first prompts that specify the goal, success and stopping criteria, constraints, evidence, permission boundaries, tool routing, output shape, and validation. Remove redundant scaffolding and evaluate changes on representative tasks.
- Claude Fable 5 prompting guidance: Use concise instructions that explain intent and boundaries; avoid over-prescription and scope creep; tune effort deliberately; ground progress claims in tool evidence; and make long-run verification and scaffolding explicit when needed.
Arguments
- skill-name (required): kebab-case name (e.g.,
my-skill). Stop if missing or invalid.
Reject --global, explicit destination paths, and other scope overrides. The invocation working directory is the only
supported scope.
Resolved Paths
Set <scope> to the working directory where the skill was invoked. Create the source at
<scope>/.agents/skills/<name>/ and the Claude Code symlink at <scope>/.claude/skills/<name>. Do not redirect the
scope to the repository root when invoked from a nested project or workspace. Never create or modify a skill under
~/.agents, ~/.claude, ~/.codex, or another global installation directory.
The symlink target is always the relative path ../../.agents/skills/<name>.
Skill Layout
<name>/
├── SKILL.md # Required: frontmatter + lean workflow (aim for <500 lines)
├── agents/
│ └── openai.yaml # Required: Codex metadata; disables implicit invocation
├── scripts/ # Optional: helper code (prefer TypeScript via bun run; Python via uv)
├── references/ # Optional: long-form docs loaded on demand
└── assets/ # Optional: templates / fonts / images used in OUTPUT (never loaded into context)
Agents load skills via progressive disclosure, in three stages:
- Discovery — only
name+descriptionare visible at startup. Front-load triggers indescription. - Activation — the full
SKILL.mdbody is read once a task matches. - Execution —
scripts/run without being read into context;references/are read only whenSKILL.mdexplicitly links to them.
Keep SKILL.md focused on workflow. Push bulk into scripts/ (deterministic logic) or references/ (documentation).
Authoring Contract
Before choosing a layout, separate the content into:
- Invariants that every valid execution must preserve.
- Preferred defaults that explicit user intent or repository evidence may override.
- Conditional examples and references loaded only when their branch is active.
Define the outcome, authority boundaries, stopping conditions, and completion evidence. Do not prescribe an identical execution path when several safe paths satisfy the same contract. For user-facing workflows, also define which kickoff, progress, decision, blocker, and completion events deserve a message and the smallest useful shape for each.
When to Split Content
Use scripts/ when
- The same code would be rewritten on every invocation (e.g., PDF rotate, JSON transform, curl wrapper).
- Determinism matters more than flexibility (parsing, validation, codegen, idempotent setup).
- A shell pipeline grows past ~5 lines or needs real error handling.
- A long heredoc keeps appearing inside
SKILL.md.
Scripts are token-efficient: the agent invokes them without reading them. Document the CLI signature in SKILL.md and
leave the implementation in scripts/.
Prefer scripts/*.ts run with bun run scripts/<name>.ts, unless there is a good reason TypeScript is the wrong fit
for the helper. Python is also a good choice for data, text, and file processing; run Python helpers through
uv run scripts/<name>.py, not raw python or python3.
Use references/ when
- A topic exceeds ~100 lines of prose, examples, or schemas.
- Content is conditionally relevant (variant-, framework-, or domain-specific) — splitting keeps irrelevant context out.
- Detailed API surfaces, DB schemas, policies, or large templates would otherwise dominate
SKILL.md. - A long explanation is needed only on one branch.
Rules of thumb:
- One level deep — link
references/placeholder.mddirectly fromSKILL.md, never reference-to-reference. - Files >100 lines: include a table of contents at the top.
- Files >10k words: document grep patterns in
SKILL.mdso the agent can locate sections without reading the whole file. - No duplication — each fact lives in
SKILL.mdor a reference, never both. Keep skills self-contained rather than sharing references across independently installed skills. - For every reference, write one line in
SKILL.mdthat says when to read it.
Reference organization patterns
Pattern A — High-level guide + topical references
SKILL.md
references/
├── forms.md
├── api.md
└── examples.md
SKILL.md teaches the happy path; references hold deep-dive material.
Pattern B — Domain or variant split
SKILL.md # workflow + selection logic
references/
├── aws.md
├── gcp.md
└── azure.md
The agent reads only the variant the user picked — irrelevant providers never enter context.
Pattern C — Conditional details
Inline the basic case in SKILL.md, link advanced files for edge cases (tracked-changes.md, ooxml.md, etc.).
Do NOT add to a skill
README.md,INSTALLATION.md,CHANGELOG.md,QUICK_REFERENCE.md— extraneous.- Notes about how the skill was authored, test logs, scratch files.
- Anything the agent will not use at runtime.
Workflow
1. Fetch Agent Skills Docs
Always fetch the latest spec before authoring frontmatter or content:
Use WebFetch to confirm the current frontmatter schema, naming rules, and progressive-disclosure conventions. Do not
guess — the spec evolves.
2. Validate
- Reject names that are not kebab-case or collide with an existing skill at the resolved path.
- Confirm
<scope>is the invocation working directory and is not a home-level or global skill directory. - Stop if
<scope>/.agents/skills/<name>/or<scope>/.claude/skills/<name>already exists.
3. Read the Authoring Guide and Define the Contract and Layout
Read references/writing-great-skills.md before choosing the contract or layout. It defines the predictability levers and the prose-versus-code-or-schema decision.
Then define the observable outcome, invariants, preferred defaults, authority, routing, stop conditions, and completion evidence. Decide what belongs where:
- Will the workflow invoke helper code? → Prefer
scripts/<name>.tsrun withbun run; usescripts/<name>.pythroughuv runwhen Python is a better fit. - Machine-consumed schema with a real validator? → Bundle both and document the validation route.
- Reference-only schema documentation, long examples, variant guides, or domain knowledge? →
references/<topic>.md - Templates or files the skill writes into the user's output? →
assets/ - None of the above? → ship just
SKILL.md.
Sketch the directory tree first, then create only the subdirectories the layout actually needs.
4. Create the Skill
mkdir -p "<scope>/.agents/skills/<name>/agents"
# Add only the subdirectories the layout calls for:
# mkdir -p "<scope>/.agents/skills/<name>/scripts"
# mkdir -p "<scope>/.agents/skills/<name>/references"
Write <scope>/.agents/skills/<name>/SKILL.md with:
- Frontmatter sorted alphabetically, with
descriptionlast. Thedescriptionis the only field seen at discovery time — front-load trigger phrases there, not in the body. - A short
# Title. - A one-line summary of what the skill does.
disable-model-invocationanduser-invocablefields set for Claude behavior. Omit only when intentionally relying on Claude defaults:disable-model-invocation: false,user-invocable: true.- Set
coordination: exemptonly for skills that can never write repository files: pure read-only or reporting skills, skills that write only external or out-of-repository state, or repository-local metadata-only skills such astask-handoff. This field skips the ai-coord gate for the skill's own work. New skills that edit repository files must not set it. ## Arguments(if any) and a lean imperative workflow. Use fixed steps only when order matters; otherwise state the contract and let repository evidence guide execution.- Explicit links to every
references/file the workflow may need, each with a one-line note describing when to read it. - CLI signatures for any bundled scripts, including the runtime command (
bun run scripts/<name>.tsoruv run scripts/<name>.py), so the agent can call them without reading them.
Aim for SKILL.md under 500 lines. If a section grows past ~50 lines and is not core workflow, move it to references/
and link it.
Write <scope>/.agents/skills/<name>/agents/openai.yaml with:
policy:
allow_implicit_invocation: true
Set allow_implicit_invocation to the inverse of SKILL.md disable-model-invocation. If later adding Codex UI
metadata or MCP/tool dependencies, merge them into the same file and keep the policy.
5. Create the Claude Code Symlink
Always create a relative symlink so Claude Code picks the skill up from its own discovery path:
mkdir -p "<scope>/.claude/skills"
ln -s "../../.agents/skills/<name>" "<scope>/.claude/skills/<name>"
6. Verify
- Patch tooling creates files at mode 0644. Before the first verification run,
chmod 755every executable underscripts/andtests/(a scaffolded test failing its first run withPermission denied (os error 13)is this cause). test -f "<scope>/.agents/skills/<name>/SKILL.md"test -f "<scope>/.agents/skills/<name>/agents/openai.yaml"readlink "<scope>/.claude/skills/<name>"resolves to the source directory.test -xeveryscripts/*andtests/*executable so a missedchmodfails loudly instead of surfacing later as a permission error.- Finish with
### 🧩 Skill created: <name>, a tree of created paths, and### ✅ Verifiedwith the exact checks. Link both absolute source and symlink paths. - Offer to commit the new skill. When the host project's standing instructions require prompt commits, commit without further prompting.
Notes
- Frontmatter rule: sort fields alphabetically, but always place
descriptionlast. - Codex parses
SKILL.mdfrontmatter as YAML before loading a skill. Avoid unquoted colon-space tokens in scalar values such asTriggers: "foo"insidedescription; either omit the label or quote the whole value. - "When to use" information belongs in
description(discovery-time), not in the body (activation-time only). - Use imperative / infinitive form throughout
SKILL.md. - All paths inside
SKILL.md(e.g.,references/placeholder.md,scripts/example.sh) are relative to the skill directory. - Every new skill must include
agents/openai.yamlwithpolicy.allow_implicit_invocationderived fromSKILL.md, never the other way around. - Prefer TypeScript helper scripts run with
bun run; use Python throughuv run, never rawpythonorpython3. - Bash scripts inside the skill must be compatible with Bash 3.2 (
/bin/bash), since Codex uses the built-in Bash by default. - Keep helper stdout, commands, paths, frontmatter, and generated skill content undecorated unless that skill's own output contract requires otherwise.
Alternatives
Compare before choosing
mgiovani/cc-arsenal
create-skill
Create a new agent skill (or Claude Code slash command) from a plain-language description, using live spec fetching, pattern research, and an approval-gated blueprint before any files are written. Use whenever the user wants to build, scaffold, or author a new skill, subagent capability, or slash command, including phrasings like 'make a command for X', 'create a slash command', 'turn this into a reusable skill', or 'package this workflow as a skill'. Not for editing CLAUDE.md/AGENTS.md memory r
dotnet/skills
create-skill
Scaffolds new agent skills for the dotnet/skills repository. Use when creating a new skill, generating SKILL.md files, writing a skill description that the runtime will actually route to, or setting up skill directory structures. Handles frontmatter generation, section templates, and validation guidance. Do not use for fixing a skill that already fails its evaluation (use improve-skill-quality) or for writing eval.yaml (use create-skill-test).
PramodDutta/qaskills
API Test Suite Generator
Automatically generate comprehensive API test suites from OpenAPI specifications covering CRUD operations, error handling, authentication, pagination, and edge cases
garrytan/gstack
document-generate
Generate missing documentation from scratch for a feature, module, or entire project. (gstack)