skill-creator-primer
You **MUST** load this skill before the skill-creator skill AND before making ANY change to, or conducting a review of ANY Agent Skill.
Skill by sammcj
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/sammcj-skill-creator-primer
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: writing, 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
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/skill-creator-primer
What's inside
- Skill name
skill-creator-primer- Description
- You **MUST** load this skill before the skill-creator skill AND before making ANY change to, or conducting a review of ANY Agent Skill. Triggers include creating, editing, reviewing, or contributing to any part of an Agent Skill (description, frontmatter, body, references, scripts, trigger evals, conflicts, etc).
- License
- Apache-2.0
- Metadata
- version: 2026-10-19
- Instructions
- 388 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- files: referenced but missing: references/kv.md
Files (18)
- CHANGELOG.md
- CLAUDE.md
- SKILL.md
- skill-template.md · assets/
- trigger.json · evals/
- html-report.md · references/
- steering.md · references/
- trigger-evals.md · references/
- ruff.toml
- eval_triggering.py · scripts/
- hook_report_skill_tokens.py · scripts/
- list_descriptions.py · scripts/
- render_report.py · scripts/
- report_assets.py · scripts/
- report_model.py · scripts/
- validate_skill.py · scripts/
- test_render_report.py · tests/
- test_validate_skill.py · tests/
SKILL.md (first lines)
# Skill Creator Primer
Note: If the `skill-creator` skill is missing: stop and ask the user to install `skill-creator@claude-plugins-official` (registering the marketplace first via `/plugin marketplace add anthropics/claude-plugins-official` if needed), or to clone https://github.com/anthropics/skills and link its `skills` directory into their local skills directory.
Route to an entry point by the task in front of you (which-one routing per "Routing when branches multiply", not a content index):
- Creating a new skill -> start at "Capture Intent from Conversation" and work forward.
- Editing an existing skill -> the sections covering what you're changing, then the "Self-Review Protocol".
- Reviewing a skill, or a diff to one -> "Reviewing a Skill".
- Tuning a description or its triggering -> "Writing Effective Descriptions".
- Producing a report, page or visual of a skill's findings -> `references/html-report.md`.
## Predictable Process, Not Identical Output
A skill wrangles determinism out of a stochastic system where applicable. What it makes predictable is the _process_ - the agent taking the same steps each run - not the _output_. A brainstorming skill should predictably diverge: its tokens vary, its behaviour doesn't. This is the lens for the rest of this primer: triggering, structure, steering, and pruning are all levers on process consistency; cost and maintainability follow. Judge any change by whether it makes the agent behave more consistently, given what that particular skill is for.
## Track Each Step as a Task
Before you create, update, or review a skill, create a task (todo) for each step of the work - the primer sections you'll apply, plus a self-review pass - each phrased with its completion criterion, then work them to completion.
- This is the primer's own defence against premature completion: with the finish line in view, the agent tends to make the visible edit and skip the review. Tracked tasks keep the whole process in front of you.
- Scale the ceremony to the change: substantial skill work warrants a task per step; a trivial edit still earns its description update, a trigger-conflict check, and a self-review pass, tracked or not.
## How Skills Actually Work
**Skills are prompt-based context modifiers.** When invoked, a skill:
1. Injects SKILL.md instructions into the conversation context
2. Modifies execution context by changing tool permissions and optionally switching models
3. Guides the agent's behaviour through concise instructions
**Skill selection happens through pure LLM reasoning.** No algorithmic matching, keyword search, or intent classification (the optional `paths` frontmatter, a file-glob gate, is the sole exception). The agent reads descriptions in the `Skill` tool's prompt and reasons about which matches. This makes the `description` field the single most critical element.
**Branches decide what to disclose.** Inline what every branch of the skill needs; push behind a context pointer (a bundled file) only what a single branch reaches. A pointer's _wording_, not its target, decides whether the agent follows it - a must-have target behind a weak pointer is a variance bug, so sharpen the wording before settling for inlining. When in doubt for this primer, keep almost-certainly-needed material inline so the agent never has to decide whether to read it.
**Routing when branches multiply.** When a skill fans out to many references, write the load decision as a decision tree: each branch a one-line qualifier, each leaf a reference pointer.
- Phrase the qualifier as the task's need, not the target's name - the agent routes by matching its task against it: "key-value (config, sessions, cache) -> `references/kv.md`".
- Keep the tree one level deep with mutually exclusive branches - every routing hop is a decision the agent can get wrong.
- Below a handful of references, skip the tree - plain pointers with sharp wording cost less than a routing layer.
- Trees carry which-one decisions only - reference material wants tables, sequences want numbered lists.
**Invocation mode is a trade-off** - choose it deliberately.
- Model-invoked: the description sits in the agent's context on every request and competes for attention, and the agent may decline to fire even a well-matched skill - so write trigger evals to confirm it fires (see "Testing Skill Triggering").
- User-invoked (`disable-model-invocation: true`): the description stays out of every agent session, but the user must remember the skill exists and trigger it with a slash command.
Default to model-invoked for mid-task discovery; switch to user-invoked when the skill is occasional and the user will reliably reach for it. When the right mode isn't obvious, give the user both options with a one-line pro/con each.
---
## Skills vs Custom Agents
Before writing a skill, confirm a skill is the right vehicle:
- **Skill** - knowledge, a detailed workflow, or helper tools the agent loads on demand within its current context.
- **Custom agent** - a persona with its own context window and world view, carrying at most a lightweight workflow. Adversarial or fresh-perspective work (review, red-teaming, premise-checking) belongs here precisely because the separate context stops it inheriting the caller's assumptions.
- **They compose** - an agent can load skills, so shared knowledge still lives in a skill even when a persona needs its own context.
## Prefer One Skill Over Many Closely Related Skills
When a request spans several related capabilities, default to a single skill that uses progressive disclosure rather than a separate skill per capability:
- **Why one wins** - every extra skill adds a description that is always in every agent's context, competes with the others at selection time, and risks overlapping triggers. This is skill bloat.
- **How to consolidate** - fold the related behaviours into one SKILL.md and push each one's detail into bundled `references/` the agent loads on demand.
- **When to split** - only when the skills trigger on genuinely distinct intents or carry conflicting tool or permission needs.
---
## Capture Intent from Conversation
When a user says "turn this into a skill", extract the workflow from the current conversation before asking questions. Look for:
- Tools used and the sequence of steps taken
- Corrections the user made along the way
- Input/output formats observed
- Patterns that repeated across the conversation
Before drafting, settle:
- **Scope** - ask the user whether the skill owns the task asked for or the outcome above it ("fix this crash" vs "keep the app crash-free"). Owning the outcome needs access: list the data sources, environments and mappings the agent needs to act and verify unaided.
- **Method** - for the skill's domain, answer: what a top practitioner does that the user didn't ask for; the rawest material they start from; the methods and tools they use; what, other than the agent, shows the result is right. Encode the answers as steps (see "Persona over method" and "Self-grading" in Failure Modes).
Fill gaps with the user, then proceed to skill creation.
Draft inside the primer's `assets/skill-template.md`: copy it into the new skill directory as `SKILL.md`, fill the placeholders, delete unused sections.
## Writing Effective Descriptions
The description is the single most important part of a skill to get right. It shares a token budget with every other skill's description and is always active in the agent's context.
### Skill Description Checklist
**Create a task per item below**, judge each pass/fail; done when all pass. Re-check the set after any edit - one fix can break another (an added clause can blow the word cap):
1. **Be concise.** Skills are for agent consumption; agents need clear, high-signal triggers, not verbose prose.
2. **Keep it to 1-2 sentences.** The validator's word cap is a ceiling, never a target to fill: the description is charged to every turn of every session whether it fires or not, so over-cap outranks anything in the body.
3. **Descriptions are solely for the agent deciding whether to load the skill.** No instructions for after activation, and no summary of the skill's content or inner workings - a workflow summary invites the agent to act on the summary and skip the skill's branches.
4. Ensure the description is distinct. It must not be confusable with neighbouring skills - similar names, the same verb/object, or overlapping situational triggers. The co-active set varies per deployment, so distinctiveness comes from a tight, specific trigger; when the neighbours are enumerable, run "Check for Description Trigger Conflicts" below.
5. Use imperative phrasing. Frame the description as an instruction to the agent: Use this skill when rather than This skill does. The agent is deciding whether to act, so tell it when to act.
6. Focus on user intent, not implementation. Describe what the user is trying to achieve, not the skill's internal mechanics. The agent matches against what the user asked for.
7. Front-load the leading word. The description is where a leading word does its invocation work, so lead with it. If the same word lives in the user's prompts, docs, and code, invocation lands harder.
8. One trigger per branch, no synonym padding. Give one trigger for each distinct branch the skill handles; synonyms that rename a single branch are duplication that spends context without widening coverage. Cut identity already stated in the skill body.
9. When a skill over-fires, add a negative-trigger exclusion clause. Name the neighbouring intent and where it belongs instead - "Do NOT use for X, use Y instead" - so the agent can route away from the skill as well as toward it.
### Check for Description Trigger Conflicts
Two skills conflict when an agent, reading both descriptions, cannot reliably tell which one a request should load - that is the only thing this check looks for; skills covering related ground are fine. Run the check against the neighbours you can enumerate: the skills installed beside it, or the repo it is being contributed to.
To compare a new or edited description against a set of skills, list each skill's directory, name, and description:
```bash
python3 <skill-creator-primer>/scripts/list_descriptions.py <skills-root>
```
Group skills sharing a verb or object (create/edit, diagram, review, test), then compare pairwise for shared intent without a disambiguator - not merely shared words.
A pair is ACCEPTABLE when a clear disambiguator is present in the trigger:From sammcj/agentic-coding, Apache-2.0.
More from sammcj/agentic-coding
- 0.740score
release-debrief
Sam McLeod (adapted from Arjen Schwarz)
Summarises the delta between a tool's latest release and the last summary the user saw.
SkillBFreshness: B★ 167Claude Code - 0.732score
extract-wisdom
sammcj
Extract wisdom, insights, and actionable takeaways from YouTube videos, blog posts, articles, or text files.
SkillAFreshness: A★ 167Claude Code - 0.732score
ambitious-model-use
sammcj
Use when the user asks to be more ambitious with an AI task: aim at the outcome behind it, work it like a field-leading expert from raw data, or bring in…
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
rewrite-slop
sammcj
Use when explicitly asked to review or rewrite AI-generated text or UI so it reads as human, or with phrasings like "de-slop", "humanise this", "make it sound…
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ai-changelog
sammcj
Set up an AI-driven changelog system in any project, code or not.
SkillAFreshness: A★ 167Claude Code +9 - 0.729score
retro
sammcj
Retrospective on a coding session that proposes changes to the agent's environment (checks, pointers, steering, tooling) so the next run goes better.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
deferred-task-execution
sammcj
Delays execution of a task until a specified time or after a duration.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
prompt-enhancer
sammcj
Transform poor or overly simple prompts with expert-level framing.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
find-docs
sammcj
Retrieves up-to-date documentation, API references and code examples for any developer technology.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
backlog
sammcj
Capture single backlog items, or list and triage an existing project backlog.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
creating-development-plans
sammcj
Creates structured development plans with phased task breakdowns, requirements, and QA checklists.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
systematic-debugging
sammcj
Applies a modified Fagan Inspection methodology to resolve persistent bugs and complex issues.
SkillAFreshness: A★ 167Claude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 167
- Forks
- 25
- Open issues
- 0
- Last commit (this folder)
- Oct 18, 2026 (10 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 2026-10-19
- License
- Apache-2.0
- Repository
- github.com/sammcj/agentic-coding
- Website
- smcleod.net
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from sammcj
- 0.732score
extract-wisdom
sammcj
Extract wisdom, insights, and actionable takeaways from YouTube videos, blog posts, articles, or text files.
SkillAFreshness: A★ 167Claude Code - 0.732score
rewrite-slop
sammcj
Use when explicitly asked to review or rewrite AI-generated text or UI so it reads as human, or with phrasings like "de-slop", "humanise this", "make it sound…
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ai-changelog
sammcj
Set up an AI-driven changelog system in any project, code or not.
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ambitious-model-use
sammcj
Use when the user asks to be more ambitious with an AI task: aim at the outcome behind it, work it like a field-leading expert from raw data, or bring in…
SkillAFreshness: A★ 167Claude Code +9 - 0.729score
retro
sammcj
Retrospective on a coding session that proposes changes to the agent's environment (checks, pointers, steering, tooling) so the next run goes better.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
deferred-task-execution
sammcj
Delays execution of a task until a specified time or after a duration.
SkillAFreshness: A★ 167Claude Code +9
Cite this page
skill-creator-primer. Agent Mart. https://agentmart.dev/skills/sammcj-skill-creator-primer (last updated 2026-10-24)