@mmerterden/multi-agent-pipeline 12.4.0 → 12.6.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 (70) hide show
  1. package/CHANGELOG.md +169 -0
  2. package/README.md +1 -1
  3. package/docs/features.md +20 -0
  4. package/index.js +7 -1
  5. package/install/_dev-only-files.mjs +1 -0
  6. package/package.json +4 -3
  7. package/pipeline/agents/security-auditor.md +1 -1
  8. package/pipeline/commands/archive-guard.md +5 -5
  9. package/pipeline/commands/multi-agent/SKILL.md +2 -0
  10. package/pipeline/commands/multi-agent/design-check/SKILL.md +287 -0
  11. package/pipeline/commands/multi-agent/help/SKILL.md +45 -5
  12. package/pipeline/commands/multi-agent/refactor/SKILL.md +92 -12
  13. package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
  14. package/pipeline/commands/multi-agent/sync/SKILL.md +119 -12
  15. package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
  16. package/pipeline/commands/sim-test.md +5 -5
  17. package/pipeline/lib/credential-store.sh +32 -0
  18. package/pipeline/lib/extract-conventions.sh +1 -0
  19. package/pipeline/lib/repo-cache.sh +1 -0
  20. package/pipeline/lib/shadow-git.sh +8 -0
  21. package/pipeline/multi-agent-refs/cross-cli-contract.md +3 -3
  22. package/pipeline/multi-agent-refs/phases/phase-0-init.md +9 -1
  23. package/pipeline/multi-agent-refs/phases/phase-3-dev.md +2 -2
  24. package/pipeline/multi-agent-refs/phases/phase-4-review.md +3 -2
  25. package/pipeline/multi-agent-refs/phases/phase-5-test.md +14 -4
  26. package/pipeline/multi-agent-refs/phases.md +2 -0
  27. package/pipeline/multi-agent-refs/prompt-assembly.md +31 -0
  28. package/pipeline/preferences-template.json +18 -1
  29. package/pipeline/schemas/agent-state.schema.json +90 -0
  30. package/pipeline/schemas/design-check-config.schema.json +162 -0
  31. package/pipeline/schemas/learnings-ledger.schema.json +4 -0
  32. package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +30 -12
  33. package/pipeline/schemas/prefs.schema.json +161 -5
  34. package/pipeline/schemas/token-budget.json +2 -2
  35. package/pipeline/schemas/triage-corpus.schema.json +5 -1
  36. package/pipeline/scripts/README.md +7 -5
  37. package/pipeline/scripts/classify-plan-safety.mjs +8 -3
  38. package/pipeline/scripts/cost-budget-check.mjs +9 -5
  39. package/pipeline/scripts/eval-mine-corpus.mjs +19 -5
  40. package/pipeline/scripts/fixtures/install-layout.tsv +7 -7
  41. package/pipeline/scripts/gc-worktrees.sh +23 -1
  42. package/pipeline/scripts/learning-curve.mjs +167 -0
  43. package/pipeline/scripts/learnings-ledger.mjs +27 -2
  44. package/pipeline/scripts/lint-mcp-refs.mjs +207 -0
  45. package/pipeline/scripts/memory-load.sh +5 -1
  46. package/pipeline/scripts/render-work-summary.sh +4 -1
  47. package/pipeline/scripts/repo-map.mjs +1 -1
  48. package/pipeline/scripts/smoke-command-inventory.sh +81 -0
  49. package/pipeline/scripts/smoke-commands-skills-parity.sh +1 -1
  50. package/pipeline/scripts/smoke-compliance-skills.sh +4 -4
  51. package/pipeline/scripts/smoke-cross-cli-behavior.sh +12 -2
  52. package/pipeline/scripts/smoke-generate-issue.sh +6 -5
  53. package/pipeline/scripts/smoke-learning-curve.sh +61 -0
  54. package/pipeline/scripts/smoke-per-repo-memory.sh +2 -2
  55. package/pipeline/scripts/smoke-review-readiness.sh +3 -2
  56. package/pipeline/scripts/smoke-schema-validation.sh +19 -5
  57. package/pipeline/scripts/smoke-shadow-git.sh +4 -2
  58. package/pipeline/scripts/triage-memory.mjs +66 -10
  59. package/pipeline/scripts/uninstall.mjs +1 -1
  60. package/pipeline/skills/.skill-manifest.json +24 -8
  61. package/pipeline/skills/.skills-index.json +39 -3
  62. package/pipeline/skills/shared/README.md +10 -6
  63. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +10 -8
  64. package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +248 -0
  65. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +22 -0
  66. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +67 -11
  67. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +1 -1
  68. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +51 -9
  69. package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +1 -1
  70. package/pipeline/skills/skills-index.md +8 -4
