skills/create-skill/SKILL.md
Use to create/scaffold/init a new agent skill in `.agents/skills` by default or `~/.agents/skills` with `--global`.
npx skillsauth add paulrberg/agent-skills create-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
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.
my-skill). Stop if missing or invalid.--global (optional): install under ~ instead of the current repo.| Mode | Skill source | Claude Code symlink |
| --------------- | -------------------------- | ------------------------- |
| local (default) | .agents/skills/<name>/ | .claude/skills/<name> |
| --global | ~/.agents/skills/<name>/ | ~/.claude/skills/<name> |
For local mode, <scope> is the chosen project directory. It may be the repository root or a nested project/workspace
directory under a larger repo; a local .agents/skills/ below the repo root is valid when that is the intended project
scope.
The symlink target is always the relative path ../../.agents/skills/<name> so it resolves correctly in both scopes.
<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:
name + description are visible at startup. Front-load triggers in description.SKILL.md body is read once a task matches.scripts/ run without being read into context; references/ are read only when SKILL.md
explicitly links to them.Keep SKILL.md focused on workflow. Push bulk into scripts/ (deterministic logic) or references/ (documentation).
Before choosing a layout, separate the content into:
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.
scripts/ whenSKILL.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.
references/ whenSKILL.md.Rules of thumb:
references/placeholder.md directly from SKILL.md, never reference-to-reference.SKILL.md so the agent can locate sections without reading the whole
file.SKILL.md or a reference, never both. Keep skills self-contained rather
than sharing references across independently installed skills.SKILL.md that says when to read it.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.).
README.md, INSTALLATION.md, CHANGELOG.md, QUICK_REFERENCE.md — extraneous.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.
<scope>/.agents/skills/<name>/ or <scope>/.claude/skills/<name> already exists.Before writing anything, define the observable outcome, invariants, preferred defaults, authority, routing, stop conditions, and completion evidence. Then decide what belongs where:
scripts/<name>.ts run with bun run; use scripts/<name>.py through
uv run when Python is a better fit.references/<topic>.mdassets/SKILL.md.Sketch the directory tree first, then create only the subdirectories the layout actually needs.
Before writing the frontmatter description or any body prose, read
references/writing-great-skills.md — the predictability levers that shape every
wording choice: invocation loads, one-trigger-per-branch descriptions, leading words, completion criteria, and the
no-op/pruning tests.
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:
description last. The description is the only field seen at discovery time
— front-load trigger phrases there, not in the body.# Title.disable-model-invocation and user-invocable fields set for Claude behavior. Omit only when intentionally relying
on Claude defaults: disable-model-invocation: false, user-invocable: true.## 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.references/ file the workflow may need, each with a one-line note describing when to read
it.bun run scripts/<name>.ts or
uv 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.
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>"
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.description last.SKILL.md frontmatter as YAML before loading a skill. Avoid unquoted colon-space tokens in scalar values
such as Triggers: "foo" inside description; either omit the label or quote the whole value.description (discovery-time), not in the body (activation-time only).SKILL.md.SKILL.md (e.g., references/placeholder.md, scripts/example.sh) are relative to the skill
directory.agents/openai.yaml with policy.allow_implicit_invocation derived from SKILL.md,
never the other way around.bun run; use Python through uv run, never raw python or python3./bin/bash), since Codex uses the built-in Bash by
default.development
Use when creating or substantially redesigning web interfaces, landing pages, dashboards, components, or other frontend UI where visual direction and implementation quality matter. Produces subject-specific art direction, accessible responsive code, and rendered visual verification.
development
Orchestrate one to five Sonnet subagents to implement an approved Claude Code plan.
tools
Open the CoinGecko historical-data page for a coin/date in Chromium via Chrome DevTools MCP.
tools
Orchestrate one to five Codex CLI agents to implement an approved Claude Code plan.