@erclx/aitk 3.51.0 โ 3.51.1
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-autoship/REQUIREMENT.md +1 -0
- package/claude/skills/claude-autoship/SKILL.md +2 -0
- package/claude/skills/claude-docs/REQUIREMENT.md +2 -1
- package/claude/skills/claude-docs/SKILL.md +4 -5
- package/claude/skills/claude-review/SKILL.md +1 -1
- package/docs/ai-workflow.md +1 -1
- package/package.json +1 -1
|
@@ -17,6 +17,7 @@ Review is the step that varies most. It gets skipped on a diff that needed one,
|
|
|
17
17
|
- Give every step a stop condition, and leave the code on the branch and the receipts on disk at each one
|
|
18
18
|
- Classify the changed-file list by path as well as by extension, so informational prose skips a code review with no signal on it and executable prose still reaches one
|
|
19
19
|
- Split findings by origin, stopping on a critical or should-fix one the branch inherited and repairing one this run caused
|
|
20
|
+
- Own the review receipt's lifetime, since this chain writes it, cites it in its own closing block, and is the only body that can read whether the step keeping it is still using it
|
|
20
21
|
- Delegate the ship sequence to `git-ship` rather than restating it, and name only what this chain adds to it
|
|
21
22
|
- Open the pull request as a draft before the continuous integration watch begins, since a pull request marked after it is mergeable for the length of the run
|
|
22
23
|
- Name the recovery for the stop it took, since the value of stopping is that the user knows where to resume
|
|
@@ -152,6 +152,8 @@ Read origin as causation rather than authorship. Staleness this run induced in a
|
|
|
152
152
|
|
|
153
153
|
Bound the repair at one pass, the way Step 3 bounds verify. When that re-read shows the finding still standing, stop: `โ A self-introduced finding survived one fix pass. See .claude/review/branch/review-<slug>.md. Fix and run /git-ship.`
|
|
154
154
|
|
|
155
|
+
This chain owns the receipt's lifetime, which is what makes the Output block's citation resolve on a run that reaches it. `claude-docs` used to delete the current slug's receipt while running under Step 7 below, so the closing line named a file the same run had already removed. That sweep now reaches only reports whose branch is gone, which collects this one a branch later rather than during the run that wrote it. The cost is one receipt per live branch left in `.claude/review/branch/`, bounded by the branch count rather than by the lifetime of the checkout.
|
|
156
|
+
|
|
155
157
|
## Step 7: ship
|
|
156
158
|
|
|
157
159
|
Invoke `aitk:git-ship`. That body owns the sequence, being the verify gate, memory capture, both doc syncs, staging, the commit grouping, the branch rename, the pull request, the CI watch, and the scoped memory review, along with the reason each step sits where it does. This step used to restate that list and the two drifted apart with nothing comparing them, so read the order there and never here.
|
|
@@ -13,7 +13,7 @@ A decision's verification anchor has the same shape of gap in the other directio
|
|
|
13
13
|
|
|
14
14
|
A handoff file has the same shape of gap as an unmarked outcome. A page a learning workspace produced and an operator already picked a destination for sits in gitignored scratch until something lands it, and the session that produced it is gone by the time a branch exists to carry the write. Left unfolded it reads as promoted while the destination holds nothing.
|
|
15
15
|
|
|
16
|
-
The receipt half of that sweep was missing entirely. A review receipt
|
|
16
|
+
The receipt half of that sweep was missing entirely. A review receipt was deleted per shipped branch and a memory-review receipt was skipped, because the exclusion protecting the checklist and audit prefixes caught a third by accident. Nothing but an operator asking collected it, and a collection that waits on someone remembering to ask is one a folder outgrows, so the skipped population grew per shipped branch and never shrank until it was most of the folder.
|
|
17
17
|
|
|
18
18
|
The trigger side carries a gap of its own. "Sync the docs" names either corpus to the person saying it, so a description leaving its corpus to the opening clause alone competes with its public-facing sibling on nothing the routing field states, and the planning surface the request was about goes untouched.
|
|
19
19
|
|
|
@@ -31,6 +31,7 @@ The trigger side carries a gap of its own. "Sync the docs" names either corpus t
|
|
|
31
31
|
- Scan every memory-review receipt rather than the one matching this slug, since the skill that writes them runs after this one in the ship chain and a slug is unique per feature
|
|
32
32
|
- Collect a memory-review receipt whose items are all decided, folding each skip into its memory entry first, since a declined item is recorded nowhere else and a promoted one is already in git
|
|
33
33
|
- Leave a memory-review receipt holding a pending item, and report the count. A branch shipping is not an operator deciding what the receipt proposed.
|
|
34
|
+
- Leave the current branch's review receipt alone, since the chain that wrote it cites it in its own closing line and this skill cannot read whether that citation is still live
|
|
34
35
|
- Land each block of a promotion handoff at the destination its heading names, then delete the file so a later run does not fold it twice
|
|
35
36
|
- Take a promotion destination as already decided, since the operator confirmed it where the page was produced
|
|
36
37
|
|
|
@@ -245,15 +245,15 @@ Write the retarget as a markdown link, `Plan: [feature-<slug>](../plans/archive/
|
|
|
245
245
|
|
|
246
246
|
### Reviews
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
Leave the current branch's review receipt where it is. `claude-autoship` Step 6 keeps minor findings in `.claude/review/branch/review-<slug>.md` and its closing block hands the reader that path, so deleting it here removes the file the chain that invoked this skill is still citing. Seven runs recorded that collision across two days before a sandbox fixture asserted the receipt and could pass only on a run the chain stopped early.
|
|
249
249
|
|
|
250
|
-
|
|
250
|
+
The body that writes a receipt owns its lifetime. This skill sweeps on behalf of whatever called it and has no way to read whether a file is still in use, where the chain that wrote this one cites it in its own output and knows. What reaps it is the branch sweep below, one branch later, once the branch it names is gone.
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
Sweep the branch reports this session never opened. List `.claude/review/branch/review-*.md`, run the slug transform in `${CLAUDE_SKILL_DIR}/../../standards/slug.md` over every name `git branch --format='%(refname:short)'` prints, and delete a report whose slug matches none of them. Take the names from that format rather than from `git branch --list`, which marks the current branch with `* ` and a branch checked out in another worktree with `+ `, so a transform reading the marked lines as written turns a live branch into a slug nothing matches and sweeps a report a sibling worktree is still working from. A branch report is read once, by the session addressing it, and the durable record of what a review found is the comment `claude-pr-review` posts on the pull request, so a report outliving its branch is holding nothing. Skipping this leaves them accumulating for the life of the checkout, since a slug is unique per feature and no later branch ever looks for one.
|
|
253
253
|
|
|
254
254
|
What that removes is a local-only review on a branch deleted before it opened a pull request. `claude-review` says so where a reader meets the report, and the sweep runs anyway rather than keeping every report against the one case, since nothing else ever clears them.
|
|
255
255
|
|
|
256
|
-
Memory receipts sweep board-wide, like
|
|
256
|
+
Memory receipts sweep board-wide, like both halves of this step above them. Scan every `.claude/review/memory/memory-review-*.md`, not only the one matching this slug. `claude-memory-review` writes its receipt after this skill has run in every ship chain, so a sweep keyed on the current slug looks for a file that does not exist yet, and no later branch looks for it either because a slug is unique per feature. Scanning the folder is what makes the sweep fire at all.
|
|
257
257
|
|
|
258
258
|
For each receipt, count the H2 items still marked ๐ pending:
|
|
259
259
|
|
|
@@ -268,7 +268,6 @@ Output one line per file swept:
|
|
|
268
268
|
|
|
269
269
|
- `๐ฆ Archived: <path>` for a plan moved into `.claude/plans/archive/`
|
|
270
270
|
- `โญ Kept: <path>, still cited by <task-file>` for a plan another live task shares
|
|
271
|
-
- `๐งน Deleted: <path>` for a swept branch report
|
|
272
271
|
- `๐งน Deleted: <path>, branch gone` for a branch report whose branch no longer exists
|
|
273
272
|
- `๐งน Deleted: <path>, folded <n> skips` for a swept memory receipt
|
|
274
273
|
- `โญ Kept: <path>, <n> items pending` for a memory receipt still holding decisions
|
|
@@ -128,7 +128,7 @@ If there are no findings, write `โ
No findings.` to the file with a timestamp.
|
|
|
128
128
|
|
|
129
129
|
The `.claude/review/` directory is gitignored. Do not stage or commit the file.
|
|
130
130
|
|
|
131
|
-
The report is disposable.
|
|
131
|
+
The report is disposable. It outlives the ship chain that reads it, and `claude-docs` sweeps it once the branch it names is gone, because the durable record of what a review found is the comment `claude-pr-review` posts on the pull request. A review run on a branch that never opens one leaves nothing behind once that branch is gone, so fold anything worth keeping into the pull request body or a task finding while the report is still on disk.
|
|
132
132
|
|
|
133
133
|
### Chat output
|
|
134
134
|
|
package/docs/ai-workflow.md
CHANGED
|
@@ -103,7 +103,7 @@ A person points it at a private repository once and both verbs refuse until they
|
|
|
103
103
|
|
|
104
104
|
A plan that ships is archived, never deleted. `aitk:claude-docs` moves it to `.claude/plans/archive/` and retargets the task file's `Plan:` line at the new location, so a completed task still leads to the reasoning behind it. An archive sits inside the record folder it archives rather than beside it, so one ignore entry and one backed-folder entry cover a record and everything it has retired. The folder is gitignored, which is why a deleted plan had no recovery path. A plan cited by more than one task stays put until the last of them closes, since moving it early would strand every other pointer.
|
|
105
105
|
|
|
106
|
-
A branch review report takes the other route and is swept rather than archived. `claude-review` writes it to `.claude/review/branch/`, the session addressing it reads it once, and the durable record of what a review found is the comment `claude-pr-review` posts on the pull request, so `claude-docs` deletes the report
|
|
106
|
+
A branch review report takes the other route and is swept rather than archived. `claude-review` writes it to `.claude/review/branch/`, the session addressing it reads it once, and the durable record of what a review found is the comment `claude-pr-review` posts on the pull request, so `claude-docs` deletes any report whose branch is gone. The body that writes a report owns how long it lives, which leaves the shipping branch's own report on disk through the run that cites it and collects it a branch later. What that loses is a local-only review on a branch that never opened a pull request, which is why the report says so where a reader meets it.
|
|
107
107
|
|
|
108
108
|
The plans sweep reads the whole board rather than the tasks the session touched. It is the one place the skill reaches past its own rule against editing a task file the session did not change, because a task that closed while an earlier run missed its archive is exactly what the sweep exists to clear. Reaching it is safe: the archive moves the plan and retargets the pointer in the same pass, so an untouched task ends up with a working link rather than a broken one.
|
|
109
109
|
|