package/CHANGELOG.md CHANGED
@@ -14,6 +14,175 @@ Internal file-layout changes that don't affect the slash-command surface are sti
14
14
 
15
15
  ---
16
16
 
17
+ ## [Unreleased]
18
+
19
+ ## [12.6.0] - 2026-07-25
20
+
21
+ Two threads. The design-check command gains a scenario inventory, a coverage
22
+ gate and MCP-currency gating, and the refactor/sync pair learns to research,
23
+ audit and ship the companion dev-toolkit MCP server. Alongside that, a defect
24
+ sweep found eight gates and features that exited 0 while doing nothing - six
25
+ of them guarded by a smoke test whose fixture had the wrong shape, so the suite
26
+ stayed green the whole time.
27
+
28
+ Requires `@mmerterden/dev-toolkit-mcp` >= v2.9.0 for the App Store audit path.
29
+
30
+ ### Fixed
31
+
32
+ - **Eight gates and features that reported success while doing nothing.** Each
33
+ exited 0 without doing its job, and in six cases the guarding smoke test
34
+ hand-wrote a fixture with the wrong shape, so the suite stayed green.
35
+ `npx @mmerterden/multi-agent-pipeline uninstall` was a silent no-op (the
36
+ `isMainModule` guard compared `import.meta.url` to `argv[1]`, which is
37
+ `index.js` under the bin dispatcher). `cost-budget-check.mjs` probed
38
+ `.worktrees/<id>/phase-tracker.json` while `phase-tracker.sh` writes
39
+ `~/.claude/logs/multi-agent/<id>/tracker-state.json`, so the cost ceiling
40
+ could never fire; it also now prices `tokens_cached`. `classify-plan-safety.mjs`
41
+ required `score >= 50` while its heaviest rule is 35, so no single heavy
42
+ signal could trip the autopilot pause its own contract promises.
43
+ `triage-memory.mjs` and `learnings-ledger.mjs` derived the repo slug from
44
+ `--show-toplevel`, which inside a worktree is the task id, sharding the
45
+ per-repo store one directory per task; they now use `--git-common-dir`.
46
+ `state-2.0.0-to-2.1.0.mjs` emitted keys `agent-state.schema.json` rejects
47
+ under `additionalProperties: false`. `memory-load.sh` read `preferences.json`
48
+ while the installer only writes `multi-agent-preferences.json`, so per-repo
49
+ memory was dead in production. `smoke-cross-cli-behavior.sh` had unquoted
50
+ command substitution (SC2046) that made two gates pass while violations were
51
+ present. The CI leak gate in all three workflows grepped 5 of the 23
52
+ forbidden patterns and was `release.yml`'s only PII gate; all three now call
53
+ `smoke-personal-data.sh --root`, keeping one pattern list.
54
+ - **shellcheck moves from `error` to `warning` severity.** `error` returns zero
55
+ findings across all 175 scripts, so the gate could not catch this repo's
56
+ actual defect class - SC2046 is a warning. Noisy codes are excluded with a
57
+ per-code rationale. Four real findings surfaced and are fixed, including two
58
+ unguarded `cd` calls in `smoke-shadow-git.sh`, one preceding a relative
59
+ `rm -rf`.
60
+ - **`credential-store.sh` resolves logical keys through
61
+ `prefs.global.keychainMapping`.** `get github` searched the backend for a
62
+ credential literally named "github" and returned empty with exit 1 -
63
+ indistinguishable from "no such credential" - because the entry is named by
64
+ the mapping. Applied in `get`/`set`/`delete`, falling back to the logical key
65
+ when no mapping exists.
66
+
67
+ ### Changed
68
+
69
+ - **`ios_app_store_audit` catalog grows to 18 rules**, requiring
70
+ `@mmerterden/dev-toolkit-mcp` >= v2.9.0. Adds `sdk-floor` (ITMS-90725, the
71
+ iOS 26 / Xcode 26 build floor in force since 2026-04-28). `embedded-sdk`'s
72
+ missing framework privacy manifest moves from a `5.1.1` WARNING to
73
+ `ITMS-91061` ERROR, an enforced rejection since 2025-02-12, so archives that
74
+ previously passed with a warning now fail. The rule count and the declared
75
+ minimum are updated across all nine files that asserted them.
76
+
77
+ ### Added
78
+
79
+ - **`/multi-agent:refactor` band E (Step 0c)**: the companion dev-toolkit MCP
80
+ server is now in scope. The step researches current MCP practice (protocol
81
+ revisions and SDK releases, host-client conventions, peer servers, the
82
+ platform tooling it wraps, field practice) and audits the toolkit repo
83
+ against it: syntax, stdout hygiene (stdout carries the JSON-RPC frames),
84
+ advertised tool counts vs reality, `files[]` coverage, dependency freshness.
85
+ Findings land in the merged Step 4 plan as band-E items, applied in that repo
86
+ and shipped by sync. New focus filter: `/multi-agent:refactor dev-toolkit`.
87
+ - **`/multi-agent:sync` Step 3d**: ships the dev-toolkit MCP server when it
88
+ moved (dirty tree, unpushed commits, or an untagged version). Seven ship
89
+ gates run before anything leaves the machine, including a `tools/list`
90
+ stdio handshake that must answer with a non-zero tool count, an
91
+ advertised-count match against README and `package.json`, an
92
+ `npm pack --dry-run` check that every runtime `tools/*/` directory is inside
93
+ `files[]`, and a version-contract check against the minimums pipeline skills
94
+ declare. Publish goes to the registry from that repo's `publishConfig`
95
+ through a throwaway `--userconfig` built from the `npm` logical Keychain key.
96
+ Outside autopilot / `release` it asks first; `/multi-agent:sync dev-toolkit`
97
+ runs only this step.
98
+ - **`global.devToolkit` preference** (schema + template): `enabled`, `label`,
99
+ `localPath`, `mcpServerName`, `packageName`, `registry`, `repoUrl`. Both
100
+ commands fall back to auto-detecting the repo from the `mcpServers`
101
+ registration when `localPath` is absent, and skip silently when nothing
102
+ resolves. No path is ever hardcoded.
103
+
104
+ - **`smoke-command-inventory.sh`**: the command count is now DERIVED from
105
+ `pipeline/commands/multi-agent/*/` and the prose must agree with the tree
106
+ (contract header, both sync surfaces, every command listed on all three, and a
107
+ `shared/core` skill counterpart per command). `smoke-generate-issue.sh` and
108
+ `smoke-review-readiness.sh` stopped asserting the literal `41` and now compare
109
+ against the derived count too.
110
+ - **`lint-mcp-refs.mjs`**: every `mcp__<server>__<tool>` reference in
111
+ `commands/`, `skills/` and `multi-agent-refs/` must name a known registered
112
+ MCP server, and when the companion toolkit resolves locally the referenced
113
+ `dev-toolkit` tools are checked against its live `tools/list`. Wired into
114
+ `npm test` and `npm run test:quick`.
115
+ - **`validate-prefs.mjs`**: validates `preferences-template.json` against
116
+ `prefs.schema.json` (hard failure) and the local preferences file (advisory,
117
+ `--strict-live` to enforce). Dev-only (ajv), excluded from the published
118
+ package so the runtime stays zero-dep.
119
+ - `design-check` is registered in the command inventory: contract list +
120
+ category row, both sync inventories, and the Copilot mirror. Inventory is 42
121
+ commands.
122
+
123
+ ### Fixed
124
+
125
+ - **Every `mcp__dev_toolkit__*` reference is now `mcp__dev-toolkit__*`** (55
126
+ lines across 10 files). A host composes MCP tool names as
127
+ `mcp__<registered-server-name>__<tool>` and the server registers as
128
+ `dev-toolkit`, so the snake_case form named tools that do not exist. The worst
129
+ case was silent: `design-check`'s `allowed-tools` allowlist matched nothing, so
130
+ the skill was denied the tools it needs, and `smoke-compliance-skills.sh`
131
+ asserted the wrong spelling and kept the gate green.
132
+ - `prefs.schema.json` accepted neither the template it describes nor a real
133
+ preferences file. Now declared: `global.modelFallback`, the `_*Template`
134
+ documentation blocks, nullable `defaultJiraKey`, `keychainMapping.figma_pat` /
135
+ `figma_user` / `claude_oauth_token` / `claude_oauth_token_fallback` (all four
136
+ resolved by shipped flows), project-level `componentDevWorkflow`, and a
137
+ `defaultReviewers` ceiling that fits real reviewer groups (10 -> 40).
138
+ - `global.derivedSkillSources` is now declared in `prefs.schema.json`. It was
139
+ used by refactor Step 0b and shipped in the preferences template, but the
140
+ strict (`additionalProperties: false`) global block rejected it.
141
+ - `/multi-agent:sync` Step 3d prefers the toolkit repo's own gate script
142
+ (`npm run gates`) over the inline gate list, so the definition lives in the
143
+ repo being shipped and the two cannot drift apart.
144
+
145
+ ---
146
+
147
+ ## [12.5.0] - 2026-07-24
148
+
149
+ Repo learning loop: repeated runs on the same repo produce better and cheaper
150
+ output over time. Plus a round of worktree hardening.
151
+
152
+ ### Added
153
+
154
+ - **Freshness gate** for the triage corpus: `triage-memory` stamps each stored
155
+ row with the file's git `file_sha`, and queries annotate `stale=true` when
156
+ the file changed since the lesson was recorded, so dead lessons stop
157
+ resurfacing in later runs.
158
+ - **Causal diagnosis** on lessons: `learnings-ledger` rows carry an optional
159
+ `diagnosis` (the verbal root-cause "why", per Reflexion), and Phase 4's
160
+ lesson-memory loop now records it. `brief` renders it as `(why: ...)` so the
161
+ reason, not just the outcome, re-enters Phase 1 on the next run.
162
+ - **`learning-curve.mjs`** (+ smoke): a time-bucketed trend over
163
+ `metrics.jsonl` (first-pass clean rate, review cycles, rework per task,
164
+ tokens per task, cache ratio) that shows whether a repo's runs are improving.
165
+ - **`prompt-assembly.md`**: stable-prefix prompt-cache guidance, referenced
166
+ from `phases.md`, so lazy-loaded phase docs stay cache-friendly.
167
+
168
+ ### Changed
169
+
170
+ - Worktree handling hardened: `.worktrees/` is now a first-class member of the
171
+ traversal-prune skip set (`node_modules`, `Pods`, `.build`, `DerivedData`,
172
+ `.next`) across every tree walker (`repo-map`, `repo-cache`,
173
+ `extract-conventions`, `shadow-git`), so no walker descends into a worktree
174
+ checkout. Phase 0 gains an explicit residue-guard + traversal-prune contract;
175
+ Phase 5 heals stale worktree admin state before recreating a worktree.
176
+ - `eval-mine-corpus` now reads the corpus from the per-repo memory dir it is
177
+ actually written to (was a path that never received data).
178
+ - Phase-doc total token budget recalibrated 50000 -> 51000 for the new
179
+ contracts (prose compressed first; every per-phase max still passes).
180
+
181
+ ### Fixed
182
+
183
+ - `gc-worktrees.sh` anchors the repo on the main worktree and resolves paths on
184
+ both sides, so orphan detection no longer misfires from inside a worktree.
185
+
17
186
  ## [12.4.0] - 2026-07-23
