@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -0
- package/README.md +2 -2
- package/docs/FIGMA_PIPELINE.md +12 -25
- package/docs/architecture.md +3 -5
- package/docs/features.md +8 -8
- package/install/_dev-only-files.mjs +0 -6
- package/install/claude.mjs +39 -17
- package/install/copilot.mjs +22 -16
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +1 -1
- package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
- package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
- package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
- package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
- package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
- package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
- package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
- package/pipeline/lib/credential-store.sh +8 -4
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
- package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
- package/pipeline/preferences-template.json +17 -1
- package/pipeline/rules/figma-pipeline.md +2 -2
- package/pipeline/schemas/prefs.schema.json +0 -34
- package/pipeline/scripts/README.md +1 -3
- package/pipeline/scripts/build-skills-index.mjs +3 -6
- package/pipeline/scripts/eval-mine-corpus.mjs +187 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/lint-skills.mjs +26 -1
- package/pipeline/scripts/phase-banner.sh +2 -2
- package/pipeline/scripts/review-scope.mjs +94 -0
- package/pipeline/scripts/scan-agent-config.sh +2 -2
- package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
- package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
- package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
- package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
- package/pipeline/scripts/smoke-channels-flow.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +1 -1
- package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
- package/pipeline/scripts/smoke-community-gates.sh +1 -1
- package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
- package/pipeline/scripts/smoke-cost-summary.sh +1 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
- package/pipeline/scripts/smoke-dev-critic.sh +1 -1
- package/pipeline/scripts/smoke-diff-explain.sh +1 -1
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
- package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
- package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
- package/pipeline/scripts/smoke-generate-issue.sh +8 -8
- package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
- package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
- package/pipeline/scripts/smoke-intent-guard.sh +1 -1
- package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
- package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
- package/pipeline/scripts/smoke-language-axis.sh +6 -6
- package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
- package/pipeline/scripts/smoke-model-fallback.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
- package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
- package/pipeline/scripts/smoke-plan-todos.sh +3 -3
- package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
- package/pipeline/scripts/smoke-prefs-language.sh +1 -1
- package/pipeline/scripts/smoke-progress-contract.sh +2 -2
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +2 -2
- package/pipeline/scripts/smoke-shadow-git.sh +1 -1
- package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
- package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
- package/pipeline/scripts/smoke-test-gap.sh +1 -1
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-token-preflight.sh +2 -2
- package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-update-check.sh +1 -1
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-gates.sh +1 -1
- package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
- package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
- package/pipeline/scripts/smoke-work-summary.sh +1 -1
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/test-integrity-gate.mjs +83 -0
- package/pipeline/scripts/uninstall.mjs +17 -6
- package/pipeline/skills/.skill-manifest.json +40 -160
- package/pipeline/skills/.skills-index.json +3 -373
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
- package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
- package/pipeline/skills/skills-index.md +3 -44
- package/pipeline/commands/multi-agent/refactor.md +0 -188
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
- package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
- package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
- package/pipeline/scripts/smoke-figma-sync.sh +0 -149
- package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
- package/pipeline/skills/figma-android/README.md +0 -38
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
- package/pipeline/skills/figma-common/README.md +0 -64
- package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
- package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
- package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
- package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
- package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
- package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
- package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
- /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
- /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: figma-commit
|
|
3
|
-
description: Reviews a Figma component implementation, then creates feature branches across submodules, commits, pushes, and opens PRs. Delegates mobile-common conflict resolution to `COMMON_REBASE.md`.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /figma-commit - Review, Branch, Commit & Push
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Reviews a Figma component implementation, then creates feature branches across submodules, commits, pushes, and opens PRs. Delegates mobile-common conflict resolution to `COMMON_REBASE.md`.
|
|
11
|
-
|
|
12
|
-
## Parameters
|
|
13
|
-
|
|
14
|
-
| Parameter | Required | Default | Description |
|
|
15
|
-
|-----------|----------|---------|-------------|
|
|
16
|
-
| `component-name` | Yes | - | PascalCase component name (e.g., `TurkishButton`) |
|
|
17
|
-
| `--jira` | No | `{jira.projectKey}-124692` | Jira issue key |
|
|
18
|
-
| `--gh` | No | - | GitHub issue number (for branch name construction) |
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
/figma-commit TurkishButton
|
|
22
|
-
/figma-commit TurkishButton --jira {jira.projectKey}-99999 --gh 107
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Workflow
|
|
28
|
-
|
|
29
|
-
### STEP 0 - Resolve Parameters
|
|
30
|
-
|
|
31
|
-
1. Parse `component-name`. Convert to kebab-case for branch name.
|
|
32
|
-
2. Parse `--jira` or use default `{jira.projectKey}-124692`.
|
|
33
|
-
3. Parse `--gh` if provided.
|
|
34
|
-
4. `REPO_ROOT` = git repo root.
|
|
35
|
-
5. Detect current branch:
|
|
36
|
-
```bash
|
|
37
|
-
CURRENT_BRANCH=$(git -C "${REPO_ROOT}/{repos.components.path}" rev-parse --abbrev-ref HEAD)
|
|
38
|
-
```
|
|
39
|
-
6. **If already on a `feature/` branch** → use it as `BRANCH_NAME`. Extract `JIRA_ISSUE` from branch name (first segment after `feature/`).
|
|
40
|
-
7. **If on `develop` or `iteration/develop`** → construct branch name:
|
|
41
|
-
- If `--gh` provided: look up issue to get node-id
|
|
42
|
-
```bash
|
|
43
|
-
NODE_ID=$(gh issue view <GH> --repo ${GH_REPO} --json body --jq '.body' | grep -A1 '### Node ID' | tail -1)
|
|
44
|
-
NODE_UNDERSCORE=$(echo "${NODE_ID}" | tr '-' '_')
|
|
45
|
-
BRANCH_NAME="feature/${JIRA_ISSUE}-GH${GH}-N${NODE_UNDERSCORE}-${COMPONENT_KEBAB}"
|
|
46
|
-
```
|
|
47
|
-
- If `--gh` not provided: use simple format
|
|
48
|
-
```bash
|
|
49
|
-
BRANCH_NAME="feature/${JIRA_ISSUE}-${COMPONENT_KEBAB}"
|
|
50
|
-
```
|
|
51
|
-
8. Set remaining variables:
|
|
52
|
-
- `COMPONENT_PASCAL`, `COMPONENT_KEBAB`, `JIRA_ISSUE`, `BRANCH_NAME`
|
|
53
|
-
- `FIGMA_URL` = from component registry JSON (`confluence.page` field's sibling `figmaUrl`)
|
|
54
|
-
- `CONFLUENCE_IOS_URL` = from component registry JSON (`confluence.ios` field)
|
|
55
|
-
|
|
56
|
-
### STEP 1 - Code Review & Auto-Fix
|
|
57
|
-
|
|
58
|
-
1. Read `.instructions/figma/figma-commit/REVIEW.md`.
|
|
59
|
-
2. Run the full 13-point review checklist against the component.
|
|
60
|
-
3. Print the review output table.
|
|
61
|
-
4. **If violations found**: Auto-fix every fixable violation (magic numbers, missing identifiers, wrong patterns, missing imports, preview issues, etc.).
|
|
62
|
-
5. After fixing, re-run the review to confirm.
|
|
63
|
-
6. If fixes applied, build to verify:
|
|
64
|
-
```bash
|
|
65
|
-
xcodebuild build -project "${REPO_ROOT}/{build.xcodeproj}" \
|
|
66
|
-
-scheme {build.scheme} -destination 'generic/platform=iOS' \
|
|
67
|
-
CODE_SIGNING_ALLOWED=NO -quiet
|
|
68
|
-
```
|
|
69
|
-
7. If unfixable violations remain → ask user.
|
|
70
|
-
8. If PASS or WARN → proceed.
|
|
71
|
-
|
|
72
|
-
### STEP 2 - Detect Changes Per Repo
|
|
73
|
-
|
|
74
|
-
`git status --porcelain` shows all tracked changes in short format - modified, added, deleted, untracked. Each line starts with a two-character status code (e.g., `M` modified, `??` untracked, `A` added, `D` deleted).
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
HAS_MAIN=$(cd "${REPO_ROOT}" && git status --porcelain | grep -v '^?? {repos.packagesContainer}/Packages/' | head -1)
|
|
78
|
-
HAS_UICOMPONENTS=$(cd "${REPO_ROOT}/{repos.components.path}" && git status --porcelain | head -1)
|
|
79
|
-
HAS_COMMON=$(cd "${REPO_ROOT}/{repos.common.path}" && git status --porcelain | head -1)
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**Main repo PR decision**: Skip if only submodule pointer changes (no `.instructions/` or `.claude/skills/` modifications).
|
|
83
|
-
|
|
84
|
-
### STEP 3 - Common Submodule (if HAS_COMMON)
|
|
85
|
-
|
|
86
|
-
**Read and follow `.instructions/figma/figma-commit/COMMON_REBASE.md`** - handles stash, branch, conflict resolution, regeneration, validation, commit, push, and PR for mobile-common.
|
|
87
|
-
|
|
88
|
-
**Do NOT merge the PR** - only create it and push. Merging is done manually by the team.
|
|
89
|
-
|
|
90
|
-
### STEP 4 - UIComponents Submodule (if HAS_UICOMPONENTS)
|
|
91
|
-
|
|
92
|
-
UIComponents rarely has conflicts (new files only). Simple flow:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
UICOMP="${REPO_ROOT}/{repos.components.path}"
|
|
96
|
-
|
|
97
|
-
# Stash
|
|
98
|
-
cd "${UICOMP}"
|
|
99
|
-
git stash push -u -m "figma-commit: ${COMPONENT_PASCAL} pre-branch stash"
|
|
100
|
-
|
|
101
|
-
# Branch
|
|
102
|
-
git checkout develop && git pull origin develop
|
|
103
|
-
git checkout -b "${BRANCH_NAME}"
|
|
104
|
-
|
|
105
|
-
# Pop (should apply cleanly)
|
|
106
|
-
git stash pop
|
|
107
|
-
|
|
108
|
-
# Commit
|
|
109
|
-
git add -A
|
|
110
|
-
git commit -m "$(cat <<'EOF'
|
|
111
|
-
feat(uicomponents): [${JIRA_ISSUE}] add ${COMPONENT_PASCAL} component
|
|
112
|
-
|
|
113
|
-
- Implement SwiftUI view with design tokens
|
|
114
|
-
- Add configuration, modifiers, and previews
|
|
115
|
-
- Add Code Connect and documentation
|
|
116
|
-
- Add ViewInspector and snapshot tests
|
|
117
|
-
|
|
118
|
-
Refs: ${JIRA_ISSUE}
|
|
119
|
-
EOF
|
|
120
|
-
)"
|
|
121
|
-
|
|
122
|
-
# Push & PR (do NOT merge - PR only)
|
|
123
|
-
git push -u origin "${BRANCH_NAME}"
|
|
124
|
-
gh pr create --base develop \
|
|
125
|
-
--title "feat(uicomponents): [${JIRA_ISSUE}] add ${COMPONENT_PASCAL}" \
|
|
126
|
-
--body "$(cat <<'EOF'
|
|
127
|
-
## Summary
|
|
128
|
-
- Implement ${COMPONENT_PASCAL} SwiftUI component
|
|
129
|
-
- Add Code Connect, FIGMA.md, tests
|
|
130
|
-
|
|
131
|
-
## Visual Reference
|
|
132
|
-
- **Figma:** ${FIGMA_URL}
|
|
133
|
-
- **Confluence iOS:** ${CONFLUENCE_IOS_URL}
|
|
134
|
-
|
|
135
|
-
## Test plan
|
|
136
|
-
- [ ] ViewInspector tests pass
|
|
137
|
-
- [ ] Snapshot tests pass
|
|
138
|
-
- [ ] Build succeeds with remote dependencies
|
|
139
|
-
|
|
140
|
-
Refs: ${JIRA_ISSUE}
|
|
141
|
-
EOF
|
|
142
|
-
)"
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### STEP 5 - Main Repo (if skill/instruction changes)
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
cd "${REPO_ROOT}"
|
|
149
|
-
git stash push -u -m "figma-commit: ${COMPONENT_PASCAL} pre-branch stash"
|
|
150
|
-
git checkout develop && git pull origin develop
|
|
151
|
-
git checkout -b "${BRANCH_NAME}"
|
|
152
|
-
git stash pop
|
|
153
|
-
|
|
154
|
-
git add .instructions/ .claude/skills/
|
|
155
|
-
git commit -m "$(cat <<'EOF'
|
|
156
|
-
feat(skills): [${JIRA_ISSUE}] update skills for ${COMPONENT_PASCAL}
|
|
157
|
-
|
|
158
|
-
- Update workflow instructions and scripts
|
|
159
|
-
|
|
160
|
-
Refs: ${JIRA_ISSUE}
|
|
161
|
-
EOF
|
|
162
|
-
)"
|
|
163
|
-
|
|
164
|
-
# Push & PR (do NOT merge - PR only)
|
|
165
|
-
git push -u origin "${BRANCH_NAME}"
|
|
166
|
-
gh pr create --base develop \
|
|
167
|
-
--title "feat(skills): [${JIRA_ISSUE}] skill updates for ${COMPONENT_PASCAL}" \
|
|
168
|
-
--body "## Summary
|
|
169
|
-
- Update workflow skills and scripts
|
|
170
|
-
|
|
171
|
-
Refs: ${JIRA_ISSUE}"
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
Skip this step entirely if no `.instructions/` or `.claude/skills/` changes.
|
|
175
|
-
|
|
176
|
-
### STEP 6 - Summary
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
## Commit Summary: ${COMPONENT_PASCAL}
|
|
180
|
-
|
|
181
|
-
| Repo | Branch | PR |
|
|
182
|
-
|------|--------|----|
|
|
183
|
-
| common | ${BRANCH_NAME} | PR #N created / No changes |
|
|
184
|
-
| uicomponents | ${BRANCH_NAME} | PR #N created / No changes |
|
|
185
|
-
| main | ${BRANCH_NAME} | PR #N created / Skipped |
|
|
186
|
-
|
|
187
|
-
Jira: ${JIRA_ISSUE}
|
|
188
|
-
Review: PASS / WARN (N warnings)
|
|
189
|
-
Validation: PASSED (N loc, N a11y, N testing keys)
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## Execution Order
|
|
195
|
-
|
|
196
|
-
Always: **common first → uicomponents → main repo**. Common PR must be merged before uicomponents PR (uicomponents depends on common via remote URL).
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## Error Handling
|
|
201
|
-
|
|
202
|
-
- **Branch already exists**: Append `-v2`, `-v3`
|
|
203
|
-
- **Push rejected**: Report error, do NOT force-push
|
|
204
|
-
- **Submodule not on develop**: Warn user, ask confirmation
|
|
205
|
-
- **Common conflicts**: Follow `COMMON_REBASE.md` section4
|
|
206
|
-
- **Validation fails**: Fix before committing - NEVER skip
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
## Notes
|
|
211
|
-
|
|
212
|
-
- Always stash before branch creation
|
|
213
|
-
- Submodules branched and pushed independently
|
|
214
|
-
- Review step (Step 1) uses full REVIEW.md checklist - NOT optional
|
|
215
|
-
- PRs are created but NOT merged - merging is a separate manual action
|
|
216
|
-
- No AI attribution in commit messages - follow `GIT_COMMIT_CONVENTION.md`
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: figma-component-confluence-sync
|
|
3
|
-
description: Syncs component documentation from the GitHub Wiki (source of truth) to Confluence. Reads wiki markdown, converts to Confluence XHTML, uploads pages and assets. Requires VPN.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /figma-to-swift-ui-confluence-sync - Sync Wiki to Confluence
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Syncs component documentation from the GitHub Wiki (source of truth) to Confluence. Reads wiki markdown, converts to Confluence XHTML, uploads pages and assets. Requires VPN.
|
|
11
|
-
|
|
12
|
-
## Parameters
|
|
13
|
-
|
|
14
|
-
| Parameter | Required | Description |
|
|
15
|
-
|-----------|----------|-------------|
|
|
16
|
-
| `<component-name>` or `<figma-url>` | Yes | Component to sync |
|
|
17
|
-
| `--all` | No | Sync all components that have wiki docs |
|
|
18
|
-
| `--dry-run` | No | Convert markdown to XHTML but skip upload |
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
/figma-to-swift-ui-confluence-sync ModalsTitle
|
|
22
|
-
/figma-to-swift-ui-confluence-sync https://www.figma.com/design/...?node-id=2820-25995
|
|
23
|
-
/figma-to-swift-ui-confluence-sync --all
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Constants
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
WIKI_ROOT = {repos.wiki.path}
|
|
32
|
-
CONFLUENCE_BASE = {confluence.baseUrl}
|
|
33
|
-
CONFLUENCE_SPACE = DK
|
|
34
|
-
PAGE_IDS_FILE = .instructions/figma/figma-to-swiftui/scripts/confluence-page-ids.json
|
|
35
|
-
PUBLISH_SCRIPT = .instructions/figma/figma-to-swiftui/scripts/confluence-publish.py
|
|
36
|
-
STATUS_SCRIPT = .instructions/figma/figma-to-swiftui/scripts/confluence-component-status.py
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Authentication
|
|
40
|
-
|
|
41
|
-
Confluence token from macOS Keychain:
|
|
42
|
-
```bash
|
|
43
|
-
CONFLUENCE_TOKEN=$("$HOME/.claude/lib/credential-store.sh" get \1 2>/dev/null)
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Gate 0: Resolve Component
|
|
49
|
-
|
|
50
|
-
### If Figma URL provided:
|
|
51
|
-
1. Extract `node-id`, run `FigmaRegistryUtility lookup --node-id`
|
|
52
|
-
2. Get `suggestedComponentName`, `wikiCategory`
|
|
53
|
-
|
|
54
|
-
### If component name provided:
|
|
55
|
-
1. Search wiki for matching directory:
|
|
56
|
-
```bash
|
|
57
|
-
find ${WIKI_ROOT}/FigmaComponents -name "<ComponentName>.md" -type f
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Locate wiki source:
|
|
61
|
-
```
|
|
62
|
-
WIKI_MD = ${WIKI_ROOT}/FigmaComponents/{category}/{componentName}/{componentName}.md
|
|
63
|
-
WIKI_ASSETS = ${WIKI_ROOT}/FigmaComponents/{category}/{componentName}/assets/
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
If wiki markdown doesn't exist → HALT: "No wiki documentation found. Run `/figma-to-swiftui phase-7` first."
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Gate 1: VPN Check
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
curl -s --connect-timeout 5 "${CONFLUENCE_BASE}/rest/api/content?limit=1" \
|
|
74
|
-
-H "Authorization: Bearer ${CONFLUENCE_TOKEN}" \
|
|
75
|
-
-o /dev/null -w "%{http_code}"
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
If not `200` → HALT: "VPN not connected or Confluence token invalid."
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Gate 2: Convert Markdown to XHTML
|
|
83
|
-
|
|
84
|
-
Read the wiki markdown file. Read the conversion reference:
|
|
85
|
-
```
|
|
86
|
-
.instructions/figma/figma-to-swiftui/reference/wiki-to-confluence-mapping.md
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Split at `## iOS Implementation`
|
|
90
|
-
|
|
91
|
-
- Everything **above** `## iOS Implementation` → `main.html`
|
|
92
|
-
- Everything **from** `## iOS Implementation` **onward** → `ios.html`
|
|
93
|
-
|
|
94
|
-
### Convert each part using the mapping rules:
|
|
95
|
-
|
|
96
|
-
- Markdown headings → `<h2>`, `<h3>`
|
|
97
|
-
- Markdown tables → `<table><tbody>...`
|
|
98
|
-
- Wiki image syntax `[[/path/assets/file.png|alt]]` → `<ac:image><ri:attachment ri:filename="file.png"/></ac:image>`
|
|
99
|
-
- Code blocks → `<ac:structured-macro ac:name="code">`
|
|
100
|
-
- Wiki links `[[Name]]` → `<ac:link><ri:page ri:content-title="Name"/>`
|
|
101
|
-
- External links → `<a href="...">`
|
|
102
|
-
|
|
103
|
-
### Prepend to main.html:
|
|
104
|
-
- TOC macro
|
|
105
|
-
|
|
106
|
-
### Prepend to ios.html:
|
|
107
|
-
- Back-link to main page
|
|
108
|
-
|
|
109
|
-
### Write output:
|
|
110
|
-
Create a temp directory for the XHTML output:
|
|
111
|
-
```bash
|
|
112
|
-
TEMP_DIR=$(mktemp -d)
|
|
113
|
-
mkdir -p ${TEMP_DIR}/assets
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Write `${TEMP_DIR}/main.html` and `${TEMP_DIR}/ios.html`.
|
|
117
|
-
Copy `${WIKI_ASSETS}/*` to `${TEMP_DIR}/assets/`.
|
|
118
|
-
|
|
119
|
-
If `--dry-run`: print paths and stop.
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Gate 3: Validate XHTML
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
python3 .instructions/figma/figma-to-swiftui/scripts/validate-phase7a.py \
|
|
127
|
-
--confluence-path "${TEMP_DIR}" \
|
|
128
|
-
--component-name "{ComponentName}" \
|
|
129
|
-
--mode confluence
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
If FAIL → fix conversion issues and retry.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Gate 4: Upload to Confluence
|
|
137
|
-
|
|
138
|
-
### Resolve parent page
|
|
139
|
-
|
|
140
|
-
1. Check registry for existing Confluence URLs (update case)
|
|
141
|
-
2. Otherwise, lookup from `confluence-page-ids.json` by category path
|
|
142
|
-
3. Fallback: "Figma Components" root page
|
|
143
|
-
|
|
144
|
-
### Publish
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
python3 ${PUBLISH_SCRIPT} \
|
|
148
|
-
--component "{ComponentName}" \
|
|
149
|
-
--artifact-path "${TEMP_DIR}" \
|
|
150
|
-
--node-id "{nodeId}" \
|
|
151
|
-
--parent-page-id "{parentPageId}" \
|
|
152
|
-
--space "${CONFLUENCE_SPACE}"
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
This creates/updates:
|
|
156
|
-
- Main page: `{ComponentName}`
|
|
157
|
-
- iOS sub-page: `{ComponentName} - iOS`
|
|
158
|
-
- Android placeholder: `{ComponentName} - Android`
|
|
159
|
-
- Attachments: all images from `assets/`
|
|
160
|
-
|
|
161
|
-
### Update registry
|
|
162
|
-
|
|
163
|
-
The publish script updates `{nodeId}.json` with Confluence URLs.
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Gate 5: Refresh Status Dashboard
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
python3 ${STATUS_SCRIPT}
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Updates the global Component Implementation Status page on Confluence.
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Registry flag ownership (architecture-update)
|
|
178
|
-
|
|
179
|
-
This skill is a **downstream mirror** of the GitHub Wiki. It **does not** own the `status.ios.wiki` flag in the component registry - that flag is set green by `/figma-to-swift-ui-wiki` via `scripts/phase7-finalize.py`, which is upstream of this sync. Confluence URLs are written into `{nodeId}.json.confluence.ios` by the publish script (Gate 4) so downstream readers can link out, but the 4-flag status block is untouched here.
|
|
180
|
-
|
|
181
|
-
If you run this skill and the `wiki` flag is still gray/yellow, run `/figma-to-swift-ui-wiki` first - that's what owns the flag.
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## `--all` Mode
|
|
186
|
-
|
|
187
|
-
When `--all` is passed:
|
|
188
|
-
|
|
189
|
-
1. Find all component markdown files:
|
|
190
|
-
```bash
|
|
191
|
-
find ${WIKI_ROOT}/FigmaComponents -name "*.md" -not -name "ComponentImplementationStatus.md" -not -name "_Sidebar.md" -type f
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
2. For each component, run Gates 2-5 sequentially.
|
|
195
|
-
3. Run status dashboard refresh once at the end (not per component).
|
|
196
|
-
4. Print summary table:
|
|
197
|
-
|
|
198
|
-
```markdown
|
|
199
|
-
| Component | Status | Confluence URL |
|
|
200
|
-
|-----------|--------|----------------|
|
|
201
|
-
| Checkbox | Synced | {confluence.baseUrl}/display/DK/Checkbox |
|
|
202
|
-
| Price | Synced | {confluence.baseUrl}/display/DK/Price |
|
|
203
|
-
| ... | ... | ... |
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## Cleanup
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
rm -rf ${TEMP_DIR}
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
|
|
216
|
-
## Error Handling
|
|
217
|
-
|
|
218
|
-
- **VPN not connected**: HALT with VPN instructions.
|
|
219
|
-
- **Wiki markdown not found**: HALT - run Phase 7 first.
|
|
220
|
-
- **Confluence token missing**: Prompt user to add to keychain.
|
|
221
|
-
- **XHTML validation failed**: Show violations, retry conversion.
|
|
222
|
-
- **Upload failed (401/403)**: Token expired - prompt refresh.
|
|
223
|
-
- **Upload failed (404)**: Wrong parent page ID - check confluence-page-ids.json.
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: figma-component-start
|
|
3
|
-
description: Reads a GitHub Issue, extracts component metadata, creates feature branches from `develop` (main repo) / `iteration/develop` (submodules), and checks them out locally. Prepares the workspace to begin implementation.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /figma-to-swift-ui-start - Start Implementation from GitHub Issue
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Reads a GitHub Issue, extracts component metadata, creates feature branches from `develop` (main repo) / `iteration/develop` (submodules), and checks them out locally. Prepares the workspace to begin implementation.
|
|
11
|
-
|
|
12
|
-
## Parameters
|
|
13
|
-
|
|
14
|
-
| Parameter | Required | Default | Description |
|
|
15
|
-
|-----------|----------|---------|-------------|
|
|
16
|
-
| `<issue-number>` | Yes | - | GitHub issue number from uicomponents repo |
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
/figma-to-swift-ui-start #107
|
|
20
|
-
/figma-to-swift-ui-start 107
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Constants
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
REPO_ROOT = git repo root (auto-detect)
|
|
29
|
-
GH_REPO = {github.componentsRepo}
|
|
30
|
-
BASE_BRANCH = develop # main repo; submodules use iteration/develop
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Submodule Paths
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
MAIN_REPO = ${REPO_ROOT}
|
|
37
|
-
COMMON = ${REPO_ROOT}/{repos.common.path}
|
|
38
|
-
UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
|
|
39
|
-
WIKI = ${REPO_ROOT}/{repos.wiki.path}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## STEP 0 - Parse Issue
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
gh issue view <N> --repo ${GH_REPO} --json number,title,body,labels,assignees
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Extract from the issue body:
|
|
51
|
-
- **Component Name** - from `### Component Name (PascalCase)` section
|
|
52
|
-
- **Figma URL** - from `### Figma URL` section
|
|
53
|
-
- **Node ID** - from `### Node ID` section
|
|
54
|
-
- **Registry Name** - from `### Registry Name` section
|
|
55
|
-
- **Figma Page** - from `### Figma Page` section
|
|
56
|
-
- **Acceptance Criteria** - from `### Acceptance Criteria` section (if not `_No response_`)
|
|
57
|
-
|
|
58
|
-
Derive:
|
|
59
|
-
- `COMPONENT_PASCAL` = Component Name (e.g., `ModalsTitle`)
|
|
60
|
-
- `COMPONENT_KEBAB` = kebab-case (e.g., `modals-title`)
|
|
61
|
-
- `NODE_UNDERSCORE` = node-id with `-` replaced by `_` (e.g., `2820-25995` → `2820_25995`)
|
|
62
|
-
- `BRANCH_NAME` = `feature/GH${N}-N${NODE_UNDERSCORE}-${COMPONENT_KEBAB}`
|
|
63
|
-
|
|
64
|
-
Print:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
-------------------------------------------
|
|
68
|
-
Issue: #<N>
|
|
69
|
-
Component: <COMPONENT_PASCAL>
|
|
70
|
-
Node ID: <NODE_ID>
|
|
71
|
-
Branch: feature/GH<N>-N<NODE_UNDERSCORE>-<COMPONENT_KEBAB>
|
|
72
|
-
Base: develop (main repo) / iteration/develop (submodules)
|
|
73
|
-
-------------------------------------------
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## STEP 1 - Fetch Latest
|
|
79
|
-
|
|
80
|
-
Ensure all repos are up to date with remote:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
cd ${MAIN_REPO}
|
|
84
|
-
git fetch origin
|
|
85
|
-
git checkout develop
|
|
86
|
-
git pull --no-recurse-submodules origin develop
|
|
87
|
-
|
|
88
|
-
cd ${COMMON}
|
|
89
|
-
git fetch origin
|
|
90
|
-
git checkout iteration/develop
|
|
91
|
-
git pull origin iteration/develop
|
|
92
|
-
|
|
93
|
-
cd ${UICOMPONENTS}
|
|
94
|
-
git fetch origin
|
|
95
|
-
git checkout iteration/develop
|
|
96
|
-
git pull origin iteration/develop
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## STEP 2 - Create Feature Branches
|
|
102
|
-
|
|
103
|
-
Create feature branches on **submodules only**. Do NOT create branches on the main repo - it stays on `develop`. The main repo never receives commits from this workflow; submodule refs are updated separately.
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
# Common (tokens, localization, accessibility, testing identifiers)
|
|
107
|
-
cd ${COMMON}
|
|
108
|
-
git checkout -b ${BRANCH_NAME}
|
|
109
|
-
|
|
110
|
-
# UIComponents (SwiftUI views, tests, snapshots)
|
|
111
|
-
cd ${UICOMPONENTS}
|
|
112
|
-
git checkout -b ${BRANCH_NAME}
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Wiki submodule stays on `master` - wiki changes are committed directly.
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## STEP 3 - Registry Lookup
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
cd ${COMMON}
|
|
123
|
-
.build/debug/FigmaRegistryUtility lookup --node-id <NODE_ID>
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Collect:
|
|
127
|
-
- `suggestedComponentLocation` - where the Swift files will go
|
|
128
|
-
- `suggestedArtifactPath` - where implementation artifacts go
|
|
129
|
-
|
|
130
|
-
Print:
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
Component Location: <suggestedComponentLocation>
|
|
134
|
-
Artifact Path: <suggestedArtifactPath>
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## STEP 3.5 - Save Specs Artifact
|
|
140
|
-
|
|
141
|
-
If the issue has acceptance criteria (not `_No response_`), save them as an artifact that the implementation pipeline can consume.
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
mkdir -p ${REPO_ROOT}/${suggestedArtifactPath}/pass0
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Write `${suggestedArtifactPath}/pass0/specs.md`:
|
|
148
|
-
|
|
149
|
-
```markdown
|
|
150
|
-
# Implementation Specs: {ComponentName}
|
|
151
|
-
|
|
152
|
-
## Source
|
|
153
|
-
- Issue: #{N}
|
|
154
|
-
- Figma: {FIGMA_URL}
|
|
155
|
-
|
|
156
|
-
## Acceptance Criteria
|
|
157
|
-
|
|
158
|
-
{ACCEPTANCE_CRITERIA from issue body - verbatim}
|
|
159
|
-
|
|
160
|
-
## Implementation Guidance
|
|
161
|
-
|
|
162
|
-
{Convert the acceptance criteria into actionable implementation instructions for the AI agent:
|
|
163
|
-
- Rephrase checkbox items as concrete requirements
|
|
164
|
-
- Add technical context where the criteria imply Swift/SwiftUI patterns
|
|
165
|
-
- Preserve the user's intent exactly - don't add or remove requirements}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
If no acceptance criteria → skip this step. No file created.
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## STEP 4 - Assign to Me
|
|
173
|
-
|
|
174
|
-
Assign the GitHub issue to the current user:
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
gh issue edit <N> --repo ${GH_REPO} --add-assignee @me
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## STEP 5 - Update Issue Status (required)
|
|
183
|
-
|
|
184
|
-
**This step is mandatory. Do not skip it and do not defer it.** The issue
|
|
185
|
-
is on the board with Status=Todo after creation. Moving it to Status=In
|
|
186
|
-
Develop is how the board reflects that someone has started working on
|
|
187
|
-
it. If you skip this step, the issue visually stays in the Todo column
|
|
188
|
-
even though work has started.
|
|
189
|
-
|
|
190
|
-
Set the issue phase to "Implementation" and status to "In Develop" on the Projects V2 board:
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
# Get issue node ID
|
|
194
|
-
ISSUE_NODE_ID=$(gh api graphql -f query='{ repository(owner: "{github.org}", name: "{project.slug}-components") { issue(number: <N>) { id } } }' --jq '.data.repository.issue.id')
|
|
195
|
-
|
|
196
|
-
# Add to project (if not already). This mutation is idempotent - if the
|
|
197
|
-
# item already exists it returns the existing item id.
|
|
198
|
-
ITEM_ID=$(gh api graphql -f query='mutation { addProjectV2ItemById(input: { projectId: "{github.projectV2Id}", contentId: "'"$ISSUE_NODE_ID"'" }) { item { id } } }' --jq '.data.addProjectV2ItemById.item.id')
|
|
199
|
-
|
|
200
|
-
# Set Status = In Develop (option id: bc6c45f7)
|
|
201
|
-
gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.status}", value: { singleSelectOptionId: "bc6c45f7" } }) { projectV2Item { id } } }'
|
|
202
|
-
|
|
203
|
-
# Set Phase = Implementation (option id: 0577dcda)
|
|
204
|
-
gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.phase}", value: { singleSelectOptionId: "0577dcda" } }) { projectV2Item { id } } }'
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
### Verify the move landed
|
|
208
|
-
|
|
209
|
-
After the mutations return, confirm Status=In Develop is set (this catches
|
|
210
|
-
silent VALIDATION errors from stale option IDs):
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
gh api graphql -f query='{ node(id: "'"$ITEM_ID"'") { ... on ProjectV2Item { fieldValues(first: 20) { nodes { ... on ProjectV2ItemFieldSingleSelectValue { field { ... on ProjectV2SingleSelectField { name } } name } } } } } }' \
|
|
214
|
-
--jq '.data.node.fieldValues.nodes[] | select(.field.name == "Status") | .name'
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
Expected output: `In Develop`. If you see anything else (or empty),
|
|
218
|
-
re-fetch the current option IDs and retry - do NOT proceed to implementation
|
|
219
|
-
without the Status set correctly.
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## STEP 6 - Summary
|
|
224
|
-
|
|
225
|
-
Print:
|
|
226
|
-
|
|
227
|
-
```markdown
|
|
228
|
-
Ready to implement:
|
|
229
|
-
|
|
230
|
-
| Field | Value |
|
|
231
|
-
|-------|-------|
|
|
232
|
-
| Issue | [#N](url) |
|
|
233
|
-
| Component | <COMPONENT_PASCAL> |
|
|
234
|
-
| Branch | `<BRANCH_NAME>` |
|
|
235
|
-
| Base | `develop` (main repo) / `iteration/develop` (submodules) |
|
|
236
|
-
| Component Location | <suggestedComponentLocation> |
|
|
237
|
-
| Artifact Path | <suggestedArtifactPath> |
|
|
238
|
-
|
|
239
|
-
Next: `/figma <figma-url>` to run the implementation pipeline.
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## Error Handling
|
|
245
|
-
|
|
246
|
-
- **Issue not found**: Print error and stop.
|
|
247
|
-
- **Issue body missing required fields**: Print which fields are missing, stop.
|
|
248
|
-
- **FigmaRegistryUtility not built**: Run `swift build --product FigmaRegistryUtility` in common.
|
|
249
|
-
- **Branch already exists**: Print warning - checkout existing branch instead of creating.
|
|
250
|
-
- **Main repo not on develop**: Fetch and checkout automatically.
|
|
251
|
-
- **Submodule not on iteration/develop**: Fetch and checkout automatically.
|