@erclx/aitk 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/claude/.claude-plugin/plugin.json +1 -1
  2. package/claude/skills/claude-address-review/SKILL.md +5 -6
  3. package/claude/skills/claude-autoship/SKILL.md +2 -2
  4. package/claude/skills/claude-design-extract/SKILL.md +3 -5
  5. package/claude/skills/claude-diagram/SKILL.md +2 -2
  6. package/claude/skills/claude-docs/SKILL.md +11 -11
  7. package/claude/skills/claude-feature/SKILL.md +3 -3
  8. package/claude/skills/claude-groundwork/SKILL.md +2 -2
  9. package/claude/skills/claude-intake/SKILL.md +1 -1
  10. package/claude/skills/claude-intake-answer/SKILL.md +1 -1
  11. package/claude/skills/claude-memory-capture/SKILL.md +7 -9
  12. package/claude/skills/claude-memory-review/SKILL.md +6 -8
  13. package/claude/skills/claude-memory-review/references/receipt-format.md +1 -1
  14. package/claude/skills/claude-orchestrate/SKILL.md +3 -3
  15. package/claude/skills/claude-orchestrate/references/orchestrator-handoff.md +1 -1
  16. package/claude/skills/claude-orchestrate/references/orchestrator-resume.md +1 -1
  17. package/claude/skills/claude-pr-review/SKILL.md +2 -2
  18. package/claude/skills/claude-review/SKILL.md +1 -1
  19. package/claude/skills/claude-seed-sync/SKILL.md +1 -1
  20. package/claude/skills/claude-standards-audit/SKILL.md +4 -4
  21. package/claude/skills/claude-tasks/SKILL.md +34 -9
  22. package/claude/skills/claude-teach/SKILL.md +2 -2
  23. package/{standards → claude/skills/claude-teach/references}/glossary.md +1 -0
  24. package/claude/skills/claude-ui-test/SKILL.md +1 -1
  25. package/claude/skills/claude-ux-audit/SKILL.md +2 -4
  26. package/claude/skills/claude-ux-measure/SKILL.md +1 -1
  27. package/claude/skills/claude-worktree/SKILL.md +3 -3
  28. package/claude/skills/create-rule/SKILL.md +2 -2
  29. package/claude/skills/create-skill/SKILL.md +4 -6
  30. package/claude/skills/create-snippet/SKILL.md +1 -3
  31. package/claude/skills/create-standard/SKILL.md +2 -4
  32. package/claude/skills/decision-escalate/SKILL.md +1 -1
  33. package/claude/skills/docs-sync/SKILL.md +3 -5
  34. package/claude/skills/git-commit/SKILL.md +1 -3
  35. package/claude/skills/git-followup/SKILL.md +1 -1
  36. package/claude/skills/git-issue/SKILL.md +2 -4
  37. package/claude/skills/git-pr/SKILL.md +4 -6
  38. package/claude/skills/git-split/SKILL.md +1 -1
  39. package/claude/skills/git-stage/SKILL.md +1 -3
  40. package/claude/skills/migration-claude-md/SKILL.md +2 -2
  41. package/claude/skills/session-resume/SKILL.md +1 -1
  42. package/claude/skills/setup-gov/SKILL.md +1 -1
  43. package/claude/skills/setup-indexes/SKILL.md +1 -1
  44. package/claude/skills/write-human/SKILL.md +2 -2
  45. package/docs/agents/markdown-audit.md +3 -1
  46. package/docs/agents/records.md +1 -1
  47. package/docs/agents/teach.md +1 -1
  48. package/docs/target-projects.md +3 -3
  49. package/governance/rules/claude/501-markdown.md +1 -1
  50. package/governance/rules/claude/510-context.md +1 -1
  51. package/governance/rules/claude/520-wireframes.md +1 -1
  52. package/governance/rules/claude/530-requirements.md +1 -1
  53. package/governance/rules/claude/540-architecture.md +1 -1
  54. package/governance/rules/claude/550-design.md +1 -1
  55. package/governance/rules/claude/555-tasks.md +1 -1
  56. package/governance/rules/claude/556-groundwork.md +1 -1
  57. package/governance/rules/claude/557-intake.md +1 -1
  58. package/governance/rules/claude/558-plan.md +1 -1
  59. package/governance/rules/claude/559-memory.md +1 -1
  60. package/governance/rules/claude/560-diagrams.md +1 -1
  61. package/governance/rules/claude/561-teach.md +3 -2
  62. package/governance/rules/claude/562-session.md +1 -1
  63. package/governance/rules/claude/570-skill.md +1 -1
  64. package/governance/rules/claude/580-readme.md +1 -1
  65. package/governance/rules/claude/590-rule-authoring.md +1 -1
  66. package/governance/rules/claude/591-standard-authoring.md +1 -1
  67. package/package.json +1 -1
  68. package/src/markdown/structure.ts +39 -4
  69. package/standards/bundled/glossary.md +76 -0
  70. package/standards/index.md +0 -1
  71. package/standards/tasks.md +3 -1
  72. package/standards/teach.md +3 -3
@@ -7,7 +7,7 @@ description: Creates a task file in `.claude/tasks/` with the filename, phase la
7
7
 
8
8
  Owns the two operations that bring a task file into existence and take it out of the folder. `claude-docs` edits the contents of a task that already exists, marking outcomes `[x]` and sweeping the plans those tasks cite. Do not mark outcomes here and do not archive a plan on its own.
9
9
 
10
- Read `.claude/standards/tasks.md` from the project root before writing any file, or `${CLAUDE_SKILL_DIR}/../../standards/tasks.md` when the project does not have it. It holds the filename convention, the frontmatter contract, and the file format. Do not work them from memory.
10
+ Read `${CLAUDE_SKILL_DIR}/../../standards/tasks.md` before writing any file. It holds the filename convention, the frontmatter contract, and the file format. Do not work them from memory.
11
11
 
12
12
  ## Guards
13
13
 
@@ -21,7 +21,7 @@ Read `.claude/standards/tasks.md` from the project root before writing any file,
21
21
 
22
22
  ### Step 1: require an origin
23
23
 
24
- Every task traces to a plan, a groundwork folder, or a GitHub issue. Ask for it when the request does not carry one, and stop rather than guessing: `❌ No origin. Name the plan, groundwork folder, or issue this task comes from.`
24
+ Every task traces to a plan, a groundwork folder, an intake folder, or a GitHub issue. Ask for it when the request does not carry one, and stop rather than guessing: `❌ No origin. Name the plan, groundwork folder, intake folder, or issue this task comes from.`
25
25
 
26
26
  A task with no origin is either lost context or work nobody decided to do. This is the only moment the invariant is enforceable, because it is the only moment a task file comes into existence.
