@mmerterden/multi-agent-pipeline 20.36.0 → 20.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/docs/facts.json +2 -2
- package/docs/features.md +1 -1
- package/docs/recovery-guide.md +1 -1
- package/install/catalog-history.json +1 -1
- package/manifest.json +225 -148
- package/package.json +1 -1
- package/pipeline/commands/multi-agent/SKILL.md +33 -154
- package/pipeline/commands/multi-agent/analysis/SKILL.md +14 -68
- package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +5 -8
- package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +38 -109
- package/pipeline/commands/multi-agent/channels/SKILL.md +38 -167
- package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +37 -144
- package/pipeline/commands/multi-agent/design-check/SKILL.md +27 -131
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +22 -48
- package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +37 -180
- package/pipeline/commands/multi-agent/jira/SKILL.md +16 -46
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +12 -7
- package/pipeline/commands/multi-agent/refactor/SKILL.md +23 -184
- package/pipeline/commands/multi-agent/resume/SKILL.md +30 -136
- package/pipeline/commands/multi-agent/review/SKILL.md +24 -199
- package/pipeline/commands/multi-agent/setup/SKILL.md +25 -181
- package/pipeline/commands/multi-agent/stack/SKILL.md +9 -53
- package/pipeline/commands/multi-agent/status/SKILL.md +13 -2
- package/pipeline/commands/multi-agent/store-ready/SKILL.md +27 -226
- package/pipeline/commands/multi-agent/sync/SKILL.md +35 -164
- package/pipeline/commands/multi-agent/test-gen/SKILL.md +2 -4
- package/pipeline/commands/multi-agent/update/SKILL.md +18 -60
- package/pipeline/contract/CHANGELOG.md +9 -0
- package/pipeline/contract/fixtures/error-invalid-request.json +1 -1
- package/pipeline/contract/fixtures/error-unauthorized.json +1 -1
- package/pipeline/contract/fixtures/error-unsigned.json +1 -1
- package/pipeline/contract/fixtures/runs-awaiting-question.json +1 -1
- package/pipeline/contract/fixtures/runs-empty.json +1 -1
- package/pipeline/contract/fixtures/runs-failed.json +1 -1
- package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +1 -1
- package/pipeline/contract/fixtures/runs-pr-opened.json +1 -1
- package/pipeline/contract/fixtures/runs-running.json +1 -1
- package/pipeline/contract/manifest.json +5 -5
- package/pipeline/contract/types/index.d.ts +3 -2
- package/pipeline/multi-agent-refs/audit-guide.md +20 -0
- package/pipeline/multi-agent-refs/autopilot-on/details.md +148 -0
- package/pipeline/multi-agent-refs/channels/generator.md +14 -0
- package/pipeline/multi-agent-refs/channels/preview.md +13 -0
- package/pipeline/multi-agent-refs/channels/reference.md +46 -0
- package/pipeline/multi-agent-refs/complaint-analysis/phases.md +159 -0
- package/pipeline/multi-agent-refs/design-check/export.md +1 -0
- package/pipeline/multi-agent-refs/design-check/init-inventory.md +1 -1
- package/pipeline/multi-agent-refs/design-check/scope-and-ledger.md +64 -0
- package/pipeline/multi-agent-refs/features/analysis-command-notes.md +53 -0
- package/pipeline/multi-agent-refs/features/commit-multi-repo.md +63 -0
- package/pipeline/multi-agent-refs/features/dev-multi-repo.md +51 -0
- package/pipeline/multi-agent-refs/features/test-gap.md +40 -0
- package/pipeline/multi-agent-refs/features/worktree-finalize.md +1 -1
- package/pipeline/multi-agent-refs/garbage-collect/phases.md +60 -0
- package/pipeline/multi-agent-refs/ios-coding-standard/plan.md +71 -0
- package/pipeline/multi-agent-refs/ios-coding-standard/resolve-and-scan.md +135 -0
- package/pipeline/multi-agent-refs/jira/picker-detail.md +71 -0
- package/pipeline/multi-agent-refs/orchestrator/copilot-pipeline.md +88 -0
- package/pipeline/multi-agent-refs/orchestrator/dispatcher.md +96 -1
- package/pipeline/multi-agent-refs/orchestrator/phase-3-user-test.md +12 -9
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +4 -4
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +8 -47
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +21 -65
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +9 -59
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +0 -31
- package/pipeline/multi-agent-refs/refactor/sweep.md +190 -0
- package/pipeline/multi-agent-refs/resume/details.md +115 -2
- package/pipeline/multi-agent-refs/review/inputs.md +33 -1
- package/pipeline/multi-agent-refs/review/module-guides.md +9 -1
- package/pipeline/multi-agent-refs/review/panel.md +75 -0
- package/pipeline/multi-agent-refs/review/valven.md +5 -1
- package/pipeline/multi-agent-refs/rules.md +1 -1
- package/pipeline/multi-agent-refs/setup/hooks-and-plugins.md +4 -0
- package/pipeline/multi-agent-refs/setup/token-save-flow.md +13 -0
- package/pipeline/multi-agent-refs/stack/background.md +72 -0
- package/pipeline/multi-agent-refs/store-ready/gates.md +139 -0
- package/pipeline/multi-agent-refs/store-ready/report.md +40 -2
- package/pipeline/multi-agent-refs/sync/office.md +10 -0
- package/pipeline/multi-agent-refs/sync/overview.md +61 -0
- package/pipeline/multi-agent-refs/sync/repo.md +91 -0
- package/pipeline/multi-agent-refs/update/details.md +83 -0
- package/pipeline/office/index.html +6 -3
- package/pipeline/office/toolkit.json +1 -1
- package/pipeline/rules/figma-pipeline.md +6 -3
- package/pipeline/schemas/prefs.schema.json +1 -1
- package/pipeline/schemas/runs-index.schema.json +2 -1
- package/pipeline/scripts/_memory-policy.mjs +27 -5
- package/pipeline/scripts/checkpoint-fold.sh +59 -0
- package/pipeline/scripts/contract-server.mjs +1 -1
- package/pipeline/scripts/gate-ledger.mjs +1 -1
- package/pipeline/scripts/office-control.mjs +41 -15
- package/pipeline/scripts/offload-ref.sh +1 -1
- package/pipeline/scripts/rework-rulings.mjs +5 -3
- package/pipeline/scripts/runs-index.mjs +34 -7
- package/pipeline/scripts/scope-check-gate.mjs +15 -2
- package/pipeline/scripts/status-overview.mjs +401 -0
- package/pipeline/scripts/user-test-handoff.sh +203 -0
- package/pipeline/scripts/validate-planning.mjs +5 -3
- package/pipeline/scripts/validate-triage.mjs +2 -1
- package/pipeline/scripts/write-state.mjs +13 -4
- package/pipeline/skills/.skill-manifest.json +64 -64
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +7 -70
- package/pipeline/skills/shared/core/apple-archive-compliance/references/examples.md +67 -0
- package/pipeline/skills/shared/core/apple-archive-compliance/references/version-history.md +8 -0
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +10 -72
- package/pipeline/skills/shared/core/google-play-compliance/references/examples.md +69 -0
- package/pipeline/skills/shared/core/google-play-compliance/references/notes.md +7 -0
- package/pipeline/skills/shared/core/google-play-compliance/references/version-history.md +5 -0
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +39 -262
- package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +35 -73
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +37 -337
- package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +27 -122
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +8 -340
- package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +37 -180
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +12 -7
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +23 -184
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +14 -82
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +25 -277
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +13 -2
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +73 -217
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +11 -162
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-code.md +257 -0
- package/pipeline/skills/shared/external/android-architecture/SKILL.md +7 -58
- package/pipeline/skills/shared/external/android-architecture/references/code-examples.md +68 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +3 -45
- package/pipeline/skills/shared/external/app-intents/references/code-examples.md +54 -0
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +5 -81
- package/pipeline/skills/shared/external/app-store-optimization/references/engagement-and-localization.md +96 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +6 -112
- package/pipeline/skills/shared/external/app-store-review/references/monetization-and-submission.md +138 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +10 -117
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models-code.md +186 -0
- package/pipeline/skills/shared/external/authentication/SKILL.md +3 -50
- package/pipeline/skills/shared/external/authentication/references/code-examples.md +59 -0
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +3 -84
- package/pipeline/skills/shared/external/callkit-voip/references/code-examples.md +93 -0
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +7 -263
- package/pipeline/skills/shared/external/ci-cd-pipelines/references/pipeline-examples.md +281 -0
- package/pipeline/skills/shared/external/clean-code/SKILL.md +8 -41
- package/pipeline/skills/shared/external/clean-code/references/code-examples.md +56 -0
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +8 -146
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-code.md +214 -0
- package/pipeline/skills/shared/external/compose-components/SKILL.md +6 -80
- package/pipeline/skills/shared/external/compose-components/references/code-examples.md +89 -0
- package/pipeline/skills/shared/external/compose-navigation/SKILL.md +5 -64
- package/pipeline/skills/shared/external/compose-navigation/references/code-examples.md +70 -0
- package/pipeline/skills/shared/external/core-data/SKILL.md +9 -157
- package/pipeline/skills/shared/external/core-data/references/core-data-code.md +221 -0
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +3 -89
- package/pipeline/skills/shared/external/core-nfc/references/code-examples.md +98 -0
- package/pipeline/skills/shared/external/coreml/SKILL.md +17 -133
- package/pipeline/skills/shared/external/coreml/references/coreml-code.md +208 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +8 -131
- package/pipeline/skills/shared/external/css-modern/references/code-examples.md +142 -0
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +6 -103
- package/pipeline/skills/shared/external/database-patterns/references/orm-examples.md +112 -0
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +7 -48
- package/pipeline/skills/shared/external/html-semantic/references/code-examples.md +54 -0
- package/pipeline/skills/shared/external/humanizer/SKILL.md +6 -19
- package/pipeline/skills/shared/external/humanizer/references/voice.md +24 -0
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +13 -170
- package/pipeline/skills/shared/external/ios-accessibility/references/assistive-tech-review.md +224 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +2 -24
- package/pipeline/skills/shared/external/ios-localization/references/code-examples.md +30 -0
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +3 -58
- package/pipeline/skills/shared/external/ios-networking/references/code-examples.md +67 -0
- package/pipeline/skills/shared/external/ios-security/SKILL.md +4 -64
- package/pipeline/skills/shared/external/ios-security/references/code-examples.md +74 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +4 -90
- package/pipeline/skills/shared/external/live-activities/references/code-examples.md +108 -0
- package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +9 -23
- package/pipeline/skills/shared/external/localization-reuse-map/references/project-settings.md +22 -0
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +5 -95
- package/pipeline/skills/shared/external/mapkit-location/references/code-examples.md +117 -0
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +7 -106
- package/pipeline/skills/shared/external/nextjs-app-router/references/app-router-examples.md +124 -0
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +2 -31
- package/pipeline/skills/shared/external/permissionkit/references/code-examples.md +37 -0
- package/pipeline/skills/shared/external/play-store-review/SKILL.md +6 -74
- package/pipeline/skills/shared/external/play-store-review/references/signing-and-policies.md +83 -0
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +8 -125
- package/pipeline/skills/shared/external/push-notifications/references/notification-code.md +176 -0
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +7 -158
- package/pipeline/skills/shared/external/python-patterns/references/python-examples.md +176 -0
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +7 -157
- package/pipeline/skills/shared/external/rest-api-design/references/api-examples.md +175 -0
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +11 -230
- package/pipeline/skills/shared/external/swift-architecture/references/pattern-examples.md +295 -0
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +17 -149
- package/pipeline/skills/shared/external/swift-codable/references/codable-recipes.md +207 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +12 -99
- package/pipeline/skills/shared/external/swift-concurrency/references/code-examples.md +100 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swift-6-2-additions.md +18 -0
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +9 -78
- package/pipeline/skills/shared/external/swift-formatstyle/references/formatstyle-examples.md +113 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +3 -56
- package/pipeline/skills/shared/external/swift-language/references/code-examples.md +65 -0
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +1 -0
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +6 -122
- package/pipeline/skills/shared/external/swiftdata/references/code-examples.md +140 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +12 -139
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/interop-code.md +198 -0
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +9 -81
- package/pipeline/skills/shared/external/tailwind-css/references/code-examples.md +91 -0
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +7 -207
- package/pipeline/skills/shared/external/testing-backend/references/testing-examples.md +225 -0
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +8 -89
- package/pipeline/skills/shared/external/typescript-patterns/references/code-examples.md +100 -0
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +2 -20
- package/pipeline/skills/shared/external/vision-framework/references/code-examples.md +26 -0
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +7 -169
- package/pipeline/skills/shared/external/vue-composition/references/vue-examples.md +187 -0
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +7 -174
- package/pipeline/skills/shared/external/web-accessibility/references/a11y-examples.md +192 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +8 -66
- package/pipeline/skills/shared/external/web-performance/references/code-examples.md +77 -0
- package/pipeline/skills/shared/external/web-testing/SKILL.md +11 -186
- package/pipeline/skills/shared/external/web-testing/references/testing-examples.md +213 -0
- /package/pipeline/skills/shared/external/localization-reuse-map/{reference → references}/format-and-output.md +0 -0
- /package/pipeline/skills/shared/external/localization-reuse-map/{reference → references}/publish-and-snapshot.md +0 -0
- /package/pipeline/skills/shared/external/localization-reuse-map/{reference → references}/sources-and-recipes.md +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# store-ready: the three gates, input flags and Gate 2 detail
|
|
2
|
+
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Why three gates, and why the same three on both platforms](#why-three-gates-and-why-the-same-three-on-both-platforms)
|
|
5
|
+
- [Gate matrix](#gate-matrix)
|
|
6
|
+
- [Input](#input)
|
|
7
|
+
- [Step A: why the sweep belongs here](#step-a-why-the-sweep-belongs-here)
|
|
8
|
+
- [Gate 1: severity](#gate-1-severity)
|
|
9
|
+
- [Gate 2](#gate-2)
|
|
10
|
+
- [Gate 3: scope](#gate-3-scope)
|
|
11
|
+
<!-- /toc -->
|
|
12
|
+
|
|
13
|
+
Read by `/multi-agent:store-ready` before Step 0. The command file keeps the step
|
|
14
|
+
order, the skip and never-ship rules; this file holds the gate model, the input
|
|
15
|
+
table and the Gate 2 procedure per platform.
|
|
16
|
+
|
|
17
|
+
## Why three gates, and why the same three on both platforms
|
|
18
|
+
|
|
19
|
+
Each gate sees what the others cannot, so no single one is "the check". The
|
|
20
|
+
failure modes are the same on both platforms: a malformed package, a package the
|
|
21
|
+
store refuses, a policy a human enforces.
|
|
22
|
+
|
|
23
|
+
| Gate | Sees | Blind to |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| **1. Static** | package structure, manifests, signing, declared APIs and SDKs | anything depending on the store account |
|
|
26
|
+
| **2. Authoritative** | what the store's own validator says about this exact binary | written policy - no validator reads it |
|
|
27
|
+
| **3. Policy** | consent flows, deletion paths, purchase routing, disclosures | anything not visible in source |
|
|
28
|
+
|
|
29
|
+
A validation run must not be able to ship a build by accident: iOS runs
|
|
30
|
+
`--validate-app`, never `--upload-app`; when Google Play is onboarded, Android Gate 2
|
|
31
|
+
uploads the bundle into a throwaway edit that is validated and deleted, only after
|
|
32
|
+
the user approves that plan.
|
|
33
|
+
|
|
34
|
+
## Gate matrix
|
|
35
|
+
|
|
36
|
+
| Gate | iOS | Android |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| 1 Static | `ios_app_store_audit({archive_path, rules: "all"})` - 18 rules with real ITMS codes. Needs an `.xcarchive`. Reference: `apple-archive-compliance` skill | `android_apk_audit` plus the `google-play-compliance` skill's 21 rules: `bundletool validate` + manifest dump, `aapt2 dump badging`, `apksigner verify`, ABI / native scan. Needs an `.aab` (an `.apk` narrows it, see Step 3) |
|
|
39
|
+
| 2 Authoritative | `ios_testflight_validate({ipa_path, platform: "ios", <credentials>})` → `xcrun altool --validate-app`, plus `store_asc_next_build_number` for whether the build number is already used. Needs an `.ipa` + credentials | With `google_play` onboarded: `store_play_validate_bundle({package_name, bundle_path})` - Google validates the `.aab` in a throwaway Publishing API edit that is then deleted, never committed. Without it, Play's check exists only server-side and nothing local reproduces it, so this gate reports `SKIPPED (no local Play validator)` with the reason `Google Play not onboarded`. Do not substitute `bundletool validate` - that is Gate 1 |
|
|
40
|
+
| 3 Policy | `ai-ios-toolkit:app-store-review` skill vs repo source | `ai-android-toolkit:play-store-review` skill vs repo source |
|
|
41
|
+
|
|
42
|
+
Gate 2's asymmetry is reported, not smoothed over. On iOS it is the only gate that
|
|
43
|
+
catches a version+build pair already used. On Android it runs only with Google Play
|
|
44
|
+
onboarded and the throwaway-edit upload approved; without both, an Android run
|
|
45
|
+
clears at most 2 of 3 gates and never prints `passed`.
|
|
46
|
+
|
|
47
|
+
The `store_*` tools need `@mmerterden/multi-agent-toolkit-mcp` ≥ v3.17.0. On an
|
|
48
|
+
older server they are absent, and each branch that uses one falls back to the
|
|
49
|
+
behaviour it has without the credential.
|
|
50
|
+
|
|
51
|
+
## Input
|
|
52
|
+
|
|
53
|
+
| Input | Meaning |
|
|
54
|
+
|---|---|
|
|
55
|
+
| (empty) | ask which repo (Step 1) |
|
|
56
|
+
| `my-app` or a path | that repo |
|
|
57
|
+
| `--archive=<path>` | iOS, build supplied; all three gates can run |
|
|
58
|
+
| `--ipa=<path>` | iOS, build supplied; Gate 1 reports `SKIPPED (needs .xcarchive)` |
|
|
59
|
+
| `--aab=<path>` | Android, build supplied; Gate 1 + 3 run |
|
|
60
|
+
| `--apk=<path>` | Android; Gate 1 runs the subset that does not need a bundle, and says which rules it could not apply |
|
|
61
|
+
| `--skip-sweep` | skip Step A, when no simulator / emulator is available or only the package matters |
|
|
62
|
+
| `--resume` | continue the last run from its state file |
|
|
63
|
+
|
|
64
|
+
Platform detection when no build flag is given:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
cwd or repo contains .xcodeproj / .xcworkspace / Package.swift -> iOS
|
|
68
|
+
cwd or repo contains build.gradle / build.gradle.kts -> Android
|
|
69
|
+
both -> ask which
|
|
70
|
+
neither -> halt: "store-ready needs an iOS or Android project"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Branch picker options after the fetch: the current branch, the default branch, and
|
|
74
|
+
any `release/*` / `tkdevelop/*` heads. Mode B (supply a
|
|
75
|
+
build) is fastest and needs no signing in-run; Mode A (build from the branch) needs a
|
|
76
|
+
distribution certificate and profile in the keychain on iOS, the release signing
|
|
77
|
+
config on Android, and takes as long as a real release build.
|
|
78
|
+
|
|
79
|
+
## Step A: why the sweep belongs here
|
|
80
|
+
|
|
81
|
+
The gates read a package; the sweep reads the app. A build can be structurally
|
|
82
|
+
perfect and still ship an unreadable screen, so the sweep stays part of store
|
|
83
|
+
readiness rather than being a separate errand. It delegates the mechanics to the UI
|
|
84
|
+
Bug Hunter flow and merges its findings into the single Step 7 report,
|
|
85
|
+
severity-grouped alongside the gate findings.
|
|
86
|
+
|
|
87
|
+
## Gate 1: severity
|
|
88
|
+
|
|
89
|
+
`error` findings are blocking; `warning` is advisory. Group by severity and keep
|
|
90
|
+
each finding's ITMS / Play policy code - Gate 2 may return the same code on iOS,
|
|
91
|
+
and seeing it in both places tells the user it is real rather than a heuristic. The
|
|
92
|
+
iOS direct-package fallback runs only when the audit tool is genuinely absent, and
|
|
93
|
+
the report says which path ran.
|
|
94
|
+
|
|
95
|
+
## Gate 2
|
|
96
|
+
|
|
97
|
+
**iOS**: `ios_testflight_validate({ipa_path, platform: "ios", <credential args>})`.
|
|
98
|
+
Render the verdict exactly as returned:
|
|
99
|
+
|
|
100
|
+
- `PASS` - Apple accepted the binary for delivery.
|
|
101
|
+
- `FAIL` - list each issue with its ITMS code, the mapped guideline, and the hint.
|
|
102
|
+
- `SKIPPED` - print the reason. **Never render this as a pass.**
|
|
103
|
+
|
|
104
|
+
Gate 2 is the only gate that catches a build number already used - so when it
|
|
105
|
+
fails on that, say so plainly and name the next free build number.
|
|
106
|
+
|
|
107
|
+
**Build number** (App Store Connect onboarded, `store_status` reports
|
|
108
|
+
`appStoreConnect.configured`): find the app with `store_asc_apps` by the archive's
|
|
109
|
+
bundle id, then `store_asc_next_build_number({app_id, version: <CFBundleShortVersionString>})`.
|
|
110
|
+
Report the archive's `CFBundleVersion` as `already used` (not above the highest
|
|
111
|
+
uploaded one, with the suggested next) or `free`. Read-only; it never changes the
|
|
112
|
+
project. Without the credential, skip this line and say why.
|
|
113
|
+
|
|
114
|
+
**Android, Google Play onboarded, attended run.** Call
|
|
115
|
+
`store_play_validate_bundle({package_name: <applicationId>, bundle_path: <.aab>})`
|
|
116
|
+
without `confirm`. It returns the plan only: it would open an edit, upload the
|
|
117
|
+
bundle, validate the edit, then delete it, committing nothing and changing no
|
|
118
|
+
track. Show that plan to the user and ask (picker, `question` / `description` in
|
|
119
|
+
`outputLanguage`, `header` `Play check`, labels `Validate on Play` / `Skip`).
|
|
120
|
+
Only on **Validate on Play**, call it again with `confirm: true`. Render the
|
|
121
|
+
verdict from `valid`: `true` → `PASS`, `false` → `FAIL` with the returned
|
|
122
|
+
`error`. On **Skip**, report `SKIPPED (no local Play validator)` with the reason
|
|
123
|
+
`user declined the upload`.
|
|
124
|
+
|
|
125
|
+
**Android otherwise** (unattended, or not onboarded): do not call the tool; report
|
|
126
|
+
`SKIPPED (no local Play validator)` with the reason from the Step 2 states.
|
|
127
|
+
|
|
128
|
+
`bundletool validate` is Gate 1 in every case; reporting it here would fake a
|
|
129
|
+
cleared gate.
|
|
130
|
+
|
|
131
|
+
Google does not document whether an upload into a discarded edit reserves its
|
|
132
|
+
`versionCode`; fastlane's `validate_only` runs the same sequence as a pre-release
|
|
133
|
+
check. If the real upload is later refused as "already used", raise `versionCode`.
|
|
134
|
+
|
|
135
|
+
## Gate 3: scope
|
|
136
|
+
|
|
137
|
+
This is the gate that catches what a human reviewer rejects, so it reads source,
|
|
138
|
+
not the binary. Both review skills cover a `Crash symbolication` row (dSYM upload
|
|
139
|
+
step / `mapping.txt` upload).
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# store-ready: report template
|
|
2
2
|
|
|
3
|
-
Read by `/multi-agent:store-ready` for
|
|
4
|
-
|
|
3
|
+
Read by `/multi-agent:store-ready` for Steps 7 and 8. The command file keeps
|
|
4
|
+
the skip and attribution rules; this file holds the layout, the full report
|
|
5
|
+
rules and the next actions Step 8 prints.
|
|
5
6
|
|
|
6
7
|
Write to `~/StoreChecks/<platform>-<repo>-<branch>-<timestamp>/report.md` and print
|
|
7
8
|
a summary.
|
|
@@ -38,3 +39,40 @@ Before rollout (human inputs, not verified)
|
|
|
38
39
|
Rollback / forward-fix owner: <name>
|
|
39
40
|
Forward-fix plan: <one line>
|
|
40
41
|
```
|
|
42
|
+
|
|
43
|
+
## Rules
|
|
44
|
+
|
|
45
|
+
- A skipped gate is never folded into the pass count. The verdict line states the
|
|
46
|
+
skip. An Android run whose Gate 2 did not run therefore reads
|
|
47
|
+
`2 of 3 gates cleared, 1 skipped` at best.
|
|
48
|
+
- Every blocking finding carries a file path or a store code. A finding the user
|
|
49
|
+
cannot act on is noise.
|
|
50
|
+
- The `Before rollout` block (phased rollout, `Halt thresholds`, rollback /
|
|
51
|
+
forward-fix owner, forward-fix plan) is filled by a human, never inferred. When it
|
|
52
|
+
is left unfilled the verdict line gains the suffix `, rollout plan missing`.
|
|
53
|
+
- The printed summary carries the verdict line, per-gate status, Blocking / Advisory /
|
|
54
|
+
Not run / Open questions, and the `Before rollout` block.
|
|
55
|
+
- Humanize via `--lang en` by default (`promptLanguage` is locked to `"en"`); pass
|
|
56
|
+
`--lang=tr` explicitly to opt into Turkish.
|
|
57
|
+
- No AI or assistant attribution anywhere, per
|
|
58
|
+
`$HOME/.claude/rules/git-conventions.md`.
|
|
59
|
+
- Real newlines, no HTML entities, per
|
|
60
|
+
`$HOME/.claude/multi-agent-refs/rules.md "External System Outputs"`.
|
|
61
|
+
|
|
62
|
+
## Next actions
|
|
63
|
+
|
|
64
|
+
Step 8 prints these and stops:
|
|
65
|
+
|
|
66
|
+
- the exact upload command for when the gates are clear, so uploading stays an
|
|
67
|
+
explicit human act:
|
|
68
|
+
- iOS: `xcrun altool --upload-app ...`
|
|
69
|
+
- Android: the Play Console upload, or the `gradle publish` task the project
|
|
70
|
+
declares - never run it
|
|
71
|
+
- `/multi-agent:store-ready --resume` to re-run after fixes
|
|
72
|
+
- `/multi-agent:channels` to land the findings in Jira / Confluence / Wiki / PR
|
|
73
|
+
- the enabled stack plugin's `fix-bug` skill (`ai-ios-toolkit:fix-bug` or the stack
|
|
74
|
+
equivalent) when Gate 3 produced code-level findings
|
|
75
|
+
|
|
76
|
+
`/multi-agent:testflight-validation` is a thin alias onto the command, kept so the
|
|
77
|
+
iOS-only name keeps working; it resolves there with the platform pinned to iOS.
|
|
78
|
+
`/multi-agent:test "store-ready"` also resolves there. There is one implementation.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Office Check (Step 3e)
|
|
2
|
+
|
|
3
|
+
Read by `/multi-agent:sync` at Step 3e of every sync and at step 9c of a release.
|
|
4
|
+
|
|
5
|
+
The office panel ships with the pipeline, so a sync carries it by checking it, not by copying it:
|
|
6
|
+
|
|
7
|
+
1. `node ~/multi-agent-pipeline/pipeline/scripts/office-build.mjs --check`: the committed page is what `pipeline/office-src` builds to, and `office/toolkit.json` carries the toolkit version in `docs/facts.json`. Either stale fails the sync until it is rebuilt and committed; a release that regenerates facts rebuilds the office right after.
|
|
8
|
+
2. After the install steps, compare `pipeline/office/index.html` with the installed copies (`~/.claude/office/`, and the Copilot and Codex trees when installed), byte for byte, plus the asset list. A difference means the install is behind: run `node install.js --installed` and compare again.
|
|
9
|
+
3. Report the toolkit version the installed `office/toolkit.json` carries: it is what the office Tools window starts, and it moves forward with every release.
|
|
10
|
+
4. An office server that is already running picks the update up by itself: the open page shows a reload banner, and `/multi-agent:office-on` replaces a server whose code changed. Nothing to restart by hand.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Sync Overview: targets, shared sections, tokens
|
|
2
|
+
|
|
3
|
+
Read by `/multi-agent:sync` before Step 1.5 (DETECT) to know every target's
|
|
4
|
+
path and direction, and before any step that switches GitHub identity or
|
|
5
|
+
publishes.
|
|
6
|
+
|
|
7
|
+
## Targets
|
|
8
|
+
|
|
9
|
+
| # | Target | Path | Direction |
|
|
10
|
+
|---|-------|-----|-----|
|
|
11
|
+
| 1 | Claude Code (source of truth) | `~/.claude/commands/multi-agent/` + `~/.claude/multi-agent-refs/` + `~/.claude/agents/` + `~/.claude/scripts/` + `~/.claude/lib/` | source |
|
|
12
|
+
| 2 | Copilot CLI | `~/.copilot/copilot-instructions.md` + `~/.copilot/skills/` | <- from Claude |
|
|
13
|
+
| 2b | Codex CLI | `~/.codex/AGENTS.md` + `~/.codex/skills/multi-agent/` + `~/.codex/multi-agent-refs/` + `~/.codex/agents/*.toml` | <- from Claude (path-rewritten) |
|
|
14
|
+
| 3 | multi-agent-pipeline repo | `~/multi-agent-pipeline/pipeline/` | <- from Claude (genericized) |
|
|
15
|
+
| 4 | Website | `{owner}/{website-host}` | <- version + features |
|
|
16
|
+
| 5 | multi-agent-toolkit MCP server | resolved from `prefs.global.devToolkit` or the `mcpServers` registration | own repo: gate, commit, publish |
|
|
17
|
+
|
|
18
|
+
## Sync rules (Claude <-> Copilot)
|
|
19
|
+
|
|
20
|
+
1. **Read first** - understand every target's current state before making any change
|
|
21
|
+
2. **Preserve file structure** - each target has its own format:
|
|
22
|
+
- `commands/multi-agent/` SKILL tree + `multi-agent-refs/phases/`: detailed pipeline spec (frontmatter, phases, routing)
|
|
23
|
+
- `copilot-instructions.md`: general development instructions + pipeline summary section
|
|
24
|
+
- `multi-agent-pipeline/pipeline/`: generic open-source version (NO personal data)
|
|
25
|
+
3. **Sync the shared sections** (Claude ↔ Copilot):
|
|
26
|
+
- Pipeline entries table (base / :autopilot)
|
|
27
|
+
- Project detection (URL-based + cwd-based)
|
|
28
|
+
- Figma pipeline flow
|
|
29
|
+
- Git conventions (author, branch, commit format)
|
|
30
|
+
- Keychain management (registry, naming convention, multi-agent pattern)
|
|
31
|
+
4. **Do not duplicate** - summary in Copilot, full spec in Claude. Keep this distinction.
|
|
32
|
+
5. **Report** - show a short diff summary after sync
|
|
33
|
+
|
|
34
|
+
## Keychain Token Access
|
|
35
|
+
|
|
36
|
+
| Operation | Token Source |
|
|
37
|
+
|-------|---------------|
|
|
38
|
+
| `gh` CLI (personal) | `{owner}` gh auth (Keychain) |
|
|
39
|
+
| `gh` CLI (work) | `{user}_<work-label>` gh auth (Keychain) - see `prefs.global.accounts[]` |
|
|
40
|
+
| npm publish | `NODE_AUTH_TOKEN` - `GITHUB_TOKEN` in CI, Keychain PAT locally |
|
|
41
|
+
| multi-agent-toolkit publish (Step 3d) | `npm` logical Keychain key -> throwaway `--userconfig`, registry from that repo's `publishConfig` |
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
gh auth switch --user {owner} # for personal repos
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Website files (Step 4)
|
|
48
|
+
|
|
49
|
+
| File | What to sync |
|
|
50
|
+
|-------|--------------|
|
|
51
|
+
| `src/lib/i18n.tsx` | Phase count, model count, feature descriptions (EN + TR) |
|
|
52
|
+
| `src/data/projects.ts` | Version number, tagline, description, feature list |
|
|
53
|
+
|
|
54
|
+
## Sub-command paths
|
|
55
|
+
|
|
56
|
+
| Claude Code | Copilot CLI |
|
|
57
|
+
|-------------|-------------|
|
|
58
|
+
| `~/.claude/commands/multi-agent/{cmd}/SKILL.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
|
|
59
|
+
|
|
60
|
+
**Claude -> Copilot**: add SKILL.md frontmatter (`name`, `description`, `user-invocable: true`, `argument-hint`)
|
|
61
|
+
**Copilot -> Claude**: simplify the frontmatter (`description` + `allowed-tools`), add `$ARGUMENTS`
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Pipeline Repo Sync (Step 3)
|
|
2
|
+
|
|
3
|
+
Read by `/multi-agent:sync` before Step 3 (REPO), and before writing or reviewing
|
|
4
|
+
any synced shell script.
|
|
5
|
+
|
|
6
|
+
## Platform support (macOS only)
|
|
7
|
+
|
|
8
|
+
Only macOS is supported (ADR-0012). `package.json` declares `os: ["darwin"]`, which npm enforces on the root package, so this tree cannot be installed elsewhere, and a detection table for other hosts would describe a case that cannot occur.
|
|
9
|
+
|
|
10
|
+
**Contract for synced shell scripts.** The runtime is BSD userland and bash 3.2,
|
|
11
|
+
and that is a stricter constraint than "cross-platform", not a looser one:
|
|
12
|
+
|
|
13
|
+
1. Path handling: always quote (`"$f"`); use `$HOME`, never `/Users/...`.
|
|
14
|
+
2. `grep -P` is banned. BSD grep has no `-P`: it exits 2, and with `2>/dev/null`
|
|
15
|
+
that reads as "found nothing". Use `-E`.
|
|
16
|
+
3. Timestamps: `stat -c %Y` FIRST, then `stat -f %m`. GNU-first ordering is
|
|
17
|
+
required because `stat -f` is a valid GNU flag (`--file-system`) that
|
|
18
|
+
succeeds and prints something that is not a timestamp.
|
|
19
|
+
4. Hashes: `sha256sum || shasum`, in that order. The gate fails a file that
|
|
20
|
+
names either alone.
|
|
21
|
+
5. `find` traversal: `-prune` for `node_modules`, `Pods`, `.build`,
|
|
22
|
+
`DerivedData`, `.next`.
|
|
23
|
+
6. Sed / awk: POSIX-portable. `-E`, never `-r`; `sed -i ''` on BSD.
|
|
24
|
+
7. Keychain I/O: always via `~/.claude/lib/credential-store.sh get|set`, never
|
|
25
|
+
`security` directly - the wrapper is what keeps a secret off argv.
|
|
26
|
+
8. Verification: after Step 3 (REPO), `bash -n` every shell script in
|
|
27
|
+
`pipeline/lib/` and `pipeline/scripts/`.
|
|
28
|
+
|
|
29
|
+
## Repo sync rules
|
|
30
|
+
|
|
31
|
+
1. **Source**: `~/.claude/commands/multi-agent/` + `~/.claude/multi-agent-refs/` + `~/.claude/agents/` + `~/.claude/lib/`
|
|
32
|
+
2. **Target**: `~/multi-agent-pipeline/pipeline/`
|
|
33
|
+
3. **Genericization** (must be applied BEFORE writing to the target):
|
|
34
|
+
- Jira project key (`prefs.global.defaultJiraKey`) -> `{JIRA_KEY}`, `PROJ` in examples
|
|
35
|
+
- Personal names/emails -> generic placeholder
|
|
36
|
+
- Branch names -> `develop`
|
|
37
|
+
- Project names -> `my-app`
|
|
38
|
+
- `{JIRA_HOST}`, `{BITBUCKET_HOST}`, `{CONFLUENCE_HOST}`, `{CORP_DOMAIN}` stay as-is
|
|
39
|
+
- **Verify**: `grep` scan for personal/corporate data inside pipeline/ -> 0 results
|
|
40
|
+
4. **File mapping**:
|
|
41
|
+
```
|
|
42
|
+
~/.claude/commands/multi-agent/ -> pipeline/commands/multi-agent/
|
|
43
|
+
~/.claude/multi-agent-refs/ -> pipeline/multi-agent-refs/ (refs + pickers, non-command)
|
|
44
|
+
~/.claude/commands/sim-test.md -> pipeline/commands/sim-test.md
|
|
45
|
+
~/.claude/agents/*.md -> pipeline/agents/
|
|
46
|
+
```
|
|
47
|
+
5. **Files NOT synced** (local-only, may contain personal data):
|
|
48
|
+
- `~/.claude/multi-agent-preferences.json`
|
|
49
|
+
- `~/.claude/CLAUDE.md`, `~/.claude/rules/`, `~/.claude/knowledge/`
|
|
50
|
+
- `~/.claude/scripts/` - EXCEPT `pre-commit-check.sh`, `agent-guard.sh`, `agent-guard.py`, and `build-stack-plugins.mjs` (generic, synced)
|
|
51
|
+
- `~/.claude/settings.json`
|
|
52
|
+
- `~/.claude/office/` - the office panel flows the other way: its source is the repo (`pipeline/office-src`, built by `office-build.mjs` into `pipeline/office`), and the installer copies it to each host. Never copy it from `~/.claude` into the repo; Step 3e checks it instead
|
|
53
|
+
- `~/.claude/multi-agent-refs/registries/` - the installer copies gate registries there from `pipeline/skills/shared/external`; the repo already holds the source
|
|
54
|
+
- **Any `~/.claude/commands/multi-agent/*/SKILL.md` whose frontmatter has `local-only: true`** - these are user/repo-specific alias wrappers that delegate to a private marketplace plugin's skills exposed as `multi-agent:<name>`. Syncing them would leak the private plugin/skill names into the public pipeline. Skip them at copy time; the backstop below proves none reached `pipeline/commands/`.
|
|
55
|
+
```bash
|
|
56
|
+
grep -rl "^local-only: true" ~/multi-agent-pipeline/pipeline/commands/ 2>/dev/null \
|
|
57
|
+
&& { echo "ABORT: local-only wrapper leaked into pipeline/commands"; exit 1; } || true
|
|
58
|
+
# backstop: corporate refs only (generic ai-ios-toolkit is fine)
|
|
59
|
+
grep -rniE "ai-(ios-engineering|mobile)-toolkit:(create-ui-component|evolve-ui-component|fix-bug|branch-and-pr|backlog|code-connect|figma-utility|resource-utility|component-wiki|component-docs|figma-setup)" \
|
|
60
|
+
~/multi-agent-pipeline/pipeline/commands/ 2>/dev/null \
|
|
61
|
+
&& { echo "ABORT: corporate reference leaked into pipeline/commands"; exit 1; } || true
|
|
62
|
+
```
|
|
63
|
+
- **Installed-tree artifacts.** Picker descriptions are Turkish with a
|
|
64
|
+
`description-en:` sidecar when `outputLanguage=tr`, and fable-tier agents
|
|
65
|
+
carry `model: opus` while `fableEnabled` is off. The repo always gets the
|
|
66
|
+
English form and `model: fable`, so normalize after copying:
|
|
67
|
+
```bash
|
|
68
|
+
# normalize: restore English descriptions, strip description-en sidecars
|
|
69
|
+
node ~/multi-agent-pipeline/pipeline/scripts/localize-commands.mjs restore \
|
|
70
|
+
--dir ~/multi-agent-pipeline/pipeline/commands/multi-agent
|
|
71
|
+
grep -rl "^description-en:" ~/multi-agent-pipeline/pipeline/commands/ 2>/dev/null \
|
|
72
|
+
&& { echo "ABORT: description-en sidecar leaked into pipeline/commands"; exit 1; } || true
|
|
73
|
+
# backstop: repo description lines must be English (Turkish-diacritics proxy)
|
|
74
|
+
grep -rn '^description:.*[çğıöşüÇĞİÖŞÜ]' ~/multi-agent-pipeline/pipeline/commands/ 2>/dev/null \
|
|
75
|
+
&& { echo "ABORT: localized description leaked into pipeline/commands"; exit 1; } || true
|
|
76
|
+
node ~/multi-agent-pipeline/pipeline/lib/agent-model-sync.mjs --dir ~/multi-agent-pipeline/pipeline/agents --fable-on
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
6. **Cross-platform smoke gate** (final step of the REPO sync, before push):
|
|
80
|
+
```bash
|
|
81
|
+
# bash -n: parse-level syntax check on every shell script
|
|
82
|
+
find ~/multi-agent-pipeline/pipeline/lib ~/multi-agent-pipeline/pipeline/scripts \
|
|
83
|
+
-name "*.sh" -type f -exec bash -n {} \;
|
|
84
|
+
# Should print nothing - any output is a portability regression.
|
|
85
|
+
|
|
86
|
+
# Portability grep: flag known non-portable constructs introduced post-sync.
|
|
87
|
+
grep -rnE "stat -f[^[:space:]]+[^|]|sed -i[^[:space:]'\"]" \
|
|
88
|
+
~/multi-agent-pipeline/pipeline/lib ~/multi-agent-pipeline/pipeline/scripts || true
|
|
89
|
+
# Each hit needs an explicit GNU/BSD fallback per the Platform Support contract.
|
|
90
|
+
```
|
|
91
|
+
Gate failure -> abort push, surface the file + line, fix in the `~/.claude/` source first, re-sync.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# update: details and sample output
|
|
2
|
+
|
|
3
|
+
Read by `/multi-agent:update` before writing the step 6 summary, or when a step
|
|
4
|
+
fails and its reasoning matters.
|
|
5
|
+
|
|
6
|
+
## Why doctor runs after the install
|
|
7
|
+
|
|
8
|
+
An update is the moment the layout changes, so it is the moment a layout check
|
|
9
|
+
is worth most: a script that moved, a host tree that did not get the copy, a
|
|
10
|
+
version stamp that disagrees with the package.
|
|
11
|
+
|
|
12
|
+
## Why the download pins the scope (step 3)
|
|
13
|
+
|
|
14
|
+
`--registry` does NOT override a scope mapping. A user-level .npmrc line like
|
|
15
|
+
`@scope:registry=https://npm.pkg.github.com` wins over it, so the download hits
|
|
16
|
+
the wrong registry, fails with `notarget`, and `--silent` hides why. Pinning the
|
|
17
|
+
scope is the setting that actually loses to nothing.
|
|
18
|
+
|
|
19
|
+
The tarball path is taken from `npm pack`'s own output, never a glob: an older
|
|
20
|
+
tarball left in `$UPD_DIR` would be extracted instead, and the run would install
|
|
21
|
+
the version it was trying to leave.
|
|
22
|
+
|
|
23
|
+
The registry is read with `curl`, not `npm view`, because `npm view` can answer
|
|
24
|
+
from a stale local cache.
|
|
25
|
+
|
|
26
|
+
## What `--installed` refreshes
|
|
27
|
+
|
|
28
|
+
`--installed` refreshes exactly the CLI targets that already carry a version
|
|
29
|
+
stamp (`$HOME/.claude/.pipeline-version`, `$HOME/.copilot/.pipeline-version`,
|
|
30
|
+
`$HOME/.codex/.pipeline-version`) and adds none: an update never installs
|
|
31
|
+
Copilot CLI or Codex CLI on a machine that only had Claude Code. With no stamp at
|
|
32
|
+
all it installs Claude Code. Each refreshed target gets the new version stamp.
|
|
33
|
+
|
|
34
|
+
## Retired adapters (step 4c)
|
|
35
|
+
|
|
36
|
+
Cursor, Antigravity and Copilot Chat adapters are no longer targets; the pipeline
|
|
37
|
+
targets Claude Code, Copilot CLI and Codex CLI. Per-project adapter files
|
|
38
|
+
(`.cursor/`, `.agent/`, `.github/copilot-instructions.md`) live in the user's
|
|
39
|
+
repos and are left untouched.
|
|
40
|
+
|
|
41
|
+
## Writing the step 6 summary
|
|
42
|
+
|
|
43
|
+
The JSON holds every release between the old and the new version (not only the
|
|
44
|
+
last one) and, for each plugin the refresh moved, that plugin's releases. Turn it
|
|
45
|
+
into a short note in `outputLanguage`, written for the person using the
|
|
46
|
+
pipeline, not for its maintainers:
|
|
47
|
+
|
|
48
|
+
- First line: `✓ Updated: v<CUR> → v<NEW>`, then one line per updated plugin
|
|
49
|
+
(`ai-ios-toolkit 0.20.0 → 0.21.0`).
|
|
50
|
+
- Then up to four groups, each only when it has entries: **New** (added),
|
|
51
|
+
**Fixed**, **Changed**, **Removed** (Turkish: Yeni, Düzeltilen, Değişen,
|
|
52
|
+
Kaldırılan). Put security entries first under Fixed.
|
|
53
|
+
- One plain sentence per item about what the user notices or can now do. Merge
|
|
54
|
+
items that say the same thing; leave out internal-only entries (smoke tests,
|
|
55
|
+
CI, refactors, budgets, docs) unless they change what a user sees. At most
|
|
56
|
+
about eight items per group; when more were dropped, say how many and that the
|
|
57
|
+
full list is in the CHANGELOG.
|
|
58
|
+
- Last line, when anything needs action: what to do (restart Claude Code for
|
|
59
|
+
plugin changes, run a command a release asks for).
|
|
60
|
+
|
|
61
|
+
With empty notes and no plugin updates, print only the version line.
|
|
62
|
+
|
|
63
|
+
## Sample output
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Current: v15.6.0 Latest: v15.7.0
|
|
67
|
+
-> npm pack @{npm-scope}/multi-agent-pipeline@15.7.0
|
|
68
|
+
-> node install.js --installed (Claude Code; no Copilot CLI or Codex CLI stamp, not installed)
|
|
69
|
+
-> migrate-prefs.mjs (0 changes - already v2.6.0)
|
|
70
|
+
|
|
71
|
+
✓ Updated: v15.6.0 → v15.7.0
|
|
72
|
+
ai-ios-toolkit 0.19.0 → 0.20.0
|
|
73
|
+
|
|
74
|
+
New
|
|
75
|
+
- iOS design review: critiques a screen against the HIG from screenshots.
|
|
76
|
+
Fixed
|
|
77
|
+
- The usage report reads the tracker as it is written.
|
|
78
|
+
Restart Claude Code to load the updated plugins.
|
|
79
|
+
|
|
80
|
+
Verification:
|
|
81
|
+
schema-validation: 27/27 pass
|
|
82
|
+
cross-cli-behavior: 14/14 pass
|
|
83
|
+
```
|