@erclx/aitk 1.1.0 → 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 (66) 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/claude/skills/claude-ui-test/SKILL.md +1 -1
  24. package/claude/skills/claude-ux-audit/SKILL.md +2 -4
  25. package/claude/skills/claude-ux-measure/SKILL.md +1 -1
  26. package/claude/skills/claude-worktree/SKILL.md +3 -3
  27. package/claude/skills/create-rule/SKILL.md +2 -2
  28. package/claude/skills/create-skill/SKILL.md +4 -6
  29. package/claude/skills/create-snippet/SKILL.md +1 -3
  30. package/claude/skills/create-standard/SKILL.md +2 -4
  31. package/claude/skills/decision-escalate/SKILL.md +1 -1
  32. package/claude/skills/docs-sync/SKILL.md +3 -5
  33. package/claude/skills/git-commit/SKILL.md +1 -3
  34. package/claude/skills/git-followup/SKILL.md +1 -1
  35. package/claude/skills/git-issue/SKILL.md +2 -4
  36. package/claude/skills/git-pr/SKILL.md +4 -6
  37. package/claude/skills/git-split/SKILL.md +1 -1
  38. package/claude/skills/git-stage/SKILL.md +1 -3
  39. package/claude/skills/migration-claude-md/SKILL.md +2 -2
  40. package/claude/skills/session-resume/SKILL.md +1 -1
  41. package/claude/skills/setup-gov/SKILL.md +1 -1
  42. package/claude/skills/setup-indexes/SKILL.md +1 -1
  43. package/claude/skills/write-human/SKILL.md +2 -2
  44. package/docs/agents/markdown-audit.md +3 -1
  45. package/docs/target-projects.md +3 -3
  46. package/governance/rules/claude/501-markdown.md +1 -1
  47. package/governance/rules/claude/510-context.md +1 -1
  48. package/governance/rules/claude/520-wireframes.md +1 -1
  49. package/governance/rules/claude/530-requirements.md +1 -1
  50. package/governance/rules/claude/540-architecture.md +1 -1
  51. package/governance/rules/claude/550-design.md +1 -1
  52. package/governance/rules/claude/555-tasks.md +1 -1
  53. package/governance/rules/claude/556-groundwork.md +1 -1
  54. package/governance/rules/claude/557-intake.md +1 -1
  55. package/governance/rules/claude/558-plan.md +1 -1
  56. package/governance/rules/claude/559-memory.md +1 -1
  57. package/governance/rules/claude/560-diagrams.md +1 -1
  58. package/governance/rules/claude/561-teach.md +1 -1
  59. package/governance/rules/claude/562-session.md +1 -1
  60. package/governance/rules/claude/570-skill.md +1 -1
  61. package/governance/rules/claude/580-readme.md +1 -1
  62. package/governance/rules/claude/590-rule-authoring.md +1 -1
  63. package/governance/rules/claude/591-standard-authoring.md +1 -1
  64. package/package.json +1 -1
  65. package/src/markdown/structure.ts +39 -4
  66. package/standards/tasks.md +3 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aitk",