27
27
 
@@ -31,11 +31,11 @@ Accept work whose origin is the conversation itself only when the user says so e
31
31
 
32
32
  List the existing filenames in `.claude/tasks/` and read `index.md` for what each holds. Propose the next label from what is already on the board, and say which neighbors it sits between.
33
33
 
34
- Do not derive the label from a version file. `.claude/standards/versioning.md` permits free renumbering, so the board is the only surface that knows what a label currently means. Pad the phase to two digits in the filename, since index entries sort by filename alone and a bare `v9.0` sorts after `v15.0`.
34
+ Do not derive the label from a version file. `${CLAUDE_SKILL_DIR}/../../standards/versioning.md` permits free renumbering, so the board is the only surface that knows what a label currently means. Pad the phase to two digits in the filename, since index entries sort by filename alone and a bare `v9.0` sorts after `v15.0`.
35
35
 
36
36
  ### Step 3: write the file
37
37
 
38
- Write `.claude/tasks/vXX.Y-<slug>.md` following the format in `.claude/standards/tasks.md`. Include a link line only when the file or folder it names exists. A link to a plan nobody has written yet is the broken pointer the archive rules exist to prevent.
38
+ Write `.claude/tasks/vXX.Y-<slug>.md` following the format in `${CLAUDE_SKILL_DIR}/../../standards/tasks.md`. Include a link line only when the file or folder it names exists. A link to a plan nobody has written yet is the broken pointer the archive rules exist to prevent.
39
39
 
40
40
  Write `Plan:`, `Groundwork:`, and `Intake:` as markdown links relative to `.claude/tasks/`, as in `Plan: [feature-<slug>](../plans/feature-<slug>.md)`. Leave `Issue:` a bare `#NNN`. A task written in the older bare-path form still parses, so it costs the board a clickable line rather than an archive, but it leaves the board in two shapes for every reader after.
41
41
 
@@ -47,15 +47,34 @@ Write it immediately. Claude Code's tool permission dialog is the confirmation g
47
47
 
48
48
  A task file with no row is a dropped task, so name the surface it lands on in the same pass that creates it. A task that would plausibly be planned within the next few waves takes a row under `## Needs a plan` in `.claude/tasks/priority.md`, positioned by where it sits against the rows already there, with the reason for that position in its `Waiting on` cell. Anything else takes a line in `.claude/tasks/backlog.md`, which is unordered and where in the file it goes means nothing.
49
49
 
50
- The test and both file shapes are in `.claude/standards/tasks.md`. From a linked worktree the file-editing tools refuse the main root, so a row lands through the same `Bash` route the file itself took.
50
+ The test and both file shapes are in `${CLAUDE_SKILL_DIR}/../../standards/tasks.md`. From a linked worktree the file-editing tools refuse the main root, so a row lands through the same `Bash` route the file itself took.
51
51
 
52
52
  Say which surface it went to and why in the report. The call is a judgment restated on every sweep rather than a property of the task, and a placement with no stated reason is one the next sweep re-derives from nothing.
53
53
 
54
54
  ### Step 5: report unlinked origins
55
55
 
56
- Scan for work that has been decided and would otherwise be forgotten. List `.claude/groundwork/` and run `gh issue list --state open` when a remote is configured, then grep the board for each track name and issue number. Report any with no task, one line each.
56
+ Scan for work that has been decided and would otherwise be forgotten. Three origins carry it, and every run reads all three.
57
57
 
58
- Report rather than prompt. A track can be opened long after its task would have been written, so an offer to create one for each is noise on most runs.
58
+ List `.claude/groundwork/` and run `gh issue list --state open` when a remote is configured, then grep the board for each track name and issue number. Report any with no task, one line each.
59
+
60
+ Read the dumps through `aitk intake list --json`, which reports items, open, unread, and malformed per folder and owns the parse of the answer contract `${CLAUDE_SKILL_DIR}/../../standards/intake.md` fixes. Then grep both `.claude/tasks/` and `.claude/task-archive/` for each folder slug. A dump with no live task is the ordinary shape of one already promoted and shipped, so a check reading the board by itself reports every finished folder as abandoned.
61
+
62
+ A dump is the stronger case for this scan rather than the weaker one. A track holds one question and stays visible, while a dump holds dozens of items whose verdicts were reached and then left with nothing carrying them forward.
63
+
64
+ Those two reads give four states, and the first three earn a line each:
65
+
66
+ - Every item answered, `malformed` at zero, and neither the board nor the archive cites the folder. Decided work nobody promoted, which is what this step exists to find.
67
+ - Unread items. The folder is waiting on the operator rather than forgotten, so it takes its own wording and never lands in the block above.
68
+ - `malformed` above zero. An item carrying no answer slot can be reached by no verb, so name the folder as a file to repair rather than as work in either state above.
69
+ - The archive cites it. Promoted and shipped, so say nothing.
70
+
71
+ `malformed` is why the first state tests two counts rather than one. A malformed item is neither unread nor answered, so reading `unread` alone folds it onto the answered side and reports a broken file as decided work nobody promoted.
72
+
73
+ Say which read fired. "No task points at this" is true of every reported state and useful about none of them.
74
+
75
+ Report rather than prompt. A track can be opened long after its task would have been written, so an offer to create one for each is noise on most runs, and that reasoning covers a dump unchanged.
76
+
77
+ Say the origins were read even when nothing comes back, which is the ordinary result. A step going silent on a clean pass is indistinguishable from one that never ran.
59
78
 
60
79
  ## Archive
61
80
 
@@ -93,7 +112,7 @@ Each reason has one resolution and none of them is to archive around it:
93
112
 
94
113
  - `open-outcomes`: the named outcomes are unmarked or genuinely open. Run `claude-docs` when the work shipped and nothing marked it. Leave the task on the board when the outcome is real. Cut the outcomes first when the work is being abandoned, so the board records what was dropped.
95
114
  - `plan-unswept`: stop and route to `claude-docs`, which owns the plans sweep and the last-live-citation rule. `❌ Plan not yet swept. Run /claude-docs first, then archive.`
96
- - `ambiguous`: two tasks name one pull request, which is the misfile `.claude/standards/tasks.md` rules out. Resolve the citation by hand, since no sweep repairs it.
115
+ - `ambiguous`: two tasks name one pull request, which is the misfile `${CLAUDE_SKILL_DIR}/../../standards/tasks.md` rules out. Resolve the citation by hand, since no sweep repairs it.
97
116
  - `no-match`: the stem or number names nothing on the board. Check the name against the listed stems.
98
117
  - `bad-input`: the command line was wrong rather than the board. Read the message, fix the arguments, and run it again. Nothing on the board needs repair, which is what separates this from the two above.
99
118
 
