@mmerterden/multi-agent-pipeline 11.1.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 +58 -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/_common.mjs +9 -1
- package/install/_dev-only-files.mjs +0 -6
- package/install/claude.mjs +45 -18
- 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/build-stack-plugins.mjs +1 -1
- 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 +21 -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/backlog/BACKLOG.md +32 -0
- package/pipeline/skills/shared/external/backlog/SKILL.md +49 -0
- package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +48 -0
- package/pipeline/skills/shared/external/skill-creator/audit.md +59 -0
- package/pipeline/skills/shared/external/skill-creator/checklist.md +32 -0
- package/pipeline/skills/shared/external/skill-creator/examples.md +65 -0
- package/pipeline/skills/shared/external/skill-creator/label-check.md +43 -0
- package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +83 -0
- package/pipeline/skills/shared/external/skill-creator/template.md +67 -0
- package/pipeline/skills/skills-index.md +4 -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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **TLDR** - Component tasks can auto-generate wiki docs + Figma screenshots. The Wiki adapter is invoked from `/multi-agent:channels` (Phase 7 delegates, or user invokes post-hoc). Four layouts supported (`submodule`, `in-repo`, `github-wiki`, `separate-repo`) - adapter picked from `figmaConfig.wiki.mode`. Non-blocking: failures log a warning and channels continues to other adapters. The Wiki adapter supports scope multi-select (Case A) and a precondition-failure menu (Case B) - see below.
|
|
4
4
|
|
|
5
|
-
This doc is referenced from `commands/multi-agent/channels.md` (Wiki adapter) and indirectly from
|
|
5
|
+
This doc is referenced from `commands/multi-agent/channels/SKILL.md` (Wiki adapter) and indirectly from `$HOME/.claude/multi-agent-refs/phases/phase-7-report.md` (which delegates all external delivery to channels). Keeping it separate keeps both files under their token budgets and gives the contract a stable location for Claude-side + Copilot-side implementations.
|
|
6
6
|
|
|
7
7
|
## Applicability
|
|
8
8
|
|
|
@@ -77,9 +77,9 @@ Save the answer to `prefs.global.wikiDefault` for next run. Migration script (`m
|
|
|
77
77
|
|
|
78
78
|
## Dispatch
|
|
79
79
|
|
|
80
|
-
1. Resolve wiki mode from `figmaConfig.wiki.mode` - one of `submodule`, `in-repo`, `github-wiki`, `separate-repo`. Each has a dedicated adapter inside the `figma-component-wiki` skill; see `
|
|
80
|
+
1. Resolve wiki mode from `figmaConfig.wiki.mode` - one of `submodule`, `in-repo`, `github-wiki`, `separate-repo`. Each has a dedicated adapter inside the `figma-component-wiki` skill; see the `ai-ios-engineering-toolkit:figma-component-wiki` plugin skill for per-mode path layout and push semantics.
|
|
81
81
|
2. Emit progress line: `→ writing wiki {componentName} (mode: {mode})`.
|
|
82
|
-
3. Dispatch to `
|
|
82
|
+
3. Dispatch to the plugin skill `ai-ios-engineering-toolkit:figma-component-wiki` (iOS) or `ai-android-engineering-toolkit:figma-component-wiki` (Android), passing `{componentName, componentPath, figmaConfig}`.
|
|
83
83
|
4. Skill returns `{ writtenPaths[], committedSha?, pushedRemote? }`. Write `writtenPaths` to Phase 7 summary's "Files written" section and push metadata (if any) to "External publishes".
|
|
84
84
|
5. On adapter failure - log the adapter + mode + error, continue Phase 7. Wiki is a non-blocking augmentation; the Jira comment in Step 3 already carries the component summary, so the developer is never left in the dark if wiki misfires.
|
|
85
85
|
|
|
@@ -107,6 +107,6 @@ Claude Code and Copilot CLI MUST:
|
|
|
107
107
|
- Render byte-identical Case A / Case B menus (spacing, brackets, numbering).
|
|
108
108
|
- Respect `prefs.global.wikiScope` array. Legacy `wikiDefault` boolean is migrated on first v5.7 load.
|
|
109
109
|
- Treat adapter failures as non-blocking with the same log shape.
|
|
110
|
-
- Pause the Case A / Case B menu in autopilot - per Phase 7 autopilot exception (
|
|
110
|
+
- Pause the Case A / Case B menu in autopilot - per Phase 7 autopilot exception (`$HOME/.claude/multi-agent-refs/phases/modes.md`). 30-min timeout ends session cleanly; resume re-opens menu.
|
|
111
111
|
|
|
112
112
|
`smoke-wiki-integration.sh` asserts every contract item documented above.
|
|
@@ -71,7 +71,8 @@
|
|
|
71
71
|
"warnPct": 80,
|
|
72
72
|
"onExceed": "warn",
|
|
73
73
|
"pricingModel": "opus"
|
|
74
|
-
}
|
|
74
|
+
},
|
|
75
|
+
"derivedSkillSources": []
|
|
75
76
|
},
|
|
76
77
|
"projects": {},
|
|
77
78
|
"_figmaConfigTemplate": {
|
|
@@ -153,5 +154,20 @@
|
|
|
153
154
|
"complex": "opus",
|
|
154
155
|
"overrides": {}
|
|
155
156
|
}
|
|
157
|
+
},
|
|
158
|
+
"_derivedSkillSourcesTemplate": {
|
|
159
|
+
"_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
|
+
"_example": {
|
|
161
|
+
"label": "Component toolkit skills",
|
|
162
|
+
"localPath": "plugins/<my-plugin>/skills/workflow",
|
|
163
|
+
"upstreamMarketplace": "<installed-marketplace-name>",
|
|
164
|
+
"upstreamPlugin": "<upstream-plugin-name>",
|
|
165
|
+
"upstreamSkills": [
|
|
166
|
+
"<skill-a>",
|
|
167
|
+
"<skill-b>"
|
|
168
|
+
],
|
|
169
|
+
"derivedFromVersion": "0.0.0",
|
|
170
|
+
"upstreamRepoUrl": "https://github.com/<org>/<repo>"
|
|
171
|
+
}
|
|
156
172
|
}
|
|
157
173
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Figma -> Component Generation
|
|
2
2
|
|
|
3
|
-
Skill set
|
|
3
|
+
Skill set lives in the marketplace plugins - `ai-ios-engineering-toolkit` (iOS/SwiftUI) and `ai-android-engineering-toolkit` (Android/Compose). Activated when the task contains a Figma URL and target files are `.swift` (iOS) or `.kt` (Android).
|
|
4
4
|
|
|
5
5
|
### MUST: Figma access - 3-tier fallback chain (BLOCKING, pipeline-wide)
|
|
6
6
|
|
|
@@ -190,7 +190,7 @@ Phase 3.3: figma-iteration-commit → Batch iteration commit (if iterating)
|
|
|
190
190
|
| Wiki | enabled/disabled | `wiki.enabled` |
|
|
191
191
|
| Figma API | MCP / REST fallback | `figma.mcpEnabled` |
|
|
192
192
|
|
|
193
|
-
Provider interfaces are defined inline in the
|
|
193
|
+
Provider interfaces are defined inline in the plugin skill sets - see the `ai-ios-engineering-toolkit` and `ai-android-engineering-toolkit` marketplace plugins.
|
|
194
194
|
|
|
195
195
|
### Optional Features (graceful skip when disabled)
|
|
196
196
|
|
|
@@ -613,40 +613,6 @@
|
|
|
613
613
|
"default": true,
|
|
614
614
|
"description": "When the Wiki channel produces component wiki content AND a Jira issue is linked (`state.jiraId` set), also post a humanizer-passed summary of the wiki content as a Jira comment so QA + PMs see the component docs inline. Independent of `reportChannels.jira` (which controls whether the main Jira comment runs). Set `false` to suppress only the wiki-summary comment."
|
|
615
615
|
},
|
|
616
|
-
"figmaSource": {
|
|
617
|
-
"type": [
|
|
618
|
-
"object",
|
|
619
|
-
"null"
|
|
620
|
-
],
|
|
621
|
-
"additionalProperties": false,
|
|
622
|
-
"description": "Upstream figma-to-component source for incremental sync (WS-9). Set manually by users who maintain a separate source project and want `/multi-agent:sync` to keep `pipeline/skills/figma-ios/` in step. Null = no sync, import was one-shot.",
|
|
623
|
-
"properties": {
|
|
624
|
-
"path": {
|
|
625
|
-
"type": "string",
|
|
626
|
-
"description": "Absolute path to the source project root (expects `.instructions/figma/` and `.claude/skills/` subtrees)."
|
|
627
|
-
},
|
|
628
|
-
"branch": {
|
|
629
|
-
"type": "string",
|
|
630
|
-
"default": "develop",
|
|
631
|
-
"description": "Source branch to pull from."
|
|
632
|
-
},
|
|
633
|
-
"lastSyncedAt": {
|
|
634
|
-
"type": [
|
|
635
|
-
"string",
|
|
636
|
-
"null"
|
|
637
|
-
],
|
|
638
|
-
"format": "date-time",
|
|
639
|
-
"description": "ISO timestamp of the most recent successful sync."
|
|
640
|
-
},
|
|
641
|
-
"lastCommit": {
|
|
642
|
-
"type": [
|
|
643
|
-
"string",
|
|
644
|
-
"null"
|
|
645
|
-
],
|
|
646
|
-
"description": "Source commit SHA captured at the most recent successful sync. Used as the floor for incremental diff."
|
|
647
|
-
}
|
|
648
|
-
}
|
|
649
|
-
},
|
|
650
616
|
"promptLanguage": {
|
|
651
617
|
"type": "string",
|
|
652
618
|
"enum": [
|
|
@@ -15,7 +15,7 @@ Validate contracts. Each emits `══ <name> smoke: N passed, M failed ══`
|
|
|
15
15
|
- `smoke-figma-cross-cli-inventory.sh` - figma skill cross-CLI source-tree parity (39 assertions)
|
|
16
16
|
|
|
17
17
|
### Figma pipeline (see `pipeline/scripts/README-figma-smokes.md` for the full index)
|
|
18
|
-
- `smoke-figma-
|
|
18
|
+
- `smoke-figma-config-schema.sh`, `smoke-figma-dispatch.sh`
|
|
19
19
|
|
|
20
20
|
### Phase contracts
|
|
21
21
|
- `smoke-phase-0-multi-repo.sh` - Phase 0 multi-repo mode fetch + worktree atomicity
|
|
@@ -78,8 +78,6 @@ Shell scripts invoked during pipeline execution.
|
|
|
78
78
|
- `search-logs.sh` - backs `/multi-agent:search`
|
|
79
79
|
- `scan-skills.sh` - backs `/multi-agent:scan`
|
|
80
80
|
- `benchmark-phase-0.sh` - Phase 0 perf harness
|
|
81
|
-
- `sync-figma-source.sh` - WS-9 source sync (figma)
|
|
82
|
-
- `import-figma-skills.sh` - developer-only import harness (not run at runtime)
|
|
83
81
|
- `github-ssh-setup.sh` - first-run SSH key setup helper
|
|
84
82
|
- `sync-parity-check.sh` - manual parity verification helper
|
|
85
83
|
|
|
@@ -36,7 +36,7 @@ const EXTERNAL = join(PIPE_ROOT, 'pipeline/skills/shared/external');
|
|
|
36
36
|
const DRY = args.includes('--dry-run');
|
|
37
37
|
|
|
38
38
|
const COMMON_PLUGIN = 'ai-common-engineering-toolkit';
|
|
39
|
-
const COMMON_SKILLS = ['accessibility-compliance-accessibility-audit', 'firebase', 'humanizer', 'council', 'search-first', 'agent-introspection-debugging'];
|
|
39
|
+
const COMMON_SKILLS = ['accessibility-compliance-accessibility-audit', 'firebase', 'humanizer', 'council', 'search-first', 'agent-introspection-debugging', 'skill-creator', 'backlog'];
|
|
40
40
|
|
|
41
41
|
// Apple/Xcode-only skills that match no stack pattern → iOS plugin only.
|
|
42
42
|
const APPLE_ONLY = [
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
.claude/CLAUDE.md 1
|
|
2
2
|
.claude/agents 8
|
|
3
|
-
.claude/commands
|
|
3
|
+
.claude/commands 42
|
|
4
4
|
.claude/lib 24
|
|
5
5
|
.claude/multi-agent-preferences.json 1
|
|
6
|
+
.claude/multi-agent-refs 50
|
|
6
7
|
.claude/rules 12
|
|
7
8
|
.claude/schemas 23
|
|
8
|
-
.claude/scripts
|
|
9
|
+
.claude/scripts 177
|
|
9
10
|
.claude/settings.json 1
|
|
10
|
-
.claude/skills
|
|
11
|
+
.claude/skills 428
|
|
11
12
|
.copilot/agents 8
|
|
12
13
|
.copilot/copilot-instructions.md 1
|
|
13
14
|
.copilot/lib 24
|
|
14
15
|
.copilot/schemas 23
|
|
15
|
-
.copilot/scripts
|
|
16
|
-
.copilot/skills
|
|
16
|
+
.copilot/scripts 177
|
|
17
|
+
.copilot/skills 465
|
|
@@ -97,7 +97,7 @@ const skipNote = skippedIds.length > 0
|
|
|
97
97
|
? `${modeLabel} mode does NOT TaskCreate phases ${skippedIds.join("/")} - those are not part of the ${modeLabel} phase set (\`${spec.phases.join(" ")}\`). Only register tiles for the active set.`
|
|
98
98
|
: `${modeLabel} mode TaskCreates all 8 phases (no phase is skipped).`;
|
|
99
99
|
|
|
100
|
-
const orderingNote = `**All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For ${modeLabel} that means: ${phaseSequence}. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in
|
|
100
|
+
const orderingNote = `**All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For ${modeLabel} that means: ${phaseSequence}. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in \`$HOME/.claude/multi-agent-refs/tracker-contract.md\` section "TaskCreate ordering (strict)".`;
|
|
101
101
|
|
|
102
102
|
const localCaveat = spec.local
|
|
103
103
|
? `\n> **Local mode:** no worktree is created, work happens on the current branch. Phase 0 Init still calls \`init\` - the \`--local\` flag is stored in tracker-state.json, and \`:resume\` restores the correct CWD.\n`
|
|
@@ -109,7 +109,7 @@ const banner = spec.autopilot
|
|
|
109
109
|
|
|
110
110
|
const out = `## Required: Phase Tracker Contract
|
|
111
111
|
|
|
112
|
-
**The phase tracker is mandatory** - the agent cannot skip it. Full spec: [
|
|
112
|
+
**The phase tracker is mandatory** - the agent cannot skip it. Full spec: [\`$HOME/.claude/multi-agent-refs/tracker-contract.md\`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
|
|
113
113
|
${banner}${localCaveat}
|
|
114
114
|
Two channels run in parallel at every phase boundary:
|
|
115
115
|
|
|
@@ -135,7 +135,7 @@ bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
|
135
135
|
|
|
136
136
|
In Claude Code the agent MUST also drive the native TaskList widget so the user sees a sticky phase tile stack - this is the only progress signal Claude Code surfaces. Skipping these calls is the #1 source of "I don't see any phases" complaints.
|
|
137
137
|
|
|
138
|
-
**TaskCreate ordering (strict)**: All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks (e.g. \`1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐\`) even when the underlying state is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN - register the tile in order, then flip status via TaskUpdate when the phase actually short-circuits. Full contract in
|
|
138
|
+
**TaskCreate ordering (strict)**: All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks (e.g. \`1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐\`) even when the underlying state is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN - register the tile in order, then flip status via TaskUpdate when the phase actually short-circuits. Full contract in \`$HOME/.claude/multi-agent-refs/tracker-contract.md\` section "TaskCreate ordering (strict)".
|
|
139
139
|
|
|
140
140
|
\`\`\`text
|
|
141
141
|
# Phase 0 startup - register one tile per phase (0..N), capture the taskId, persist it:
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
# Localization:
|
|
22
22
|
# PHASE_LANG=en (default) | tr - when set to tr, canonical labels resolve to
|
|
23
23
|
# Turkish. The `auto` sentinel in place of [name] triggers a table lookup.
|
|
24
|
-
# Canonical label set mirrors pipeline/
|
|
24
|
+
# Canonical label set mirrors pipeline/multi-agent-refs/phases.md.
|
|
25
25
|
#
|
|
26
26
|
# Output is colored when stdout is a TTY (TERM != dumb). Plain otherwise so
|
|
27
27
|
# logs and CI artifacts stay readable. Always written to stdout - log
|
|
@@ -32,7 +32,7 @@ set -uo pipefail
|
|
|
32
32
|
PHASE_LANG="${PHASE_LANG:-en}"
|
|
33
33
|
|
|
34
34
|
# Canonical phase label table. Keep synced with
|
|
35
|
-
# pipeline/
|
|
35
|
+
# pipeline/multi-agent-refs/phases.md and the table in
|
|
36
36
|
# pipeline/skills/shared/multi-agent/SKILL.md.
|
|
37
37
|
phase_label() {
|
|
38
38
|
local phase="$1" lang="${2:-en}"
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @file review-scope.mjs - v11.3.0
|
|
4
|
+
*
|
|
5
|
+
* Diff-complexity gate for Phase 4 Stage 2. On trivial diffs, every reviewer
|
|
6
|
+
* model agrees and the 2nd/3rd model + triage cost is paid for nothing (a
|
|
7
|
+
* recurring practitioner complaint about multi-model review). This decides how
|
|
8
|
+
* many reviewers to dispatch from the deterministic diff-risk report - no LLM.
|
|
9
|
+
*
|
|
10
|
+
* Pure function of the diff-risk JSON (read on stdin or --file). A diff is
|
|
11
|
+
* "trivial" (→ single reviewer) only when ALL hold:
|
|
12
|
+
* - total churn (loc_added + loc_removed) <= --loc-floor (default 20)
|
|
13
|
+
* - totals.max_score < --risk-floor (default 3.0)
|
|
14
|
+
* - NO file carries a high-stakes signal: security_path, migration,
|
|
15
|
+
* public_api, no_test_change, test_lines_removed
|
|
16
|
+
* Otherwise → full (the CLI-aware set: 2 on Claude Code, 3 on Copilot CLI).
|
|
17
|
+
*
|
|
18
|
+
* Conservative by design: any doubt → full review. Skipping reviewers trades
|
|
19
|
+
* coverage for cost, so the bar for "trivial" is deliberately high.
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
* node diff-risk-score.mjs --base B --head H | node review-scope.mjs
|
|
23
|
+
* node test-review-scope: node review-scope.mjs --file risk.json --loc-floor 20 --risk-floor 3.0
|
|
24
|
+
*
|
|
25
|
+
* Output (stdout, JSON): { scope: "single"|"full", reason, churn, maxScore, blockers }
|
|
26
|
+
* Exit 0 always. Invalid/empty input → fail SAFE to "full" (never under-review).
|
|
27
|
+
*/
|
|
28
|
+
import { readFileSync } from "node:fs";
|
|
29
|
+
|
|
30
|
+
const args = process.argv.slice(2);
|
|
31
|
+
const num = (flag, dflt) => {
|
|
32
|
+
const i = args.indexOf(flag);
|
|
33
|
+
return i !== -1 && args[i + 1] != null ? Number(args[i + 1]) : dflt;
|
|
34
|
+
};
|
|
35
|
+
const LOC_FLOOR = num("--loc-floor", 20);
|
|
36
|
+
const RISK_FLOOR = num("--risk-floor", 3.0);
|
|
37
|
+
const fileFlag = args.indexOf("--file");
|
|
38
|
+
|
|
39
|
+
const HIGH_STAKES = new Set([
|
|
40
|
+
"security_path",
|
|
41
|
+
"migration",
|
|
42
|
+
"public_api",
|
|
43
|
+
"no_test_change",
|
|
44
|
+
"test_lines_removed",
|
|
45
|
+
]);
|
|
46
|
+
|
|
47
|
+
function readInput() {
|
|
48
|
+
try {
|
|
49
|
+
return fileFlag !== -1 && args[fileFlag + 1]
|
|
50
|
+
? readFileSync(args[fileFlag + 1], "utf8")
|
|
51
|
+
: readFileSync(0, "utf8");
|
|
52
|
+
} catch {
|
|
53
|
+
return "";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function emit(o) {
|
|
58
|
+
process.stdout.write(JSON.stringify(o));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function main() {
|
|
62
|
+
let report;
|
|
63
|
+
try {
|
|
64
|
+
report = JSON.parse(readInput());
|
|
65
|
+
} catch {
|
|
66
|
+
emit({ scope: "full", reason: "no-risk-data-fail-safe", churn: null, maxScore: null, blockers: [] });
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const t = report?.totals || {};
|
|
71
|
+
const churn = (t.loc_added ?? 0) + (t.loc_removed ?? 0);
|
|
72
|
+
const maxScore = t.max_score ?? 0;
|
|
73
|
+
const files = Array.isArray(report?.files) ? report.files : [];
|
|
74
|
+
|
|
75
|
+
const blockers = [];
|
|
76
|
+
for (const f of files) {
|
|
77
|
+
for (const s of f.signals || []) {
|
|
78
|
+
if (HIGH_STAKES.has(s.name)) blockers.push({ file: f.file, signal: s.name });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const trivial = churn <= LOC_FLOOR && maxScore < RISK_FLOOR && blockers.length === 0;
|
|
83
|
+
const reason = trivial
|
|
84
|
+
? `trivial: churn ${churn}<=${LOC_FLOOR}, maxScore ${maxScore}<${RISK_FLOOR}, no high-stakes signals`
|
|
85
|
+
: blockers.length
|
|
86
|
+
? `high-stakes signal(s): ${[...new Set(blockers.map((b) => b.signal))].join(", ")}`
|
|
87
|
+
: churn > LOC_FLOOR
|
|
88
|
+
? `churn ${churn} > ${LOC_FLOOR}`
|
|
89
|
+
: `maxScore ${maxScore} >= ${RISK_FLOOR}`;
|
|
90
|
+
|
|
91
|
+
emit({ scope: trivial ? "single" : "full", reason, churn, maxScore, blockers });
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
main();
|
|
@@ -31,8 +31,8 @@ add "$ROOT/install/templates/claude-hooks.json"
|
|
|
31
31
|
add "$ROOT/install/templates/copilot-instructions.md"
|
|
32
32
|
add "$ROOT/pipeline/preferences-template.json"
|
|
33
33
|
for f in "$ROOT"/pipeline/agents/*.md; do add "$f"; done
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
# (figma component skills + their scripts now live in the ai-*-engineering-toolkit
|
|
35
|
+
# marketplace plugin, not in this repo, so there is nothing figma to scan here.)
|
|
36
36
|
add "$ROOT/pipeline/scripts/agent-guard.sh"
|
|
37
37
|
add "$ROOT/pipeline/scripts/pre-commit-check.sh"
|
|
38
38
|
|
|
@@ -20,7 +20,7 @@ RENDERER="$ROOT/pipeline/scripts/render-agent-log-cost.sh"
|
|
|
20
20
|
TRACKER="$ROOT/pipeline/scripts/phase-tracker.sh"
|
|
21
21
|
LOG_METRIC="$ROOT/pipeline/scripts/log-metric.sh"
|
|
22
22
|
TABLE="$ROOT/pipeline/scripts/cost-table.json"
|
|
23
|
-
LOG_FORMAT_DOC="$ROOT/pipeline/
|
|
23
|
+
LOG_FORMAT_DOC="$ROOT/pipeline/multi-agent-refs/phases/log-format.md"
|
|
24
24
|
|
|
25
25
|
pass=0
|
|
26
26
|
fail=0
|
|
@@ -15,8 +15,8 @@ set -euo pipefail
|
|
|
15
15
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
16
16
|
AGENTS_DIR="$ROOT/pipeline/agents"
|
|
17
17
|
ORCH_SKILL="$ROOT/pipeline/skills/shared/core/multi-agent/SKILL.md"
|
|
18
|
-
ORCH_CMD="$ROOT/pipeline/commands/multi-agent.md"
|
|
19
|
-
PHASE4="$ROOT/pipeline/
|
|
18
|
+
ORCH_CMD="$ROOT/pipeline/commands/multi-agent/SKILL.md"
|
|
19
|
+
PHASE4="$ROOT/pipeline/multi-agent-refs/phases/phase-4-review.md"
|
|
20
20
|
|
|
21
21
|
pass=0
|
|
22
22
|
fail=0
|
|
@@ -66,9 +66,9 @@ fi
|
|
|
66
66
|
|
|
67
67
|
# --- 4b: orchestrator command file references ---
|
|
68
68
|
if grep -q 'preferredModel' "$ORCH_CMD"; then
|
|
69
|
-
record_pass "commands/multi-agent.md references preferredModel"
|
|
69
|
+
record_pass "commands/multi-agent/SKILL.md references preferredModel"
|
|
70
70
|
else
|
|
71
|
-
record_fail "commands/multi-agent.md missing preferredModel reference"
|
|
71
|
+
record_fail "commands/multi-agent/SKILL.md missing preferredModel reference"
|
|
72
72
|
fi
|
|
73
73
|
|
|
74
74
|
# --- 5: Phase 4 review doc references override ---
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
set -uo pipefail
|
|
9
9
|
|
|
10
10
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
11
|
-
DOC="$ROOT/pipeline/
|
|
12
|
-
MODES="$ROOT/pipeline/
|
|
11
|
+
DOC="$ROOT/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md"
|
|
12
|
+
MODES="$ROOT/pipeline/multi-agent-refs/phases/modes.md"
|
|
13
13
|
|
|
14
14
|
PASS=0; FAIL=0
|
|
15
15
|
pass() { PASS=$((PASS+1)); echo " ✓ $1"; }
|
|
@@ -13,8 +13,8 @@ set -euo pipefail
|
|
|
13
13
|
|
|
14
14
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
15
15
|
ROOT="$(cd "$HERE/../.." && pwd)"
|
|
16
|
-
CHANNELS="$ROOT/pipeline/commands/multi-agent/channels.md"
|
|
17
|
-
PHASE7="$ROOT/pipeline/
|
|
16
|
+
CHANNELS="$ROOT/pipeline/commands/multi-agent/channels/SKILL.md"
|
|
17
|
+
PHASE7="$ROOT/pipeline/multi-agent-refs/phases/phase-7-report.md"
|
|
18
18
|
|
|
19
19
|
PASS=0
|
|
20
20
|
FAIL=0
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
set -uo pipefail
|
|
19
19
|
|
|
20
20
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
21
|
-
CLAUDE_CMD="$ROOT/pipeline/commands/multi-agent/channels.md"
|
|
21
|
+
CLAUDE_CMD="$ROOT/pipeline/commands/multi-agent/channels/SKILL.md"
|
|
22
22
|
COPILOT_SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-channels/SKILL.md"
|
|
23
|
-
ENRICH_CMD="$ROOT/pipeline/commands/multi-agent/enrich.md"
|
|
23
|
+
ENRICH_CMD="$ROOT/pipeline/commands/multi-agent/enrich/SKILL.md"
|
|
24
24
|
ENRICH_SKILL_DIR="$ROOT/pipeline/skills/shared/core/multi-agent-enrich"
|
|
25
|
-
PHASE7="$ROOT/pipeline/
|
|
26
|
-
MODES="$ROOT/pipeline/
|
|
27
|
-
WIKI_CAPTURE="$ROOT/pipeline/
|
|
25
|
+
PHASE7="$ROOT/pipeline/multi-agent-refs/phases/phase-7-report.md"
|
|
26
|
+
MODES="$ROOT/pipeline/multi-agent-refs/phases/modes.md"
|
|
27
|
+
WIKI_CAPTURE="$ROOT/pipeline/multi-agent-refs/wiki-capture.md"
|
|
28
28
|
SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
|
|
29
29
|
MIGRATE="$ROOT/pipeline/scripts/migrate-prefs.mjs"
|
|
30
30
|
TEMPLATE="$ROOT/pipeline/preferences-template.json"
|
|
@@ -24,7 +24,7 @@ ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
|
24
24
|
AGENT="$ROOT/pipeline/agents/task-clarifier.md"
|
|
25
25
|
SCHEMA="$ROOT/pipeline/schemas/clarify-output.schema.json"
|
|
26
26
|
PREFS_SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
|
|
27
|
-
PHASE_DOC="$ROOT/pipeline/
|
|
27
|
+
PHASE_DOC="$ROOT/pipeline/multi-agent-refs/phases/phase-0-init.md"
|
|
28
28
|
|
|
29
29
|
pass=0
|
|
30
30
|
fail=0
|
|
@@ -36,7 +36,7 @@ fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
|
|
|
36
36
|
# Underscore-prefixed files (e.g. _account-picker.md) are internal fragments
|
|
37
37
|
# loaded by other commands via Read; they're not invocable slash commands and
|
|
38
38
|
# intentionally have no matching skill.
|
|
39
|
-
CMDS=$(find "$CMDS_DIR" -
|
|
39
|
+
CMDS=$(find "$CMDS_DIR" -mindepth 2 -maxdepth 2 -name "SKILL.md" -exec dirname {} \; | xargs -n1 basename | sort)
|
|
40
40
|
|
|
41
41
|
# help.md in commands maps to multi-agent-help skill; the main "multi-agent"
|
|
42
42
|
# skill covers the behavior documented across multiple command files, so we
|
|
@@ -67,7 +67,7 @@ echo "→ Checking that every multi-agent-* skill has a corresponding command"
|
|
|
67
67
|
SKILLS=$(find "$SKILLS_DIR" -maxdepth 1 -type d -name "multi-agent-*" -exec basename {} \; | sed 's/^multi-agent-//' | sort)
|
|
68
68
|
|
|
69
69
|
for skill in $SKILLS; do
|
|
70
|
-
cmd_file="$CMDS_DIR/$skill.md"
|
|
70
|
+
cmd_file="$CMDS_DIR/$skill/SKILL.md"
|
|
71
71
|
# A few skills are Copilot-CLI-style conveniences without a Claude slash equivalent:
|
|
72
72
|
case "$skill" in
|
|
73
73
|
autopilot | dev-autopilot) # dash-style shortcut skills, the flags are documented in help.md
|
|
@@ -76,7 +76,7 @@ for skill in $SKILLS; do
|
|
|
76
76
|
;;
|
|
77
77
|
esac
|
|
78
78
|
if [ -f "$cmd_file" ]; then
|
|
79
|
-
pass "skills/shared/multi-agent-$skill/ ↔ commands/multi-agent/$skill.md"
|
|
79
|
+
pass "skills/shared/multi-agent-$skill/ ↔ commands/multi-agent/$skill/SKILL.md"
|
|
80
80
|
else
|
|
81
81
|
fail "skills/shared/multi-agent-$skill/ has no matching command"
|
|
82
82
|
fi
|
|
@@ -24,9 +24,9 @@ APPLE_SKILL="$ROOT/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md
|
|
|
24
24
|
GOOGLE_SKILL="$ROOT/pipeline/skills/shared/core/google-play-compliance/SKILL.md"
|
|
25
25
|
SIM_TEST="$ROOT/pipeline/commands/sim-test.md"
|
|
26
26
|
SEC_AUDITOR="$ROOT/pipeline/agents/security-auditor.md"
|
|
27
|
-
REVIEW_CMD="$ROOT/pipeline/commands/multi-agent/review.md"
|
|
27
|
+
REVIEW_CMD="$ROOT/pipeline/commands/multi-agent/review/SKILL.md"
|
|
28
28
|
REVIEW_SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-review/SKILL.md"
|
|
29
|
-
CHANNELS_CMD="$ROOT/pipeline/commands/multi-agent/channels.md"
|
|
29
|
+
CHANNELS_CMD="$ROOT/pipeline/commands/multi-agent/channels/SKILL.md"
|
|
30
30
|
CHANNELS_SKILL="$ROOT/pipeline/skills/shared/core/multi-agent-channels/SKILL.md"
|
|
31
31
|
|
|
32
32
|
PASS=0
|
|
@@ -18,7 +18,7 @@ ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
|
18
18
|
RENDERER="$ROOT/pipeline/scripts/render-cost-summary.sh"
|
|
19
19
|
TABLE="$ROOT/pipeline/scripts/cost-table.json"
|
|
20
20
|
SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
|
|
21
|
-
CHANNELS_DOC="$ROOT/pipeline/commands/multi-agent/channels.md"
|
|
21
|
+
CHANNELS_DOC="$ROOT/pipeline/commands/multi-agent/channels/SKILL.md"
|
|
22
22
|
|
|
23
23
|
pass=0
|
|
24
24
|
fail=0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# smoke-cross-cli-behavior.sh - enforces the cross-CLI parity invariant
|
|
3
|
-
# defined in ~/.claude/
|
|
3
|
+
# defined in ~/.claude/multi-agent-refs/cross-cli-contract.md.
|
|
4
4
|
#
|
|
5
5
|
# This is a behavioral complement to smoke-sync-parity.sh (which tests the
|
|
6
6
|
# parity checker itself). This script asserts the actual Claude Code and
|
|
@@ -41,7 +41,10 @@ fi
|
|
|
41
41
|
# Underscore-prefixed Claude files (e.g. _account-picker.md) are internal
|
|
42
42
|
# fragments lazy-loaded by other commands; they're not invocable on either CLI
|
|
43
43
|
# and intentionally have no Copilot skill counterpart.
|
|
44
|
-
|
|
44
|
+
# Also exclude local-only alias wrappers (frontmatter `local-only: true`) - personal
|
|
45
|
+
# aliases to private marketplace-plugin skills, intentionally Claude-only, no Copilot peer.
|
|
46
|
+
CLAUDE_LIST=$(find "$CLAUDE_CMDS" -mindepth 2 -maxdepth 2 -name "SKILL.md" 2>/dev/null \
|
|
47
|
+
| while IFS= read -r f; do grep -q "^local-only: true" "$f" || basename "$(dirname "$f")"; done | sort)
|
|
45
48
|
COPILOT_LIST=$(find "$COPILOT_SKILLS" -maxdepth 1 -type d -name "multi-agent-*" -exec basename {} \; 2>/dev/null | sed 's/^multi-agent-//' | sort)
|
|
46
49
|
|
|
47
50
|
if [ "$CLAUDE_LIST" = "$COPILOT_LIST" ]; then
|
|
@@ -69,7 +72,7 @@ DEPRECATED=(
|
|
|
69
72
|
)
|
|
70
73
|
for p in "${DEPRECATED[@]}"; do
|
|
71
74
|
# grep -l returns filenames; empty = no matches
|
|
72
|
-
FOUND=$(grep -l -F -- "$p" "$CLAUDE_CMDS"
|
|
75
|
+
FOUND=$(grep -l -F -- "$p" $(find "$CLAUDE_CMDS" -name SKILL.md 2>/dev/null) 2>/dev/null || true)
|
|
73
76
|
if [ -z "$FOUND" ]; then
|
|
74
77
|
pass "no '$p' in Claude commands"
|
|
75
78
|
else
|
|
@@ -85,7 +88,7 @@ PERSONAL_HARDCODES=(
|
|
|
85
88
|
"${USER}_tkgithub"
|
|
86
89
|
)
|
|
87
90
|
for p in "${PERSONAL_HARDCODES[@]}"; do
|
|
88
|
-
FOUND=$(grep -l -F -- "$p" "$CLAUDE_CMDS"
|
|
91
|
+
FOUND=$(grep -l -F -- "$p" $(find "$CLAUDE_CMDS" -name SKILL.md 2>/dev/null) 2>/dev/null || true)
|
|
89
92
|
if [ -z "$FOUND" ]; then
|
|
90
93
|
pass "no '$p' leaked into Claude commands"
|
|
91
94
|
else
|
|
@@ -97,13 +100,13 @@ done
|
|
|
97
100
|
echo ""
|
|
98
101
|
echo "→ 4. Canonical placeholders present (sanity)"
|
|
99
102
|
# These MUST exist (regressions would mean someone undid a drift fix)
|
|
100
|
-
if grep -q -F "{owner}" "$CLAUDE_CMDS/sync.md" 2>/dev/null; then
|
|
103
|
+
if grep -q -F "{owner}" "$CLAUDE_CMDS/sync/SKILL.md" 2>/dev/null; then
|
|
101
104
|
pass "sync.md uses canonical '{owner}'"
|
|
102
105
|
else
|
|
103
106
|
fail "sync.md missing '{owner}' - drift fix may have regressed"
|
|
104
107
|
fi
|
|
105
108
|
|
|
106
|
-
if grep -q -F "{website-host}" "$CLAUDE_CMDS/sync.md" 2>/dev/null; then
|
|
109
|
+
if grep -q -F "{website-host}" "$CLAUDE_CMDS/sync/SKILL.md" 2>/dev/null; then
|
|
107
110
|
pass "sync.md uses canonical '{website-host}'"
|
|
108
111
|
else
|
|
109
112
|
fail "sync.md missing '{website-host}' - drift fix may have regressed"
|
|
@@ -114,7 +117,7 @@ echo ""
|
|
|
114
117
|
echo "→ 5. Canonical project-name vocabulary in log.md"
|
|
115
118
|
CANONICAL_PROJECTS=("my-ui-components" "my-figma-app" "my-ios-app")
|
|
116
119
|
for c in "${CANONICAL_PROJECTS[@]}"; do
|
|
117
|
-
if grep -q -F -- "$c" "$CLAUDE_CMDS/log.md" 2>/dev/null; then
|
|
120
|
+
if grep -q -F -- "$c" "$CLAUDE_CMDS/log/SKILL.md" 2>/dev/null; then
|
|
118
121
|
pass "log.md references '$c'"
|
|
119
122
|
else
|
|
120
123
|
fail "log.md missing canonical '$c'"
|
|
@@ -124,7 +127,7 @@ done
|
|
|
124
127
|
# ──────────────────────────────────────────────────────────────────────────
|
|
125
128
|
echo ""
|
|
126
129
|
echo "→ 6. Contract doc exists (required source of truth)"
|
|
127
|
-
CONTRACT="$
|
|
130
|
+
CONTRACT="$HOME/.claude/multi-agent-refs/cross-cli-contract.md"
|
|
128
131
|
if [ -f "$CONTRACT" ]; then
|
|
129
132
|
SIZE=$(wc -l < "$CONTRACT" | tr -d ' ')
|
|
130
133
|
if [ "$SIZE" -ge 100 ]; then
|
|
@@ -138,40 +141,11 @@ fi
|
|
|
138
141
|
|
|
139
142
|
# ──────────────────────────────────────────────────────────────────────────
|
|
140
143
|
echo ""
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
for tree in "${FIGMA_TREES[@]}"; do
|
|
147
|
-
claude_tree="$CLAUDE_SKILLS/$tree"
|
|
148
|
-
claude_note=""
|
|
149
|
-
# /multi-agent:stack parks inactive-platform trees under skills-inactive/.
|
|
150
|
-
# A parked tree is still deployed - count it from its parked location so
|
|
151
|
-
# iOS-stack machines don't fail on the android tree (and vice versa).
|
|
152
|
-
if [ ! -d "$claude_tree" ] && [ -d "$HOME/.claude/skills-inactive/$tree" ]; then
|
|
153
|
-
claude_tree="$HOME/.claude/skills-inactive/$tree"
|
|
154
|
-
claude_note=" (claude: parked by /multi-agent:stack)"
|
|
155
|
-
fi
|
|
156
|
-
copilot_tree="$COPILOT_SKILLS/$tree"
|
|
157
|
-
if [ -d "$claude_tree" ] && [ -d "$copilot_tree" ]; then
|
|
158
|
-
claude_count=$(find "$claude_tree" -maxdepth 1 -mindepth 1 -type d | wc -l | tr -d ' ')
|
|
159
|
-
copilot_count=$(find "$copilot_tree" -maxdepth 1 -mindepth 1 -type d | wc -l | tr -d ' ')
|
|
160
|
-
if [ "$claude_count" -eq "$copilot_count" ]; then
|
|
161
|
-
pass "$tree deployed to both CLIs ($claude_count skills each)$claude_note"
|
|
162
|
-
else
|
|
163
|
-
fail "$tree count mismatch (claude=$claude_count copilot=$copilot_count)$claude_note"
|
|
164
|
-
fi
|
|
165
|
-
elif [ -d "$claude_tree" ] || [ -d "$copilot_tree" ]; then
|
|
166
|
-
fail "$tree deployed to only ONE CLI"
|
|
167
|
-
else
|
|
168
|
-
echo " (tree not installed on either CLI - run \`node install.js --all\` to deploy)"
|
|
169
|
-
fi
|
|
170
|
-
done
|
|
171
|
-
|
|
172
|
-
# ──────────────────────────────────────────────────────────────────────────
|
|
173
|
-
echo ""
|
|
174
|
-
echo "→ 8. Agent personas deployed to both CLIs"
|
|
144
|
+
# Figma/component skill trees no longer ship in the pipeline (v11.2.0+): they
|
|
145
|
+
# live in the marketplace component plugins (ai-ios-engineering-toolkit /
|
|
146
|
+
# multi-agent-plugins), which each CLI loads through its own plugin channel.
|
|
147
|
+
# The pipeline therefore has no figma tree to deploy or parity-check here.
|
|
148
|
+
echo "→ 7. Agent personas deployed to both CLIs"
|
|
175
149
|
|
|
176
150
|
CLAUDE_AGENTS="$HOME/.claude/agents"
|
|
177
151
|
COPILOT_AGENTS="$HOME/.copilot/agents"
|
|
@@ -207,7 +181,7 @@ fi
|
|
|
207
181
|
# drift across the phase doc, the schema, and the consensus block.
|
|
208
182
|
echo "→ reviewer-count contract (Claude=2, Copilot=3)"
|
|
209
183
|
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
210
|
-
P4="$REPO_ROOT/pipeline/
|
|
184
|
+
P4="$REPO_ROOT/pipeline/multi-agent-refs/phases/phase-4-review.md"
|
|
211
185
|
REVSCHEMA="$REPO_ROOT/pipeline/schemas/reviewer-output.schema.json"
|
|
212
186
|
TRSCHEMA="$REPO_ROOT/pipeline/schemas/triage-output.schema.json"
|
|
213
187
|
if grep -qiE "Claude Code (dispatches|=|:) ?2|2-model" "$P4" && grep -qiE "Copilot CLI (dispatches|=|:) ?3|3-model" "$P4"; then
|
|
@@ -16,7 +16,7 @@ set -euo pipefail
|
|
|
16
16
|
|
|
17
17
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
18
18
|
AGENT="$ROOT/pipeline/agents/dev-critic.md"
|
|
19
|
-
PHASE_DOC="$ROOT/pipeline/
|
|
19
|
+
PHASE_DOC="$ROOT/pipeline/multi-agent-refs/phases/phase-3-dev.md"
|
|
20
20
|
PREFS_SCHEMA="$ROOT/pipeline/schemas/prefs.schema.json"
|
|
21
21
|
CRITIC_SCHEMA="$ROOT/pipeline/schemas/dev-critic-output.schema.json"
|
|
22
22
|
|