@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +2 -2
- package/docs/FIGMA_PIPELINE.md +12 -25
- package/docs/architecture.md +3 -5
- package/docs/features.md +8 -8
- package/install/_dev-only-files.mjs +0 -6
- package/install/claude.mjs +33 -15
- package/install/copilot.mjs +16 -14
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +1 -1
- package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
- package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
- package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
- package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
- package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
- package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
- package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
- package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
- package/pipeline/preferences-template.json +17 -1
- package/pipeline/rules/figma-pipeline.md +2 -2
- package/pipeline/schemas/prefs.schema.json +0 -34
- package/pipeline/scripts/README.md +1 -3
- package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/phase-banner.sh +2 -2
- package/pipeline/scripts/review-scope.mjs +94 -0
- package/pipeline/scripts/scan-agent-config.sh +2 -2
- package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
- package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
- package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
- package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
- package/pipeline/scripts/smoke-channels-flow.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +1 -1
- package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
- package/pipeline/scripts/smoke-community-gates.sh +1 -1
- package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
- package/pipeline/scripts/smoke-cost-summary.sh +1 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
- package/pipeline/scripts/smoke-dev-critic.sh +1 -1
- package/pipeline/scripts/smoke-diff-explain.sh +1 -1
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
- package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
- package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
- package/pipeline/scripts/smoke-generate-issue.sh +8 -8
- package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
- package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
- package/pipeline/scripts/smoke-intent-guard.sh +1 -1
- package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
- package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
- package/pipeline/scripts/smoke-language-axis.sh +6 -6
- package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
- package/pipeline/scripts/smoke-model-fallback.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
- package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
- package/pipeline/scripts/smoke-plan-todos.sh +3 -3
- package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
- package/pipeline/scripts/smoke-prefs-language.sh +1 -1
- package/pipeline/scripts/smoke-progress-contract.sh +2 -2
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +2 -2
- package/pipeline/scripts/smoke-shadow-git.sh +1 -1
- package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
- package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
- package/pipeline/scripts/smoke-test-gap.sh +1 -1
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-token-preflight.sh +2 -2
- package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-update-check.sh +1 -1
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-gates.sh +1 -1
- package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
- package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
- package/pipeline/scripts/smoke-work-summary.sh +1 -1
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/test-integrity-gate.mjs +83 -0
- package/pipeline/scripts/uninstall.mjs +2 -2
- package/pipeline/skills/.skill-manifest.json +40 -160
- package/pipeline/skills/.skills-index.json +3 -372
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
- package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
- package/pipeline/skills/skills-index.md +2 -43
- package/pipeline/commands/multi-agent/refactor.md +0 -188
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
- package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
- package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
- package/pipeline/scripts/smoke-figma-sync.sh +0 -149
- package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
- package/pipeline/skills/figma-android/README.md +0 -38
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
- package/pipeline/skills/figma-common/README.md +0 -64
- package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
- package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
- package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
- package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
- package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
- package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
- package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
- /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
- /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
|
@@ -1,416 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: figma-to-component
|
|
3
|
-
description: Figma-to-SwiftUI component implementation workflow. Takes a Figma URL and produces a production-ready SwiftUI component through 8 phases - data gathering, analysis, code generation, testing, Code Connect, and documentation.
|
|
4
|
-
user-invocable: true
|
|
5
|
-
argument-hint: <figma-url> | phase-<N> | status
|
|
6
|
-
allowed-tools: Task, Read, Glob, Grep, Bash, Write, Edit, AskUserQuestion
|
|
7
|
-
status: wip-v5
|
|
8
|
-
sourced-from: upstream/figma-to-swiftui
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# /figma - Figma-to-SwiftUI Workflow Orchestrator
|
|
12
|
-
|
|
13
|
-
## Parse Arguments
|
|
14
|
-
|
|
15
|
-
`$ARGUMENTS` determines the mode:
|
|
16
|
-
|
|
17
|
-
| Input | Mode | Action |
|
|
18
|
-
|-------|------|--------|
|
|
19
|
-
| `https://www.figma.com/design/...` | **Start** | Extract fileKey + nodeId, begin Phase 0 |
|
|
20
|
-
| `phase-0` through `phase-6` | **Resume** | Read IMPLEMENTATION_HISTORY.md, dispatch that phase |
|
|
21
|
-
| `phase-2a` through `phase-2d` | **Resume** | Dispatch specific Phase 2 sub-phase |
|
|
22
|
-
| `phase-5a` through `phase-5d` | **Resume** | Dispatch specific Phase 5 sub-phase |
|
|
23
|
-
| `phase-7` | **Resume** | Run Phase 7A (generate wiki markdown) |
|
|
24
|
-
| `phase-7a` | **Resume** | Dispatch Phase 7A only (generate XHTML, no VPN needed) |
|
|
25
|
-
| `phase-7a` | **Resume** | Dispatch Phase 7A only (generate wiki markdown) |
|
|
26
|
-
| `status` | **Status** | Read and display IMPLEMENTATION_HISTORY.md |
|
|
27
|
-
|
|
28
|
-
### URL Parsing
|
|
29
|
-
|
|
30
|
-
Extract from Figma URL:
|
|
31
|
-
```
|
|
32
|
-
https://www.figma.com/design/{fileKey}/{fileName}?node-id={nodeId}
|
|
33
|
-
```
|
|
34
|
-
Convert `-` to `:` in node-id (e.g., `9419-30700` → `9419:30700`).
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## required PRE-READ
|
|
39
|
-
|
|
40
|
-
Before dispatching any phase subagent, read:
|
|
41
|
-
.instructions/figma/figma-to-swiftui/reference/orchestrator-discipline.md
|
|
42
|
-
|
|
43
|
-
These 6 rules govern orchestrator behavior. Violations have caused repeated failures. Follow them strictly.
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Phase Execution Order
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
0 (Init) → 1 (Gather) → 2A → 2B → 2C → 2D → 3 (Analysis) → 4 (Implementation) → 5A → 5B → 5C → 6 (Code Connect) → 7 (Wiki Markdown)
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
This skill dispatches Phase 2 and Phase 5 sub-phases directly - no orchestrator subagent.
|
|
54
|
-
|
|
55
|
-
When `phase-7` is invoked:
|
|
56
|
-
1. Dispatch `phase-7a` (generate two wiki pages: main + iOS, plus assets into wiki submodule).
|
|
57
|
-
2. On COMPLETE, Phase 7 is done. No VPN required.
|
|
58
|
-
3. Wiki changes are committed and pushed by the designated commit skill along with all other submodule changes.
|
|
59
|
-
|
|
60
|
-
> **Confluence upload** is a separate standalone skill: `/figma-to-swift-ui-confluence-sync`.
|
|
61
|
-
> It reads the wiki markdown, converts to XHTML, and uploads to Confluence (VPN required).
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Dispatch Table
|
|
66
|
-
|
|
67
|
-
All instruction files are relative to this skill directory: `.instructions/figma/figma-to-swiftui/`
|
|
68
|
-
|
|
69
|
-
| Phase | Instruction | Model | Max Turns | Tool Restrictions |
|
|
70
|
-
|-------|-------------|-------|-----------|-------------------|
|
|
71
|
-
| 0 | `phases/phase-0-init.md` | opus | 30 | No Edit |
|
|
72
|
-
| 1 | `phases/phase-1-gathering.md` + `scripts/phase1-gather.py` | N/A (script) | N/A | Bash only |
|
|
73
|
-
| 2A | `phases/phase-2a-testing-identifiers.md` | opus | 25 | No Edit |
|
|
74
|
-
| 2B | `phases/phase-2b-localization.md` | sonnet | 25 | No Edit |
|
|
75
|
-
| 2C | `phases/phase-2c-accessibility.md` | opus | 25 | No Edit |
|
|
76
|
-
| 2D | `phases/phase-2d-analytics.md` | sonnet | 20 | No Edit, No Bash |
|
|
77
|
-
| 3A | `phases/phase-3a-location.md` | sonnet | 20 | No Edit |
|
|
78
|
-
| 3C | `phases/phase-3c-nested.md` | sonnet | 20 | No Edit |
|
|
79
|
-
| 3H | `phases/phase-3h-variant-config.md` | opus | 25 | No Edit |
|
|
80
|
-
| 3D | `phases/phase-3d-patterns.md` | opus | 30 | No Edit |
|
|
81
|
-
| 4A | `phases/phase-4a-configuration.md` | opus | 30 | ALL allowed |
|
|
82
|
-
| 4B | `phases/phase-4b-view.md` | opus | 40 | ALL allowed |
|
|
83
|
-
| 4C | `phases/phase-4c-documentation.md` | sonnet | 20 | ALL allowed |
|
|
84
|
-
| 4D | `phases/phase-4d-preview.md` | sonnet | 20 | ALL allowed |
|
|
85
|
-
| 4E | `phases/phase-4e-modifiers.md` | sonnet | 20 | ALL allowed |
|
|
86
|
-
| 5A | `phases/phase-5a-viewinspector.md` | sonnet | 40 | ALL allowed |
|
|
87
|
-
| 5B | `phases/phase-5b-snapshot.md` | sonnet | 40 | ALL allowed |
|
|
88
|
-
| 5C | `phases/phase-5c-unit.md` | sonnet | 30 | ALL allowed |
|
|
89
|
-
| 6 | `phases/phase-6-code-connect.md` | opus | 30 | No Edit |
|
|
90
|
-
| 7 | `phases/phase-7a-wiki-generate.md` | sonnet | 30 | No Edit |
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## Reference Files
|
|
95
|
-
|
|
96
|
-
Bundled in `.instructions/figma/figma-to-swiftui/reference/`. Include relevant paths in dispatch prompts so subagents can read them.
|
|
97
|
-
|
|
98
|
-
| File | Used By Phases |
|
|
99
|
-
|------|----------------|
|
|
100
|
-
| `reference/tools.md` | 0, 1 |
|
|
101
|
-
| `reference/code-connect.md` | 6 |
|
|
102
|
-
| `reference/registry.md` | 0, 3 |
|
|
103
|
-
| `reference/missing-tokens.md` | 3, 4 |
|
|
104
|
-
| `reference/macros.md` | 4 |
|
|
105
|
-
| `reference/figma-to-swiftui-effects.md` | 4 |
|
|
106
|
-
| `reference/confluence-api.md` | standalone confluence skill |
|
|
107
|
-
| `reference/confluence-xhtml.md` | standalone confluence skill |
|
|
108
|
-
| `reference/wiki-to-confluence-mapping.md` | standalone confluence skill |
|
|
109
|
-
| `reference/accessibility.md` | 2C |
|
|
110
|
-
| `reference/localization-naming.md` | 2B |
|
|
111
|
-
| `reference/testing-identifiers-naming.md` | 2A |
|
|
112
|
-
| `reference/analytics-events.md` | 2D |
|
|
113
|
-
| `reference/viewinspector.md` | 5A |
|
|
114
|
-
| `reference/snapshot-testing.md` | 5D |
|
|
115
|
-
|
|
116
|
-
## Complementary integration skills
|
|
117
|
-
|
|
118
|
-
Cross-cutting skills in `figma-common/` that feed Phase 3D / 4A / 4B when the design triggers them (see `reference/orchestrator-discipline.md` Rule 4). Native-SwiftUI-first; project specifics come from `figma-config` `ui.*` hooks.
|
|
119
|
-
|
|
120
|
-
| Skill | Phase 3D trigger | Purpose |
|
|
121
|
-
|-------|------------------|---------|
|
|
122
|
-
| `/figma-form-integration` | form-capable sub-components | FormField/FormSection modeling |
|
|
123
|
-
| `/figma-price-integration` | currency+amount / Price instance | PriceRepresentable modeling |
|
|
124
|
-
| `/figma-ui-patterns` | scroll/motion/shape signal | reusable technique recipes (incl. `animated-gradient-border`) |
|
|
125
|
-
| `/figma-navigation` | tab/back/push/deep-link affordance | headless Output; native NavigationStack or `ui.navigationSystem` |
|
|
126
|
-
| `/figma-overlays` | toast/HUD/alert/data-modal | caller-owned; native `.alert`/`.sheet(item:)` or `ui.overlaySystem` |
|
|
127
|
-
| `/figma-bottom-sheets` | sheet/drawer/pinned-CTA/multi-step | sheet content; native `.presentationDetents` or `ui.sheetSystem` |
|
|
128
|
-
|
|
129
|
-
Related workflow: `/figma-evolve-component` reconciles + extends an already-implemented component (drift-heal + additive extend, human-gated) - distinct from a fresh build here, `/figma-mend` (rebuild), and `/figma-fix` (review bug).
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Dispatch Procedure
|
|
134
|
-
|
|
135
|
-
**CRITICAL: Do NOT read phase instruction files or reference docs in the main orchestrator context. Subagents read their own instructions by path. This prevents context bloat.**
|
|
136
|
-
|
|
137
|
-
For each phase in order:
|
|
138
|
-
|
|
139
|
-
### 1. Build the dispatch prompt (DO NOT read instruction files)
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
You are executing {Phase Name} of the Figma-to-SwiftUI workflow.
|
|
143
|
-
|
|
144
|
-
## Context
|
|
145
|
-
- Component: {componentName}
|
|
146
|
-
- File Key: {fileKey}
|
|
147
|
-
- Node ID: {nodeId}
|
|
148
|
-
- Artifact Path: {artifactPath}
|
|
149
|
-
- Component Location: {componentLocation}
|
|
150
|
-
- GitHub Issue: {issueNumber} (omit if not available)
|
|
151
|
-
- Wiki Path: {wikiPath} (Phase 7 only - `{repos.wiki.path}`)
|
|
152
|
-
|
|
153
|
-
## Tool Restrictions
|
|
154
|
-
{from dispatch table - e.g., "Do NOT use the Edit tool."}
|
|
155
|
-
|
|
156
|
-
## Your Instructions
|
|
157
|
-
Read and STRICTLY FOLLOW your phase instructions gate-by-gate from this file:
|
|
158
|
-
.instructions/figma/figma-to-swiftui/{instruction path from dispatch table}
|
|
159
|
-
|
|
160
|
-
Execute every gate sequentially. Do not skip gates.
|
|
161
|
-
|
|
162
|
-
Read the return protocol from:
|
|
163
|
-
.instructions/figma/figma-to-swiftui/reference/halt-return-protocol.md
|
|
164
|
-
|
|
165
|
-
## Specs (if present)
|
|
166
|
-
- {artifactPath}/pass0/specs.md
|
|
167
|
-
Read and incorporate specs alongside phase instructions. Both are inputs you must follow - phase instructions define methodology and coding standards, specs define acceptance criteria and design intent. Neither overrides the other.
|
|
168
|
-
|
|
169
|
-
## Reference Files (read during execution if needed)
|
|
170
|
-
- .instructions/figma/figma-to-swiftui/{reference path}
|
|
171
|
-
|
|
172
|
-
## Previous Phase Artifacts (read in this order)
|
|
173
|
-
{use the Read-Order Table below - list file PATHS only, do not embed content}
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### 2. Dispatch
|
|
177
|
-
|
|
178
|
-
**Phase 1 (script):** Run directly via Bash - no subagent needed:
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
python3 .instructions/figma/figma-to-swiftui/scripts/phase1-gather.py \
|
|
182
|
-
--file-key "{fileKey}" \
|
|
183
|
-
--node-id "{nodeId}" \
|
|
184
|
-
--artifact-path "{artifactPath}" \
|
|
185
|
-
--component-name "{componentName}"
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Parse the JSON output from stdout. The script exits 0 on success, 1 on failure.
|
|
189
|
-
The script tries remote MCP first, falls back to local MCP automatically.
|
|
190
|
-
|
|
191
|
-
**If `status` = `COMPLETE_WITH_DEFERRED`:**
|
|
192
|
-
Design context was deferred (too many sublayers). All other artifacts are present.
|
|
193
|
-
Do NOT ask the user - dispatch a **Phase 1 subagent** for deferred resolution:
|
|
194
|
-
|
|
195
|
-
```
|
|
196
|
-
Agent(
|
|
197
|
-
subagent_type: "general-purpose",
|
|
198
|
-
model: opus,
|
|
199
|
-
max_turns: 25,
|
|
200
|
-
prompt: "You are executing Phase 1 Deferred Resolution...
|
|
201
|
-
Read instructions from: .instructions/figma/figma-to-swiftui/phases/phase-1-gathering.md (Section: Deferred Resolution)
|
|
202
|
-
Read halt-return from: .instructions/figma/figma-to-swiftui/reference/halt-return-protocol.md
|
|
203
|
-
Context: componentName={componentName}, fileKey={fileKey}, nodeId={nodeId}, artifactPath={artifactPath}
|
|
204
|
-
Previous artifacts: {artifactPath}/pass1/component_properties.json, {artifactPath}/pass1/design_context_deferred.json"
|
|
205
|
-
)
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
The subagent handles smart selection (classifying axes, picking representatives) and calls `phase1-gather.py --fetch-deferred`. On COMPLETE → continue to Phase 2.
|
|
209
|
-
|
|
210
|
-
**All other phases:** Dispatch via Agent tool:
|
|
211
|
-
|
|
212
|
-
```
|
|
213
|
-
Agent(
|
|
214
|
-
subagent_type: "general-purpose",
|
|
215
|
-
model: {from dispatch table},
|
|
216
|
-
max_turns: {from dispatch table},
|
|
217
|
-
prompt: {constructed prompt from step 1}
|
|
218
|
-
)
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
### 3. Parse the return
|
|
222
|
-
|
|
223
|
-
**STATUS: COMPLETE**
|
|
224
|
-
→ Record gates and artifacts → Proceed to next phase
|
|
225
|
-
|
|
226
|
-
**STATUS: HALT**
|
|
227
|
-
→ Show user: GATE, REASON, USER_ACTION_REQUIRED via AskUserQuestion
|
|
228
|
-
→ Options: "Fix and retry", "Skip this phase", "Abort workflow"
|
|
229
|
-
→ Retry: re-dispatch same phase
|
|
230
|
-
→ Skip: proceed, record skip in history
|
|
231
|
-
→ Abort: stop workflow
|
|
232
|
-
|
|
233
|
-
**STATUS: NEEDS_INPUT**
|
|
234
|
-
→ Show user: QUESTION, OPTIONS, SUGGESTED via AskUserQuestion
|
|
235
|
-
→ Re-dispatch same phase with user decision prepended:
|
|
236
|
-
```
|
|
237
|
-
USER_DECISION:
|
|
238
|
-
GATE: {gate-id}
|
|
239
|
-
ANSWER: {user's choice}
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### 4. Update history
|
|
243
|
-
|
|
244
|
-
After each phase completes, update IMPLEMENTATION_HISTORY.md with phase status, gates, artifacts, timestamp.
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
## Phase 2 Routing (inline - do NOT read phase-2-orchestrator.md)
|
|
249
|
-
|
|
250
|
-
**Do NOT read `phase-2-orchestrator.md`. All routing logic is here. Subagents read their own docs.**
|
|
251
|
-
|
|
252
|
-
1. **PRE-CHECK**: Read `IMPLEMENTATION_HISTORY.md` (already in context). Verify `pass1/_index.md` exists.
|
|
253
|
-
2. **NORMALIZE**: Check `pass1/design_context_response.json` - if `sublayers: true` and no `response` field, concatenate `responses` values into `response` field and write back.
|
|
254
|
-
3. **REGISTRY_LOOKUP**: `cd {repos.common.path} && .build/debug/FigmaRegistryUtility utility-lookup --node-id '{nodeId}'` - pass result as `registryData` context to subagents.
|
|
255
|
-
4. **Wave 1 (parallel)**: Dispatch 2A + 2B + 2C as subagents (each reads its own instruction doc by path).
|
|
256
|
-
5. **Wave 2**: Dispatch 2D as subagent (depends on 2A output).
|
|
257
|
-
6. **FINALIZE (script)**:
|
|
258
|
-
```bash
|
|
259
|
-
python3 .instructions/figma/figma-to-swiftui/scripts/phase2-finalize.py \
|
|
260
|
-
--artifact-path '{artifactPath}' --node-id '{nodeId}' \
|
|
261
|
-
--file-key '{fileKey}' --component-name '{componentName}'
|
|
262
|
-
```
|
|
263
|
-
Parse stdout JSON: `{"status":"ok","testing":N,"localization":N,"accessibility":N,"analytics":N,"registry":bool}`
|
|
264
|
-
7. **UPDATE HISTORY**: Append Phase 2 summary using script output counts.
|
|
265
|
-
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
## Phase 3 Routing (inline - do NOT read phase-3-orchestrator.md)
|
|
269
|
-
|
|
270
|
-
**Do NOT read `phase-3-orchestrator.md`. Subagents read their own docs. Scripts handle deterministic phases.**
|
|
271
|
-
|
|
272
|
-
1. **PRE-CHECK**: Verify `pass2/_index.md` exists.
|
|
273
|
-
2. **NORMALIZE**: Same sublayer check as Phase 2 (skip if already normalized).
|
|
274
|
-
3. **Wave 1 (parallel)**: Launch ALL simultaneously:
|
|
275
|
-
- **Scripts**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py wave1 --artifact-path '{artifactPath}'` (runs 3B+3E+3F, ~5s)
|
|
276
|
-
- **Subagents**: 3A (`phase-3a-location.md`, sonnet, 20 turns), 3C (`phase-3c-nested.md`, sonnet, 20 turns), 3H (`phase-3h-variant-config.md`, opus, 25 turns)
|
|
277
|
-
4. **MISSING TOKEN RESOLUTION**: After Wave 1, check `pass3/02_token_mapping.md` for missing tokens (lines with "⚠️ not found"). If any exist, dispatch a subagent:
|
|
278
|
-
- **Subagent** (`general-purpose`, opus, 25 turns) - reads `reference/missing-tokens.md` for procedure, resolves each missing token by:
|
|
279
|
-
- **Typography**: Adding alias entries to `typography-registry.json` (match font size + weight to existing Swift tokens)
|
|
280
|
-
- **Colors**: Adding to `Shared/UIAssets/Colors/*.json` (source), running `swift package plugin --allow-writing-to-package-directory generate-ui-assets`, adding to `ui-token-index.json`
|
|
281
|
-
- **Variables**: Using `FigmaRegistryUtility ui-token-lookup` / `ui-token-index` to verify
|
|
282
|
-
- Pass artifact path and token mapping path as context. Subagent updates token mapping after resolution.
|
|
283
|
-
- If 0 missing tokens, skip this step entirely.
|
|
284
|
-
5. **Wave 2 (parallel)**: Launch simultaneously:
|
|
285
|
-
- **Subagent**: 3D (`phase-3d-patterns.md`, opus, 30 turns) - reads 3H output (`pass3/04c_variant_config_analysis.json`)
|
|
286
|
-
6. **Wave 3**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py 3g --artifact-path '{artifactPath}'` (depends on 3D JSON output)
|
|
287
|
-
7. **COLLECT**: Verify 12 artifacts exist in `pass3/` (10 original + 2 from 3H).
|
|
288
|
-
8. **SPEC (script)**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py spec --artifact-path '{artifactPath}'`
|
|
289
|
-
9. **WRITE INDEX**: Write `pass3/_index.md` (list the 12 files + spec).
|
|
290
|
-
10. **UPDATE HISTORY**: Append Phase 3 summary.
|
|
291
|
-
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
## Phase 4 Routing (inline - do NOT read phase-4-orchestrator.md)
|
|
295
|
-
|
|
296
|
-
**Do NOT read `phase-4-orchestrator.md`. Subagents read their own docs. Orchestrator stays lean.**
|
|
297
|
-
|
|
298
|
-
1. **PRE-CHECK**: Verify `pass3/_index.md` exists.
|
|
299
|
-
2. **LOAD_SPEC**: Read `pass3/07_implementation_spec.md` and `pass3/05_complexity.md` - extract `componentLocation`, `complexity` (SIMPLE/COMPLEX).
|
|
300
|
-
3. **PREPARE_DIRECTORY**: `mkdir -p {componentLocation}`. Get `gitUser` via `git config user.name`. Get `date` in DD.MM.YYYY format.
|
|
301
|
-
4. **Wave 1 (parallel)**: Dispatch subagents:
|
|
302
|
-
- **4A** (`phase-4a-configuration.md`, opus, 30 turns) - **COMPLEX only** (skip if SIMPLE). Writes `{ComponentName}Configuration.swift`.
|
|
303
|
-
- **4B** (`phase-4b-view.md`, opus, 40 turns) - **ALWAYS**. Writes `{ComponentName}.swift`.
|
|
304
|
-
- **4C** (`phase-4c-documentation.md`, sonnet, 20 turns) - **ALWAYS**. Writes `FIGMA.md`.
|
|
305
|
-
- Pass to each: componentName, componentLocation, artifactPath, nodeId, fileKey, complexity, gitUser, date, issueNumber (from IMPLEMENTATION_HISTORY.md `GitHub Issue` field - extract the number after `#`).
|
|
306
|
-
5. **Wave 2 (parallel)**: Dispatch subagents that depend on 4A+4B:
|
|
307
|
-
- **4D** (`phase-4d-preview.md`, sonnet, 20 turns) - appends Preview to `{ComponentName}.swift`.
|
|
308
|
-
- **4E** (`phase-4e-modifiers.md`, sonnet, 20 turns) - **COMPLEX only** (skip if SIMPLE). Writes `{ComponentName}+Modifiers.swift`.
|
|
309
|
-
6. **COLLECT**: Verify `{ComponentName}.swift`, `{ComponentName}Configuration.swift` (if COMPLEX), `{ComponentName}+Modifiers.swift` (if COMPLEX), `FIGMA.md` exist.
|
|
310
|
-
7. **VALIDATE**: `bash .instructions/figma/figma-to-swiftui/scripts/validate-phase4.sh "{componentLocation}" "{ComponentName}" "{artifactPath}/pass3/00_property_coverage.json"` - fix violations if any.
|
|
311
|
-
8. **BUILD**: `xcodebuild build -project "$(git rev-parse --show-toplevel)/{build.xcodeproj}" -scheme {build.scheme} -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO -quiet` - fix compilation errors if any.
|
|
312
|
-
9. **UPDATE HISTORY**: Append Phase 4 summary.
|
|
313
|
-
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
## Phase 5 Routing (inline - do NOT read phase-5-orchestrator.md)
|
|
317
|
-
|
|
318
|
-
**Do NOT read `phase-5-orchestrator.md`. Subagents read their own docs.**
|
|
319
|
-
|
|
320
|
-
1. **PRE-CHECK**: Verify Phase 4 complete (component Swift file exists at `{componentLocation}`).
|
|
321
|
-
2. **Wave 1 (parallel)**: Dispatch subagents:
|
|
322
|
-
- **5A** (`phase-5a-viewinspector.md`, sonnet, 40 turns) - ViewInspector structure + accessibility tests.
|
|
323
|
-
- **5B** (`phase-5b-snapshot.md`, sonnet, 40 turns) - Snapshot tests for all Figma variants.
|
|
324
|
-
3. **Wave 2 (conditional)**: **5C** (`phase-5c-unit.md`, sonnet, 30 turns) - Unit tests. Only if component has ViewModel/model logic. N/A for pure View + Configuration.
|
|
325
|
-
4. **TEST EXECUTION**: Run all tests via script - sequentially, NOT parallel (shared DerivedData lock):
|
|
326
|
-
a. **Switch to local common dependency**: In `{repos.components.path}/Package.swift`, comment out the `.package(url: "...{project.slug}-common...", ...)` line and add `.package(path: "../{project.slug}-common"),` below it. This is needed because the SPM package resolves dependencies from remote git, but Phase 2 adds identifiers/keys to the local editable copy.
|
|
327
|
-
b. **Run tests**:
|
|
328
|
-
```bash
|
|
329
|
-
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
330
|
-
bash "${REPO_ROOT}/.instructions/figma/figma-to-swiftui/scripts/run-uicomponents-tests.sh" --filter "{ComponentName}ViewInspectorTests"
|
|
331
|
-
bash "${REPO_ROOT}/.instructions/figma/figma-to-swiftui/scripts/run-uicomponents-tests.sh" --filter "{ComponentName}SnapshotTests"
|
|
332
|
-
```
|
|
333
|
-
Both must exit 0 with zero warnings on component test files. Fix deprecated `Inspectable` conformance or other warnings before proceeding.
|
|
334
|
-
c. **Revert to remote dependency**: Uncomment the original `.package(url: ...)` line and remove the `.package(path: ...)` line in `Package.swift`.
|
|
335
|
-
5. **UPDATE HISTORY**: Append Phase 5 summary with test counts.
|
|
336
|
-
|
|
337
|
-
---
|
|
338
|
-
|
|
339
|
-
## Phase 6 Routing
|
|
340
|
-
|
|
341
|
-
Phase 6 is dispatched as a single subagent. After the subagent returns COMPLETE, run the finalization script as a safety net (idempotent - safe to run even if the subagent already ran it):
|
|
342
|
-
|
|
343
|
-
```bash
|
|
344
|
-
python3 .instructions/figma/figma-to-swiftui/scripts/phase6-finalize.py \
|
|
345
|
-
--node-id '{nodeId}' \
|
|
346
|
-
--file-key '{fileKey}' \
|
|
347
|
-
--component-name '{componentName}' \
|
|
348
|
-
--platform ios
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
Parse stdout JSON. Verify `"status": "ok"`. Update IMPLEMENTATION_HISTORY.md with Phase 6 summary.
|
|
352
|
-
|
|
353
|
-
---
|
|
354
|
-
|
|
355
|
-
## Read-Order Table
|
|
356
|
-
|
|
357
|
-
When building the `Previous Phase Artifacts` section of the dispatch prompt, list artifacts in this order. Compact artifacts go FIRST so the subagent establishes context before large files consume the context window.
|
|
358
|
-
|
|
359
|
-
Every phase must be independently operable from a clean session - all artifacts remain accessible on disk. This table is a **read-ordering preference**, not a prohibition.
|
|
360
|
-
|
|
361
|
-
| Phase | Read FIRST (compact) | Read SECOND (if detail needed) |
|
|
362
|
-
|-------|---------------------|-------------------------------|
|
|
363
|
-
| 2A-2D | `pass1/component_summary.json` | `pass1/design_context_response.json`, `pass1/component_properties.json` |
|
|
364
|
-
| 3A | `pass1/component_summary.json`, `IMPLEMENTATION_HISTORY.md` | - |
|
|
365
|
-
| 3B | `pass1/component_summary.json`, `pass1/variable_defs_response.json` | `pass1/design_context_response.json` (for binding context) |
|
|
366
|
-
| 3C | `pass1/component_summary.json`, `pass1/code_connect_map_response.json` | - |
|
|
367
|
-
| 3D | `pass1/component_summary.json`, `pass1/component_properties.json` | `pass1/design_context_response.json`, `pass1/metadata_response.xml` |
|
|
368
|
-
| 3E | `pass1/component_summary.json`, `pass1/design_context_assets.txt` | - |
|
|
369
|
-
| 3F | `pass1/component_summary.json`, `pass2/utility_*.md` | `pass1/design_context_response.json` |
|
|
370
|
-
| 3G | `pass1/component_summary.json`, `pass3/04b_component_architecture.md` | - |
|
|
371
|
-
| 4A | `pass3/04b_component_architecture.md`, `pass3/05_complexity.md`, `pass3/00_property_coverage.json` | `pass1/component_summary.json` |
|
|
372
|
-
| 4B | `pass1/component_summary.json`, `pass3/00_property_coverage.json`, `pass3/07_implementation_spec.md`, `pass3/02_token_mapping.md`, `pass3/04b_component_architecture.md`, `pass3/04_patterns.md`, `pass3/03_nested_components.md`, `pass3/08_utility_integration.md`, `pass1/screenshot.png` | `pass1/design_context_response.json` (for complex layout detail) |
|
|
373
|
-
| 4C | `pass3/07_implementation_spec.md`, `pass3/04b_component_architecture.md`, `pass3/00_property_coverage.json` | `pass1/component_summary.json` |
|
|
374
|
-
| 4D | `{componentLocation}/{ComponentName}.swift`, `{componentLocation}/{ComponentName}Configuration.swift` (if exists) | `pass3/04_patterns.md` |
|
|
375
|
-
| 4E | `{componentLocation}/{ComponentName}Configuration.swift`, `{componentLocation}/{ComponentName}.swift` | - |
|
|
376
|
-
| 6 | `pass1/component_properties.json`, `{sourceLocation}/FIGMA.md`, `{sourceLocation}/{componentName}.swift` | - |
|
|
377
|
-
|
|
378
|
-
---
|
|
379
|
-
|
|
380
|
-
## Resume Mode
|
|
381
|
-
|
|
382
|
-
When `$ARGUMENTS` is `phase-N`:
|
|
383
|
-
|
|
384
|
-
1. Find IMPLEMENTATION_HISTORY.md by searching `{repos.packagesContainer}/{repos.artifactsRepo}/ImplementationArtifacts/Figma/Components/`
|
|
385
|
-
2. Read it to get: componentName, fileKey, nodeId, artifactPath, componentLocation. Derive confluencePath: replace `Figma/Components` with `Confluence` in artifactPath.
|
|
386
|
-
3. Verify prerequisite phase artifacts exist
|
|
387
|
-
4. Dispatch the requested phase
|
|
388
|
-
|
|
389
|
-
If prerequisites are missing, HALT and inform user.
|
|
390
|
-
|
|
391
|
-
---
|
|
392
|
-
|
|
393
|
-
## Status Mode
|
|
394
|
-
|
|
395
|
-
When `$ARGUMENTS` is `status`:
|
|
396
|
-
|
|
397
|
-
1. Search for all IMPLEMENTATION_HISTORY.md files in `{repos.packagesContainer}/{repos.artifactsRepo}/ImplementationArtifacts/`
|
|
398
|
-
2. Display summary: component name, current phase, last gate, last updated
|
|
399
|
-
|
|
400
|
-
---
|
|
401
|
-
|
|
402
|
-
## Artifact Path Resolution
|
|
403
|
-
|
|
404
|
-
Use FigmaRegistryUtility to resolve component paths:
|
|
405
|
-
|
|
406
|
-
```bash
|
|
407
|
-
CONFIG_PATH="{repos.common.path}"
|
|
408
|
-
cd "$CONFIG_PATH" && .build/debug/FigmaRegistryUtility lookup --node-id '{nodeId}'
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
Returns:
|
|
412
|
-
- `suggestedComponentName` → componentName
|
|
413
|
-
- `suggestedComponentLocation` → componentLocation (under UIComponents/Sources/)
|
|
414
|
-
- `suggestedArtifactPath` → artifactPath: `ImplementationArtifacts/Figma/Components/{Category}/{ComponentName}/`
|
|
415
|
-
|
|
416
|
-
Derive confluencePath from artifactPath: replace `Figma/Components` with `Confluence` in the artifact path string.
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# RETURN PROTOCOL
|
|
2
|
-
|
|
3
|
-
When you complete this phase, output EXACTLY one of these blocks as your FINAL message.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## On success:
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
STATUS: COMPLETE
|
|
11
|
-
PHASE: phase-{N}
|
|
12
|
-
GATES_PASSED: [list every gate ID that passed]
|
|
13
|
-
ARTIFACTS_CREATED:
|
|
14
|
-
- {path}
|
|
15
|
-
- {path}
|
|
16
|
-
SUMMARY: {one-line description of what was accomplished}
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## On failure (tool error, missing file, validation fail):
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
STATUS: HALT
|
|
23
|
-
PHASE: phase-{N}
|
|
24
|
-
GATE: {gate-id that failed}
|
|
25
|
-
REASON: {exact reason - copy from instruction if applicable}
|
|
26
|
-
COMPLETED_GATES: [gates that passed before halt]
|
|
27
|
-
ARTIFACTS_CREATED: [files written before halt, or "none"]
|
|
28
|
-
USER_ACTION_REQUIRED: {what the user must fix before retry}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## On decision needed (user choice required):
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
STATUS: NEEDS_INPUT
|
|
35
|
-
PHASE: phase-{N}
|
|
36
|
-
GATE: {gate-id where decision is needed}
|
|
37
|
-
QUESTION: {what needs to be decided}
|
|
38
|
-
OPTIONS:
|
|
39
|
-
1) {choice}
|
|
40
|
-
2) {choice}
|
|
41
|
-
3) {choice}
|
|
42
|
-
SUGGESTED: {your recommendation and why}
|
|
43
|
-
COMPLETED_GATES: [gates passed so far]
|
|
44
|
-
CONTEXT: {relevant data the user needs to make the decision}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Rules
|
|
50
|
-
|
|
51
|
-
1. Output EXACTLY ONE block as your FINAL message.
|
|
52
|
-
2. STOP after outputting the block. Do not call any more tools.
|
|
53
|
-
3. Every gate you pass must appear in GATES_PASSED or COMPLETED_GATES.
|
|
54
|
-
4. Every file you created must appear in ARTIFACTS_CREATED.
|
|
55
|
-
5. Never output a STATUS block mid-execution - only at the very end.
|
|
56
|
-
6. If you encounter multiple failures, report the FIRST one.
|
|
57
|
-
7. If a HALT condition says to check for USER_DECISION in the prompt first, do so before halting.
|