@mmerterden/multi-agent-pipeline 11.1.0 → 11.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/README.md +2 -2
- package/docs/FIGMA_PIPELINE.md +12 -25
- package/docs/architecture.md +3 -5
- package/docs/features.md +8 -8
- package/install/_common.mjs +9 -1
- package/install/_dev-only-files.mjs +0 -6
- package/install/claude.mjs +45 -18
- package/install/copilot.mjs +16 -14
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +1 -1
- package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
- package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
- package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
- package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
- package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
- package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
- package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
- package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
- package/pipeline/preferences-template.json +17 -1
- package/pipeline/rules/figma-pipeline.md +2 -2
- package/pipeline/schemas/prefs.schema.json +0 -34
- package/pipeline/scripts/README.md +1 -3
- package/pipeline/scripts/build-stack-plugins.mjs +1 -1
- package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/phase-banner.sh +2 -2
- package/pipeline/scripts/review-scope.mjs +94 -0
- package/pipeline/scripts/scan-agent-config.sh +2 -2
- package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
- package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
- package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
- package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
- package/pipeline/scripts/smoke-channels-flow.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +1 -1
- package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
- package/pipeline/scripts/smoke-community-gates.sh +1 -1
- package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
- package/pipeline/scripts/smoke-cost-summary.sh +1 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
- package/pipeline/scripts/smoke-dev-critic.sh +1 -1
- package/pipeline/scripts/smoke-diff-explain.sh +1 -1
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
- package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
- package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
- package/pipeline/scripts/smoke-generate-issue.sh +8 -8
- package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
- package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
- package/pipeline/scripts/smoke-intent-guard.sh +1 -1
- package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
- package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
- package/pipeline/scripts/smoke-language-axis.sh +6 -6
- package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
- package/pipeline/scripts/smoke-model-fallback.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
- package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
- package/pipeline/scripts/smoke-plan-todos.sh +3 -3
- package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
- package/pipeline/scripts/smoke-prefs-language.sh +1 -1
- package/pipeline/scripts/smoke-progress-contract.sh +2 -2
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +2 -2
- package/pipeline/scripts/smoke-shadow-git.sh +1 -1
- package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
- package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
- package/pipeline/scripts/smoke-test-gap.sh +1 -1
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-token-preflight.sh +2 -2
- package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-update-check.sh +1 -1
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-gates.sh +1 -1
- package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
- package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
- package/pipeline/scripts/smoke-work-summary.sh +1 -1
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/test-integrity-gate.mjs +83 -0
- package/pipeline/scripts/uninstall.mjs +2 -2
- package/pipeline/skills/.skill-manifest.json +40 -160
- package/pipeline/skills/.skills-index.json +21 -372
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
- package/pipeline/skills/shared/external/backlog/BACKLOG.md +32 -0
- package/pipeline/skills/shared/external/backlog/SKILL.md +49 -0
- package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +48 -0
- package/pipeline/skills/shared/external/skill-creator/audit.md +59 -0
- package/pipeline/skills/shared/external/skill-creator/checklist.md +32 -0
- package/pipeline/skills/shared/external/skill-creator/examples.md +65 -0
- package/pipeline/skills/shared/external/skill-creator/label-check.md +43 -0
- package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +83 -0
- package/pipeline/skills/shared/external/skill-creator/template.md +67 -0
- package/pipeline/skills/skills-index.md +4 -43
- package/pipeline/commands/multi-agent/refactor.md +0 -188
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
- package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
- package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
- package/pipeline/scripts/smoke-figma-sync.sh +0 -149
- package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
- package/pipeline/skills/figma-android/README.md +0 -38
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
- package/pipeline/skills/figma-common/README.md +0 -64
- package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
- package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
- package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
- package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
- package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
- package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
- package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
- /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
- /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# figma-common - Platform-agnostic figma-to-component skills
|
|
2
|
-
|
|
3
|
-
Shared skills that both `pipeline/skills/figma-ios/` (SwiftUI) and `pipeline/skills/figma-android/` (Jetpack Compose) dispatch. Moved here by WS-7b of the v5.0.0 rebuild so the platform trees stay lean and there's no duplication.
|
|
4
|
-
|
|
5
|
-
## What lives here (31 skills)
|
|
6
|
-
|
|
7
|
-
**Workflow orchestration:**
|
|
8
|
-
|
|
9
|
-
- `figma-component-start` - Issue → branches, check out worktree
|
|
10
|
-
- `figma-component-confluence-sync` - Phase 7b: wiki markdown → Confluence XHTML
|
|
11
|
-
- `figma-component-status-update` - Refresh Confluence dashboard
|
|
12
|
-
- `figma-commit` - 14-item review + PR creation
|
|
13
|
-
- `figma-iteration-commit` - Commit to iteration/develop + PR
|
|
14
|
-
|
|
15
|
-
**Batch + iterate:**
|
|
16
|
-
|
|
17
|
-
- `figma-iterate` - Auto loop: pick → implement → commit
|
|
18
|
-
- `figma-cli-iterate` - Full CLI iterate (all phases)
|
|
19
|
-
- `figma-cli-lean-iterate` - Iterate skipping test + wiki
|
|
20
|
-
- `figma-cli-iterate-mend` - Re-implement discarded components
|
|
21
|
-
- `figma-cli-skip` - Mark component as skipped
|
|
22
|
-
- `figma-skip` - Skip + update Confluence dashboard
|
|
23
|
-
|
|
24
|
-
**Issue + review:**
|
|
25
|
-
|
|
26
|
-
- `figma-issue` - Create GitHub issue + optional Jira (feeds WS-6 triad)
|
|
27
|
-
- `figma-review` - Interactive review gate (approve / bug / skip)
|
|
28
|
-
- `figma-validate` - Pre-implementation validation
|
|
29
|
-
- `figma-fix` - Targeted bug fix from review findings
|
|
30
|
-
- `figma-mend` - Re-implement component from scratch
|
|
31
|
-
- `figma-evolve-component` - Reconcile drift + additively extend an existing component (human-gated)
|
|
32
|
-
|
|
33
|
-
**Setup + utility:**
|
|
34
|
-
|
|
35
|
-
- `figma-setup` - Environment setup wizard (MCP, tokens, Code Connect CLI)
|
|
36
|
-
- `figma-remote-mcp-auth` - Figma MCP OAuth flow
|
|
37
|
-
- `figma-utility` - Figma data fetch (screenshots, metadata)
|
|
38
|
-
- `figma-ui-patterns` - UI pattern library index
|
|
39
|
-
- `figma-form-integration` - Form protocol adapter (shared UX)
|
|
40
|
-
- `figma-price-integration` - Price protocol adapter (shared UX)
|
|
41
|
-
|
|
42
|
-
**Cross-cutting interaction adapters (dual-platform: iOS SwiftUI + Android Jetpack Compose; native-first; project system via `figma-config` `ui.*`):**
|
|
43
|
-
|
|
44
|
-
- `figma-navigation` - Navigation pattern: headless Output vs self-route; native `NavigationStack` or `ui.navigationSystem`
|
|
45
|
-
- `figma-overlays` - Overlay pattern: toast/HUD/alert/data-modal; native `.alert`/`.sheet(item:)` or `ui.overlaySystem`
|
|
46
|
-
- `figma-bottom-sheets` - Bottom-sheet/detent pattern: native `.presentationDetents` or `ui.sheetSystem`
|
|
47
|
-
|
|
48
|
-
**Performance batch:**
|
|
49
|
-
|
|
50
|
-
- `performance-start`, `performance-swiftui`, `performance-tour`, `performance-review-next`, `performance-iteration-commit-all`
|
|
51
|
-
|
|
52
|
-
## What does NOT live here
|
|
53
|
-
|
|
54
|
-
Platform-specific skills stay under `figma-ios/` or `figma-android/`:
|
|
55
|
-
|
|
56
|
-
- `figma-to-component` - orchestrator (platform-specific build command)
|
|
57
|
-
- `figma-component-implement` - Swift / Kotlin code generator
|
|
58
|
-
- `figma-component-test` - SwiftUI ViewInspector / Compose Testing
|
|
59
|
-
- `figma-component-code-connect` - Swift / Kotlin Code Connect
|
|
60
|
-
- `figma-component-wiki` - same 4-adapter contract, but platform-aware rendering
|
|
61
|
-
|
|
62
|
-
## Invocation
|
|
63
|
-
|
|
64
|
-
Both platforms' orchestrators call the same common skill paths - no CLI or platform routing needed. The cross-CLI contract (`refs/cross-cli-contract.md` section 1.1) enforces the inventory.
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: figma-bottom-sheets
|
|
3
|
-
description: "Bottom-sheet / detent pattern integration for Figma-to-UI components (iOS SwiftUI + Android Jetpack Compose) — half-sheets, drawers, pinned bottom CTAs, resizable pull-up panels, content-sized sheets, and multi-step in-sheet flows. Native by default (SwiftUI .sheet+presentationDetents; Compose ModalBottomSheet + rememberModalBottomSheetState); an optional project-supplied detent-sheet system when figma-config declares one. Reach for this when a design shows a bottom sheet, half-sheet, bottom drawer, snap points, a sticky footer button, or a wizard-in-a-sheet."
|
|
4
|
-
user-invocable: true
|
|
5
|
-
allowed-tools: Read, Glob, Grep
|
|
6
|
-
status: wip-v5
|
|
7
|
-
sourced-from: upstream/figma-bottom-sheets
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# /figma-bottom-sheets - Bottom-Sheet / Detent Pattern Integration
|
|
11
|
-
|
|
12
|
-
## Purpose
|
|
13
|
-
|
|
14
|
-
Consumed by the figma-to-swiftui pipeline (Phase 3D detection, Phase 4B view) and available ad-hoc, this skill defines how **bottom-anchored, detent-based surfaces** are presented. Sibling of `/figma-overlays` (transient/blocking overlays) and `/figma-navigation` (routing): native-SwiftUI default + a config-driven hook for projects that ship a custom detent-sheet engine.
|
|
15
|
-
|
|
16
|
-
**Generic by design.** Default is stock SwiftUI `.sheet` + `.presentationDetents`. If `figma-config.json` declares `ui.sheetSystem`, route through that engine by name - same rules, project vocabulary. (Some apps replace system sheets because iOS 26 forces a Liquid-Glass floating inset on partial detents with no removal API; that replacement is the custom-system case, not the default.)
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Strict Rules (non-negotiable)
|
|
21
|
-
|
|
22
|
-
1. **The sheet surface is a caller concern; the component is the content.** A reusable component authored from Figma is the sheet's **content**, not the presenter. The caller owns the `isPresented`/`item` binding and the detents. A component that presents itself can't be reused elsewhere.
|
|
23
|
-
2. **No magic numbers.** Detents, corner radius, grabber size, insets come from tokens / figma-config token patterns, never hard-coded literals.
|
|
24
|
-
3. **Detents ascend, max 3.** Pass `[detent]` lowest→highest; the sheet opens at the lowest. Prefer semantic detents (`.medium`, `.large`, `.fraction`, content-height) over pixel heights where possible.
|
|
25
|
-
4. **A bottom sheet is not a modal card and not a navigation push.** Data alert/modal card → `/figma-overlays`; screen routing → `/figma-navigation` (a routed modal may still *render* as a sheet, but navigation owns the routing).
|
|
26
|
-
5. **Native SwiftUI is the default; a custom sheet engine is opt-in via config.** Only use a project detent-sheet system when `ui.sheetSystem.mode == "custom"`.
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## When to Invoke This Skill
|
|
31
|
-
|
|
32
|
-
1. **Phase 3D - sheet affordance/pattern:** the design is (or contains) a bottom sheet / half-sheet / drawer, a **pinned bottom CTA** bar, a resizable pull-up panel, a **content-sized** sheet, or a **multi-step** in-sheet flow (in-sheet back/next that resizes per step).
|
|
33
|
-
2. **Phase 4B - View:** the view is authored as sheet content, or presents a child as a sheet.
|
|
34
|
-
3. **Ad-hoc:** "half sheet", "bottom drawer", "pull-up panel", "snap points", "sticky footer button", "multi-step sheet", "sheet sized to its content".
|
|
35
|
-
|
|
36
|
-
**Not a bottom sheet (guards):**
|
|
37
|
-
- Toast / HUD / alert / data modal card → `/figma-overlays`.
|
|
38
|
-
- Full screen navigation / tab / deep link → `/figma-navigation`.
|
|
39
|
-
- An inline expandable section within the page flow (not an anchored surface) → plain component content.
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Native-first architecture (default)
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
Caller
|
|
47
|
-
| owns isPresented / item + detents; presents the component as content
|
|
48
|
-
v
|
|
49
|
-
.sheet(item:/isPresented:) {
|
|
50
|
-
ComponentContent() // the Figma-authored component
|
|
51
|
-
.presentationDetents([.medium, .large])
|
|
52
|
-
.presentationDragIndicator(.visible)
|
|
53
|
-
.presentationBackgroundInteraction(.enabled(upThrough: .medium)) // passthrough-ish
|
|
54
|
-
.presentationCornerRadius(<token>)
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
- **Half / expandable:** `.presentationDetents([.medium, .large])` or `[.fraction(0.25), .fraction(0.6), .large]`.
|
|
59
|
-
- **Content-sized:** `.presentationDetents([.height(measuredHeight)])` using a height read via a preference key (a `sizeThatFits`/`GeometryReader` measured content height), then scroll past the cap.
|
|
60
|
-
- **Pinned bottom CTA (part of the screen, not a modal):** `.safeAreaInset(edge: .bottom) { CTA() }` - reserves space, screen stays interactive. This is NOT a presented sheet.
|
|
61
|
-
- **Backdrop behavior:** dim+block is the `.sheet` default; passthrough/interactive-behind uses `.presentationBackgroundInteraction(.enabled(...))`.
|
|
62
|
-
- **Multi-step in-sheet flow:** drive a `NavigationStack(path:)` *inside* the sheet content for push/pop, resizing detents per step; each step is a headless view emitting `Output` (see `/figma-navigation`). If the target project's custom engine forbids a nested `NavigationStack`, use its engine (config hook).
|
|
63
|
-
- **Overlays over a sheet:** mount the toast/HUD host on the sheet content (`/figma-overlays`), not the root.
|
|
64
|
-
|
|
65
|
-
Tokens per `reference/ui` + figma-config token patterns.
|
|
66
|
-
|
|
67
|
-
## Config hook - project-supplied detent-sheet engine
|
|
68
|
-
|
|
69
|
-
When `figma-config.json` declares:
|
|
70
|
-
```jsonc
|
|
71
|
-
"ui": { "sheetSystem": {
|
|
72
|
-
"mode": "custom",
|
|
73
|
-
"brandedModifier": "bottomSheet", // .bottomSheet(isPresented:title:) branded entry
|
|
74
|
-
"headlessModifiers": ["modalSheet", "dockedSheet", "expandableSheet", "detentNavigationSheet"],
|
|
75
|
-
"detentType": "SheetDetentType", // detent enum
|
|
76
|
-
"backdropType": "Backdrop", // backdrop enum
|
|
77
|
-
"cornerRadiusToken": ".CornerRadius.radius12" // example: your branded top-corner radius token
|
|
78
|
-
}}
|
|
79
|
-
```
|
|
80
|
-
apply the SAME rules via the project's engine (names from config, do NOT hardcode):
|
|
81
|
-
- Use `.{brandedModifier}` for product sheets needing brand chrome; the headless modifiers for unbranded surfaces / CTAs / resizable panels / multi-step flows.
|
|
82
|
-
- Detents/backdrops use `{detentType}`/`{backdropType}` values; corner radius from `{cornerRadiusToken}`.
|
|
83
|
-
- Multi-step flows use the engine's navigation sheet (e.g. `detentNavigationSheet` with a `Navigator<Route>`) rather than a raw nested `NavigationStack`.
|
|
84
|
-
- One container-owned grabber (pass custom headers grabberless if the engine draws the grabber).
|
|
85
|
-
- Present only from the surface's own host - never walk the scene/window hierarchy for a "top" controller.
|
|
86
|
-
|
|
87
|
-
If `mode` is absent or `native`, use the native-first section.
|
|
88
|
-
|
|
89
|
-
## Android (Jetpack Compose)
|
|
90
|
-
|
|
91
|
-
Same rules, Compose vocabulary. Default is Material3; a project sheet engine is used only when `ui.sheetSystem.mode == "custom"`.
|
|
92
|
-
|
|
93
|
-
- **Half / expandable / drawer:** `ModalBottomSheet(onDismissRequest = { showSheet = false }, sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = false)) { Content() }`. The caller owns `var showSheet by remember` and the `SheetState`; the Figma-authored composable is the **content**.
|
|
94
|
-
- **Detents / snap points:** Material3 exposes partial + expanded (`skipPartiallyExpanded`, `SheetValue`); for finer snap points use an `AnchoredDraggable`-based sheet. Don't hard-code pixel heights - derive from content / fractions.
|
|
95
|
-
- **Content-sized:** let the content wrap-height; the sheet grows to content then scrolls (inner `Column`/`LazyColumn` with `verticalScroll`).
|
|
96
|
-
- **Pinned bottom CTA (part of the screen, not a sheet):** `Scaffold(bottomBar = { CTA() })` - reserves space, screen stays interactive. Not a `ModalBottomSheet`.
|
|
97
|
-
- **Multi-step in-sheet flow:** host a nested `NavHost` (or step state) inside the sheet content, resizing per step; each step is a headless composable emitting events (see `/figma-navigation`).
|
|
98
|
-
- **Overlays over the sheet:** show `Snackbar`/`AlertDialog` scoped to the sheet content (`/figma-overlays`), not the root.
|
|
99
|
-
|
|
100
|
-
**Config hook:** `ui.sheetSystem.mode == "custom"` → use the project's `{brandedModifier}` / headless composables + `{detentType}` / `{backdropType}` and radius from `{cornerRadiusToken}`, resolved from config.
|
|
101
|
-
|
|
102
|
-
Corner radius / grabber / insets from tokens (`MaterialTheme.shapes` / figma-config), not literals.
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Integration with Phase 3D
|
|
107
|
-
|
|
108
|
-
Record in `04b_component_architecture.md`:
|
|
109
|
-
|
|
110
|
-
```markdown
|
|
111
|
-
## Bottom Sheet
|
|
112
|
-
| Signal | Surface | Detents | Owner |
|
|
113
|
-
|---|---|---|---|
|
|
114
|
-
| Half-sheet picker | presented sheet | [.medium, .large] | caller owns isPresented |
|
|
115
|
-
| Sticky "Devam Et" bar | pinned bottom CTA | n/a (safeAreaInset) | part of screen |
|
|
116
|
-
| 3-step add flow | multi-step in-sheet | per-step (content height) | caller drives path |
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
Property classification addition:
|
|
120
|
-
|
|
121
|
-
| Classification | When | Swift Pattern |
|
|
122
|
-
|---|---|---|
|
|
123
|
-
| Sheet content | Component is authored to live inside a sheet | plain component; caller adds `.presentationDetents(...)` |
|
|
124
|
-
| Present-child-as-sheet | Component reveals a child surface | caller-owned `isPresented`/`item` + `.sheet` (component emits the trigger intent) |
|
|
125
|
-
| Pinned CTA | Sticky bottom action bar | `.safeAreaInset(edge:.bottom)` at the screen, not a modal |
|
|
126
|
-
|
|
127
|
-
## Integration with Phase 4B
|
|
128
|
-
- Author the component as sheet **content**; let the caller own presentation + detents.
|
|
129
|
-
- Prefer semantic detents; content-sized sheets measure height via a preference key.
|
|
130
|
-
- Pinned CTA = `.safeAreaInset(edge:.bottom)`, not a presented sheet.
|
|
131
|
-
- Multi-step flow = `NavigationStack` inside the sheet (native) or the engine's nav sheet (custom).
|
|
132
|
-
- If `ui.sheetSystem.mode == custom`, use `{brandedModifier}`/headless modifiers + `{detentType}`/`{backdropType}` per config.
|
|
133
|
-
- Verify on the simulator across detents, backdrop, and drag/dismiss on the project's min + current iOS.
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
## When NOT to Use Bottom-Sheet Integration
|
|
138
|
-
- Toast/HUD/alert/data modal card → `/figma-overlays`.
|
|
139
|
-
- Screen routing/tabs/deep links → `/figma-navigation`.
|
|
140
|
-
- An inline expandable/disclosure within page flow → plain component content.
|
|
141
|
-
|
|
142
|
-
## Checklist - Before Leaving the Skill
|
|
143
|
-
```
|
|
144
|
-
[ ] Component is sheet CONTENT; caller owns isPresented/item + detents
|
|
145
|
-
[ ] Detents ascend, max 3; semantic detents preferred; no magic-number heights
|
|
146
|
-
[ ] Pinned CTA uses safeAreaInset(edge:.bottom), not a presented sheet
|
|
147
|
-
[ ] Content-sized sheet measures height via preference key, then scrolls
|
|
148
|
-
[ ] Multi-step flow uses NavigationStack-in-sheet (native) or engine nav sheet (custom)
|
|
149
|
-
[ ] Corner radius / grabber / insets from tokens, not literals
|
|
150
|
-
[ ] Default native SwiftUI; custom engine only when figma-config ui.sheetSystem.mode == custom
|
|
151
|
-
[ ] Overlays over the sheet mount on the sheet content surface
|
|
152
|
-
```
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: figma-cli-iterate
|
|
3
|
-
description: Runs the complete Figma-to-SwiftUI pipeline for one or more issues: pick → start → implement (phases 0-7) → commit. Returns a structured `ORCHESTRATOR_RESULT` block that the CLI orchestrator can parse.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /figma-cli-iterate - Full Pipeline Orchestrator for CLI
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Runs the complete Figma-to-SwiftUI pipeline for one or more issues: pick → start → implement (phases 0-7) → commit. Returns a structured `ORCHESTRATOR_RESULT` block that the CLI orchestrator can parse.
|
|
11
|
-
|
|
12
|
-
This skill IS the orchestrator. It dispatches **only leaf-phase subagents** - individual phase instruction files that read one doc, execute gates, and return. It never delegates to multi-phase meta-skills.
|
|
13
|
-
|
|
14
|
-
## Forbidden Dispatches
|
|
15
|
-
|
|
16
|
-
**NEVER dispatch these as subagents - they are orchestrators that would try to dispatch further:**
|
|
17
|
-
|
|
18
|
-
- `/figma-to-swift-ui-implement` (Phases 0-4)
|
|
19
|
-
- `/figma-to-swift-ui-test` (Phase 5)
|
|
20
|
-
- `/figma-to-swift-ui-code-connect` (Phase 6)
|
|
21
|
-
- `/figma-to-swift-ui-wiki` (Phase 7)
|
|
22
|
-
- `/figma-iteration-commit`
|
|
23
|
-
- `/figma-to-swiftui` (entire pipeline)
|
|
24
|
-
|
|
25
|
-
Instead, dispatch the **leaf phase instruction files** directly via Agent tool.
|
|
26
|
-
|
|
27
|
-
## Parameters
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
/figma-cli-iterate #230 ← implement specific issue
|
|
31
|
-
/figma-cli-iterate ← auto-pick next available
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Constants
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
GH_REPO = {github.componentsRepo}
|
|
40
|
-
REPO_ROOT = git repo root (auto-detect)
|
|
41
|
-
COMMON = ${REPO_ROOT}/{repos.common.path}
|
|
42
|
-
UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
|
|
43
|
-
WIKI = ${REPO_ROOT}/{repos.wiki.path}
|
|
44
|
-
PHASE_DIR = .instructions/figma/figma-to-swiftui/phases
|
|
45
|
-
REF_DIR = .instructions/figma/figma-to-swiftui/reference
|
|
46
|
-
SCRIPT_DIR = .instructions/figma/figma-to-swiftui/scripts
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## STEP 0 - Pick Issue
|
|
52
|
-
|
|
53
|
-
Same logic as `/figma-iterate` STEP 0. Read `.instructions/figma/figma-iterate/SKILL.md` STEP 0 for details.
|
|
54
|
-
|
|
55
|
-
Extract from issue body: `componentName`, `figmaUrl`, `nodeId`, `jiraKey`, `registryName`, `figmaPage`, `acceptanceCriteria`.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## STEP 1 - Start
|
|
60
|
-
|
|
61
|
-
Run inline (not as a skill). Read `.instructions/figma/figma-to-swift-ui-start/SKILL.md` for the full procedure:
|
|
62
|
-
|
|
63
|
-
1. Parse issue → extract metadata
|
|
64
|
-
2. Fetch latest → checkout `develop` (main stays on develop, NO feature branch), `iteration/develop` (submodules)
|
|
65
|
-
3. Create feature branches on **submodules only** (common, uicomponents)
|
|
66
|
-
4. Registry lookup → `componentLocation`, `artifactPath`
|
|
67
|
-
5. Save specs artifact if acceptance criteria exist
|
|
68
|
-
6. Assign (GitHub + Jira)
|
|
69
|
-
7. **Move GitHub issue to "In Develop" on the Projects V2 board** - required. Read STEP 5 of the start skill. Run both GraphQL mutations: set Status option `bc6c45f7` (In Develop) and Phase option `0577dcda` (Implementation). Do NOT skip this - new issues are created with Status=Todo, so this transition is how the board reflects "someone is working on it".
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## required PRE-READ
|
|
74
|
-
|
|
75
|
-
Before dispatching any phase subagent, read:
|
|
76
|
-
${REF_DIR}/orchestrator-discipline.md
|
|
77
|
-
|
|
78
|
-
These 6 rules govern orchestrator behavior. Violations have caused repeated failures. Follow them strictly.
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## STEP 2 - Implement (Phases 0-7)
|
|
83
|
-
|
|
84
|
-
This is the core orchestration. Run each phase by dispatching leaf subagents and scripts.
|
|
85
|
-
|
|
86
|
-
### Spec Injection (Option A)
|
|
87
|
-
|
|
88
|
-
Before dispatching any Phase 4+ subagent, check if `{artifactPath}/pass0/specs.md` exists. If it does:
|
|
89
|
-
1. Read the specs
|
|
90
|
-
2. Extract concrete requirements
|
|
91
|
-
3. Inject them as **CRITICAL SPEC GATES** in the subagent dispatch prompt - NOT as a sidecar "also read this file" instruction
|
|
92
|
-
|
|
93
|
-
This ensures spec requirements become indistinguishable from standard gates.
|
|
94
|
-
|
|
95
|
-
### Phase Dispatch Table
|
|
96
|
-
|
|
97
|
-
All instruction files relative to `${PHASE_DIR}/`.
|
|
98
|
-
|
|
99
|
-
| Phase | Instruction | Model | Subagent? |
|
|
100
|
-
|-------|-------------|-------|-----------|
|
|
101
|
-
| 0 | `phase-0-init.md` | opus | Yes (leaf) |
|
|
102
|
-
| 1 | `${SCRIPT_DIR}/phase1-gather.py` | N/A | No (script) |
|
|
103
|
-
| 2A | `phase-2a-testing-identifiers.md` | opus | Yes (leaf) |
|
|
104
|
-
| 2B | `phase-2b-localization.md` | sonnet | Yes (leaf) |
|
|
105
|
-
| 2C | `phase-2c-accessibility.md` | opus | Yes (leaf) |
|
|
106
|
-
| 2D | `phase-2d-analytics.md` | sonnet | Yes (leaf) |
|
|
107
|
-
| 3A | `phase-3a-location.md` | sonnet | Yes (leaf) |
|
|
108
|
-
| 3C | `phase-3c-nested.md` | sonnet | Yes (leaf) |
|
|
109
|
-
| 3H | `phase-3h-variant-config.md` | opus | Yes (leaf) |
|
|
110
|
-
| 3D | `phase-3d-patterns.md` | opus | Yes (leaf) |
|
|
111
|
-
| 4A | `phase-4a-configuration.md` | opus | Yes (leaf, COMPLEX only) |
|
|
112
|
-
| 4B | `phase-4b-view.md` | opus | Yes (leaf) |
|
|
113
|
-
| 4C | `phase-4c-documentation.md` | sonnet | Yes (leaf) |
|
|
114
|
-
| 4D | `phase-4d-preview.md` | sonnet | Yes (leaf) |
|
|
115
|
-
| 4E | `phase-4e-modifiers.md` | sonnet | Yes (leaf, COMPLEX only) |
|
|
116
|
-
| 5A | `phase-5a-viewinspector.md` | sonnet | Yes (leaf) |
|
|
117
|
-
| 5B | `phase-5b-snapshot.md` | sonnet | Yes (leaf) |
|
|
118
|
-
| 5C | `phase-5c-unit.md` | sonnet | Yes (leaf, if applicable) |
|
|
119
|
-
| 6 | `phase-6-code-connect.md` | opus | Yes (leaf) |
|
|
120
|
-
| 7 | `phase-7a-wiki-generate.md` | sonnet | Yes (leaf) |
|
|
121
|
-
|
|
122
|
-
### Dispatch Prompt Template
|
|
123
|
-
|
|
124
|
-
For each leaf subagent:
|
|
125
|
-
|
|
126
|
-
```
|
|
127
|
-
You are executing {Phase Name} of the Figma-to-SwiftUI workflow.
|
|
128
|
-
|
|
129
|
-
## Context
|
|
130
|
-
- Component: {componentName}
|
|
131
|
-
- File Key: {fileKey}
|
|
132
|
-
- Node ID: {nodeId}
|
|
133
|
-
- Artifact Path: {artifactPath}
|
|
134
|
-
- Component Location: {componentLocation}
|
|
135
|
-
- GitHub Issue: {issueNumber} (omit if not available)
|
|
136
|
-
|
|
137
|
-
## CRITICAL SPEC GATES (only if specs exist)
|
|
138
|
-
{Concrete requirements extracted from specs - phrased as mandatory instructions, not a file reference}
|
|
139
|
-
|
|
140
|
-
## Tool Restrictions
|
|
141
|
-
{from dispatch table}
|
|
142
|
-
|
|
143
|
-
## Your Instructions
|
|
144
|
-
Read and STRICTLY FOLLOW your phase instructions gate-by-gate from this file:
|
|
145
|
-
{PHASE_DIR}/{instruction file}
|
|
146
|
-
|
|
147
|
-
Read the return protocol from:
|
|
148
|
-
{REF_DIR}/halt-return-protocol.md
|
|
149
|
-
|
|
150
|
-
## Reference Files
|
|
151
|
-
{relevant reference files from the read-order table in figma-to-swiftui/SKILL.md}
|
|
152
|
-
|
|
153
|
-
## Previous Phase Artifacts
|
|
154
|
-
{artifact paths in read order - compact first}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### Phase Execution Flow
|
|
158
|
-
|
|
159
|
-
**Phase 0**: Dispatch subagent → verify `IMPLEMENTATION_HISTORY.md` created.
|
|
160
|
-
|
|
161
|
-
**Phase 1**: Run script:
|
|
162
|
-
```bash
|
|
163
|
-
python3 ${SCRIPT_DIR}/phase1-gather.py \
|
|
164
|
-
--file-key "{fileKey}" --node-id "{nodeId}" \
|
|
165
|
-
--artifact-path "{artifactPath}" --component-name "{componentName}"
|
|
166
|
-
```
|
|
167
|
-
If `COMPLETE_WITH_DEFERRED` → dispatch Phase 1 deferred resolution subagent.
|
|
168
|
-
|
|
169
|
-
**Phase 2**:
|
|
170
|
-
1. Pre-check: verify `pass1/_index.md`
|
|
171
|
-
2. Normalize: check sublayers in `design_context_response.json`
|
|
172
|
-
3. Registry lookup: `FigmaRegistryUtility utility-lookup --node-id '{nodeId}'`
|
|
173
|
-
4. Wave 1 (parallel): dispatch 2A + 2B + 2C subagents simultaneously
|
|
174
|
-
5. Wave 2: dispatch 2D subagent
|
|
175
|
-
6. Finalize: `python3 ${SCRIPT_DIR}/phase2-finalize.py ...`
|
|
176
|
-
|
|
177
|
-
**Phase 3**:
|
|
178
|
-
1. Wave 1 (parallel): `python3 ${SCRIPT_DIR}/phase3-scripts.py wave1 ...` + dispatch 3A + 3C + 3H subagents
|
|
179
|
-
2. Missing token resolution: check `pass3/02_token_mapping.md` for "⚠️ not found". If any → dispatch resolution subagent
|
|
180
|
-
3. Wave 2: dispatch 3D subagent
|
|
181
|
-
4. Wave 3: `python3 ${SCRIPT_DIR}/phase3-scripts.py 3g ...`
|
|
182
|
-
5. Spec: `python3 ${SCRIPT_DIR}/phase3-scripts.py spec ...`
|
|
183
|
-
6. Write `pass3/_index.md`
|
|
184
|
-
|
|
185
|
-
**Phase 4**:
|
|
186
|
-
1. Read `pass3/05_complexity.md` → SIMPLE or COMPLEX
|
|
187
|
-
2. Prepare directory: `mkdir -p {componentLocation}`
|
|
188
|
-
3. Wave 1 (parallel): dispatch 4B + 4C (+ 4A if COMPLEX)
|
|
189
|
-
4. Wave 2 (parallel): dispatch 4D (+ 4E if COMPLEX)
|
|
190
|
-
5. Validate: `bash ${SCRIPT_DIR}/validate-phase4.sh ...`
|
|
191
|
-
6. Build: `xcodebuild build ...` - fix errors if any
|
|
192
|
-
|
|
193
|
-
**Phase 5**:
|
|
194
|
-
1. Switch to local common: comment out remote URL in Package.swift, add local path
|
|
195
|
-
2. Wave 1 (parallel): dispatch 5A + 5B subagents
|
|
196
|
-
3. Wave 2 (conditional): dispatch 5C if component has model logic
|
|
197
|
-
4. Run tests sequentially via `${SCRIPT_DIR}/run-uicomponents-tests.sh`
|
|
198
|
-
5. Revert Package.swift to remote
|
|
199
|
-
|
|
200
|
-
**Phase 6**: Dispatch subagent → run `${SCRIPT_DIR}/phase6-finalize.py` as safety net.
|
|
201
|
-
|
|
202
|
-
**Phase 7**: Dispatch subagent.
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## STEP 3 - Commit
|
|
207
|
-
|
|
208
|
-
Run inline. Read `.instructions/figma/figma-iteration-commit/SKILL.md` for the full procedure:
|
|
209
|
-
|
|
210
|
-
1. Rebase submodules to `iteration/develop` if on feature branch
|
|
211
|
-
2. Build validation
|
|
212
|
-
3. Commit to `iteration/develop` (common → uicomponents → wiki)
|
|
213
|
-
4. Push with rebase-retry loop
|
|
214
|
-
5. Clean up feature branches
|
|
215
|
-
6. Issue housekeeping (comment, phase update, wiki link)
|
|
216
|
-
7. Auto-unblock dependents
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## STEP 4 - Loop
|
|
221
|
-
|
|
222
|
-
Same logic as `/figma-iterate` STEP 4. If specific issue → exit after one. If `--count` → decrement. Otherwise → pick next.
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## STEP 5 - Output Result
|
|
227
|
-
|
|
228
|
-
Output EXACTLY this block as your FINAL message. Nothing else after it.
|
|
229
|
-
|
|
230
|
-
### On success (per component):
|
|
231
|
-
|
|
232
|
-
```
|
|
233
|
-
ORCHESTRATOR_RESULT:
|
|
234
|
-
status: COMPLETE
|
|
235
|
-
issueNumber: <N>
|
|
236
|
-
componentName: <name>
|
|
237
|
-
figmaUrl: <url>
|
|
238
|
-
nodeId: <nodeId>
|
|
239
|
-
jiraKey: <key>
|
|
240
|
-
commits:
|
|
241
|
-
common: <SHA>
|
|
242
|
-
uicomponents: <SHA>
|
|
243
|
-
wiki: <SHA>
|
|
244
|
-
phases: [0, 1, 2, 3, 4, 5, 6, 7]
|
|
245
|
-
testsRun: <count>
|
|
246
|
-
summary: <one-line>
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
### On failure:
|
|
250
|
-
|
|
251
|
-
```
|
|
252
|
-
ORCHESTRATOR_RESULT:
|
|
253
|
-
status: FAILED
|
|
254
|
-
issueNumber: <N>
|
|
255
|
-
componentName: <name>
|
|
256
|
-
failedPhase: <phase>
|
|
257
|
-
reason: <exact reason>
|
|
258
|
-
suggestion: <what to fix>
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
### On full iteration completion:
|
|
262
|
-
|
|
263
|
-
```
|
|
264
|
-
ORCHESTRATOR_RESULT:
|
|
265
|
-
status: ITERATION_COMPLETE
|
|
266
|
-
completed:
|
|
267
|
-
- { issue: <N>, component: <name>, commits: { common: <SHA>, uicomponents: <SHA>, wiki: <SHA> } }
|
|
268
|
-
failed:
|
|
269
|
-
- { issue: <N>, component: <name>, phase: <phase>, reason: <reason> }
|
|
270
|
-
remaining: <count>
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Error Handling
|
|
276
|
-
|
|
277
|
-
- **No available issues**: Output ORCHESTRATOR_RESULT with status ITERATION_COMPLETE, empty completed/failed.
|
|
278
|
-
- **Blocked issue**: Output FAILED.
|
|
279
|
-
- **Phase HALT**: Show reason, ask user. If resolved → retry phase. If skipped → FAILED for this component, move to next.
|
|
280
|
-
- **Build failure**: Attempt auto-fix. If unfixable → FAILED.
|
|
281
|
-
- **3 consecutive failures**: Stop iteration.
|
|
282
|
-
- **Subagents can't dispatch subagents**: This is why we dispatch only leaf phases. If a phase instruction file references dispatching subagents, ignore that - run its gates directly in the subagent.
|