3
3
  "description": "Automated governance, versioning, and discovery tools for Claude Code.",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "author": {
6
6
  "name": "Eric Le",
7
7
  "url": "https://github.com/erclx"
@@ -104,9 +104,8 @@ the write and the post. Note any `.claude/` docs refreshed as a result of the
104
104
  fixes.
105
105
 
106
106
  The reply is a rendered-for-human GitHub surface, so load the `write-human`
107
- skill for voice, follow `.claude/standards/markdown.md` for the banned words, or
108
- `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` when the project does not have
109
- it, and keep each mapping to a line or two.
107
+ skill for voice, follow `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` for
108
+ the banned words, and keep each mapping to a line or two.
110
109
 
111
110
  Open the body with the `## Review response` heading so it anchors as a section
112
111
  distinct from human threads and stays subordinate to the `## Review` heading the
@@ -145,9 +144,9 @@ the regen rebuilt, and close the same way. The heading stays outside the
145
144
  `## Review` family so the close-out's equality test on the first line never
146
145
  matches it.
147
146
 
148
- Before posting, run the scan in `.claude/standards/publish.md`
149
- against the reply, or `${CLAUDE_SKILL_DIR}/../../standards/publish.md` when
150
- the project does not have it. The hook skips `.claude/.tmp/`, so this scan is the
147
+ Before posting, run the scan in
148
+ `${CLAUDE_SKILL_DIR}/../../standards/publish.md`
149
+ against the reply. The hook skips `.claude/.tmp/`, so this scan is the
151
150
  only gate on the published reply. Post it to the PR:
152
151
 
153
152
  ```bash
@@ -11,7 +11,7 @@ Chain the post-plan pipeline in a single run. Every step has a stop condition. S
11
11
  ## Guards
12
12
 
13
13
  - All `.claude/plans/` and `.claude/review/` reads resolve at the main worktree root, not the current worktree. See Worktrees in `CLAUDE.md`.
14
- - Derive `<slug>` per `.claude/standards/slug.md`, or `${CLAUDE_SKILL_DIR}/../../standards/slug.md` when the project does not have it. This skill takes the stop rather than the `latest` fallback, since it commits and opens a pull request. If empty, stop: `❌ Detached HEAD. Checkout the feature branch first.`
14
+ - Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. This skill takes the stop rather than the `latest` fallback, since it commits and opens a pull request. If empty, stop: `❌ Detached HEAD. Checkout the feature branch first.`
15
15
  - If `.claude/plans/feature-<slug>.md` does not exist at the main worktree root, stop: `❌ No approved plan at .claude/plans/feature-<slug>.md. Run /claude-feature first.`
16
16
  - If the working tree has uncommitted changes unrelated to the plan, stop: `❌ Uncommitted changes outside the plan. Commit or stash before autoshipping.`
17
17
 
@@ -41,7 +41,7 @@ If the two commands differ, the session is already in a linked worktree. Continu
41
41
 
42
42
  Read `.claude/plans/feature-<slug>.md` at the main worktree root. This file is the scope for this run.
43
43
 
44
- Its sections and its answer contract are fixed by `.claude/standards/plan.md`, or `${CLAUDE_SKILL_DIR}/../../standards/plan.md` when the project does not have it. A blank `- Answer:` accepts the `- Suggested:` line above it, so an unanswered question is a decision this run executes rather than a reason to stop.
44
+ Its sections and its answer contract are fixed by `${CLAUDE_SKILL_DIR}/../../standards/plan.md`. A blank `- Answer:` accepts the `- Suggested:` line above it, so an unanswered question is a decision this run executes rather than a reason to stop.
45
45
 
46
46
  ## Step 2: implement
47
47
 
@@ -28,15 +28,13 @@ The greenfield path needs a personality paragraph to propose against, and stops
28
28
 
29
29
  ## Step 2: read source signals in parallel
30
30
 
31
- Read these from the project root on both paths, skipping any that do not exist:
31
+ Read these on both paths, skipping any that do not exist:
32
32
 
33
33
  - `CLAUDE.md`: voice, personality, spelling rules
34
34
  - `.claude/REQUIREMENTS.md`: the `## Personality` paragraph, worldview, non-goals
35
- - `.claude/standards/markdown.md`: word, punctuation, and formatting constraints
35
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: word, punctuation, and formatting constraints
36
36
  - The `write-human` skill: tone and sentence construction constraints
37
37
 
38
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
39
-
40
38
  On the source path, also read the UI surfaces matched in Step 1 plus `docs/agents/output-shape.md` and `docs/index.md` for output shape or framing rules already documented.
41
39
 
42
40
  On the greenfield path, also read `.claude/ARCHITECTURE.md` for platform, tech stack, and surface type. Do not scan `src/`, stylesheets, or UI modules. Step 1 already established they hold nothing.
@@ -55,7 +53,7 @@ Use the returned content as the target shape. Keep every section heading and eve
55
53
 
56
54
  ## Step 4: fill the template
57
55
 
58
- Walk each section once. Follow `.claude/standards/markdown.md` for punctuation and word choice throughout: no em dashes, no semicolons, no marketing buzzwords. Use commas or separate sentences instead.
56
+ Walk each section once. Follow `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` for punctuation and word choice throughout: no em dashes, no semicolons, no marketing buzzwords. Use commas or separate sentences instead.
59
57
 
60
58
  Mark any cell not traced to a source value by appending ` ? verify` inside the cell value, never as a trailing column. The cell stays inside the table shape: `| #ffffff ? verify |`. A trailing `| ? verify` after the row breaks the parser. A prose section takes its uncertainty inline instead, for example `Proposed 150ms ease-out, not yet confirmed.`, because a trailing tag on a sentence renders raw in the preview.
61
59
 
@@ -24,7 +24,7 @@ Read these from the project root in parallel, skipping any that do not exist:
24
24
 
25
25
  Do not recurse speculatively.
26
26
 
27
- Follow `.claude/standards/diagrams.md` for frontmatter, entry kinds, layout, budgets, accessibility, verification, and explanation rules, or `${CLAUDE_SKILL_DIR}/../../standards/diagrams.md` when the project does not have it.
27
+ Follow `${CLAUDE_SKILL_DIR}/../../standards/diagrams.md` for frontmatter, entry kinds, layout, budgets, accessibility, verification, and explanation rules.
28
28
 
29
29
  ### Migrating a pre-split flat file
30
30
 
@@ -82,7 +82,7 @@ The code paths the explanation cites are what the `claude-docs` sweep watches fo
82
82
 
83
83
  Quote node labels containing spaces or special characters with double quotes (`A["Web shell"]`). Avoid parentheses inside labels, they break some renderers. Use `<br/>` for line breaks inside labels.
84
84
 
85
- Run the scan in `.claude/standards/publish.md` against the whole file, including inside mermaid `subgraph` labels and node text, or `${CLAUDE_SKILL_DIR}/../../standards/publish.md` when the project does not have it. The file lands in the repository rather than on a remote, so the scan's destination scoping leaves the character checks and not the phase-label one. A colon also works as a replacement inside a label. The pedagogical voice the diagram standard asks for is a yield on voice alone and buys no exemption from these bans.
85
+ Run the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against the whole file, including inside mermaid `subgraph` labels and node text. The file lands in the repository rather than on a remote, so the scan's destination scoping leaves the character checks and not the phase-label one. A colon also works as a replacement inside a label. The pedagogical voice the diagram standard asks for is a yield on voice alone and buys no exemption from these bans.
86
86
 
87
87
  Nothing enforces the ban inside the diagram. The standards-audit hook toggles on a fence and skips every line within it, so a label carrying an em dash passes silently while the same character in the explanation paragraph below is caught. Check the labels by reading them. This is the one place in the file where the author is the only gate.
88
88
 
@@ -96,7 +96,7 @@ For each doc with relevant changes, apply updates following these rules. Read a
96
96
  **`.claude/tasks/`**
97
97
 
98
98
  - Mark completed outcomes `[x]` in the task's own file through `aitk tasks outcome <stem> --close <n> --json`, repeating `--close` for each. Positions count every outcome checkbox in file order from 1, which the read above already gives. Do not move or archive the file.
99
- - Write a newly identified task as its own file, following `.claude/standards/tasks.md` for the filename and frontmatter.
99
+ - Write a newly identified task as its own file, following `${CLAUDE_SKILL_DIR}/../../standards/tasks.md` for the filename and frontmatter.
100
100
  - Do not touch task files this session did not change.
101
101
  - Never hand-edit `.claude/tasks/index.md`. A hook regenerates it.
102
102
 
@@ -108,8 +108,8 @@ Read `ok` and `reason` out of that record rather than the exit, for the reason t
108
108
 
109
109
  - Update only the sections affected by session decisions.
110
110
  - Do not rewrite sections unrelated to what changed.
111
- - Follow `.claude/standards/markdown.md` and the `write-human` skill for all edits.
112
- - Close a decision entry in `.claude/ARCHITECTURE.md` with its verification anchor whenever this run writes that entry or amends its reasoning and that reasoning cites a measured number. Re-read the number against the tree first, since the marker records the read rather than the edit. `.claude/standards/architecture.md` fixes the sentence.
111
+ - Follow `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` and the `write-human` skill for all edits.
112
+ - Close a decision entry in `.claude/ARCHITECTURE.md` with its verification anchor whenever this run writes that entry or amends its reasoning and that reasoning cites a measured number. Re-read the number against the tree first, since the marker records the read rather than the edit. `${CLAUDE_SKILL_DIR}/../../standards/architecture.md` fixes the sentence.
113
113
  - Leave every decision entry this run did not write alone, anchored or not. The rule is scoped forward, so an entry written before it is dated by blame rather than by a read. Step 6 reports a stale anchor and no step writes one on an entry it did not amend.
114
114
 
115
115
  Write each updated file immediately. Claude Code's tool permission dialog is the confirmation gate. Do not wait for user input.
@@ -128,7 +128,7 @@ Skip this step silently when `.claude/diagrams/` does not exist at `pwd` or hold
128
128
 
129
129
  This step writes frontmatter and never content. Mermaid bodies and explanation paragraphs are off limits to it. A change that removes a module does not carry the new correct shape of the picture, so rewriting a diagram from it produces a confident wrong diagram, which is worse than the stale one it replaced. The author redraws by running `claude-diagram`.
130
130
 
131
- Follow `.claude/standards/diagrams.md` for the marker fields this step writes, or `${CLAUDE_SKILL_DIR}/../../standards/diagrams.md` when the project does not have it.
131
+ Follow `${CLAUDE_SKILL_DIR}/../../standards/diagrams.md` for the marker fields this step writes.
132
132
 
133
133
  Both findings key on something literally entering or leaving the tree. Anything looser fires on ordinary feature work and rebuilds the ignored warning this sweep replaced.
134
134
 
@@ -142,7 +142,7 @@ This step reports and never writes. The record carries no frontmatter, so an anc
142
142
 
143
143
  Step 3 holds the writer, and the two never meet. Anchoring fires when this run amends a decision, and this sweep fires when the diff moves a path under one, so a single step covering both would gate the anchor obligation on a signal that has nothing to do with it.
144
144
 
145
- Follow `.claude/standards/architecture.md` for the anchor sentence this step matches on.
145
+ Follow `${CLAUDE_SKILL_DIR}/../../standards/architecture.md` for the anchor sentence this step matches on.
146
146
 
147
147
  Past the skip above, read `${CLAUDE_SKILL_DIR}/references/anchor-sweep.md` for how an entry's cited paths are collected, the finding the diff fires, and the report line.
148
148
 
@@ -160,7 +160,7 @@ Read `.claude/context/index.md` at `pwd` to see which domain entries exist. Skip
160
160
 
161
161
  Two sources feed this step, the same split Step 2 runs on. The diff carries what the repository changed. The routed facts carry what the session learned, which a diff cannot show.
162
162
 
163
- **Routed facts.** Derive `<slug>` per `.claude/standards/slug.md`, falling back to `latest` on an empty result, and read `.claude/.tmp/memory-routing/<slug>.md` at the main worktree root. `claude-memory-capture` writes it, one H2 per target entry naming the path, with the fact underneath. Fold each fact into the entry its heading names, then delete the handoff file so a later run does not fold it twice.
163
+ **Routed facts.** Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`, falling back to `latest` on an empty result, and read `.claude/.tmp/memory-routing/<slug>.md` at the main worktree root. `claude-memory-capture` writes it, one H2 per target entry naming the path, with the fact underneath. Fold each fact into the entry its heading names, then delete the handoff file so a later run does not fold it twice.
164
164
 
165
165
  This half is not diff-scoped and must not be. A gotcha a session hit while working is exactly the fact the diff never shows, and scoping it to changed files would drop the entries worth keeping. The handoff is a named input rather than a scan, so the reach stays bounded to what capture decided.
166
166
 
@@ -172,9 +172,9 @@ Reuse the diff from the baseline above, names and content both. For each existin
172
172
 
173
173
  - Map the entry's section headings to the changed files. An entry is relevant when its prose references files, modules, or decisions touched by the diff.
174
174
  - For each relevant entry, rewrite only the sections affected by the diff. Same pattern as `docs-sync`. Do not touch unrelated sections.
175
- - Write a reference to another entry as the path that entry sits at, rather than as its bare filename. `.claude/standards/context.md` states the form, and a bare name strands the reference once a domain splits into subfolders.
175
+ - Write a reference to another entry as the path that entry sits at, rather than as its bare filename. `${CLAUDE_SKILL_DIR}/../../standards/context.md` states the form, and a bare name strands the reference once a domain splits into subfolders.
176
176
 
177
- Do not create new entries automatically. New entries are a deliberate decision: the user invokes `claude-docs --new-context <domain>` (future flag) or hand-creates the file following `.claude/standards/context.md`. Auto-creation risks padding `.claude/context/` with low-signal entries.
177
+ Do not create new entries automatically. New entries are a deliberate decision: the user invokes `claude-docs --new-context <domain>` (future flag) or hand-creates the file following `${CLAUDE_SKILL_DIR}/../../standards/context.md`. Auto-creation risks padding `.claude/context/` with low-signal entries.
178
178
 
179
179
  Write each updated entry immediately. Output one line per file:
180
180
 
@@ -188,7 +188,7 @@ The base lint-staged config runs `aitk indexes regen` on every committed `*.md`,
188
188
 
189
189
  ## Step 9: fold promoted pages
190
190
 
191
- Derive `<slug>` per `.claude/standards/slug.md`, falling back to `latest` on an empty result, and read `.claude/.tmp/teach-promotion/<slug>.md` at the main worktree root. `claude-teach` writes it, one H2 per destination naming the path, with a source line under the heading and the page body in a fenced block below that. Read the body out of the fence rather than off the heading level, since a reference page carries headings of its own and only the fence separates them from the next destination. Skip this step silently when the file is absent, which is every run where nothing was promoted.
191
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`, falling back to `latest` on an empty result, and read `.claude/.tmp/teach-promotion/<slug>.md` at the main worktree root. `claude-teach` writes it, one H2 per destination naming the path, with a source line under the heading and the page body in a fenced block below that. Read the body out of the fence rather than off the heading level, since a reference page carries headings of its own and only the fence separates them from the next destination. Skip this step silently when the file is absent, which is every run where nothing was promoted.
192
192
 
193
193
  Each block is a page an operator already confirmed a destination for, so this step lands it rather than judging it again. Write to the destination the heading names, at `pwd` rather than at the main root, since every destination here is a tracked file that commits with the branch:
194
194
 
@@ -219,7 +219,7 @@ Every move and delete below is a shell operation, so send each as a plain single
219
219
 
220
220
  The line carries a markdown link, so read the target out of the parentheses rather than taking the rest of the line. A task still carrying the older bare-path form parses the same way once the link is absent, so accept both. Resolve the target against `.claude/tasks/` before routing on it, which lands `../plans/x.md` and `.claude/plans/x.md` on the same file.
221
221
 
222
- The bullets below name resolved locations, so an unresolved target falls to the last one and no plan is ever archived. Never delete a plan. `.claude/standards/plan.md` owns the archive destination and why a shipped plan is moved rather than removed.
222
+ The bullets below name resolved locations, so an unresolved target falls to the last one and no plan is ever archived. Never delete a plan. `${CLAUDE_SKILL_DIR}/../../standards/plan.md` owns the archive destination and why a shipped plan is moved rather than removed.
223
223
 
224
224
  Board-wide scope is the one place this sweep reaches past Step 3's rule against touching task files the session did not change. A board carrying a task that closed while an earlier run missed its archive is the defect this exists to clear, and skipping those tasks would preserve it. Reaching them is safe because the archive moves the plan and points the task at the new path, so a task from unrelated work ends up with a working pointer rather than a broken one.
225
225
 
@@ -242,7 +242,7 @@ A plan can serve more than one task, and archiving on the first task to close st
242
242
 
243
243
  Write the retarget as a markdown link, `Plan: [feature-<slug>](../plans-archive/feature-<slug>.md)`, updating both halves so the text and the target stay in step. This branch is the only writer that produces a `Plan:` line nobody authored by hand, so a retarget that emits a bare path converts every task to the old form as it closes and drifts the board back to two shapes on its own.
244
244
 
245
- **Reviews.** 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.
245
+ **Reviews.** Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
246
246
 
247
247
  If `.claude/review/review-<slug>.md` exists, delete it. `claude-review` writes with this convention. Do not sweep any other `review-*.md` file.
248
248
 
@@ -25,7 +25,7 @@ Also read these when the feature touches code or UI. Skip them for prose, docs,
25
25
  - `.claude/DESIGN.md`: tokens, typography, spacing, and component rules
26
26
  - `.claude/wireframes/index.md` + the surface files relevant to the feature: intended UI layout and behavior. Read `index.md` first, then load only the per-surface files (`.claude/wireframes/<surface>.md`) the feature actually touches. Do not read the whole folder speculatively.
27
27
 
28
- When the plan adds or revises a surface, the wireframe file follows `.claude/standards/wireframes.md`, or `${CLAUDE_SKILL_DIR}/../../standards/wireframes.md` when the project does not have it.
28
+ When the plan adds or revises a surface, the wireframe file follows `${CLAUDE_SKILL_DIR}/../../standards/wireframes.md`.
29
29
 
30
30
  Coding standards live in `.claude/rules/`. Claude Code loads them automatically. Path-scoped rules apply to the files they match.
31
31
 
@@ -39,7 +39,7 @@ Open each file before describing what is in it. A count or a claim carried from
39
39
 
40
40
  ## Step 3: build the plan
41
41
 
42
- The section list, what each section holds, the suggested-and-answer contract, and the lifecycle are fixed by `.claude/standards/plan.md`, or `${CLAUDE_SKILL_DIR}/../../standards/plan.md` when the project does not have it. Read it before writing the file and follow it rather than working the shape from memory.
42
+ The section list, what each section holds, the suggested-and-answer contract, and the lifecycle are fixed by `${CLAUDE_SKILL_DIR}/../../standards/plan.md`. Read it before writing the file and follow it rather than working the shape from memory.
43
43
 
44
44
  What this skill adds on top of the standard:
45
45
 
@@ -85,7 +85,7 @@ Derive a 2-to-4-word kebab-case slug from the feature description. Write the ful
85
85
 
86
86
  From a linked worktree the file-editing tools refuse that path, so the plan goes out through `Bash`. Send the `mkdir -p` and the heredoc as two plain commands rather than joining them with `&&`, which is refused as compound.
87
87
 
88
- The file follows the template in `.claude/standards/plan.md`. Copy the shape from there rather than from this body, so one edit to the standard moves every plan.
88
+ The file follows the template in `${CLAUDE_SKILL_DIR}/../../standards/plan.md`. Copy the shape from there rather than from this body, so one edit to the standard moves every plan.
89
89
 
90
90
  Run `aitk records validate plans` after writing the file when the CLI is on PATH. It reports a section, a filename, or an answer slot that does not hold, and it writes nothing.
91
91
 
@@ -7,7 +7,7 @@ description: Opens and runs a numbered groundwork folder under `.claude/groundwo
7
7
 
8
8
  Groundwork gathers and weighs. A plan commits. A groundwork folder costs nothing to throw away, which is what makes it the right container for a question nobody has answered yet.
9
9
 
10
- Read `.claude/standards/groundwork.md` from the project root before writing any file in the folder, or `${CLAUDE_SKILL_DIR}/../../standards/groundwork.md` when the project does not have it. It holds the reserved numbers, the frontmatter and dating rules, what each required file carries, the conventions, and the anti-patterns. Do not work them from memory.
10
+ Read `${CLAUDE_SKILL_DIR}/../../standards/groundwork.md` before writing any file in the folder. It holds the reserved numbers, the frontmatter and dating rules, what each required file carries, the conventions, and the anti-patterns. Do not work them from memory.
11
11
 
12
12
  ## Guards
13
13
 
@@ -91,7 +91,7 @@ The standard sets the open question format and requires it inside a topic file a
91
91
  1. Write `06-decision.md`. It states the problem once, names the goal, lists what to do, and lists what was considered and dropped.
92
92
  2. Write `07-next-session.md` self-contained, so it survives a compaction that loses the conversation.
93
93
  3. Update the file map in `README.md`.
94
- 4. Write one task file in `.claude/tasks/` recording what the track concluded, even when the conclusion is to do nothing. Follow `.claude/standards/tasks.md` for the filename and frontmatter, or `${CLAUDE_SKILL_DIR}/../../standards/tasks.md` when the project does not have it. Aside from an experiment fixture, this is the only write permitted outside the folder.
94
+ 4. Write one task file in `.claude/tasks/` recording what the track concluded, even when the conclusion is to do nothing. Follow `${CLAUDE_SKILL_DIR}/../../standards/tasks.md` for the filename and frontmatter. Aside from an experiment fixture, this is the only write permitted outside the folder.
95
95
  5. Report uncited external claims. Closing already reads every file in the folder, so list any statement about a source outside the project that carries neither a link nor a lead entry. Report and do not block, because judging whether a sentence makes an external claim is the call a checker gets wrong.
96
96
 
97
97
  Do not close while an open question quietly fails an outcome. Resolve it, or record it in `06-decision.md` as knowingly accepted.
@@ -7,7 +7,7 @@ description: Files a raw brain dump into a numbered intake folder under `.claude
7
7
 
8
8
  Intake dispositions many findings in breadth. A dump goes in, an inventory comes out, and every item carries a problem measured against the tree, one proposed fix, and a verdict. The item that turns out to be already settled is the highest-value output, and it is the one thing neither a plan nor a groundwork track has anywhere to put.
9
9
 
10
- Read `.claude/standards/intake.md` from the project root before writing any file in the folder, or `${CLAUDE_SKILL_DIR}/../../standards/intake.md` when the project does not have it. It holds the numbering, the file map, the frontmatter and dating rules, the item format, and the answer contract. Do not work them from memory.
10
+ Read `${CLAUDE_SKILL_DIR}/../../standards/intake.md` before writing any file in the folder. It holds the numbering, the file map, the frontmatter and dating rules, the item format, and the answer contract. Do not work them from memory.
11
11
 
12
12
  ## Routing
13
13
 
@@ -10,7 +10,7 @@ Put an intake folder's unread items as batched questions, then land each selecti
10
10
 
11
11
  A folder is answered by opening each cluster file and typing under the item, which on a dump spanning six clusters means navigating to each in turn. This walks the same items in chat and writes the answers back, so the file rather than the conversation stays the record.
12
12
 
13
- Read `.claude/standards/intake.md` from the project root before writing anything, or `${CLAUDE_SKILL_DIR}/../../standards/intake.md` when the project does not have it. It holds the item format and the answer contract this skill is bound by.
13
+ Read `${CLAUDE_SKILL_DIR}/../../standards/intake.md` before writing anything. It holds the item format and the answer contract this skill is bound by.
14
14
 
15
15
  ## Guards
16
16
 
@@ -9,7 +9,7 @@ Scan the current session for patterns worth persisting, send each to the surface
9
9
 
10
10
  A fact about a domain belongs in that domain's context entry, which the three-tier model already loads on demand. Writing it to memory instead puts it in a folder nothing opens. Routing is therefore the point of this skill and the memory file is the fallback.
11
11
 
12
- The filename and its type prefix, the frontmatter, the body shape each type carries, and the lifecycle are fixed by `.claude/standards/memory.md`, or `${CLAUDE_SKILL_DIR}/../../standards/memory.md` when the project does not have it. Read it before writing an entry and follow it rather than working the shape from memory.
12
+ The filename and its type prefix, the frontmatter, the body shape each type carries, and the lifecycle are fixed by `${CLAUDE_SKILL_DIR}/../../standards/memory.md`. Read it before writing an entry and follow it rather than working the shape from memory.
13
13
 
14
14
  ## Guards
15
15
 
@@ -21,20 +21,18 @@ The filename and its type prefix, the frontmatter, the body shape each type carr
21
21
 
22
22
  ## Step 1: read context
23
23
 
24
- Read in parallel from the project root, skipping any that do not exist:
24
+ Read in parallel, skipping any that do not exist:
25
25
 
26
- - `.claude/standards/memory.md`: the filename, frontmatter, body shape, and lifecycle every entry follows
26
+ - `${CLAUDE_SKILL_DIR}/../../standards/memory.md`: the filename, frontmatter, body shape, and lifecycle every entry follows
27
27
  - `CLAUDE.md`: the project's write location and any rule it states over the folder
28
28
  - `.claude/memory/index.md`: existing index, to avoid duplicates
29
29
  - `.claude/context/index.md`: the domain catalog Step 3 routes against
30
- - `.claude/standards/markdown.md`: banned words, punctuation, and formatting applied to memory file bodies
30
+ - `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`: banned words, punctuation, and formatting applied to memory file bodies
31
31
  - The `write-human` skill: voice, rhythm, and sentence construction applied to memory file bodies
32
32
 
33
- Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` instead when the project does not have it.
34
-
35
33
  ## Step 2: classify candidates
36
34
 
37
- Scan the session and group candidate patterns as `feedback`, `project`, `user`, or `reference`. What each type holds and what makes one fire are the Types table in `.claude/standards/memory.md`. Read the table and classify against it rather than against a recollection of the four names.
35
+ Scan the session and group candidate patterns as `feedback`, `project`, `user`, or `reference`. What each type holds and what makes one fire are the Types table in `${CLAUDE_SKILL_DIR}/../../standards/memory.md`. Read the table and classify against it rather than against a recollection of the four names.
38
36
 
39
37
  Scan the whole session rather than its last exchange. A rule the user stated early and you followed since reads as settled and is exactly the one no file records.
40
38
 
@@ -54,7 +52,7 @@ Do not edit a context entry here. `claude-docs` owns those edits and folds the r
54
52
  <the fact in one or two sentences, stated as a fact about the domain rather than as a session narrative>
55
53
  ```
56
54
 
57
- 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.
55
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
58
56
 
59
57
  The handoff is a file rather than a spoken result so the routed fact survives a compaction between this step and the `claude-docs` pass, and so the standalone caller leaves something behind for a later `/claude-docs` to consume.
60
58
 
@@ -64,7 +62,7 @@ For each remaining candidate, grep `.claude/memory/` for an existing file on the
64
62
 
65
63
  ## Step 5: write the residue
66
64
 
67
- Write each remaining candidate to `.claude/memory/<type>-<slug>.md`, following the template and the shape rules in `.claude/standards/memory.md`. Copy the shape from there rather than from this body, so one edit to the standard moves every entry.
65
+ Write each remaining candidate to `.claude/memory/<type>-<slug>.md`, following the template and the shape rules in `${CLAUDE_SKILL_DIR}/../../standards/memory.md`. Copy the shape from there rather than from this body, so one edit to the standard moves every entry.
68
66
 
69
67
  Two of its rules are the ones a capture pass gets wrong under time pressure. State the rule rather than the incident that produced it, since the session ending is the only reader who has the narrative. Write the `title` as the rule itself, never as the filename stem.
70
68
 
@@ -7,7 +7,7 @@ description: Reviews `.claude/memory/` and proposes per-entry actions (promote t
7
7
 
8
8
  This skill drives the full memory review lifecycle in five phases. Pick the phase from what the user said and whether a review receipt already exists at `<main-root>/.claude/review/memory-review-*.md`.
9
9
 
10
- What an entry looks like and why a retired one is moved rather than deleted are fixed by `.claude/standards/memory.md`, or `${CLAUDE_SKILL_DIR}/../../standards/memory.md` when the project does not have it. Read it before rewriting an entry, since a promotion rewrites the rule and a rewrite has to leave the entry conforming.
10
+ What an entry looks like and why a retired one is moved rather than deleted are fixed by `${CLAUDE_SKILL_DIR}/../../standards/memory.md`. Read it before rewriting an entry, since a promotion rewrites the rule and a rewrite has to leave the entry conforming.
11
11
 
12
12
  | User intent | Phase | Mutates |
13
13
  | ---------------------------------------------------------------------- | --------- | ---------------------------- |
@@ -51,11 +51,9 @@ Read in parallel from the project root. Skip any file or folder that does not ex
51
51
  - `CLAUDE.md`: project behavior rules and Content ownership section
52
52
  - every `SKILL.md` under `.claude/skills/`: domain-scoped internal skill bodies
53
53
  - every `SKILL.md` under `claude/skills/`: plugin skill bodies
54
- - every `*.md` under `.claude/standards/`: authoring references
54
+ - every `*.md` under `${CLAUDE_SKILL_DIR}/../../standards/`: authoring references
55
55
  - every `*.md` under `governance/rules/` in the toolkit repo, or `.claude/rules/` in a target project: coding-standards rules
56
56
 
57
- Read any authoring reference the project does not have from `${CLAUDE_SKILL_DIR}/../../standards/` instead.
58
-
59
57
  ### Step 3: classify each entry
60
58
 
61
59
  `.claude/memory/` is a holding pen. Default every entry to promote or retire on review. Skip is the rare exception, reserved for active task overlap or user-type memories with no in-repo target.
@@ -66,14 +64,14 @@ For each in-scope entry (see Scope), pick one action:
66
64
 
67
65
  - **Promote to `CLAUDE.md`**: the rule is cross-domain behavior or a design principle applied across the whole project.
68
66
  - **Promote to a skill body**: the rule fires only when editing a specific path-scoped domain. Name the target skill.
69
- - **Promote to a standards file**: the rule is an authoring reference that belongs in `.claude/standards/<domain>.md`.
67
+ - **Promote to a standards file**: the rule is an authoring reference that belongs in the project's own standards folder as `<domain>.md`.
70
68
  - **Promote to a context entry**: the entry states a fact about a domain carrying an entry in `.claude/context/index.md`. Append it to `.claude/.tmp/memory-routing/<slug>.md` in the format `claude-memory-capture` writes, and tell the user to run `/claude-docs` from a branch. Do not edit the context entry here.
71
69
  - **Hand off to governance**: the rule is coding-standards class (typescript, testing, naming, error-handling, performance, logging, concurrency, planning). Do not author the rule file inline. Never edit the synced `.claude/rules/` copies of toolkit rules, because `aitk gov sync` overwrites them. Stop at handoff.
72
- - In the toolkit repo, point the user at `aitk-governance` and `.claude/standards/rule.md`, which own the source-of-truth rules under `governance/rules/`.
70
+ - In the toolkit repo, point the user at `aitk-governance` and `${CLAUDE_SKILL_DIR}/../../standards/rule.md`, which own the source-of-truth rules under `governance/rules/`.
73
71
  - In a target project, point the user at the `create-rule` skill, which scaffolds a project-local rule under `.claude/rules/`.
74
72
  - **Retire**: the rule is stale, already absorbed into a durable surface, too vague to phrase as a rule, or a one-time incident narrative. Apply moves the file to `.claude/.tmp/memory-archive/` rather than deleting it.
75
73
 
76
- Retire is an archive, not a deletion, which `.claude/standards/memory.md` states as the rule and this skill executes. The archive is worth less than a plan's, since a promoted entry survives in its destination and a stale one is discarded on purpose, which is why the move is cheap rather than free.
74
+ Retire is an archive, not a deletion, which `${CLAUDE_SKILL_DIR}/../../standards/memory.md` states as the rule and this skill executes. The archive is worth less than a plan's, since a promoted entry survives in its destination and a stale one is discarded on purpose, which is why the move is cheap rather than free.
77
75
 
78
76
  When two or more memories collapse into one rule on the same target, propose them as a single merged edit under the matching promote category. The consolidate case is a variant of promote, not a separate action.
79
77
 
@@ -89,7 +87,7 @@ Rules that resist crisp one-line phrasing default to **Retire** over promote. Ne
89
87
 
90
88
  ### Step 4: write the proposal to the review file
91
89
 
92
- 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.
90
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
93
91
 
94
92
  Write the full proposal to `.claude/review/memory-review-<slug>.md` at the main worktree root. Do not print it inline. Read `${CLAUDE_SKILL_DIR}/references/receipt-format.md` for the file structure, the item template, and how each action type varies the body. The four phases below rewrite items inside an existing receipt rather than authoring one, so none of them opens it.
95
93
 
@@ -45,4 +45,4 @@ Decision:
45
45
 
46
46
  ## Variation by action
47
47
 
48
- For Hand off items, the body is a pointer to the governance target instead of a rewritten rule: `aitk-governance` and `.claude/standards/rule.md` in the toolkit repo, or the `create-rule` skill in a target project. For Retire items, skip the rewrite block. Every item gets a `Decision:` slot regardless of action. `Take:` is added only when a question response is needed.
48
+ For Hand off items, the body is a pointer to the governance target instead of a rewritten rule: `aitk-governance` and `${CLAUDE_SKILL_DIR}/../../standards/rule.md` in the toolkit repo, or the `create-rule` skill in a target project. For Retire items, skip the rewrite block. Every item gets a `Decision:` slot regardless of action. `Take:` is added only when a question response is needed.
@@ -34,13 +34,13 @@ Then output the state of play so the human knows what to launch, review, and mer
34
34
 
35
35
  `priority.md` is the ordering source. `index.md` sorts by filename and says nothing about order, so read the sequence from the first and never infer it from the second. When `priority.md` is absent, report the queue and say the order is unrecorded.
36
36
 
37
- Row position under `## Needs a plan` is what gets planned next, top first, per `.claude/standards/tasks.md`. `backlog.md` carries what nobody is scheduling and is explicitly unordered, so read it for what exists and never as a queue. Report a backlog count rather than its rows, since listing them puts the length back in front of the reader the cut took it away from.
37
+ Row position under `## Needs a plan` is what gets planned next, top first, per `${CLAUDE_SKILL_DIR}/../../standards/tasks.md`. `backlog.md` carries what nobody is scheduling and is explicitly unordered, so read it for what exists and never as a queue. Report a backlog count rather than its rows, since listing them puts the length back in front of the reader the cut took it away from.
38
38
 
39
39
  No surface carries cross-version sequencing, so report none. A row's `Waiting on` cell states why that row sits where it does, and reasoning spanning several rows reaches this session only through whoever remembers it. Say nothing about an active version, since nothing in the tree states one and a version asserted from the board is the unsourced claim this omission exists against.
40
40
 
41
41
  A compaction is a moment this skill cannot detect, so the human asks for each side of it and this skill reads the matching runbook when they do.
42
42
 
43
- On a request to write the handoff or save the session, read `${CLAUDE_SKILL_DIR}/references/orchestrator-handoff.md` and follow it. It captures what the session learned, then writes a session map per `.claude/standards/session.md`, or `${CLAUDE_SKILL_DIR}/../../standards/session.md` when the project does not have it, carrying the state of play, the mistakes worth not repeating, and the standing cautions, with the decisions taken under delegated authority added as this role's extension. That capture is the only one this session runs, since the refill sweep reports it as owed rather than paying it. Write nothing to the handoff that the board, a task file, or a groundwork folder already carries.
43
+ On a request to write the handoff or save the session, read `${CLAUDE_SKILL_DIR}/references/orchestrator-handoff.md` and follow it. It captures what the session learned, then writes a session map per `${CLAUDE_SKILL_DIR}/../../standards/session.md`, carrying the state of play, the mistakes worth not repeating, and the standing cautions, with the decisions taken under delegated authority added as this role's extension. That capture is the only one this session runs, since the refill sweep reports it as owed rather than paying it. Write nothing to the handoff that the board, a task file, or a groundwork folder already carries.
44
44
 
45
45
  On a request to resume after a compaction, read `${CLAUDE_SKILL_DIR}/references/orchestrator-resume.md`, which reads that file back with the board and the groundwork behind the live work.
46
46
 
@@ -117,7 +117,7 @@ The channel runs both ways and the return leg carries what the pull request cann
117
117
 
118
118
  What arrives there does not become a record by being read, so place it by what it changes. An answer that settles a finding goes onto the pull request through the next pass, which withdraws or regrades that finding and names the fact behind it, per `claude-pr-review`. An answer that changes what this session believes about the world instead, which is a mapping correction or a constraint on what a worker can do, settles no finding and reaches no thread, so route it the way Boundaries below routes a change found while orchestrating, which lands it on the task owning the surface it describes. Writing a tracked file to hold either is forbidden here, which leaves the pull request and the board as the two surfaces this session writes.
119
119
 
120
- A plan written here is written against a tree several branches are already changing, so it names the file set of every track in flight as a constraint, one set per track, read from the Touches column of that track's row. State for each set which of the two acts it forbids, per Constraints in `.claude/standards/plan.md`, or `${CLAUDE_SKILL_DIR}/../../standards/plan.md` when the project does not have it. A bare path list leaves the worker guessing, which is how a plan ends up forbidding the repair of a citation the change broke.
120
+ A plan written here is written against a tree several branches are already changing, so it names the file set of every track in flight as a constraint, one set per track, read from the Touches column of that track's row. State for each set which of the two acts it forbids, per Constraints in `${CLAUDE_SKILL_DIR}/../../standards/plan.md`. A bare path list leaves the worker guessing, which is how a plan ends up forbidding the repair of a citation the change broke.
121
121
 
122
122
  Stamp the block with the commit this session read the tree at, which the same section fixes the form of. A plan written during a refill sits in the ready queue while the wave it names merges, so the constraint is true when written and false when a worker reads it. The stamp is what lets that worker test the difference, and the standard carries the test.
123
123
 
@@ -3,7 +3,7 @@ title: Orchestrator handoff runbook
3
3
  description: The two sections an orchestrating session adds over the shared session map, how capture runs from a session that never commits, and the resume invocation the file carries out
4
4
  ---
5
5
 
6
- Write the pre-compaction handoff as orchestrator. Follow `.claude/standards/session.md`, or `${CLAUDE_SKILL_DIR}/../../standards/session.md` when the project does not have it, for the filename, the three core sections, the write procedure, and the citation rule. Everything below is the extension this role adds over that core, and none of it belongs to a session holding no delegated authority.
6
+ Write the pre-compaction handoff as orchestrator. Follow `${CLAUDE_SKILL_DIR}/../../standards/session.md` for the filename, the three core sections, the write procedure, and the citation rule. Everything below is the extension this role adds over that core, and none of it belongs to a session holding no delegated authority.
7
7
 
8
8
  1. Run the capture step the core opens with, and tell `aitk:claude-memory-capture` that this session does not commit.
9
9
  2. Add `## Decisions taken under delegated authority` directly after `## State`, holding each decision and why it went that way, so nobody re-proposes it. It sits there rather than after the core because a decision is read against the state it was taken in.
@@ -6,7 +6,7 @@ description: What to read back after a compaction, and how to treat a groundwork
6
6
  Resume as orchestrator after a compaction. Read the board and the groundwork behind the live work before answering anything, because a compaction summary keeps conclusions and drops the reasoning that produced them.
7
7
 
8
8
  1. Resolve the main worktree root with `git worktree list --porcelain | grep -m 1 '^worktree ' | cut -d' ' -f2-`, falling back to `pwd`. Every path below resolves against it.
9
- 2. Read `.claude/tasks/priority.md` for the ordering and what each task waits on. Read the newest `.claude/tasks/session-*.md` when one exists, per `.claude/standards/session.md`, and treat it as the previous session's scratch rather than a source.
9
+ 2. Read `.claude/tasks/priority.md` for the ordering and what each task waits on. Read the newest `.claude/tasks/session-*.md` when one exists, per `${CLAUDE_SKILL_DIR}/../../standards/session.md`, and treat it as the previous session's scratch rather than a source.
10
10
  3. Read the task file for every entry under `## Run now`, plus any entry a live pull request names.
11
11
  4. Read the groundwork folder each of those tasks cites. Read `README.md` for the file map, then `06-decision.md` when the track is closed, or `07-next-session.md` and the numbered topic files when it is open. A task's Findings section is a lossy summary of its track, so planning against the summary re-derives what the folder already settled.
12
12
  5. Run `gh pr list --state open` and `git log --oneline -5` to see what shipped since the folder was written.
@@ -111,7 +111,7 @@ An empty result means no response arrived since the prior pass, so this pass wou
111
111
 
112
112
  The response is also the whole read on a repeated head. Step 2 resolves an empty range, because a commit is its own ancestor and `<prior-oid>..<headRefOid>` spans nothing, so the delta cannot answer whether a prior finding landed. Read that comment for what the worker changed or accepted, and treat an accepted finding as closed rather than restating it.
113
113
 
114
- The comment is a rendered-for-human GitHub surface, so load the `write-human` skill for voice and follow `.claude/standards/markdown.md` for the banned words, or `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` when the project does not have it: cut editorializing, and keep every sentence load-bearing. Match this shape on a first pass:
114
+ The comment is a rendered-for-human GitHub surface, so load the `write-human` skill for voice and follow `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` for the banned words: cut editorializing, and keep every sentence load-bearing. Match this shape on a first pass:
115
115
 
116
116
  ```markdown
117
117
  ## Review
@@ -166,7 +166,7 @@ The `What is right` section is optional, capped at three bullets, and included o
166
166
 
167
167
  Close the body with `🤖 Reviewed by Claude Code` on its own line so the review reads as an independent machine pass, not a human sign-off.
168
168
 
169
- Before posting, run the scan in `.claude/standards/publish.md` against the body, or `${CLAUDE_SKILL_DIR}/../../standards/publish.md` when the project does not have it. The hook skips `.claude/.tmp/`, so this scan is the only gate on the published comment. A finding phrased against an internal phase label is what the label half of the scan catches here.
169
+ Before posting, run the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against the body. The hook skips `.claude/.tmp/`, so this scan is the only gate on the published comment. A finding phrased against an internal phase label is what the label half of the scan catches here.
170
170
 
171
171
  ```bash
172
172
  gh pr review <number> --comment --body-file .claude/.tmp/pr-review/body-<number>-<short-sha>.md
@@ -118,7 +118,7 @@ If nothing is wrong, use: `✅ No findings.`
118
118
 
119
119
  ### Persist
120
120
 
121
- 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.
121
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
122
122
 
123
123
  Write the full report directly to `.claude/review/review-<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.
124
124
 
@@ -68,7 +68,7 @@ Before proposing an Update, grep the target section for the seed text's keywords
68
68
 
69
69
  ## Step 4: write the proposal to the review file
70
70
 
71
- 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.
71
+ Derive `<slug>` per `${CLAUDE_SKILL_DIR}/../../standards/slug.md`. Fall back to `latest` on an empty result.
72
72
 
73
73
  Write the full proposal to `.claude/review/seed-audit-<slug>.md` at the main worktree root. Do not print the proposal inline.
74
74
 
@@ -8,7 +8,7 @@ description: Audits changed markdown files against every authoring standard that
8
8
  ## Guards
9
9
 
10
10
  - Resolve the base ref first, per Diff baseline below, then scope the file list exactly as Step 1 does, fallback included. If no markdown files changed, stop: `✅ No markdown changes to audit.` A guard that reads bare local `main`, or that skips the unusable-baseline fallback, passes the skill clean on a branch it never read.
11
- - If neither `.claude/standards/markdown.md` nor `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` is present, stop: `❌ markdown.md standard not found. Install toolkit standards first.` Test the file rather than the directory, since a project that installed standards before a given file existed keeps the directory without ever receiving that file.
11
+ - If `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` is not present, stop: `❌ markdown.md standard not found. Reinstall the aitk plugin.` Test the file rather than the directory, since a plugin cache built before a given file existed keeps the directory without ever receiving that file.
12
12
  - `markdown.md` is the one standard testable before the mapping runs, since its scope statement declares an attribute and every changed markdown file therefore maps to it. Every other standard is tested in Step 3, where the mapping has named which ones the run needs.
13
13
 
14
14
  ## Diff baseline
@@ -60,7 +60,7 @@ Each entry carries `appliesTo`, the paths its `## Scope` statement declares. Mat
60
60
  - An entry ending in `/` matches when the file path contains it at a path-segment boundary
61
61
  - Any other entry matches when the file path ends with it at a path-segment boundary
62
62
 
63
- Add any standard in `.claude/standards/` the catalog did not list, and derive every declaration the same way when `aitk` is unavailable: the backticked paths in the first sentence under `## Scope`, or `*` when that sentence says the standard governs an attribute. Skip `index.md`, which is generated from the others and declares nothing. Read a standard from `${CLAUDE_SKILL_DIR}/../../standards/` when the project does not have it.
63
+ Add any standard the catalog did not list, reading `${CLAUDE_SKILL_DIR}/../../standards/` and whatever folder the project authors its own standards in, and derive every declaration the same way when `aitk` is unavailable: the backticked paths in the first sentence under `## Scope`, or `*` when that sentence says the standard governs an attribute. Skip `index.md`, which is generated from the others and declares nothing.
64
64
 
65
65
  An entry whose `appliesTo` is empty declared nothing this can read. Report it as a finding against that standard's own file in Step 4 and audit the rest. A standard dropped in silence is the same miss this mapping exists to remove, one level up.
66
66
 
@@ -68,14 +68,14 @@ Every mapping names a changed markdown file, which is the only thing Step 1 prod
68
68
 
69
69
  ## Step 3: read standards and audit
70
70
 
71
- Read each applicable standard once, testing `.claude/standards/<name>` and `${CLAUDE_SKILL_DIR}/../../standards/<name>` before reading it. A standard the mapping named and neither path carries is reported as a finding against the file that mapped to it rather than skipped, since a standard read from nowhere reports every file under it clean.
71
+ Read each applicable standard once from `${CLAUDE_SKILL_DIR}/../../standards/<name>`, testing the file before reading it. A standard the mapping named and that path does not carry is reported as a finding against the file that mapped to it rather than skipped, since a standard read from nowhere reports every file under it clean.
72
72
 
73
73
  For each changed file, audit against every rule:
74
74
 
75
75
  - **Pattern rules**: grep the file for every token the standard bans. Grep is authoritative. Reading alone misses occurrences.
76
76
  - **Judgment rules**: check each rule in context against the standard that states it.
77
77
 
78
- Every changed markdown file gets the pattern pass, since `.claude/standards/markdown.md` applies to all of them. Take the banned tokens from that standard at read time rather than from a list held here. It carries the banned words, the banned spellings, and the banned characters together, so one read covers every token this pass greps for.
78
+ Every changed markdown file gets the pattern pass, since `${CLAUDE_SKILL_DIR}/../../standards/markdown.md` applies to all of them. Take the banned tokens from that standard at read time rather than from a list held here. It carries the banned words, the banned spellings, and the banned characters together, so one read covers every token this pass greps for.
79
79
 
80
80
  ## Step 4: report
81
81