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