@mmerterden/multi-agent-pipeline 12.5.0 → 12.7.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 +213 -0
- package/README.md +19 -19
- package/docs/FIGMA_PIPELINE.md +34 -34
- package/docs/adr/0001-three-model-triage.md +12 -12
- package/docs/adr/0002-instruction-driven-flag.md +5 -5
- package/docs/adr/0003-unified-shared-skills.md +5 -5
- package/docs/adr/0004-zero-dependency-philosophy.md +5 -5
- package/docs/adr/0005-lazy-phase-docs.md +2 -2
- package/docs/adr/0006-skills-core-external-split.md +6 -6
- package/docs/adr/0007-multi-tool-adapter-framework.md +19 -19
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +19 -19
- package/docs/adr/README.md +1 -1
- package/docs/best-practices.md +3 -3
- package/docs/features.md +48 -28
- package/docs/performance.md +16 -16
- package/docs/recovery-guide.md +39 -39
- package/index.js +11 -5
- package/install/_common.mjs +5 -11
- package/install/_copilot-instructions.mjs +2 -2
- package/install/_dev-only-files.mjs +2 -1
- package/install/_platform-filter.mjs +1 -1
- package/install/_telemetry.mjs +1 -1
- package/install/claude.mjs +10 -9
- package/install/copilot.mjs +10 -19
- package/install/index.mjs +7 -15
- package/install/templates/copilot-instructions.md +54 -54
- package/install.js +1 -1
- package/package.json +15 -11
- package/pipeline/agents/security-auditor.md +1 -1
- package/pipeline/commands/archive-guard.md +5 -5
- package/pipeline/commands/multi-agent/SKILL.md +3 -1
- package/pipeline/commands/multi-agent/analysis/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/design-check/SKILL.md +287 -0
- package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/finish/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/forget/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +46 -6
- package/pipeline/commands/multi-agent/issue/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/kill/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/language/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/log/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/purge/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +107 -19
- package/pipeline/commands/multi-agent/resume/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/review/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/review-issue/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/review-jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/routines/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/save/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/scan/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/search/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/stack/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/status/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/sync/SKILL.md +123 -16
- package/pipeline/commands/multi-agent/test/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/uninstall/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/update/SKILL.md +3 -3
- package/pipeline/commands/sim-test.md +5 -5
- package/pipeline/eval/run-metrics-fixture.json +60 -13
- package/pipeline/lib/account-resolver.sh +1 -1
- package/pipeline/lib/channels-multi-repo.sh +1 -1
- package/pipeline/lib/context-link-extractor.sh +1 -1
- package/pipeline/lib/credential-store.sh +33 -1
- package/pipeline/lib/fetch-confluence.sh +1 -1
- package/pipeline/lib/fetch-crashlytics.sh +1 -1
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/fetch-graylog.sh +1 -1
- package/pipeline/lib/fetch-swagger.sh +1 -1
- package/pipeline/lib/issue-fetcher.sh +1 -1
- package/pipeline/lib/multi-repo-pipeline.sh +1 -1
- package/pipeline/lib/repo-cache.sh +1 -1
- package/pipeline/lib/submodule-detector.sh +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +1 -1
- package/pipeline/multi-agent-refs/component-generation.md +121 -0
- package/pipeline/multi-agent-refs/cross-cli-contract.md +4 -4
- package/pipeline/multi-agent-refs/features/model-fallback.md +2 -2
- package/pipeline/multi-agent-refs/phases/phase-3-dev.md +2 -2
- package/pipeline/multi-agent-refs/phases/phase-4-review.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-5-test.md +4 -4
- package/pipeline/preferences-template.json +23 -12
- package/pipeline/schemas/agent-state.schema.json +125 -5
- package/pipeline/schemas/analysis-output.schema.json +18 -4
- package/pipeline/schemas/analysis-spec.schema.json +120 -32
- package/pipeline/schemas/clarify-output.schema.json +15 -5
- package/pipeline/schemas/design-check-config.schema.json +183 -0
- package/pipeline/schemas/dev-critic-output.schema.json +20 -5
- package/pipeline/schemas/figma-project-config.schema.json +42 -10
- package/pipeline/schemas/learnings-ledger.schema.json +10 -2
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +1 -4
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +24 -7
- package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +30 -12
- package/pipeline/schemas/plan-todos.schema.json +6 -3
- package/pipeline/schemas/planning-output.schema.json +5 -1
- package/pipeline/schemas/prefs.schema.json +215 -197
- package/pipeline/schemas/test-gap.schema.json +5 -5
- package/pipeline/schemas/token-budget.json +8 -8
- package/pipeline/schemas/triage-corpus.schema.json +1 -1
- package/pipeline/scripts/README.md +7 -5
- package/pipeline/scripts/aggregate-metrics.mjs +18 -6
- package/pipeline/scripts/build-skills-index.mjs +6 -2
- package/pipeline/scripts/build-stack-plugins.mjs +142 -39
- package/pipeline/scripts/check-derived-drift.mjs +196 -0
- package/pipeline/scripts/check-md-links.mjs +6 -2
- package/pipeline/scripts/classify-plan-safety.mjs +26 -8
- package/pipeline/scripts/cost-budget-check.mjs +11 -6
- package/pipeline/scripts/cost-table.json +1 -1
- package/pipeline/scripts/diff-explain.mjs +7 -3
- package/pipeline/scripts/diff-risk-score.mjs +13 -3
- package/pipeline/scripts/eval-golden-tasks-live.mjs +8 -3
- package/pipeline/scripts/eval-golden-tasks.mjs +21 -9
- package/pipeline/scripts/eval-intent.mjs +8 -4
- package/pipeline/scripts/eval-mine-corpus.mjs +14 -4
- package/pipeline/scripts/evidence-gate.mjs +7 -2
- package/pipeline/scripts/fixtures/install-layout.tsv +7 -7
- package/pipeline/scripts/gen-mode-dispatch.mjs +38 -21
- package/pipeline/scripts/gen-skills-index.mjs +18 -3
- package/pipeline/scripts/learning-curve.mjs +13 -3
- package/pipeline/scripts/learnings-ledger.mjs +119 -34
- package/pipeline/scripts/lint-mcp-refs.mjs +218 -0
- package/pipeline/scripts/lint-skills.mjs +20 -9
- package/pipeline/scripts/localize-commands.mjs +6 -1
- package/pipeline/scripts/match-skills.mjs +15 -4
- package/pipeline/scripts/memory-load.sh +5 -1
- package/pipeline/scripts/migrate-prefs.mjs +33 -16
- package/pipeline/scripts/phase-tracker.sh +3 -1
- package/pipeline/scripts/render-work-summary.sh +4 -1
- package/pipeline/scripts/repo-map.mjs +110 -64
- package/pipeline/scripts/review-scope.mjs +7 -1
- package/pipeline/scripts/routine-registry.mjs +4 -9
- package/pipeline/scripts/run-aggregator.mjs +11 -5
- package/pipeline/scripts/run-metrics.mjs +13 -8
- package/pipeline/scripts/run-smokes.mjs +57 -3
- package/pipeline/scripts/scorecard.mjs +258 -0
- package/pipeline/scripts/smoke-command-inventory.sh +81 -0
- package/pipeline/scripts/smoke-commands-skills-parity.sh +1 -1
- package/pipeline/scripts/smoke-compliance-skills.sh +4 -4
- package/pipeline/scripts/smoke-context-budget.sh +72 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +12 -2
- package/pipeline/scripts/smoke-generate-issue.sh +6 -5
- package/pipeline/scripts/smoke-model-fallback.sh +1 -1
- package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +86 -7
- package/pipeline/scripts/smoke-own-punctuation.sh +103 -0
- package/pipeline/scripts/smoke-per-repo-memory.sh +2 -2
- package/pipeline/scripts/smoke-review-readiness.sh +3 -2
- package/pipeline/scripts/smoke-schema-validation.sh +19 -5
- package/pipeline/scripts/smoke-shadow-git.sh +4 -2
- package/pipeline/scripts/smoke-workflow-audit.sh +43 -11
- package/pipeline/scripts/smoke-write-state.sh +49 -5
- package/pipeline/scripts/test-gap-rules/android.json +11 -11
- package/pipeline/scripts/test-gap-rules/ios.json +16 -11
- package/pipeline/scripts/test-gap-rules/node.json +19 -7
- package/pipeline/scripts/test-gap-rules/python.json +10 -4
- package/pipeline/scripts/test-gap-scan.mjs +44 -12
- package/pipeline/scripts/test-integrity-gate.mjs +5 -1
- package/pipeline/scripts/token-budget-report.mjs +44 -21
- package/pipeline/scripts/triage-memory.mjs +142 -32
- package/pipeline/scripts/uninstall.mjs +75 -31
- package/pipeline/scripts/validate-analysis-doc.mjs +15 -5
- package/pipeline/scripts/validate-diff-risk.mjs +32 -18
- package/pipeline/scripts/validate-test-gap.mjs +17 -7
- package/pipeline/scripts/validate-triage.mjs +17 -5
- package/pipeline/scripts/write-state.mjs +32 -9
- package/pipeline/skills/.skill-manifest.json +24 -8
- package/pipeline/skills/.skills-index.json +125 -89
- package/pipeline/skills/shared/README.md +65 -61
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +10 -8
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +26 -279
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +248 -0
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +23 -1
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +82 -18
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +51 -9
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +1 -1
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +1 -1
- package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -4
- package/pipeline/skills/shared/external/agentflow/SKILL.md +1 -1
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +1 -1
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +1 -1
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +1 -1
- package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
- package/pipeline/skills/shared/external/backlog/SKILL.md +12 -12
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -1
- package/pipeline/skills/shared/external/context-compression/SKILL.md +1 -1
- package/pipeline/skills/shared/external/council/SKILL.md +3 -3
- package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -1
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +1 -1
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +1 -1
- package/pipeline/skills/shared/external/firebase/SKILL.md +1 -1
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +1 -1
- package/pipeline/skills/shared/external/help-skills/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +1 -1
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -1
- package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +1 -1
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +1 -1
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +1 -1
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -1
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -1
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -1
- package/pipeline/skills/shared/external/search-first/SKILL.md +2 -2
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +12 -12
- package/pipeline/skills/shared/external/skill-creator/audit.md +21 -21
- package/pipeline/skills/shared/external/skill-creator/checklist.md +3 -3
- package/pipeline/skills/shared/external/skill-creator/examples.md +10 -10
- package/pipeline/skills/shared/external/skill-creator/label-check.md +17 -17
- package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +86 -50
- package/pipeline/skills/shared/external/skill-creator/template.md +9 -9
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +1 -1
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -1
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -1
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -1
- package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +9 -49
- package/pipeline/skills/skills-index.md +63 -59
- package/pipeline/scripts/smoke-plugin-validate.sh +0 -64
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Uninstall the pipeline from Claude Code + Copilot CLI. Keychain access tokens are always left untouched; --all-data also clears pipeline settings and logs. Asks for double confirmation."
|
|
2
|
+
description: "Uninstall the pipeline from Claude Code + Copilot CLI. Keychain access tokens are always left untouched; --all-data also clears pipeline settings and logs. Asks for double confirmation. Use when the pipeline should be removed from Claude Code and Copilot CLI."
|
|
3
3
|
description-tr: "Pipeline'ı Claude Code + Copilot CLI'dan kaldırır. Keychain erişim token'larına asla dokunulmaz; --all-data ayrıca pipeline ayarlarını ve loglarını da siler. Çift onay ister."
|
|
4
4
|
argument-hint: "[--dry-run] [--all-data] [--claude] [--copilot] [--target=<path>]"
|
|
5
5
|
---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Update the pipeline to the latest version: git pull, install, migrate."
|
|
2
|
+
description: "Update the pipeline to the latest version: git pull, install, migrate. Use when the installed pipeline is behind and should be brought to the latest version."
|
|
3
3
|
description-tr: "Pipeline'ı son sürüme günceller: git pull, install, migrate."
|
|
4
4
|
allowed-tools: Bash, Read, Write, AskUserQuestion
|
|
5
5
|
---
|
|
@@ -52,13 +52,13 @@ Update the pipeline in one command. Existing preferences are preserved; only ski
|
|
|
52
52
|
fi
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
4c. **Prune retired adapter files** (Cursor / Antigravity / Codex / Copilot Chat were removed in v10.7.0
|
|
55
|
+
4c. **Prune retired adapter files** (Cursor / Antigravity / Codex / Copilot Chat were removed in v10.7.0 - the pipeline now targets Claude Code + Copilot CLI only):
|
|
56
56
|
```bash
|
|
57
57
|
# Global Codex adapter prompt is safe to remove (no longer produced).
|
|
58
58
|
rm -f "$HOME/.codex/prompts/multi-agent.md"
|
|
59
59
|
echo " -> pruned retired global Codex adapter prompt (if present)"
|
|
60
60
|
# Per-project adapter files (.cursor/, .agent/, .github/copilot-instructions.md)
|
|
61
|
-
# live in your repos and are left untouched
|
|
61
|
+
# live in your repos and are left untouched - remove them manually if you like.
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
5. **Migrate preferences** (if there is an old schema):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Mobile UI Bug Hunter - iOS Simulator (simctl) + Android Emulator (adb) - auto-detects platform"
|
|
3
|
-
allowed-tools: Agent, Bash, Read, Write, Edit, TaskCreate, TaskUpdate, TaskList, TaskGet,
|
|
3
|
+
allowed-tools: Agent, Bash, Read, Write, Edit, TaskCreate, TaskUpdate, TaskList, TaskGet, mcp__dev-toolkit__ios_list_devices, mcp__dev-toolkit__ios_boot_device, mcp__dev-toolkit__ios_screenshot, mcp__dev-toolkit__ios_tap, mcp__dev-toolkit__ios_swipe, mcp__dev-toolkit__ios_type_text, mcp__dev-toolkit__ios_launch_app, mcp__dev-toolkit__ios_terminate_app, mcp__dev-toolkit__ios_list_apps, mcp__dev-toolkit__ios_go_home, mcp__dev-toolkit__ios_set_appearance, mcp__dev-toolkit__ios_set_content_size, mcp__dev-toolkit__ios_set_locale, mcp__dev-toolkit__ios_open_url, mcp__dev-toolkit__ios_status_bar, mcp__dev-toolkit__ios_push_notification, mcp__dev-toolkit__ios_grant_permission, mcp__dev-toolkit__ios_revoke_permission, mcp__dev-toolkit__ios_reset_permissions, mcp__dev-toolkit__ios_set_location, mcp__dev-toolkit__ios_clear_location, mcp__dev-toolkit__ios_set_increase_contrast, mcp__dev-toolkit__ios_record_video, mcp__dev-toolkit__ios_add_media, mcp__dev-toolkit__ios_keychain_reset, mcp__dev-toolkit__ios_get_app_container, mcp__dev-toolkit__ios_erase_device, mcp__dev-toolkit__ios_get_ui_tree, mcp__dev-toolkit__android_list_devices, mcp__dev-toolkit__android_screenshot, mcp__dev-toolkit__android_tap, mcp__dev-toolkit__android_swipe, mcp__dev-toolkit__android_type_text, mcp__dev-toolkit__android_key_event, mcp__dev-toolkit__android_launch_app, mcp__dev-toolkit__android_stop_app, mcp__dev-toolkit__android_list_packages, mcp__dev-toolkit__android_go_home, mcp__dev-toolkit__android_go_back, mcp__dev-toolkit__android_get_ui_tree, mcp__dev-toolkit__android_set_dark_mode, mcp__dev-toolkit__android_set_font_scale, mcp__dev-toolkit__android_set_locale, mcp__dev-toolkit__android_set_location, mcp__dev-toolkit__android_grant_permission, mcp__dev-toolkit__android_revoke_permission, mcp__dev-toolkit__android_record_screen, mcp__dev-toolkit__android_install_apk, mcp__dev-toolkit__android_uninstall_app, mcp__dev-toolkit__android_logcat, mcp__dev-toolkit__android_get_screen_size, mcp__dev-toolkit__android_open_url, mcp__dev-toolkit__android_clear_app_data
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Mobile UI Bug Hunter
|
|
@@ -22,8 +22,8 @@ Auto-detects platform: iOS (simctl) or Android (adb). No external apps needed.
|
|
|
22
22
|
5. If argument contains "android" or "ios" -> use that
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
For iOS: use `
|
|
26
|
-
For Android: use `
|
|
25
|
+
For iOS: use `mcp__dev-toolkit__ios_*` tools
|
|
26
|
+
For Android: use `mcp__dev-toolkit__android_*` tools
|
|
27
27
|
|
|
28
28
|
**Android extras**: `get_ui_tree` returns XML with bounds/text/resource-id (uiautomator dump), `logcat` for crash detection, `go_back` button.
|
|
29
29
|
|
|
@@ -134,11 +134,11 @@ Step A - run the standard visual + accessibility sweep (light + dark + large t
|
|
|
134
134
|
Step B - dispatch compliance skill:
|
|
135
135
|
iOS:
|
|
136
136
|
Load pipeline/skills/shared/core/apple-archive-compliance/SKILL.md
|
|
137
|
-
Prereq: @mmerterden/dev-toolkit-mcp ≥ v2.
|
|
137
|
+
Prereq: @mmerterden/dev-toolkit-mcp ≥ v2.9.0 (provides ios_app_store_audit MCP tool)
|
|
138
138
|
- installable via npm; standalone ArchiveGuard binary deprecated in v8.4.0
|
|
139
139
|
Artifact: pick newest .xcarchive under ~/Library/Developer/Xcode/Archives/**
|
|
140
140
|
OR accept explicit path argument after "store-ready"
|
|
141
|
-
Invoke:
|
|
141
|
+
Invoke: mcp__dev-toolkit__ios_app_store_audit({ archive_path: <path>, rules: "all" })
|
|
142
142
|
OR (Node fallback): node -e "import('@mmerterden/dev-toolkit-mcp/tools/ios-app-store-audit/index.js').then(m => m.runAudit({ archivePath: '<path>', rules: 'all' }).then(r => console.log(JSON.stringify(r))))"
|
|
143
143
|
Humanize via --lang en (promptLanguage is locked to "en"; pass --lang=tr explicitly to opt into Turkish)
|
|
144
144
|
Android:
|
|
@@ -2,29 +2,76 @@
|
|
|
2
2
|
"taskId": "PROJ-101",
|
|
3
3
|
"status": "complete",
|
|
4
4
|
"currentPhase": 7,
|
|
5
|
-
"projects": [
|
|
6
|
-
{ "project": "my-ios-app", "buildStatus": { "ok": true, "attempts": 1 } }
|
|
7
|
-
],
|
|
5
|
+
"projects": [{ "project": "my-ios-app", "buildStatus": { "ok": true, "attempts": 1 } }],
|
|
8
6
|
"reviewIterations": [
|
|
9
7
|
{
|
|
10
8
|
"reviewers": [
|
|
11
|
-
{
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
{
|
|
10
|
+
"reviewer": "opus",
|
|
11
|
+
"findings": [
|
|
12
|
+
{
|
|
13
|
+
"severity": "blocking",
|
|
14
|
+
"file": "Auth/Session.swift",
|
|
15
|
+
"line": 54,
|
|
16
|
+
"issue": "token logged in plaintext",
|
|
17
|
+
"fix": "redact"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"severity": "suggestion",
|
|
21
|
+
"file": "Auth/Session.swift",
|
|
22
|
+
"line": 12,
|
|
23
|
+
"issue": "rename helper",
|
|
24
|
+
"fix": "rename"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"approved": false
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"reviewer": "sonnet",
|
|
31
|
+
"findings": [
|
|
32
|
+
{
|
|
33
|
+
"severity": "important",
|
|
34
|
+
"file": "Auth/Session.swift",
|
|
35
|
+
"line": 70,
|
|
36
|
+
"issue": "no migration for legacy token",
|
|
37
|
+
"fix": "add migration"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"approved": false
|
|
41
|
+
}
|
|
18
42
|
],
|
|
19
43
|
"triage": {
|
|
20
44
|
"accepted": [
|
|
21
|
-
{
|
|
45
|
+
{
|
|
46
|
+
"severity": "blocking",
|
|
47
|
+
"file": "Auth/Session.swift",
|
|
48
|
+
"line": 54,
|
|
49
|
+
"issue": "token logged in plaintext",
|
|
50
|
+
"fix": "redact the token in the log",
|
|
51
|
+
"reviewer": "opus"
|
|
52
|
+
}
|
|
22
53
|
],
|
|
23
54
|
"deferred": [
|
|
24
|
-
{
|
|
55
|
+
{
|
|
56
|
+
"finding": {
|
|
57
|
+
"severity": "important",
|
|
58
|
+
"file": "Auth/Session.swift",
|
|
59
|
+
"line": 70,
|
|
60
|
+
"issue": "no migration for legacy token"
|
|
61
|
+
},
|
|
62
|
+
"reason": "follow-up PR"
|
|
63
|
+
}
|
|
25
64
|
],
|
|
26
65
|
"rejected": [
|
|
27
|
-
{
|
|
66
|
+
{
|
|
67
|
+
"finding": {
|
|
68
|
+
"severity": "suggestion",
|
|
69
|
+
"file": "Auth/Session.swift",
|
|
70
|
+
"line": 12,
|
|
71
|
+
"issue": "rename helper"
|
|
72
|
+
},
|
|
73
|
+
"reason": "style only"
|
|
74
|
+
}
|
|
28
75
|
],
|
|
29
76
|
"approved": false
|
|
30
77
|
}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
# Returns 0 on success, 1 on missing/empty value, 2 on backend missing,
|
|
26
26
|
# 3 on usage error.
|
|
27
27
|
|
|
28
|
-
set -
|
|
28
|
+
set -euo pipefail
|
|
29
29
|
|
|
30
30
|
detect_platform() {
|
|
31
31
|
case "$(uname -s 2>/dev/null)" in
|
|
@@ -84,10 +84,39 @@ require_cmd() {
|
|
|
84
84
|
fi
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
# --- Logical key -> backend key --------------------------------------------
|
|
88
|
+
# Callers pass a LOGICAL key ("github", "jira", "figma_pat"). The actual
|
|
89
|
+
# Keychain / libsecret / Credential Manager entry is named by
|
|
90
|
+
# prefs.global.keychainMapping, so a lookup that uses the logical key verbatim
|
|
91
|
+
# finds nothing whenever the two differ - silently, because a missing entry and
|
|
92
|
+
# a missing mapping look identical from here. Resolve the mapping first and fall
|
|
93
|
+
# back to the logical key when no mapping exists (backward compatible with
|
|
94
|
+
# entries whose name already equals the logical key).
|
|
95
|
+
PREFS_FILE="${MULTI_AGENT_PREFS:-$HOME/.claude/multi-agent-preferences.json}"
|
|
96
|
+
|
|
97
|
+
resolve_key() {
|
|
98
|
+
local logical="$1" mapped=""
|
|
99
|
+
if [ -f "$PREFS_FILE" ] && command -v python3 >/dev/null 2>&1; then
|
|
100
|
+
mapped=$(python3 -c '
|
|
101
|
+
import json, sys
|
|
102
|
+
try:
|
|
103
|
+
with open(sys.argv[1], encoding="utf-8") as fh:
|
|
104
|
+
prefs = json.load(fh)
|
|
105
|
+
except Exception:
|
|
106
|
+
sys.exit(0)
|
|
107
|
+
name = prefs.get("global", {}).get("keychainMapping", {}).get(sys.argv[2])
|
|
108
|
+
if isinstance(name, str) and name.strip():
|
|
109
|
+
sys.stdout.write(name.strip())
|
|
110
|
+
' "$PREFS_FILE" "$logical" 2>/dev/null || true)
|
|
111
|
+
fi
|
|
112
|
+
printf '%s' "${mapped:-$logical}"
|
|
113
|
+
}
|
|
114
|
+
|
|
87
115
|
# --- Subcommands ------------------------------------------------------------
|
|
88
116
|
do_get() {
|
|
89
117
|
local key="${1:-}"
|
|
90
118
|
[ -z "$key" ] && { echo "usage: $0 get <key>" >&2; exit 3; }
|
|
119
|
+
key=$(resolve_key "$key")
|
|
91
120
|
if delegate_to_python; then
|
|
92
121
|
local val rc
|
|
93
122
|
val=$(python3 "$KEYCHAIN_PY" get "$key" 2>/dev/null) || rc=$?
|
|
@@ -128,6 +157,8 @@ if (\$c) { \$c.GetNetworkCredential().Password }
|
|
|
128
157
|
do_set() {
|
|
129
158
|
local key="${1:-}" val="${2:-}"
|
|
130
159
|
[ -z "$key" ] && { echo "usage: $0 set <key> <value|->" >&2; exit 3; }
|
|
160
|
+
# Resolve through the same mapping as do_get so set/get stay symmetric.
|
|
161
|
+
key=$(resolve_key "$key")
|
|
131
162
|
# "-" means: read the secret from stdin (keeps it off argv).
|
|
132
163
|
if [ "$val" = "-" ]; then
|
|
133
164
|
val=$(cat)
|
|
@@ -173,6 +204,7 @@ New-StoredCredential -Target '$key_esc' -UserName '${USER:-${USERNAME:-claude}}'
|
|
|
173
204
|
do_delete() {
|
|
174
205
|
local key="${1:-}"
|
|
175
206
|
[ -z "$key" ] && { echo "usage: $0 delete <key>" >&2; exit 3; }
|
|
207
|
+
key=$(resolve_key "$key")
|
|
176
208
|
if delegate_to_python; then
|
|
177
209
|
python3 "$KEYCHAIN_PY" delete "$key" >/dev/null 2>&1 || true
|
|
178
210
|
return 0
|
|
@@ -84,7 +84,7 @@ Phase 4 reviewer-skipping is **not** Phase 3's concern - Phase 4 decides based
|
|
|
84
84
|
|
|
85
85
|
## Cross-CLI behaviour (intentional divergence)
|
|
86
86
|
|
|
87
|
-
Component dispatch is **no longer byte-identical across CLIs** and that is by design (see `cross-cli-contract.md`
|
|
87
|
+
Component dispatch is **no longer byte-identical across CLIs** and that is by design (see `cross-cli-contract.md` section 1.1):
|
|
88
88
|
|
|
89
89
|
- **Claude Code**: dispatches to the enabled `ai-<platform>-engineering-toolkit` marketplace plugin via the Skill tool (this doc).
|
|
90
90
|
- **Copilot CLI**: has no plugin loader; it continues to use its standalone `~/.copilot/skills/figma-*` skill copies (frozen fallback). Copilot's resolution + progress lines follow those local skills.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Component Generation Guide (generic)
|
|
2
|
+
|
|
3
|
+
> Lifted out of `core/multi-agent/SKILL.md`, where it was loaded on every
|
|
4
|
+
> run of every mode. It applies only to a task that generates a UI
|
|
5
|
+
> component from a design, so it now loads when that path is taken.
|
|
6
|
+
> Component dispatch itself is in `component-dispatch.md`.
|
|
7
|
+
|
|
8
|
+
When the task involves creating a SwiftUI component (any project, not just figma), follow this architecture:
|
|
9
|
+
|
|
10
|
+
### Component Architecture: Configuration / View / Modifiers
|
|
11
|
+
|
|
12
|
+
Every component produces up to 5 files:
|
|
13
|
+
|
|
14
|
+
| File | When | Content |
|
|
15
|
+
|------|------|---------|
|
|
16
|
+
| `{Name}Configuration.swift` | Complex (>3 props) | Pure value type, all declarative properties |
|
|
17
|
+
| `{Name}View.swift` | Always | SwiftUI view, renders Configuration |
|
|
18
|
+
| `{Name}+Modifiers.swift` | Complex | Fluent modifier API chain |
|
|
19
|
+
| `{Name}Preview.swift` | Always | All meaningful variant previews |
|
|
20
|
+
| `{Name}Tests.swift` | Always | ViewInspector + Unit tests |
|
|
21
|
+
|
|
22
|
+
### Configuration Purity Rule
|
|
23
|
+
|
|
24
|
+
Configuration structs hold ONLY declarative, value-type properties:
|
|
25
|
+
|
|
26
|
+
```swift
|
|
27
|
+
// ✅ CORRECT - pure value type
|
|
28
|
+
struct ButtonConfiguration {
|
|
29
|
+
var title: String = ""
|
|
30
|
+
var style: ButtonStyle = .primary
|
|
31
|
+
var isEnabled: Bool = true
|
|
32
|
+
var icon: Image? = nil
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// ❌ WRONG - these do NOT belong in Configuration
|
|
36
|
+
// Closures → View property
|
|
37
|
+
// @Binding → View property
|
|
38
|
+
// @State → View property
|
|
39
|
+
// AnyView / @ViewBuilder → View generic parameter
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### View Implementation
|
|
43
|
+
|
|
44
|
+
```swift
|
|
45
|
+
struct ButtonView: View {
|
|
46
|
+
let configuration: ButtonConfiguration
|
|
47
|
+
private var action: (() -> Void)? // closure lives in View, not Config
|
|
48
|
+
|
|
49
|
+
var body: some View {
|
|
50
|
+
Button(action: { action?() }) {
|
|
51
|
+
HStack(spacing: .Spacing.spacing8) {
|
|
52
|
+
if let icon = configuration.icon { icon }
|
|
53
|
+
Text(configuration.title)
|
|
54
|
+
.typographyStyle(.body1)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
.disabled(!configuration.isEnabled)
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Modifier Pattern
|
|
63
|
+
|
|
64
|
+
```swift
|
|
65
|
+
extension ButtonView {
|
|
66
|
+
func title(_ value: String) -> ButtonView {
|
|
67
|
+
var config = configuration
|
|
68
|
+
config.title = value
|
|
69
|
+
return ButtonView(configuration: config)
|
|
70
|
+
}
|
|
71
|
+
func style(_ value: ButtonStyle) -> ButtonView {
|
|
72
|
+
var config = configuration
|
|
73
|
+
config.style = value
|
|
74
|
+
return ButtonView(configuration: config)
|
|
75
|
+
}
|
|
76
|
+
func onTap(_ action: @escaping () -> Void) -> ButtonView {
|
|
77
|
+
var view = self
|
|
78
|
+
view.action = action
|
|
79
|
+
return view
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Simple vs Complex Decision
|
|
85
|
+
|
|
86
|
+
| Criteria | Simple | Complex |
|
|
87
|
+
|----------|--------|---------|
|
|
88
|
+
| Properties | ≤3 | >3 |
|
|
89
|
+
| Configuration file | No - props in View directly | Yes - separate struct |
|
|
90
|
+
| +Modifiers file | No | Yes |
|
|
91
|
+
| View file | All-in-one | Renders Configuration |
|
|
92
|
+
|
|
93
|
+
### 3-Layer Test Strategy
|
|
94
|
+
|
|
95
|
+
| Layer | Tool | What It Validates |
|
|
96
|
+
|-------|------|-------------------|
|
|
97
|
+
| Structural | ViewInspector | Hierarchy, subview existence, applied modifiers |
|
|
98
|
+
| Visual | Snapshot Tests | Pixel-correct render: light/dark, RTL/LTR |
|
|
99
|
+
| Behavioral | Unit Tests | State changes, closures, configuration mutations |
|
|
100
|
+
|
|
101
|
+
### Component Checklist (Before Commit)
|
|
102
|
+
|
|
103
|
+
1. No magic numbers - all values are design tokens or named constants
|
|
104
|
+
2. Configuration purity - no side-effects or view logic in Config
|
|
105
|
+
3. Modifier correctness - fluent API valid, paired modifiers live in the View
|
|
106
|
+
4. Accessibility - accessibility label/trait on every interactive element
|
|
107
|
+
5. Preview - all meaningful variants in the preview
|
|
108
|
+
6. Test - structural + unit tests written
|
|
109
|
+
7. Dark mode - renders correctly in both color schemes
|
|
110
|
+
8. Dynamic Type - text scales at large sizes without breaking the layout
|
|
111
|
+
|
|
112
|
+
### When a Figma URL Is Provided
|
|
113
|
+
|
|
114
|
+
If the user provides a Figma URL:
|
|
115
|
+
1. Fetch the design data with Figma MCP tools (get_design_context, get_screenshot)
|
|
116
|
+
2. Map the design's colors, spacing, and typography onto the project's token system
|
|
117
|
+
3. Apply the Configuration/View/Modifiers pattern above
|
|
118
|
+
4. Use the screenshot as a reference, do not copy it - adapt to the project's existing components
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## 1. Command Inventory (
|
|
9
|
+
## 1. Command Inventory (42 commands)
|
|
10
10
|
|
|
11
11
|
```
|
|
12
|
-
analysis, analysis-resolve, autopilot, build-optimize, channels, create-jira, dev,
|
|
12
|
+
analysis, analysis-resolve, autopilot, build-optimize, channels, create-jira, design-check, dev,
|
|
13
13
|
dev-autopilot, dev-local, dev-local-autopilot, diff-explain, finish, forget, garbage-collect,
|
|
14
14
|
help, issue, jira, kill, language, local,
|
|
15
15
|
local-autopilot, log, manual-test, prune-logs, purge, refactor, resume, review, review-issue, review-jira,
|
|
@@ -43,14 +43,14 @@ Two parallel shared/core skills under `pipeline/skills/shared/core/` wrap extern
|
|
|
43
43
|
|
|
44
44
|
| Skill | Path | Tool wrapper | Rules |
|
|
45
45
|
|---|---|---|---|
|
|
46
|
-
| `apple-archive-compliance` | `pipeline/skills/shared/core/apple-archive-compliance/` | `ios_app_store_audit` MCP tool (in `@mmerterden/dev-toolkit-mcp` ≥ v2.
|
|
46
|
+
| `apple-archive-compliance` | `pipeline/skills/shared/core/apple-archive-compliance/` | `ios_app_store_audit` MCP tool (in `@mmerterden/dev-toolkit-mcp` ≥ v2.9.0) | 18 (Apple ITMS + App Store Review Guidelines) |
|
|
47
47
|
| `google-play-compliance` | `pipeline/skills/shared/core/google-play-compliance/` | bundletool + aapt2 + apksigner | 21 (4 categories: Technical / Security / Privacy / Hygiene) |
|
|
48
48
|
|
|
49
49
|
Both skills are wired to 4 consumers: `/multi-agent:test "store-ready"` (primary), Phase 4 Security Auditor (`pipeline/agents/security-auditor.md`), `/multi-agent:review` + SKILL.md counterpart, `/multi-agent:channels` PR-body auto-augmentation. Contract enforced by `smoke-compliance-skills.sh` (46 assertions).
|
|
50
50
|
|
|
51
51
|
### 1.3 Figma-skill routing from multi-agent (superseded)
|
|
52
52
|
|
|
53
|
-
Superseded by
|
|
53
|
+
Superseded by section 1.1: Claude Code resolves component dispatch to the marketplace plugin (dual-name `create-component`/`create-ui-component`; full contract in `$HOME/.claude/multi-agent-refs/component-dispatch.md`); Copilot CLI uses its local `~/.copilot/skills/figma-*` copies. No shared filesystem-path routing table or figma-skill frontmatter/inventory parity remains under enforcement.
|
|
54
54
|
|
|
55
55
|
---
|
|
56
56
|
|
|
@@ -9,7 +9,7 @@ without ever editing persona files at runtime.
|
|
|
9
9
|
|
|
10
10
|
> **Fable 5 available again (2026-07).** `claude-fable-5` is the top tier once
|
|
11
11
|
> more. Architect (`ios/android/backend-architect`), Reviewer-1 (`code-reviewer`),
|
|
12
|
-
> and triage personas declare `preferredModel: fable`
|
|
12
|
+
> and triage personas declare `preferredModel: fable` - the deepest-reasoning
|
|
13
13
|
> roles. **If Fable 5 is unavailable, the first fallback is opus (`claude-opus-4-8`).**
|
|
14
14
|
> Security and other `preferredModel: opus` personas keep opus as their top tier.
|
|
15
15
|
> The `premiumTierUntil` date gate stays in the contract as a generic mechanism
|
|
@@ -98,6 +98,6 @@ per-phase `model` field already carries the override).
|
|
|
98
98
|
- No edits to `pipeline/agents/*.md` at runtime; frontmatter is install-time
|
|
99
99
|
configuration only.
|
|
100
100
|
- Copilot CLI reviewer set is out of scope: Copilot CLI pins its own three
|
|
101
|
-
reviewer models (GPT-5.4 + Opus + Sonnet
|
|
101
|
+
reviewer models (GPT-5.4 + Opus + Sonnet - Fable 5 is not offered there) and
|
|
102
102
|
does not use this persona ladder. Only Claude Code dispatches Reviewer-1 on
|
|
103
103
|
Fable.
|
|
@@ -164,7 +164,7 @@ For each task (respecting dependency order):
|
|
|
164
164
|
**Preferred - MCP tool (token-efficient, dev-toolkit-mcp ≥ 2.3.0):**
|
|
165
165
|
```
|
|
166
166
|
acquire_build_lock "$TASK_ID"
|
|
167
|
-
|
|
167
|
+
mcp__dev-toolkit__ios_xcodebuild({
|
|
168
168
|
project: "{projectPath}", // or workspace
|
|
169
169
|
scheme: "{scheme}",
|
|
170
170
|
configuration: "Release",
|
|
@@ -173,7 +173,7 @@ For each task (respecting dependency order):
|
|
|
173
173
|
})
|
|
174
174
|
release_build_lock
|
|
175
175
|
```
|
|
176
|
-
Returns one line: `Build: SUCCESS|FAILURE (E errors, W warnings) [xcresult-<id>]`. On failure, drill in only when needed via `
|
|
176
|
+
Returns one line: `Build: SUCCESS|FAILURE (E errors, W warnings) [xcresult-<id>]`. On failure, drill in only when needed via `mcp__dev-toolkit__ios_xcresult({id, mode: "errors"})`. Saves thousands of tokens per build cycle vs. raw xcodebuild output.
|
|
177
177
|
|
|
178
178
|
**Fallback - raw xcodebuild** (when MCP server is unavailable):
|
|
179
179
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
### Phase 4: Review (deterministic gates + parallel + triage)
|
|
2
2
|
|
|
3
|
-
> **TLDR** - Three-stage review. Stage 1: deterministic gates (build + lint + test + secret scan) that MUST pass. Stage 2: AI models in parallel - reviewer set is **CLI-aware**: Claude Code dispatches 2 reviewers (Fable + Sonnet); Copilot CLI dispatches 3 reviewers (GPT-5.4 + Opus + Sonnet
|
|
3
|
+
> **TLDR** - Three-stage review. Stage 1: deterministic gates (build + lint + test + secret scan) that MUST pass. Stage 2: AI models in parallel - reviewer set is **CLI-aware**: Claude Code dispatches 2 reviewers (Fable + Sonnet); Copilot CLI dispatches 3 reviewers (GPT-5.4 + Opus + Sonnet - Fable 5 is not offered on Copilot CLI). Stage 3: Fable triage (Opus on Copilot CLI) - evaluates raw findings, filters false-positives/out-of-scope, keeps only actionable items. Only triage-accepted blocking items loop back to Phase 3.
|
|
4
4
|
|
|
5
5
|
<!-- progress-contract: applied -->
|
|
6
6
|
Progress emission per `$HOME/.claude/multi-agent-refs/progress-contract.md` - lines for each gate, each reviewer dispatch + finish, triage start, triage verdict, fix dispatch.
|
|
@@ -126,12 +126,12 @@ Before or during user testing, run device-level audits via Bash if user requests
|
|
|
126
126
|
|
|
127
127
|
| Check | When | Command |
|
|
128
128
|
| ------------------- | ----------------- | ----------------------------------------- |
|
|
129
|
-
| Accessibility audit | UI changes | `
|
|
130
|
-
| Biometric test | Auth flow changes | `
|
|
129
|
+
| Accessibility audit | UI changes | `mcp__dev-toolkit__ios_accessibility_audit` (or `swift ui-tree-dumper.swift`) |
|
|
130
|
+
| Biometric test | Auth flow changes | `mcp__dev-toolkit__ios_biometric` (or `xcrun simctl keychain biometric-match`) |
|
|
131
131
|
| Launch time | Android project | `adb shell am start -W` |
|
|
132
132
|
| Visual test | Any UI changes | `/multi-agent test` (sim-test) |
|
|
133
|
-
| Snapshot regression | Component / pixel-stable UI changes | `
|
|
134
|
-
| App Store screenshots | `taskType === screenshot` | `
|
|
133
|
+
| Snapshot regression | Component / pixel-stable UI changes | `mcp__dev-toolkit__ios_visual_diff` (dev-toolkit-mcp ≥ 2.3.0) |
|
|
134
|
+
| App Store screenshots | `taskType === screenshot` | `mcp__dev-toolkit__ios_status_bar({preset: "clean"})` before each capture |
|
|
135
135
|
|
|
136
136
|
Results included in Phase 7 report. MCP tools preferred when available - concise structured output, lower token cost.
|
|
137
137
|
|
|
@@ -45,12 +45,7 @@
|
|
|
45
45
|
"autoDiff": false,
|
|
46
46
|
"manualNote": false
|
|
47
47
|
},
|
|
48
|
-
"wikiScope": [
|
|
49
|
-
"main",
|
|
50
|
-
"ios",
|
|
51
|
-
"screenshots",
|
|
52
|
-
"index"
|
|
53
|
-
],
|
|
48
|
+
"wikiScope": ["main", "ios", "screenshots", "index"],
|
|
54
49
|
"autopilotReportTimeoutSeconds": 1800,
|
|
55
50
|
"promptLanguage": "en",
|
|
56
51
|
"outputLanguage": "en",
|
|
@@ -73,7 +68,12 @@
|
|
|
73
68
|
"onExceed": "warn",
|
|
74
69
|
"pricingModel": "opus"
|
|
75
70
|
},
|
|
76
|
-
"derivedSkillSources": []
|
|
71
|
+
"derivedSkillSources": [],
|
|
72
|
+
"devToolkit": {
|
|
73
|
+
"enabled": true,
|
|
74
|
+
"mcpServerName": "dev-toolkit",
|
|
75
|
+
"registry": "github-packages"
|
|
76
|
+
}
|
|
77
77
|
},
|
|
78
78
|
"projects": {},
|
|
79
79
|
"_figmaConfigTemplate": {
|
|
@@ -157,18 +157,29 @@
|
|
|
157
157
|
}
|
|
158
158
|
},
|
|
159
159
|
"_derivedSkillSourcesTemplate": {
|
|
160
|
-
"_comment": "Optional. Populate global.derivedSkillSources[] to let /multi-agent:refactor check whether skills you derived from an upstream marketplace plugin have been updated. Kept in your LOCAL prefs only (never synced), so it may reference private sources. Copy an entry like the one below.",
|
|
160
|
+
"_comment": "Optional. Populate global.derivedSkillSources[] to let /multi-agent:refactor check whether skills you derived from an upstream marketplace plugin have been updated. Kept in your LOCAL prefs only (never synced), so it may reference private sources. Copy an entry like the one below. Set upstreamLocalClone when you have a working copy: the installed plugin cache is only as fresh as your last marketplace update, and a stale cache makes the drift check answer 'up to date' when it is four releases behind.",
|
|
161
161
|
"_example": {
|
|
162
162
|
"label": "Component toolkit skills",
|
|
163
163
|
"localPath": "plugins/<my-plugin>/skills/workflow",
|
|
164
164
|
"upstreamMarketplace": "<installed-marketplace-name>",
|
|
165
165
|
"upstreamPlugin": "<upstream-plugin-name>",
|
|
166
|
-
"upstreamSkills": [
|
|
167
|
-
"<skill-a>",
|
|
168
|
-
"<skill-b>"
|
|
169
|
-
],
|
|
166
|
+
"upstreamSkills": ["<skill-a>", "<skill-b>"],
|
|
170
167
|
"derivedFromVersion": "0.0.0",
|
|
168
|
+
"upstreamVersionSource": "marketplace.json",
|
|
169
|
+
"upstreamLocalClone": "$HOME/<upstream-repo-working-copy>",
|
|
171
170
|
"upstreamRepoUrl": "https://github.com/<org>/<repo>"
|
|
172
171
|
}
|
|
172
|
+
},
|
|
173
|
+
"_devToolkitTemplate": {
|
|
174
|
+
"_comment": "Optional. global.devToolkit points at the companion MCP server that serves the pipeline's device and browser tools. /multi-agent:refactor Step 0c researches current MCP practice and audits that repo against it (plan band E); /multi-agent:sync Step 3d ships it when it moved (gates, commit, publish). Leave localPath out and both commands auto-detect the repo from your mcpServers registration; set enabled:false to skip both.",
|
|
175
|
+
"_example": {
|
|
176
|
+
"enabled": true,
|
|
177
|
+
"label": "dev-toolkit MCP server",
|
|
178
|
+
"localPath": "$HOME/<repo-dir>",
|
|
179
|
+
"mcpServerName": "dev-toolkit",
|
|
180
|
+
"packageName": "@<scope>/<package>",
|
|
181
|
+
"registry": "github-packages",
|
|
182
|
+
"repoUrl": "https://github.com/<owner>/<repo>"
|
|
183
|
+
}
|
|
173
184
|
}
|
|
174
185
|
}
|