@sabaiway/agent-workflow-kit 1.29.0 → 1.31.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/README.md +7 -2
  3. package/SKILL.md +33 -519
  4. package/bridges/antigravity-cli-bridge/SKILL.md +1 -1
  5. package/bridges/antigravity-cli-bridge/bin/agy-review.sh +145 -4
  6. package/bridges/antigravity-cli-bridge/bin/agy-review.test.mjs +169 -1
  7. package/bridges/antigravity-cli-bridge/capability.json +3 -2
  8. package/bridges/codex-cli-bridge/SKILL.md +1 -1
  9. package/bridges/codex-cli-bridge/bin/codex-review.sh +120 -3
  10. package/bridges/codex-cli-bridge/bin/codex-review.test.mjs +132 -0
  11. package/bridges/codex-cli-bridge/capability.json +3 -2
  12. package/capability.json +1 -1
  13. package/launchers/windsurf-workflow.md +4 -2
  14. package/package.json +1 -1
  15. package/references/modes/agents.md +11 -0
  16. package/references/modes/backends.md +9 -0
  17. package/references/modes/bootstrap.md +49 -0
  18. package/references/modes/gates.md +17 -0
  19. package/references/modes/grounding.md +12 -0
  20. package/references/modes/help.md +7 -0
  21. package/references/modes/hook.md +24 -0
  22. package/references/modes/procedures.md +18 -0
  23. package/references/modes/recipes.md +18 -0
  24. package/references/modes/review-state.md +13 -0
  25. package/references/modes/set-recipe.md +23 -0
  26. package/references/modes/setup.md +30 -0
  27. package/references/modes/status.md +22 -0
  28. package/references/modes/uninstall.md +18 -0
  29. package/references/modes/upgrade.md +46 -0
  30. package/references/modes/velocity.md +18 -0
  31. package/references/shared/composition-handoff.md +39 -0
  32. package/references/shared/deploy-tail.md +61 -0
  33. package/references/shared/report-footer.md +116 -0
  34. package/references/templates/agent_rules.md +3 -2
  35. package/references/templates/handover.md +1 -0
  36. package/tools/commands.mjs +15 -1
  37. package/tools/detect-backends.mjs +2 -0
  38. package/tools/engine-source.mjs +2 -1
  39. package/tools/grounding.mjs +263 -0
  40. package/tools/procedures.mjs +50 -5
  41. package/tools/recipes.mjs +78 -12
  42. package/tools/review-state.mjs +395 -0
  43. package/tools/set-recipe.mjs +15 -5
