@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +2 -2
- package/docs/FIGMA_PIPELINE.md +12 -25
- package/docs/architecture.md +3 -5
- package/docs/features.md +8 -8
- package/install/_dev-only-files.mjs +0 -6
- package/install/claude.mjs +33 -15
- package/install/copilot.mjs +16 -14
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +1 -1
- package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
- package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
- package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
- package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
- package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
- package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
- package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
- package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
- package/pipeline/preferences-template.json +17 -1
- package/pipeline/rules/figma-pipeline.md +2 -2
- package/pipeline/schemas/prefs.schema.json +0 -34
- package/pipeline/scripts/README.md +1 -3
- package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/phase-banner.sh +2 -2
- package/pipeline/scripts/review-scope.mjs +94 -0
- package/pipeline/scripts/scan-agent-config.sh +2 -2
- package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
- package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
- package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
- package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
- package/pipeline/scripts/smoke-channels-flow.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +1 -1
- package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
- package/pipeline/scripts/smoke-community-gates.sh +1 -1
- package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
- package/pipeline/scripts/smoke-cost-summary.sh +1 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
- package/pipeline/scripts/smoke-dev-critic.sh +1 -1
- package/pipeline/scripts/smoke-diff-explain.sh +1 -1
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
- package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
- package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
- package/pipeline/scripts/smoke-generate-issue.sh +8 -8
- package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
- package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
- package/pipeline/scripts/smoke-intent-guard.sh +1 -1
- package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
- package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
- package/pipeline/scripts/smoke-language-axis.sh +6 -6
- package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
- package/pipeline/scripts/smoke-model-fallback.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
- package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
- package/pipeline/scripts/smoke-plan-todos.sh +3 -3
- package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
- package/pipeline/scripts/smoke-prefs-language.sh +1 -1
- package/pipeline/scripts/smoke-progress-contract.sh +2 -2
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +2 -2
- package/pipeline/scripts/smoke-shadow-git.sh +1 -1
- package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
- package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
- package/pipeline/scripts/smoke-test-gap.sh +1 -1
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-token-preflight.sh +2 -2
- package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-update-check.sh +1 -1
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-gates.sh +1 -1
- package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
- package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
- package/pipeline/scripts/smoke-work-summary.sh +1 -1
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/test-integrity-gate.mjs +83 -0
- package/pipeline/scripts/uninstall.mjs +2 -2
- package/pipeline/skills/.skill-manifest.json +40 -160
- package/pipeline/skills/.skills-index.json +3 -372
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
- package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
- package/pipeline/skills/skills-index.md +2 -43
- package/pipeline/commands/multi-agent/refactor.md +0 -188
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
- package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
- package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
- package/pipeline/scripts/smoke-figma-sync.sh +0 -149
- package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
- package/pipeline/skills/figma-android/README.md +0 -38
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
- package/pipeline/skills/figma-common/README.md +0 -64
- package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
- package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
- package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
- package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
- package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
- package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
- package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
- /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
- /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
# PHASE 3H - Variant Property Configuration Analysis
|
|
2
|
-
|
|
3
|
-
Analyze how Figma variant/state properties (booleans, instance swaps) map to Swift configuration types.
|
|
4
|
-
Detects when Figma's boolean-only exposure is insufficient for a sub-component's actual configuration needs.
|
|
5
|
-
|
|
6
|
-
required - always execute this phase.
|
|
7
|
-
PARALLEL WITH: Phase 3A, 3B, 3C, 3E, 3F (all read from pass1/ independently)
|
|
8
|
-
MUST COMPLETE BEFORE: Phase 3D (which consumes this output)
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## PRE-CHECK
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
Read: {artifactPath}/pass1/component_properties.json
|
|
16
|
-
Read: {artifactPath}/pass1/code_connect_map_response.json
|
|
17
|
-
Read: {artifactPath}/IMPLEMENTATION_HISTORY.md
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Extract: `componentName`, `artifactPath`.
|
|
21
|
-
|
|
22
|
-
If any required file is missing:
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
STATUS: HALT
|
|
26
|
-
PHASE: phase-3h
|
|
27
|
-
GATE: PRE_CHECK
|
|
28
|
-
REASON: Required Phase 1 artifacts missing.
|
|
29
|
-
COMPLETED_GATES: []
|
|
30
|
-
ARTIFACTS_CREATED: none
|
|
31
|
-
USER_ACTION_REQUIRED: Run Phase 1 first to gather Figma data.
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## GATE 1: INDEX_CODE_CONNECT_MAP
|
|
37
|
-
|
|
38
|
-
Parse `code_connect_map_response.json` and classify every entry:
|
|
39
|
-
|
|
40
|
-
| Entry Pattern | Classification |
|
|
41
|
-
|---|---|
|
|
42
|
-
| `label` = our platform (SwiftUI) AND no `componentName` AND `snippet` matches `Image.xxx` | `ICON` |
|
|
43
|
-
| `label` = our platform AND `componentName` present AND `source` URL present | `SUBCOMPONENT` |
|
|
44
|
-
| `label` ≠ our platform (e.g., Compose, React) | `CROSS_PLATFORM` - ignore |
|
|
45
|
-
|
|
46
|
-
Build a lookup: `{ nodeId → { classification, componentName?, source?, snippet } }`
|
|
47
|
-
|
|
48
|
-
If code_connect_map is empty or missing → set `codeConnectAvailable = false`. Continue - all booleans will be `UNCLASSIFIED` and 3D handles them.
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## GATE 2: CLASSIFY_BOOLEAN_PROPERTIES
|
|
53
|
-
|
|
54
|
-
For each entry in `booleanProperties` from `component_properties.json`, walk this decision tree:
|
|
55
|
-
|
|
56
|
-
### Step 1: Check for paired Instance Swap
|
|
57
|
-
|
|
58
|
-
Does a `nestedComponents` entry share the same base name?
|
|
59
|
-
- Boolean `"Left Icon"` ↔ nestedComponent `"↪ Left Icon#965:54"` → **paired**
|
|
60
|
-
|
|
61
|
-
If paired with INSTANCE_SWAP → go to Step 2.
|
|
62
|
-
If not paired → go to Step 3.
|
|
63
|
-
|
|
64
|
-
### Step 2: Resolve paired Bool + InstanceSwap
|
|
65
|
-
|
|
66
|
-
Look up the instance swap's nodes in the code_connect_map index (GATE 1):
|
|
67
|
-
|
|
68
|
-
| code_connect_map result | Classification | Notes |
|
|
69
|
-
|---|---|---|
|
|
70
|
-
| Found as `ICON` (`Image.xxx` snippet) | `ICON_BOOLEAN_GATED` | Swift type resolved in GATE 3 |
|
|
71
|
-
| Found as `SUBCOMPONENT` (`componentName` + `source`) | `KNOWN_SUBCOMPONENT` | Swift type resolved in GATE 3 |
|
|
72
|
-
| Not found in code_connect_map | `UNMAPPED_SUBCOMPONENT` | → **HALT** |
|
|
73
|
-
|
|
74
|
-
**Node matching**: The instance swap's `nodeId` from `nestedComponents` is the definition ID. Variant-specific instance IDs appear in code_connect_map. Match by searching for code_connect_map entries whose `data-name` (from surrounding context) corresponds to the instance swap name. If ambiguous, check ALL code_connect_map ICON/SUBCOMPONENT entries - group by snippet pattern and correlate with the instance swap slot.
|
|
75
|
-
|
|
76
|
-
### Step 3: Resolve unpaired Boolean
|
|
77
|
-
|
|
78
|
-
**3a. Check for paired Text Slot:**
|
|
79
|
-
Does a `textSlots` entry share the same base name?
|
|
80
|
-
- Boolean `"Paragraph"` ↔ textSlot `"↪ Paragraph#965:56"` → **paired**
|
|
81
|
-
|
|
82
|
-
If paired → classify as `CONTENT_LEAF`.
|
|
83
|
-
|
|
84
|
-
**3b. Check code_connect_map for sub-component:**
|
|
85
|
-
Are there code_connect_map entries classified as `SUBCOMPONENT` whose `componentName` matches the boolean's semantic meaning?
|
|
86
|
-
- Boolean `"Text Link"` → code_connect_map has entries with `componentName: "Textlink"` → **match**
|
|
87
|
-
|
|
88
|
-
If matched → classify as `KNOWN_SUBCOMPONENT`.
|
|
89
|
-
|
|
90
|
-
**3c. Otherwise:**
|
|
91
|
-
Classify as `UNCLASSIFIED`. Phase 3D will determine if this is a section toggle, decorative leaf, or behavioral bool using design_context HTML structure analysis.
|
|
92
|
-
|
|
93
|
-
### Step 4: Check for Repeating Patterns
|
|
94
|
-
|
|
95
|
-
Booleans that form a numbered series (e.g., `"List Item 1"`, `"List Item 2"`, ..., `"List Item 5"`) paired with corresponding text slots → classify all as `REPEATING_PATTERN_MEMBER`.
|
|
96
|
-
|
|
97
|
-
Their container boolean (e.g., `"List"`) → classify as `REPEATING_PATTERN_CONTAINER`.
|
|
98
|
-
|
|
99
|
-
### Step 5: Check for Paired Action Sub-Component
|
|
100
|
-
|
|
101
|
-
For each `KNOWN_SUBCOMPONENT` classified in Step 2 or 3b, determine if the sub-component semantically requires a user action (closure):
|
|
102
|
-
|
|
103
|
-
**Signals for action pairing:**
|
|
104
|
-
- Sub-component is a button (TurkishButton, IconButton, TextLink, etc.)
|
|
105
|
-
- Sub-component is an interactive element (link, toggle, tap target)
|
|
106
|
-
- The boolean-gated element in Figma represents a tappable area
|
|
107
|
-
|
|
108
|
-
**Signals against action pairing:**
|
|
109
|
-
- Sub-component is display-only (badge, label, price section, indicator)
|
|
110
|
-
- Sub-component shows information without user interaction
|
|
111
|
-
|
|
112
|
-
If action pairing detected → reclassify as `PAIRED_ACTION_SUBCOMPONENT`.
|
|
113
|
-
|
|
114
|
-
This classification tells downstream phases that:
|
|
115
|
-
1. The sub-component needs both data (config props) and a closure (action)
|
|
116
|
-
2. These must be paired at the call site - one without the other is nonsensical
|
|
117
|
-
3. A paired modifier pattern is required (not separate config prop + closure)
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## GATE 3: RESOLVE_SWIFT_TYPES
|
|
122
|
-
|
|
123
|
-
For each classified boolean, determine the Swift type:
|
|
124
|
-
|
|
125
|
-
### ICON_BOOLEAN_GATED
|
|
126
|
-
|
|
127
|
-
Analyze whether the icon has a **computed default** that varies by component state:
|
|
128
|
-
|
|
129
|
-
- Read the icon `snippet` values from code_connect_map entries across different variant instances
|
|
130
|
-
- If ALL entries show the same `Image.xxx` value BUT the icon semantically correlates with a variant enum (e.g., `Image.warningCircle` correlates with `Feedback.warning`), check if the component logically needs different icons per variant state
|
|
131
|
-
- If the icon default is **dynamic** (varies by variant state or is computed internally) → `Optional3<Image>`
|
|
132
|
-
- `.default` = component computes the icon from its own state
|
|
133
|
-
- `.none` = explicitly hidden
|
|
134
|
-
- `.some(Image)` = custom override
|
|
135
|
-
- If the icon default is **static** (always the same, no variant dependency) → `Image?`
|
|
136
|
-
- `nil` = hidden
|
|
137
|
-
- `Image(...)` = shown
|
|
138
|
-
|
|
139
|
-
**Signals for dynamic default:**
|
|
140
|
-
- Icon name contains the variant value (e.g., `warningCircle` + variant `Feedback` has `Warning`)
|
|
141
|
-
- Component has multiple feedback/state/type variants that typically drive icon changes
|
|
142
|
-
- The old/discarded implementation (if mend mode) used a three-state or computed icon pattern
|
|
143
|
-
|
|
144
|
-
**Signals for static default:**
|
|
145
|
-
- Icon is generic (e.g., `caretDown`, `chevronRight`) with no variant correlation
|
|
146
|
-
- Icon appears in ALL variants identically with no semantic relationship to variant values
|
|
147
|
-
|
|
148
|
-
**When uncertain:** Prefer `Optional3<Image>` - it's strictly more expressive than `Image?` and never wrong. The consumer can always use `.default` instead of being forced to know the internal default.
|
|
149
|
-
|
|
150
|
-
### KNOWN_SUBCOMPONENT
|
|
151
|
-
|
|
152
|
-
1. Extract `componentName` and `source` from code_connect_map
|
|
153
|
-
2. Check if `{ComponentName}Configuration.swift` exists in the codebase:
|
|
154
|
-
```
|
|
155
|
-
Glob: Sources/UIComponents/**/{ComponentName}Configuration.swift
|
|
156
|
-
```
|
|
157
|
-
3. **Filter sub-component props - static vs dynamic:**
|
|
158
|
-
|
|
159
|
-
Read the sub-component's Configuration (or init for SIMPLE). For each property, determine:
|
|
160
|
-
- **Dynamic**: Content props that the caller controls (title, text, label, description, icon when context-dependent). These carry meaning unique to each usage.
|
|
161
|
-
- **Static**: Styling/layout props that the parent component dictates (style, size, colorTheme, iconPosition). These are internal design decisions - same for every instance of this sub-component within the parent.
|
|
162
|
-
|
|
163
|
-
**Rule:** If a prop's value is fixed by the parent's design (e.g., secondary button always uses `style: .ghost, size: .default`) → static. If a prop carries caller-specific content → dynamic.
|
|
164
|
-
|
|
165
|
-
4. Resolve based on dynamic prop count:
|
|
166
|
-
|
|
167
|
-
| Dynamic Props | Swift Type | Notes |
|
|
168
|
-
|---|---|---|
|
|
169
|
-
| 0 | `Bool?` or just the boolean presence | Sub-component is fully static, parent hardcodes everything |
|
|
170
|
-
| 1 | Unwrap to the prop type (e.g., `String?`) | Single dynamic prop, nil = hidden |
|
|
171
|
-
| 2+ | Mini config struct (e.g., `PriceConfiguration?`) | Multiple dynamic props grouped, nil = hidden |
|
|
172
|
-
| Component doesn't exist | **HALT** | Sub-component must be implemented first |
|
|
173
|
-
|
|
174
|
-
**Mini config structs** contain ONLY the dynamic props - static props are NOT exposed:
|
|
175
|
-
```swift
|
|
176
|
-
// TurkishButton has 6 props, but in BottomActions context only title is dynamic:
|
|
177
|
-
// → secondaryButtonTitle: String? (not TurkishButtonConfiguration?)
|
|
178
|
-
|
|
179
|
-
// PriceSection has 5 props, 4 are dynamic, 1 (textStyle) is static:
|
|
180
|
-
// → priceConfiguration: PriceConfiguration?
|
|
181
|
-
// struct PriceConfiguration { label, currency, wholeAmount, decimalAmount }
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
Record the static props and their fixed values in the artifact - Phase 4B needs them to hardcode internally.
|
|
185
|
-
|
|
186
|
-
### PAIRED_ACTION_SUBCOMPONENT
|
|
187
|
-
|
|
188
|
-
Same prop filtering as KNOWN_SUBCOMPONENT (steps 1-4 above), plus:
|
|
189
|
-
|
|
190
|
-
5. Record that a closure dependency is required alongside the config/prop
|
|
191
|
-
6. The `swiftType` follows the same 0/1/2+ dynamic prop rules
|
|
192
|
-
7. Add `pairedClosure` field to the artifact entry specifying the closure type (e.g., `() -> Void`)
|
|
193
|
-
|
|
194
|
-
The pairing is expressed in Phase 4 as a **paired modifier** that binds data + closure at the call site:
|
|
195
|
-
```swift
|
|
196
|
-
// 1 dynamic prop + action:
|
|
197
|
-
func secondaryButton(_ title: String, action: @escaping () -> Void) -> Self
|
|
198
|
-
|
|
199
|
-
// 2+ dynamic props + action:
|
|
200
|
-
func actionLink(_ config: ActionLinkConfiguration, action: @escaping () -> Void) -> Self
|
|
201
|
-
|
|
202
|
-
// 0 dynamic props + action (fully static sub-component, just needs closure):
|
|
203
|
-
func dismissButton(action: @escaping () -> Void) -> Self
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
### CONTENT_LEAF
|
|
207
|
-
|
|
208
|
-
Swift type: `String?` - `nil` = hidden. The boolean is dropped (merged into the optional).
|
|
209
|
-
|
|
210
|
-
### REPEATING_PATTERN_MEMBER / REPEATING_PATTERN_CONTAINER
|
|
211
|
-
|
|
212
|
-
Swift type: merged into array (e.g., `[String]`, `[ItemRow]`). Empty array = hidden.
|
|
213
|
-
|
|
214
|
-
### UNMAPPED_SUBCOMPONENT
|
|
215
|
-
|
|
216
|
-
Swift type: **cannot determine**.
|
|
217
|
-
|
|
218
|
-
```
|
|
219
|
-
STATUS: HALT
|
|
220
|
-
PHASE: phase-3h
|
|
221
|
-
GATE: RESOLVE_SWIFT_TYPES
|
|
222
|
-
REASON: Boolean "{boolName}" gates an unmapped sub-component with no code_connect_map entry.
|
|
223
|
-
Figma key: {figmaKey}
|
|
224
|
-
USER_ACTION_REQUIRED: The sub-component must be implemented and have Code Connect published first.
|
|
225
|
-
Then re-run Phase 1 (to get updated code_connect_map) → re-run Phase 3H.
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
### UNCLASSIFIED
|
|
229
|
-
|
|
230
|
-
Swift type: deferred to Phase 3D. Output `"swiftType": null, "deferredTo": "3D"`.
|
|
231
|
-
|
|
232
|
-
---
|
|
233
|
-
|
|
234
|
-
## GATE 4: WRITE_ARTIFACTS
|
|
235
|
-
|
|
236
|
-
### `{artifactPath}/pass3/04c_variant_config_analysis.json`
|
|
237
|
-
|
|
238
|
-
```json
|
|
239
|
-
{
|
|
240
|
-
"componentName": "{componentName}",
|
|
241
|
-
"generated": "{ISO_DATE}",
|
|
242
|
-
"codeConnectAvailable": true,
|
|
243
|
-
"classifications": [
|
|
244
|
-
{
|
|
245
|
-
"figmaProperty": "{boolean name}",
|
|
246
|
-
"figmaKey": "{figmaKey from component_properties}",
|
|
247
|
-
"type": "BOOLEAN",
|
|
248
|
-
"pairedWith": "{figmaKey of paired instance swap or text slot, or null}",
|
|
249
|
-
"pairedType": "INSTANCE_SWAP | TEXT | null",
|
|
250
|
-
"classification": "ICON_BOOLEAN_GATED | KNOWN_SUBCOMPONENT | PAIRED_ACTION_SUBCOMPONENT | CONTENT_LEAF | REPEATING_PATTERN_MEMBER | REPEATING_PATTERN_CONTAINER | UNMAPPED_SUBCOMPONENT | UNCLASSIFIED",
|
|
251
|
-
"codeConnectSignal": "{what was found in code_connect_map, or 'absent'}",
|
|
252
|
-
"subComponent": "{componentName from code_connect_map, if sub-component}",
|
|
253
|
-
"configExists": true,
|
|
254
|
-
"configType": "{Name}Configuration",
|
|
255
|
-
"swiftType": "Optional3<Image> | String? | PriceConfiguration? | Bool | null",
|
|
256
|
-
"swiftName": "{suggested Swift property name}",
|
|
257
|
-
"dynamicProps": ["{list of dynamic prop names and types, for KNOWN_SUBCOMPONENT / PAIRED_ACTION_SUBCOMPONENT}"],
|
|
258
|
-
"staticProps": ["{list of static prop names, values, and types - parent hardcodes these}"],
|
|
259
|
-
"pairedClosure": "(() -> Void)? | null - only for PAIRED_ACTION_SUBCOMPONENT",
|
|
260
|
-
"rationale": "{why this classification and type were chosen, including static/dynamic reasoning}",
|
|
261
|
-
"halt": false,
|
|
262
|
-
"deferredTo": null
|
|
263
|
-
}
|
|
264
|
-
],
|
|
265
|
-
"summary": {
|
|
266
|
-
"total": 0,
|
|
267
|
-
"iconBooleanGated": 0,
|
|
268
|
-
"knownSubComponent": 0,
|
|
269
|
-
"pairedActionSubComponent": 0,
|
|
270
|
-
"contentLeaf": 0,
|
|
271
|
-
"sectionToggle": 0,
|
|
272
|
-
"repeatingPattern": 0,
|
|
273
|
-
"unmapped": 0,
|
|
274
|
-
"unclassified": 0,
|
|
275
|
-
"halted": false
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### `{artifactPath}/pass3/04c_variant_config_analysis.md`
|
|
281
|
-
|
|
282
|
-
Human-readable version with full rationale for each classification. Include:
|
|
283
|
-
- The decision tree path taken for each boolean
|
|
284
|
-
- code_connect_map evidence (snippet, componentName, source)
|
|
285
|
-
- Configuration existence check results
|
|
286
|
-
- Dynamic vs static default reasoning for icons
|
|
287
|
-
- HALT details for unmapped sub-components
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
## DOWNSTREAM CONSUMERS
|
|
292
|
-
|
|
293
|
-
This output is consumed by:
|
|
294
|
-
|
|
295
|
-
| Phase | Artifact Read | Usage |
|
|
296
|
-
|---|---|---|
|
|
297
|
-
| **3D** (GATE 2: Architecture) | `04c_variant_config_analysis.json` | Uses classifications for section2.2 Sub-Component Detection and section2.3 Property Classification. Does NOT re-classify - consumes directly. Resolves UNCLASSIFIED entries using design_context. |
|
|
298
|
-
| **4A** (Configuration) | `04c_variant_config_analysis.json` | Uses `swiftType` for property declarations. Only `dynamicProps` go in config - `staticProps` are omitted. Creates mini config structs for 2+ dynamic props. |
|
|
299
|
-
| **4B** (View) | `04c_variant_config_analysis.json` | For KNOWN_SUBCOMPONENT: instantiates sub-component internally with `staticProps` hardcoded. For PAIRED_ACTION_SUBCOMPONENT: generates paired modifier binding data+closure. For ICON with Optional3: switches on `.default`/`.none`/`.some`. |
|
|
300
|
-
| **6** (Code Connect) | `04c_variant_config_analysis.json` | For KNOWN_SUBCOMPONENT/PAIRED_ACTION_SUBCOMPONENT: `@FigmaBoolean` maps to `nil`/default-config. For ICON with Optional3: `@FigmaBoolean` maps to `.default`/`.none`. No ternary expressions. |
|
|
301
|
-
|
|
302
|
-
---
|
|
303
|
-
|
|
304
|
-
## VALIDATION CHECKLIST
|
|
305
|
-
|
|
306
|
-
```
|
|
307
|
-
[ ] component_properties.json fully parsed (booleans, instance swaps, text slots)
|
|
308
|
-
[ ] code_connect_map_response.json indexed and classified (ICON, SUBCOMPONENT, CROSS_PLATFORM)
|
|
309
|
-
[ ] Every boolean property has a classification
|
|
310
|
-
[ ] All ICON_BOOLEAN_GATED entries have Image? vs Optional3<Image> decision with rationale
|
|
311
|
-
[ ] All KNOWN_SUBCOMPONENT entries have dynamicProps/staticProps filtered
|
|
312
|
-
[ ] All PAIRED_ACTION_SUBCOMPONENT entries have pairedClosure specified
|
|
313
|
-
[ ] All UNMAPPED_SUBCOMPONENT entries have HALT with clear instructions
|
|
314
|
-
[ ] UNCLASSIFIED entries are flagged for 3D with deferredTo: "3D"
|
|
315
|
-
[ ] Sub-component prop filtering: only dynamic (caller-controlled) props in swiftType, static (design-fixed) recorded separately
|
|
316
|
-
[ ] 04c_variant_config_analysis.json written to pass3/
|
|
317
|
-
[ ] 04c_variant_config_analysis.md written to pass3/
|
|
318
|
-
[ ] Summary counts are correct
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
## SUCCESS OUTPUT
|
|
324
|
-
|
|
325
|
-
```
|
|
326
|
-
STATUS: COMPLETE
|
|
327
|
-
PHASE: phase-3h
|
|
328
|
-
GATES_PASSED: [PRE_CHECK, INDEX_CODE_CONNECT_MAP, CLASSIFY_BOOLEAN_PROPERTIES, RESOLVE_SWIFT_TYPES, WRITE_ARTIFACTS]
|
|
329
|
-
ARTIFACTS_CREATED:
|
|
330
|
-
- {artifactPath}/pass3/04c_variant_config_analysis.json
|
|
331
|
-
- {artifactPath}/pass3/04c_variant_config_analysis.md
|
|
332
|
-
SUMMARY: Classified {total} boolean properties: {iconBooleanGated} icon, {knownSubComponent} sub-component, {pairedActionSubComponent} paired action, {contentLeaf} content leaf, {repeatingPattern} repeating, {unclassified} unclassified (deferred to 3D). Halted: {halted}.
|
|
333
|
-
```
|