18
187
 
19
188
  User-defined routines: manage your own recurring, project-specific jobs as
package/README.md CHANGED
@@ -64,7 +64,7 @@ The discipline behind all of this — bounded loops, evidence gates, token-budge
64
64
  | Local | `/multi-agent:local "task"` | Full pipeline, current branch (no worktree) |
65
65
  | Finish | `/multi-agent:finish` | Run the review→test→commit→report tail over local work |
66
66
 
67
- Helpers: `setup`, `status`, `resume #N`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `create-jira`. Full list: `/multi-agent:help`.
67
+ Helpers: `setup`, `status`, `resume #N`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `create-jira`, `save`, `routines`, `forget`. Full list: `/multi-agent:help`.
68
68
 
69
69
  ## Stacks
70
70
 
package/docs/features.md CHANGED
@@ -249,6 +249,26 @@ Pipeline learns behavioral signals (feedback corrections, project constraints, e
249
249
 
250
250
  **What does NOT go in memory**: architecture, code patterns, build gotchas, design decisions — those belong in the knowledge base.
251
251
 
252
+ ### Lesson Diagnosis (Reflexion)
253
+
254
+ Phase 4's lesson-memory loop records the causal root cause of each fix (`--diagnosis`), not just the outcome: the verbal "why" that prevents recurrence (Reflexion). `learnings-ledger.mjs brief` renders it as `(why: ...)` back into Phase 1 + triage on the next run, so the reason re-enters the loop, not only the symptom.
255
+
256
+ ### Corpus Freshness Gate
257
+
258
+ Each triage-corpus row is stamped with the file's git `file_sha`; a query annotates `stale=true` when the file changed since the lesson was recorded, so lessons about code that has since moved on stop resurfacing.
259
+
260
+ ### Learning Curve
261
+
262
+ `learning-curve.mjs` renders a time-bucketed trend over `metrics.jsonl` (first-pass clean rate, review cycles, rework per task, tokens per task, cache ratio) so a repo's runs can be shown getting better and cheaper over time. Flags: `--bucket=<days>`, `--since`, `--json`, `--markdown`.
263
+
264
+ ## User-Defined Routines
265
+
266
+ Turn a recurring, project-specific job into a first-class `/multi-agent:<name>` command.
267
+
268
+ - **`/multi-agent:save`** distills candidate routines from the work just done this session (and named procedures in `~/.claude/CLAUDE.md`), offers them in a multi-select picker (pick one, combine several into one, or free-text a new one), and registers the chosen routine.
269
+ - **`/multi-agent:routines`** lists saved routines (in `outputLanguage`); **`/multi-agent:forget`** removes one (guarded: never touches a shipped command).
270
+ - Backed by `routine-registry.mjs`. Saved routines are `local-only: true` command dirs + a `prefs.global.routines` entry: preserved across `/multi-agent:update` by install snapshot/restore, never synced to the public repo, and never counted in the command inventory.
271
+
252
272
  ## Integrations
253
273
 
254
274
  ### Figma / Component Generation (dispatched to marketplace plugins)
package/index.js CHANGED
@@ -36,7 +36,13 @@ if (command === "--version" || command === "-v" || command === "version") {
36
36
  } else if (!command || command === "install") {
37
37
  await import(pathToFileURL(join(__dirname, "install.js")).href);
38
38
  } else if (command === "uninstall" || command === "delete") {
39
- await import(pathToFileURL(join(__dirname, "pipeline", "scripts", "uninstall.mjs")).href);
39
+ const { main } = await import(
40
+ pathToFileURL(join(__dirname, "pipeline", "scripts", "uninstall.mjs")).href
41
+ );
42
+ await main().catch((e) => {
43
+ console.error("uninstall failed:", e.message);
44
+ process.exit(1);
45
+ });
40
46
  } else if (command === "help") {
41
47
  console.log(`
42
48
  multi-agent-pipeline — 8-phase AI development pipeline
@@ -13,5 +13,6 @@ export const DEV_ONLY_SCRIPTS = Object.freeze([
13
13
  "smoke-figma-config-schema.sh",
14
14
  "smoke-personal-data.sh", // scanner contains the patterns it detects
15
15
  "smoke-install-leak-gate.sh", // same — scanner shadows the install pipeline
16
+ "validate-prefs.mjs", // needs ajv (devDependency); end users have no node_modules here
16
17
  "fixtures", // smoke test fixtures live in the repo only, never ship to users
17
18
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "12.4.0",
3
+ "version": "12.6.0",
4
4
  "description": "8-phase AI development pipeline with full orchestration on Claude Code and Copilot CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -14,11 +14,11 @@
14
14
  },
15
15
  "scripts": {
16
16
  "start": "node index.js",
17
- "test": "node --test test/*.test.mjs && node pipeline/scripts/run-smokes.mjs && node pipeline/scripts/lint-skills.mjs && node pipeline/scripts/eval-triage.mjs && node pipeline/scripts/eval-golden-tasks.mjs && node pipeline/scripts/eval-intent.mjs && node pipeline/scripts/validate-schemas.mjs",
17
+ "test": "node --test test/*.test.mjs && node pipeline/scripts/run-smokes.mjs && node pipeline/scripts/lint-skills.mjs && node pipeline/scripts/lint-mcp-refs.mjs && node pipeline/scripts/eval-triage.mjs && node pipeline/scripts/eval-golden-tasks.mjs && node pipeline/scripts/eval-intent.mjs && node pipeline/scripts/validate-schemas.mjs && node pipeline/scripts/validate-prefs.mjs",
18
18
  "test:unit": "node --test test/*.test.mjs",
19
19
  "test:smoke": "node pipeline/scripts/run-smokes.mjs",
20
20
  "lint:skills": "node pipeline/scripts/lint-skills.mjs",
21
- "test:quick": "node --test test/*.test.mjs && node pipeline/scripts/lint-skills.mjs",
21
+ "test:quick": "node --test test/*.test.mjs && node pipeline/scripts/lint-skills.mjs && node pipeline/scripts/lint-mcp-refs.mjs",
22
22
  "test:coverage": "c8 --check-coverage --reporter=text --reporter=lcov node --test test/*.test.mjs && c8 report",
23
23
  "lint": "eslint .",
24
24
  "lint:fix": "eslint . --fix",
@@ -72,6 +72,7 @@
72
72
  "LICENSE",
73
73
  "!pipeline/scripts/smoke-figma-config-schema.sh",
74
74
  "!pipeline/scripts/smoke-personal-data.sh",
75
+ "!pipeline/scripts/validate-prefs.mjs",
75
76
  "!pipeline/scripts/smoke-install-leak-gate.sh",
76
77
  "!docs/internal/**"
77
78
  ],
@@ -85,7 +85,7 @@ Example: new `MANAGE_EXTERNAL_STORAGE` permission → `(google-play-compliance /
85
85
 
86
86
  The two SKILL.md files contain tabular rule catalogs:
87
87
 
88
- - **apple-archive-compliance** - 17 rules (privacy-manifest, required-reason-api, info-plist, code-signing, embedded-sdk, entitlement, asset-validation, binary-size, team-id-consistency, provisioning-profile, swift-abi, extension-signing, ipv6-compliance, debug-tool-leak, production-hygiene, duplicate-resource, dead-reference) with ITMS codes + App Store Review Guideline refs.
88
+ - **apple-archive-compliance** - 18 rules (privacy-manifest, required-reason-api, info-plist, code-signing, embedded-sdk, entitlement, asset-validation, binary-size, team-id-consistency, provisioning-profile, swift-abi, extension-signing, ipv6-compliance, debug-tool-leak, production-hygiene, duplicate-resource, dead-reference, sdk-floor) with ITMS codes + App Store Review Guideline refs.
89
89
  - **google-play-compliance** - 21 rules across Technical / Security / Privacy / Hygiene categories with Play policy refs.
90
90
 
91
91
  Cite rule + ref in your Output Format's `Category:` line so the code-reviewer and triage layers inherit the reference text unchanged.
@@ -1,14 +1,14 @@
1
1
  ---
2
- description: Scan an .xcarchive for Apple App Store Review compliance (17-rule deep audit)
2
+ description: Scan an .xcarchive for Apple App Store Review compliance (18-rule deep audit)
3
3
  allowed-tools: Bash, Read, Glob
4
4
  ---
5
5
 
6
- Run the `ios_app_store_audit` MCP tool (shipped in `@mmerterden/dev-toolkit-mcp` ≥ v2.4)
7
- on an iOS archive. Backed by the same 17-rule catalog as `/multi-agent:test "store-ready"`
6
+ Run the `ios_app_store_audit` MCP tool (shipped in `@mmerterden/dev-toolkit-mcp` ≥ v2.9.0)
7
+ on an iOS archive. Backed by the same 18-rule catalog as `/multi-agent:test "store-ready"`
8
8
  - this command is the lighter, post-hoc form (no platform-detect, no UI sweep).
9
9
 
10
10
  > **v8.4.0 migration note:** The standalone `~/ArchiveGuard/.build/release/archive-guard`
11
- > binary has been retired. The 17 rules live in
11
+ > binary has been retired. The 18 rules live in
12
12
  > `dev-toolkit-mcp/tools/ios-app-store-audit/rules/` as a pure-Node port. Output JSON
13
13
  > shape is unchanged.
14
14
 
@@ -21,7 +21,7 @@ on an iOS archive. Backed by the same 17-rule catalog as `/multi-agent:test "sto
21
21
  2. Ask user which archive to scan (or use the argument if provided: $ARGUMENTS).
22
22
  3. Run the scan - preferred mode is the native MCP tool call:
23
23
  ```
24
- mcp__dev_toolkit__ios_app_store_audit({
24
+ mcp__dev-toolkit__ios_app_store_audit({
25
25
  archive_path: "<archive_path>",
26
26
  rules: "all" // "all" | "core" | "deep" | csv of ruleIDs
27
27
  })
@@ -83,6 +83,7 @@ Lib scripts (`~/.claude/lib/`):
83
83
  | `create-jira ["desc"] [figma-url] [swagger-url]` | Create a standards-compliant Jira issue: asks the type (**Task** / **Bug** / **Story**), mines the project's recent same-type issues for conventions (summary format, labels, priority, test-scenario style), detects the active sprint, drafts from a standard template with auto-sizing sections (Design Reference / API Contract / Screenshots appear only when their source is given), asks about unknown fields, then full draft preview + explicit approval before create. No worktree, no commits. |
84
84
  | `test` or `test [args]` | UI Bug Hunter - screenshot + tap + analyze on booted simulator via MCP (read `$HOME/.claude/commands/sim-test.md`). `/multi-agent:test` also resolves here via the `commands/multi-agent/test/SKILL.md` delegate. |
85
85
  | `manual-test [#id]` | Phase 5 standalone Manual Test - checks out the task branch, prints Xcode / SourceTree hints, waits for user verdict (`ok` / `fix: ...`). |
86
+ | `design-check [scope]` | Mock-mode vs Figma design audit (iOS / Android, local-only). Pick repo + module → mock-support feasibility gate (halts if unsupported) → **scenario inventory** (every launch arg / scenario case / scenario code / fixture / deep link becomes a countable target with file+line evidence) → scope resolve (empty = module, screen, `screen@variant`, target id, Figma URLs, `--resume`) → worktree Debug build + mock launch → drive EACH target by its own driver, capturing tap-reachable sub-states with it → per-variant pixel + px-spacing + typography + color compare → report (side-by-side + annotated overlay + stacked findings + fix prompt) exported to `~/DesignChecks/` as HTML + PDF (+ Confluence if enabled). **Coverage gate**: a target is audited or skipped with a concrete reason, else the run is reported INCOMPLETE with the missing ids. No commits, no CI. |
86
87
  | `stack [ios\|android\|backend\|mobile\|all]` | Swap skills for next conversation. No arg = show current stack. |
87
88
  | `language [en\|tr]` | Show or set the assistant `outputLanguage` (explanations and chat replies). `promptLanguage` is locked to `en` and is not toggleable. No arg = show current `outputLanguage`. With `en` or `tr` = set and persist `outputLanguage`. External payloads (commits, PR bodies, Jira) stay English. |
88
89
  | `setup` | Keychain token + Git Identity onboarding |
@@ -134,6 +135,7 @@ This command uses lazy loading for token efficiency. Read the relevant sub-file
134
135
  | Audit tools (Phase 5/6) | `$HOME/.claude/multi-agent-refs/audit-guide.md` |
135
136
  | `test` | `$HOME/.claude/commands/sim-test.md` (colon-form `/multi-agent:test` uses the delegate at `commands/multi-agent/test/SKILL.md`) |
136
137
  | `manual-test` | `$HOME/.claude/commands/multi-agent/manual-test/SKILL.md` |
138
+ | `design-check` | `$HOME/.claude/commands/multi-agent/design-check/SKILL.md` |
137
139
 
138
140
  **Modifier flags** (`--dev`, `--local`, `autopilot`) and **ops** (`status`, `log`, `resume`, `kill`, `clear-logs`, `purge`, `review`) are parsed inline by this file - no separate spec files, they compose with the pipeline or do one-shot work.
139
141