@mmerterden/multi-agent-pipeline 14.2.2 → 15.0.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 (122) hide show
  1. package/CHANGELOG.md +76 -6
  2. package/README.md +15 -8
  3. package/README.tr.md +15 -8
  4. package/docs/FIGMA_PIPELINE.md +3 -3
  5. package/docs/adr/0006-skills-core-external-split.md +1 -1
  6. package/docs/adr/0009-claude-stack-skills-plugin-only.md +31 -0
  7. package/docs/adr/README.md +1 -0
  8. package/docs/architecture.md +7 -7
  9. package/docs/ecosystem.md +28 -28
  10. package/docs/features.md +5 -5
  11. package/index.js +2 -0
  12. package/install/_codex-agents.mjs +11 -2
  13. package/install/_common.mjs +65 -1
  14. package/install/_dev-only-files.mjs +0 -1
  15. package/install/_platform-filter.mjs +73 -7
  16. package/install/_plugin-skills.mjs +19 -8
  17. package/install/claude.mjs +144 -59
  18. package/install/codex.mjs +28 -3
  19. package/install/copilot.mjs +36 -11
  20. package/install/index.mjs +6 -2
  21. package/install/templates/codex-instructions.md +1 -1
  22. package/install/templates/copilot-instructions.md +3 -3
  23. package/package.json +1 -2
  24. package/pipeline/commands/multi-agent/SKILL.md +2 -0
  25. package/pipeline/commands/multi-agent/analysis/SKILL.md +3 -3
  26. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
  27. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +9 -9
  28. package/pipeline/commands/multi-agent/channels/SKILL.md +1 -1
  29. package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +186 -0
  30. package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
  31. package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
  32. package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
  33. package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
  34. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
  35. package/pipeline/commands/multi-agent/help/SKILL.md +19 -4
  36. package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +2 -2
  37. package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
  38. package/pipeline/commands/multi-agent/prune-prompts/SKILL.md +81 -0
  39. package/pipeline/commands/multi-agent/resume/SKILL.md +1 -1
  40. package/pipeline/commands/multi-agent/{ship → resume-local}/SKILL.md +8 -8
  41. package/pipeline/commands/multi-agent/setup/SKILL.md +5 -5
  42. package/pipeline/commands/multi-agent/stack/SKILL.md +55 -43
  43. package/pipeline/commands/multi-agent/store-ready/SKILL.md +3 -3
  44. package/pipeline/commands/multi-agent/sync/SKILL.md +18 -11
  45. package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +1 -1
  46. package/pipeline/commands/multi-agent/uninstall/SKILL.md +2 -0
  47. package/pipeline/commands/multi-agent/update/SKILL.md +1 -1
  48. package/pipeline/lib/issue-fetcher.sh +1 -1
  49. package/pipeline/lib/parse-complaints.sh +306 -0
  50. package/pipeline/multi-agent-refs/channels/wiki.md +3 -3
  51. package/pipeline/multi-agent-refs/complaint-analysis-template.md +99 -0
  52. package/pipeline/multi-agent-refs/component-dispatch.md +6 -6
  53. package/pipeline/multi-agent-refs/cross-cli-contract.md +16 -16
  54. package/pipeline/multi-agent-refs/features/external-context-injection.md +1 -1
  55. package/pipeline/multi-agent-refs/features/stack-skill-routing.md +5 -5
  56. package/pipeline/multi-agent-refs/generate-issue.md +1 -1
  57. package/pipeline/multi-agent-refs/phases/modes.md +1 -1
  58. package/pipeline/multi-agent-refs/phases/phase-0-init.md +1 -1
  59. package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +7 -7
  60. package/pipeline/multi-agent-refs/phases/phase-2-planning.md +5 -5
  61. package/pipeline/multi-agent-refs/phases/phase-3-dev.md +3 -3
  62. package/pipeline/multi-agent-refs/phases/phase-4-review.md +12 -12
  63. package/pipeline/multi-agent-refs/phases/phase-5-test.md +1 -1
  64. package/pipeline/multi-agent-refs/tracker-contract.md +1 -1
  65. package/pipeline/multi-agent-refs/wiki-capture.md +2 -2
  66. package/pipeline/preferences-template.json +13 -5
  67. package/pipeline/rules/figma-pipeline.md +2 -2
  68. package/pipeline/schemas/agent-state.schema.json +1 -1
  69. package/pipeline/schemas/complaint-analysis-spec.schema.json +216 -0
  70. package/pipeline/schemas/migrations/prefs-2.5.0-to-2.6.0.mjs +46 -0
  71. package/pipeline/schemas/prefs.schema.json +276 -66
  72. package/pipeline/schemas/token-budget.json +2 -2
  73. package/pipeline/scripts/_stack-routing.mjs +79 -0
  74. package/pipeline/scripts/audit-log-rotate.sh +4 -1
  75. package/pipeline/scripts/build-skills-index.mjs +11 -0
  76. package/pipeline/scripts/build-stack-plugins.mjs +28 -60
  77. package/pipeline/scripts/check-derived-drift.mjs +52 -28
  78. package/pipeline/scripts/gc-worktrees.sh +4 -1
  79. package/pipeline/scripts/gen-skills-index.mjs +1 -1
  80. package/pipeline/scripts/match-skills.mjs +8 -2
  81. package/pipeline/scripts/migrate-prefs.mjs +28 -20
  82. package/pipeline/scripts/phase-tracker.sh +13 -5
  83. package/pipeline/scripts/phase0-exit-gate.mjs +3 -2
  84. package/pipeline/scripts/run-aggregator.mjs +7 -2
  85. package/pipeline/scripts/scan-agent-config.sh +1 -1
  86. package/pipeline/scripts/skill-conformance.mjs +165 -30
  87. package/pipeline/scripts/smoke-cross-cli-behavior.sh +1 -1
  88. package/pipeline/scripts/test-gap-rules/android.json +25 -0
  89. package/pipeline/scripts/test-gap-rules/ios.json +34 -0
  90. package/pipeline/scripts/test-gap-rules/node.json +29 -0
  91. package/pipeline/scripts/test-gap-rules/python.json +25 -0
  92. package/pipeline/scripts/uninstall.mjs +158 -11
  93. package/pipeline/scripts/validate-complaint-doc.mjs +229 -0
  94. package/pipeline/scripts/validate-reviewer.mjs +9 -3
  95. package/pipeline/skills/.skill-manifest.json +156 -108
  96. package/pipeline/skills/.skills-index.json +449 -12
  97. package/pipeline/skills/shared/README.md +14 -10
  98. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
  99. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  100. package/pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md +49 -0
  101. package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
  102. package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
  103. package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
  104. package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
  105. package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -2
  106. package/pipeline/skills/shared/core/multi-agent-prune-prompts/SKILL.md +83 -0
  107. package/pipeline/skills/shared/core/{multi-agent-ship → multi-agent-resume-local}/SKILL.md +6 -6
  108. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +79 -22
  109. package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +1 -1
  110. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -8
  111. package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +1 -1
  112. package/pipeline/skills/shared/external/ios-coding-standard/modules/_TEMPLATE.yml +2 -2
  113. package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +368 -33
  114. package/pipeline/skills/shared/external/ios-coding-standard/references/swiftlint.draft.yml +1 -2
  115. package/pipeline/skills/shared/external/ios-coding-standard/scripts/check_structure.py +765 -0
  116. package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +75 -0
  117. package/pipeline/skills/shared/external/ios-module-structure/modules/_TEMPLATE.yml +131 -0
  118. package/pipeline/skills/shared/external/ios-module-structure/references/rules.yml +559 -0
  119. package/pipeline/skills/shared/external/ios-module-structure/scripts/check_structure.py +765 -0
  120. package/pipeline/skills/shared/external/localization-reuse-map/example-mapping.json +53 -10
  121. package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +4 -3
  122. package/pipeline/skills/skills-index.md +7 -4
