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/dot-agents create-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
Security scan pending...
This skill is queued for security scanning. Results will appear when the scan completes.
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. For user-facing workflows, also define which kickoff, progress, decision, blocker, and completion events deserve a message and the smallest useful shape for each.
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.### 🧩 Skill created: <name>, a tree of created paths, and ### ✅ Verified with the exact checks. Link
both absolute source and symlink paths.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
Refactor naming and repository structure exhaustively while preserving behavior and external contracts.
tools
Uses Chrome DevTools via MCP for efficient debugging, troubleshooting and browser automation. Use when debugging web pages, automating browser interactions, analyzing performance, or inspecting network requests. This skill does not apply to `--slim` mode (MCP configuration).
testing
Audit an entire repository with fresh eyes for correctness errors, bugs, omissions, duplication, inconsistencies, and other evidenced mistakes; fix every safe issue and verify the result.
development
Autonomous overnight codebase improvement with bounded runtime, evidence-gated changes, and verification.