@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.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 +37 -0
- package/README.md +2 -2
- package/docs/FIGMA_PIPELINE.md +12 -25
- package/docs/architecture.md +3 -5
- package/docs/features.md +8 -8
- package/install/_dev-only-files.mjs +0 -6
- package/install/claude.mjs +33 -15
- package/install/copilot.mjs +16 -14
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +1 -1
- package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
- package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
- package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
- package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
- package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
- package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
- package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
- package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
- package/pipeline/preferences-template.json +17 -1
- package/pipeline/rules/figma-pipeline.md +2 -2
- package/pipeline/schemas/prefs.schema.json +0 -34
- package/pipeline/scripts/README.md +1 -3
- package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/phase-banner.sh +2 -2
- package/pipeline/scripts/review-scope.mjs +94 -0
- package/pipeline/scripts/scan-agent-config.sh +2 -2
- package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
- package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
- package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
- package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
- package/pipeline/scripts/smoke-channels-flow.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +1 -1
- package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
- package/pipeline/scripts/smoke-community-gates.sh +1 -1
- package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
- package/pipeline/scripts/smoke-cost-summary.sh +1 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
- package/pipeline/scripts/smoke-dev-critic.sh +1 -1
- package/pipeline/scripts/smoke-diff-explain.sh +1 -1
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
- package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
- package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
- package/pipeline/scripts/smoke-generate-issue.sh +8 -8
- package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
- package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
- package/pipeline/scripts/smoke-intent-guard.sh +1 -1
- package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
- package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
- package/pipeline/scripts/smoke-language-axis.sh +6 -6
- package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
- package/pipeline/scripts/smoke-model-fallback.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
- package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
- package/pipeline/scripts/smoke-plan-todos.sh +3 -3
- package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
- package/pipeline/scripts/smoke-prefs-language.sh +1 -1
- package/pipeline/scripts/smoke-progress-contract.sh +2 -2
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +2 -2
- package/pipeline/scripts/smoke-shadow-git.sh +1 -1
- package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
- package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
- package/pipeline/scripts/smoke-test-gap.sh +1 -1
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-token-preflight.sh +2 -2
- package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-update-check.sh +1 -1
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-gates.sh +1 -1
- package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
- package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
- package/pipeline/scripts/smoke-work-summary.sh +1 -1
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/test-integrity-gate.mjs +83 -0
- package/pipeline/scripts/uninstall.mjs +2 -2
- package/pipeline/skills/.skill-manifest.json +40 -160
- package/pipeline/skills/.skills-index.json +3 -372
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
- package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
- package/pipeline/skills/skills-index.md +2 -43
- package/pipeline/commands/multi-agent/refactor.md +0 -188
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
- package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
- package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
- package/pipeline/scripts/smoke-figma-sync.sh +0 -149
- package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
- package/pipeline/skills/figma-android/README.md +0 -38
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
- package/pipeline/skills/figma-common/README.md +0 -64
- package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
- package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
- package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
- package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
- package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
- package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
- package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
- /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
- /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
|
@@ -6,7 +6,7 @@ description: "Internal - multi-select repo picker for multi-agent."
|
|
|
6
6
|
|
|
7
7
|
Used by `picker-issue`, `picker-jira`, `gh-num`, and `freetext` flows.
|
|
8
8
|
|
|
9
|
-
> **Language**: Per
|
|
9
|
+
> **Language**: Per `$HOME/.claude/multi-agent-refs/rules.md` Language Application matrix - `AskUserQuestion.label` and `header` stay English (UI button + chip contract); `question` and `description` follow `outputLanguage`. Commit/PR/Jira/Wiki payloads: subject + branch names + code identifiers stay English; body text follows `outputLanguage`.
|
|
10
10
|
|
|
11
11
|
## Steps
|
|
12
12
|
|
|
@@ -30,7 +30,7 @@ Used by `picker-issue`, `picker-jira`, `gh-num`, and `freetext` flows.
|
|
|
30
30
|
Local rows expose `localPath` (filesystem path) and a redacted `remoteUrl`
|
|
31
31
|
(credentials stripped at cache time).
|
|
32
32
|
|
|
33
|
-
2. **Show list** via AskUserQuestion (multiSelect=true). Print the breadcrumb narrator line first (per
|
|
33
|
+
2. **Show list** via AskUserQuestion (multiSelect=true). Print the breadcrumb narrator line first (per `$HOME/.claude/multi-agent-refs/picker-contract.md` Step narration): `<localized: "Step 2/N: repo selection">`.
|
|
34
34
|
```
|
|
35
35
|
[2/N] Select repos (multi):
|
|
36
36
|
[ ] <repo-a> (github)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Android/Kotlin Component Generation Guide
|
|
2
2
|
|
|
3
|
-
> **MUST: Figma MCP-first (BLOCKING).** If the task references any Figma frame (URL, node ID, or "from the design"), the Dev phase MUST call `mcp__claude_ai_Figma__get_design_context` for every frame BEFORE writing a single Composable line. Use the `CodeConnectSnippet` component name verbatim - no sound-alike substitutions. Authentication failure is not a skip path. Full rule, trigger conditions, and gate failure modes: `pipeline/rules/figma-pipeline.md` "MUST: Figma MCP-first (BLOCKING)". Phase wiring:
|
|
3
|
+
> **MUST: Figma MCP-first (BLOCKING).** If the task references any Figma frame (URL, node ID, or "from the design"), the Dev phase MUST call `mcp__claude_ai_Figma__get_design_context` for every frame BEFORE writing a single Composable line. Use the `CodeConnectSnippet` component name verbatim - no sound-alike substitutions. Authentication failure is not a skip path. Full rule, trigger conditions, and gate failure modes: `pipeline/rules/figma-pipeline.md` "MUST: Figma MCP-first (BLOCKING)". Phase wiring: `$HOME/.claude/multi-agent-refs/phases/phase-3-dev.md` "MUST: Figma MCP-first (BLOCKING pre-step)".
|
|
4
4
|
|
|
5
5
|
When the task involves creating an Android UI component (Jetpack Compose), follow this architecture.
|
|
6
6
|
|
|
@@ -116,7 +116,7 @@ The dispatch summary line includes the comment URL with `?focusedCommentId=...`
|
|
|
116
116
|
|
|
117
117
|
## Wiki → Jira auto-link triad
|
|
118
118
|
|
|
119
|
-
When the **Wiki** adapter writes pages on the same run AND `prefs.global.wikiToJiraComment === true`, the Wiki adapter also posts a humanizer-passed Jira comment summarizing wiki pages (component name + variant count + wiki URL). That secondary comment is independent of this adapter - both can coexist on the same issue. Full contract:
|
|
119
|
+
When the **Wiki** adapter writes pages on the same run AND `prefs.global.wikiToJiraComment === true`, the Wiki adapter also posts a humanizer-passed Jira comment summarizing wiki pages (component name + variant count + wiki URL). That secondary comment is independent of this adapter - both can coexist on the same issue. Full contract: `$HOME/.claude/multi-agent-refs/issue-jira-triad.md`.
|
|
120
120
|
|
|
121
121
|
## Hard rules (must not regress)
|
|
122
122
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Channel adapter - Wiki
|
|
2
2
|
|
|
3
|
-
> Detailed contract for the `wiki` channel of `/multi-agent:channels`. Split out of `channels.md` in v8.0.0; the parent doc keeps a one-line summary and a link here. Full Case A/Case B handling lives in
|
|
3
|
+
> Detailed contract for the `wiki` channel of `/multi-agent:channels`. Split out of `channels.md` in v8.0.0; the parent doc keeps a one-line summary and a link here. Full Case A/Case B handling lives in `$HOME/.claude/multi-agent-refs/wiki-capture.md`.
|
|
4
4
|
|
|
5
5
|
The Wiki adapter generates component documentation pages - main page, platform sub-pages (iOS / Android), screenshots, and index updates. It is the only channel gated by **task type** (`component` only) and the only one that writes to a separate repo (the wiki repo configured in `figma-config.json`).
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ state.taskType === "component" AND figmaConfig.wiki.enabled === true
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
If both are met → **Case A** (preconditions met) - proceed to scope multi-select.
|
|
14
|
-
Otherwise → **Case B** (preconditions missing) - show the menu from
|
|
14
|
+
Otherwise → **Case B** (preconditions missing) - show the menu from `$HOME/.claude/multi-agent-refs/wiki-capture.md` (setup / skip / disable / manual-note).
|
|
15
15
|
|
|
16
16
|
In multi-repo tasks, wiki scope is the **primary** repo's `figma-config.wikiRepo` (single repo). Extras are not written to wiki - their PRs link back via the `## Related PRs` block injected by the PR adapter.
|
|
17
17
|
|
|
@@ -34,17 +34,17 @@ The selected scope routes to a platform skill:
|
|
|
34
34
|
|
|
35
35
|
| Platform | Skill | Notes |
|
|
36
36
|
|---|---|---|
|
|
37
|
-
| iOS / SwiftUI | `
|
|
38
|
-
| Android / Compose | `
|
|
39
|
-
| Generic | `
|
|
37
|
+
| iOS / SwiftUI | `ai-ios-engineering-toolkit:figma-component-wiki` | Reads `Configuration` + `+Modifiers` from the source, captures Figma screenshots via MCP / REST, runs Snapshot tests for iOS dark/light/RTL. |
|
|
38
|
+
| Android / Compose | `ai-android-engineering-toolkit:figma-component-wiki` | Reads Compose composables + previews, runs Paparazzi screenshots if available, otherwise generates from layout inspector. |
|
|
39
|
+
| Generic | `ai-ios-engineering-toolkit:figma-component-wiki` (fallback) | Used when `state.platform` is unknown (fallback path - typically a flag). |
|
|
40
40
|
|
|
41
|
-
Full per-skill contract:
|
|
41
|
+
Full per-skill contract: `$HOME/.claude/multi-agent-refs/wiki-capture.md`.
|
|
42
42
|
|
|
43
43
|
## Wiki → Jira auto-link triad
|
|
44
44
|
|
|
45
45
|
When the adapter writes pages **AND** `state.jiraId` is set **AND** `prefs.global.wikiToJiraComment === true`, the adapter posts a humanizer-passed summary as an additional Jira comment (component name + variant count + wiki URL).
|
|
46
46
|
|
|
47
|
-
This comment is **independent** of the main `jira` channel comment - both can coexist on the same issue. Full triad contract:
|
|
47
|
+
This comment is **independent** of the main `jira` channel comment - both can coexist on the same issue. Full triad contract: `$HOME/.claude/multi-agent-refs/issue-jira-triad.md`.
|
|
48
48
|
|
|
49
49
|
## Wiki adapter modes (figma-config.wiki.mode)
|
|
50
50
|
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Component Dispatch (Phase 3 short-circuit)
|
|
2
|
+
|
|
3
|
+
> **TLDR** - When `taskType === "component"` (Figma URL in task description or instruction-driven figma workflow), multi-agent Phase 3 **does not run the TDD loop**. It delegates the entire phase to the enabled `ai-<platform>-engineering-toolkit` **marketplace plugin's** component skill (`create-component`, falling back to `create-ui-component`) via the Skill tool. Implementation lives in the plugin; multi-agent's job is classification, dispatch, and state report. The pipeline no longer bundles its own `figma-to-component` orchestrator - component skills live in one place, the plugin marketplace.
|
|
4
|
+
|
|
5
|
+
This doc is referenced from `$HOME/.claude/multi-agent-refs/phases/phase-3-dev.md`. Keeping it separate lets `phase-3-dev.md` remain tight (it's already the largest phase doc) and gives the orchestrator-report contract a stable URL for both Claude-side and Copilot-side implementations.
|
|
6
|
+
|
|
7
|
+
## Entry conditions
|
|
8
|
+
|
|
9
|
+
Phase 3 checks, in order:
|
|
10
|
+
|
|
11
|
+
1. `agent-state.json` has `taskType: "component"` (set by Phase 0 Step 7).
|
|
12
|
+
2. `agent-state.json` has a non-null `figmaUrl`.
|
|
13
|
+
|
|
14
|
+
Either missing → log the anomaly to `agent-log.md` ("component dispatch expected but state incomplete"), fall through to the standard TDD path. Never silently skip the Figma work.
|
|
15
|
+
|
|
16
|
+
## Plugin skill resolution
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
project.platform → component skill (enabled marketplace plugin, Claude Code)
|
|
20
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
ios → Skill: ai-ios-engineering-toolkit:create-component
|
|
22
|
+
(fallback: ai-ios-engineering-toolkit:create-ui-component)
|
|
23
|
+
android → Skill: ai-android-engineering-toolkit:create-component
|
|
24
|
+
(fallback: ai-android-engineering-toolkit:create-ui-component)
|
|
25
|
+
web, multi-* → HALT with clear error (no web target)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Dual-name resolution.** The public (`multi-agent-plugins`) and a corporate/private marketplace named the same skill differently - `create-component` vs `create-ui-component`. Dispatch tries `create-component` first; if it is not available in the current repo, tries `create-ui-component`. (Same dual-name rule applies when `taskType` maps to evolve → `evolve-component`/`evolve-ui-component`, or fix → `fix-bug`.)
|
|
29
|
+
|
|
30
|
+
If **neither** resolves, the platform's `ai-<platform>-engineering-toolkit` plugin is not enabled in this repo. **Halt with a user-visible error**: "component task requires the ai-<platform>-engineering-toolkit plugin enabled in this repo (`.claude/settings.local.json`)." Do not silently fall back to TDD - a component task ran through the bugfix path would produce wrong artefacts.
|
|
31
|
+
|
|
32
|
+
## Dispatch call
|
|
33
|
+
|
|
34
|
+
Emit `→ dispatching create-component <componentName>` via the progress contract, then invoke the resolved plugin skill via the **Skill tool** with:
|
|
35
|
+
|
|
36
|
+
- `figmaUrl` - primary argument (the plugin skill's `<figma-url>`)
|
|
37
|
+
- the component name + the analysis Section 6 (Bileşen Envanteri) row + Section 13.1 conventions as context (the plugin skill does not re-read the pipeline's analysis doc on its own - pass what it needs)
|
|
38
|
+
- `mode` - `"dev"` vs `"full"` communicated so the plugin can elide tests/wiki on `--dev`
|
|
39
|
+
|
|
40
|
+
Plugin skills are user-facing lifecycle skills; they do **not** accept an `agentState` path and do **not** write `agent-state.json`. State tracking therefore moves to the dispatch layer (next section).
|
|
41
|
+
|
|
42
|
+
## Subphase contract (dispatch-layer owned)
|
|
43
|
+
|
|
44
|
+
Because the plugin skill does not write pipeline state, **multi-agent's dispatch layer owns `state.phases["3"].subphases[]`**, not the skill. On dispatch, seed one coarse component-build subphase; on return, finalize it:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"id": "3.component",
|
|
49
|
+
"name": "component-build (plugin: create-component)",
|
|
50
|
+
"status": "done",
|
|
51
|
+
"startedAt": "2026-04-16T18:12:02Z",
|
|
52
|
+
"endedAt": "2026-04-16T18:13:47Z",
|
|
53
|
+
"buildStatus": "green",
|
|
54
|
+
"testStatus": "green"
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
This is the accepted behavioral change from the old bundled orchestrator: subphase granularity is coarse (one component-build row) rather than the former 3.0-3.8 breakdown, because the plugin reports at its own granularity. If the plugin emits structured progress, the dispatch layer MAY map it to finer subphase rows, but coarse is the contract floor. Multi-agent's `phase-tracker` reads the array unchanged.
|
|
59
|
+
|
|
60
|
+
## Multi-repo report
|
|
61
|
+
|
|
62
|
+
When multi-repo mode is active (`state.projects.length > 1`), the dispatch layer passes `state.projects[]` to the plugin skill and sequences writes across the repo graph:
|
|
63
|
+
|
|
64
|
+
- Tokens, accessibility metadata, testing identifiers, localisation keys → `repos.common`
|
|
65
|
+
- View / Configuration / Modifiers / Preview → `repos.components`
|
|
66
|
+
- Wiki markdown → `repos.wiki` (if `wiki.mode === submodule` or `separate-repo`) or `repos.components/.wiki/components/` (if `wiki.mode === in-repo`)
|
|
67
|
+
|
|
68
|
+
Multi-agent does **not** split the component task into per-repo Phase 3 runs - the dispatch layer sequences the plugin invocation so token writes to `common` precede component reads in `components`. If the plugin skill is not repo-graph aware, dispatch runs it against `repos.components` and performs the `common` token/key writes itself around the call.
|
|
69
|
+
|
|
70
|
+
## Failure + resume
|
|
71
|
+
|
|
72
|
+
On failure (the plugin skill returns an unrecoverable build/test error, or the dispatch hits retry cap):
|
|
73
|
+
|
|
74
|
+
1. The dispatch layer persists `{error, buildLog, testLog}` to `state.phases["3"].errors[]`.
|
|
75
|
+
2. Multi-agent increments `state.phases["3"].retryCount`.
|
|
76
|
+
3. Retry re-invokes the plugin skill (it is idempotent on an existing component; it reconciles rather than duplicating). There is no bundled `phase-<N>` resume anymore.
|
|
77
|
+
4. Hard kill at `retryCount === 3` → surface the errors to the user, halt Phase 3. Do not loop indefinitely.
|
|
78
|
+
|
|
79
|
+
## `--dev` mode behaviour
|
|
80
|
+
|
|
81
|
+
When multi-agent is invoked with `--dev` (fast path: Init → Dev → Commit → Report), the dispatch layer passes `mode: "dev"` so the plugin skill can elide unit tests and wiki (structural + snapshot still required; wiki deferred to Phase 7). If the plugin does not honor a `mode` hint, dispatch simply skips the post-build wiki step itself.
|
|
82
|
+
|
|
83
|
+
Phase 4 reviewer-skipping is **not** Phase 3's concern - Phase 4 decides based on `mode: "dev"` itself.
|
|
84
|
+
|
|
85
|
+
## Cross-CLI behaviour (intentional divergence)
|
|
86
|
+
|
|
87
|
+
Component dispatch is **no longer byte-identical across CLIs** and that is by design (see `cross-cli-contract.md` §1.1):
|
|
88
|
+
|
|
89
|
+
- **Claude Code**: dispatches to the enabled `ai-<platform>-engineering-toolkit` marketplace plugin via the Skill tool (this doc).
|
|
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.
|
|
91
|
+
|
|
92
|
+
What still MUST match across CLIs: the `taskType === "component"` classification, the `state.phases["3"].subphases[]` shape the dispatch layer writes, and `--dev` elision semantics. Figma-skill *inventory* parity is no longer enforced. `smoke-cross-cli-behavior.sh` asserts only the classification + state-shape axis for components.
|
|
@@ -28,65 +28,13 @@ Categories:
|
|
|
28
28
|
|
|
29
29
|
> **Inventory drift is a contract violation.** Adding a slash command under `pipeline/commands/multi-agent/` without updating this list + its counterpart Copilot dir (`pipeline/skills/shared/core/multi-agent-<cmd>/`) is a merge blocker. `smoke-commands-skills-parity.sh` enforces command ↔ skill directory parity; `smoke-cross-cli-behavior.sh` enforces behavior parity. This doc is the authoritative command list - bump the count + table together.
|
|
30
30
|
|
|
31
|
-
### 1.1 Figma component
|
|
31
|
+
### 1.1 Figma / component work (plugin-based on Claude Code; NOT parity-enforced)
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Component work is **no longer a bundled pipeline skill set**. Claude Code dispatches `taskType === "component"` to the enabled `ai-<platform>-engineering-toolkit` **marketplace plugin** (`create-component`, fallback `create-ui-component`) via the Skill tool - full contract in `$HOME/.claude/multi-agent-refs/component-dispatch.md`. The pipeline no longer ships `pipeline/skills/figma-ios|figma-android|figma-common`; the pipeline-unique component skills (iterate loops, performance harness, validate/review, commit, adapters, wiki) were absorbed into the `ai-ios-engineering-toolkit` plugin so component skills live in one place.
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|---|---|---|
|
|
37
|
-
| `pipeline/skills/figma-ios/` | 5 | iOS-only Phase 3 sub-skills (SwiftUI-specific) |
|
|
38
|
-
| `pipeline/skills/figma-android/` | 5 | Android-only Phase 3 sub-skills (Jetpack Compose-specific) |
|
|
39
|
-
| `pipeline/skills/figma-common/` | 31 | Platform-agnostic helpers (iterate / commit / wiki setup / MCP auth / performance harness / cross-cutting integration adapters / etc.) |
|
|
40
|
-
|
|
41
|
-
Both Claude Code and Copilot CLI MUST expose every skill with identical argument shape, identical progress-line emission, and identical state writes. Inventory divergence (skill exists on one side but not the other) is a contract violation and blocks merge.
|
|
42
|
-
|
|
43
|
-
**iOS and Android parallel set** (same 5 skill names under each platform dir):
|
|
44
|
-
|
|
45
|
-
| Skill | Scope | iOS path | Android path |
|
|
46
|
-
|---|---|---|---|
|
|
47
|
-
| `figma-to-component` | Orchestrator (3.0-3.8) | `pipeline/skills/figma-ios/figma-to-component/` | `pipeline/skills/figma-android/figma-to-component/` |
|
|
48
|
-
| `figma-component-implement` | 3.4 code gen | `pipeline/skills/figma-ios/figma-component-implement/` | `pipeline/skills/figma-android/figma-component-implement/` |
|
|
49
|
-
| `figma-component-test` | 3.5 tests | `pipeline/skills/figma-ios/figma-component-test/` | `pipeline/skills/figma-android/figma-component-test/` |
|
|
50
|
-
| `figma-component-code-connect` | 3.6 mapping publish | `pipeline/skills/figma-ios/figma-component-code-connect/` | `pipeline/skills/figma-android/figma-component-code-connect/` |
|
|
51
|
-
| `figma-component-wiki` | 3.7 wiki (4 adapters) | `pipeline/skills/figma-ios/figma-component-wiki/` | `pipeline/skills/figma-android/figma-component-wiki/` |
|
|
52
|
-
|
|
53
|
-
**Common pool** (all 31 skills under `pipeline/skills/figma-common/` - platform-agnostic, dispatched regardless of iOS/Android):
|
|
35
|
+
**Intentional cross-CLI divergence.** Copilot CLI has no marketplace-plugin loader, so it retains its own standalone `~/.copilot/skills/figma-*` copies as a frozen fallback. Component/figma dispatch is therefore **not** byte-identical across CLIs, and figma-skill *inventory* parity is **no longer enforced** - this is a deliberate exception to the parity rule, not drift.
|
|
54
36
|
|
|
55
|
-
|
|
56
|
-
|---|---|
|
|
57
|
-
| `figma-component-start` | Issue → branches |
|
|
58
|
-
| `figma-component-confluence-sync` | 7b confluence XHTML |
|
|
59
|
-
| `figma-component-status-update` | Confluence dashboard refresh |
|
|
60
|
-
| `figma-commit` | 14-item review + PR |
|
|
61
|
-
| `figma-iteration-commit` | Iteration/develop commit |
|
|
62
|
-
| `figma-issue` | Issue + Jira auto-create |
|
|
63
|
-
| `figma-iterate` | Auto batch loop |
|
|
64
|
-
| `figma-cli-iterate` | CLI iterate (all phases) |
|
|
65
|
-
| `figma-cli-lean-iterate` | CLI iterate (skip test+wiki) |
|
|
66
|
-
| `figma-cli-iterate-mend` | Re-implement discarded |
|
|
67
|
-
| `figma-cli-skip` | Mark skipped |
|
|
68
|
-
| `figma-fix` | Targeted bug fix |
|
|
69
|
-
| `figma-mend` | Re-implement from scratch |
|
|
70
|
-
| `figma-review` | Interactive review |
|
|
71
|
-
| `figma-validate` | Pre-impl validation |
|
|
72
|
-
| `figma-setup` | Env wizard |
|
|
73
|
-
| `figma-remote-mcp-auth` | Figma MCP OAuth |
|
|
74
|
-
| `figma-ui-patterns` | Pattern index |
|
|
75
|
-
| `figma-utility` | Figma data fetch |
|
|
76
|
-
| `figma-skip` | Skip + update Confluence |
|
|
77
|
-
| `figma-form-integration` | Form protocol adapter |
|
|
78
|
-
| `figma-price-integration` | Price protocol adapter |
|
|
79
|
-
| `figma-navigation` | Navigation pattern adapter (native-first / `ui.navigationSystem`) |
|
|
80
|
-
| `figma-overlays` | Overlay pattern adapter (native-first / `ui.overlaySystem`) |
|
|
81
|
-
| `figma-bottom-sheets` | Bottom-sheet/detent adapter (native-first / `ui.sheetSystem`) |
|
|
82
|
-
| `figma-evolve-component` | Reconcile drift + additive extend (human-gated) |
|
|
83
|
-
| `performance-start` | Perf-tracked component start |
|
|
84
|
-
| `performance-swiftui` | Perf-optimized pipeline |
|
|
85
|
-
| `performance-tour` | Batch produce components |
|
|
86
|
-
| `performance-review-next` | Interactive batch review |
|
|
87
|
-
| `performance-iteration-commit-all` | Batch validate + push all |
|
|
88
|
-
|
|
89
|
-
Total figma skill count: **41** (5 iOS + 5 Android + 31 Common).
|
|
37
|
+
What still MUST match across CLIs for component tasks: the `taskType === "component"` classification, the `state.phases["3"].subphases[]` shape the dispatch layer writes, and `--dev` elision semantics. Resolution/routing is Claude-plugin vs Copilot-local-copy by design.
|
|
90
38
|
|
|
91
39
|
### 1.2 Store-compliance skills
|
|
92
40
|
|
|
@@ -99,24 +47,9 @@ Two parallel shared/core skills under `pipeline/skills/shared/core/` wrap extern
|
|
|
99
47
|
|
|
100
48
|
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).
|
|
101
49
|
|
|
102
|
-
### 1.
|
|
103
|
-
|
|
104
|
-
Multi-agent Phase 3 resolves the orchestrator via `figmaConfig.project.platform`:
|
|
105
|
-
|
|
106
|
-
- `"ios"` → `pipeline/skills/figma-ios/figma-to-component/SKILL.md`
|
|
107
|
-
- `"android"` → `pipeline/skills/figma-android/figma-to-component/SKILL.md`
|
|
108
|
-
- anything else → halt with a clear error
|
|
109
|
-
|
|
110
|
-
Resolution logic MUST be byte-identical across CLIs. The full routing contract lives in `refs/component-dispatch.md`.
|
|
111
|
-
|
|
112
|
-
### 1.3 Figma skill frontmatter MUST carry (platform-specific skills only)
|
|
113
|
-
|
|
114
|
-
- `name` matching the directory name
|
|
115
|
-
- `status: wip-v5` (or `stable`/`deprecated` once released)
|
|
116
|
-
- `sourced-from: upstream/<orig>` or `sourced-from: derived-from/<peer-path>` for platform-specific peers
|
|
117
|
-
- `platform: ios` or `platform: android` when the skill is platform-specific
|
|
50
|
+
### 1.3 Figma-skill routing from multi-agent (superseded)
|
|
118
51
|
|
|
119
|
-
|
|
52
|
+
Superseded by §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.
|
|
120
53
|
|
|
121
54
|
---
|
|
122
55
|
|
|
@@ -182,7 +115,7 @@ The top-level orchestrator has two deliberately different shapes on the two CLIs
|
|
|
182
115
|
|
|
183
116
|
| Surface | File | Shape | Why |
|
|
184
117
|
|---|---|---|---|
|
|
185
|
-
| Claude Code (colon-form) | `pipeline/commands/multi-agent.md` | ~300 lines - thin dispatcher that routes to
|
|
118
|
+
| Claude Code (colon-form) | `pipeline/commands/multi-agent.md` | ~300 lines - thin dispatcher that routes to `$HOME/.claude/multi-agent-refs/phases/phase-N-*.md` on demand | Claude Code supports lazy-loaded reference files (`@refs/phases/...`), so only the active phase's docs enter the context window. Saves tokens. |
|
|
186
119
|
| Copilot CLI (dash-form) | `pipeline/skills/shared/core/multi-agent/SKILL.md` | ~830 lines - full inline orchestrator with all 8 phase specs embedded | Copilot CLI loads the whole SKILL.md into context once the skill is dispatched; it doesn't have an equivalent of Claude's ref-file loading pattern. Embedding keeps behavior identical without relying on a feature Copilot lacks. |
|
|
187
120
|
|
|
188
121
|
**What must stay identical** (byte-level) across the two files:
|
|
@@ -293,7 +226,7 @@ Modifier flags are orthogonal and compose:
|
|
|
293
226
|
|
|
294
227
|
## 7. Platform Guards (macOS / Linux / WSL)
|
|
295
228
|
|
|
296
|
-
Commands invoked via Copilot CLI may run on Linux or WSL. Claude Code currently macOS-only. Shell code in `pipeline/skills/
|
|
229
|
+
Commands invoked via Copilot CLI may run on Linux or WSL. Claude Code currently macOS-only. Shell code in `pipeline/skills/shared/core/` command files and in `pipeline/lib` / `pipeline/scripts` must be portable.
|
|
297
230
|
|
|
298
231
|
For Keychain I/O the canonical path is **`~/.claude/lib/credential-store.sh`** (or `~/.copilot/lib/credential-store.sh` on Copilot installs). The shell driver detects platform internally and auto-delegates to `keychain.py` (Python helper, macOS / Linux) or PowerShell `CredentialManager` (Windows). Call sites stay platform-agnostic - no per-OS branching needed.
|
|
299
232
|
|
|
@@ -304,7 +237,7 @@ For Keychain I/O the canonical path is **`~/.claude/lib/credential-store.sh`** (
|
|
|
304
237
|
| Clipboard read | - (still needs a per-platform branch - there is no helper) | `pbpaste` (macOS) · `wl-paste` (Wayland) · `xclip -selection clipboard -o` (X11) |
|
|
305
238
|
| Clipboard clear | - | `pbcopy < /dev/null` (macOS) · `printf '' \| wl-copy` (Wayland) · `printf '' \| xclip -selection clipboard` (X11) |
|
|
306
239
|
|
|
307
|
-
For clipboard ops, callers still gate with `if command -v pbpaste >/dev/null; then ...; elif command -v wl-paste ...; elif command -v xclip ...; fi`. A future `pipeline/lib/clipboard.sh` could absorb that pattern; until it exists, keep the inline guard in
|
|
240
|
+
For clipboard ops, callers still gate with `if command -v pbpaste >/dev/null; then ...; elif command -v wl-paste ...; elif command -v xclip ...; fi`. A future `pipeline/lib/clipboard.sh` could absorb that pattern; until it exists, keep the inline guard in skill bash blocks.
|
|
308
241
|
|
|
309
242
|
---
|
|
310
243
|
|
|
@@ -316,7 +249,7 @@ This contract is validated by:
|
|
|
316
249
|
- `smoke-commands-skills-parity.sh` (50 assertions) - enforces colon-form command ↔ dash-form skill directory parity
|
|
317
250
|
- `smoke-compliance-skills.sh` (45 assertions) - enforces store-compliance skill catalog + 4 consumer wiring
|
|
318
251
|
- `smoke-personal-data.sh` - extended in 0.5.5 to treat deprecated placeholders (`{github-username}`, `{your-website}`, `{website-repo}`) as leaks; adds `mmerterden` to public-handle blocklist for generic docs
|
|
319
|
-
- `pre-push-check.sh` - runs
|
|
252
|
+
- `pre-push-check.sh` - runs the cross-CLI + personal-data smoke tests before any push that touches `pipeline/skills/shared/core/` commands
|
|
320
253
|
- `sync.md` (Section 2 REPO step) - genericization lookup table MUST match Section 2 of this contract
|
|
321
254
|
|
|
322
255
|
---
|
|
@@ -38,4 +38,4 @@ Adds one Sonnet call plus up to `maxFindings` single-test runs (and build-lock c
|
|
|
38
38
|
|
|
39
39
|
## Reference
|
|
40
40
|
|
|
41
|
-
Wiring:
|
|
41
|
+
Wiring: `$HOME/.claude/multi-agent-refs/phases/phase-4-review.md` Step 3.7. Schema: `pipeline/schemas/triage-output.schema.json` v3.2.0 (`$defs.verification`). Evidence gate: `pipeline/scripts/evidence-gate.mjs`. Prefs: `prefs.global.verifyByTest` in `pipeline/schemas/prefs.schema.json`.
|
|
@@ -11,7 +11,7 @@ Consumed by `generate.md`. This ref is never invoked directly.
|
|
|
11
11
|
- **Standard template is the baseline.** The description structure comes from the type's standard template (see [7/12]), not from a mined heading set. Mining informs summary prefix, labels, components, priority norm, sprint placement, and test-scenario style - never replaces the standard section skeleton.
|
|
12
12
|
- **Auto-sizing.** A conditional section renders only when its trigger is present. No empty placeholder headings - if there is nothing to put in a conditional section, it does not appear.
|
|
13
13
|
- **Issue content language follows `prefs.global.outputLanguage`.** Summary and description are written in the user's output language (intentional exception to the "external payloads stay English" default - the issue is authored FOR the user's team). Code identifiers, file paths, and URLs stay verbatim. AskUserQuestion `question`/`description` also follow `outputLanguage`; `label`/`header` stay English.
|
|
14
|
-
- **UTF-8 verbatim POST path** (same as
|
|
14
|
+
- **UTF-8 verbatim POST path** (same as `$HOME/.claude/multi-agent-refs/channels/jira.md`): description body goes to a file, `jq -n --rawfile` builds the payload, `curl --data-binary @file` ships it. Never round-trip through `unicode_escape`/`latin-1`, never hand-roll a re-encoding helper. Jira wiki markup (`h3.` headings, `[text|url]` links), real newlines, no HTML entities.
|
|
15
15
|
- **Humanizer pass** on the description body after composition, before the preview render.
|
|
16
16
|
- **Read-only until approval.** Steps 1-9 perform only GET requests. The first write of any kind is the `POST /rest/api/2/issue` in step [10/12].
|
|
17
17
|
|
|
@@ -65,7 +65,7 @@ TOKEN=$(~/.claude/lib/credential-store.sh get "$ACCOUNT_JIRA_TOKEN_KEY")
|
|
|
65
65
|
|
|
66
66
|
### [2/12] Resolve project key
|
|
67
67
|
|
|
68
|
-
Fallback chain (same as
|
|
68
|
+
Fallback chain (same as `$HOME/.claude/multi-agent-refs/issue-jira-triad.md` Create path):
|
|
69
69
|
1. `figmaConfig.jira.projectKey` (per-project config, when running inside a configured repo)
|
|
70
70
|
2. `prefs.global.defaultJiraKey`
|
|
71
71
|
3. Fetch and ask:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **TLDR** - When a GitHub issue triggers the pipeline and has no Jira ID, the `autoJiraFromGithubIssue` policy decides whether to auto-create a Jira task (and patch the GitHub issue body with the new Jira link). Phase 7 then posts a humanizer'd wiki-content summary back as a Jira comment, closing the loop. Autopilot treats `ask` as `always`.
|
|
4
4
|
|
|
5
|
-
This doc is referenced from
|
|
5
|
+
This doc is referenced from `$HOME/.claude/multi-agent-refs/phases/phase-0-init.md` Step 1 (GitHub issue input) and `$HOME/.claude/multi-agent-refs/phases/phase-7-report.md` Step 2 (component wiki). Keeps the phase docs tight and gives the triad contract a stable home.
|
|
6
6
|
|
|
7
7
|
## The triad at a glance
|
|
8
8
|
|
|
@@ -21,7 +21,7 @@ When a token resolves but the service rejects it (401 / 403), do not silently sk
|
|
|
21
21
|
|
|
22
22
|
The question asks a *choice*; the replacement value still flows through the clipboard, never chat. `smoke-no-token-prompt.sh` greps for value-prompts (`enter token`, `paste token`, `API key:`) - decision labels like `Regenerate` / `Skip and continue` do not trip it.
|
|
23
23
|
|
|
24
|
-
Expiry is also checked **proactively at init**: Phase 0 Step 0.7 (
|
|
24
|
+
Expiry is also checked **proactively at init**: Phase 0 Step 0.7 (`$HOME/.claude/multi-agent-refs/phases/phase-0-init.md`) probes every token the run will need with one cheap call each (cached via `global.serviceStatus`, TTL 300s) and runs this same decision at init instead of waiting for the first mid-run 401. The mid-run 401 path stays as the safety net.
|
|
25
25
|
|
|
26
26
|
#### Figma MCP token lifecycle (critical)
|
|
27
27
|
|
|
@@ -75,7 +75,7 @@ Verdict: unverified (2 reviewers)
|
|
|
75
75
|
|
|
76
76
|
## Handoff - end of Phase {N} ({name}) - {ISO timestamp}
|
|
77
77
|
|
|
78
|
-
(v10.8.0, appended chronologically by the phase-boundary checkpoint - one block per phase transition, the LATEST block is authoritative. Written by the orchestrator from state it already holds; no LLM call, ~15 lines max. `resume.md` Step 3 and post-`/compact` re-grounding read this block FIRST. Format spec:
|
|
78
|
+
(v10.8.0, appended chronologically by the phase-boundary checkpoint - one block per phase transition, the LATEST block is authoritative. Written by the orchestrator from state it already holds; no LLM call, ~15 lines max. `resume.md` Step 3 and post-`/compact` re-grounding read this block FIRST. Format spec: `$HOME/.claude/multi-agent-refs/phases/operations.md`.)
|
|
79
79
|
|
|
80
80
|
- Done: {up to 3 bullets of completed outcomes}
|
|
81
81
|
- Remaining: {ordered list of remaining phases / sub-steps}
|
|
@@ -35,7 +35,7 @@ Autopilot mode skips interactive confirmations and runs the pipeline end-to-end
|
|
|
35
35
|
- Phase 4 Review -> if blocking finding, returns to Phase 3, auto fix + rebuild (safety)
|
|
36
36
|
- Kill/Purge confirmations -> destructive operations always ask
|
|
37
37
|
- Build fail -> auto fix + rebuild (max 3 retries). After 3 retries still failing -> pause, ask user
|
|
38
|
-
- **Circuit-breaker** -> autopilot halts (records reason, waits for `resume`) on a no-progress stall, an identical repeated failure, a rework storm, cost drift past the `costBudget` ceiling, or a merge/rebase conflict. Full wiring:
|
|
38
|
+
- **Circuit-breaker** -> autopilot halts (records reason, waits for `resume`) on a no-progress stall, an identical repeated failure, a rework storm, cost drift past the `costBudget` ceiling, or a merge/rebase conflict. Full wiring: `$HOME/.claude/multi-agent-refs/features/autopilot-circuit-breaker.md`. This is the sanctioned autopilot pause - continuing unattended off the happy path is the less safe choice.
|
|
39
39
|
- **Phase 7 channels dispatch** -> always pauses for multi-select. Rationale: Jira/Confluence are externally visible; silently posting wrong-tone content leaks team-visible artifacts. See below.
|
|
40
40
|
|
|
41
41
|
**State tracking**: `agent-state.json` gets `"autopilot": true`. Autopilot continues on resume as well.
|
|
@@ -53,7 +53,7 @@ The generic "zero-interaction" contract covers Phases 0-6 only. Phase 7 channels
|
|
|
53
53
|
- Resume: `/multi-agent:resume <task-id>` re-opens menu with same inputs.
|
|
54
54
|
- Post-hoc `/multi-agent:channels <task>` never times out - user invoked it explicitly.
|
|
55
55
|
|
|
56
|
-
Full contract:
|
|
56
|
+
Full contract: `$HOME/.claude/multi-agent-refs/phases/phase-7-report.md` (Autopilot pause contract) + `commands/multi-agent/channels/SKILL.md`.
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
@@ -107,7 +107,7 @@ This keeps orchestrator context lean and enables programmatic routing.
|
|
|
107
107
|
- Next: Phase {N+1} {name}, subStep {token or "start"}
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
Full `agent-log.md` shape:
|
|
110
|
+
Full `agent-log.md` shape: `$HOME/.claude/multi-agent-refs/phases/log-format.md`. Resume-side consumption: `resume.md` Step 3 reads the latest handoff FIRST, then falls back to per-phase findings for logs written before v10.8.
|
|
111
111
|
|
|
112
112
|
**Sub-step checkpoints (long phases)**: Phase 3 (dev/TDD cycles) and Phase 7 (report/channels) can run many minutes; a crash mid-phase loses everything since the last phase boundary and forces a full phase re-run on resume. For these phases, also record `state.phases[<n>].subStep` (a short token: `red`, `green`, `build`, `pr-opened`, `confluence-synced`, ...) and the `files[]` written so far after each meaningful unit of work. On resume, re-enter the phase but skip units whose `subStep` is already recorded and whose `files[]` exist in the worktree - re-do only the unfinished tail, never the whole phase.
|
|
113
113
|
|
|
@@ -17,11 +17,11 @@ pipeline/scripts/phase-tracker.sh update 0 in_progress
|
|
|
17
17
|
|
|
18
18
|
If `INPUT_TASK_ID` isn't known yet (free-text, project not selected), use a placeholder; rename later via `mv` once parsed in Step 1.
|
|
19
19
|
|
|
20
|
-
Every subsequent phase (1-7) MUST call `phase-tracker.sh update <N> in_progress` on entry and `phase-tracker.sh update <N> completed|failed|skipped` on exit. Sub-phase milestones use `phase-tracker.sh sub <N> <subN> "<name>" <status>`. See
|
|
20
|
+
Every subsequent phase (1-7) MUST call `phase-tracker.sh update <N> in_progress` on entry and `phase-tracker.sh update <N> completed|failed|skipped` on exit. Sub-phase milestones use `phase-tracker.sh sub <N> <subN> "<name>" <status>`. See `$HOME/.claude/multi-agent-refs/phases.md` "Visual Phase Tracker" for the full contract.
|
|
21
21
|
|
|
22
22
|
##### TaskCreate ordering on Claude Code (strict)
|
|
23
23
|
|
|
24
|
-
On Claude Code, fire all `TaskCreate` calls in strict phase-number order (0 → 7) BEFORE any `TaskUpdate`. Full contract:
|
|
24
|
+
On Claude Code, fire all `TaskCreate` calls in strict phase-number order (0 → 7) BEFORE any `TaskUpdate`. Full contract: `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
@@ -35,9 +35,9 @@ Read preferences: `PREFS_FILE="$HOME/.claude/multi-agent-preferences.json"` (if
|
|
|
35
35
|
OUTPUT_LANG=$(jq -r '.global.outputLanguage // "en"' "$PREFS_FILE" 2>/dev/null || echo en)
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
From this point on, every assistant-authored conversational line (status updates, findings, phase headers, summaries, error explanations) renders in `$OUTPUT_LANG`. `AskUserQuestion` payloads stay English. External payloads stay English. See
|
|
38
|
+
From this point on, every assistant-authored conversational line (status updates, findings, phase headers, summaries, error explanations) renders in `$OUTPUT_LANG`. `AskUserQuestion` payloads stay English. External payloads stay English. See `$HOME/.claude/multi-agent-refs/rules.md` "Language Application" for the full contract. Skipping this step is the failure mode where the user sees an English wall of text in a Turkish session.
|
|
39
39
|
|
|
40
|
-
**Model fallback date gate** (same step, once per run): read `prefs.global.modelFallback`. If `premiumTierUntil` is set and in the past, apply the date-gate trigger from
|
|
40
|
+
**Model fallback date gate** (same step, once per run): read `prefs.global.modelFallback`. If `premiumTierUntil` is set and in the past, apply the date-gate trigger from `$HOME/.claude/multi-agent-refs/features/model-fallback.md` - `preferredModel` personas dispatch on `fallbackModel` for this run, with the one-line WARN. Dispatch-error and budget triggers in that contract apply per-dispatch later; nothing else to do here.
|
|
41
41
|
|
|
42
42
|
**First-run guard**: After loading prefs, check if `keychainMapping` has at least one non-null value. If ALL values are null (template defaults - setup never ran), show:
|
|
43
43
|
```
|
|
@@ -132,7 +132,7 @@ Results are cached in `global.serviceStatus` (existing TTL contract, default 300
|
|
|
132
132
|
- **Continue degraded** - proceed on Tier 2 (REST PAT) for this run; log the downgrade.
|
|
133
133
|
3. **Autopilot**: silent renewal only; if it fails, log `→ figma mcp token expired (autopilot: continuing on tier 2)` and continue degraded - never prompt.
|
|
134
134
|
|
|
135
|
-
**Other tokens expired / rejected** → run the Expired-token decision from
|
|
135
|
+
**Other tokens expired / rejected** → run the Expired-token decision from `$HOME/.claude/multi-agent-refs/keychain.md` Rule 1 HERE at init (Regenerate / Use a different token / Skip and continue) instead of waiting for the first mid-run 401. A token that is structurally required for the input (e.g. the Jira PAT for a Jira-ID input) halts on skip, since Step 1 cannot fetch without it. Autopilot: skip-and-degrade semantics per Rule 1, halt only on structurally required tokens.
|
|
136
136
|
|
|
137
137
|
Probe failures caused by network (timeout, DNS) are NOT treated as expiry - log and continue; the mid-run 401 path still exists as the safety net.
|
|
138
138
|
|
|
@@ -146,7 +146,7 @@ Classify and fetch external data:
|
|
|
146
146
|
|
|
147
147
|
1. Extract org, repo, issueNumber from URL
|
|
148
148
|
2. `gh issue view {N} -R {org}/{repo} --json title,body,labels,assignees`
|
|
149
|
-
3. Scan body for Jira ID (`{JIRA_KEY}-XXXXX`) → store as jiraId. Multiple → use FIRST. **No Jira ID** → apply the **GitHub-issue Jira auto-create** policy below; result is either a newly created Jira (`jiraId` stored + GitHub issue body updated with the link) or an explicit "no Jira" decision (branch uses `feature/GH{issueNo}-{kebab}`). See
|
|
149
|
+
3. Scan body for Jira ID (`{JIRA_KEY}-XXXXX`) → store as jiraId. Multiple → use FIRST. **No Jira ID** → apply the **GitHub-issue Jira auto-create** policy below; result is either a newly created Jira (`jiraId` stored + GitHub issue body updated with the link) or an explicit "no Jira" decision (branch uses `feature/GH{issueNo}-{kebab}`). See `$HOME/.claude/multi-agent-refs/issue-jira-triad.md` for the full policy, including autopilot behaviour and the `prefs.global.autoJiraFromGithubIssue` preference.
|
|
150
150
|
4. Scan body for Figma URL (`figma.com/design/...`) → store as figmaUrl
|
|
151
151
|
5. Auto-detect project: check `$HOME/{repo}` exists → skip Step 2
|
|
152
152
|
|
|
@@ -200,7 +200,7 @@ Sequential prompts (standard UX pattern with Recent suggestion): Project Key →
|
|
|
200
200
|
|
|
201
201
|
#### Step 1b - URL Enrichment (catalogue + targeted deep fetches)
|
|
202
202
|
|
|
203
|
-
After Step 1 fetches the Jira description (or free-text input), every URL in the text gets classified and catalogued. Targeted deep fetches (Crashlytics, Fortify) run when the matching link type is present; the rest (Swagger, Confluence, Figma, generic doc) are catalogued so Phase 1 (Analysis) can consume them via the typed fetchers documented in
|
|
203
|
+
After Step 1 fetches the Jira description (or free-text input), every URL in the text gets classified and catalogued. Targeted deep fetches (Crashlytics, Fortify) run when the matching link type is present; the rest (Swagger, Confluence, Figma, generic doc) are catalogued so Phase 1 (Analysis) can consume them via the typed fetchers documented in `$HOME/.claude/multi-agent-refs/channels/*.md`.
|
|
204
204
|
|
|
205
205
|
##### Step 1b.0 - Extract context links (always runs)
|
|
206
206
|
|
|
@@ -517,7 +517,7 @@ Persist: `"taskType": "component" | "bugfix" | "feature" | "refactor" | "chore"`
|
|
|
517
517
|
|
|
518
518
|
| Phase | Behavior change |
|
|
519
519
|
| ------- | -------------------------------------------------------------------------------------------------------- |
|
|
520
|
-
| Phase 3 | `component` →
|
|
520
|
+
| Phase 3 | `component` → dispatch to the enabled `ai-<platform>-engineering-toolkit` plugin's `create-component` skill (fallback `create-ui-component`); else standard TDD |
|
|
521
521
|
| Phase 4 | `bugfix` → test coverage; `component` → accessibility+tokens; `refactor` → behavior preservation |
|
|
522
522
|
| Phase 6 | `bugfix`/`hotfix` → `fix(...)` prefix; `feature`/`component` → `feat(...)`; `refactor` → `refactor(...)` |
|
|
523
523
|
| Phase 7 | `component` → includes SubPhase breakdown |
|
|
@@ -533,7 +533,7 @@ Log: `Phase 0 Step 7: taskType = {component|bugfix|feature|refactor|chore}`
|
|
|
533
533
|
3. If `clarityScore >= prefs.clarifyAmbiguous.minScoreToProceed` (default 6) or `stopAndAsk == false` → write `state.clarification` (score + rationale, no questions), proceed to Phase 1 silently.
|
|
534
534
|
4. If `stopAndAsk == true`:
|
|
535
535
|
|
|
536
|
-
- **Interactive runs:** render the questions via `AskUserQuestion` (label + header per
|
|
536
|
+
- **Interactive runs:** render the questions via `AskUserQuestion` (label + header per `$HOME/.claude/multi-agent-refs/rules.md` Language Application matrix; `outputLanguage` for `question` + `option.description`, English for `label` + `header`). Up to `maxQuestions` questions, each with the recommended option flagged. Persist the user's answers under `state.clarification.userAnswers`.
|
|
537
537
|
- **Autopilot runs:** follow `clarifyAmbiguous.autopilotMode`:
|
|
538
538
|
|
|
539
539
|
| Mode | Behavior |
|
|
@@ -564,6 +564,6 @@ Phase 7 cost rollup carries this as a `phase 0` line item so the user sees ambig
|
|
|
564
564
|
|
|
565
565
|
<!-- progress-contract: applied -->
|
|
566
566
|
|
|
567
|
-
**Progress (per
|
|
567
|
+
**Progress (per `$HOME/.claude/multi-agent-refs/progress-contract.md`):** emit one `→ <verb> <object>` line for each of: `→ parsing input`, `→ checking token <service>`, `→ scanning project <root>`, `→ creating worktree <repo>`, `→ binding identity <name>`, `→ writing state`. When `clarifyAmbiguous.enabled`, also emit `→ scoring task ambiguity` before Step 8 and `→ asking clarifying questions <N>` when `stopAndAsk` fires.
|
|
568
568
|
|
|
569
569
|
**Save preferences**: Write updated prefs to `$HOME/.claude/multi-agent-preferences.json` with all Phase 0 selections.
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
> **TLDR** - Fable-driven codebase exploration (Opus when the fallback ladder engages). Detects if the issue is already fixed (git blame, closed PRs), then launches parallel Explore sub-agents to map the affected code paths. Outputs: impact analysis, stack detection (auto-selects platform guide), relevant files, risk areas. Feeds Phase 2 planning.
|
|
4
4
|
|
|
5
5
|
<!-- progress-contract: applied -->
|
|
6
|
-
Progress emission per
|
|
6
|
+
Progress emission per `$HOME/.claude/multi-agent-refs/progress-contract.md` - lines for each Explore dispatch, each finish, analyst synthesis start, `analysis.json` write.
|
|
7
7
|
|
|
8
8
|
#### Step 0 - Prior Fix Detection
|
|
9
9
|
|
|
10
|
-
Before any analysis, check if this issue was already fixed by someone else. Three signals (git commit grep on issue ID over 8 weeks, recent file-path history over 4 weeks, Jira/issue comments). On hit → prompt: Verify (cherry-pick path) / Stop (cleanup + `stopped_already_fixed` state) / Continue. Miss → Step 1. Full check commands, prompt block, and cleanup commands:
|
|
10
|
+
Before any analysis, check if this issue was already fixed by someone else. Three signals (git commit grep on issue ID over 8 weeks, recent file-path history over 4 weeks, Jira/issue comments). On hit → prompt: Verify (cherry-pick path) / Stop (cleanup + `stopped_already_fixed` state) / Continue. Miss → Step 1. Full check commands, prompt block, and cleanup commands: `$HOME/.claude/multi-agent-refs/features/prior-fix-detection.md`.
|
|
11
11
|
|
|
12
12
|
#### Step 1 - Knowledge Injection (cached context)
|
|
13
13
|
|
|
@@ -75,7 +75,7 @@ Progress lines:
|
|
|
75
75
|
|
|
76
76
|
#### Step 1.5 - External Context Injection (`state.contextLinks[]`)
|
|
77
77
|
|
|
78
|
-
Phase 0 Step 1b catalogued every typed external link from the task description into `state.contextLinks[]`. Phase 1 dispatches each entry to its matching fetcher (crashlytics, fortify, swagger, confluence, figma, generic-doc) and prepends results under a **Referenced External Sources** section in the analysis prompt - so the agent doesn't re-discover what the ticket already pointed at. Failures never fatal; pending refs are advisories. Full dispatch table, exit-code handling, prompt injection shape, log line shape:
|
|
78
|
+
Phase 0 Step 1b catalogued every typed external link from the task description into `state.contextLinks[]`. Phase 1 dispatches each entry to its matching fetcher (crashlytics, fortify, swagger, confluence, figma, generic-doc) and prepends results under a **Referenced External Sources** section in the analysis prompt - so the agent doesn't re-discover what the ticket already pointed at. Failures never fatal; pending refs are advisories. Full dispatch table, exit-code handling, prompt injection shape, log line shape: `$HOME/.claude/multi-agent-refs/features/external-context-injection.md`.
|
|
79
79
|
|
|
80
80
|
**Log line shape** (progress contract):
|
|
81
81
|
|
|
@@ -107,7 +107,7 @@ This informs:
|
|
|
107
107
|
|
|
108
108
|
#### Step 2.5 - Repo Map Injection (advisory, opt-in)
|
|
109
109
|
|
|
110
|
-
Gated by `prefs.global.repoMap.enabled` (default: `false`). When enabled, runs `pipeline/scripts/repo-map.mjs` and injects the budgeted result into each Explore prompt as `${REPO_MAP}`. Aider-style: deterministic, no embeddings, sub-second, advisory only. Full wiring (helper invocation, properties, when-to-enable):
|
|
110
|
+
Gated by `prefs.global.repoMap.enabled` (default: `false`). When enabled, runs `pipeline/scripts/repo-map.mjs` and injects the budgeted result into each Explore prompt as `${REPO_MAP}`. Aider-style: deterministic, no embeddings, sub-second, advisory only. Full wiring (helper invocation, properties, when-to-enable): `$HOME/.claude/multi-agent-refs/features/repo-map.md`.
|
|
111
111
|
|
|
112
112
|
#### Step 3 - Codebase Exploration
|
|
113
113
|
|
|
@@ -155,7 +155,7 @@ LOG_METRIC_FORWARD_TO_TRACKER=1 pipeline/scripts/log-metric.sh "$TASK_ID" 1 anal
|
|
|
155
155
|
model=opus tokens_in=$IN tokens_out=$OUT duration_ms=$DUR
|
|
156
156
|
```
|
|
157
157
|
|
|
158
|
-
Best-effort. See
|
|
158
|
+
Best-effort. See `$HOME/.claude/multi-agent-refs/progress-contract.md#token-telemetry-forwarding-v83` for the canonical contract.
|
|
159
159
|
|
|
160
160
|
#### Prior-Art Enrichment (advisory)
|
|
161
161
|
|
|
@@ -178,6 +178,6 @@ After every LLM call in this phase (analysis, plan generation, code/diff write,
|
|
|
178
178
|
bash $HOME/.claude/scripts/phase-tracker.sh tokens 1 <input_count> <output_count>
|
|
179
179
|
```
|
|
180
180
|
|
|
181
|
-
The tracker accumulates the totals additively, so multiple calls in the same phase compound. The render output then shows live cost on the active phase tile (e.g. `Phase 1 Dev 2m 14s · 12.4k tok`). This satisfies the contract in
|
|
181
|
+
The tracker accumulates the totals additively, so multiple calls in the same phase compound. The render output then shows live cost on the active phase tile (e.g. `Phase 1 Dev 2m 14s · 12.4k tok`). This satisfies the contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` and the `smoke-tracker-tokens-invocation.sh` enforcement gate. Skipping this call is the #1 cause of "I can't see how much it cost" complaints.
|
|
182
182
|
|
|
183
183
|
If you do not have access to the model's reported token counts, pass best-effort estimates derived from input length / output length - partial cost data is better than none.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **TLDR** - Fable decomposes the analysis (Opus when the fallback ladder engages) into concrete tasks with file-level targets, risk grading, and architecture review. Before Phase 3 a **Plan Approval Gate** runs in normal mode: if the Jira/issue description is ambiguous the orchestrator asks the user structured clarification questions (max 2 rounds) - once scope is clear it renders the plan and loops on free-text edit requests until the user approves or aborts. The gate is **skipped entirely** for `--dev`, `autopilot`, and `--dev autopilot` (their speed/zero-interaction contracts are preserved).
|
|
4
4
|
|
|
5
5
|
<!-- progress-contract: applied -->
|
|
6
|
-
Progress emission per
|
|
6
|
+
Progress emission per `$HOME/.claude/multi-agent-refs/progress-contract.md` - lines for plan-draft start, clarification-ask, clarification-answer, plan render, plan-edit-request, plan-approved, plan-aborted.
|
|
7
7
|
|
|
8
8
|
## Phase 2 Pre-flight (BLOCKING, v9.0.0)
|
|
9
9
|
|
|
@@ -313,7 +313,7 @@ LOG_METRIC_FORWARD_TO_TRACKER=1 pipeline/scripts/log-metric.sh "$TASK_ID" 2 plan
|
|
|
313
313
|
model=opus tokens_in=$IN tokens_out=$OUT duration_ms=$DUR iteration=$N
|
|
314
314
|
```
|
|
315
315
|
|
|
316
|
-
Best-effort. See
|
|
316
|
+
Best-effort. See `$HOME/.claude/multi-agent-refs/progress-contract.md#token-telemetry-forwarding-v83`.
|
|
317
317
|
|
|
318
318
|
---
|
|
319
319
|
|
|
@@ -325,6 +325,6 @@ After every LLM call in this phase (analysis, plan generation, code/diff write,
|
|
|
325
325
|
bash $HOME/.claude/scripts/phase-tracker.sh tokens 2 <input_count> <output_count>
|
|
326
326
|
```
|
|
327
327
|
|
|
328
|
-
The tracker accumulates the totals additively, so multiple calls in the same phase compound. The render output then shows live cost on the active phase tile (e.g. `Phase 2 Dev 2m 14s · 12.4k tok`). This satisfies the contract in
|
|
328
|
+
The tracker accumulates the totals additively, so multiple calls in the same phase compound. The render output then shows live cost on the active phase tile (e.g. `Phase 2 Dev 2m 14s · 12.4k tok`). This satisfies the contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` and the `smoke-tracker-tokens-invocation.sh` enforcement gate. Skipping this call is the #1 cause of "I can't see how much it cost" complaints.
|
|
329
329
|
|
|
330
330
|
If you do not have access to the model's reported token counts, pass best-effort estimates derived from input length / output length - partial cost data is better than none.
|