@erclx/aitk 0.49.0 → 0.51.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aitk",
3
3
  "description": "Automated governance, versioning, and discovery tools for Claude Code.",
4
- "version": "0.49.0",
4
+ "version": "0.51.0",
5
5
  "author": {
6
6
  "name": "Eric Le",
7
7
  "url": "https://github.com/erclx"
@@ -15,6 +15,8 @@ The session also writes surfaces it is told only how to read. Refilling the queu
15
15
 
16
16
  Output drifts everywhere the contract stops. The specified shape covers invocation alone, so a sweep report, a board report, and an analysis each end in a decision the human owns and each buries it under the evidence they would have skipped. A compaction is the same failure one step earlier, since the file that survives it has a stated reader and no stated writer, and the session improvises what to save and loses the reasoning the board never held.
17
17
 
18
+ The runbooks the session cannot run from memory fail on a third axis, which is where they are kept. A runbook reached by an installed path is a dependency on a channel this skill does not travel on, so a project holding the plugin and running no install follows the citation to nothing, and nothing reports the break because a missing file produces no error until someone opens the path. The three that cover the moments the loop cannot detect therefore have to ship inside the skill.
19
+
18
20
  ## Must
19
21
 
20
22
  - Read the priority file for execution order, since the index sorts by filename and states no order
@@ -28,7 +30,9 @@ Output drifts everywhere the contract stops. The specified shape covers invocati
28
30
  - Carry a plan pointer in the Plan column and a file set in the Touches column, so a row's readiness and disjointness claims stay checkable
29
31
  - Re-resolve the board's plan pointers after any archive, since the archiving skill rewrites the task file and knows nothing about the board
30
32
  - Lead a sweep report, a board report, and an analysis with the state, the open decisions, and the next action, keeping the evidence below them
31
- - Write the pre-compact handoff with what no other file carries, and name the snippet that reads it back
33
+ - Write the pre-compact handoff with what no other file carries, and name the runbook that reads it back
34
+ - Carry the handoff, resume, and sweep runbooks inside the skill, so every citation resolves for a project holding the plugin and nothing else
35
+ - Read the handoff or the resume runbook when the human asks for that side of a compaction, since the request is the only signal available for a moment the loop cannot detect
32
36
 
33
37
  ## Must not
34
38
 
@@ -47,6 +51,7 @@ Output drifts everywhere the contract stops. The specified shape covers invocati
47
51
  - Priority file absent: report the queue and say the order is unrecorded rather than inferring it from the index
48
52
  - Roadmap absent: omit the roadmap line rather than asserting a version the file does not state
49
53
  - Roadmap present but never committed: report the date as uncommitted, since a blank reads as a formatting slip
54
+ - This body dropped from a long session approaching a compaction: name the re-invocation and the runbook paths, since the routing lives in the body and a user-invoked skill routes nothing once it is gone
50
55
 
51
56
  ## Out of scope
52
57
 
@@ -35,9 +35,9 @@ Then output the state of play so the human knows what to launch, review, and mer
35
35
 
36
36
  The roadmap is optional and this skill does not require it. It carries why a sequence is what it is, changes only when strategy changes, and is absent in a project whose scope has already shipped. Report what it says and name it as the source. Never assert an active version the file does not state, and say nothing about one when the file is missing.
37
37
 
38
- A compaction is a moment this skill cannot detect, so both sides of it are snippets the human fires. Before one, `@.claude/snippets/claude/orchestrator-handoff.md` writes `.claude/tasks/session.md` with the state of play, the decisions taken under delegated authority, the mistakes worth not repeating, and the standing cautions. After one, `@.claude/snippets/claude/orchestrator-resume.md` reads that file back with the board and the groundwork behind the live work. Write nothing to the handoff that the board, a task file, or a groundwork folder already carries.
38
+ 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. On a request to write the handoff or save the session, read `${CLAUDE_SKILL_DIR}/references/orchestrator-handoff.md` and follow it. It writes `.claude/tasks/session.md` with the state of play, the decisions taken under delegated authority, the mistakes worth not repeating, and the standing cautions. 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. Write nothing to the handoff that the board, a task file, or a groundwork folder already carries.
39
39
 
40
- Name `${CLAUDE_SKILL_DIR}/../../snippets/claude/<name>.md` as the fallback for any orchestrator snippet the project copy lacks. Snippets install by named bundle rather than wholesale, so a project that installed one bundle has the `.claude/snippets/` directory and none of these files, and the plugin ships the whole snippets folder beside `skills/`.
40
+ That routing lives in this body and this skill is user-invoked, so a session that has dropped the body routes nothing and the request lands as ordinary conversation. Approaching a compaction is when a long session is likeliest to have dropped it, which is the same moment the handoff exists for. Re-invoke `/aitk:claude-orchestrate` first whenever the session has run long or the ask goes unanswered. The two runbooks sit at `references/orchestrator-handoff.md` and `references/orchestrator-resume.md` inside this skill's own folder, so a person who knows their plugin root opens either one directly and follows it without this skill loaded at all.
41
41
 
42
42
  ## Output
43
43
 
@@ -110,7 +110,7 @@ Write no shape for a correction. A correction is a sentence, and a format for ad
110
110
 
111
111
  ## Refilling the ready queue
112
112
 
113
- Keep enough planned, non-conflicting tasks available that a free worker never waits, and place the findings the last merge produced before promoting anything new. Run this after every merge and whenever the ready list thins. `@.claude/snippets/claude/orchestrator-sweep.md` fires this procedure after a batch of merges and adds the plan re-verification that a merge invalidates.
113
+ Keep enough planned, non-conflicting tasks available that a free worker never waits, and place the findings the last merge produced before promoting anything new. Run this after every merge and whenever the ready list thins. `${CLAUDE_SKILL_DIR}/references/orchestrator-sweep.md` wraps this procedure for a batch of merges and adds the plan re-verification that a merge invalidates.
114
114
 
115
115
  Open the sweep by invoking `aitk:claude-memory-capture`. Both other callers are ship-chain skills and this session never ships, so without this the session that receives every operator correction is the one session that records none. The sweep is the closest bounded moment this session has to a ship, and it already runs once per batch of merges, which beats an end-of-session moment a compaction can cut short.
116
116
 
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: Orchestrator handoff runbook
3
+ description: What to write to .claude/tasks/session.md before a compaction, and what to leave to the board
4
+ ---
5
+
1
6
  Write the pre-compact handoff as orchestrator. Do this before a compaction, because a compaction keeps conclusions and drops the reasoning that produced them, and no other file in the repository carries that reasoning.
2
7
 
3
8
  1. Resolve the main worktree root with `git worktree list --porcelain | grep -m 1 '^worktree ' | cut -d' ' -f2-`, falling back to `pwd`. Write `.claude/tasks/session.md` under it.
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: Orchestrator resume runbook
3
+ description: What to read back after a compaction, and how to treat a groundwork folder's three shelf lives
4
+ ---
5
+
1
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.
2
7
 
3
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.
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: Orchestrator sweep runbook
3
+ description: The once-per-batch board sweep, plan re-verification, and where each merged finding goes
4
+ ---
5
+
1
6
  Sweep the board as orchestrator after merging. Run this once per batch of merges, before answering what to do next, because the surfaces that record what shipped are the ones nothing updates on its own.
2
7
 
3
8
  1. Pull into the main worktree rather than fetching. A fetch leaves the local branch behind, so `git log` reports a state that has not arrived. A repository that adds a post-merge hook to name archive candidates gets it on a pull and never on a fetch.
@@ -18,7 +18,7 @@ The default. `.claude/DESIGN.md` holds visual intent as prose plus token tables
18
18
 
19
19
  ### Seed shape
20
20
 
21
- The toolkit seed in `tooling/claude/seeds/.claude/DESIGN.md` ships a token-table template. The `aitk:claude-design-extract` skill drafts the file, sourcing tokens from a project's existing prose and CLI UI surfaces, or proposing them from `.claude/REQUIREMENTS.md` and a `## Personality` paragraph when no UI code exists yet. `aitk design render` writes an HTML plus CSS preview to `.claude/review/design/` for eyeballing the current system without leaving Claude Code. See `.claude/context/design.md`.
21
+ The toolkit seed in `tooling/claude/seeds/.claude/DESIGN.md` ships a token-table template with a starting set of roles, and `.claude/standards/design.md` carries the same tables under `## Template` with placeholder rows. The column headers are what the renderer parses, so they stay verbatim in either, while the rows and values are the project's own. The `aitk:claude-design-extract` skill drafts the file, sourcing tokens from a project's existing prose and CLI UI surfaces, or proposing them from `.claude/REQUIREMENTS.md` and a `## Personality` paragraph when no UI code exists yet. `aitk design render` writes an HTML plus CSS preview to `.claude/review/design/` for eyeballing the current system without leaving Claude Code. See `.claude/context/design.md`.
22
22
 
23
23
  ### Tools
24
24
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@erclx/aitk",
3
3
  "type": "module",
4
- "version": "0.49.0",
4
+ "version": "0.51.0",
5
5
  "description": "Infrastructure and quality tooling for developer workflows",
6
6
  "license": "MIT",
7
7
  "bin": {
@@ -3,10 +3,3 @@ names = [
3
3
  "align",
4
4
  "decision-help",
5
5
  ]
6
-
7
- [orchestrator]
8
- names = [
9
- "claude/orchestrator-handoff",
10
- "claude/orchestrator-resume",
11
- "claude/orchestrator-sweep",
12
- ]
@@ -37,3 +37,47 @@ Does not govern:
37
37
  ## Sections
38
38
 
39
39
  Use `## Personality`, `## Color`, `## Typography`, `## Spacing`, `## Borders`, `## Motion`, and `## Iconography`. The token tables carry fixed headers the renderer reads.
40
+
41
+ ## Template
42
+
43
+ The column headers are the strings the renderer parses, read by exact key, so they stay verbatim. Row names are not. Each is slugged into the variable name it emits, which leaves a project free to rename a row, add one, or drop one it has no use for.
44
+
45
+ ```markdown
46
+ # Design
47
+
48
+ ## Personality
49
+
50
+ <one paragraph on voice, tone, and the feeling a user should have>
51
+
52
+ ## Color
53
+
54
+ | Role | Intent | Value |
55
+ | ------ | ---------------- | ------- |
56
+ | <role> | <what it is for> | <value> |
57
+
58
+ ## Typography
59
+
60
+ | Role | Family | Weight | Size | Line height |
61
+ | ------ | -------- | -------- | ------ | ----------- |
62
+ | <role> | <family> | <weight> | <size> | <height> |
63
+
64
+ ## Spacing
65
+
66
+ | Step | Multiplier | Value |
67
+ | ------ | ------------ | ------- |
68
+ | <step> | <multiplier> | <value> |
69
+
70
+ ## Borders
71
+
72
+ | Role | Radius | Width | When used |
73
+ | ------ | -------- | ------- | ----------- |
74
+ | <role> | <radius> | <width> | <when used> |
75
+
76
+ ## Motion
77
+
78
+ <whether motion is used at all, and if so the default duration and easing>
79
+
80
+ ## Iconography
81
+
82
+ <style, source library, and whether custom icons are allowed>
83
+ ```
@@ -122,3 +122,31 @@ Reference the context entry by path when a reader needs the mechanism. The diagr
122
122
  - That watch samples thinly. It sees the one or two paths an entry happened to cite and nothing else, so a change elsewhere leaves the entry looking current. `verified` is what covers the gap, and an entry whose date sits far behind the branch is due a read whether or not anything flagged it.
123
123
  - The explanation paragraphs around a Mermaid block are prose and follow `prose.md`. The fenced block itself is not, which is why a check scoped to prose is the wrong thing to rely on for what sits inside it.
124
124
  - The punctuation bans still apply to node and subgraph labels, and nothing checks them there. An em dash in a label passes every gate the repository has, so read the labels before shipping the entry.
125
+
126
+ ## Template
127
+
128
+ The filename and the `category` value both come from Entry kinds and are fixed per kind. A stub nobody has drawn yet carries `TODO: never verified` in place of the SHA and date. The node names and labels inside the fence are placeholders, written bare because Mermaid reads an angle bracket as markup.
129
+
130
+ ````markdown
131
+ ---
132
+ title: <what the entry answers>
133
+ description: <which question it settles and which source signal drives it>
134
+ category: <the kind, verbatim from Entry kinds>
135
+ verified: <short-sha> <YYYY-MM-DD>
136
+ ---
137
+
138
+ # <what the entry answers>
139
+
140
+ ```mermaid
141
+ flowchart TB
142
+ accTitle: what the diagram answers
143
+ accDescr: the structure in one sentence for a reader who cannot see the render
144
+
145
+ a[first part] --> b[second part]
146
+ b --> c[third part]
147
+ ```
148
+
149
+ <One paragraph leading with what the diagram shows.>
150
+
151
+ <One paragraph on why this shape was chosen and what was rejected, where the choice was non-obvious. Name one or two code paths the reader can open.>
152
+ ````
@@ -7,7 +7,7 @@ description: Scan run against finished text leaving through a channel no automat
7
7
 
8
8
  ## Scope
9
9
 
10
- Governs the scan an author runs against finished text on its way out, and the responses available when a source it reaches for cannot be read. It is an attribute standard rather than a document-type one, so it applies to any text leaving through a channel no automated check covers.
10
+ Governs the scan an author runs against finished text on its way out, and the responses available when a source it reaches for cannot be read. It is an attribute standard rather than a document-type one, so it applies to any text leaving through a channel no automated check covers, and it carries no template because a scan has no document to shape.
11
11
 
12
12
  Does not govern:
13
13
 
package/standards/slug.md CHANGED
@@ -7,7 +7,7 @@ description: Transform from a git branch name to a slug, and the three responses
7
7
 
8
8
  ## Scope
9
9
 
10
- Governs the transform from a git branch name to the slug a surface carries in a derived name, and the responses available when the transform returns empty. It is an attribute standard rather than a document-type one, so it applies wherever a branch-derived name is produced.
10
+ Governs the transform from a git branch name to the slug a surface carries in a derived name, and the responses available when the transform returns empty. It is an attribute standard rather than a document-type one, so it applies wherever a branch-derived name is produced, and it carries no template because a string has no document to shape.
11
11
 
12
12
  Does not govern:
13
13
 
@@ -91,3 +91,60 @@ A standard failing these questions is non-conforming even when it satisfies ever
91
91
  - When shown, label them `### Correct` and `### Incorrect` with an inline `# reason` on each entry
92
92
  - Keep to two or three entries. Show the pattern, not a catalog.
93
93
  - Keep each entry a short one-liner or command. Do not write multi-line correct and incorrect function blocks.
94
+
95
+ ## Template
96
+
97
+ - Carry one fenced template of the document the standard governs, so an author copies a shape instead of reconstructing it from prose.
98
+ - Bind this to a standard governing a document type. An attribute standard governs a scan, a string, or a label rather than a file, so it has no document to template and carries none.
99
+ - State that exemption in the sentence declaring the standard an attribute standard. An exemption left to inference reads as an omission, and the next author writes a template that teaches nothing.
100
+ - Place the template below the rules it satisfies, under a `## Template` heading or inside the section holding those rules. A reader arrives at it having already read what each part means.
101
+ - Show the skeleton alone: every required section, one placeholder line for what each holds. A full worked document is a second document to maintain.
102
+ - Write placeholders in angle brackets rather than copying a real document. A copied file goes stale, and its backticked filenames read as citations to anything parsing the standard.
103
+ - Switch to a bare word where the fenced language reads `<` as syntax of its own, as Mermaid and HTML do, and say in the line above the fence that the names are placeholders. A template that does not parse in its own language teaches a shape the author cannot run.
104
+ - Carry any header, key, or label a consuming tool parses verbatim. The template is the only place an author learns which strings are load-bearing, since prose calling them fixed does not say what they are.
105
+ - Treat the template as authoritative where it and the prose disagree. An author copies the block, so a contradiction ships as the block, and naming the winner turns a drift into a visible defect rather than a silent one.
106
+
107
+ ````markdown
108
+ ---
109
+ title: <Document type> reference
110
+ description: <one line naming what this standard covers>
111
+ ---
112
+
113
+ # <Document type> reference
114
+
115
+ Applies to `<path/to/document>`. <One line on what the document is for and when it changes.>
116
+
117
+ ## Scope
118
+
119
+ Governs `<path/to/document>`: <the aspects this standard sets>.
120
+
121
+ Does not govern:
122
+
123
+ - <excluded concern>: `<sibling>.md`
124
+ - <excluded concern>: <the surface that owns it>
125
+
126
+ ## What a working <document type> looks like
127
+
128
+ A <document type> works when <the task a reader completes from it alone>:
129
+
130
+ - <question the document must answer>
131
+ - <question the document must answer>
132
+
133
+ A <document type> failing these is non-conforming even when it satisfies every shape rule below.
134
+
135
+ ## Frontmatter
136
+
137
+ - `title` (required): <casing, and what it names>
138
+ - `description` (required): <what the one line covers>
139
+
140
+ ## <Shape rule group>
141
+
142
+ - <imperative rule, one concern per bullet>
143
+ - <imperative rule, one concern per bullet>
144
+
145
+ ## Template
146
+
147
+ ```markdown
148
+ <the skeleton of the governed document, placeholders throughout>
149
+ ```
150
+ ````
@@ -9,7 +9,7 @@ Two namespaces, kept separate.
9
9
 
10
10
  ## Scope
11
11
 
12
- Governs the two version namespaces, phase labels and semver tags, and which surfaces each may appear on. It is an attribute standard rather than a document-type one, so it applies wherever either namespace is written.
12
+ Governs the two version namespaces, phase labels and semver tags, and which surfaces each may appear on. It is an attribute standard rather than a document-type one, so it applies wherever either namespace is written, and it carries no template because a label has no document to shape.
13
13
 
14
14
  Does not govern:
15
15
 
@@ -75,3 +75,38 @@ Reference the context entry from the wireframe by path when a reader needs the m
75
75
 
76
76
  - When a surface's layout or interaction changes, update its wireframe file in the same PR. A wireframe showing a defunct layout is worse than none.
77
77
  - The Behavior and Copy prose around an ASCII block is prose and follows `prose.md`. The fenced block itself is not, so a check scoped to prose is the wrong thing to rely on for what sits inside it.
78
+
79
+ ## Template
80
+
81
+ One H2 per layout variant, each holding its own fence. A surface with a single layout carries one.
82
+
83
+ ````markdown
84
+ ---
85
+ title: <Surface name>
86
+ description: <when and where the surface appears>
87
+ ---
88
+
89
+ # <Surface name>
90
+
91
+ ## <what triggers this variant>
92
+
93
+ ```plaintext
94
+ +------------------------------------------+
95
+ | <region> ← <its role> |
96
+ +------------------------------------------+
97
+ | |
98
+ | <region> ← <its role> |
99
+ | |
100
+ +------------------------------------------+
101
+ ```
102
+
103
+ ## Copy
104
+
105
+ - <on-screen text, word for word>
106
+ - <text the surface templates>: <marked so a reader does not read it as final>
107
+
108
+ ## Behavior
109
+
110
+ - <what the visitor does, and what changes on screen>
111
+ - <what each reachable state looks like>
112
+ ````