create-skill
Create, audit, grow or repair agent skills (a folder with SKILL.md) for Claude Code, Cursor, Codex and the skills CLI, including skills that write or run plans.
Skill by pahlevikun
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/pahlevikun-create-skill
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security, writing, productivity, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/create-skill
What's inside
- Skill name
create-skill- Description
- Create, audit, grow or repair agent skills (a folder with SKILL.md) for Claude Code, Cursor, Codex and the skills CLI, including skills that write or run plans. Use when asked to write or add a skill, fix a skill that never triggers, split an oversized SKILL.md into a router, add a workflow, reference or script, check a skill is still accurate, heal a skill after a bad run, or review skill quality.
- License
- MIT
- Instructions
- 105 lines in SKILL.md · view on GitHub
Files (13)
- SKILL.md
- audit.md · references/
- format.md · references/
- grow.md · references/
- maintain.md · references/
- patterns.md · references/
- plans.md · references/
- scripts.md · references/
- writing.md · references/
- handoff.md · templates/
- plan.md · templates/
- skill-router.md · templates/
- skill.md · templates/
SKILL.md (first lines)
# Create a skill
A skill is a folder with a `SKILL.md`. Its name and description are always in context; its body loads when the task matches; `references/`, `scripts/` and `templates/` load only when the body points to them.
This skill covers skills only. For subagents use `create-agent`; for rules, hooks and slash commands use `create-rule`, `create-hook` and `create-command`; to convert a rule, command, agent, conversation, PDF or docs folder, or to merge existing skills, use `convert-as-skill`.
## Principles
1. **The description is the router.** The model loads a skill from its description alone. Say what it does, then `Use when ...` with the words a user would say.
2. **Assume the model is smart.** Add only what it lacks: your conventions, your commands, the traps. Cut explanations of common knowledge.
3. **One job per skill.** If the name needs "and", split it. If two skills overlap, merge them (`convert-as-skill` merge-skills).
4. **Match freedom to risk.** Judgment calls get principles and criteria. Fragile steps (migrations, deploys) get exact commands or a script.
5. **Progressive disclosure.** Aim for `SKILL.md` under 200 lines, never over 500. Depth goes in `references/`, one level deep.
6. **Test by using it.** An untested description is a guess.
## Is a skill the right tool?
| Need | Use |
|---|---|
| A procedure or knowledge loaded only when relevant | **Skill** |
| A fact or constraint true for every task in the repo | Rule or `AGENTS.md` (`create-rule`, `create-agents-md`) |
| Must happen every time, not model-decided | Hook (`create-hook`) |
| Isolated context, restricted tools, another model | Subagent (`create-agent`) |
| A saved prompt you type as `/name` | Command, or a skill with `disable-model-invocation: true` (`create-command`) |
## What do you want to do?
| Request | Go to |
|---|---|
| New skill | [New skill](#new-skill) |
| Skill exists but never triggers, misfires, or is too big | [Audit](#audit), then fix by symptom in [format.md](references/format.md#test-and-iterate) |
| Review a skill or a folder of skills | [Audit](#audit) |
| Turn a rule, command, agent, conversation, PDF or docs folder into a skill, or merge two skills | `convert-as-skill` |
## New skill
1. **Gather requirements.** Infer from the conversation first; ask only for what is missing:
- the task and 2 or 3 real requests it must handle (these become the trigger words and the first tests);
- where it lives (see [Where it goes](#where-it-goes));
- the knowledge the model would not already have;
- an output format, if quality depends on one.
If the user supplied exact wording for the skill, use it verbatim. Do not paraphrase or add headings around it.
2. **Check for overlap.** List the skills in the target tree. Extend or merge before creating.
3. **Name it.** Lowercase letters, digits and single hyphens, at most 64 characters, equal to the folder name. Prefer a verb phrase or a noun that says the job (`review-diff`, `pdf-processing`). Avoid `helper`, `utils`, `tools`.
4. **Pick the shape.** One task under about 150 lines: [templates/skill.md](templates/skill.md). Three or more distinct tasks: the router in [templates/skill-router.md](templates/skill-router.md), with `SKILL.md` holding principles and routing.
5. **Write the description.** Third person, at most 1024 characters, one quoted line. What it does, then `Use when ...`. Front-load the keywords. Add "Not for ..." when a neighbor could be confused with it.
6. **Write the body** in the order the agent acts: imperative steps, each with an observable result; one term per concept; one default approach plus at most one escape hatch; a template or an input/output pair when format matters; a verification step. Patterns are in [patterns.md](references/patterns.md).
7. **Set invocation.** `disable-model-invocation: true` for side effects or anything you only want on `/name`. `user-invocable: false` (Claude Code) for background knowledge. Leave the default otherwise.
8. **Lint.** `node <create-agent>/scripts/lint.mjs <skill-dir>`, where `<create-agent>` is the sibling `create-agent` skill folder. If it is not installed, walk [audit.md](references/audit.md) by hand.
9. **Test.** Run the real requests from step 1 plus one that should not trigger it. Fix by symptom and re-run. See [format.md](references/format.md#test-and-iterate).
10. **Eval fixtures.** Add `evals/evals.json` with `skill_name`, at least two scenarios (happy path and boundary), and assertions. Visual skills may use `evals/cases.json` instead. Point to them from `SKILL.md` when you change behavior. `node scripts/bootstrap-skill-evals.mjs` seeds missing files.
11. **Catalog metadata.** Add or update the skill entry in `skills/catalog-metadata.json` (`related_skills`, `invokes`, optional `tags` and `capabilities`). Run `npm run sync:skill-metadata` to merge the `metadata:` block into `SKILL.md` like `product/infographic`.
## Pointers and the two loads
Everything you add to a skill spends one of two budgets. Know which one before you add it.
- **Context load:** text that sits in the agent's window every turn, whether or not it is used. A skill description and a line in `AGENTS.md` are context load. Keep them short.
- **Reader load:** the effort a person spends remembering which documents exist and when to open each. Spend it where human judgment matters. Cut it where it does not.
Also count the text loaded when the agent opens a reference. It is absent from
the always-loaded description, but it still costs context on that run. Split
references by task so the agent reads only the part it needs.
A **pointer** is a short line in always-loaded text that names material kept elsewhere and says when to open it. A skill description is a pointer. A good pointer says what the material is, then lists the distinct cases that should trigger it. Put the strongest trigger word first. If two phrases name the same case, keep one.
Material behind a pointer costs only the pointer's line until it is needed. Material with no pointer costs the reader's memory. So:
- Keep `SKILL.md` to the steps that every run needs. Move detail that only some cases need into a `references/` file, and point to it from the step that uses it.
- Keep each fact in one place. If the environment already holds it (a script in `package.json`, a `--help` text), point to that instead of copying it.
- Remove a sentence when the model already does it by default. It costs load and changes nothing.
- End each step with a clear way to tell it is done. A vague finish ("understood") invites stopping early.
## Where it goes
| Target | Path |
|---|---|
| Claude Code, personal | `~/.claude/skills/<name>/SKILL.md` |
| Claude Code, project | `.claude/skills/<name>/SKILL.md` |
| Cursor, project | `.cursor/skills/<name>/SKILL.md` (also reads `.agents/skills/` and `.claude/skills/`) |
| Any agent | `.agents/skills/<name>/` or publish the repo and `npx skills add <owner>/<repo>` |
| A skill catalog like this one | `skills/<group>/<name>/SKILL.md`, plus the group's `DESCRIPTION.md` |
Never write into a tool's built-in folder (for example Cursor's `skills-cursor`). Check which of the paths above the current project already uses and follow it. In a catalog repo, follow that repo's maintenance instructions (`CLAUDE.md` or `AGENTS.md`) for sync and validation.
## Audit
1. Run the lint step above on the skill folder or the whole tree.
2. Walk [audit.md](references/audit.md) for what a linter cannot judge: specific description, principles over platitudes, actionable steps, tested triggers.
3. Report a score and findings by priority, each with a concrete fix: **Broken** (will not load or trigger), **Weak** (misroutes or wastes context), **Polish**.
4. Apply only the fixes the user asked for. Keep the author's structure and voice.
## Do not
- Write a first-person description ("I can help you ...") or one with no trigger.
- Put the core rule only in a reference file the agent may skip.
- Chain references (`SKILL.md` to a file to another file), or use Windows-style paths.
- Add time-sensitive facts without a date, or restate what the model already knows.
- Leave dynamic shell injection (a backticked command prefixed with `!`) in a published skill without guarding it.
## Related skills
- `create-agent`: the job is a delegate with its own context and tools.
- `create-command`: the job is a saved prompt you type as /name.
- `create-rule`: the guidance must apply on every task.
- `create-hook`: the job must run on an event.
- `convert-as-skill`: the source material already exists.
- `find-skills`: check whether a skill for this already exists before you write one.
## Done when
- `name` equals the folder; the description says what and when; the linter reports no errors.
- `SKILL.md` is under 500 lines (ideally 200) and every linked file exists, one level deep.
- It ran on at least one real request and triggered correctly, and did not trigger on the unrelated one.
- No overlap with an existing skill, or the overlap was merged.From pahlevikun/levistack, MIT.
More from pahlevikun/levistack
- 0.570score
output-savers
pahlevikun
Engineering principles plus plain STE writing in one skill.
SkillAFreshness: AClaude Code +9 - 0.570score
convert-as-skill
pahlevikun
Convert existing material into a skill, or merge existing skills into one.
SkillAFreshness: AClaude Code +9 - 0.570score
create-agent
pahlevikun
Create, audit, test or improve subagents (agents/*.md for Claude Code and Cursor), including prompts, tool and model choice, multi-agent orchestration and…
SkillAFreshness: AClaude Code +9 - 0.570score
create-agents-md
pahlevikun
Create, audit or refresh AGENTS.md files: the repo root, nested package files, and the user-level global file, for Claude Code, Cursor and Codex.
SkillAFreshness: AClaude Code +9 - 0.570score
create-command
pahlevikun
Create, audit or improve slash commands (commands/*.md, .claude/commands, .cursor/commands): saved prompts you run as /name, with arguments and tool…
SkillAFreshness: AClaude Code +9 - 0.570score
create-hook
pahlevikun
Create, wire up, test and debug agent hooks: Claude Code settings.json or plugin hooks, Cursor hooks.json, or a shared hooks/ tree, with working recipes.
SkillAFreshness: AClaude Code +9 - 0.570score
create-rule
pahlevikun
Create, audit or tighten persistent rules for coding agents: .claude/rules/*.md, .cursor/rules/*.mdc, a catalog rules/ tree, CLAUDE.md or AGENTS.md.
SkillAFreshness: AClaude Code +9 - 0.570score
super-architecture
pahlevikun
Detect, choose, build, evaluate, migrate and document software architecture.
SkillAFreshness: AClaude Code +9 - 0.570score
super-caching
pahlevikun
Super caching: domain router for web (browser, CDN, service worker, HTTP Cache-Control, BFF/API route cache), mobile (on-device, offline, image cache…
SkillAFreshness: AClaude Code +9 - 0.570score
super-protobuf
pahlevikun
Protocol Buffers (proto3) design, buf.yaml/buf.gen.yaml, Connect and gRPC services, protovalidate, lint and breaking checks, schema evolution, mixed-version…
SkillAFreshness: AClaude Code +9 - 0.570score
super-tech-blueprint
pahlevikun
Choose or generate a target technology stack: compare frameworks with TCO, security and ecosystem scoring, plan a migration, or write a blueprint for a new or…
SkillAFreshness: AClaude Code +9 - 0.570score
atomic-semantic-commit
pahlevikun
Split a messy working tree into small commits, one purpose and one context per commit, with semantic commit messages (feat, fix, docs, style, refactor, test…
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 5, 2026 (23 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/pahlevikun/levistack
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from pahlevikun
- 0.570score
convert-as-skill
pahlevikun
Convert existing material into a skill, or merge existing skills into one.
SkillAFreshness: AClaude Code +9 - 0.570score
create-agent
pahlevikun
Create, audit, test or improve subagents (agents/*.md for Claude Code and Cursor), including prompts, tool and model choice, multi-agent orchestration and…
SkillAFreshness: AClaude Code +9 - 0.570score
create-agents-md
pahlevikun
Create, audit or refresh AGENTS.md files: the repo root, nested package files, and the user-level global file, for Claude Code, Cursor and Codex.
SkillAFreshness: AClaude Code +9 - 0.570score
create-command
pahlevikun
Create, audit or improve slash commands (commands/*.md, .claude/commands, .cursor/commands): saved prompts you run as /name, with arguments and tool…
SkillAFreshness: AClaude Code +9 - 0.570score
create-hook
pahlevikun
Create, wire up, test and debug agent hooks: Claude Code settings.json or plugin hooks, Cursor hooks.json, or a shared hooks/ tree, with working recipes.
SkillAFreshness: AClaude Code +9 - 0.570score
create-rule
pahlevikun
Create, audit or tighten persistent rules for coding agents: .claude/rules/*.md, .cursor/rules/*.mdc, a catalog rules/ tree, CLAUDE.md or AGENTS.md.
SkillAFreshness: AClaude Code +9
Cite this page
create-skill. Agent Mart. https://agentmart.dev/skills/pahlevikun-create-skill (last updated 2026-10-24)