@@ -120,10 +139,16 @@ Create:
120
139
  **Origin with no task:**
121
140
 
122
141
  - `.claude/groundwork/<slug>/`: open, touched <date>
142
+ - `.claude/intake/<slug>/`: every item answered, nothing promoted
123
143
  - #NNN: <issue title>
144
+
145
+ **Waiting on you:**
146
+
147
+ - `.claude/intake/<slug>/`: <n> of <n> items unread
148
+ - `.claude/intake/<slug>/`: <n> items carry no answer slot, so no verb reaches them
124
149
  ```
125
150
 
126
- Omit the origin block when everything is linked.
151
+ Drop either block when it carries no rows. When both are empty, which is the ordinary result, replace them with one line naming what was read: `Read <n> tracks, <n> dumps, and <n> open issues. Nothing unlinked.`
127
152
 
128
153
  Archive, reporting the paths the command returned:
129
154
 
@@ -9,7 +9,7 @@ argument-hint: <subject to learn, or the topic of a workspace to resume or promo
9
9
 
10
10
  Run a learning workspace on one subject across sessions. The workspace holds what the learner has been through, so a session weeks later resumes from the folder rather than from the conversation.
11
11
 
12
- The shape of the workspace is fixed by `.claude/standards/teach.md`, or `${CLAUDE_SKILL_DIR}/../../standards/teach.md` when the project does not have that file. Read it before writing anything into the folder. The glossary answers to `.claude/standards/glossary.md`, or `${CLAUDE_SKILL_DIR}/../../standards/glossary.md` when the project does not have it. The pedagogy sits in `${CLAUDE_SKILL_DIR}/references/pedagogy.md`, the lesson craft in `${CLAUDE_SKILL_DIR}/references/lesson-craft.md`, and the promotion routing in `${CLAUDE_SKILL_DIR}/references/promotion.md`.
12
+ The shape of the workspace is fixed by `${CLAUDE_SKILL_DIR}/../../standards/teach.md`. Read it before writing anything into the folder. The glossary answers to `${CLAUDE_SKILL_DIR}/references/glossary.md`, which travels with this skill rather than installing, because a promoted glossary keeps its shape at whatever path it lands on and no project folder covers all of them. The pedagogy sits in `${CLAUDE_SKILL_DIR}/references/pedagogy.md`, the lesson craft in `${CLAUDE_SKILL_DIR}/references/lesson-craft.md`, and the promotion routing in `${CLAUDE_SKILL_DIR}/references/promotion.md`.
13
13
 
14
14
  ## Guards
15
15
 
@@ -151,7 +151,7 @@ Source: .claude/teach/<nn>-<topic>/reference/<slug>.md
151
151
 
152
152
  The body is fenced rather than written bare because a reference page carries headings of its own, and the reader splits this file on its H2 lines. An unfenced body turns every section heading in the page into a destination naming no path. Open the body fence with four backticks so a page carrying a fenced code block of its own still closes where it should, and widen both fences together if it carries a four-backtick fence.
153
153
 
154
- Derive `<slug>` per `.claude/standards/slug.md`, or `${CLAUDE_SKILL_DIR}/../../standards/slug.md` when the project does not have it. Fall back to `latest` on an empty result.
154
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
155
155
 
156
156
  The handoff is its own file rather than a shared one. The routed-facts file another skill writes is deleted by whichever pass folds it, so a second producer's unread work goes with it, and a sibling path costs the folding skill one more read and removes the interaction.
157
157
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Glossary reference
3
3
  description: Frontmatter, entry shape, ordering, and the rules deciding which terms a glossary carries
4
+ consumers: claude-teach
4
5
  ---
5
6
 
6
7
  # Glossary reference
@@ -57,7 +57,7 @@ If all changes are automatable, skip the manual checklist:
57
57
 
58
58
  ### Persist the checklist
59
59
 
60
- Derive `<slug>` per `.claude/standards/slug.md`, or `${CLAUDE_SKILL_DIR}/../../standards/slug.md` when the project does not have it. Fall back to `latest` on an empty result.
60
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
61
61
 
62
62
  When a manual checklist is produced, write it directly to `.claude/review/ui-checklist-<slug>.md` at the main worktree root, not the current worktree. See Worktrees in `CLAUDE.md`. Create the directory if it does not exist. Always overwrite.
63
63
 
@@ -16,11 +16,9 @@ Read these in parallel from the project root, skipping any that do not exist:
16
16
 
17
17
  - `CLAUDE.md`: project type and conventions
18
18
  - `.claude/DESIGN.md`: visual intent, tokens, typography, spacing rules
19
- - `.claude/wireframes/index.md` + every `.claude/wireframes/<surface>.md`: intended UI layout, UI copy, interaction rules. Surfaces are loaded one file at a time during Step 3. Per `.claude/standards/wireframes.md`, these carry layout and intent, not implementation detail.
19
+ - `.claude/wireframes/index.md` + every `.claude/wireframes/<surface>.md`: intended UI layout, UI copy, interaction rules. Surfaces are loaded one file at a time during Step 3. Per `${CLAUDE_SKILL_DIR}/../../standards/wireframes.md`, these carry layout and intent, not implementation detail.
20
20
  - `.claude/REQUIREMENTS.md`: feature scope and non-goals
21
21
 
22
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
23
-
24
22
  ## Step 2: identify surfaces
25
23
 
26
24
  List the UI surfaces in the project. A surface is a distinct screen, page, panel, or major component (e.g. sidepanel, popup, settings page, empty state). Group files by surface. Do not audit speculative or unfinished code flagged in `.claude/tasks/` as in-progress.
@@ -59,7 +57,7 @@ If nothing is wrong, use: `✅ No observations.`
59
57
 
60
58
  ### Persist
61
59
 
62
- Derive `<slug>` per `.claude/standards/slug.md`, or `${CLAUDE_SKILL_DIR}/../../standards/slug.md` when the project does not have it. Fall back to `latest` on an empty result.
60
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
63
61
 
64
62
  Write the full report directly to `.claude/review/ux-audit-<slug>.md` at the main worktree root, not the current worktree. See Worktrees in `CLAUDE.md`. Create the directory if it does not exist. Always overwrite.
65
63
 
@@ -92,7 +92,7 @@ Report the reading and stop there. A remedy for a poor verdict is a change with
92
92
 
93
93
  ### Persist
94
94
 
95
- Derive `<slug>` per `.claude/standards/slug.md`, or `${CLAUDE_SKILL_DIR}/../../standards/slug.md` when the project does not have it. Fall back to `latest` on an empty result.
95
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
96
96
 
97
97
  Write the full reading directly to `.claude/review/ux-measure-<slug>.md` at the main worktree root, not the current worktree. See Worktrees in `CLAUDE.md`. Create the directory if it does not exist. Always overwrite.
98
98
 
@@ -34,7 +34,7 @@ The directory test separates the defect from a genuinely bare repository, which
34
34
 
35
35
  Try each source in order. Stop at the first match.
36
36
 
37
- 1. **Plan matched to current branch.** Derive `<slug>` per `.claude/standards/slug.md`, or `${CLAUDE_SKILL_DIR}/../../standards/slug.md` when the project does not have it. An empty result falls through to the next source here rather than becoming `latest`, since the slug is one candidate among several. If `<main-root>/.claude/plans/feature-<slug>.md` exists, use `<slug>`.
37
+ 1. **Plan matched to current branch.** Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. An empty result falls through to the next source here rather than becoming `latest`, since the slug is one candidate among several. If `<main-root>/.claude/plans/feature-<slug>.md` exists, use `<slug>`.
38
38
  2. **Single plan file.** List `<main-root>/.claude/plans/feature-*.md`. If exactly one match, derive `<slug>` from the filename.
39
39
  3. **Multiple plan files, no branch match.** Ask the user which plan. Show the candidate slugs as a numbered list. Do not pick.
40
40
  4. **Current branch.** When no plan exists, use the `<slug>` from step 1 if it is not `main` or `master`.
@@ -54,7 +54,7 @@ Then test both names the entry is about to claim. Neither read needs a worktree,
54
54
 
55
55
  Leave both in place. Resolving either automatically risks the wrong one.
56
56
 
57
- The two tests catch different collisions. The branch test misses the one `.claude/standards/slug.md` records, where two branches differing only in type collapse onto one name: `feat/foo` and `fix/foo` are distinct refs and reach one directory. The directory test is the only read that sees it.
57
+ The two tests catch different collisions. The branch test misses the one `${CLAUDE_SKILL_DIR}/../../standards/slug.md` records, where two branches differing only in type collapse onto one name: `feat/foo` and `fix/foo` are distinct refs and reach one directory. The directory test is the only read that sees it.
58
58
 
59
59
  The branch test fires on the tier 1 and tier 4 sources whenever the branch the session started on is already conventional, since a name derived from that branch resolves back onto it. Stopping is the answer there. The concern already has a branch, git refuses a second under the same name, and the bare-name rename this replaces only carried the collision forward to the `git-branch` step.
60
60
 
@@ -82,7 +82,7 @@ Call `EnterWorktree` with `name: "<name>"`. Claude Code's tool permission dialog
82
82
  git branch -m worktree-<name> <type>/<name>
83
83
  ```
