skill-builder
Skill Builder
Create new Agent Skills that follow the agentskills.io spec and the official best practices.
When to use
- The user asks to create, scaffold, build, or write a new Agent Skill.
- The user wants to publish a skill or refactor a bloated
SKILL.md. - A task chain ends in "and put it in a skill so I can reuse it across projects".
- The auto-suggest hook (
scripts/task-tracker.py) fires a system-reminder noting that a similar task has been asked 3+ times — propose using this skill to package it. - Self-monitor mode (always-on, even without the hook): track requests within the active conversation. When the user asks 3 substantively-similar tasks in a single session — the same kind of artifact, the same domain, the same workflow — proactively offer to package the recurring pattern as a skill. See Self-monitor mode below for the exact heuristic.
Required structure
Every skill is a folder with a SKILL.md. Optional directories carry detail loaded on demand:
<skill-name>/
├── SKILL.md # required: frontmatter + slim instructions (≤ 200 lines / 5K tokens)
├── LICENSE # MIT to match this repo
├── references/ # detailed docs the agent loads only when needed
├── assets/
│ ├── templates/ # - copy-edit starting points
│ └── examples/ # - full reference implementations
└── scripts/ # bundled executables (validators, scaffolders, processors)
Frontmatter must include name (kebab-case ≤ 64 chars, matching folder) and description (≤ 1024 chars). See references/spec.md for the full field list and naming rules.
Self-monitor mode
The scripts/task-tracker.py hook only fires in sessions started after it was installed (Claude Code reads settings.json once per session). To make the loop work even in the current session, this skill instructs you — Claude — to do your own pattern-tracking from conversation context:
The rule. As you work, mentally tally: has the user asked for the same kind of task in this conversation already? "Same kind" means the same artifact (script / Makefile / doc / migration / etc.) and the same domain or workflow shape — not just the same word appearing twice.
- 2nd similar request — note it silently, finish the task as asked.
- 3rd similar request — pause and propose:
"I notice this is the third time you've asked for [pattern]. Want me to package this as a reusable skill via
skill-builder? I'd runbash skill-builder/scripts/new-skill.sh <name> "<description>"and fill in the references and templates from the patterns we've used. Say yes/no."
Don't auto-create. The user must confirm. If they decline, drop the suggestion and don't bring it up again unless a clearly-new pattern emerges.
Don't false-positive. A user asking three unrelated bug fixes is not a pattern. A user asking "write a script", "add a script", "make a script" is. Compare the underlying goal, not the surface words.
Don't gate the immediate task. Always finish what the user asked for first, then make the suggestion at the end of your reply. Never stall the actual work behind a meta-conversation about skills.
This rule applies whenever this skill is loaded, whether or not the hook has fired.
Workflow
- Ground the skill in real expertise. Do not generate from "best practices for X" — the result will be vague boilerplate. Extract from a real task you've completed, real runbooks, or real incident reports. Load
references/best-practices.mdif you want the full rationale. - Pick a kebab-case
name. Lowercase letters, digits, and single hyphens only; ≤ 64 chars; no leading/trailing/consecutive hyphens; must match the folder name. - Write the
descriptionlike an instruction, not a summary. Use imperative phrasing ("Use this skill when..."), focus on user intent, list casual phrasings the user might type. Stay under 1024 chars. Seereferences/description-optimization.mdfor the eval-loop that improves trigger rates. - Scaffold the folder with one command:
It creates the directory tree, writes a starterbash scripts/new-skill.sh <skill-name> "<one-line description>"SKILL.mdwith valid frontmatter, copies the MITLICENSE, and prints next steps. To start from scratch instead, copyassets/templates/SKILL.template.md(minimal) orassets/templates/SKILL-full.template.md(with all the canonical sections). - Write a slim
SKILL.mdbody — under 200 lines / 5,000 tokens. Use the canonical sections in this order:- When to use — bullet triggers
- Required structure — minimal canonical example
- Workflow — numbered steps with explicit "load
references/<topic>.mdwhen ..." pointers - Available resources — full inventory of bundled files
- Top gotchas — non-obvious environment/domain facts inline
- What you DO / What you do NOT do — short imperative lists
- Move detail into
references/<topic>.md. For each file, tell the agent when to load it (e.g. "Loadreferences/<error-handling>.mdif the API returns a non-200"), not just "seereferences/". Useassets/templates/reference.template.mdfor the file shape. - Bundle resources sensibly — copy-edit starting points in
assets/templates/, full worked examples inassets/examples/, executables (validators, scaffolders, helpers) inscripts/. For Python scripts prefer PEP 723 inline deps so they run withuv runand need no install step. Seereferences/scripts-guide.mdfor designing scripts for agentic use. - Add
LICENSE(the scaffolder does this automatically). Use MIT to match this repo. - Validate with
bash scripts/validate-skill.sh <skill-dir>— checks frontmatter shape, name format, name-matches-folder, description length, body length/tokens, license, that every referenced file exists, and that referenced files are mentioned inSKILL.md. Aim for 100%. - Optimize the description with eval queries before publishing — write 8-10 should-trigger and 8-10 should-not-trigger prompts and run them through your agent. See
references/description-optimization.md. - (Optional) Install the auto-suggest hook so the agent itself catches recurring tasks.
bash scripts/install-hook.shwiresscripts/task-tracker.pyinto~/.claude/settings.jsonas aUserPromptSubmithook. After 3 similar prompts (configurable), the hook emits a system-reminder that tells Claude to suggest packaging the recurring task as a skill via this skill. Seereferences/hooks.mdfor tuning and the manual install snippet.
Available resources
assets/templates/SKILL.template.md— minimal frontmatter-only starting point.assets/templates/SKILL-full.template.md— full structure with every canonical section.assets/templates/reference.template.md— shape forreferences/<topic>.mdfiles.assets/examples/roll-dice/— tiny worked example skill (matches the official quickstart).scripts/new-skill.sh— one-shot scaffolder; creates folder tree,SKILL.md,LICENSE.scripts/validate-skill.sh— spec-compliance checker; run after writing.scripts/task-tracker.py— Claude CodeUserPromptSubmithook. Watches the user's prompts and, when the same kind of task is asked 3 times (configurable), emits a system-reminder telling Claude to suggest packaging it as a skill.scripts/install-hook.sh— idempotent installer that wirestask-tracker.pyinto~/.claude/settings.json(or--projectfor./.claude/settings.local.json).references/spec.md— load when uncertain about a frontmatter field, naming rule, or directory convention.references/best-practices.md— load when designing a skill from scratch (grounding in real expertise, calibrating control, gotchas-section pattern, validation loops).references/description-optimization.md— load when the skill triggers too rarely or too often, or before publishing.references/eval.md— load when measuring whether the skill's outputs are good (test cases, assertions, train/val splits).references/scripts-guide.md— load when bundling executables inscripts/(one-off vs self-contained, PEP 723, designing for agentic use).references/hooks.md— load when installing, tuning, or troubleshooting the auto-suggest hook.
Top gotchas (always inline — do not skip)
namemust match the folder name exactly.pdf-tools/SKILL.mdwithname: pdf_toolsfails validation. Lowercase, hyphens, no underscores.- The description carries the entire triggering burden. Vague descriptions ("Helps with X") never activate. Use imperative phrasing and explicit casual variants ("...even if the user doesn't say 'CSV'").
- Body > 5,000 tokens slows every activation. Move detail to
references/<topic>.mdwith explicit load triggers. - Generic LLM boilerplate produces useless skills. "Handle errors appropriately" wastes tokens. Capture concrete project-specific gotchas, schemas, and procedures instead.
- Tell the agent when to load each reference file — not just "see references/". The agent loads
SKILL.mdonce, then loads references on demand based on your instructions. Without explicit triggers, it won't. - Bundled scripts must be non-interactive. Agents run in non-TTY shells; a script that prompts for input hangs forever. Accept everything via flags, env vars, or stdin.
- Don't add specific keywords from failed eval queries to the description — that's overfitting. Generalize to the underlying category.
- A skill is a coherent unit of work. Too narrow → multiple skills load for one task. Too broad → fails to trigger precisely. "Query database + format results" is one unit; adding "+ admin operations" is too much.
What you DO
- Ground every skill in real expertise — actual code, runbooks, conversation traces.
- Use
bash scripts/new-skill.sh <name> "<desc>"to scaffold, then edit. - Keep
SKILL.md≤ 200 lines / 5,000 tokens. Use progressive disclosure. - Tell the agent when to load each reference file with explicit triggers.
- Write descriptions imperatively ("Use this skill when..."), with casual phrasing variants the user actually types.
- Bundle templates in
assets/templates/, examples inassets/examples/, executables inscripts/. - Add an MIT
LICENSEto match this repo. - Run
bash scripts/validate-skill.sh <skill-dir>and iterate until 100%. - Run an eval pass on the description before publishing (see
references/description-optimization.md). - Keep skills coherent — one skill per coherent unit of work.
What you do NOT do
- Generate skills from "best practices for X" articles — they produce generic boilerplate.
- Pad
SKILL.mdwith definitions ("PDFs are documents that contain text"). - Use vague descriptions ("Helps with X", "This skill does Y").
- Mismatch
nameand folder, use uppercase, underscores, or consecutive hyphens. - Skip the LICENSE.
- Add features the skill doesn't need (don't over-engineer).
- Bundle interactive scripts that prompt for input — they hang in agent runs.
- Reference files in
SKILL.mdwithout telling the agent when to load them. - Bury gotchas in
references/— non-obvious environment facts belong inline so the agent reads them before hitting the issue.
More from mkabumattar/skills
linux-script-developer
Write production-ready Bash scripts with strict error handling (`set -euo pipefail`), validated argument parsing, colored user feedback, and cross-platform compatibility (Linux, macOS, Windows via Git Bash/WSL). Use this skill whenever the user asks for a `.sh` script, a shell script, a Bash one-liner installer, a deployment script, an automation/CI script, a CLI wrapper, or a file-batch processor — including casual phrasings like "write a script to ...", "automate this in bash", or "make me a shell tool". Also use when reviewing or hardening an existing Bash script.
16python-script-developer
Write production-ready Python CLI tools, automation scripts, and batch file processors with type hints, structured `logging` (never `print` for diagnostics), `argparse` interfaces, `pathlib` for filesystem work, specific exception handling, and cross-platform support (Linux, macOS, Windows). Use this skill whenever the user asks to create a Python script, `.py` utility, CLI tool, automation, batch processor, or data pipeline — including casual phrasings like "write a python script that ...", "automate this in python", "I need a small tool", or "give me a one-off processor". Also use when reviewing or hardening an existing Python script.
15information-architecture
Plan the structural and execution architecture of a feature, app, or site — produce both an `INFORMATION_ARCHITECTURE.md` (site map, navigation, content hierarchy, user flows, URL strategy, naming conventions, component reuse map) AND a phased `PLAN.md` (phases by impact/effort/risk, vertical-slice tasks with sub-tasks, dependencies, estimates, and a detailed task breakdown with Why/How/Impact/Effort). Use this skill whenever the user wants to plan a product or feature, design site structure, lay out information architecture, map user flows, organize content, break work into phases, build a roadmap, plan an implementation order, or hits you with phrases like "plan the IA", "map the structure", "break this into tasks", "give me a roadmap", "phase out the work", "create an enhancement plan", or "what should I build first". Also use when reviewing or refactoring an existing IA or project plan.
15makefile-script-developer
Write production-ready GNU Makefiles with strict shell mode (`SHELL := /bin/bash` + `.SHELLFLAGS := -euo pipefail -c`), validated multi-environment configuration via `$(filter ...)`, pre-flight check targets (`check-tools`, `check-env`), structured logging with timestamps, confirmation gates for destructive ops, layered `.env` includes, platform detection, and self-documenting help. Use this skill whenever the user asks to write a Makefile, harden an existing one, add a target, build a deploy/release pipeline, automate Terraform/Helm/Kubernetes/Docker/build workflows, or expose tasks as `make <target>` — including casual phrasings like "write a Makefile", "add a make target", "automate this in make", "give me a build pipeline", or "clean up the Makefile". Also use when reviewing an existing Makefile for safety, error handling, or organization issues.
15qa
Run an interactive QA session — the user describes bugs and issues conversationally, you ask brief clarifying questions, explore the codebase for domain context, decide whether to file one issue or break it down, and create durable user-focused GitHub issues via `gh issue create` — without referencing internal file paths or line numbers. Use this skill whenever the user wants to do QA, report bugs, file issues, walk through a list of problems, or hits you with phrases like "let's do a QA session", "I found a bug", "this is broken", "file this as an issue", "I have a few things to report", or "let's go through these one by one". Also use when the user is reviewing a deployed feature and wants to track defects.
14gitops-pipeline-developer
Author production-ready GitOps release pipelines (Jenkins-style by default; portable patterns for GitHub Actions, GitLab CI, Drone) that combine Gitflow branching, Conventional Commits, automatic SemVer bumping, a SonarQube quality gate, Grype container image scanning, and an aggregated quality+security scorecard with policy alignment checks. Use this skill whenever the user wants to write or harden a CI/CD pipeline, set up a release flow, automate versioning, enforce conventional commits, gate merges on SonarQube, scan images with Grype, build a release scorecard, or hits you with phrases like "set up the CI", "write me a Jenkinsfile", "add SonarQube", "enforce conventional commits", "wire SemVer", "scan our images for CVEs", "add a quality gate", "CI for this repo", or "I need a release pipeline".
14