@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.
- package/claude/.claude-plugin/plugin.json +1 -1
- package/claude/skills/claude-address-review/SKILL.md +5 -6
- package/claude/skills/claude-autoship/SKILL.md +2 -2
- package/claude/skills/claude-design-extract/SKILL.md +3 -5
- package/claude/skills/claude-diagram/SKILL.md +2 -2
- package/claude/skills/claude-docs/SKILL.md +11 -11
- package/claude/skills/claude-feature/SKILL.md +3 -3
- package/claude/skills/claude-groundwork/SKILL.md +2 -2
- package/claude/skills/claude-intake/SKILL.md +1 -1
- package/claude/skills/claude-intake-answer/SKILL.md +1 -1
- package/claude/skills/claude-memory-capture/SKILL.md +7 -9
- package/claude/skills/claude-memory-review/SKILL.md +6 -8
- package/claude/skills/claude-memory-review/references/receipt-format.md +1 -1
- package/claude/skills/claude-orchestrate/SKILL.md +3 -3
- package/claude/skills/claude-orchestrate/references/orchestrator-handoff.md +1 -1
- package/claude/skills/claude-orchestrate/references/orchestrator-resume.md +1 -1
- package/claude/skills/claude-pr-review/SKILL.md +2 -2
- package/claude/skills/claude-review/SKILL.md +1 -1
- package/claude/skills/claude-seed-sync/SKILL.md +1 -1
- package/claude/skills/claude-standards-audit/SKILL.md +4 -4
- package/claude/skills/claude-tasks/SKILL.md +34 -9
- package/claude/skills/claude-teach/SKILL.md +2 -2
- package/{standards → claude/skills/claude-teach/references}/glossary.md +1 -0
- package/claude/skills/claude-ui-test/SKILL.md +1 -1
- package/claude/skills/claude-ux-audit/SKILL.md +2 -4
- package/claude/skills/claude-ux-measure/SKILL.md +1 -1
- package/claude/skills/claude-worktree/SKILL.md +3 -3
- package/claude/skills/create-rule/SKILL.md +2 -2
- package/claude/skills/create-skill/SKILL.md +4 -6
- package/claude/skills/create-snippet/SKILL.md +1 -3
- package/claude/skills/create-standard/SKILL.md +2 -4
- package/claude/skills/decision-escalate/SKILL.md +1 -1
- package/claude/skills/docs-sync/SKILL.md +3 -5
- package/claude/skills/git-commit/SKILL.md +1 -3
- package/claude/skills/git-followup/SKILL.md +1 -1
- package/claude/skills/git-issue/SKILL.md +2 -4
- package/claude/skills/git-pr/SKILL.md +4 -6
- package/claude/skills/git-split/SKILL.md +1 -1
- package/claude/skills/git-stage/SKILL.md +1 -3
- package/claude/skills/migration-claude-md/SKILL.md +2 -2
- package/claude/skills/session-resume/SKILL.md +1 -1
- package/claude/skills/setup-gov/SKILL.md +1 -1
- package/claude/skills/setup-indexes/SKILL.md +1 -1
- package/claude/skills/write-human/SKILL.md +2 -2
- package/docs/agents/markdown-audit.md +3 -1
- package/docs/agents/records.md +1 -1
- package/docs/agents/teach.md +1 -1
- package/docs/target-projects.md +3 -3
- package/governance/rules/claude/501-markdown.md +1 -1
- package/governance/rules/claude/510-context.md +1 -1
- package/governance/rules/claude/520-wireframes.md +1 -1
- package/governance/rules/claude/530-requirements.md +1 -1
- package/governance/rules/claude/540-architecture.md +1 -1
- package/governance/rules/claude/550-design.md +1 -1
- package/governance/rules/claude/555-tasks.md +1 -1
- package/governance/rules/claude/556-groundwork.md +1 -1
- package/governance/rules/claude/557-intake.md +1 -1
- package/governance/rules/claude/558-plan.md +1 -1
- package/governance/rules/claude/559-memory.md +1 -1
- package/governance/rules/claude/560-diagrams.md +1 -1
- package/governance/rules/claude/561-teach.md +3 -2
- package/governance/rules/claude/562-session.md +1 -1
- package/governance/rules/claude/570-skill.md +1 -1
- package/governance/rules/claude/580-readme.md +1 -1
- package/governance/rules/claude/590-rule-authoring.md +1 -1
- package/governance/rules/claude/591-standard-authoring.md +1 -1
- package/package.json +1 -1
- package/src/markdown/structure.ts +39 -4
- package/standards/bundled/glossary.md +76 -0
- package/standards/index.md +0 -1
- package/standards/tasks.md +3 -1
- package/standards/teach.md +3 -3
|
@@ -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
|
|
108
|
-
|
|
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
|
|
149
|
-
|
|
150
|
-
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
|
|
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
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
24
|
+
Read in parallel, skipping any that do not exist:
|
|
25
25
|
|
|
26
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|