@@ -2,24 +2,24 @@
2
2
 
3
3
  Single source of truth for skills delivered to both Claude Code (`~/.claude/skills/`) and Copilot CLI (`~/.copilot/skills/`) by the installer.
4
4
 
5
- **Total:** 201 skills (52 core + 149 external). Auto-generated by `scripts/gen-skills-index.mjs` - do not edit by hand.
5
+ **Total:** 205 skills (54 core + 151 external). Auto-generated by `scripts/gen-skills-index.mjs` - do not edit by hand.
6
6
 
7
7
  ## Directory layout
8
8
 
9
- - **`core/`** - 52 `multi-agent*` orchestration skills that are pipeline-critical. Edits here are core-code changes.
10
- - **`external/`** - 149 iOS / Android / generic skills imported from the upstream skill library. Mirrors of third-party guidance.
11
- - Install destination stays flat: both trees flatten into `~/.claude/skills/` and `~/.copilot/skills/`. See ADR-0006 for the rationale.
9
+ - **`core/`** - 54 `multi-agent*` orchestration skills that are pipeline-critical. Edits here are core-code changes.
10
+ - **`external/`** - 151 iOS / Android / generic skills imported from the upstream skill library. Mirrors of third-party guidance.
11
+ - Install destinations (ADR-0009): Claude Code gets NO local copy of `external/` - it loads those skills from the `multi-agent-plugins` marketplace, namespaced (`ai-<stack>-toolkit:<name>`); only the two compliance catalogs from `core/` land in `~/.claude/skills/`. Copilot CLI and Codex CLI receive a flat copy filtered to the enabled stacks. `external/` remains the single authoring source that `build-stack-plugins.mjs` publishes from.
12
12
 
13
13
  Source layout is logical grouping only - skill discovery at runtime is unchanged.
14
14
 
15
15
  ## Categories
16
16
 
