@erclx/aitk 3.43.2 → 3.45.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/{toolkit-cli → aitk-cli}/REQUIREMENT.md +4 -4
- package/claude/skills/{toolkit-cli → aitk-cli}/SKILL.md +1 -1
- package/claude/skills/{toolkit-feedback → aitk-feedback-file}/REQUIREMENT.md +3 -3
- package/claude/skills/{toolkit-feedback → aitk-feedback-file}/SKILL.md +2 -2
- package/claude/skills/{toolkit-triage → aitk-feedback-triage}/REQUIREMENT.md +3 -3
- package/claude/skills/{toolkit-triage → aitk-feedback-triage}/SKILL.md +3 -3
- package/claude/skills/{toolkit-operator → aitk-operator}/REQUIREMENT.md +3 -3
- package/claude/skills/{toolkit-operator → aitk-operator}/SKILL.md +3 -3
- package/claude/skills/aitk-rollout/REQUIREMENT.md +59 -0
- package/claude/skills/aitk-rollout/SKILL.md +147 -0
- package/claude/skills/{claude-screencast → aitk-screencast}/REQUIREMENT.md +3 -3
- package/claude/skills/{claude-screencast → aitk-screencast}/SKILL.md +2 -2
- package/claude/skills/{claude-slides-draft → aitk-slides-draft}/REQUIREMENT.md +3 -3
- package/claude/skills/{claude-slides-draft → aitk-slides-draft}/SKILL.md +1 -1
- package/claude/skills/{cli-script → bash-cli-script}/REQUIREMENT.md +2 -2
- package/claude/skills/{cli-script → bash-cli-script}/SKILL.md +2 -2
- package/claude/skills/bash-script/REQUIREMENT.md +2 -2
- package/claude/skills/bash-script/SKILL.md +2 -2
- package/claude/skills/ci-workflow/REQUIREMENT.md +1 -1
- package/claude/skills/claude-memory-review/SKILL.md +2 -2
- package/claude/skills/claude-memory-review/references/receipt-format.md +1 -1
- package/claude/skills/claude-seed-sync/REQUIREMENT.md +1 -1
- package/claude/skills/claude-seed-sync/SKILL.md +1 -1
- package/claude/skills/git-issue/REQUIREMENT.md +2 -2
- package/claude/skills/git-issue/SKILL.md +1 -1
- package/claude/skills/{restate → restate-plainly}/REQUIREMENT.md +2 -2
- package/claude/skills/{restate → restate-plainly}/SKILL.md +2 -2
- package/claude/skills/setup-init/REQUIREMENT.md +1 -1
- package/claude/skills/setup-init/SKILL.md +1 -1
- package/claude/skills/write-human/REQUIREMENT.md +1 -1
- package/claude/skills/write-human/SKILL.md +1 -1
- package/docs/agents/demo.md +1 -1
- package/docs/agents/index.md +1 -0
- package/docs/agents/overview.md +2 -2
- package/docs/agents/scripting.md +1 -1
- package/docs/agents/sessions.md +11 -5
- package/docs/agents/targets.md +83 -0
- package/docs/ai-workflow.md +17 -16
- package/docs/target-projects.md +1 -1
- package/governance/rules/lang/120-bash.md +1 -1
- package/package.json +1 -1
- package/scripts/core/regen-tooling-paths.sh +1 -1
- package/scripts/core/verify.sh +1 -1
- package/src/claude/cases/authoring.ts +2 -2
- package/src/claude/cases/claude-workflow.ts +2 -2
- package/src/claude/cases/setup.ts +14 -6
- package/src/cli.ts +3 -0
- package/src/commands/demo.ts +1 -1
- package/src/commands/sessions.ts +24 -8
- package/src/commands/targets.ts +319 -0
- package/src/demo/beats.ts +1 -1
- package/src/sessions/claim.ts +7 -0
- package/src/sync/stamp.ts +9 -0
- package/src/targets/pulls.ts +250 -0
- package/src/targets/registry.ts +161 -0
- package/src/targets/resolve.ts +145 -0
- package/src/targets/sweep.ts +246 -0
- package/standards/issue.md +1 -1
- /package/claude/skills/{cli-script → bash-cli-script}/references/template.md +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-cli
|
|
3
3
|
description: Why the overwrite contract is stated before a sync runs, and why the skill reads rather than executes
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk cli requirement
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
@@ -15,7 +15,7 @@ The inverse failure is quieter. A session that assumes a sync will pick up a cha
|
|
|
15
15
|
|
|
16
16
|
Being reachable is a separate problem from being right. This is a pure reference whose moment happens inside another skill's run, so nothing brings it up unless a body names it. Three sibling requirement files named it and routed nothing, because Claude Code loads `SKILL.md` as the entry and never opens the sibling. A route lives in a body or it does not exist, and a fourth requirement mention would repeat the same defect.
|
|
17
17
|
|
|
18
|
-
The two bodies now carrying an inline pointer are `claude-seed-sync` and `
|
|
18
|
+
The two bodies now carrying an inline pointer are `claude-seed-sync` and `aitk-operator`, each at the point it runs or prints an overwriting command.
|
|
19
19
|
|
|
20
20
|
## Must
|
|
21
21
|
|
|
@@ -36,6 +36,6 @@ The two bodies now carrying an inline pointer are `claude-seed-sync` and `toolki
|
|
|
36
36
|
|
|
37
37
|
## Out of scope
|
|
38
38
|
|
|
39
|
-
- Executing the sync, which the user runs or `
|
|
39
|
+
- Executing the sync, which the user runs or `aitk-operator` routes
|
|
40
40
|
- Reconciling a customized seed section by section: `claude-seed-sync`
|
|
41
41
|
- Deciding which stack, rule, or standard a project should install, which the setup skills resolve from live catalogs
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-cli
|
|
3
3
|
description: Reference for what aitk sync and install commands overwrite, merge, or leave untouched in a target project. Use before running `aitk tooling`, `aitk standards`, `aitk claude sync`, or `aitk init`, or when asked "will this overwrite my changes". Do NOT use to run the commands, only to know their effect.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-feedback-file
|
|
3
3
|
description: Why a toolkit defect is reported from session context alone, and what shipping through the CLI replaces
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk feedback file requirement
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
@@ -35,6 +35,6 @@ The last failure is the session's own effort. Asked to report, a session starts
|
|
|
35
35
|
## Out of scope
|
|
36
36
|
|
|
37
37
|
- Fixing the defect, which happens in the toolkit repository against its own source
|
|
38
|
-
- Draining the queue this fills: `
|
|
38
|
+
- Draining the queue this fills: `aitk-feedback-triage`
|
|
39
39
|
- Filing an issue against the current project: `git-issue`
|
|
40
40
|
- Complaints about tooling the toolkit does not own
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-feedback-file
|
|
3
3
|
description: Format a paste-back report about something broken, missing, or off in aitk and write it directly to the toolkit's `.claude/review/feedback/` folder via `aitk feedback`. Use when asked to "send this to the toolkit", "report this to aitk", "file toolkit feedback", or "give the toolkit feedback about X". Do NOT use for general complaints about other tooling, IDE issues, or in-project bugs that do not implicate aitk surfaces.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk feedback file
|
|
7
7
|
|
|
8
8
|
Format a `## Toolkit feedback` block from the current session, then ship it to the toolkit repo without manual copy-paste.
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-feedback-triage
|
|
3
3
|
description: Why the feedback queue is read from GitHub rather than local scratch, and why triage routes instead of implementing
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk feedback triage requirement
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
@@ -35,6 +35,6 @@ The queue also fails to drain even when the work ships. A fix merged with no lin
|
|
|
35
35
|
|
|
36
36
|
## Out of scope
|
|
37
37
|
|
|
38
|
-
- Filing new feedback: `
|
|
38
|
+
- Filing new feedback: `aitk-feedback-file`
|
|
39
39
|
- Writing the plan a plan-worthy issue needs: `claude-feature`
|
|
40
40
|
- Triage of issues carrying any other label, which surface here by design only under the feedback label
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Triage open GitHub issues labeled `feedback` in the toolkit repo. List them, pick one, classify it as a direct fix or plan-worthy work, route to the right skill, and link the issue for close-out. Use when asked to "triage toolkit feedback", "work through the feedback issues", "process feedback issues", or "what feedback is open". Do NOT use to file new feedback (that is `
|
|
2
|
+
name: aitk-feedback-triage
|
|
3
|
+
description: Triage open GitHub issues labeled `feedback` in the toolkit repo. List them, pick one, classify it as a direct fix or plan-worthy work, route to the right skill, and link the issue for close-out. Use when asked to "triage toolkit feedback", "work through the feedback issues", "process feedback issues", or "what feedback is open". Do NOT use to file new feedback (that is `aitk-feedback-file`), or for general GitHub issue triage unrelated to toolkit feedback.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk feedback triage
|
|
7
7
|
|
|
8
8
|
Consume the feedback queue that `aitk feedback --github` fills. Turn an open `feedback` issue into a scoped fix or a plan, then link the issue so merge closes it.
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-operator
|
|
3
3
|
description: Why the toolkit has one front door, what orienting on live catalogs prevents, and where it hands off
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk operator requirement
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
@@ -56,6 +56,6 @@ The last failure is a section no route reaches. `## Route` maps an intent or a d
|
|
|
56
56
|
- First-time scaffold of a fresh project: `setup-init`
|
|
57
57
|
- Seed and preamble drift in installed files: `claude-seed-sync`
|
|
58
58
|
- Governance rule install and index bootstrap: `setup-gov` and `setup-indexes`
|
|
59
|
-
- What a given sync overwrites once it runs: `
|
|
59
|
+
- What a given sync overwrites once it runs: `aitk-cli`
|
|
60
60
|
|
|
61
61
|
That last contract carries no row for the governance install this skill routes to, so the overwrite `Must` above reads nothing at one of its own destinations. The row belongs to the skill owning the table. This file records the silence rather than answering it, since a rule written here for a silent contract teaches a session that silence means safe.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-operator
|
|
3
3
|
description: Front door to the toolkit in a target project. Orients on the toolkit's own docs and live `aitk` catalogs, then runs or routes any toolkit operation from a plain-language intent. Use when you want one entry point instead of picking a specific setup or sync skill, or when asked to "use the toolkit", "what can the toolkit do", "sync my standards", "install rules", or "help me set up this project". User-invoked only. Defers first-time scaffold to setup-init and seed drift to claude-seed-sync.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
#
|
|
7
|
+
# Aitk operator
|
|
8
8
|
|
|
9
9
|
Front door to the toolkit. Orient first, then run the simplest operation that satisfies the intent or hand off to the owning skill. Never bypass `aitk` to edit managed files by hand.
|
|
10
10
|
|
|
@@ -90,7 +90,7 @@ The last row is a skill handoff rather than a command, so `## Execute` does not
|
|
|
90
90
|
For operations this skill runs directly:
|
|
91
91
|
|
|
92
92
|
- Read the catalog first with `aitk <domain> list --json`, then match against project context
|
|
93
|
-
- Read the `
|
|
93
|
+
- Read the `aitk-cli` skill before any install or sync, and warn the user by name about each surface it lists as overwritten. A command name says nothing about what it does to a file already there, and this skill is the one running it.
|
|
94
94
|
- Run the CLI with `AITK_NON_INTERACTIVE=1` so it skips prompts. The tool permission dialog is the confirmation gate.
|
|
95
95
|
- Report the command run and what changed. Emit the full relative path for any file written.
|
|
96
96
|
- Re-run `aitk sync --check . --json` after any operation that wrote, and compare it against the report `## Diagnose` read before acting
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aitk-rollout
|
|
3
|
+
description: Why one skill carries both roles of an outbound wave, and where its boundary sits against the seven skills that operate inside a target
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Aitk rollout requirement
|
|
7
|
+
|
|
8
|
+
## Gap
|
|
9
|
+
|
|
10
|
+
Without this skill, a toolkit change reaches its consuming projects by hand. One measured pass across four targets took four hand-written `cd <path> && claude --bg` invocations, each carrying a brief composed by hand from that project's review. Nothing enumerated the targets, nothing derived the brief, and nothing applied a convention across the set.
|
|
11
|
+
|
|
12
|
+
The conventions were already settled and reached none of the four. The branch and title shape was answered and reconfirmed, and the four pull requests carried four titles across two scopes, neither of them the settled one, with three naming the toolkit in the half of the shape that withholds it. A convention nothing applies holds only where somebody remembers it.
|
|
13
|
+
|
|
14
|
+
The return leg dead-ends outside this repository. A review that posts a finding on a target's pull request has to reach the session holding that branch, and every dispatch guessed instead. All four sessions that opened those pull requests were still alive holding their worktrees hours later, two fresh addressers were sent over them, one refused on the worktree lock, and one cut a second worktree on the same branch, which would have put two sessions pushing to one ref.
|
|
15
|
+
|
|
16
|
+
A wave ends without telling the operator what to do. Reading where four targets stood took a hand-written shell loop over four repositories, re-run three times as reviews landed, and every status line it produced named a repository and a number and no link. Merging is the one act only the operator performs, and they reached each result by navigating to it by hand.
|
|
17
|
+
|
|
18
|
+
A worker's reply reads as done when it is not. One pull request's fix for two minor findings closed both and introduced four more, all in prose the fix added, including a claim about a workflow that runs on a trigger it does not declare. A loop that closes a target on the worker's word merges that.
|
|
19
|
+
|
|
20
|
+
## Must
|
|
21
|
+
|
|
22
|
+
- Enumerate the targets from the record the install writes, with the sweep as the fallback and its stated bound read before any count is trusted, since a hand census of this population was wrong in both directions at once
|
|
23
|
+
- Write the branch and the title from a fixed shape rather than leaving either to the dispatched session, since the settled convention reached none of four hand-driven repairs
|
|
24
|
+
- Carry one line in each target's body naming the toolkit as the source and where to change the content upstream, since a reader in that repository has no other route to the fact that a local edit is lost at the next wave
|
|
25
|
+
- Name no toolkit version in any target's body, since the install stamp in that target already records `syncedAt` and a sha256 per synced file and a version string is the copy that goes stale
|
|
26
|
+
- Dispatch one worker per target, with the branch checked as unclaimed in that target before the launch
|
|
27
|
+
- Branch from the clone that is current rather than from whichever the record names first, since a working copy answers what that machine last pulled rather than what the target holds
|
|
28
|
+
- Resolve who holds a branch before dispatching an addresser, and dispatch a fresh one only where the resolver reports the owning session gone
|
|
29
|
+
- Address every finding whatever its severity, and close a target only when a narrow re-review posts `## Review closed`
|
|
30
|
+
- Name a pull request URL on every line that reports a target, at dispatch and at hand-back both
|
|
31
|
+
- Close a wave by naming every target with its URL, review heading, CI state, and what is owed, the targets needing nothing included
|
|
32
|
+
|
|
33
|
+
## Must not
|
|
34
|
+
|
|
35
|
+
- Merge anything, in either role, at any size. The operator holds that gate over every role rather than as a setting on a wave.
|
|
36
|
+
- Reimplement what `aitk targets list`, `aitk targets pulls`, or `aitk sessions list --repository` already answers. Each is a shipped verb this body reads under `AITK_NON_INTERACTIVE=1`.
|
|
37
|
+
- Restate the in-target diagnosis and routing that `aitk-operator` owns, or the review, address, and worktree procedures the three skills named below own
|
|
38
|
+
- Read or write this repository's task board. The board is `claude-orchestrate`'s subject and a wave is not a row on it.
|
|
39
|
+
- Bound the review and address loop with a count. The bound was declined with its failure mode stated, and what guards the loop is the orchestrator reviewing every round itself.
|
|
40
|
+
- Edit a managed file in a target by hand rather than through the `aitk` verb that owns it
|
|
41
|
+
- Be a skill nothing invokes but its author typing the name. Nothing else routes to it, since it carries `disable-model-invocation: true` and no sibling body names it, so a wave that only ever runs when somebody types the name is the signal that the loop never replaced the hand-driven pass it was built against.
|
|
42
|
+
|
|
43
|
+
## Guards
|
|
44
|
+
|
|
45
|
+
- `gh` absent: stop, since no target's pull request can be read or opened
|
|
46
|
+
- The target index reads as unknown with no sweep behind it: stop and name the reason, rather than reporting a population of zero
|
|
47
|
+
- The claim check refuses or comes back with either readability flag false: treat the target as unverified rather than clear and hand it to the operator
|
|
48
|
+
- Every clone of a target is behind its remote: refuse that target rather than branching from a stale base
|
|
49
|
+
- More than one session holds a target's branch: report the ambiguity and stop, rather than sending findings to whichever row came first
|
|
50
|
+
|
|
51
|
+
## Out of scope
|
|
52
|
+
|
|
53
|
+
- This repository's own board, queue, and worker dispatch, which `claude-orchestrate` holds
|
|
54
|
+
- The role a session building one branch under one plan in this repository takes, which `claude-worker` holds. A rollout worker does not take it, since that body resolves session scratch against a main worktree root a target does not carry.
|
|
55
|
+
- Entering the worktree, which `claude-worktree` owns, including the branch collision tests it runs before entry
|
|
56
|
+
- Diagnosing what a target is behind on and routing each finding to its command, which `aitk-operator` owns
|
|
57
|
+
- Posting a review to a pull request and moving its heading, which `claude-pr-review` owns
|
|
58
|
+
- Answering a posted review inside the target, which `claude-address-review` owns
|
|
59
|
+
- The commit and the pull request mechanics, which the `git-*` family owns
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aitk-rollout
|
|
3
|
+
description: Takes one toolkit change out to every consuming project and brings each to a mergeable pull request. Carries an orchestrator role that enumerates the targets, dispatches a worker into each, reviews every pull request, and routes what each review posts, and a worker role that builds inside one target and answers its review. Use when asked to "roll this out to the targets", "take this change to every project", "run a rollout wave", "update the consuming projects", or when a session was dispatched into a target by a wave. Do NOT use for this repository's own board, which is `claude-orchestrate`, and merge nothing.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Aitk rollout
|
|
8
|
+
|
|
9
|
+
This skill runs outward. Every other skill for operating on a target assumes the session already sits inside it, and this one starts in the toolkit and reaches the projects the toolkit installed into.
|
|
10
|
+
|
|
11
|
+
One wave takes one toolkit change to every target and ends with a pull request per target for a person to merge. Two roles carry three phases over one target list. The orchestrator enumerates, dispatches, reviews, and routes. The worker holds one target from the worktree entry to the merge of the branch it opened.
|
|
12
|
+
|
|
13
|
+
`claude-orchestrate` owns this repository's own board and is a different subject. Read nothing from `.claude/tasks/` here and write nothing to it.
|
|
14
|
+
|
|
15
|
+
## Take a role before anything else
|
|
16
|
+
|
|
17
|
+
- The invocation or the launch prompt names the worker role, a target path, or both: worker. Skip to `## The worker role` and run no phase above it.
|
|
18
|
+
- Neither is named: orchestrator. Run the three phases in order.
|
|
19
|
+
|
|
20
|
+
The role is read off the prompt because nothing else carries it. A dispatched worker starts in the target's own checkout, which is a repository like any other from the session's side, so a test on the working directory answers the same for a worker in a target and an operator who invoked this from one. Reading the role wrong in that direction starts a second wave from inside a consuming project, which is why the dispatch below names the role and the path both rather than relying on either alone.
|
|
21
|
+
|
|
22
|
+
Do not invoke `aitk:claude-worker` from either role. That body states the role for a session building one branch under one plan in this repository, and it resolves session scratch against a main worktree root a target does not carry, so a rollout worker reading it hunts for a plan nobody wrote.
|
|
23
|
+
|
|
24
|
+
## Guards
|
|
25
|
+
|
|
26
|
+
- `gh` absent from the path: stop. `❌ gh is not installed, so no target's pull request can be read or opened.`
|
|
27
|
+
- `aitk targets list` refuses, or reports the index as unknown with no `--sweep` behind it: stop and name the reason. A count of zero taken from an index nothing read is a confident wrong answer.
|
|
28
|
+
- Read a record's own `reason` field rather than a command's exit status. An operator's shell profile may wrap `aitk` in a function whose status comes from a trailing command, which reports every refusal as success.
|
|
29
|
+
- Neither role merges anything, at any size and with no proportionality exception. A wave ends by handing the operator a list to merge from, and merging is the one act only they perform.
|
|
30
|
+
|
|
31
|
+
## The fixed shape every target receives
|
|
32
|
+
|
|
33
|
+
Every target in every wave takes the same branch and the same title, written from here rather than chosen per session. Four hand-driven repairs produced four titles across two scopes, neither of them this one, and three named the toolkit in the half of the shape that withholds it.
|
|
34
|
+
|
|
35
|
+
- Branch: `chore/agents`, in every target and every wave.
|
|
36
|
+
- Title: `chore(agents): <what changed in that target>`.
|
|
37
|
+
- Body: the sections `${CLAUDE_SKILL_DIR}/../../standards/pr.md` fixes, describing what that target received.
|
|
38
|
+
- Body, one line: name this toolkit as the source of the changed files and where to change the content upstream. A reader in that repository months later has no other route to the fact that these files are toolkit-managed and that a local edit is lost at the next wave.
|
|
39
|
+
- Body, no version number anywhere in it. `${CLAUDE_SKILL_DIR}/../../standards/versioning.md` permits a semver tag only where the pull request cuts a release, and `.claude/aitk/config.json` in the target already records `syncedAt` and a sha256 per synced file. A version in the body is a second copy of a fact the target holds canonically, and it is the copy that goes stale while the pull request sits open.
|
|
40
|
+
|
|
41
|
+
The title withholds the source and the body supplies it, because the two have different audiences. `agents` says what changed without saying where it came from, which is what a target's own history wants, and the source line is for a reader inside that repository rather than for whoever merges.
|
|
42
|
+
|
|
43
|
+
One branch name across every target is also what lets the return leg resolve. `aitk sessions list --branch chore/agents --repository <clone>` answers about that project rather than the working one, and a branch each session named for itself gives that read nothing to match.
|
|
44
|
+
|
|
45
|
+
## Phase 1: enumerate and dispatch
|
|
46
|
+
|
|
47
|
+
### Read the population
|
|
48
|
+
|
|
49
|
+
1. Pin the wave. Record the commit of this repository that the wave carries and name it in this session's own reports. Name it in no target's body.
|
|
50
|
+
2. Enumerate. Run `aitk targets list --json` under `AITK_NON_INTERACTIVE=1`, adding `--sweep <root...>` to reach targets installed before the index existed. Read the `bound` object back before treating any count as the population, since it names the roots walked, the depth, where the walk stopped, and what it could not read. The bound a sweep can never state is the machine, so a target on another one sits outside every answer it gives.
|
|
51
|
+
3. Pick the clone that is current. A row carries every checkout of that project under `paths` and leads with the one a sync ran in, which records where an install happened rather than what the checkout holds today. Fetch each candidate, compare it against the origin's default branch, and dispatch into one that is level. Refuse one that is behind rather than branching from a stale base, since three clones read as still owing the repair in one census and every one of them was behind its remote and nothing else.
|
|
52
|
+
|
|
53
|
+
### Check, then dispatch
|
|
54
|
+
|
|
55
|
+
4. Check the branch is unclaimed in that target. Run `aitk sessions list --branch chore/agents --repository <clone> --json` and read `claimed` off the record.
|
|
56
|
+
- `claimed: true`: something already holds it. Report what does, `worktree` when it names a path, `sessions` when it carries a row, and `refs` when the branch already exists, then leave that target out of the wave rather than colliding.
|
|
57
|
+
- `claimed: false` with `sessionsReadable` and `refsReadable` both true: dispatch.
|
|
58
|
+
- Anything else, a refusal or a record carrying no `claimed` key included: treat the target as unverified rather than clear, name which reading could not be taken, and hand it to the operator to launch by hand. Dispatching on a check that could not be read reproduces the collision the check exists to prevent.
|
|
59
|
+
5. Dispatch one worker per target, one session each.
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
cd <clone> && claude --bg --model <model> -n "rollout-<target>" "Run /aitk:aitk-rollout in the worker role against the target at <clone>. <what the wave carries>"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
`--bg` returns immediately, `-n` sets the name that separates a wave's worker from an operator's own launch in the roster, and `--model` overrides the inheritance that otherwise spends this session's model on every worker. Keep the `rollout-` prefix.
|
|
66
|
+
|
|
67
|
+
Running the targets in turn is the alternative and it puts every target's diff through one session's context. A wave's spend scales with the target count instead, and nothing caps it, so weigh the count before widening rather than after.
|
|
68
|
+
|
|
69
|
+
Report each dispatch by naming the target, the clone, the branch, the model, and the session name. Carry the pull request URL into every later report from the moment its worker announces one.
|
|
70
|
+
|
|
71
|
+
## Phase 2: review every pull request
|
|
72
|
+
|
|
73
|
+
1. Poll. Run `aitk targets pulls --json`, naming the wave's clones as arguments to read those alone. A target comes back as `read` with a `pulls` array or as `refused` with a `reason`, and a refusal is not a target with no work. Reading a failed query as no open work reports a target as done having read nothing.
|
|
74
|
+
2. Review here, in this session. Invoke `aitk:claude-pr-review` and redirect every call that body makes, since it resolves a pull request from the repository the session stands in and this session stands in the toolkit. Every call takes a redirect, and the ones that silently answer about the wrong repository are worse than the ones that fail:
|
|
75
|
+
- `--repo <owner>/<name>` on `gh pr view`, `gh pr diff`, and `gh pr review`, where it is a global flag.
|
|
76
|
+
- `-C <clone>` on `git fetch origin pull/<n>/head`, `git merge-base`, `git diff`, `git log`, `git show`, and `git grep`.
|
|
77
|
+
- `GH_REPO=<owner>/<name>` on any `gh api repos/{owner}/{repo}/...` call, which is the close-out route. `gh api` takes no `--repo` flag and fills those placeholders from the working directory or from that variable, so the one call a flag cannot redirect is the one that edits a review in place.
|
|
78
|
+
- That project's own root file, rules, and context, read from under the clone.
|
|
79
|
+
|
|
80
|
+
A missed redirect reports rather than fails. A pass that redirects the `gh` half and leaves a `git` call alone reads this repository's history against a target's diff and reports a delta, which is a finding nobody can trace back to the call that produced it.
|
|
81
|
+
|
|
82
|
+
This session wrote none of these diffs, so reviewing them costs nothing in independence.
|
|
83
|
+
|
|
84
|
+
3. Dispatch a reviewer into the target when a diff is too large for this session to hold. That is the fallback rather than the default. Dispatching one per target was measured and what it saved was reading four diffs, not reading four sets of findings, and that second half reaches this session either way, since routing a finding back means composing the brief from it.
|
|
85
|
+
4. Read the heading each pass posted. `aitk targets pulls` reports `review` as `open`, `closed`, or `null` when no pass has landed, and reports `reviewReadable` as `false` when the query failed, which leaves `review` covering nothing.
|
|
86
|
+
|
|
87
|
+
## Phase 3: route every finding and close each target
|
|
88
|
+
|
|
89
|
+
1. Address every finding whatever its severity. A minor is a finding, and a reviewer calling one non-blocking does not close the pass that raised it.
|
|
90
|
+
2. Resolve who holds the branch before dispatching anybody. Run `aitk sessions list --branch chore/agents --repository <clone> --json` and read the count rather than the first row.
|
|
91
|
+
- A live session holds it: send that session the findings and name `aitk:claude-address-review` for it to run, which is step 6 of `## The worker role` and the step that session already stands at. Never name this skill in that message. This body carries `disable-model-invocation: true`, which blocks the `Skill` tool rather than only suppressing an auto-trigger, and a session acting on an inbound message reaches a skill that way and no other, so a message naming this one halts the address leg with the branch built and the findings unread. A launch prompt is the one route to a flagged body, which is why the dispatch above names this skill and this message must not. Assuming the worker was gone is what one hand-driven pass got wrong. All four sessions that opened those pull requests were still alive holding their worktrees hours later, and of two fresh addressers sent over them, one refused on the worktree lock and one cut a second worktree on the same branch, which would have put two sessions pushing to one ref.
|
|
92
|
+
- No live session holds it: dispatch a fresh worker into that clone and brief it with the findings, since it holds none of the reasoning behind the diff.
|
|
93
|
+
- More than one row: report the ambiguity and stop rather than picking among candidates.
|
|
94
|
+
3. Re-review when the answer lands, scoped to the commits added since. A worker's reply never closes a target. One fix for two minor findings closed both and introduced four more, every one of them in prose that fix added, and a loop trusting the reply merges that.
|
|
95
|
+
4. A target leaves the wave when a pass posts `## Review closed` and not before.
|
|
96
|
+
5. Run until every target closes. No count bounds the loop. What guards it is this session reviewing every round itself, so it holds what each pass found and can see a target failing to converge, where a dispatched reviewer reads one pass and knows nothing of the one before it. A worker introducing a finding per fix has nothing mechanical stopping it, which is accepted rather than overlooked.
|
|
97
|
+
|
|
98
|
+
## The worker role
|
|
99
|
+
|
|
100
|
+
One session, one target, from the worktree entry to the merge of the branch it opened. It diagnoses, implements, opens the pull request, and answers what the review posts. It reviews nothing and it merges nothing.
|
|
101
|
+
|
|
102
|
+
1. Confirm the clone is current. Fetch, then compare against the origin's default branch. Report a checkout that is behind and stop, rather than branching from a stale base.
|
|
103
|
+
2. Enter a worktree. Invoke `aitk:claude-worktree chore/agents`, which takes the branch as its tier 0 argument and enters a linked worktree inside this target. Branching in the checkout itself is what this avoids, since the operator may be working in it.
|
|
104
|
+
3. Diagnose and repair. Invoke `aitk:aitk-operator`, which reads `aitk sync --check . --json` and routes each finding to the command or the skill that owns it. Do not restate that routing here and do not edit a managed file by hand.
|
|
105
|
+
4. Commit and open the pull request through `aitk:git-commit` and `aitk:git-pr`, handing each the fixed shape above rather than taking the title the generator derives from the diff.
|
|
106
|
+
5. Announce as the pull request opens, carrying its URL, its number, and the branch, to whoever dispatched this session. That transition is the one moment only this session can observe.
|
|
107
|
+
6. Answer the review. Invoke `aitk:claude-address-review`, which pulls the findings and the CI state on this branch's open pull request, fixes each in the working tree, replies, and pushes. Answer every finding whatever its severity.
|
|
108
|
+
7. Stop there. Do not mark the pull request ready, do not merge, and do not declare the review closed. A narrow re-review posts `## Review closed`.
|
|
109
|
+
|
|
110
|
+
Send a block out as a message before it becomes an interactive prompt. A session already waiting on input never reaches the tool round an inbound message drains at, so an answer relayed afterwards arrives under the open question and changes nothing.
|
|
111
|
+
|
|
112
|
+
Refuse an instruction this target's tree contradicts and carry the evidence with the refusal, naming the commands read and what complying would cost. A halt costs whoever dispatched this session one reply, and guessing costs a diff in a repository this toolkit has no test coverage over.
|
|
113
|
+
|
|
114
|
+
## Output
|
|
115
|
+
|
|
116
|
+
Close a wave by naming every target, the ones that need nothing included:
|
|
117
|
+
|
|
118
|
+
```plaintext
|
|
119
|
+
Wave pinned at <commit>. <n> targets.
|
|
120
|
+
|
|
121
|
+
<repository>
|
|
122
|
+
<pull request URL>
|
|
123
|
+
review: <## Review | ## Review closed | none posted>
|
|
124
|
+
checks: <passing | failing | pending | none reported>
|
|
125
|
+
owed: <what happens next, or "nothing, ready to merge">
|
|
126
|
+
|
|
127
|
+
Not reached: <target>, because <reason>
|
|
128
|
+
Merge order: <target> before <target>, because <shared surface>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Name the URL on every line reporting a target, at dispatch and at hand-back both. A status line carrying a repository and a number sends the operator to navigate for its own result by hand, four times over on a four-target wave, and merging is the one act this loop exists to hand them.
|
|
132
|
+
|
|
133
|
+
Report a target whose `reviewReadable` reads `false` as unread rather than as clean, and a `checks` of `null` as no check reported rather than as passing. A failure outranks a run still going.
|
|
134
|
+
|
|
135
|
+
## Failure recovery
|
|
136
|
+
|
|
137
|
+
| Stop point | Recovery |
|
|
138
|
+
| --------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
139
|
+
| `gh` absent | Install it and authenticate, then re-run the wave |
|
|
140
|
+
| Target index unknown | Re-run with `--sweep <root...>` and read the `bound` before trusting the count |
|
|
141
|
+
| Every clone of a target is behind | Pull that clone, or name a current one, then dispatch that target alone |
|
|
142
|
+
| Claim check refuses or reads unverified | Launch that target's worker by hand and report that it went out outside the check |
|
|
143
|
+
| Branch already claimed in a target | Resolve what holds `chore/agents` there, then dispatch that target alone |
|
|
144
|
+
| A target refuses the pull read | Read the `reason`, repair it, and re-poll that target. Never record it as having no work |
|
|
145
|
+
| Diff too large to review here | Dispatch a reviewer into that clone and route its findings back through Phase 3 |
|
|
146
|
+
| Two sessions hold one branch | Report both and stop. Sending findings to either puts two sessions on one ref |
|
|
147
|
+
| A target fails to converge | Stop that target's loop, report the rounds it took and what each pass found, and hand it over |
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-screencast
|
|
3
3
|
description: Why a recording script ships pre-seeded rather than blank, what the four discovery questions buy, and why the draft stays stack-agnostic
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk screencast requirement
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
@@ -35,5 +35,5 @@ A draft that names the recording software, the editing software, or the window m
|
|
|
35
35
|
|
|
36
36
|
- Producing the recording, which stops at the script by design
|
|
37
37
|
- Refining an existing draft, which is a direct edit of the file
|
|
38
|
-
- Slide decks, which `
|
|
38
|
+
- Slide decks, which `aitk-slides-draft` owns
|
|
39
39
|
- Where the recording ships, which the draft lists and the user decides
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-screencast
|
|
3
3
|
description: Drafts a screencast script with pre-seeded beats, defaults, and decisions to `.claude/.tmp/screencast/<slug>.md`. Reads project context, asks four discovery questions with proposed defaults, then writes a shippable draft. Use when asked to "draft a screencast", "write a recording script", "plan a demo video", or "scaffold a screencast for X". Do NOT re-invoke to refine an existing draft. Re-running overwrites. Edit the draft file directly.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk screencast
|
|
7
7
|
|
|
8
8
|
## Guards
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-slides-draft
|
|
3
3
|
description: Why the skill owns deck content and the CLI owns layout, and why one render is read back before the deck is called done
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Aitk slides draft requirement
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
@@ -36,4 +36,4 @@ Reimplementing spacing and palette logic is the failure that survives the sessio
|
|
|
36
36
|
- Rendering, which the CLI owns end to end
|
|
37
37
|
- The palette and the type scale, which live in the CLI rather than in the source
|
|
38
38
|
- Writing the content the deck is about, which the caller brings
|
|
39
|
-
- Recording a demo, which `
|
|
39
|
+
- Recording a demo, which `aitk-screencast` owns
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: aitk-slides-draft
|
|
3
3
|
description: Drafts a `.claude/SLIDES.md` source from a topic, picks a layout per slide, then renders it to PowerPoint via `aitk slides render`. Use when asked to "draft slides", "make a deck", "build a presentation", "turn this into slides", or "render a SLIDES.md". Holds the deck design rules. Do NOT reimplement render logic. The CLI owns layout and styling. Assumes the `aitk` CLI is on PATH.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: cli-script
|
|
2
|
+
name: bash-cli-script
|
|
3
3
|
description: What a non-interactive automation script owes its caller, and the stdout contract that separates it from the human-facing generator
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# CLI script requirement
|
|
6
|
+
# Bash CLI script requirement
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: cli-script
|
|
2
|
+
name: bash-cli-script
|
|
3
3
|
description: Generates non-interactive Bash scripts for automation, CI, and agent-run tasks. Lean functional style with structured logging, strict error handling, and a clean stdout, no interactive UI. Use when asked for "a non-interactive shell script", an automation script, a CI or cron script, or a pipeline helper. Do NOT use for a human-facing interactive tool with prompts or a visual timeline UI, that is `bash-script`.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# CLI script
|
|
6
|
+
# Bash CLI script
|
|
7
7
|
|
|
8
8
|
Generate non-interactive Bash scripts for automation, CI, and agent-run workflows. Optimize for robustness and composability, not visual polish. For a human-facing interactive tool with prompts and a timeline UI, use `bash-script` instead.
|
|
9
9
|
|
|
@@ -27,10 +27,10 @@ The visual conventions this skill fixes are otherwise arbitrary. Their value is
|
|
|
27
27
|
|
|
28
28
|
## Guards
|
|
29
29
|
|
|
30
|
-
- A request for a script with no human at the terminal stops and routes to `cli-script` rather than generating a timeline nothing will render
|
|
30
|
+
- A request for a script with no human at the terminal stops and routes to `bash-cli-script` rather than generating a timeline nothing will render
|
|
31
31
|
|
|
32
32
|
## Out of scope
|
|
33
33
|
|
|
34
|
-
- Non-interactive automation, CI, and agent-run scripts: `cli-script`, which keeps the error handling and the stdout contract and drops the timeline, the icons, and the prompts
|
|
34
|
+
- Non-interactive automation, CI, and agent-run scripts: `bash-cli-script`, which keeps the error handling and the stdout contract and drops the timeline, the icons, and the prompts
|
|
35
35
|
- GitHub Actions workflow files: `ci-workflow`
|
|
36
36
|
- What the generated script does. This skill fixes the shape of the output and the stream it goes to, and the commands belong to the request.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bash-script
|
|
3
|
-
description: Generates production Bash scripts with a visual timeline UI, state-based interactive prompts, and strict error handling. Use when asked for "a human-facing shell tool", an interactive bash script, or a DevOps tool with framed terminal output. Do NOT use for a non-interactive automation, CI, or pipeline script, that is `cli-script`.
|
|
3
|
+
description: Generates production Bash scripts with a visual timeline UI, state-based interactive prompts, and strict error handling. Use when asked for "a human-facing shell tool", an interactive bash script, or a DevOps tool with framed terminal output. Do NOT use for a non-interactive automation, CI, or pipeline script, that is `bash-cli-script`.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Bash script
|
|
@@ -11,7 +11,7 @@ Load `${CLAUDE_SKILL_DIR}/references/patterns.md` for the timeline lifecycle, lo
|
|
|
11
11
|
|
|
12
12
|
## Guards
|
|
13
13
|
|
|
14
|
-
- A request for a script with no human at the terminal stops and routes to `cli-script`. CI jobs, cron entries, agent-run tasks, and any script whose output is consumed by a pipe render no timeline, so generating one costs the frame and returns nothing.
|
|
14
|
+
- A request for a script with no human at the terminal stops and routes to `bash-cli-script`. CI jobs, cron entries, agent-run tasks, and any script whose output is consumed by a pipe render no timeline, so generating one costs the frame and returns nothing.
|
|
15
15
|
|
|
16
16
|
## Script setup
|
|
17
17
|
|
|
@@ -35,6 +35,6 @@ A cache keyed on a static string serves a stale browser or toolchain after a ver
|
|
|
35
35
|
|
|
36
36
|
## Out of scope
|
|
37
37
|
|
|
38
|
-
- The shell scripts a job invokes: `cli-script`
|
|
38
|
+
- The shell scripts a job invokes: `bash-cli-script`
|
|
39
39
|
- Secrets, environments, and deploy targets, which live in the repository settings rather than in the workflow this skill writes
|
|
40
40
|
- CI systems other than GitHub Actions. The structure rules generalize and the file format does not, so a different system is a different skill rather than a flag on this one.
|
|
@@ -67,7 +67,7 @@ For each in-scope entry (see Scope), pick one action:
|
|
|
67
67
|
- **Promote to a standards file**: the rule is an authoring reference that belongs in the project's own standards folder as `<domain>.md`.
|
|
68
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.
|
|
69
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.
|
|
70
|
-
- In the toolkit repo, point the user at `
|
|
70
|
+
- In the toolkit repo, point the user at `internal-governance` and `${CLAUDE_SKILL_DIR}/../../standards/rule.md`, which own the source-of-truth rules under `governance/rules/`.
|
|
71
71
|
- In a target project, point the user at the `create-rule` skill, which scaffolds a project-local rule under `.claude/rules/`.
|
|
72
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.
|
|
73
73
|
|
|
@@ -134,7 +134,7 @@ Before applying any item, check the worktree state:
|
|
|
134
134
|
|
|
135
135
|
If the result is `MAIN`, stop and tell the user: `❌ Apply phase mutates tracked files. Run /claude-worktree first.` Discuss and Challenge phases only touch `.claude/review/` scratch and run from anywhere.
|
|
136
136
|
|
|
137
|
-
Before applying a promote to root `CLAUDE.md`, load `
|
|
137
|
+
Before applying a promote to root `CLAUDE.md`, load `internal-claude` so its seed-mirror rule fires on the edit.
|
|
138
138
|
|
|
139
139
|
Promotions are a separate concern from any feature in flight. Keep the promoted edits on their own commit. Do not fold a `CLAUDE.md` or skill-body change into a feature's commits, because a feature reviewer should not have to vet a change to how the agent operates.
|
|
140
140
|
|
|
@@ -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: `
|
|
48
|
+
For Hand off items, the body is a pointer to the governance target instead of a rewritten rule: `internal-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.
|
|
@@ -38,7 +38,7 @@ Two failures belong to the audit rather than to the diff. A decision taken in ch
|
|
|
38
38
|
|
|
39
39
|
## Out of scope
|
|
40
40
|
|
|
41
|
-
- Bulk install and sync of a whole domain, which `aitk <domain> install` and `aitk <domain> sync` own and `
|
|
41
|
+
- Bulk install and sync of a whole domain, which `aitk <domain> install` and `aitk <domain> sync` own and `aitk-cli` documents. Reach for this skill when the target holds edits worth keeping, and for those commands when it does not.
|
|
42
42
|
- Golden configs, which overwrite by design and carry no section structure to diff
|
|
43
43
|
- Governance rules: `aitk gov sync`
|
|
44
44
|
- First-time scaffold of a project that has installed nothing yet: `setup-init`
|
|
@@ -31,7 +31,7 @@ The report is what separates a file the project edited from one the toolkit move
|
|
|
31
31
|
|
|
32
32
|
Keep every seed regardless of state. `CLAUDE.md` is the file a project edits most, and its `drifted` verdict is the case this skill exists for.
|
|
33
33
|
|
|
34
|
-
Read the `
|
|
34
|
+
Read the `aitk-cli` skill before naming a sync command in the output. It states which surfaces a sync overwrites, merges, or writes once.
|
|
35
35
|
|
|
36
36
|
Fall back to the appearance heuristic in step 3 when the report cannot attribute, which is `historyUnavailable` set on the relevant section or the command failing outright. Say so in the summary block, because a fallback audit reports guesses rather than facts.
|
|
37
37
|
|
|
@@ -33,6 +33,6 @@ Without this skill, an issue takes the shape of whatever the session was saying.
|
|
|
33
33
|
|
|
34
34
|
## Out of scope
|
|
35
35
|
|
|
36
|
-
- Reporting a toolkit defect from a target project, which `
|
|
37
|
-
- Triaging issues already filed, which `
|
|
36
|
+
- Reporting a toolkit defect from a target project, which `aitk-feedback-file` owns. That path writes into the toolkit rather than the current repository.
|
|
37
|
+
- Triaging issues already filed, which `aitk-feedback-triage` owns
|
|
38
38
|
- Opening a pull request, which `git-pr` owns
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: git-issue
|
|
3
|
-
description: Format a bug or task from the current session into a GitHub issue and file it on the current repo via `gh issue create`. Use when asked to "file an issue", "open an issue", "log this bug", "raise an issue", or "track this as an issue". Do NOT use to report a toolkit defect from a target project (that is `
|
|
3
|
+
description: Format a bug or task from the current session into a GitHub issue and file it on the current repo via `gh issue create`. Use when asked to "file an issue", "open an issue", "log this bug", "raise an issue", or "track this as an issue". Do NOT use to report a toolkit defect from a target project (that is `aitk-feedback-file`), or to open a pull request (that is `git-pr`).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Git issue
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: restate
|
|
2
|
+
name: restate-plainly
|
|
3
3
|
description: Why a plain restatement is asked for by name, and where its boundary sits against the skill that drafts and the command that measures
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Restate requirement
|
|
6
|
+
# Restate plainly requirement
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: restate
|
|
2
|
+
name: restate-plainly
|
|
3
3
|
description: Restates a dense answer or a named markdown document in plain language, cutting jargon and keeping only what changes a decision. Use when asked to "restate that in plain language", "say that plainly", "what does this actually mean", "cut the jargon", "give me the plain version", or "restate this document". Do NOT use to draft or revise prose, which is `write-human`, and do NOT fire on the model's own judgment that its own output was dense.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Restate
|
|
6
|
+
# Restate plainly
|
|
7
7
|
|
|
8
8
|
Return the plain version of something already written. The reader asked because they stopped to decode rather than to decide, so the restatement earns its place by getting them to the decision.
|
|
9
9
|
|
|
@@ -41,5 +41,5 @@ The other is the refusal that ends rather than routes. An existing project, an i
|
|
|
41
41
|
- Provisioning Claude Code plugins: `setup-plugins`. Those install once per machine rather than into a project, so no project-scoped chain can carry them.
|
|
42
42
|
- Running the verification scripts, which `setup-verify` owns and this chain invokes as its last step
|
|
43
43
|
- Re-installing into a project that already has the files, which the per-domain `aitk <domain> install` and `aitk sync` commands own
|
|
44
|
-
- Deciding which of those per-domain commands an existing project needs: `
|
|
44
|
+
- Deciding which of those per-domain commands an existing project needs: `aitk-operator`. That skill reads the target before naming one, which this chain never does, so it is the destination rather than a guess made here.
|
|
45
45
|
- Seeding the `.claude/` folder without the tooling chain, which `aitk claude init` does on its own and `setup-indexes` finishes
|