@mmerterden/multi-agent-pipeline 20.36.0 → 20.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/docs/facts.json +1 -1
- package/install/catalog-history.json +1 -1
- package/manifest.json +194 -122
- 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/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/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/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/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/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/schemas/runs-index.schema.json +2 -1
- package/pipeline/scripts/contract-server.mjs +1 -1
- package/pipeline/scripts/runs-index.mjs +34 -7
- package/pipeline/scripts/status-overview.mjs +401 -0
- package/pipeline/skills/.skill-manifest.json +63 -63
- 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-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
|
@@ -271,80 +271,18 @@ On Android diffs, reviewer agent annotates new/changed permissions with their po
|
|
|
271
271
|
|
|
272
272
|
## Examples
|
|
273
273
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
# Full report on most recent bundle (auto-pick)
|
|
278
|
-
/multi-agent:test "store-ready" --auto-pick
|
|
279
|
-
|
|
280
|
-
# Specific .aab, blockers only, Turkish
|
|
281
|
-
/multi-agent:test "store-ready" app/build/outputs/bundle/release/app-release.aab --threshold=error --lang=tr
|
|
282
|
-
|
|
283
|
-
# Supply last version code for progression check
|
|
284
|
-
multi-agent-test "store-ready" --last-version-code=142 --auto-pick
|
|
285
|
-
|
|
286
|
-
# Raw JSON for CI
|
|
287
|
-
/multi-agent:test "store-ready" --format=json --auto-pick
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
### Phase 3 Security Auditor (catalog cross-ref, no tool invocation)
|
|
291
|
-
|
|
292
|
-
When a Phase 3 review diff touches Android release-relevant paths (`AndroidManifest.xml`, `build.gradle(.kts)`, `proguard-rules.pro`, `network_security_config.xml`), the security-auditor persona loads this skill's 21-rule policy catalog and cites matching ruleIDs next to its findings. No bundletool / aapt2 / apksigner invocation at review time - catalog reads are free.
|
|
293
|
-
|
|
294
|
-
```
|
|
295
|
-
# Example finding from Phase 3 Security Auditor (wired in v5.8.1):
|
|
296
|
-
[BLOCKING] AndroidManifest.xml: new MANAGE_EXTERNAL_STORAGE permission added
|
|
297
|
-
(google-play-compliance / dangerous-permissions - Policy - Permissions)
|
|
298
|
-
File: app/src/main/AndroidManifest.xml:12
|
|
299
|
-
Fix: Remove the permission or add Play Console justification before submitting.
|
|
300
|
-
MANAGE_EXTERNAL_STORAGE triggers mandatory policy review on every update.
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
### `/multi-agent:review` (PR citation)
|
|
304
|
-
|
|
305
|
-
```
|
|
306
|
-
# Standard review - auto-loads Google catalog when diff touches Android release files
|
|
307
|
-
/multi-agent:review
|
|
308
|
-
|
|
309
|
-
# Review a specific branch
|
|
310
|
-
/multi-agent:review feature/PROJ-67890-file-manager
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
Findings in the review report carry the same `(google-play-compliance / <ruleID> - <Play ref>)` format as Phase 4 - the review command reuses the catalog contract.
|
|
314
|
-
|
|
315
|
-
### `/multi-agent:channels` (PR body auto-augmentation)
|
|
316
|
-
|
|
317
|
-
```
|
|
318
|
-
# Run the compliance scan first so its JSON lands in /tmp
|
|
319
|
-
/multi-agent:test "store-ready" --auto-pick --last-version-code=142
|
|
320
|
-
|
|
321
|
-
# Then deliver the report - channels auto-appends a Store compliance section
|
|
322
|
-
# to the PR body / Jira comment / Confluence page if the cache is < 6h old
|
|
323
|
-
# and at least one blocker or warning was found.
|
|
324
|
-
/multi-agent:channels PROJ-67890 --channels pr,jira
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
The appended section is structured:
|
|
328
|
-
|
|
329
|
-
```markdown
|
|
330
|
-
### Store compliance
|
|
331
|
-
|
|
332
|
-
⚠️ 3 blocker(s), 2 warning(s) - run /multi-agent:test "store-ready" for the full report.
|
|
333
|
-
|
|
334
|
-
- `target-api-level` - Policy - Target API: targetSdkVersion = 35 but Play Console requires ≥ 36 for new apps and updates
|
|
335
|
-
- `native-64bit` - Policy - 64-bit: lib/armeabi-v7a/libfoo.so has no arm64-v8a counterpart
|
|
336
|
-
- `foreground-service-types` - Android 14: <service> missing android:foregroundServiceType
|
|
337
|
-
+ 2 more
|
|
338
|
-
```
|
|
274
|
+
Invocation examples for each consumer (`/multi-agent:test "store-ready"`, the Phase 3 Security Auditor
|
|
275
|
+
catalog cross-reference, `/multi-agent:review` citations and the `/multi-agent:channels` Store compliance
|
|
276
|
+
section) are in [references/examples.md](references/examples.md).
|
|
339
277
|
|
|
340
278
|
## Notes
|
|
341
279
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
- **Data Safety form audit is partial.** Rule #14 flags manifest permissions that commonly trigger form updates, but the declared answers live in Play Console and cannot be cross-checked from here. The Android Publisher API has no Data Safety read: its only operation, `applications.dataSafety`, writes the declaration. With `google_play` onboarded, the toolkit's `store_search` / `store_call` reach the rest of the Android Publisher and Play Developer Reporting APIs (tracks, bundles, vitals), but the gap for Data Safety stays.
|
|
280
|
+
The target API threshold in Rule #1 moves every year, the scan is static and does not replace the Play Console
|
|
281
|
+
pre-launch report, and the Data Safety check is partial: [references/notes.md](references/notes.md).
|
|
345
282
|
|
|
346
|
-
##
|
|
283
|
+
## References
|
|
347
284
|
|
|
348
|
-
-
|
|
349
|
-
-
|
|
350
|
-
-
|
|
285
|
+
- [rules.yml](references/rules.yml): the machine-readable rule catalog behind the catalog table.
|
|
286
|
+
- [Examples](references/examples.md): open for command lines, a sample auditor finding and the exact Store compliance section channels appends.
|
|
287
|
+
- [Limits and caveats](references/notes.md): open before trusting a clean result or when a new Android version ships.
|
|
288
|
+
- [Version history](references/version-history.md): which release introduced each consumer surface.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Google Play compliance: Examples
|
|
2
|
+
|
|
3
|
+
Invocation examples for each consumer surface of the skill.
|
|
4
|
+
|
|
5
|
+
## Primary: `/multi-agent:test "store-ready"`
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
# Full report on most recent bundle (auto-pick)
|
|
9
|
+
/multi-agent:test "store-ready" --auto-pick
|
|
10
|
+
|
|
11
|
+
# Specific .aab, blockers only, Turkish
|
|
12
|
+
/multi-agent:test "store-ready" app/build/outputs/bundle/release/app-release.aab --threshold=error --lang=tr
|
|
13
|
+
|
|
14
|
+
# Supply last version code for progression check
|
|
15
|
+
multi-agent-test "store-ready" --last-version-code=142 --auto-pick
|
|
16
|
+
|
|
17
|
+
# Raw JSON for CI
|
|
18
|
+
/multi-agent:test "store-ready" --format=json --auto-pick
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Phase 3 Security Auditor (catalog cross-ref, no tool invocation)
|
|
22
|
+
|
|
23
|
+
When a Phase 3 review diff touches Android release-relevant paths (`AndroidManifest.xml`, `build.gradle(.kts)`, `proguard-rules.pro`, `network_security_config.xml`), the security-auditor persona loads this skill's 21-rule policy catalog and cites matching ruleIDs next to its findings. No bundletool / aapt2 / apksigner invocation at review time - catalog reads are free.
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
# Example finding from Phase 3 Security Auditor (wired in v5.8.1):
|
|
27
|
+
[BLOCKING] AndroidManifest.xml: new MANAGE_EXTERNAL_STORAGE permission added
|
|
28
|
+
(google-play-compliance / dangerous-permissions - Policy - Permissions)
|
|
29
|
+
File: app/src/main/AndroidManifest.xml:12
|
|
30
|
+
Fix: Remove the permission or add Play Console justification before submitting.
|
|
31
|
+
MANAGE_EXTERNAL_STORAGE triggers mandatory policy review on every update.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## `/multi-agent:review` (PR citation)
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
# Standard review - auto-loads Google catalog when diff touches Android release files
|
|
38
|
+
/multi-agent:review
|
|
39
|
+
|
|
40
|
+
# Review a specific branch
|
|
41
|
+
/multi-agent:review feature/PROJ-67890-file-manager
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Findings in the review report carry the same `(google-play-compliance / <ruleID> - <Play ref>)` format as Phase 4 - the review command reuses the catalog contract.
|
|
45
|
+
|
|
46
|
+
## `/multi-agent:channels` (PR body auto-augmentation)
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
# Run the compliance scan first so its JSON lands in /tmp
|
|
50
|
+
/multi-agent:test "store-ready" --auto-pick --last-version-code=142
|
|
51
|
+
|
|
52
|
+
# Then deliver the report - channels auto-appends a Store compliance section
|
|
53
|
+
# to the PR body / Jira comment / Confluence page if the cache is < 6h old
|
|
54
|
+
# and at least one blocker or warning was found.
|
|
55
|
+
/multi-agent:channels PROJ-67890 --channels pr,jira
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The appended section is structured:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
### Store compliance
|
|
62
|
+
|
|
63
|
+
⚠️ 3 blocker(s), 2 warning(s) - run /multi-agent:test "store-ready" for the full report.
|
|
64
|
+
|
|
65
|
+
- `target-api-level` - Policy - Target API: targetSdkVersion = 35 but Play Console requires ≥ 36 for new apps and updates
|
|
66
|
+
- `native-64bit` - Policy - 64-bit: lib/armeabi-v7a/libfoo.so has no arm64-v8a counterpart
|
|
67
|
+
- `foreground-service-types` - Android 14: <service> missing android:foregroundServiceType
|
|
68
|
+
+ 2 more
|
|
69
|
+
```
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Google Play compliance: Limits and Caveats
|
|
2
|
+
|
|
3
|
+
What the static scan does not cover and which thresholds move over time.
|
|
4
|
+
|
|
5
|
+
- **Policy thresholds change yearly.** The target API level in Rule #1 advances each August for new apps / November for updates. When a new Android version ships, update Rule #1 `target-api-level` with the new threshold.
|
|
6
|
+
- **Not a substitute for Play Console pre-launch report.** This skill catches static issues (manifest, signing, size, debug tools). Dynamic issues (crashes, ANRs, security vulnerabilities) require Play Console's own pre-launch testing on real devices.
|
|
7
|
+
- **Data Safety form audit is partial.** Rule #14 flags manifest permissions that commonly trigger form updates, but the declared answers live in Play Console and cannot be cross-checked from here. The Android Publisher API has no Data Safety read: its only operation, `applications.dataSafety`, writes the declaration. With `google_play` onboarded, the toolkit's `store_search` / `store_call` reach the rest of the Android Publisher and Play Developer Reporting APIs (tracks, bundles, vitals), but the gap for Data Safety stays.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Google Play compliance: Version History
|
|
2
|
+
|
|
3
|
+
- **v5.8.0** - Skill introduced. Orchestrates bundletool + aapt2 + apksigner, 21-rule catalog, EN+TR humanizer. Primary consumer only (`/multi-agent:test "store-ready"`).
|
|
4
|
+
- **v5.8.1** - 3 additional consumer surfaces wired (Phase 3 Security Auditor cross-ref, `/multi-agent:review` citation, `/multi-agent:channels` PR-body auto-augmentation). Regression-locked by `smoke-compliance-skills.sh` (45 assertions).
|
|
5
|
+
- **v6.0.0** - `language: en` frontmatter tag; 4-consumer Examples section expanded.
|
|
@@ -13,307 +13,84 @@ Read and follow the instructions in this file's INSTRUCTION.md section below.
|
|
|
13
13
|
|
|
14
14
|
# Multi-Agent Task Orchestrator
|
|
15
15
|
|
|
16
|
-
References under `$HOME/.claude/multi-agent-refs/` are installed with Claude Code.
|
|
17
|
-
|
|
18
|
-
## Project Detection
|
|
19
|
-
|
|
20
|
-
Detect project from cwd FIRST, then validate input format:
|
|
21
|
-
|
|
22
|
-
| cwd contains | Project | Accepted Input | Rejected Input |
|
|
23
|
-
|--------------|---------|----------------|----------------|
|
|
24
|
-
| `/my-ios-app` | my-app | `"PROJ-XXX" "branch"` | GitHub Issue URL |
|
|
25
|
-
| `/my-figma-app` | figma | `"https://github.com/.../issues/N"` | Jira ID + branch |
|
|
26
|
-
| Other | generic | Both formats | - |
|
|
27
|
-
|
|
28
|
-
If user gives wrong format for the project, warn:
|
|
29
|
-
- my-ios-app + GitHub URL → "This project expects a Jira ID + branch. Example: multi-agent \"PROJ-12345\" \"feature/PROJ-12345-desc\""
|
|
30
|
-
- my-figma-app + Jira → "This project expects a GitHub Issue URL. Example: multi-agent \"https://github.com/my-org/my-figma-app/issues/316\""
|
|
31
|
-
|
|
32
|
-
## Input Parsing
|
|
33
|
-
|
|
34
|
-
Classify user input into one of 5 types (matches the `commands/multi-agent/SKILL.md` dispatcher contract; cross-CLI parity is enforced by `smoke-cross-cli-behavior.sh`):
|
|
35
|
-
|
|
36
|
-
| # | Pattern | Type | Action |
|
|
37
|
-
|---|---------|------|--------|
|
|
38
|
-
| 1 | `#N` or bare `316` | github-issue-number | Fetch via gh after project selection |
|
|
39
|
-
| 2 | `https://github.com/.../issues/N` | github-issue-url | Extract org/repo/N, fetch via gh |
|
|
40
|
-
| 3 | `https://{JIRA_HOST}/browse/{JIRA_KEY}-XXXXX` | jira-url | Extract ID, fetch via Jira API |
|
|
41
|
-
| 4 | `{JIRA_KEY}-XXXXX` (bare) | jira-id | Fetch via Jira API |
|
|
42
|
-
| 5 | Anything else | free-text | No external fetch |
|
|
43
|
-
|
|
44
|
-
All types enter the same Phase 0 flow.
|
|
16
|
+
References under `$HOME/.claude/multi-agent-refs/` are installed with Claude Code. Before routing, read `$HOME/.claude/multi-agent-refs/orchestrator/copilot-pipeline.md`: project detection (cwd decides which input format is accepted, and the wrong format gets a warning), the five input types, the full routing rows, the autopilot matrix, the persona models and the per-phase summaries.
|
|
45
17
|
|
|
46
18
|
## Routing
|
|
47
19
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
| Input Pattern | Action |
|
|
51
|
-
|---------------|--------|
|
|
52
|
-
| `"PROJ-XXX" "branch"` | **my-app only** - Jira ID + branch name → auto-assigned incremental ID |
|
|
53
|
-
| `"https://github.com/..."` | **figma only** - parse issue, extract Jira from title/body, auto-create branch |
|
|
54
|
-
| `status` | Show all tasks with ID, phase, status |
|
|
55
|
-
| `log [id]` | Show agent-log.md for task (latest if no id) |
|
|
56
|
-
| `resume [id]` | Resume paused/failed task from last successful phase |
|
|
57
|
-
| `kill [id]` | Stop task, delete worktree + branch + logs. Asks confirm first |
|
|
58
|
-
| `clear-logs` | Superseded - redirect only, see below |
|
|
59
|
-
| `purge` | Nuclear cleanup - delete ALL worktrees, branches, logs, state, counter. Full reset |
|
|
60
|
-
| `review` | Skip phases 0-3, review current diff only |
|
|
61
|
-
| `autopilot` flag | Add to any pipeline command - skip user confirmations except destructive ops |
|
|
62
|
-
| No args / `help` | Show usage guide (project-specific) |
|
|
20
|
+
`status`, `log [id]`, `resume [id]`, `kill [id]`, `clear-logs`, `purge`, `review` (current diff only), the `autopilot` flag, and no args / `help`. Anything else is a task input (Jira ID + branch, GitHub issue URL or number, free text) and enters Phase 0.
|
|
63
21
|
|
|
64
|
-
## Task operations
|
|
65
|
-
|
|
66
|
-
Every task gets an auto-incremented short ID (`#1`, `#2`), stored in `agent-state.json`.
|
|
22
|
+
## Task operations
|
|
67
23
|
|
|
68
24
|
- **kill** MUST ask for confirmation before deleting anything; the remote branch is deleted ONLY on a second, explicit yes.
|
|
69
25
|
- **purge** MUST confirm twice: a first confirm, then a native `AskUserQuestion` paranoia gate where anything other than **Purge permanently** cancels. Remote branches are deleted ONLY on explicit confirmation.
|
|
70
|
-
- **resume** reads `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` (or `.../artifacts/agent-state.json`
|
|
71
|
-
- **clear-logs**: **do not run it.** Say it was superseded
|
|
72
|
-
|
|
73
|
-
Full procedure: `$HOME/.claude/multi-agent-refs/orchestrator/operations.md`. Read it when the input is `status`, `kill`, `purge` or `resume`.
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Autopilot Mode
|
|
26
|
+
- **resume** reads `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` (or `.../artifacts/agent-state.json`) and restarts from `currentPhase + 1`.
|
|
27
|
+
- **clear-logs**: **do not run it.** Say it was superseded and route to `multi-agent-prune-logs` or `multi-agent-garbage-collect`.
|
|
78
28
|
|
|
79
|
-
|
|
29
|
+
Read `$HOME/.claude/multi-agent-refs/orchestrator/operations.md` when the input is `status`, `kill`, `purge` or `resume`.
|
|
80
30
|
|
|
81
|
-
|
|
82
|
-
|-------|--------|-----------|
|
|
83
|
-
| Phase 1 (Plan Approval Gate) | Clarification (max 2 rounds) + approval loop - user replies `onayla`/`iptal`/free-text | **Gate skip** - log the plan, go straight to Phase 2 (autopilot contract: zero interaction) |
|
|
84
|
-
| Phase 3 (User test) | "Want to test it?" → wait | Skip → go straight to Phase 4 |
|
|
85
|
-
| Phase 4 (Commit) | "Want to commit?" → wait | Automatic commit + push |
|
|
86
|
-
| Phase 4 (PR) | "Want to open a PR?" → wait | Automatically create the PR |
|
|
31
|
+
## Autopilot
|
|
87
32
|
|
|
88
|
-
**
|
|
89
|
-
- Phase 3 Review → if there is a blocking finding, return to Phase 2, fix + rebuild automatically (safety)
|
|
90
|
-
- Kill/Purge confirmations → destructive operations always ask
|
|
91
|
-
- Build fail → fix + rebuild automatically (max 3 retries). If it still fails after 3 retries → pause, ask the user
|
|
33
|
+
`autopilot` skips confirmations: the Plan Approval Gate becomes a **Gate skip** (log the plan, go to Phase 2), the user test is skipped, commit, push and PR run automatically. **Never skipped:** a blocking review finding returns to Phase 2; kill / purge confirmations always ask; a build failure retries at most 3 times, then pauses and asks. Read `$HOME/.claude/multi-agent-refs/phases/modes.md` when `autopilot` is set.
|
|
92
34
|
|
|
93
|
-
|
|
35
|
+
## Agent dispatch - per-persona model routing
|
|
94
36
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Agent dispatch - per-persona model routing
|
|
100
|
-
|
|
101
|
-
Every agent persona under `$HOME/.claude/agents/*.md` declares a `preferredModel` frontmatter field. The orchestrator MUST honor it on every dispatch, on both Claude Code and Copilot CLI - cross-CLI parity is enforced by `smoke-cross-cli-behavior.sh`. Each persona file carries its own `modelRationale`; this is the rung only.
|
|
102
|
-
|
|
103
|
-
| Persona | `preferredModel` |
|
|
104
|
-
|---|---|
|
|
105
|
-
| `explorer` | `sonnet` |
|
|
106
|
-
| `code-reviewer` | `fable` (Reviewer 1; Phase 3 sets Reviewer 2 `opus`, Reviewer 3 `sonnet`) |
|
|
107
|
-
| `security-auditor` | `opus` |
|
|
108
|
-
| `ios-architect` / `android-architect` / `backend-architect` | `fable` |
|
|
109
|
-
|
|
110
|
-
**Dispatch contract:**
|
|
37
|
+
Every persona under `$HOME/.claude/agents/*.md` declares `preferredModel`; honor it on every dispatch, on both CLIs.
|
|
111
38
|
|
|
112
39
|
```bash
|
|
113
40
|
persona_file="$HOME/.claude/agents/${persona}.md"
|
|
114
41
|
pref_model="$(awk '/^preferredModel:/ {print $2; exit}' "$persona_file")"
|
|
115
|
-
override="${PHASE_MODEL_OVERRIDE:-}"
|
|
42
|
+
override="${PHASE_MODEL_OVERRIDE:-}"
|
|
116
43
|
routed="${override:-$("$HOME/.claude/lib/model-dispatch.sh" subagent --persona "$persona" --phase "$currentPhase" --task-kind "$taskType" --default "${pref_model:-opus}" 2>/dev/null)}"
|
|
117
44
|
resolved_model="${routed:-${pref_model:-opus}}"
|
|
118
|
-
|
|
119
|
-
export CLAUDE_CODE_SUBAGENT_MODEL="$resolved_model"
|
|
120
|
-
# Claude Code honors the env var; Copilot CLI also passes it as --model.
|
|
45
|
+
export CLAUDE_CODE_SUBAGENT_MODEL="$resolved_model" # Copilot CLI also passes it as --model
|
|
121
46
|
```
|
|
122
47
|
|
|
123
|
-
**Precedence:** per-dispatch `PHASE_MODEL_OVERRIDE` > `prefs.global.modelRouting` rule > persona `preferredModel` > global default (`opus`).
|
|
124
|
-
|
|
125
|
-
**Simple text tasks (`delegate`):** before summarizing a log or document, extracting fields, labelling or drafting a translation or commit body in-session, ask `"$HOME/.claude/lib/model-dispatch.sh" delegate --default host`. `free` means call `llm_delegate`; `ESCALATE_TO_CLAUDE` or any other answer means do it in-session. Never for code, plans, reviews or triage. Task list and rules: `$HOME/.claude/multi-agent-refs/features/free-models.md`.
|
|
126
|
-
|
|
127
|
-
**Observability:** emit `phase.agent.dispatch` OTel span with `{persona, resolved_model, override_source}` attributes when `MULTI_AGENT_OTEL_SPANS=1` (see `phase-tracker.sh`).
|
|
128
|
-
|
|
129
|
-
## Skill loading and injection
|
|
130
|
-
|
|
131
|
-
Gated by `prefs.global.dynamicSkillLoading` (default `false`): when on, only skills matched by `match-skills.mjs` are injected into Phase 1-3 sub-agent prompts; without `.skills-index.json` it eager-loads, so it never blocks the happy path. Every sub-agent prompt SHOULD carry task-specific context from Phase 1 on top of the persona's embedded skills.
|
|
132
|
-
|
|
133
|
-
Full procedure: `$HOME/.claude/multi-agent-refs/orchestrator/skill-loading.md`. Read it when `dynamicSkillLoading` is on, or when composing a sub-agent prompt.
|
|
48
|
+
**Precedence:** per-dispatch `PHASE_MODEL_OVERRIDE` > `prefs.global.modelRouting` rule > persona `preferredModel` > global default (`opus`). Anthropic-only: features/model-fallback.md "Routing at dispatch". Simple text tasks ask `model-dispatch.sh delegate --default host` first; `free` means `llm_delegate`, never for code, plans, reviews or triage (`$HOME/.claude/multi-agent-refs/features/free-models.md`).
|
|
134
49
|
|
|
135
|
-
|
|
50
|
+
Skill injection (`prefs.global.dynamicSkillLoading`): read `$HOME/.claude/multi-agent-refs/orchestrator/skill-loading.md` when it is on or when composing a sub-agent prompt.
|
|
136
51
|
|
|
137
52
|
## Phase Pipeline
|
|
138
53
|
|
|
139
|
-
Run phases sequentially
|
|
140
|
-
If any phase fails, mark task as `paused` and stop - user can `resume` later.
|
|
141
|
-
|
|
142
|
-
**The blocks below are the routing summary, not the specification.** Each phase's
|
|
143
|
-
full contract lives in `$HOME/.claude/multi-agent-refs/phases/phase-{n}-{name}.md`
|
|
144
|
-
and is read when that phase actually starts. Modes are in `phases/modes.md`,
|
|
145
|
-
operations in `phases/operations.md`, the log shape in `phases/log-format.md`.
|
|
146
|
-
Where a summary here and a ref disagree, the ref wins.
|
|
54
|
+
Run phases sequentially, log every step to `agent-log.md`, and on a failure mark the task `paused` and stop. Each phase's contract is `$HOME/.claude/multi-agent-refs/phases/phase-N-<name>.md`, read when that phase starts; the ref wins over any summary. Update `agent-state.json` at EVERY phase transition.
|
|
147
55
|
|
|
148
56
|
### Canonical phase labels (TaskCreate + banner)
|
|
149
57
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
|
153
|
-
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
| 2 | Phase 2: Dev |
|
|
157
|
-
| 3 | Phase 3: Review |
|
|
58
|
+
| # | Label |
|
|
59
|
+
|---|---|
|
|
60
|
+
| 0 | Phase 0: Init |
|
|
61
|
+
| 1 | Phase 1: Plan |
|
|
62
|
+
| 2 | Phase 2: Dev |
|
|
63
|
+
| 3 | Phase 3: Review |
|
|
158
64
|
| 4 | Phase 4: Commit & PR |
|
|
159
|
-
| 5 | Phase 5: Report
|
|
65
|
+
| 5 | Phase 5: Report |
|
|
160
66
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
1. For TaskCreate, use the matching label as the task `subject`.
|
|
164
|
-
2. For terminal banners, call `phase-banner.sh` with the `auto` sentinel and `PHASE_LANG=en` env - or pass the literal label from the table. Never invent a new label.
|
|
165
|
-
3. Reviewer-count qualifiers (e.g. `(parallel + triage)`) stay English - they are technical artifacts, not user copy.
|
|
166
|
-
|
|
167
|
-
**Out of scope for localization** (always EN, per `prefs.schema.json`): reviewer/triage system prompts, commit messages, PR titles/bodies, Jira comments, wiki content, log payloads inside `agent-log.md` - these are external artifacts consumed by other tools and humans beyond this user.
|
|
67
|
+
TaskCreate subjects and `phase-banner.sh` headers (`auto`, `PHASE_LANG=en`) use these labels only, in English on every host. Never invent a label.
|
|
168
68
|
|
|
169
69
|
#### TaskCreate ordering (strict)
|
|
170
70
|
|
|
171
|
-
All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate
|
|
172
|
-
|
|
173
|
-
- `multi-agent`, `multi-agent-autopilot`: 0 → 1 → 2 → 3 → 4 → 5
|
|
174
|
-
- `multi-agent-analysis`: 0 → 1 → 3 → 4 → 5 (no code is written, so Dev is not in the set)
|
|
175
|
-
|
|
176
|
-
Every mode registers its whole set at Step -1. Full contract: `refs/tracker-contract.md` section "TaskCreate ordering (strict)".
|
|
71
|
+
All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate (Claude Code only; Copilot CLI has no widget). Never pre-mark a phase completed or skipped: register every tile as `pending`, then flip it. `multi-agent`, `multi-agent-autopilot`: 0-5; `multi-agent-analysis`: 0, 1, 3, 4, 5. Contract: `refs/tracker-contract.md`.
|
|
177
72
|
|
|
178
73
|
### Phase 0: Init
|
|
179
74
|
|
|
180
|
-
|
|
181
|
-
> `$HOME/.claude/multi-agent-refs/phases/phase-0-init.md`. Read it before every Phase 0 run and execute all of
|
|
182
|
-
> them. Do **NOT** short-circuit: even when the input is a Jira ID plus a branch, the
|
|
183
|
-
> prefs load, the multi-repo offer, the branch picker and the branch-name confirm are
|
|
184
|
-
> required UX checkpoints.
|
|
185
|
-
>
|
|
186
|
-
> **Exit gate (BLOCKING).** Before marking Phase 0 completed:
|
|
187
|
-
>
|
|
188
|
-
> ```bash
|
|
189
|
-
> node "$HOME/.copilot/scripts/phase0-exit-gate.mjs" "$TASK_ID" --input "$USER_INPUT"
|
|
190
|
-
> ```
|
|
191
|
-
>
|
|
192
|
-
> Non-zero means Phase 0 did not produce its own output - `taskType`, `baseBranch`,
|
|
193
|
-
> `baseFetchStatus`, a worktree path distinct from the project root, and a recorded Figma
|
|
194
|
-
> access tier when the input carries a Figma URL. Fix the missing step; do not proceed.
|
|
195
|
-
>
|
|
196
|
-
> **Credential inventory (Step 0).** Run
|
|
197
|
-
> `bash "$HOME/.copilot/lib/credential-inventory.sh" --json` and store the result in
|
|
198
|
-
> `agent-state.json.credentialInventory`. Per `refs/keychain.md` Rule 2, never ask the
|
|
199
|
-
> user for data a mapped credential can fetch. Ask for the pointer (the issue URL)
|
|
200
|
-
> instead, and say what you will do with it.
|
|
201
|
-
|
|
202
|
-
Per-project input parsing (my-ios-app / my-figma-app / generic), worktree creation, git author and the initial log + state files. Full procedure: `$HOME/.claude/multi-agent-refs/orchestrator/phase-0-projects.md`. Read it when Phase 0 reaches input parsing and worktree setup.
|
|
203
|
-
|
|
204
|
-
**IMPORTANT**: Update `agent-state.json` at EVERY phase transition. This file is the resume source of truth.
|
|
205
|
-
|
|
206
|
-
**Issue family** (Jira input, once `agent-state.json` exists): run
|
|
207
|
-
`bash "$HOME/.copilot/lib/jira-family-write.sh" resolve --state "$STATE_FILE"`. It records the
|
|
208
|
-
story, dev and test sub-tasks and the story format check in `state.jiraFamily`, and asks and writes nothing;
|
|
209
|
-
the channels Jira step writes to them.
|
|
210
|
-
|
|
211
|
-
### Phase 1: Plan
|
|
212
|
-
Two halves, one phase, one approval gate.
|
|
213
|
-
|
|
214
|
-
**1a - Analysis** (claude-sonnet-5-5, `explorer` persona)
|
|
215
|
-
1. Launch **explore agents** (parallel) to scan the codebase: related files, existing patterns and conventions, potential impact areas
|
|
216
|
-
2. Summarize findings
|
|
217
|
-
3. Log: `📊 Phase 1: Plan (analysis) - {N} files identified, {summary}`
|
|
218
|
-
|
|
219
|
-
**1b - Planning** (claude-fable-5-1)
|
|
220
|
-
1. Create task breakdown → todos with dependencies
|
|
221
|
-
2. Launch **ios-architect** agent for architecture review (if structural changes)
|
|
222
|
-
3. Determine development approach per todo (new file, modify, refactor)
|
|
223
|
-
4. Log: `🧠 Phase 1: Plan - {N} todos created`
|
|
224
|
-
5. **Plan Approval Gate** (interactive only - autopilot may not ask). Full flow in `refs/phases/phase-1-plan.md` Step 5:
|
|
225
|
-
- **5a - Clarification** (conditional, max 2 rounds): if the Jira/issue description is ambiguous (vague acceptance, UI task without Figma, API task without endpoint contract, `ambiguityScore >= 2`, parent-story scope drift), ask structured questions before rendering the plan. User answers → plan regenerated. If it is still unclear after the 2nd round, render the plan with a "best-effort" banner.
|
|
226
|
-
- **5b - Approval loop**: render plan → user: `onayla`/`iptal`/free-text. A free-text edit request → the planning model (Fable) revises the plan → show it again. No iteration cap; user controls exit via `onayla` or `iptal`.
|
|
227
|
-
- Persist `clarificationRounds`, `clarificationQuestions`, `clarificationAnswers`, `planIterations`, `planApprovedAt`, `planEditRequests` to `state.phases["1"]`.
|
|
75
|
+
Run all **8 sequential interactive steps** in `$HOME/.claude/multi-agent-refs/phases/phase-0-init.md`; never short-circuit. Step 0: `bash "$HOME/.copilot/lib/credential-inventory.sh" --json` into `agent-state.json.credentialInventory`; never ask for data a mapped credential can fetch. **Exit gate (BLOCKING)**: `node "$HOME/.copilot/scripts/phase0-exit-gate.mjs" "$TASK_ID" --input "$USER_INPUT"`; non-zero means Phase 0 skipped its own output (`taskType`, `baseBranch`, `baseFetchStatus`, a worktree distinct from the project root, the Figma tier for a Figma URL): fix the missing step. Per-project parsing and worktree: `$HOME/.claude/multi-agent-refs/orchestrator/phase-0-projects.md`. Jira input: `bash "$HOME/.copilot/lib/jira-family-write.sh" resolve --state "$STATE_FILE"` (records, writes nothing).
|
|
228
76
|
|
|
229
|
-
###
|
|
230
|
-
For each todo (respecting dependency order):
|
|
231
|
-
1. Update todo status: `in_progress`
|
|
232
|
-
2. **TDD cycle**: write failing test → verify RED; write minimal code → verify GREEN; refactor if needed
|
|
233
|
-
3. Run build: `xcodebuild` via **task agent**
|
|
234
|
-
4. If build fails → fix → rebuild (max 3 attempts, track `retryCount` in `agent-state.json`)
|
|
235
|
-
5. Update todo status: `done`
|
|
236
|
-
6. Log: `⚡ Phase 2: {todo-id} - Test ✅ Build ✅`
|
|
77
|
+
### Phases 1-5
|
|
237
78
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
- Triage: single top-tier pass over merged findings (`claude-fable-5-1` on Claude Code, `claude-opus-4.7` on Copilot CLI)
|
|
244
|
-
2. Collect findings, classify:
|
|
245
|
-
- 🔴 **Blocking** → must fix → back to Phase 2 (max 3 iterations)
|
|
246
|
-
- 🟡 **Important** → fix and re-review
|
|
247
|
-
- 🟢 **Suggestion** → apply if reasonable
|
|
248
|
-
3. Log: `🔍 Phase 3: Review - {consensus}`
|
|
79
|
+
- **1 Plan**: analysis (`explorer`), planning, then the **Plan Approval Gate** (interactive only): clarification max 2 rounds, approval loop `onayla` / `iptal` / free-text.
|
|
80
|
+
- **2 Dev**: TDD per todo, build, max 3 fix attempts.
|
|
81
|
+
- **3 Review**: three parallel reviewers + one triage pass; blocking goes back to Phase 2 (max 3 iterations). Interactive user test via `AskUserQuestion`, saying yes removes the worktree and checks the branch out: `$HOME/.claude/multi-agent-refs/orchestrator/phase-3-user-test.md`.
|
|
82
|
+
- **4 Commit & PR**: ask before commit (No pauses; `resume` later) and before the PR; `git add` specific files, never `git add -A`; author from `prefs.global.identities[]`. Read `$HOME/.claude/multi-agent-refs/orchestrator/phase-4-5-projects.md`.
|
|
83
|
+
- **5 Report**: finalize `agent-log.md` (`$HOME/.claude/multi-agent-refs/phases/log-format.md`), print the summary.
|
|
249
84
|
|
|
250
|
-
|
|
251
|
-
Lets the user test the code before the PR, through a native `AskUserQuestion` picker (never a typed y/N prompt). The prompt MUST say that yes **removes the worktree and checks the branch out locally**, or the side effect is implicit. Skip → Phase 4; a requested fix recreates the worktree and returns to Phase 2. Commits live on the branch, so removing the worktree does NOT delete them.
|
|
252
|
-
|
|
253
|
-
Full procedure: `$HOME/.claude/multi-agent-refs/orchestrator/phase-3-user-test.md`. Read it when Phase 3 review is done and the run is interactive.
|
|
254
|
-
|
|
255
|
-
### Phase 4: Commit & PR
|
|
256
|
-
|
|
257
|
-
Every project:
|
|
258
|
-
1. **Ask**: "Want to commit?" **No** → pause; the user continues with `resume` when ready.
|
|
259
|
-
2. my-figma-app: run `/figma-iteration-commit {ComponentName}` - do NOT commit manually, the skill manages everything.
|
|
260
|
-
3. my-app / generic: stage specific files with `git add` (NOT `git add -A` - avoid committing .env, credentials, or other sensitive files), commit as `{type}({scope}): {description} [PROJ-{id}]`, push, then **Ask**: "Want to open a Pull Request?" before creating it.
|
|
261
|
-
4. Author: resolved from `prefs.global.identities[]` - NEVER hardcode.
|
|
262
|
-
|
|
263
|
-
Full procedure: `$HOME/.claude/multi-agent-refs/orchestrator/phase-4-5-projects.md`. Read it when Phase 4 starts, for the per-project steps and the GitHub issue body update.
|
|
264
|
-
|
|
265
|
-
### Phase 5: Report
|
|
266
|
-
1. Finalize `agent-log.md` with ALL sections:
|
|
267
|
-
- **Timeline table**: phase, agent, model, duration, status, detail
|
|
268
|
-
- **Agent Activity Report**: per-agent call count, total duration, models used, skill count
|
|
269
|
-
- **Token Estimate**: estimated token usage per agent + total
|
|
270
|
-
- **Per-Phase Time Distribution**: ASCII bar chart showing time per phase
|
|
271
|
-
- **Review Iterations**: blocking/important/suggestion counts per iteration
|
|
272
|
-
- **Files Changed**: `git diff --stat` output
|
|
273
|
-
- **Review Consensus**: final 🔴/🟡/🟢 status
|
|
274
|
-
- **Test Scenarios**: Turkish, for Jira (Precondition → Steps → Expected result)
|
|
275
|
-
2. Print compact summary to terminal:
|
|
276
|
-
```
|
|
277
|
-
✅ PROJ-{id} complete
|
|
278
|
-
⏱️ Total: 3m 18s | Agents: 12 calls | Files: 4 changed
|
|
279
|
-
📦 Commit: abc1234 | PR: #87
|
|
280
|
-
📖 Wiki: {ComponentName}.md pushed to wiki master
|
|
281
|
-
📋 Full report: ~/.claude/logs/multi-agent/{project}/{task-id}/agent-log.md
|
|
282
|
-
```
|
|
283
|
-
3. Log: `📋 Phase 5: Report complete`
|
|
284
|
-
|
|
285
|
-
**Step 2 - Wiki + Figma screenshots** runs only for a component implementation with a GitHub Issue (skip for a bug fix or refactor). Full procedure: `$HOME/.claude/multi-agent-refs/orchestrator/phase-4-5-projects.md`. Read it when Phase 5 reports a component task.
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## Log File Format
|
|
290
|
-
|
|
291
|
-
Canonical shape, and the path the code actually uses, live in
|
|
292
|
-
`$HOME/.claude/multi-agent-refs/phases/log-format.md`. Read it when writing
|
|
293
|
-
the log; do not re-derive the format here.
|
|
294
|
-
|
|
295
|
-
## Component Generation
|
|
296
|
-
|
|
297
|
-
Generic guide: `$HOME/.claude/multi-agent-refs/component-generation.md`.
|
|
298
|
-
Dispatch (which plugin skill handles it per CLI):
|
|
299
|
-
`$HOME/.claude/multi-agent-refs/component-dispatch.md`.
|
|
300
|
-
Loaded only for a task that generates a component from a design.
|
|
85
|
+
Component generation: `$HOME/.claude/multi-agent-refs/component-generation.md` and `component-dispatch.md`, only for a design-to-component task.
|
|
301
86
|
|
|
302
87
|
## Rules
|
|
303
88
|
|
|
304
|
-
-
|
|
305
|
-
-
|
|
306
|
-
-
|
|
307
|
-
-
|
|
308
|
-
-
|
|
309
|
-
-
|
|
310
|
-
- ✅ Every public method must have tests
|
|
311
|
-
- ✅ Xcode header on new Swift files
|
|
312
|
-
- ✅ Commit message format:
|
|
313
|
-
- With Jira: `{type}({scope}): description [PROJ-{id}]`
|
|
314
|
-
- Without Jira (generic): `{type}({scope}): description [#{shortId}]`
|
|
315
|
-
- ✅ Git author: resolved from `prefs.global.identities[]` (e.g. `{identity.name} <{identity.email}>`) - NEVER hardcoded
|
|
316
|
-
|
|
317
|
-
## Help Display
|
|
89
|
+
- NEVER put "Copilot", "AI", "generated by" in code or commits
|
|
90
|
+
- NEVER commit without passing build or review
|
|
91
|
+
- NEVER auto-close an issue (GitHub or Jira); PR bodies use `Ref: #N` / `Related: #N`, never `Closes/Fixes/Resolves`
|
|
92
|
+
- Follow existing code style; design tokens, no magic numbers; every public method tested; Xcode header on new Swift files
|
|
93
|
+
- Commit: `{type}({scope}): description [PROJ-{id}]`, or `[#{shortId}]` without Jira
|
|
94
|
+
- Git author from `prefs.global.identities[]`, never hardcoded
|
|
318
95
|
|
|
319
|
-
|
|
96
|
+
Help: the `multi-agent-help` skill (`/multi-agent-help`).
|