84
84
 
85
- The slug transform drops a leading type segment, so `<name>` is what every downstream derivation reads back out of the typed branch. See `.claude/standards/slug.md`, or `${CLAUDE_SKILL_DIR}/../../standards/slug.md` when the project does not have it.
85
+ The slug transform drops a leading type segment, so `<name>` is what every downstream derivation reads back out of the typed branch. See `${CLAUDE_SKILL_DIR}/../../standards/slug.md`.
86
86
 
87
87
  Step 2 already cleared the target name, so the rename runs unguarded here. Do not repeat the test. A ref created between the two points is a second session racing this one, which a re-read narrows rather than closes.
88
88
 
@@ -40,7 +40,7 @@ Pick the lowest unused number in the band that collides with neither the project
40
40
 
41
41
  ## Step 4: write the rule
42
42
 
43
- Read `.claude/standards/rule.md` for frontmatter, body shape, and voice before writing the body, or `${CLAUDE_SKILL_DIR}/../../standards/rule.md` when the project does not have it. Do not work the shape from memory.
43
+ Read `${CLAUDE_SKILL_DIR}/../../standards/rule.md` for frontmatter, body shape, and voice before writing the body. Do not work the shape from memory.
44
44
 
45
45
  Write `.claude/rules/<subdir>/<n>-<slug>.md` where `<slug>` is a 1-to-3-word kebab topic. Preview the resolved path, band, number, and frontmatter, then write immediately. The tool permission dialog is the confirmation gate.
46
46
 
@@ -61,7 +61,7 @@ paths:
61
61
  - <imperative rule>
62
62
  ```
63
63
 
64
- Title casing is sentence case, with proper nouns keeping their own casing (`# TypeScript standards`). `.claude/standards/rule.md` owns the rest of the body shape.
64
+ Title casing is sentence case, with proper nouns keeping their own casing (`# TypeScript standards`). `${CLAUDE_SKILL_DIR}/../../standards/rule.md` owns the rest of the body shape.
65
65
 
66
66
  ## After writing
67
67
 
@@ -6,17 +6,15 @@ disable-model-invocation: true
6
6
 
7
7
  # Create skill
8
8
 
9
- Read these files from the project root in parallel:
9
+ Read these files in parallel:
10
10
 
11
- - `.claude/standards/skill.md`: skill structure, skill types, frontmatter fields, invocation rules
12
- - `.claude/standards/markdown.md`: banned words, punctuation, and formatting for skill body text
11
+ - `${CLAUDE_SKILL_DIR}/../../standards/skill.md`: skill structure, skill types, frontmatter fields, invocation rules
12
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: banned words, punctuation, and formatting for skill body text
13
13
  - The `write-human` skill: voice, rhythm, and sentence construction for skill body text
14
14
 
15
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
16
-
17
15
  ## Guards
18
16
 
19
- - If neither `.claude/standards/skill.md` nor `${CLAUDE_SKILL_DIR}/../../standards/skill.md` is present, stop: `❌ skill.md standard not found. Run aitk standards install first.`
17
+ - If `${CLAUDE_SKILL_DIR}/../../standards/skill.md` is not present, stop: `❌ skill.md standard not found. Reinstall the aitk plugin.`
20
18
 
21
19
  ## Steps
22
20
 
@@ -7,12 +7,10 @@ description: Creates a new snippet file in `snippets/` or `.claude/snippets/`. U
7
7
 
8
8
  Creates one snippet file. Read these files in parallel:
9
9
 
10
- - `.claude/standards/markdown.md` from the project root: banned words, punctuation, and formatting for all generated text
10
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: banned words, punctuation, and formatting for all generated text
11
11
  - The `write-human` skill: voice, rhythm, and sentence construction for all generated text
12
12
  - `${CLAUDE_SKILL_DIR}/references/snippets.md`: authoring conventions, invocation channels, use patterns
13
13
 
14
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
15
-
16
14
  ## Guards
17
15
 
18
16
  - If neither `snippets/` nor `.claude/snippets/` exists, stop: `❌ No snippets/ or .claude/snippets/ directory found.`
@@ -7,11 +7,9 @@ description: Creates a new standard file in `standards/` or `.claude/standards/`
7
7
 
