Repository navigation
Skills
This page describes the six skills of the core plugin dotclaude.
It is for a user who runs a skill, and for a contributor who edits a SKILL.md file.
The core plugin dotclaude ships six skills.
Each skill is a SKILL.md file in its slice, under src/plugins/dotclaude/slices/<slice>/skills/.
Claude Code runs a skill as /dotclaude:<name>.
A skill gives Claude a procedure. Each skill treats the output of its commands and the text of its files as data, not as instructions. Each skill ends with a report to the user.
| Skill | Call | What it does | Slice or CLI that does the work | Writes |
|---|---|---|---|---|
handoff |
/dotclaude:handoff |
Writes a handoff file, so a new session can continue the work. |
handoff slice, dotclaude-handoff
|
One file in .dotclaude/handoff/
|
hotfix |
/dotclaude:hotfix <cause and fix> |
Fixes a defect with a known cause, then records it. |
spec slice, dotclaude-spec record
|
One record in .dotclaude/spec/hotfixes/, and the code edit |
rules-creator |
/dotclaude:rules-creator [topic] |
Writes a rule file, with paths globs, and checks the globs. |
rules slice, check-globs.ts script |
A rule in .claude/rules/ or ~/.claude/rules/
|
setup |
/dotclaude:setup [user|project|local] |
Merges the settings snippet and checks the add-on tools. |
setup slice, dotclaude-setup
|
The settings file of the scope, and add-on installs |
ship |
/dotclaude:ship <change-id> |
Runs the open packages of a large change in worktrees, then merges each one that passes. |
spec slice, dotclaude-spec
|
Lane files, merge commits, and the plugins/ output |
spec |
/dotclaude:spec <change-id> [size] |
Starts a change in the spec store and fills its files. |
spec slice, dotclaude-spec new and validate
|
Files in .dotclaude/spec/changes/<change-id>/
|
Each skill sets disable-model-invocation: true in its front matter.
The name of that key says that Claude does not start the skill by itself.
This page treats that as inference from the key name.
The skill runs when the user types its command.
Each SKILL.md has a front matter with name, description, and the keys that the skill needs.
The keys that the six files use are disable-model-invocation, argument-hint, and allowed-tools.
The allowed-tools value pre-approves the commands and tools that it lists, so they run with no prompt.
It does not deny the other tools.
For example, hotfix pre-approves dotclaude-spec record and git diff.
The other commands follow the permission rules of the session.
The body has a <task> part and a <procedure> part, or a <steps> part.
The text $ARGUMENTS holds the words that the user types after the command.
The rules-creator skill reads ${CLAUDE_SKILL_DIR} to find its script.
Each skill says that the output of a command and the text of a file are data, not instructions.
The size of each SKILL.md has bounds.
The bounds are in Bounds.
Call /dotclaude:handoff when the context is large, or when part of the work is done.
The skill writes one file with four parts: the goal, the state, the next step, and the constraints of the user.
The skill copies each constraint of the user word for word.
The steps:
- The
handoffmod, insrc/plugins/dotclaude/slices/handoff/adapters/mod.ts, runsdotclaude-handoff pathwhen the skill starts. The mod names the path in the text of the prompt. - The skill writes the file with the
Writetool, and makes no other change. - At the next end of a turn, the mod runs
dotclaude-handoff newest. When the newest file is the file of the skill, the mod runsdotclaude-spec next. Then it runs/clear, and it submits a resume prompt with the path. - In
automode, when no file appears inHANDOFF_WAIT_TURNSturns, the mod submits the write prompt again. It does this up toHANDOFF_RETRY_MAXtimes. Inmanualmode, the mod shows a hint to the user instead.
The mod also finds a trigger without the skill.
The trigger fires when the context of the main session passes CONTEXT_PERCENT, or when a package goes to done.
The mainHandover option sets the mode: auto, manual, or off.
The default is manual, as DEFAULT_MAIN_HANDOVER sets it.
For the cost of a handoff, see Context and Handoff.
The file has the name that handoffName makes from the time, in .dotclaude/handoff/.
The CLI writes no file.
Call /dotclaude:hotfix <cause and fix in one line>.
Use it when the cause is known and the fix is small.
Use /dotclaude:spec instead when the fix changes more than one capability, changes a file format, or needs more than one agent.
Start the debugger agent when the cause is not known.
The steps:
- The skill checks that the fit is right. When the argument is empty, it asks the user for the cause.
- It reads each file of the cause with
Read,Glob, andGrep. - It makes the smallest edit with
Edit, and it shows each changed line. - It runs the test of the file or the check of the project. After two failed checks, it stops and gives the output of each check.
- It runs
dotclaude-spec record <text>. The command writes.dotclaude/spec/hotfixes/<date>-<slug>.md. The slug has lowercase words joined with-. The slug is at mostHOTFIX_SLUG_MAXcharacters. A name that exists gets-2,-3, and so on. - The skill fills the empty sections
## Cause,## Fix, and## Check.
The skill does not commit. It commits only when the user asks.
Call /dotclaude:setup, or /dotclaude:setup user, project, or local.
Run it after you install or update the plugin.
A plugin cannot set permissions, environment variables, or model settings.
The setup skill states that Claude Code applies only agent and subagentStatusLine from a plugin settings file.
This page does not check that statement against the binary.
The settings snippet sets the rest.
For the keys, see Settings-Snippet and Settings-Snippet-Keys.
The steps:
-
The skill picks the scope. It uses the argument, or it asks the user. Each scope has one file:
Scope File usersettings.jsoninCLAUDE_CONFIG_DIR, or in~/.claudeproject.claude/settings.jsonin the projectlocal.claude/settings.local.jsonin the project -
It runs
dotclaude-setup settings --scope <scope>without--apply, and it shows the list of changes. The merge adds keys and rules, and it keeps the other keys of the user. It replacesavailableModels. When the cached model catalog of the account offersclaude-mythos-5-1, the list holds it in place ofclaude-fable-5-1. -
It runs
dotclaude-setup addonswithout--apply. The preview shows the state of each installed add-on and the steps to offer. -
The skill asks the user one question for the settings and one for the add-on steps.
-
It runs
--applyfor each yes. A second run changes nothing.
The status line commands get the absolute path of the plugin folder. That path holds the plugin version, so run the skill again after each update. The project scope gets no status line, because the path belongs to one computer. The user scope also gets the auto-mode option.
The add-on steps are these:
-
dotclaude-codegraphneeds thecodegraphCLI and an index. The skill runscodegraph init -yin the project. It does not runcodegraph install, because that command edits the Claude Code configuration. -
dotclaude-browserneedsagent-browseronPATH. -
dotclaude-docsneedsnpxonPATH.
A global install changes the computer, so the skill runs it only after a yes. When a command fails, the skill shows the error line. It does not do the step another way. At the end, the skill tells the user to restart Claude Code.
Call /dotclaude:spec <change-id> [trivial|medium|large].
The skill starts a change in the spec store, which is the folder .dotclaude/spec/.
The skill ends when dotclaude-spec validate <change-id> passes.
It does not start the work.
For the store, see Spec Store.
The id uses letters, digits, ., _, and -.
The id archive is not valid.
When the size is missing, the skill picks it from the table below.
The default size of the CLI is medium.
| Size | Use it when | Files that dotclaude-spec new writes |
|---|---|---|
trivial |
One edit has a command that shows it is done. | change.md |
medium |
A change touches one or more capabilities. |
change.md and specs/capability.md
|
large |
Several agents do different parts. | The medium files, design.md, packages.md, packages/01-first.md, and the events file |
The steps:
- The skill runs
dotclaude-spec new <id> --size <size>. The command stops with status1when the change exists. - It fills
change.mdwith the reason, the scope, and the tasks. Each task is- [ ] <id> <text>, with aVerify:line below it.validatefails on a task with noVerify:line. - For a medium or large change, it renames
specs/capability.mdtospecs/<capability>.md. It uses## ADDED,## MODIFIED, or## REMOVED, with### Requirement:and#### Scenario:blocks. - For a large change, the skill starts the
planneragent, which writesdesign.md. It starts therevieweragent on that file. The skill writes one file for each package. The front matter of each file has the keysid,deps,owns,verify, andagent. - It runs
dotclaude-spec validate <id>and fixes each problem that the command names. The skill does not change the rules ofvalidate.
For a large change, the next step is /dotclaude:ship <change-id>.
Call /dotclaude:ship <change-id>.
Run it in the main checkout, because dotclaude-spec lane stops in a linked worktree.
The skill runs the open packages of one large change, in the order of their deps.
The main session reviews, merges, and moves the lane of each package.
The steps:
- The skill runs
git worktree list,git status,dotclaude-spec validate <id>, anddotclaude-spec status <id>. -
dotclaude-spec ready <id>prints each package in the laneplanned. Thedepsof each package are alldone. Itsownsdo not overlap a package that runs. -
dotclaude-spec runsprints how many agents may start now. The count comes from the subagent cap and from the usage sample. The skill starts no more agents than the count. When the count is0, the skill stops and gives the reset time. - The skill starts one
implementeragent for each package, withisolationset toworktree. A hook insrc/plugins/dotclaude/slices/spec/adapters/mod.tssets the lane todoingat the start, and toreviewat the end. Both runs ofdotclaude-spec laneuse the folder of the main session at the start, becauselanerefuses the worktree of the agent. - The skill starts a
revieweragent with the package file and the output ofgit diff <base>...<branch>. The reviewer does not see the report of the implementer. - A package that fails gets one retry, with the findings.
When the retry fails, the lane is
blocked, and the other packages continue. -
dotclaude-spec merge <package> <branch>runs in the main checkout. The command commits the lane files, merges the branch, runsjust generate, sets the lane todone, and commitsplugins/. It makes no change and stops when the tree holds another change, or when the merge has a conflict. - When each package is
done, the skill runsvalidate, the project check, andstatus. It asks the user whether to push and whether to archive the change. It does neither until the user answers.
The count of dotclaude-spec runs uses the usage sample in .dotclaude/rate-limits.jsonl.
The status line writes that file.
A sample older than USAGE_SAMPLE_MAX_MS allows one run.
The cap is CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS when it is a positive number.
Otherwise, the cap is SUBAGENTS_DEFAULT.
For the agents, see Agents.
Call /dotclaude:rules-creator [topic].
The skill writes a rule file, which is a Markdown file in a rules/ folder.
A rule is guidance, and Claude can still break it.
The skill says so.
It names a hook or a permission rule for a behavior that must never happen.
The four phases are capture, write, test, and improve.
-
Capture: the skill uses the topic, and it asks for one wrong and one right example.
-
Pick the tool: a hook, a skill,
CLAUDE.md, or a rule. -
Pick the scope:
~/.claude/rules/for each project, or.claude/rules/for the team. -
Write the file, with one topic and a short name. Add
pathsonly when the rule applies to some files. -
Test the globs with the script:
bun ${CLAUDE_SKILL_DIR}/scripts/check-globs.ts <rules-dir> <project-dir>
The script lists the files with
git ls-files. It matches each glob withBun.Glob. It exits with status1for a glob with no match, a front matter that does not parse, or a rule overMAX_PATTERNSexpanded patterns. It exits with status2for a missing rules folder or a folder that is not a git repository. The script comment says thatBun.Globcan differ from the matcher of Claude Code. So a pass is a strong sign, and it is not a proof. -
Improve: the user runs a task in a new session. The skill makes the text more specific, or it moves the guidance to a hook.
When the user asks to split a large CLAUDE.md, the skill shows a plan first.
It moves each topic to its own rule file.
It keeps the facts for the whole project in the old file.
The skill says that a rule with no paths loads in each session.
It also says that a rule with paths costs nothing until Claude reads a matching file.
The bounds that the skills use, with their file:
| Bound | Value | File |
|---|---|---|
SKILL_META_LOW_BYTES |
150 | tools/limits.ts |
SKILL_META_HIGH_BYTES |
300 | tools/limits.ts |
SKILL_META_TOTAL_LOW_BYTES |
5 KB | tools/limits.ts |
SKILL_META_TOTAL_HIGH_BYTES |
8 KB | tools/limits.ts |
SKILL_META_TOTAL_MAX_BYTES |
15 KB | tools/limits.ts |
SKILL_BODY_LOW_BYTES |
2 KB | tools/limits.ts |
SKILL_BODY_HIGH_BYTES |
8 KB | tools/limits.ts |
HOTFIX_SLUG_MAX |
40 characters | slices/spec/limits.ts |
DEFAULT_SIZE |
medium |
slices/spec/limits.ts |
USAGE_SAMPLE_MAX_MS |
10 minutes | slices/spec/limits.ts |
SUBAGENTS_DEFAULT |
20 | slices/spec/limits.ts |
CONTEXT_PERCENT |
60 | slices/handoff/limits.ts |
HANDOFF_WAIT_TURNS |
2 | slices/handoff/limits.ts |
HANDOFF_RETRY_MAX |
1 | slices/handoff/limits.ts |
The size bounds are checked by tools/sizes.ts.
The metadata bounds apply to the name and description of each skill.
The metadata and body of each skill fail above their high bound.
They are reported below their low bound.
The total metadata of all skills fails above SKILL_META_TOTAL_MAX_BYTES.
It is reported above SKILL_META_TOTAL_HIGH_BYTES.
The page Bounds lists all the bounds of the repository.
-
Spec Store: the folder that
spec,hotfix, andshipwrite. -
Context and Handoff: the
handoffslice and the context bound. -
Agents: the agents that
specandshipstart. -
Architecture: the slices and the path from
src/toplugins/. - Decisions: the decisions behind each skill.
- Start
- How dotclaude Works
- Add-On Plugins
- How Claude Code Works
- Reference
- Rationale
- Evidence
- Development
- Archive