package/CHANGELOG.md CHANGED
@@ -4,6 +4,92 @@ Semantically versioned ([semver](https://semver.org)), newest first. The `versio
4
4
  is the current release. `upgrade` mode reads a project's `docs/ai/.workflow-version` and applies
5
5
  every `migrations/<version>-<slug>.md` newer than it, in semver order.
6
6
 
7
+ ## 1.31.0 — Progressive disclosure: SKILL.md becomes a thin router over references/modes + references/shared (AD-039)
8
+
9
+ A **feature** release; packaging-only for deployments (the deployment lineage stays `1.3.0` — no
10
+ `docs/ai` structure change, no migration). The 112,106 B / 680-line SKILL.md monolith — loaded
11
+ whole on EVERY invocation — becomes a **10,139 B router** plus per-mode files, so an invocation
12
+ reads only what it needs:
13
+
14
+ - **The router** keeps the always-needed core: the composition-root decision (detect → delegate /
15
+ fallback + the init refresh-cascade), the safe-routing rule + version-status routing note, and
16
+ 16 bare `### Mode:` headers each carrying ONE line — the catalog `kind` EXACTLY + ``read
17
+ `${CLAUDE_SKILL_DIR}/references/modes/<mode>.md` before acting.``
18
+ - **`references/modes/<key>.md` ×16** — the mode bodies, moved verbatim (set-equality-guarded
19
+ against the `tools/commands.mjs` catalog). **`references/shared/`** — the point-of-use
20
+ contracts: `report-footer.md` (backend-status line · version block + welcome mat · version
21
+ disclosure), `composition-handoff.md` (hand-off + bounded pointer reconciliation),
22
+ `deploy-tail.md` (Gotchas · Setup contracts · System principles · Hard-Constraints template).
23
+ Each mode file opens with one `Requires:` line naming its shared reads (bootstrap/upgrade → all
24
+ three; status → the report footer; the daily modes none).
25
+ - **Byte budgets are acceptance, not vibes** — the new `test/router-contract.test.mjs` asserts,
26
+ over the real files: router ≤ 10,240 B · router + any mode ≤ 28,672 · every full read set
27
+ ≤ 53,248 · the daily no-shared modes ≤ 16,384 (realized: 10,139 · 27,392 · 48,419 · 14,121 —
28
+ a daily `help` run is ~10× lighter, the worst path (`upgrade`) ~2.3×). It also pins the D4
29
+ pointer audits permanently: every `Requires:` resolves, zero italic/plain cross-mode refs, zero
30
+ bare kit-relative links, moved shared-section references carry their pointer.
31
+ - **Nothing else moved:** runtime routing untouched (`routeInvocation` never reads SKILL.md);
32
+ packaging additive (`references/` already rides `files[]`; the npx installer copies it
33
+ recursively; tarball 96 → 115 files, exact-count-pinned); frontmatter byte-compatible with the
34
+ twin version readers; 7 content-coupled guards re-anchored to the new files.
35
+
36
+ ## 1.30.0 — Review-recipe enforcement: the configured recipe is impossible to miss, "reviewed ≠ shipped" is detectable, grounding is a command (AD-038)
37
+
38
+ A **feature** release (ships the bundled bridges refreshed to **2.2.0**). Origin: a real
39
+ council-substitution incident + independent kit-user feedback — the configured review recipe could
40
+ be silently skipped, downgraded, or run before later edits, and nothing could detect it. Three
41
+ mechanisms, each self-firing at its point of use:
42
+
43
+ - **The discovery line** — `tools/recipes.mjs --active-line` (`Mode: recipes`): exactly ONE
44
+ machine-composed line rendering the **CONFIGURED** recipe of every activity/slot from
45
+ `docs/ai/orchestration.json` + live readiness — source labeled, degradation stated, wrapper set
46
+ named, explicitly contrasted with the readiness recommendation (which is informational). Wired
47
+ where a session already reads: the deployed `agent_rules.md` §1.1 gains step 2 (read the
48
+ orchestration config BEFORE picking a task; a silent recipe downgrade is a forbidden
49
+ substitution) and `handover.md` gains a standing **"Active recipes:"** slot — both template
50
+ regions byte-identical with the memory copies (new `test/template-region-parity.test.mjs`,
51
+ injected-divergence non-vacuous); `set-recipe` now ECHOES the freshly composed line + a
52
+ handover-slot reminder after every successful `--write` (additive `activeLine` field in
53
+ `--json`). New `test/active-recipe-line.test.mjs` proves the line derives from the CONFIG, not
54
+ the recommendation.
55
+ - **`/agent-workflow-kit review-state`** (`tools/review-state.mjs`, read-only + colocated tests) —
56
+ makes "reviewed ≠ shipped" mechanically detectable. The 2.2.0 review wrappers append one JSONL
57
+ receipt per SUCCESSFUL review to `<git dir>/agent-workflow-review-receipts.jsonl`
58
+ (`AW_REVIEW_RECEIPTS` overrides; never committable by construction); the checker resolves the
59
+ effective `plan-execution.review` recipe, recomputes the canonical **uncommitted-state
60
+ fingerprint** (sha256 over staged diff + unstaged diff + untracked-not-ignored contents — exactly
61
+ the review-payload domain), and `--check` exits 0 only when every recipe-named backend holds a
62
+ **fresh, grounded, current-fingerprint** receipt (**presence, not unanimity** — verdicts stay
63
+ orchestrator judgment). Any later edit stales the receipts; plan/diff receipts and continuations
64
+ (`fresh:false`) are informational-only — after a fold, only a fresh grounded re-run restores
65
+ green. Normative exit contract in the tool header; plan-in-flight detector keyed on the
66
+ documented `docs/plans` naming convention; honest residual stated (`--no-verify`, receipt-file
67
+ deletion — discipline, not a sandbox). The gate line is **never auto-seeded** ([[AD-021]]): the
68
+ template `gates.json` stays empty; the candidate line lives in `Mode: review-state`/`Mode: gates`
69
+ prose. New `test/review-fingerprint-parity.test.mjs` proves bash (both wrappers, byte-identical
70
+ block) ↔ node fingerprint parity — hash, serialization, AND behavioral domain equality.
71
+ - **`/agent-workflow-kit grounding`** (`tools/grounding.mjs` + colocated tests) — the
72
+ grounded-review facts assembler, catalogued honestly as a **WRITER**: `--constraints` slices the
73
+ root `AGENTS.md` Hard-Constraints section verbatim (exactly-one-match, else a loud STOP);
74
+ `--plan <path>` extracts the decision-bearing sections (`## Approach` + `## Verification`
75
+ required, `## Decisions (locked)` when present; duplicates STOP); output honors the wrapper's
76
+ `AGY_MAX_PROMPT_BYTES` budget minus `--reserve-bytes` with a loud tail-trim; `--out` accepts only
77
+ gitignored / out-of-repo scratch (a tracked or in-repo not-ignored path is refused — a new
78
+ untracked file would move the fingerprint it grounds). `procedures.mjs` renders the invocation as
79
+ a POPULATED pre-step whenever agy is dispatched (exactly one plan in flight → its path; else a
80
+ placeholder + discovery caveat; additive `groundingPreStep` in `--json`).
81
+ - **Bundled bridges 2.2.0** (mirrors byte-refreshed): `codex-review.sh` mandates + parses ONE
82
+ literal `Verdict: ship|revise|rethink` line (schema mode reads the JSON field); `agy-review.sh`
83
+ records the `### Verdict` token verbatim (SHIP / SHIP WITH NITS / REWORK), `grounded` +
84
+ `factsHash` from `--facts` (an empty payload is visible), and marks continuations `fresh:false`
85
+ with a one-line fresh-run notice; a receipt write failure warns and never fails the review. The
86
+ review-role `capability.json` contracts gain the `receipt` block (the fingerprint definition
87
+ home) — three-way lockstep wrapper `--help` ↔ manifest ↔ `detect-backends.mjs` registry,
88
+ drift-guarded.
89
+ - **Catalog/report wiring:** two new SKILL modes + README rows; the bootstrap/upgrade report
90
+ footers paste the active-recipe line beside the backend-status line; `package-content` pin
91
+ 94 → 96 (the two new tools).
92
+
7
93
  ## 1.29.0 — Velocity scope C: an opt-in PreToolUse gate-approval hook
8
94
 
9
95
  A **feature** release (ships the bundled bridges unchanged at **2.1.0**). The shipped, probe-proven
package/README.md CHANGED
@@ -234,6 +234,8 @@ file), or run the guarded `/agent-workflow-kit uninstall`.
234
234
  | `/agent-workflow-kit recipes` | any time | **read-only** orchestration advisor: presents four named recipes for composing the bridges into plan → execute → review — **Solo / Reviewed / Council / Delegated** — plans + recommends one for your environment (degrading with a stated reason when a backend isn't ready), and offers the choice. The orchestrator runs it via the bridge skills and **always commits**; the kit never executes a recipe, never runs a subscription CLI, never commits. |
235
235
  | `/agent-workflow-kit procedures <activity>` | any time | **read-only** activity-procedures advisor: prints a named activity's ordered steps (`plan-authoring` / `plan-execution`) read **live** from the engine, plus the **resolved recipe per slot** from your `docs/ai/orchestration.json` (agent-writable via `set-recipe`, or hand-edited) + backend readiness (default Reviewed when a backend is ready, Council on request, slot-aware incl. Delegated) — and, for every dispatched backend, the **full driving contract at the point of use** (exact copy-pasteable invocation, grounding levers like agy's `--facts`/`--decided`, the round-2 `--continue` delta, guarded passthrough), verbatim from the bridge manifests (drift-guarded; each wrapper's `--help` prints the same). `--override <slot>=<recipe>` adjusts one slot per run. Composes with `recipes`; never writes, never commits, never runs a subscription CLI. |
236
236
  | `/agent-workflow-kit set-recipe` | any time | **config writer** for `docs/ai/orchestration.json`: tell the agent your preference in plain language and it maps it to explicit `--set <activity>.<slot>=<recipe>` / `--unset` ops; the kit validates, **previews by default**, and writes only on `--write` (deployment-gated, atomic, symlink/TOCTOU-safe), resolving the effective recipe vs live readiness. Writes **only** that file — **never runs a backend, never commits**; hand-editing stays fully supported. |
237
+ | `/agent-workflow-kit review-state` | any time | **read-only review-receipt checker** — makes "reviewed ≠ shipped" detectable: the bridge review wrappers append a receipt per successful review (into a file inside the git dir — never committable); this checks that every backend your configured `plan-execution.review` recipe names holds a **fresh, grounded receipt for the current uncommitted tree** (any later edit moves the fingerprint and stales the receipt; a review continuation never re-attests a folded tree). `--check` gives a gate exit code to declare in `docs/ai/gates.json` **by hand** (never auto-seeded). Never writes, never commits, never runs a subscription CLI; it spawns read-only `git` queries to fingerprint the tree — and `git commit --no-verify` stays possible (discipline, not a sandbox). |
238
+ | `/agent-workflow-kit grounding` | any time | **grounded-review facts assembler** — mechanizes populating `agy-review --facts @f`: slices your entry-point's **Hard Constraints** section verbatim (exactly one match, else a loud stop) and/or a plan's decision-bearing sections (`## Approach` + `## Verification` required, `## Decisions (locked)` when present; duplicates stop), under the same byte budget the agy wrapper enforces (minus `--reserve-bytes` for the artifact share), with a loud tail-trim on overflow. Prints to stdout; `--out` writes **one scratch file only** (gitignored / outside the repo — a tracked or not-ignored in-repo path is refused). Never commits, never runs a subscription CLI. |
237
239
  | `/agent-workflow-kit uninstall` | opt-in, any time | **guarded teardown** — the inverse of `init` / `setup`. Removes only what's **provably ours** (managed skill dirs + bridge wrappers; in a project, the hidden-mode git-ignore block it added + the pre-commit hook it installed); **never deletes** your `docs/ai` / `AGENTS.md` (prints the exact `rm` to run by hand) or your `.claude/settings.json` (prints an **edit** — remove the attribution key, review any velocity `permissions.*` — never an `rm`). Always `--dry-run` first; preflight-then-mutate; never commits. |
238
240
  | `/agent-workflow-kit velocity` | Claude Code · opt-in | **onboarding velocity profile** — seeds a fixed, audited **read-only** allowlist into `.claude/settings.json` so routine read-only commands stop idling on approval prompts while you're away; opt-in `acceptEdits`; plus a **read-only advisory** of likely project gate commands to add by hand. Writes **only** `.claude/settings.json` — **never** allowlists commit/push/publish, never writes `settings.local.json`, never commits. A seeded entry is a **trust posture, not a sandbox** (a runtime residual remains at the settings level — its guard ships as the opt-in `hook` command); a direct commit/push/publish still asks. `--dry-run` first. |
239
241
  | `/agent-workflow-kit agents` | Claude Code · opt-in | **cheap-lane subagents** — places bundled subagent definitions (`.claude/agents/`) pinned to a **cheap model** (haiku, low effort, read-only tools) for mechanical work: extraction sweeps, changelog fact-skeletons, gate-failure triage. Judgment, review, and real code stay on your main lane — these vehicles only extract and draft, and their output is verified. Preview by default (`--apply` writes); an existing customized file is **preserved, never overwritten**; never touches `settings*.json`, never commits. |
@@ -304,7 +306,8 @@ One kit, two tiers — **no logic is duplicated per tool:**
304
306
  - The **output** (`AGENTS.md` + `docs/ai/`) is read natively by Claude Code (via the `CLAUDE.md`
305
307
  alias) · Codex · Cursor · Devin Desktop · Copilot · Gemini CLI & 20+ tools.
306
308
  - The **bootstrapper** runs from Claude Code · Codex · Devin Desktop — their launchers point at the
307
- same `SKILL.md`, so deployment logic lives in one place.
309
+ same `SKILL.md` router (which loads its `references/modes/` + `references/shared/` files per
310
+ invocation), so deployment logic lives in one place.
308
311
 
309
312
  ---
310
313
 
@@ -313,10 +316,12 @@ One kit, two tiers — **no logic is duplicated per tool:**
313
316
  ```
314
317
  agent-workflow-kit/
315
318
  ├── README.md ← you are here (the kit's manual)
316
- ├── SKILL.md ← agent-facing deploy / upgrade algorithm
319
+ ├── SKILL.md ← thin agent-facing router: mode index + safe routing
317
320
  ├── CHANGELOG.md ← version history
318
321
  ├── capability.json ← agent-workflow family manifest (composition-root)
319
322
  ├── references/
323
+ │ ├── modes/ ← one file per mode (deploy/upgrade/… procedures)
324
+ │ ├── shared/ ← shared contracts (footer · hand-off · tail)
320
325
  │ ├── templates/ ← AGENTS.md + every docs/ai file
321
326
  │ ├── scripts/ ← caps / archive / index + tests
322
327
  │ └── contracts.md ← visibility / language / attribution rules