@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -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 +39 -17
- package/install/copilot.mjs +22 -16
- 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/lib/credential-store.sh +8 -4
- 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-skills-index.mjs +3 -6
- package/pipeline/scripts/eval-mine-corpus.mjs +187 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/lint-skills.mjs +26 -1
- 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 +17 -6
- package/pipeline/skills/.skill-manifest.json +40 -160
- package/pipeline/skills/.skills-index.json +3 -373
- 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 +3 -44
- 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
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Analyse the project, score it, draft an improvement plan, take approval, develop, then ask whether to sync."
|
|
3
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion, WebFetch
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Multi-Agent Refactor
|
|
7
|
-
|
|
8
|
-
**One command. Analyse → Score → Plan → Approval → Develop → Sync.**
|
|
9
|
-
|
|
10
|
-
Deep-analyses the current project, scores it across 10 categories, drafts every improvement, asks the user for approval, applies them, and asks about sync at the end.
|
|
11
|
-
|
|
12
|
-
**Input**: $ARGUMENTS (optional - area to focus on: "security", "performance", "tests", etc.)
|
|
13
|
-
|
|
14
|
-
## Flow
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
Step 0: RESEARCH Search GitHub + Reddit for competing projects, gather good ideas
|
|
18
|
-
Step 1: SCAN Walk the project structure (files, LOC, dependencies, CI, tests)
|
|
19
|
-
Step 2: ANALYZE Deep analysis across 10 categories
|
|
20
|
-
Step 3: SCORE Each category /10, overall /100
|
|
21
|
-
Step 4: PLAN List every improvement + competitor idea in priority order
|
|
22
|
-
Step 5: ASK "Start the work?" - wait for user approval
|
|
23
|
-
Step 6: IMPLEMENT Apply approved improvements one by one (lint, test, commit)
|
|
24
|
-
Step 7: VERIFY Confirm every test + lint passes
|
|
25
|
-
Step 8: ASK SYNC "Run multi-agent-sync?" - wait for user approval
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Step 0: RESEARCH - competitor analysis
|
|
29
|
-
|
|
30
|
-
Before starting work, scan for similar projects:
|
|
31
|
-
|
|
32
|
-
1. **GitHub Search**: `multi-agent pipeline AI development` + `Claude Code pipeline` + `AI coding agent`
|
|
33
|
-
- find repos with stars:>10
|
|
34
|
-
- read their READMEs
|
|
35
|
-
- extract their distinct features
|
|
36
|
-
2. **Reddit Search**: multi-agent discussions in `r/ClaudeAI`, `r/ChatGPT`, `r/LocalLLaMA`
|
|
37
|
-
3. **For each competitor, record**:
|
|
38
|
-
- distinct features we DO NOT have
|
|
39
|
-
- ideas worth adopting
|
|
40
|
-
- things they do better than us
|
|
41
|
-
- things we do better than them
|
|
42
|
-
4. **Add to the plan**: roll the high-impact + low-effort ideas into the PLAN step (P1 priority)
|
|
43
|
-
|
|
44
|
-
Output format:
|
|
45
|
-
```
|
|
46
|
-
| Source | Idea | Effort | Impact | In plan? |
|
|
47
|
-
|--------|-------|--------|------|--------------|
|
|
48
|
-
| ralph-loop | Symlink distribution | Low | High | Yes |
|
|
49
|
-
| atelier | Persistent Brain | High | Very High | No (roadmap) |
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Step 1: SCAN
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
- file count, LOC (cloc or wc -l)
|
|
56
|
-
- package.json / Package.swift / build.gradle analizi
|
|
57
|
-
- dependency count (runtime vs dev)
|
|
58
|
-
- Is there a CI/CD pipeline? (.github/workflows/, fastlane/, Makefile)
|
|
59
|
-
- Is there test infrastructure? How many tests? Coverage?
|
|
60
|
-
- Is linter/formatter config in place?
|
|
61
|
-
- Do README, LICENSE, SECURITY.md, CHANGELOG.md exist?
|
|
62
|
-
- Git state: branch count, last commit date, tags
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Step 2: ANALYZE - 10 categories
|
|
66
|
-
|
|
67
|
-
| # | Category | What to check |
|
|
68
|
-
|---|----------|-------------------|
|
|
69
|
-
| 1 | **Architecture** | Layer separation, modularity, SOLID, dependency direction |
|
|
70
|
-
| 2 | **Code Quality** | Naming, magic numbers, dead code, complexity, DRY |
|
|
71
|
-
| 3 | **Security** | Hardcoded secrets, input validation, Keychain, ATS, ATT |
|
|
72
|
-
| 4 | **Tests** | Coverage, test pyramid, edge cases, mock/stub quality |
|
|
73
|
-
| 5 | **CI/CD** | Build matrix, lint job, release automation, artifact caching |
|
|
74
|
-
| 6 | **Docs** | README quality, JSDoc / Swift docs, API docs, CHANGELOG |
|
|
75
|
-
| 7 | **Performance** | Bundle size, lazy loading, memory leaks, unnecessary re-renders |
|
|
76
|
-
| 8 | **Accessibility** | a11y labels, tap targets, VoiceOver, Dynamic Type |
|
|
77
|
-
| 9 | **Dependency Management** | Outdated deps, vulnerability scan, lockfile, version pinning |
|
|
78
|
-
| 10 | **DevEx** | Onboarding time, script ergonomics, error messages, debug tooling |
|
|
79
|
-
|
|
80
|
-
## Step 3: SCORE
|
|
81
|
-
|
|
82
|
-
Her kategori 10 uzerinden puanlanir. Output format:
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
+---------------------+-------+
|
|
86
|
-
| Category | Score |
|
|
87
|
-
+---------------------+-------+
|
|
88
|
-
| Architecture | 9/10 |
|
|
89
|
-
| Code Quality | 8/10 |
|
|
90
|
-
| Security | 9/10 |
|
|
91
|
-
| Tests | 7/10 |
|
|
92
|
-
| CI/CD | 8/10 |
|
|
93
|
-
| Docs | 7/10 |
|
|
94
|
-
| Performance | 9/10 |
|
|
95
|
-
| Accessibility | 6/10 |
|
|
96
|
-
| Dependency Mgmt | 8/10 |
|
|
97
|
-
| DevEx | 9/10 |
|
|
98
|
-
+---------------------+-------+
|
|
99
|
-
| TOTAL | 80/100|
|
|
100
|
-
+---------------------+-------+
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Step 4: PLAN
|
|
104
|
-
|
|
105
|
-
List every improvement found:
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
| # | Priority | Category | Improvement | Impact |
|
|
109
|
-
|---|---------|----------|-------------|------|
|
|
110
|
-
| 1 | P0 | Security | Remove hardcoded API key | Critical |
|
|
111
|
-
| 2 | P0 | Tests | Missing edge-case tests | High |
|
|
112
|
-
| 3 | P1 | CI/CD | Add Node matrix | Medium |
|
|
113
|
-
| 4 | P1 | Docs | Functions missing JSDoc | Medium |
|
|
114
|
-
| 5 | P2 | DevEx | npm script naming | Low |
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Priority levels:
|
|
118
|
-
- **P0**: bugs, security holes, broken functionality - MUST fix
|
|
119
|
-
- **P1**: clear quality improvement - should be done
|
|
120
|
-
- **P2**: nice-to-have - if time allows
|
|
121
|
-
|
|
122
|
-
## Step 5: ASK - user approval
|
|
123
|
-
|
|
124
|
-
After showing the plan, ask:
|
|
125
|
-
|
|
126
|
-
> "Found X improvements (P0: N, P1: M, P2: K). Should I start the work?"
|
|
127
|
-
|
|
128
|
-
Options:
|
|
129
|
-
- "Yes, do all"
|
|
130
|
-
- "Only P0"
|
|
131
|
-
- "P0 + P1 only"
|
|
132
|
-
- (the user may pick specific items)
|
|
133
|
-
|
|
134
|
-
**NEVER start the work without approval.**
|
|
135
|
-
|
|
136
|
-
## Step 6: IMPLEMENT
|
|
137
|
-
|
|
138
|
-
Apply the approved improvements one by one:
|
|
139
|
-
|
|
140
|
-
1. For each improvement:
|
|
141
|
-
- apply the change
|
|
142
|
-
- run the relevant tests
|
|
143
|
-
- on success, move to the next
|
|
144
|
-
- On failure, roll back and notify the user
|
|
145
|
-
2. After all changes are done:
|
|
146
|
-
- run the full lint + test suite
|
|
147
|
-
- on success, commit
|
|
148
|
-
|
|
149
|
-
Commit format: `refactor(scope): {short description}`
|
|
150
|
-
|
|
151
|
-
## Step 7: VERIFY
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
# Lint
|
|
155
|
-
npm run lint 2>/dev/null || swift build 2>/dev/null
|
|
156
|
-
|
|
157
|
-
# Test
|
|
158
|
-
npm test 2>/dev/null || swift test 2>/dev/null || xcodebuild test 2>/dev/null
|
|
159
|
-
|
|
160
|
-
# Result
|
|
161
|
-
echo "Lint: PASS/FAIL"
|
|
162
|
-
echo "Test: PASS/FAIL (X/Y passed)"
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
## Step 8: ASK SYNC
|
|
166
|
-
|
|
167
|
-
After every improvement is applied, ask:
|
|
168
|
-
|
|
169
|
-
> "Work is complete. Should I run multi-agent-sync?"
|
|
170
|
-
|
|
171
|
-
Options:
|
|
172
|
-
- "Yes" → run the `/sync` command (full ecosystem sync)
|
|
173
|
-
- "No" → emit a report and stop
|
|
174
|
-
- "Commit + push only" → push the current repo without sync
|
|
175
|
-
|
|
176
|
-
## Focus filter
|
|
177
|
-
|
|
178
|
-
If $ARGUMENTS is set, focus on that category only:
|
|
179
|
-
|
|
180
|
-
| Input | Focus |
|
|
181
|
-
|-------|------|
|
|
182
|
-
| `security` | Security analysis only |
|
|
183
|
-
| `tests` | Test coverage and quality only |
|
|
184
|
-
| `performance` | Performance optimisation only |
|
|
185
|
-
| `docs` | Docs only |
|
|
186
|
-
| `ci` | CI/CD pipeline only |
|
|
187
|
-
| `deps` | Dependency updates only |
|
|
188
|
-
| (empty) | All 10 categories (default) |
|
|
@@ -1,92 +0,0 @@
|
|
|
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 `figma-to-component` skill and relays its subphases 3.0 - 3.8 via the existing phase-tracker contract. Implementation lives in the skill; multi-agent's job is classification, dispatch, and state report.
|
|
4
|
-
|
|
5
|
-
This doc is referenced from `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
|
-
## Orchestrator resolution
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
project.platform → orchestrator skill
|
|
20
|
-
────────────────────────────────────────────────────────────────
|
|
21
|
-
ios → pipeline/skills/figma-ios/figma-to-component/
|
|
22
|
-
android → pipeline/skills/figma-android/figma-to-component/
|
|
23
|
-
web, multi-* → HALT with clear error (no web target)
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
If the chosen skill directory is missing, **halt with a user-visible error**. Do not silently fall back to TDD - a component task ran through the bugfix path would produce wrong artefacts and waste review cycles.
|
|
27
|
-
|
|
28
|
-
## Dispatch call
|
|
29
|
-
|
|
30
|
-
Emit `→ dispatching figma-to-component <componentName>` via the progress contract, then launch a single agent invocation on the orchestrator skill with:
|
|
31
|
-
|
|
32
|
-
- `figmaUrl` - primary positional argument
|
|
33
|
-
- `agentState` - the path to `agent-state.json` so the orchestrator enriches `state.phases["3"].subphases[]`
|
|
34
|
-
- `progressVerbosity` - forced to `verbose` when multi-agent runs in `mode: "autopilot"`; otherwise inherits `prefs.global.settings.progressVerbosity`
|
|
35
|
-
- `mode` - `"dev"` for `--dev` runs; `"full"` otherwise
|
|
36
|
-
|
|
37
|
-
## Subphase contract
|
|
38
|
-
|
|
39
|
-
The orchestrator writes each of its 8 subphases to `state.phases["3"].subphases[]` as it completes, with the shape:
|
|
40
|
-
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"id": "3.4a",
|
|
44
|
-
"name": "4A-Configuration",
|
|
45
|
-
"status": "done",
|
|
46
|
-
"startedAt": "2026-04-16T18:12:02Z",
|
|
47
|
-
"endedAt": "2026-04-16T18:13:47Z",
|
|
48
|
-
"buildStatus": "green",
|
|
49
|
-
"testStatus": "green"
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Multi-agent's `phase-tracker` reads this array without any component-specific code - the tracker UI renders one row per subphase under the Phase 3 row. No new phase-tracker field is required.
|
|
54
|
-
|
|
55
|
-
## Multi-repo report
|
|
56
|
-
|
|
57
|
-
When multi-repo mode is active (`state.projects.length > 1`), the orchestrator reads `state.projects[]` and runs subphases against the correct per-repo worktree:
|
|
58
|
-
|
|
59
|
-
- Tokens, accessibility metadata, testing identifiers, localisation keys → `repos.common`
|
|
60
|
-
- View / Configuration / Modifiers / Preview → `repos.components`
|
|
61
|
-
- Wiki markdown → `repos.wiki` (if `wiki.mode === submodule` or `separate-repo`) or `repos.components/.wiki/components/` (if `wiki.mode === in-repo`)
|
|
62
|
-
|
|
63
|
-
Multi-agent does **not** split the component task into per-repo Phase 3 runs - the orchestrator is aware of the repo graph and sequences writes correctly (e.g. token writes to `common` precede component reads in `components`).
|
|
64
|
-
|
|
65
|
-
## Failure + resume
|
|
66
|
-
|
|
67
|
-
On orchestrator failure (subphase hits a build/test error that can't auto-fix, or hits retry cap):
|
|
68
|
-
|
|
69
|
-
1. The orchestrator persists `{subphase, error, buildLog, testLog}` to `state.phases["3"].errors[]`.
|
|
70
|
-
2. Multi-agent increments `state.phases["3"].retryCount`.
|
|
71
|
-
3. Retry re-enters the orchestrator with `phase-<N>` as the argument (the failed subphase), so the skill resumes instead of restarting.
|
|
72
|
-
4. Hard kill at `retryCount === 3` → surface the errors to the user, halt Phase 3. Do not loop indefinitely.
|
|
73
|
-
|
|
74
|
-
## `--dev` mode behaviour
|
|
75
|
-
|
|
76
|
-
When multi-agent is invoked with `--dev` (fast path: Init → Dev → Commit → Report), the orchestrator receives `mode: "dev"` and is allowed to elide:
|
|
77
|
-
|
|
78
|
-
- Subphase 5C (unit tests) - structural + snapshot are still required
|
|
79
|
-
- Subphase 7 (wiki) - can be deferred; Phase 7 in multi-agent will ask the user whether to run it post-commit
|
|
80
|
-
|
|
81
|
-
Phase 4 reviewer-skipping is **not** Phase 3's concern - Phase 4 decides based on `mode: "dev"` itself.
|
|
82
|
-
|
|
83
|
-
## Cross-CLI parity
|
|
84
|
-
|
|
85
|
-
Both Claude Code and Copilot CLI implementations MUST:
|
|
86
|
-
|
|
87
|
-
- Use the same orchestrator resolution table (ios / android / halt).
|
|
88
|
-
- Emit byte-identical progress lines (`→ dispatching figma-to-component <name>`).
|
|
89
|
-
- Write the same `state.phases["3"].subphases[]` schema.
|
|
90
|
-
- Treat `--dev` the same way (elide 5C + 7 by default, no reviewer skip).
|
|
91
|
-
|
|
92
|
-
`smoke-cross-cli-behavior.sh` asserts this contract.
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# smoke-existing-discovery-gate.sh
|
|
4
|
-
#
|
|
5
|
-
# Asserts the figma-to-component orchestrator has the Phase 1.5 existing-
|
|
6
|
-
# component discovery gate wired in:
|
|
7
|
-
# - phase-1.5-existing-discovery.md exists with the canonical anchors
|
|
8
|
-
# - phase-2-orchestrator ENTRY GATE consults discovery.status
|
|
9
|
-
# - phase-6-code-connect ENTRY GATE skips publish when already mapped
|
|
10
|
-
#
|
|
11
|
-
# This is Defect 10 from the GH1241 stability plan (docs/STABILITY-FIX-PLAN.md).
|
|
12
|
-
|
|
13
|
-
set -euo pipefail
|
|
14
|
-
|
|
15
|
-
SELF_DIR=$(cd "$(dirname "$0")" && pwd)
|
|
16
|
-
PIPELINE_ROOT=$(cd "$SELF_DIR/.." && pwd)
|
|
17
|
-
|
|
18
|
-
cd "$PIPELINE_ROOT"
|
|
19
|
-
|
|
20
|
-
FAIL=0
|
|
21
|
-
|
|
22
|
-
GATE_DOC="skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md"
|
|
23
|
-
PHASE2="skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md"
|
|
24
|
-
PHASE6="skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md"
|
|
25
|
-
|
|
26
|
-
# 1. Phase 1.5 doc exists.
|
|
27
|
-
if [ ! -f "$GATE_DOC" ]; then
|
|
28
|
-
echo "FAIL [smoke-existing-discovery-gate]: $GATE_DOC missing"
|
|
29
|
-
exit 1
|
|
30
|
-
fi
|
|
31
|
-
|
|
32
|
-
# 2. Phase 1.5 contains the four canonical statuses.
|
|
33
|
-
declare -a REQUIRED_STATUSES=(
|
|
34
|
-
"GREENFIELD_OK"
|
|
35
|
-
"ALREADY_MAPPED"
|
|
36
|
-
"EXISTING_SOURCE_NO_CC"
|
|
37
|
-
"GAP_ANALYSIS"
|
|
38
|
-
)
|
|
39
|
-
for st in "${REQUIRED_STATUSES[@]}"; do
|
|
40
|
-
if ! grep -qF "$st" "$GATE_DOC"; then
|
|
41
|
-
echo "FAIL [smoke-existing-discovery-gate]: $GATE_DOC must define status $st"
|
|
42
|
-
FAIL=$((FAIL + 1))
|
|
43
|
-
fi
|
|
44
|
-
done
|
|
45
|
-
|
|
46
|
-
# 3. Phase 1.5 writes to agent-state.discovery.{status,sourcePath,gaps}.
|
|
47
|
-
if ! grep -qE 'discovery.*status|"discovery"' "$GATE_DOC"; then
|
|
48
|
-
echo "FAIL [smoke-existing-discovery-gate]: $GATE_DOC must write to agent-state.discovery"
|
|
49
|
-
FAIL=$((FAIL + 1))
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
# 4. Phase 2 ENTRY GATE consults discovery.status.
|
|
53
|
-
if ! grep -qE "discovery\.status|agent-state\.discovery" "$PHASE2"; then
|
|
54
|
-
echo "FAIL [smoke-existing-discovery-gate]: $PHASE2 ENTRY GATE must consult discovery.status"
|
|
55
|
-
FAIL=$((FAIL + 1))
|
|
56
|
-
fi
|
|
57
|
-
|
|
58
|
-
# 5. Phase 6 ENTRY GATE skips when ALREADY_MAPPED or .figma.swift exists.
|
|
59
|
-
if ! grep -qE "ALREADY_MAPPED|already published|GAP_ANALYSIS" "$PHASE6"; then
|
|
60
|
-
echo "FAIL [smoke-existing-discovery-gate]: $PHASE6 ENTRY GATE must skip when ALREADY_MAPPED / GAP_ANALYSIS"
|
|
61
|
-
FAIL=$((FAIL + 1))
|
|
62
|
-
fi
|
|
63
|
-
|
|
64
|
-
if [ "$FAIL" -gt 0 ]; then
|
|
65
|
-
echo ""
|
|
66
|
-
echo "smoke-existing-discovery-gate: $FAIL violation(s)."
|
|
67
|
-
echo "Defect 10 contract - see docs/STABILITY-FIX-PLAN.md."
|
|
68
|
-
exit 1
|
|
69
|
-
fi
|
|
70
|
-
|
|
71
|
-
echo "smoke-existing-discovery-gate: ok"
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# smoke-figma-android-parity.sh - WS-7 contract.
|
|
3
|
-
#
|
|
4
|
-
# Verifies the Android platform skill tree under pipeline/skills/figma-android/
|
|
5
|
-
# mirrors the iOS peer for every platform-specific skill required by the
|
|
6
|
-
# figma-to-component orchestrator. Also checks Android-specific details
|
|
7
|
-
# (Kotlin file names, Compose tooling, Paparazzi/Roborazzi references).
|
|
8
|
-
|
|
9
|
-
set -euo pipefail
|
|
10
|
-
|
|
11
|
-
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
12
|
-
ROOT="$(cd "$HERE/../.." && pwd)"
|
|
13
|
-
IOS_DIR="$ROOT/pipeline/skills/figma-ios"
|
|
14
|
-
ANDROID_DIR="$ROOT/pipeline/skills/figma-android"
|
|
15
|
-
|
|
16
|
-
PASS=0
|
|
17
|
-
FAIL=0
|
|
18
|
-
pass() { PASS=$((PASS+1)); echo " ✓ $1"; }
|
|
19
|
-
fail() { FAIL=$((FAIL+1)); echo " ✗ $1"; }
|
|
20
|
-
|
|
21
|
-
[ -d "$IOS_DIR" ] || { echo "error: iOS tree missing at $IOS_DIR" >&2; exit 1; }
|
|
22
|
-
[ -d "$ANDROID_DIR" ] || { echo "error: Android tree missing at $ANDROID_DIR" >&2; exit 1; }
|
|
23
|
-
|
|
24
|
-
# Platform-specific skills that MUST exist on both sides.
|
|
25
|
-
REQUIRED=(
|
|
26
|
-
figma-to-component
|
|
27
|
-
figma-component-implement
|
|
28
|
-
figma-component-test
|
|
29
|
-
figma-component-code-connect
|
|
30
|
-
figma-component-wiki
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
echo "→ 1. Android tree has required platform-specific skills"
|
|
34
|
-
for skill in "${REQUIRED[@]}"; do
|
|
35
|
-
if [ -d "$ANDROID_DIR/$skill" ] && [ -f "$ANDROID_DIR/$skill/SKILL.md" ]; then
|
|
36
|
-
pass "$skill present"
|
|
37
|
-
else
|
|
38
|
-
fail "$skill missing"
|
|
39
|
-
fi
|
|
40
|
-
done
|
|
41
|
-
|
|
42
|
-
echo ""
|
|
43
|
-
echo "→ 2. iOS tree has the same required skills (parity source)"
|
|
44
|
-
for skill in "${REQUIRED[@]}"; do
|
|
45
|
-
if [ -d "$IOS_DIR/$skill" ] && [ -f "$IOS_DIR/$skill/SKILL.md" ]; then
|
|
46
|
-
pass "iOS $skill present"
|
|
47
|
-
else
|
|
48
|
-
fail "iOS $skill missing (parity source broken)"
|
|
49
|
-
fi
|
|
50
|
-
done
|
|
51
|
-
|
|
52
|
-
echo ""
|
|
53
|
-
echo "→ 3. Every Android SKILL.md has frontmatter with platform: android"
|
|
54
|
-
for skill in "${REQUIRED[@]}"; do
|
|
55
|
-
f="$ANDROID_DIR/$skill/SKILL.md"
|
|
56
|
-
[ -f "$f" ] || continue
|
|
57
|
-
if ! head -n 1 "$f" | grep -Fxq -- "---"; then
|
|
58
|
-
fail "$skill/SKILL.md missing frontmatter"
|
|
59
|
-
continue
|
|
60
|
-
fi
|
|
61
|
-
if awk '/^---$/{c++; next} c==1' "$f" | grep -Fq "platform: android"; then
|
|
62
|
-
pass "$skill stamped platform: android"
|
|
63
|
-
else
|
|
64
|
-
fail "$skill/SKILL.md missing platform: android stamp"
|
|
65
|
-
fi
|
|
66
|
-
done
|
|
67
|
-
|
|
68
|
-
echo ""
|
|
69
|
-
echo "→ 4. Every Android SKILL.md stamped status: wip-v5 + sourced-from"
|
|
70
|
-
for skill in "${REQUIRED[@]}"; do
|
|
71
|
-
f="$ANDROID_DIR/$skill/SKILL.md"
|
|
72
|
-
[ -f "$f" ] || continue
|
|
73
|
-
grep -q "^status: wip-v5" "$f" && pass "$skill status: wip-v5" || fail "$skill missing status stamp"
|
|
74
|
-
grep -q "^sourced-from: " "$f" && pass "$skill has sourced-from" || fail "$skill missing sourced-from"
|
|
75
|
-
done
|
|
76
|
-
|
|
77
|
-
echo ""
|
|
78
|
-
echo "→ 5. Android implement skill targets Compose + Kotlin"
|
|
79
|
-
IMPL="$ANDROID_DIR/figma-component-implement/SKILL.md"
|
|
80
|
-
if [ -f "$IMPL" ]; then
|
|
81
|
-
if grep -Fq "@Composable" "$IMPL" && grep -Fq "Configuration.kt" "$IMPL" && grep -Fq "@Immutable" "$IMPL"; then
|
|
82
|
-
pass "implement references @Composable + Configuration.kt + @Immutable"
|
|
83
|
-
else
|
|
84
|
-
fail "implement missing Compose/Kotlin markers"
|
|
85
|
-
fi
|
|
86
|
-
fi
|
|
87
|
-
|
|
88
|
-
echo ""
|
|
89
|
-
echo "→ 6. Android test skill targets Compose Testing + Paparazzi"
|
|
90
|
-
TEST="$ANDROID_DIR/figma-component-test/SKILL.md"
|
|
91
|
-
if [ -f "$TEST" ]; then
|
|
92
|
-
if grep -Fq "createComposeRule" "$TEST" && grep -Fq "Paparazzi" "$TEST"; then
|
|
93
|
-
pass "test references createComposeRule + Paparazzi"
|
|
94
|
-
else
|
|
95
|
-
fail "test missing Compose Testing / Paparazzi markers"
|
|
96
|
-
fi
|
|
97
|
-
fi
|
|
98
|
-
|
|
99
|
-
echo ""
|
|
100
|
-
echo "→ 7. Android orchestrator routes Android-specific build (gradleModule)"
|
|
101
|
-
ORCH="$ANDROID_DIR/figma-to-component/SKILL.md"
|
|
102
|
-
if [ -f "$ORCH" ]; then
|
|
103
|
-
if grep -Fq "gradleModule" "$ORCH" && grep -Fq "./gradlew" "$ORCH"; then
|
|
104
|
-
pass "orchestrator references gradleModule + gradlew"
|
|
105
|
-
else
|
|
106
|
-
fail "orchestrator missing gradleModule / gradlew references"
|
|
107
|
-
fi
|
|
108
|
-
fi
|
|
109
|
-
|
|
110
|
-
echo ""
|
|
111
|
-
echo "→ 8. figma-project-config schema declares Android build fields"
|
|
112
|
-
SCHEMA="$ROOT/pipeline/schemas/figma-project-config.schema.json"
|
|
113
|
-
if jq -e '.properties.build.properties.gradleModule' "$SCHEMA" >/dev/null 2>&1 \
|
|
114
|
-
&& jq -e '.properties.build.properties.variant' "$SCHEMA" >/dev/null 2>&1; then
|
|
115
|
-
pass "schema has build.gradleModule + build.variant"
|
|
116
|
-
else
|
|
117
|
-
fail "schema missing Android build fields"
|
|
118
|
-
fi
|
|
119
|
-
|
|
120
|
-
echo ""
|
|
121
|
-
echo "→ 9. Platform enum covers Android"
|
|
122
|
-
if jq -e '.properties.project.properties.platform.enum | index("android")' "$SCHEMA" >/dev/null 2>&1; then
|
|
123
|
-
pass "project.platform enum includes android"
|
|
124
|
-
else
|
|
125
|
-
fail "project.platform enum missing android"
|
|
126
|
-
fi
|
|
127
|
-
|
|
128
|
-
echo ""
|
|
129
|
-
echo "→ 10. README.md present explaining the Android tree"
|
|
130
|
-
README="$ANDROID_DIR/README.md"
|
|
131
|
-
if [ -f "$README" ] && grep -Fq "Android Platform Skills" "$README"; then
|
|
132
|
-
pass "README.md present and descriptive"
|
|
133
|
-
else
|
|
134
|
-
fail "README.md missing or not descriptive"
|
|
135
|
-
fi
|
|
136
|
-
|
|
137
|
-
echo ""
|
|
138
|
-
echo "→ 11. component-dispatch.md ref acknowledges Android routing"
|
|
139
|
-
DISPATCH="$ROOT/pipeline/commands/multi-agent/refs/component-dispatch.md"
|
|
140
|
-
if grep -Fq "android" "$DISPATCH" && grep -Fq "figma-android" "$DISPATCH"; then
|
|
141
|
-
pass "component-dispatch.md routes iOS/Android"
|
|
142
|
-
else
|
|
143
|
-
fail "component-dispatch.md missing Android routing"
|
|
144
|
-
fi
|
|
145
|
-
|
|
146
|
-
echo ""
|
|
147
|
-
echo "══ figma-android-parity smoke: $PASS passed, $FAIL failed ══"
|
|
148
|
-
[ "$FAIL" -eq 0 ]
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# smoke-figma-credential-store.sh - drift gate for figma skill Keychain access.
|
|
3
|
-
#
|
|
4
|
-
# In v8.3.x the figma skill family was migrated off raw `security` calls and
|
|
5
|
-
# routed through the cross-platform credential helper:
|
|
6
|
-
# ~/.claude/lib/credential-store.sh (Claude Code installs)
|
|
7
|
-
# ~/.copilot/lib/credential-store.sh (Copilot CLI installs)
|
|
8
|
-
# Each bash block uses a `CRED_STORE` resolver that picks whichever helper is
|
|
9
|
-
# present so the same source ships to both CLIs.
|
|
10
|
-
#
|
|
11
|
-
# This smoke locks the migration in place. It re-fails the build if anyone
|
|
12
|
-
# reverts a figma skill back to a direct `security find-generic-password` /
|
|
13
|
-
# `add-generic-password` / `delete-generic-password` call against one of OUR
|
|
14
|
-
# managed token names.
|
|
15
|
-
#
|
|
16
|
-
# Two intentional exceptions:
|
|
17
|
-
# - Subprocess calls that read the `Claude Code-credentials` keychain entry
|
|
18
|
-
# (Claude Code's own OAuth-token store, not ours).
|
|
19
|
-
# - Pedagogical references inside CHANGELOG / MIGRATION docs.
|
|
20
|
-
#
|
|
21
|
-
# Exit 0 = no drift, 1 = at least one figma file regressed.
|
|
22
|
-
|
|
23
|
-
set -uo pipefail
|
|
24
|
-
|
|
25
|
-
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
26
|
-
|
|
27
|
-
pass=0
|
|
28
|
-
fail=0
|
|
29
|
-
failures=()
|
|
30
|
-
record_pass() { pass=$((pass + 1)); printf ' \033[0;32mPASS\033[0m %s\n' "$1"; }
|
|
31
|
-
record_fail() { fail=$((fail + 1)); failures+=("$1"); printf ' \033[0;31mFAIL\033[0m %s\n' "$1"; }
|
|
32
|
-
|
|
33
|
-
printf '→ smoke-figma-credential-store: figma skills route Keychain via the helper, not raw `security`\n'
|
|
34
|
-
|
|
35
|
-
# 1. The 8 figma surfaces that were migrated must keep using "$CRED_STORE" or
|
|
36
|
-
# `~/.claude/lib/credential-store.sh` / `~/.copilot/lib/credential-store.sh`.
|
|
37
|
-
MIGRATED_FILES=(
|
|
38
|
-
"pipeline/skills/figma-common/figma-issue/SKILL.md"
|
|
39
|
-
"pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md"
|
|
40
|
-
"pipeline/skills/figma-common/figma-setup/SKILL.md"
|
|
41
|
-
"pipeline/skills/figma-common/figma-validate/SKILL.md"
|
|
42
|
-
"pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md"
|
|
43
|
-
"pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md"
|
|
44
|
-
"pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md"
|
|
45
|
-
"pipeline/skills/figma-ios/figma-to-component/reference/tools.md"
|
|
46
|
-
"pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py"
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
for rel in "${MIGRATED_FILES[@]}"; do
|
|
50
|
-
abs="$ROOT/$rel"
|
|
51
|
-
base="$(basename "$rel")"
|
|
52
|
-
if [ ! -f "$abs" ]; then
|
|
53
|
-
record_fail "$base missing - figma skill set drifted out of inventory"
|
|
54
|
-
continue
|
|
55
|
-
fi
|
|
56
|
-
|
|
57
|
-
# Each of these must reference the helper at least once (resolver, get/set/delete call,
|
|
58
|
-
# or python subprocess wrapper). If the helper reference is gone, the file regressed.
|
|
59
|
-
if grep -qE 'credential-store\.sh|CRED_STORE|keychain\.py' "$abs"; then
|
|
60
|
-
record_pass "$base references the credential helper"
|
|
61
|
-
else
|
|
62
|
-
record_fail "$base lost its credential-store.sh reference"
|
|
63
|
-
fi
|
|
64
|
-
|
|
65
|
-
# Now look for raw `security {find,add,delete}-generic-password` calls
|
|
66
|
-
# against OUR managed tokens. Anything matching one of these service names
|
|
67
|
-
# is a regression. (Claude Code's own `Claude Code-credentials` entry is
|
|
68
|
-
# NOT in this list - the figma-setup wizard is allowed to read it.)
|
|
69
|
-
managed_tokens='FIGMA_ACCESS_TOKEN|FIGMA_MCP_TOKEN|FIGMA_API_USER|JIRA_TOKEN|CONFLUENCE_TOKEN'
|
|
70
|
-
bad=$(grep -nE "security (find|add|delete)-generic-password.*-s [\"']?($managed_tokens)[\"']?" "$abs" 2>/dev/null || true)
|
|
71
|
-
if [ -z "$bad" ]; then
|
|
72
|
-
record_pass "$base contains no raw security calls against managed tokens"
|
|
73
|
-
else
|
|
74
|
-
record_fail "$base regressed to raw security on a managed token:
|
|
75
|
-
$bad"
|
|
76
|
-
fi
|
|
77
|
-
done
|
|
78
|
-
|
|
79
|
-
# 2. The cross-CLI contract doc must point callers at credential-store.sh as
|
|
80
|
-
# the canonical path. If it ever flips back to raw `security` in the
|
|
81
|
-
# "canonical" column the principle is broken.
|
|
82
|
-
CONTRACT="$ROOT/pipeline/commands/multi-agent/refs/cross-cli-contract.md"
|
|
83
|
-
if [ -f "$CONTRACT" ] && grep -qE 'canonical path is .*credential-store\.sh' "$CONTRACT"; then
|
|
84
|
-
record_pass "cross-cli-contract.md declares credential-store.sh as canonical"
|
|
85
|
-
else
|
|
86
|
-
record_fail "cross-cli-contract.md no longer declares credential-store.sh as canonical"
|
|
87
|
-
fi
|
|
88
|
-
|
|
89
|
-
# 3. The Copilot install template allowlist must list the helper, not just raw `security`.
|
|
90
|
-
TEMPLATE="$ROOT/install/templates/copilot-instructions.md"
|
|
91
|
-
if [ -f "$TEMPLATE" ] && grep -q 'credential-store\.sh' "$TEMPLATE"; then
|
|
92
|
-
record_pass "install template allowlist references credential-store.sh"
|
|
93
|
-
else
|
|
94
|
-
record_fail "install template allowlist no longer references credential-store.sh"
|
|
95
|
-
fi
|
|
96
|
-
|
|
97
|
-
# Summary
|
|
98
|
-
total=$((pass + fail))
|
|
99
|
-
printf '\n→ smoke-figma-credential-store: %d/%d passed\n' "$pass" "$total"
|
|
100
|
-
if [ "$fail" -ne 0 ]; then
|
|
101
|
-
printf '\nFailures:\n'
|
|
102
|
-
for f in "${failures[@]}"; do printf ' - %s\n' "$f"; done
|
|
103
|
-
exit 1
|
|
104
|
-
fi
|
|
105
|
-
exit 0
|