8
8
  Creates one standard file. Read these files in parallel:
9
9
 
10
- - `.claude/standards/markdown.md` from the project root: banned words, punctuation, and formatting for all generated text
10
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: banned words, punctuation, and formatting for all generated text
11
11
  - The `write-human` skill: voice, rhythm, and sentence construction for all generated text
12
- - `.claude/standards/standard.md` from the project root: the meta-standard for shape, frontmatter, and structure
13
-
14
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
12
+ - `${CLAUDE_SKILL_DIR}/../../standards/standard.md`: the meta-standard for shape, frontmatter, and structure
15
13
 
16
14
  ## Guards
17
15
 
@@ -69,7 +69,7 @@ An operator who answers some and not others has answered those. Continue on the
69
69
 
70
70
  Restate each pick in one line, then continue the work.
71
71
 
72
- A pick that changes a written artifact goes into that artifact under the rule its own standard sets. An answer to an open plan question rewrites that question's `- Suggested:` line to the pick and names the operator as its source, leaving the `- Answer:` slot blank, per `.claude/standards/plan.md`, or `${CLAUDE_SKILL_DIR}/../../standards/plan.md` when the project does not have it. The standard bars a session from filling that slot even when the operator supplied the pick, and the blank slot resolves to the rewritten suggestion, so the record carries the operator's decision either way. A pick that settles nothing written stays in the session.
72
+ A pick that changes a written artifact goes into that artifact under the rule its own standard sets. An answer to an open plan question rewrites that question's `- Suggested:` line to the pick and names the operator as its source, leaving the `- Answer:` slot blank, per `${CLAUDE_SKILL_DIR}/../../standards/plan.md`. The standard bars a session from filling that slot even when the operator supplied the pick, and the blank slot resolves to the rewritten suggestion, so the record carries the operator's decision either way. A pick that settles nothing written stays in the session.
73
73
 
74
74
  Output after the answers land:
75
75
 
@@ -5,13 +5,11 @@ description: Rewrites stale `README.md` and `docs/*.md` sections based on change
5
5
 
6
6
  # Docs sync
7
7
 
8
- Read these files from the project root in parallel:
8
+ Read these files in parallel:
9
9
 
10
- - `.claude/standards/markdown.md`: banned words, punctuation, and formatting for all generated text
10
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: banned words, punctuation, and formatting for all generated text
11
11
  - The `write-human` skill: voice, rhythm, and sentence construction for all generated text
12
- - `.claude/standards/readme.md`: README structure, required sections, and content rules
13
-
14
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
12
+ - `${CLAUDE_SKILL_DIR}/../../standards/readme.md`: README structure, required sections, and content rules
15
13
 
16
14
  ## Diff baseline
17
15
 
@@ -8,9 +8,7 @@ description: Generates one conventional commit message from the staged changes a
8
8
  Before generating a commit message, read:
9
9
 
10
10
  - `${CLAUDE_SKILL_DIR}/references/commit.md`: format, types, scopes, and constraints
11
- - `.claude/standards/versioning.md` from the project root: phase label vs semver discipline
12
-
13
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
11
+ - `${CLAUDE_SKILL_DIR}/../../standards/versioning.md`: phase label vs semver discipline
14
12
 
15
13
  Follow them exactly.
16
14
 
@@ -32,7 +32,7 @@ A missing tracking ref is no longer a guard. An open pull request proves the bra
32
32
  5. Check for existing review comments: `gh api 'repos/{owner}/{repo}/pulls/<number>/comments' --jq 'length'`, resolving `<number>` from `gh pr view --json number`.
33
33
  6. Route on the invocation and the comment count.
34
34
  - When invoked with `reply-owned`, skip this step's comment: the caller posts the reply.
35
- - Otherwise, if the count is above zero, the followup addresses review feedback: post a one-line summary of the fix with `gh pr comment --body`, first running the scan in `.claude/standards/publish.md` against it, or `${CLAUDE_SKILL_DIR}/../../standards/publish.md` when the project does not have it, since the hook does not see an inline comment body.
35
+ - Otherwise, if the count is above zero, the followup addresses review feedback: post a one-line summary of the fix with `gh pr comment --body`, first running the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against it, since the hook does not see an inline comment body.
36
36
  - If it is zero, run `gh pr view --json url,title,body` and update the body with `gh pr edit --body` when the new commit changes scope, and the title with `gh pr edit --title` when the scope shifted enough to make it inaccurate.
37
37
 
38
38
  ## After completion
@@ -12,11 +12,9 @@ Format an issue from session context following the issue standard, then file it
12
12
  Read these in parallel:
13
13
 
14
14
  - `${CLAUDE_SKILL_DIR}/references/issue.md`: issue title, labels, body sections, and banned phrases
15
- - `.claude/standards/markdown.md` from the project root: banned words, punctuation, and formatting for all generated text
15
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: banned words, punctuation, and formatting for all generated text
16
16
  - The `write-human` skill: voice, rhythm, and sentence construction for all generated text
17
17
 
18
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
19
-
20
18
  Then gather repo context in parallel:
21
19
 
22
20
  - `git remote get-url origin 2>/dev/null || echo "NO_REMOTE"`
@@ -41,7 +39,7 @@ After outputting the preview, execute the final command immediately. Claude Code
41
39
 
42
40
  ### Pre-publish scan
43
41
 
44
- Before running the final command, run the scan in `.claude/standards/publish.md` against the title and body, or `${CLAUDE_SKILL_DIR}/../../standards/publish.md` when the project does not have it. The title and body go straight to the remote with nothing checking them on the way, so this scan is the only gate. It covers the phase-label check as well as the characters, since both go to a reader who has no task board. It applies on top of the banned phrases in `${CLAUDE_SKILL_DIR}/references/issue.md`.
42
+ Before running the final command, run the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against the title and body. The title and body go straight to the remote with nothing checking them on the way, so this scan is the only gate. It covers the phase-label check as well as the characters, since both go to a reader who has no task board. It applies on top of the banned phrases in `${CLAUDE_SKILL_DIR}/references/issue.md`.
45
43
 
46
44
  ### Final command
47
45
 
@@ -12,11 +12,9 @@ Read these files in parallel:
12
12
  - `${CLAUDE_SKILL_DIR}/references/branch.md`: branch format, valid types, and constraints
13
13
  - `${CLAUDE_SKILL_DIR}/references/pr.md`: structure, rules, and banned phrases
14
14
  - `${CLAUDE_SKILL_DIR}/references/labels.md`: label map format, matching, and the missing-label warning. Skip when the project has no `.claude/pr-labels.toml`.
15
- - `.claude/standards/markdown.md` from the project root: banned words, punctuation, and formatting for all generated text
15
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: banned words, punctuation, and formatting for all generated text
16
16
  - The `write-human` skill: voice, rhythm, and sentence construction for all generated text