17
- - [Pipeline Orchestration](#pipeline-orchestration) - 52
18
- - [iOS / Apple Ecosystem](#ios-apple-ecosystem) - 89
17
+ - [Pipeline Orchestration](#pipeline-orchestration) - 54
18
+ - [iOS / Apple Ecosystem](#ios-apple-ecosystem) - 90
19
19
  - [Android / Kotlin](#android-kotlin) - 13
20
20
  - [Web / Frontend](#web-frontend) - 10
21
21
  - [Backend / API](#backend-api) - 11
22
- - [Cross-cutting](#cross-cutting) - 26
22
+ - [Cross-cutting](#cross-cutting) - 27
23
23
 
24
24
  ## Pipeline Orchestration
25
25
 
@@ -29,10 +29,11 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
29
29
  | [`google-play-compliance`](./core/google-play-compliance/) | `core` | Google Play Store publication compliance - bundletool + aapt2 + apksigner orchestration + 21-rule policy catalog with Play Console error c |
30
30
  | [`multi-agent`](./core/multi-agent/) | `core` | Task orchestrator: runs the full pipeline from a Jira ID or GitHub Issue URL - analysis → plan → TDD development → parallel review (Fable |
31
31
  | [`multi-agent-analysis`](./core/multi-agent-analysis/) | `core` | Standalone feature-spec analysis (v3 template). Platform-agnostic concept layer with repo-driven convention extraction and per-platform Pass |
32
- | [`multi-agent-analysis-resolve`](./core/multi-agent-analysis-resolve/) | `core` | Resolve the Section 20 Risks and Open Questions of an analysis v3 document one row at a time. Proposes up to 3 source-labeled answer candida |
32
+ | [`multi-agent-analysis-resolve`](./core/multi-agent-analysis-resolve/) | `core` | Resolve the Section 20 Risks and Open Questions of an analysis v3 document one row at a time: up to 3 source-labeled answer candidates per r |
33
33
  | [`multi-agent-autopilot`](./core/multi-agent-autopilot/) | `core` | Launch any task in autopilot mode: skips every confirmation, runs end-to-end autonomously. Use when a task should run end to end with no con |
34
34
  | [`multi-agent-build-optimize`](./core/multi-agent-build-optimize/) | `core` | Wrapper that dispatches to xcode-build-orchestrator on iOS repos. Benchmarks the current Xcode build, runs compilation / project / SPM analy |
35
35
  | [`multi-agent-channels`](./core/multi-agent-channels/) | `core` | Multi-channel reporter - Jira/Confluence/Wiki/PR description. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbuck |
36
+ | [`multi-agent-complaint-analysis`](./core/multi-agent-complaint-analysis/) | `core` | Customer-complaint triage. Ingests complaints (paste, csv/xlsx/txt/json file, Jira issue, Confluence URL), fetches Graylog evidence per trx/ |
36
37
  | [`multi-agent-create-jira`](./core/multi-agent-create-jira/) | `core` | Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with |
37
38
  | [`multi-agent-design-check`](./core/multi-agent-design-check/) | `core` | Mock-mode vs Figma design audit (iOS / Android, local-only). Pick repo + module, gate on mock support, enumerate every state driver into a c |
38
39
  | [`multi-agent-dev`](./core/multi-agent-dev/) | `core` | Fast development mode: Init → Dev (Opus) → Review → Test → Commit → Report. Analysis and planning are skipped, review is not. Use when the w |
@@ -53,9 +54,11 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
53
54
  | [`multi-agent-log`](./core/multi-agent-log/) | `core` | Show the agent-log.md for the given task. With no ID, shows the most recent task. Use when asked what a task did, or to read its log. |
54
55
  | [`multi-agent-manual-test`](./core/multi-agent-manual-test/) | `core` | Switch to the active task's branch and prepare it for manual testing in Xcode. Phase 5 standalone (the UI Bug Hunter lives at multi-agent-te |
55
56
  | [`multi-agent-prune-logs`](./core/multi-agent-prune-logs/) | `core` | Delete per-task project logs under ~/.claude/logs/multi-agent (filter by age/project/task). Audit trail + metrics are preserved. Dry-run fir |
57
+ | [`multi-agent-prune-prompts`](./core/multi-agent-prune-prompts/) | `core` | Zero-base prompt review: measure the always-on instruction footprint, classify every rule block, propose keep/trial-removal/delete; applies |
56
58
  | [`multi-agent-purge`](./core/multi-agent-purge/) | `core` | ⚠️ Wipes every worktree, branch, log, and state file. Irreversible; asks for double confirmation. Use when every worktree, branch, log and s |
57
59
  | [`multi-agent-refactor`](./core/multi-agent-refactor/) | `core` | Analyse the project: extract adapted best-practices, hunt real bugs + improvement areas, check upstream drift of derived skills, research th |
58
60
  | [`multi-agent-resume`](./core/multi-agent-resume/) | `core` | Resume a stopped or failed task from the phase where it left off. Use when a task stopped or failed and should carry on from where it left o |
61
+ | [`multi-agent-resume-local`](./core/multi-agent-resume-local/) | `core` | Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenari |
59
62
  | [`multi-agent-review`](./core/multi-agent-review/) | `core` | Run parallel review on a branch diff or a Pull Request: 2 models on Claude Code (Fable + Sonnet), 3 models on Copilot CLI (GPT + Opus + Sonn |
60
63
  | [`multi-agent-review-issue`](./core/multi-agent-review-issue/) | `core` | Assess whether a GitHub issue is ready for multi-agent development: fetch it, grade scope / acceptance criteria / repro / design / API / sta |
61
64
  | [`multi-agent-review-jira`](./core/multi-agent-review-jira/) | `core` | Assess whether a Jira issue is ready for multi-agent development: fetch it, grade scope / acceptance criteria / repro / design / API / stack |
@@ -64,8 +67,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
64
67
  | [`multi-agent-scan`](./core/multi-agent-scan/) | `core` | Skill security scan: walks local skill directories against a tiered pattern catalog. Use when local skill directories need checking for unsa |
65
68
  | [`multi-agent-search`](./core/multi-agent-search/) | `core` | Log search across every agent-log.md with smart ranking and filters. Optional --semantic flag queries the per-repo triage corpus. Use when s |
66
69
  | [`multi-agent-setup`](./core/multi-agent-setup/) | `core` | First-run setup wizard: keychain token discovery, Git Identity onboarding, and pipeline preparation. Use when the pipeline is being set up f |
67
- | [`multi-agent-ship`](./core/multi-agent-ship/) | `core` | Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenari |
68
- | [`multi-agent-stack`](./core/multi-agent-stack/) | `core` | Select the active stack for this repo by enabling the matching marketplace plugin(s) in .claude/settings.json (ios/android/mobile/backend/fr |
70
+ | [`multi-agent-stack`](./core/multi-agent-stack/) | `core` | Select the active stack(s) for this repo by enabling the matching marketplace plugin(s) in .claude/settings.json. Multi-select: pass several |
69
71
  | [`multi-agent-status`](./core/multi-agent-status/) | `core` | Show every multi-agent task's ID, phase, branch, and status. Use when asked what is running, or for an overview of every task. |
70
72
  | [`multi-agent-store-ready`](./core/multi-agent-store-ready/) | `core` | Pre-submission store readiness for a built package, iOS and Android, local-only. Three symmetric gates per platform: a static package audit, |
71
73
  | [`multi-agent-sync`](./core/multi-agent-sync/) | `core` | One-shot sync of the entire multi-agent ecosystem: Claude Code, Copilot CLI, pipeline repo, website, and the dev-toolkit MCP server. Use whe |
@@ -119,6 +121,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
119
121
  | [`ios-debugger-agent`](./external/ios-debugger-agent/) | `external` | Debug the current iOS project on a booted simulator with XcodeBuildMCP. Use when an iOS bug has to be reproduced and diagnosed on a booted s |
120
122
  | [`ios-developer`](./external/ios-developer/) | `external` | Develop native iOS applications with Swift/SwiftUI. Masters iOS 18, SwiftUI, UIKit integration, Core Data, networking, and App Store optimiz |
121
123
  | [`ios-localization`](./external/ios-localization/) | `external` | Implement, review, or improve localization and internationalization in iOS/macOS apps - String Catalogs (.xcstrings), generated localizabl |
124
+ | [`ios-module-structure`](./external/ios-module-structure/) | `external` | The ios-module-structure rule registry: stable-ID rules over where a declaration lives, what its file is called and what its folder must con |
122
125
  | [`ios-networking`](./external/ios-networking/) | `external` | Build, review, or improve networking code in iOS/macOS apps using URLSession with async/await, structured concurrency, and modern Swift patt |
123
126
  | [`ios-security`](./external/ios-security/) | `external` | Secure iOS apps with Keychain Services, CryptoKit encryption, biometric authentication (Face ID, Touch ID), Secure Enclave key storage, LACo |
124
127
  | [`ios-simulator`](./external/ios-simulator/) | `external` | Manages iOS Simulator devices and tests app behaviour with xcrun simctl: device lifecycle, app install and launch, push notification and loc |
@@ -242,6 +245,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
242
245
  | [`github-actions-templates`](./external/github-actions-templates/) | `external` | Production-ready GitHub Actions workflow patterns for testing, building, and deploying applications. Use when a GitHub Actions workflow has |
243
246
  | [`help-skills`](./external/help-skills/) | `external` | Mevcut tum iOS/Swift skill'lerini listeler ve ne ise yaradiklarini aciklar. Use when asked which iOS or Swift skills are available and what |
244
247
  | [`humanizer`](./external/humanizer/) | `external` | \| |
248
+ | [`localization-reuse-map`](./external/localization-reuse-map/) | `external` | >- |
245
249
  | [`pdfkit`](./external/pdfkit/) | `external` | Display and manipulate PDF documents using PDFKit. Use when embedding PDFView to show PDF files, creating or modifying PDFDocument instances |
246
250
  | [`search-first`](./external/search-first/) | `external` | \| |
247
251
  | [`skill-creator`](./external/skill-creator/) | `external` | Author and refine skills for a plugin/toolkit efficiently. Use when creating a new skill, trimming or splitting an existing one, writing a s |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: multi-agent-analysis-resolve
3
3
  language: en
4
- description: "Resolve the Section 20 Risks and Open Questions of an analysis v3 document one row at a time. Proposes up to 3 source-labeled answer candidates per row (from evidence / from repo / AI reasoned), merges the chosen answer into the target body section, and updates the doc in place with a changelog bump. Companion to multi-agent-analysis. Use when an analysis document's open questions and risks need answering row by row before development starts."
4
+ description: "Resolve the Section 20 Risks and Open Questions of an analysis v3 document one row at a time: up to 3 source-labeled answer candidates per row (evidence / repo / AI reasoned), chosen answer merged into the target section, doc updated in place with a changelog bump. Same locked decisions as /multi-agent:analysis. Use when an analysis document's open questions need answering before development starts."
5
5
  user-invocable: true
6
6
  argument-hint: "[path/to/analysis/<feature>-<platform>.md] [--autonomous]"
7
7
  ---
@@ -39,7 +39,7 @@ Thin wrapper around the vendored `xcode-build-orchestrator` skill so iOS users d
39
39
  ## Detailed implementation
40
40
 
41
41
  Full steps: `$HOME/.claude/commands/multi-agent/build-optimize/SKILL.md`.
42
- Upstream attribution: `$HOME/.claude/skills/NOTICE-xcode-build-skills.md`.
42
+ Upstream attribution: ai-ios-toolkit plugin NOTICE (xcode build skills).
43
43
 
44
44
  ## Notes
45
45
 
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: multi-agent-complaint-analysis
3
+ language: en
4
+ description: "Customer-complaint triage. Ingests complaints (paste, csv/xlsx/txt/json file, Jira issue, Confluence URL), fetches Graylog evidence per trx/conversation id, correlates read-only against the selected client + BFF repos; per complaint: client/bff root cause + fix plan + dev prompt, or core routing recommendation, or insufficient-evidence. Report only, no dev chaining. Use when customer-reported errors need layer triage."
5
+ user-invocable: true
6
+ argument-hint: "[\"<run-name>\"] [--file <path>] [<jira-id | jira-url | confluence-url> ...]"
7
+ ---
8
+
9
+ # multi-agent-complaint-analysis - Customer Complaint Triage
10
+
11
+ **Input**: $ARGUMENTS (optional run name, optional `--file <path>`, optional Jira ids / Confluence URLs; remaining free text = pasted complaints)
12
+
13
+ Triage of customer-reported errors across the layers the team owns. Per complaint: Graylog evidence by trx/conversation id, read-only repo correlation, and a verdict. Core failures get a routing recommendation to the backend core team, never a fix analysis. **Independent and read-only**: no branches, worktrees, commits, PRs, or dev chaining - the run ends at the report.
14
+
15
+ ## When to use
16
+
17
+ - A batch of customer complaints / store reviews / support tickets needs to be mapped to responsible layers (ios / android / web / mobile-bff / web-bff vs backend core)
18
+ - Production error reports carry trxId / conversationId values worth pulling from Graylog
19
+ - The team needs a forwardable routing record for core-side failures
20
+
21
+ ## Key rules
22
+
23
+ - Graylog is the primary evidence in this command (deliberate departure from the dev pipeline's advisory-only rule); a failed fetch degrades that complaint to `insufficient-evidence`, never halts the run.
24
+ - Ids are never guessed: complaints without trx/conv ids trigger a supply-or-skip prompt.
25
+ - Complaint text is redacted at intake (email / phone / card / national-id / PNR shapes); raw PII never reaches state or any output.
26
+ - Core is a residual classification, not a repo: no core-repo grepping, no fix speculation.
27
+ - Client/bff verdicts carry a development handoff: a fix plan referencing the existing architecture (`file:line` reuse-first steps) plus a fenced English dev prompt ready for the dev pipeline or a Jira description. The command still never runs dev itself.
28
+ - Output default is Local file; Confluence / Jira are posted only on request. Never closes or transitions issues.
29
+
30
+ ## Flow
31
+
32
+ | Phase | Action |
33
+ |---|---|
34
+ | 0. Intake | Run name + account picker + repo multi-select + layer-tag confirmation + multi-source complaint ingestion (`lib/parse-complaints.sh`) + id confirmation loop |
35
+ | 1. Graylog | Per-complaint `lib/fetch-graylog.sh --trx/--conv`; credential/host failure degrades and continues |
36
+ | 2. Correlate | Extract signals (endpoints, error codes, exceptions, source services) from Graylog hits; read-only grep across selected repos |
37
+ | 3. Triage | Verdict per complaint: `client:<layer>` / `bff:<layer>` (citations + fix plan grounded in the existing architecture + ready-to-run dev prompt) or `core` (routing recommendation) or `insufficient-evidence` |
38
+ | 4. Draft | Render 8-section report, humanizer pass, punctuation gate |
39
+ | 4.5 Output picker | Local file (default) / Confluence page / Jira comment (asked only after the draft exists) |
40
+ | 5. Dispatch | `validate-complaint-doc.mjs` gate, write/post, verdict-count summary. **Stop.** |
41
+
42
+ Pickers route through `lib/ask-choice.sh` per the picker contract.
43
+
44
+ ## Detailed implementation
45
+
46
+ Full steps: the Claude-side command doc for `complaint-analysis` (same phase structure and locked decisions).
47
+ Report template: `complaint-analysis-template.md` (8 sections; routing section required per core verdict).
48
+ State schema: `schemas/complaint-analysis-spec.schema.json`.
49
+ Report gate: `scripts/validate-complaint-doc.mjs` (front-matter, sections, verdict tokens, routing entries, punctuation, redaction-leak scan).
@@ -70,4 +70,4 @@ Before writing anything outward-facing - PR body, Jira comment, Confluence pag
70
70
 
71
71
  ## Intake warnings (`--dev` family)
72
72
 
73
- Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
73
+ Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:resume-local`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
@@ -62,4 +62,4 @@ Before writing anything outward-facing - PR body, Jira comment, Confluence pag
62
62
 
63
63
  ## Intake warnings (`--dev` family)
64
64
 
65
- Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
65
+ Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:resume-local`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
@@ -42,4 +42,4 @@ Before writing anything outward-facing - PR body, Jira comment, Confluence pag
42
42
 
43
43
  ## Intake warnings (`--dev` family)
44
44
 
45
- Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
45
+ Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:resume-local`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
@@ -48,4 +48,4 @@ Before writing anything outward-facing - PR body, Jira comment, Confluence pag
48
48
 
49
49
  ## Intake warnings (`--dev` family)
50
50
 
51
- Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:ship`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
51
+ Two checks belong at the top of every `--dev` run and are specified once in `$HOME/.claude/multi-agent-refs/phases/modes.md` "Intake warnings shared by the whole `--dev` family": an analysis document supplied to a mode that skips Analysis and Planning, and a branch that already carries the work (which wants `/multi-agent:resume-local`, not a second Dev pass). Read that section rather than reasoning about it from scratch.
@@ -10,9 +10,9 @@ argument-hint: "[module name or path]"
10
10
 
11
11
  **Input**: $ARGUMENTS - optionally a module name or path. When absent, Phase 1 discovers and asks.
12
12
 
13
- This routine is the **procedure**. The rules live in the `ios-coding-standard` skill, whose registry is
13
+ This routine is the **procedure**. The rules live in the `ai-ios-toolkit:ios-coding-standard` skill, whose registry is
14
14
  `references/rules.yml` and whose teaching doc is `references/STANDARD.md`. Load that
15
- skill first; it is installed on every host and carried by the iOS stack plugin, so
15
+ skill first; Claude Code loads it from the iOS stack plugin, Copilot/Codex from their local copy, so
16
16
  there is one registry rather than a copy per CLI. Never restate a rule here - cite its ID. A rule that is not in the
17
17
  registry is not a rule; if the audit needs one, propose it as `status: proposed` and say so.
18
18
 
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: multi-agent-prune-prompts
3
+ language: en
4
+ description: "Zero-base prompt review: measure the always-on instruction footprint, classify every rule block, propose keep/trial-removal/delete; applies only approved rows. Use when a new model ships or instructions have accumulated."
5
+ user-invocable: true
6
+ argument-hint: "[--report-only]"
7
+ ---
8
+
9
+ # multi-agent prune-prompts - Zero-Base Prompt Review
10
+
11
+ Instruction files only grow. Every rule was added because some model once got
12
+ something wrong, and nobody deletes a rule once a workaround ships. A newer
13
+ model needs fewer of them; the ones it no longer needs are pure context tax on
14
+ every session, and stale rules actively mislead.
15
+
16
+ The discipline this command applies (after Boris Cherny's advice): on a model
17
+ upgrade, assume ZERO instructions are needed, and let each line earn its way
18
+ back. A line earns its way back only after the model gets the same thing wrong
19
+ repeatedly (three strikes) WITHOUT it. Instructions are a cache of past model
20
+ failures; a new model invalidates that cache.
21
+
22
+ ## Flow
23
+
24
+ ### 1. MEASURE - the always-on footprint
25
+
26
+ Estimate tokens (chars/4) for each layer the model carries into every session:
27
+
28
+ ```bash
29
+ wc -c "$HOME/.claude/CLAUDE.md" 2>/dev/null
30
+ wc -c "$HOME"/.claude/rules/*.md 2>/dev/null
31
+ find "$PWD" -maxdepth 2 -name "CLAUDE.md" -exec wc -c {} + 2>/dev/null
32
+ ```
33
+
34
+ Report a table: layer, file, estimated tokens, share of total. Flag any single
35
+ file above ~2,000 estimated tokens.
36
+
37
+ ### 2. CLASSIFY - what kind of line is each rule
38
+
39
+ Walk CLAUDE.md + each rules/ file section by section. Classify every
40
+ instruction block:
41
+
42
+ | Class | Meaning | Default verdict |
43
+ |---|---|---|
44
+ | **Constraint** | Facts the model cannot infer (hosts, key names, branch formats, team conventions) | keep |
45
+ | **Failure patch** | "Never do X" added after a model did X | trial removal - the current model may not need it |
46
+ | **Restatement** | Something the model does correctly anyway (write tests, guard early) | delete |
47
+ | **Stale** | References files, commands or workflows that no longer exist | delete |
48
+
49
+ For failure patches, note WHEN the patch was added if git history shows it -
50
+ a patch older than the current model's release is the strongest removal
51
+ candidate.
52
+
53
+ ### 3. REPORT - the zero-base proposal
54
+
55
+ One table, every block accounted for: file, section, class, verdict
56
+ (keep / trial-removal / delete), and the one-line reason. Never a sample -
57
+ if a section is not in the table, the review did not happen.
58
+
59
+ With `--report-only`, stop here.
60
+
61
+ ### 4. APPLY - only what the user approves
62
+
63
+ Present the table, ask which verdicts to apply (all deletes / all
64
+ trial-removals too / pick rows). For approved rows, edit the files. Trial
65
+ removals move the block into `~/.claude/rules/.pruned/<file>.md` with a
66
+ dated header rather than deleting outright, so a strike-out can be reverted
67
+ by moving the block back.
68
+
69
+ ### 5. THE THREE-STRIKE RULE going forward
70
+
71
+ After a prune, when the model gets something wrong that a removed rule used
72
+ to cover, do NOT restore it on the first miss. Record the miss (the
73
+ `.pruned/` file has a `strikes:` line per block). Restore the line only on
74
+ the third occurrence of the SAME failure. One line back at a time - never
75
+ the whole file.
76
+
77
+ ## Boundaries
78
+
79
+ - Never touches skill bodies or command files - those load on demand and are
80
+ not part of the always-on footprint. The lint gate (`lint-skills.mjs`)
81
+ owns their budgets.
82
+ - Never touches `multi-agent-preferences.json` or anything under `logs/`.
83
+ - Applies nothing without explicit approval on the report table.
@@ -1,11 +1,11 @@
1
1
  ---
2
- name: multi-agent-ship
2
+ name: multi-agent-resume-local
3
3
  language: en
4
4
  description: "Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenario comment). No dev phase. Use when local work is already done and only review, build, commit and reporting remain."
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- # multi-agent ship - Take Existing Branch Work Through the Pipeline Tail
8
+ # multi-agent resume-local - Take Existing Branch Work Through the Pipeline Tail
9
9
 
10
10
  You already wrote (and maybe hand-tested) the change on the current branch, or committed it outside the pipeline entirely. `ship` picks up from there and runs the **pipeline tail** over that existing work in one command, without re-developing. (As of v14.0.0 the `--dev` family reviews its own output, so this is for work with no pipeline run behind it.)
11
11
 
@@ -34,10 +34,10 @@ Phases 1-3 (Analysis / Planning / Dev) are skipped by design - the branch's lo
34
34
  ## Input
35
35
 
36
36
  ```bash
37
- multi-agent ship # current branch vs base; Jira id from branch name
38
- multi-agent ship PROJ-12345 # explicit Jira id for the Phase 7 comment
39
- multi-agent ship --base develop # override base branch for the diff
40
- multi-agent ship autopilot # no gate prompts: auto-fix, auto-PR, auto-comment
37
+ multi-agent resume-local # current branch vs base; Jira id from branch name
38
+ multi-agent resume-local PROJ-12345 # explicit Jira id for the Phase 7 comment
39
+ multi-agent resume-local --base develop # override base branch for the diff
40
+ multi-agent resume-local autopilot # no gate prompts: auto-fix, auto-PR, auto-comment
41
41
  ```
42
42
 
43
43
  ## Notes
@@ -1,50 +1,107 @@
1
1
  ---
2
2
  name: multi-agent-stack
3
3
  language: en
4
- description: "Select the active stack for this repo by enabling the matching marketplace plugin(s) in .claude/settings.json (ios/android/mobile/backend/frontend/fullstack/all). Use when a repo's stack changed or the wrong plugins are enabled for it."
4
+ description: "Select the active stack(s) for this repo by enabling the matching marketplace plugin(s) in .claude/settings.json. Multi-select: pass several stacks (ios backend) or pick them in the native picker. Use when a repo's stack changed or the wrong plugins are enabled for it."
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- # multi-agent stack - Select Stack via Plugin Enablement
8
+ # multi-agent stack - Select Stack(s) via Plugin Enablement
9
9
 
10
- Stack skills ship as plugins in the `{owner}/multi-agent-plugins` marketplace. Selecting a stack = **enabling the matching plugin(s)** in the current repo's `.claude/settings.json` `enabledPlugins`. The `ai-common-engineering-toolkit` (accessibility audit, humanizer, Firebase) is always enabled alongside the stack plugin.
10
+ Stack skills ship as plugins in the `{owner}/multi-agent-plugins` marketplace. Selecting a stack = **enabling the matching plugin(s)** in the current repo's `.claude/settings.json` `enabledPlugins`. The `ai-common-toolkit` (accessibility audit, humanizer, Firebase) is always enabled alongside the stack plugin(s).
11
11
 
12
- This replaces the old `stack-swap.sh` mechanic that physically moved skill directories. No SessionStart hook, no directory shuffling - enablement is declarative, per-repo, and versioned.
12
+ On Claude Code the marketplace plugins are the ONLY source of stack skills - nothing is copied into `~/.claude/skills` anymore. A stack that is not enabled here is simply absent from the session. Copilot CLI and Codex CLI have no plugin loader; they receive a local copy filtered to the enabled stacks at install time, which is why step 5 below offers to refresh those copies after a change.
13
+
14
+ This replaces the old `stack-swap.sh` mechanic that physically moved skill directories in `~/.claude/skills/`. There is no SessionStart hook and no directory shuffling - enablement is declarative, per-repo, and versioned.
13
15
 
14
16
  ## Usage
15
17
 
16
18
  ```bash
17
- multi-agent-stack # show which plugins are enabled here
18
- multi-agent-stack ios # SwiftUI toolkit + common
19
- multi-agent-stack android # Compose toolkit + common
20
- multi-agent-stack mobile # iOS + Android + common
21
- multi-agent-stack backend # Python / Node spec-driven toolkit + common
22
- multi-agent-stack frontend # React / TSX toolkit + common
23
- multi-agent-stack fullstack # frontend + backend + common
24
- multi-agent-stack all # all four stack toolkits + common
19
+ /multi-agent:stack # no arg → native multi-select picker (current state pre-noted)
20
+ /multi-agent:stack ios # SwiftUI toolkit + common
21
+ /multi-agent:stack ios backend # any combination, space-separated
22
+ /multi-agent:stack android # Compose toolkit + common
23
+ /multi-agent:stack mobile # alias: ios + android + common
24
+ /multi-agent:stack backend # Python / Node spec-driven toolkit + common
25
+ /multi-agent:stack frontend # React / TSX toolkit + common (alias: web)
26
+ /multi-agent:stack fullstack # alias: frontend + backend + common
27
+ /multi-agent:stack all # all four stack toolkits + common
25
28
  ```
26
29
 
27
30
  ## Stack → plugin map
28
31
 
29
32
  | Stack | Plugins enabled (all `@multi-agent-plugins`) |
30
33
  |---|---|
31
- | `ios` | `ai-common-engineering-toolkit`, `ai-ios-engineering-toolkit` |
32
- | `android` | `ai-common-engineering-toolkit`, `ai-android-engineering-toolkit` |
33
- | `frontend` | `ai-common-engineering-toolkit`, `ai-frontend-engineering-toolkit` |
34
- | `backend` | `ai-common-engineering-toolkit`, `ai-backend-toolkit` |
35
- | `mobile` | common + `ai-ios-engineering-toolkit` + `ai-android-engineering-toolkit` |
36
- | `fullstack` | common + `ai-frontend-engineering-toolkit` + `ai-backend-toolkit` |
34
+ | `ios` | `ai-common-toolkit`, `ai-ios-toolkit` |
35
+ | `android` | `ai-common-toolkit`, `ai-android-toolkit` |
36
+ | `frontend` / `web` | `ai-common-toolkit`, `ai-frontend-toolkit` |
37
+ | `backend` | `ai-common-toolkit`, `ai-backend-toolkit` |
38
+ | `mobile` | common + `ai-ios-toolkit` + `ai-android-toolkit` |
39
+ | `fullstack` | common + `ai-frontend-toolkit` + `ai-backend-toolkit` |
37
40
  | `all` | common + all four stack toolkits |
38
41
 
42
+ Multiple args union their plugin sets: `ios backend` → common + iOS + backend.
43
+
39
44
  ## Behaviour
40
45
 
41
- 1. **No arg → status mode.** Read `.claude/settings.json` (repo) + the global settings and print which `@multi-agent-plugins` plugins are enabled. Modify nothing.
42
- 2. **Arg present → enable mode.** Ensure the marketplace is known (`claude marketplace add {owner}/multi-agent-plugins`), then write the matching `enabledPlugins` entries into the current repo's `.claude/settings.json`, setting the stack toolkits that don't belong to `false`. `ai-common-engineering-toolkit` is always `true`.
43
- 3. **Unknown arg** → show the list above; do not guess.
46
+ 1. **No arg → native multi-select picker.** Read `.claude/settings.json` (repo) + `~/.claude/settings.json` (global) to learn the current state, then ask with `AskUserQuestion` (`multiSelect: true`) - NEVER a numbered text menu:
47
+ - `question` (in `outputLanguage`): which stacks should be active in this repo, noting the currently enabled ones
48
+ - `header`: "Stacks" (English, UI contract)
49
+ - `options` (4): `ios` / `android` / `frontend (web)` / `backend`, each `description` (in `outputLanguage`) naming the plugin it enables and marking the ones already enabled with "(currently on)" / "(şu an açık)"
50
+ - Empty selection or cancel → **status mode**: print the currently enabled `@multi-agent-plugins` plugins and exit without modifying anything.
51
+ 2. **Arg(s) present → enable mode.** Accept multiple space-separated stacks. Resolve each through the alias table (`web`→`frontend`, `mobile`→`ios android`, `fullstack`→`frontend backend`, `all`→every stack), union the plugin sets, then write the **current repo's** `.claude/settings.json`.
52
+ 3. **Write rules:**
53
+ - every plugin in the union is set to `true`
54
+ - every stack toolkit **not** in the union is set to `false` (leave non-`@multi-agent-plugins` entries untouched)
55
+ - `ai-common-toolkit@multi-agent-plugins` is always `true`
56
+ - **legacy-key cleanup**: delete any `ai-*-engineering-toolkit@multi-agent-plugins` keys - those plugin names were retired by the `ai-<stack>-toolkit` rename and a stale `true` there enables a plugin that no longer exists in the marketplace
57
+ 4. **Unknown arg** → show the table above; do not guess.
58
+ 5. **Copilot/Codex refresh offer.** Their local skill copies are filtered to the enabled stacks at install time, so after a change ask (single `AskUserQuestion`, not silent): "Refresh Copilot/Codex local copies now?" - Yes runs `node <pipelineRepo>/install.js --copilot --codex`, No leaves them stale with a one-line warning naming the command to run later. Skip this question entirely when neither `~/.copilot` nor `~/.codex` exists.
59
+
60
+ ## Implementation
61
+
62
+ ```bash
63
+ REPO_SETTINGS=".claude/settings.json"
64
+ MP="multi-agent-plugins"
65
+
66
+ # --- ensure the marketplace is known (idempotent) -------------------------
67
+ if ! claude marketplace list 2>/dev/null | grep -q "$MP"; then
68
+ claude marketplace add {owner}/multi-agent-plugins 2>/dev/null \
69
+ || echo "note: add the marketplace once with: claude marketplace add {owner}/multi-agent-plugins"
70
+ fi
71
+
72
+ COMMON="ai-common-toolkit@${MP}"
73
+ IOS="ai-ios-toolkit@${MP}"
74
+ ANDROID="ai-android-toolkit@${MP}"
75
+ FRONTEND="ai-frontend-toolkit@${MP}"
76
+ BACKEND="ai-backend-toolkit@${MP}"
77
+
78
+ # resolve every arg through the alias table, union the ON set
79
+ ON="$COMMON"
80
+ for ARG in "$@"; do
81
+ case "$ARG" in
82
+ ios) ON="$ON $IOS" ;;
83
+ android) ON="$ON $ANDROID" ;;
84
+ frontend|web) ON="$ON $FRONTEND" ;;
85
+ backend) ON="$ON $BACKEND" ;;
86
+ mobile) ON="$ON $IOS $ANDROID" ;;
87
+ fullstack) ON="$ON $FRONTEND $BACKEND" ;;
88
+ all) ON="$ON $IOS $ANDROID $FRONTEND $BACKEND" ;;
89
+ *) echo "Unknown stack '$ARG'. One of: ios android mobile backend frontend web fullstack all"; exit 1 ;;
90
+ esac
91
+ done
92
+ ```
93
+
94
+ After resolving `$ON`, edit `.claude/settings.json` (create `{ "enabledPlugins": {} }` if absent) so that:
95
+ - every plugin in `$ON` is set to `true`,
96
+ - every stack toolkit **not** in `$ON` is set to `false` (leave non-`@multi-agent-plugins` entries untouched),
97
+ - `ai-common-toolkit@multi-agent-plugins` is always `true`,
98
+ - every `ai-*-engineering-toolkit@multi-agent-plugins` key is **deleted** (retired names).
99
+
100
+ Use the Read + Edit/Write tools (JSON must stay valid). Then print the resulting `enabledPlugins` block and run step 5 (Copilot/Codex refresh offer).
44
101
 
45
102
  ## Notes
46
103
 
47
104
  - Enablement is per-repo and declarative - commit `.claude/settings.json` so teammates get the same stack.
48
- - Restart the conversation to pick up newly enabled plugins.
105
+ - Restart the conversation (or reload the window) for Claude Code to pick up newly enabled plugins.
49
106
  - Pipeline Phase 1 stack detection is independent (it reads project files); `stack` only sets which plugin skill set is active.
50
107
  - The old `stack-swap.sh` skill-dir swap has been removed; stack selection is entirely plugin enablement.
@@ -37,7 +37,7 @@ doc is the contract.
37
37
  |---|---|---|
38
38
  | 1 Static | `ios_app_store_audit` 18 rules, needs an `.xcarchive` | `android_apk_audit` + `google-play-compliance` 21 rules, needs an `.aab` |
39
39
  | 2 Authoritative | `ios_testflight_validate` → `altool --validate-app`, needs credentials | `SKIPPED` - Play's authoritative check is server-side only and no client ships here |
40
- | 3 Policy | `app-store-review` skill vs repo source | `play-store-review` skill vs repo source |
40
+ | 3 Policy | `ai-ios-toolkit:app-store-review` skill vs repo source | `ai-android-toolkit:play-store-review` skill vs repo source |
41
41
 
42
42
  Gate 2's asymmetry is reported as an asymmetry. An Android run clears at most 2 of 3
43
43
  gates and must never print `passed`. A skipped gate is never folded into the pass
@@ -31,8 +31,8 @@ Run all steps automatically:
31
31
 
32
32
  ```
33
33
  Step 1: DETECT Compare timestamps, find stale targets
34
- Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 49 sub-command skills)
35
- Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + 49 specs as refs + 8 agent TOML)
34
+ Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 51 sub-command skills)
35
+ Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + 51 specs as refs + 8 agent TOML)
36
36
  Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub)
37
37
  Step 3d: DEV-TOOLKIT Companion MCP server -> detect movement, ship gates, commit + publish
38
38
  Step 4: WEBSITE Version + phase/model counts -> {website-host} (i18n + projects.ts)
@@ -91,14 +91,14 @@ If nothing is stale -> report "All targets up to date" and stop.
91
91
  - `~/.claude/multi-agent-preferences.json`
92
92
  - `~/.claude/CLAUDE.md`, `~/.claude/rules/`, `~/.claude/knowledge/`
93
93
  - `~/.claude/scripts/` - EXCEPT `pre-commit-check.sh` and `build-stack-plugins.mjs` (generic, synced)
94
- - Step 3c (PLUGINS): rebuild the `{owner}/multi-agent-plugins` marketplace from `shared/external` via `build-stack-plugins.mjs` (bumps changed plugins' patch version), then commit + push the plugins repo
94
+ - Step 3c (PLUGINS): rebuild the `{owner}/multi-agent-plugins` marketplace from `shared/external` via `build-stack-plugins.mjs` (bumps changed plugins' patch version), then commit + push the plugins repo. On any change also verify help + README freshness: every plugin registers `./skills/tools/help` in plugin.json, `tools/bump.py --check` shows no DRIFT, `tools/validate.py` clean (CHANGELOG entry per bumped version), and pipeline help/READMEs reflect any command-surface change from Step 3
95
95
  - `~/.claude/settings.json`
96
96
 
97
97
 
98
98
  ## Codex Sync (Step 2b)
99
99
 
100
100
  This step does **not** hand-copy files. The Codex tree is a *transform* of the Claude
101
- tree, not a mirror: the 49 sub-command specs become reference files (Codex silently
101
+ tree, not a mirror: the 51 sub-command specs become reference files (Codex silently
102
102
  truncates its skills block - see `cross-cli-contract.md` 2.6), every reference to a
103
103
  CLI-owned tree is retargeted (`agents/<persona>.md` becomes `.toml`, the dispatcher
104
104
  becomes the router skill), the 8 personas are regenerated as TOML with a model +
@@ -223,14 +223,14 @@ When invoked with the `release` argument:
223
223
  |-------------|-------------|
224
224
  | `~/.claude/commands/multi-agent/{cmd}.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
225
225
 
226
- **49 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
226
+ **51 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
227
227
 
228
228
  ```
229
- analysis, analysis-resolve, autopilot, build-optimize, channels, create-jira, design-check, dev,
229
+ analysis, analysis-resolve, autopilot, build-optimize, channels, complaint-analysis, create-jira, design-check, dev,
230
230
  dev-autopilot, dev-local, dev-local-autopilot, diff-explain, forget, garbage-collect,
231
231
  help, ios-coding-standard, issue, jira, kill, language, local,
232
- local-autopilot, log, manual-test, prune-logs, purge, refactor, resume, review, review-issue, review-jira,
233
- routines, save, scan, search, setup, ship, stack, status, store-ready, sync, test, test-accessibility,
232
+ local-autopilot, log, manual-test, prune-logs, prune-prompts, purge, refactor, resume, review, review-issue, review-jira,
233
+ routines, save, scan, search, setup, resume-local, stack, status, store-ready, sync, test, test-accessibility,
234
234
  test-dark-mode, test-dynamic-type, test-screenshots, testflight-validation, uninstall, update
235
235
  ```
236
236
 
@@ -42,7 +42,7 @@ Unchanged from before the merge, on the iOS path:
42
42
  |---|---|---|
43
43
  | **1. Static** | `ios_app_store_audit` (18 rules, real ITMS codes) | an `.xcarchive` |
44
44
  | **2. Authoritative** | `ios_testflight_validate` → `altool --validate-app` | an `.ipa` + credentials |
45
- | **3. Policy** | `app-store-review` skill vs repo source | repo checkout |
45
+ | **3. Policy** | `ai-ios-toolkit:app-store-review` skill vs repo source | repo checkout |
46
46
 
47
47
  A skipped gate is never folded into the pass count, and the run never uploads. The
48
48
  report lands in `~/StoreChecks/ios-<repo>-<branch>-<timestamp>/report.md`.
@@ -18,7 +18,7 @@
18
18
 
19
19
  module: <YourModule>
20
20
  path: <Path/To/Module>
21
- role: feature # feature | common | app
21
+ role: feature # feature | common | app
22
22
  registry_version: 1.1.0
23
23
  updated: <YYYY-MM-DD>
24
24
 
@@ -52,7 +52,7 @@ dialect:
52
52
  # An unfilled slot disables the rules that read it.
53
53
  vocabulary:
54
54
  ScreenRoot: <Sources/<Module>/Screens>
55
- ScreenRoleSuffixes: [] # e.g. [Scene, ViewModel, UseCase, Repository, Mapper]
55
+ ScreenRoleSuffixes: [] # e.g. [Scene, ViewModel, UseCase, Repository, Mapper]
56
56
  HandlerName: "<Screen><Suffix>"
57
57
 
58
58
  # --- Sensitive data inventory -----------------------------------------