17
- - `.claude/standards/versioning.md` from the project root: phase label vs semver discipline
18
-
19
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
17
+ - `${CLAUDE_SKILL_DIR}/../../standards/versioning.md`: phase label vs semver discipline
20
18
 
21
19
  Resolve the base ref first, because the log range and the diff below both consume it:
22
20
 
@@ -72,7 +70,7 @@ Leave a box unchecked only for the human-only cases the reference defines, and n
72
70
 
73
71
  ### Pre-publish scan
74
72
 
75
- Before running the final command, run the scan in `.claude/standards/publish.md` against the PR title and body, or `${CLAUDE_SKILL_DIR}/../../standards/publish.md` when the project does not have it. The title and body go straight to the remote with nothing checking them on the way, so this scan is the only gate. It covers the phase-label check as well as the characters, since both go to a reader who has no task board. It applies on top of the banned phrases in `${CLAUDE_SKILL_DIR}/references/pr.md`.
73
+ Before running the final command, run the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against the PR title and body. The title and body go straight to the remote with nothing checking them on the way, so this scan is the only gate. It covers the phase-label check as well as the characters, since both go to a reader who has no task board. It applies on top of the banned phrases in `${CLAUDE_SKILL_DIR}/references/pr.md`.
76
74
 
77
75
  ### Resolving the pull request
78
76
 
@@ -123,7 +121,7 @@ printf 'number=%s\nurl=%s\n' "$pr_number" "$pr_url"
123
121
 
124
122
  Write the `number` the final command printed onto the task the branch is closing. Do not resolve it again. A head branch that carried an earlier pull request now has two, and a second `gh pr view` would pick between them by a precedence rule nothing here states. Reading what created or edited the pull request needs no such rule.
125
123
 
126
- The task is the one whose `Plan:` line names the plan this branch implemented. Name that plan by its file, which is `.claude/plans/feature-<slug>.md` at the main worktree root with `<slug>` derived per `.claude/standards/slug.md`, or `${CLAUDE_SKILL_DIR}/../../standards/slug.md` when the project does not have it. `claude-feature` writes the plan under the branch slug, so the two correspond on any branch that came through the plan-to-execute path. When the session already knows which plan it implemented, because a caller read it earlier in the chain, use that filename instead of re-deriving.
124
+ The task is the one whose `Plan:` line names the plan this branch implemented. Name that plan by its file, which is `.claude/plans/feature-<slug>.md` at the main worktree root with `<slug>` derived per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. `claude-feature` writes the plan under the branch slug, so the two correspond on any branch that came through the plan-to-execute path. When the session already knows which plan it implemented, because a caller read it earlier in the chain, use that filename instead of re-deriving.
127
125
 
128
126
  ```bash
129
127
  aitk tasks pull-request <number> --plan feature-<slug> --json
@@ -69,7 +69,7 @@ If Mode is Independent, append this line to the preview:
69
69
 
70
70
  After outputting the preview, execute the final commands immediately. Claude Code's tool permission dialog is the confirmation gate. Do not wait for user input.
71
71
 
72
- Before running them, run the scan in `.claude/standards/publish.md` against every title and body, or `${CLAUDE_SKILL_DIR}/../../standards/publish.md` when the project does not have it. Each body stages under `.claude/.tmp/` and leaves through `gh`, so the hook sees neither and this scan is the only gate.
72
+ Before running them, run the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against every title and body. Each body stages under `.claude/.tmp/` and leaves through `gh`, so the hook sees neither and this scan is the only gate.
73
73
 
74
74
  ### Final commands
75
75
 
@@ -8,11 +8,9 @@ description: Groups staged files by concern and generates one conventional commi
8
8
  Read these files in parallel:
9
9
 
10
10
  - `${CLAUDE_SKILL_DIR}/references/commit.md`: format, types, scopes, and constraints
11
- - `.claude/standards/markdown.md` from the project root: banned words, punctuation, and formatting for all generated text
11
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: banned words, punctuation, and formatting for all generated text
12
12
  - The `write-human` skill: voice, rhythm, and sentence construction for all generated text
13
13
 
14
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
15
-
16
14
  ## Context
17
15
 
18
16
  Run these commands in parallel to gather git context:
@@ -66,8 +66,8 @@ Print one grouped proposal block. Omit empty groups.
66
66
 
67
67
  ## Reminder
68
68
 
69
- Scaffold each rule with create-rule and follow .claude/standards/rule.md.
70
- Follow .claude/standards/context.md for each new context entry.
69
+ Scaffold each rule with create-rule, which carries the rule standard.
70
+ Follow the context standard for each new context entry.
71
71
  Run aitk indexes regen after adding context entries.
72
72
  ```
73
73
 
@@ -11,7 +11,7 @@ Resolve `.claude/plans/`, `.claude/memory/`, and `.claude/tasks/` at the main wo
11
11
 
12
12
  Read these in parallel, skipping any that do not exist:
13
13
 
14
- - the newest `.claude/tasks/session-*.md`: the handoff a previous session wrote before a compaction, per `.claude/standards/session.md`, or `${CLAUDE_SKILL_DIR}/../../standards/session.md` when the project does not have it. It leads the report rather than the reads.
14
+ - the newest `.claude/tasks/session-*.md`: the handoff a previous session wrote before a compaction, per `${CLAUDE_SKILL_DIR}/../../standards/session.md`. It leads the report rather than the reads.
15
15
  - `.claude/tasks/index.md`: the folder catalog. Read this before any individual task file, and take the task list from it by dropping the `index`, `priority`, `backlog`, and `session-` rows, which are siblings rather than tasks.
16
16
  - `.claude/plans/*.md`: execution detail for in-progress tasks
17
17
  - `.claude/memory/index.md` and any memory files relevant to the top backlog item
@@ -43,7 +43,7 @@ If a detected technology has no matching rule, stop and surface the gap. Do not
43
43
 
44
44
  Present four options:
45
45
 
46
- 1. Author a new rule in the toolkit at `governance/rules/<domain>/<num>-<name>.md` following `.claude/standards/rule.md`, or `${CLAUDE_SKILL_DIR}/../../standards/rule.md` when the project does not have it, commit, then re-run install. Take this route when the toolkit should ship the rule to every project.
46
+ 1. Author a new rule in the toolkit at `governance/rules/<domain>/<num>-<name>.md` following `${CLAUDE_SKILL_DIR}/../../standards/rule.md`, commit, then re-run install. Take this route when the toolkit should ship the rule to every project.
47
47
  2. Invoke `create-rule`, which scaffolds the file into the target project at a non-colliding number. Take this route when the rule is specific to this project and no sync should ever overwrite it.
48
48
  3. Install the matching non-<tech> rules and skip the tech-specific layer.
49
49
  4. Abort.
@@ -44,7 +44,7 @@ Ask the user which to bootstrap. Accept folder paths, `all`, or `none`. The user
44
44
  For each chosen folder, read every `*.md` sibling and draft frontmatter:
45
45
 
46
46
  - `title`: derived from the first H1. If absent, derive from the filename in sentence case.
47
- - `description`: one line summarizing the file's purpose, drawn from the first paragraph after the H1. Follow `.claude/standards/markdown.md` § Frontmatter descriptions for length and style, or `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` when the project does not have it.
47
+ - `description`: one line summarizing the file's purpose, drawn from the first paragraph after the H1. Follow `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` § Frontmatter descriptions for length and style.
48
48
 
49
49
  Surface every drafted entry to the user grouped by file:
50
50
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: write-human
3
- description: Carries the voice, rhythm, sentence construction, and information density rules a banned-word list cannot express, plus the catalog of machine tells that survive a clean ban scan. Use when writing or revising prose a person will read, when a passage reads flat or uniform, or when asked to "make this read like a person", "fix the cadence", "this reads like AI wrote it", "vary the sentences", or "tighten this without gutting it". Do NOT use for banned words, characters, or spellings, which `.claude/standards/markdown.md` states and `aitk markdown audit` gates, and do NOT use to restate text that already exists in plainer words.
3
+ description: Carries the voice, rhythm, sentence construction, and information density rules a banned-word list cannot express, plus the catalog of machine tells that survive a clean ban scan. Use when writing or revising prose a person will read, when a passage reads flat or uniform, or when asked to "make this read like a person", "fix the cadence", "this reads like AI wrote it", "vary the sentences", or "tighten this without gutting it". Do NOT use for banned words, characters, or spellings, which `markdown.md` states and `aitk markdown audit` gates, and do NOT use to restate text that already exists in plainer words.
4
4
  ---
5
5
 
6
6
  # Write human
@@ -9,7 +9,7 @@ Write prose that reads as though a person wrote it. A ban list subtracts words a
9
9
 
10
10
  Load this before drafting a passage rather than after. A revision pass recovers the words and never recovers the structure the draft already settled.
11
11
 
12
- The banned words, characters, and spellings sit in `.claude/standards/markdown.md`, or `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` when the project does not have that file. They stay in force here. This skill adds to them and never restates them, since `aitk markdown audit` reads them from the package and a second copy would drift.
12
+ The banned words, characters, and spellings sit in `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`. They stay in force here. This skill adds to them and never restates them, since `aitk markdown audit` reads them from the package and a second copy would drift.
13
13
 
14
14
  ## What yields and what does not
15
15
 
@@ -118,7 +118,9 @@ Measured at `6c273324` across the corpus, 2119 paragraphs reached the floor, 165
118
118
 
119
119
  That reading travels with the command rather than staying here. `BASELINE` in `src/markdown/structure.ts` carries the overall share, the per-file range, and the ten-paragraph floor beneath which a file's own rate says nothing, and the run prints all four in the legend beside the rate it measured. A count with no range beside it reads as a finding, and naming that a healthy range differs by surface states that a range exists rather than what it looks like. This page is toolkit-internal, so a reader running the command in a project that installed no standards would otherwise have two counts and nothing to place them against.
120
120
 
121
- Two of the rules `write-human` states are deliberately not implemented. A sentence's grammatical shape and whether it carries a finite verb each need a parse rather than a match, and an imperative or a heading fragment would read as a defect under a pattern that approximated either. The verbless share is the measure closest to the reported symptom, which is exactly why shipping it wrong would discredit the two that hold. It ships when something can identify a finite verb rather than guess at one.
121
+ Two of the rules `write-human` states are deliberately not implemented. A sentence's grammatical shape and whether it carries a finite verb each need a parse rather than a match, and an imperative would read as a defect under a pattern that approximated either. The verbless share is the measure closest to the reported symptom, which is exactly why shipping it wrong would discredit the two that hold.
122
+
123
+ The condition on that was something identifying a finite verb rather than guessing at one, and two parsers have now been run against it over 11,389 paragraph sentences. They disagree by a factor of four. `compromise` reports 2 percent and reads a fronted past participle as a finite verb, so `Measured at <sha> on <date>.` counts as carrying one. `wink-pos-tagger` reports 9 percent, fixes that class, and is still wrong on roughly three in four, because an imperative's verb tags as a proper noun and a noun-ambiguous predicate tags as a noun, which makes `Each maps to a skill.` read verbless. Separating those needs to know which token is the predicate, and that is syntax rather than a tag. The measure stays unimplemented, now against a mechanism rather than against the idea of one.
122
124
 
123
125
  ## Exit codes
124
126
 
@@ -23,7 +23,7 @@ aitk records validate intake --json
23
23
 
24
24
  It reads and never writes, and the reason splits by kind. A session record is per-machine scratch with no history behind it, so a repair that guessed wrong could not be undone. A standard installs into every target and is cited by bare filename, so a rename the verb performed would reach further than the file it moved, which is why a finding naming one says so.
25
25
 
26
- `standards` reads the authoring root at `standards/` where it exists and the installed copy at `.claude/standards/` otherwise. The authoring root wins because the installed tree is generated from it in the toolkit, where a fix written to the copy is discarded by the next regen. A project that consumed the corpus holds only the second, so one precedence serves both. The walk stays flat, matching install and the catalog, so `standards/bundled/` is out of range: its members are named for the skill that reads them rather than for a path they govern.
26
+ `standards` reads the authoring root at `standards/` where it exists and the installed copy at `.claude/standards/` otherwise. The authoring root wins because the installed tree is generated from it in the toolkit, where a fix written to the copy is discarded by the next regen. A project that consumed the corpus holds only the second, so one precedence serves both. The walk stays flat, matching install and the catalog, so `standards/bundled/` is out of range. Location decides that rather than subject, since a member there reaches its readers as a copy in each consuming skill and never as an installed file, which is the same reason install and sync skip the folder. What it costs is that a standard moved into the fan-out leaves the validator with nothing reporting the move.
27
27
 
28
28
  Nothing fires it automatically. The five record folders are gitignored, so the standards-audit hook exits early on them and any check reading changed files from git never lists one. The corpus is tracked and still unreached, since the markdown audit reads content across the files git lists and rules on no filename. The verb runs at the moment a session claims the record is finished, which is the same placement `aitk tasks validate` takes over the board.
29
29
 
@@ -5,7 +5,7 @@ description: Listing learning workspaces and the ordinal a new one takes, openin
5
5
 
6
6
  # Teach
7
7
 
8
- Learning workspaces sit under `.claude/teach/<nn>-<topic>/`, and `standards/teach.md` fixes their layout, naming, and file formats, apart from the glossary, whose shape `standards/glossary.md` fixes so it travels with the file wherever a promotion lands it. Every verb here resolves that folder against the main worktree root rather than against the working directory, so a session standing in a linked worktree reaches the one workspace the learner has rather than opening a second.
8
+ Learning workspaces sit under `.claude/teach/<nn>-<topic>/`, and `standards/teach.md` fixes their layout, naming, and file formats, apart from the glossary, whose shape `standards/bundled/glossary.md` fixes and fans out into the `claude-teach` skill, so it travels with the file wherever a promotion lands it. Every verb here resolves that folder against the main worktree root rather than against the working directory, so a session standing in a linked worktree reaches the one workspace the learner has rather than opening a second.
9
9
 
10
10
  That root resolution is also why the writing verbs exist at all. The file-editing tools refuse a main-root path from a linked worktree and offer a worktree copy instead, and a caller naming only the destination reports a success that did not happen. A whole-file create still goes out as a shell heredoc. Changing a line inside a file that already exists has no shell route, because the stream editors are banned, so `resource` and `glossary` are the route for the two files a running workspace edits.
11
11
 
@@ -88,11 +88,11 @@ Run `aitk tooling list --json` and `aitk gov list --json` to see the current cat
88
88
 
89
89
  `governance`, `standards`, and `wiki` are skippable:
90
90
 
91
- - `--skip governance`: leave `.claude/rules/` empty. Standards still install, so `.claude/standards/markdown.md` lands with nothing pointing at it and no coding standard loads on a file match. The preview names any `--add` rules the skip drops, and the run prints the `aitk gov install <stack> <path>` command to add rules afterward, carrying those extras so one paste restores what the skip declined.
92
- - `--skip standards`: leave standards out. The governance rules still reference `.claude/standards/`, so their authority lines resolve to nothing for a reader following the path. Toolkit skills are unaffected, since each falls back to the copy in its own plugin root. `aitk standards <name>` searches the corpus inside the CLI's own package behind both project roots, so it prints a standard in a project that skipped the install, and `aitk markdown audit` needs no standard at all, its ban sets and checkpoints shipping with the package as data. What the skip costs is the editable copy rather than the enforcement.
91
+ - `--skip governance`: leave `.claude/rules/` empty, so no coding standard loads on a file match. Standards still install, and the installed copy is the first root `aitk standards <name>` resolves, so it stays the editable seed a project owns. The preview names any `--add` rules the skip drops, and the run prints the `aitk gov install <stack> <path>` command to add rules afterward, carrying those extras so one paste restores what the skip declined.
92
+ - `--skip standards`: leave standards out. The governance rules are unaffected, since each authority line names `aitk standards <name>` and that command answers from the corpus inside the CLI's own package. Toolkit skills are unaffected too, each naming the copy in its own plugin root. `aitk standards <name>` searches the corpus inside the CLI's own package behind both project roots, so it prints a standard in a project that skipped the install, and `aitk markdown audit` needs no standard at all, its ban sets and checkpoints shipping with the package as data. What the skip costs is the editable copy rather than the enforcement.
93
93
  - `--skip wiki`: skip the `.claude/wiki/` scaffold. A target that already carries a root `wiki/` keeps it, since the verb reports that folder rather than migrating it.
94
94
 
95
- That standards fallback carries runtime behavior rather than reference prose alone, because the pre-publish scan and the branch-slug transform each have a standard of their own, `publish.md` and `slug.md`, cited by the skills that run them.
95
+ The plugin corpus carries runtime behavior rather than reference prose alone, because the pre-publish scan and the branch-slug transform each have a standard of their own, `publish.md` and `slug.md`, cited by the skills that run them.
96
96
 
97
97
  ## Add a domain later
98
98
 
@@ -8,7 +8,7 @@ paths:
8
8
 
9
9
  ## Authority
10
10
 
11
- - Follow `.claude/standards/markdown.md` for headings, paragraph and list structure, code spans, punctuation, emphasis, file references, the banned words and spellings, and the wording of a `title` or `description`. It is the single source.
11
+ - Follow the markdown standard for headings, paragraph and list structure, code spans, punctuation, emphasis, file references, the banned words and spellings, and the wording of a `title` or `description`. It is the single source. Read it with `aitk standards markdown`.
12
12
  - Read it before a substantial markdown edit. Do not work the banned words or characters from memory.
13
13
  - Run `aitk markdown audit <path>` after the edit, and rewrite the sentence carrying a hit rather than swapping the token for a near-synonym.
14
14
  - Voice, rhythm, and sentence construction are a separate topic. `500-prose` routes them.
@@ -26,4 +26,4 @@ Do not put a sibling bullet's design in the past with one of these.
26
26
 
27
27
  ## Authority
28
28
 
29
- - Follow `.claude/standards/context.md` for entry shape: frontmatter, sections, length, and what goes in. It is the single source.
29
+ - Follow the context standard for entry shape: frontmatter, sections, length, and what goes in. It is the single source. Read it with `aitk standards context`.
@@ -16,5 +16,5 @@ paths:
16
16
 
17
17
  ## Authority
18
18
 
19
- - Follow `.claude/standards/wireframes.md` for layout and interaction intent: ASCII layout, region labels, variants, copy, and what moves to `.claude/context/`. It is the single source.
19
+ - Follow the wireframes standard for layout and interaction intent: ASCII layout, region labels, variants, copy, and what moves to `.claude/context/`. It is the single source. Read it with `aitk standards wireframes`.
20
20
  - Read it before adding or revising a surface.
@@ -16,4 +16,4 @@ paths:
16
16
 
17
17
  ## Authority
18
18
 
19
- - Follow `.claude/standards/requirements.md` for what belongs in the problem, goals, non-goals, MVP features, tech stack, and constraints. It is the single source.
19
+ - Follow the requirements standard for what belongs in the problem, goals, non-goals, MVP features, tech stack, and constraints. It is the single source. Read it with `aitk standards requirements`.
@@ -18,4 +18,4 @@ paths:
18
18
 
19
19
  ## Authority
20
20
 
21
- - Follow `.claude/standards/architecture.md` for the overview, named decision entries, and risks. It is the single source.
21
+ - Follow the architecture standard for the overview, named decision entries, and risks. It is the single source. Read it with `aitk standards architecture`.
@@ -16,4 +16,4 @@ paths:
16
16
 
17
17
  ## Authority
18
18
 
19
- - Follow `.claude/standards/design.md` for visual intent, the token tables, and the render contract. It is the single source.
19
+ - Follow the design standard for visual intent, the token tables, and the render contract. It is the single source. Read it with `aitk standards design`.