@mmerterden/multi-agent-pipeline 8.6.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 +2623 -0
- package/LICENSE +21 -0
- package/README.md +852 -0
- package/docs/FIGMA_PIPELINE.md +138 -0
- package/docs/GENERICITY-REVIEW.md +277 -0
- package/docs/STABILITY-FIX-PLAN.md +168 -0
- package/docs/adr/0001-three-model-triage.md +81 -0
- package/docs/adr/0002-instruction-driven-flag.md +62 -0
- package/docs/adr/0003-unified-shared-skills.md +55 -0
- package/docs/adr/0004-zero-dependency-philosophy.md +60 -0
- package/docs/adr/0005-lazy-phase-docs.md +68 -0
- package/docs/adr/0006-skills-core-external-split.md +52 -0
- package/docs/adr/0007-multi-tool-adapter-framework.md +110 -0
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +98 -0
- package/docs/adr/README.md +33 -0
- package/docs/architecture.md +181 -0
- package/docs/best-practices.md +93 -0
- package/docs/features.md +274 -0
- package/docs/performance.md +116 -0
- package/docs/recovery-guide.md +479 -0
- package/index.js +76 -0
- package/install/_adapters.mjs +69 -0
- package/install/_common.mjs +150 -0
- package/install/_copilot-instructions.mjs +32 -0
- package/install/_dev-only-files.mjs +23 -0
- package/install/_platform-filter.mjs +132 -0
- package/install/_telemetry.mjs +79 -0
- package/install/claude.mjs +332 -0
- package/install/copilot.mjs +254 -0
- package/install/index.mjs +179 -0
- package/install/templates/copilot-instructions.md +319 -0
- package/install.js +24 -0
- package/package.json +78 -0
- package/pipeline/adapters/_base.mjs +288 -0
- package/pipeline/adapters/copilot-chat.mjs +158 -0
- package/pipeline/adapters/cursor.mjs +187 -0
- package/pipeline/agents/android-architect.md +42 -0
- package/pipeline/agents/backend-architect.md +43 -0
- package/pipeline/agents/code-reviewer.md +57 -0
- package/pipeline/agents/dev-critic.md +148 -0
- package/pipeline/agents/explorer.md +34 -0
- package/pipeline/agents/ios-architect.md +41 -0
- package/pipeline/agents/security-auditor.md +98 -0
- package/pipeline/agents/task-clarifier.md +113 -0
- package/pipeline/claude-md-template.md +55 -0
- package/pipeline/commands/archive-guard.md +45 -0
- package/pipeline/commands/deploy.md +54 -0
- package/pipeline/commands/figma-to-swiftui.md +295 -0
- package/pipeline/commands/multi-agent/_account-picker.md +90 -0
- package/pipeline/commands/multi-agent/_dev-context.md +111 -0
- package/pipeline/commands/multi-agent/_input-parser.md +43 -0
- package/pipeline/commands/multi-agent/_repo-picker.md +76 -0
- package/pipeline/commands/multi-agent/autopilot.md +116 -0
- package/pipeline/commands/multi-agent/channels.md +465 -0
- package/pipeline/commands/multi-agent/delete.md +66 -0
- package/pipeline/commands/multi-agent/dev-autopilot.md +120 -0
- package/pipeline/commands/multi-agent/dev-local-autopilot.md +110 -0
- package/pipeline/commands/multi-agent/dev-local.md +105 -0
- package/pipeline/commands/multi-agent/dev.md +246 -0
- package/pipeline/commands/multi-agent/diff-explain.md +68 -0
- package/pipeline/commands/multi-agent/help.md +422 -0
- package/pipeline/commands/multi-agent/issue.md +79 -0
- package/pipeline/commands/multi-agent/jira.md +132 -0
- package/pipeline/commands/multi-agent/kill.md +38 -0
- package/pipeline/commands/multi-agent/language.md +94 -0
- package/pipeline/commands/multi-agent/local-autopilot.md +139 -0
- package/pipeline/commands/multi-agent/local.md +117 -0
- package/pipeline/commands/multi-agent/log.md +25 -0
- package/pipeline/commands/multi-agent/manual-test.md +43 -0
- package/pipeline/commands/multi-agent/purge.md +39 -0
- package/pipeline/commands/multi-agent/refactor.md +188 -0
- package/pipeline/commands/multi-agent/refs/android-guide.md +250 -0
- package/pipeline/commands/multi-agent/refs/audit-guide.md +240 -0
- package/pipeline/commands/multi-agent/refs/backend-guide.md +135 -0
- package/pipeline/commands/multi-agent/refs/channels/confluence.md +153 -0
- package/pipeline/commands/multi-agent/refs/channels/issue-comment.md +141 -0
- package/pipeline/commands/multi-agent/refs/channels/jira.md +127 -0
- package/pipeline/commands/multi-agent/refs/channels/pr-review-actions.md +135 -0
- package/pipeline/commands/multi-agent/refs/channels/pr.md +139 -0
- package/pipeline/commands/multi-agent/refs/channels/wiki.md +66 -0
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +92 -0
- package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +326 -0
- package/pipeline/commands/multi-agent/refs/frontend-guide.md +136 -0
- package/pipeline/commands/multi-agent/refs/issue-jira-triad.md +104 -0
- package/pipeline/commands/multi-agent/refs/keychain.md +80 -0
- package/pipeline/commands/multi-agent/refs/knowledge.md +112 -0
- package/pipeline/commands/multi-agent/refs/multi-repo-integration-build.md +207 -0
- package/pipeline/commands/multi-agent/refs/phases/log-format.md +89 -0
- package/pipeline/commands/multi-agent/refs/phases/modes.md +156 -0
- package/pipeline/commands/multi-agent/refs/phases/operations.md +91 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +481 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +264 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +278 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +364 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +378 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +129 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-6-commit.md +339 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +361 -0
- package/pipeline/commands/multi-agent/refs/phases.md +187 -0
- package/pipeline/commands/multi-agent/refs/progress-contract.md +155 -0
- package/pipeline/commands/multi-agent/refs/rules.md +189 -0
- package/pipeline/commands/multi-agent/refs/swiftui-guide.md +254 -0
- package/pipeline/commands/multi-agent/refs/tracker-contract.md +256 -0
- package/pipeline/commands/multi-agent/refs/wiki-capture.md +109 -0
- package/pipeline/commands/multi-agent/resume.md +28 -0
- package/pipeline/commands/multi-agent/review.md +228 -0
- package/pipeline/commands/multi-agent/scan.md +74 -0
- package/pipeline/commands/multi-agent/search.md +97 -0
- package/pipeline/commands/multi-agent/setup.md +767 -0
- package/pipeline/commands/multi-agent/stack.md +48 -0
- package/pipeline/commands/multi-agent/status.md +38 -0
- package/pipeline/commands/multi-agent/sync.md +319 -0
- package/pipeline/commands/multi-agent/test.md +39 -0
- package/pipeline/commands/multi-agent/update.md +88 -0
- package/pipeline/commands/multi-agent.md +293 -0
- package/pipeline/commands/security-review.md +6 -0
- package/pipeline/commands/sim-test.md +256 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +25 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-2-plan.json +30 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/task.json +12 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-2-plan.json +43 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +35 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +35 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +12 -0
- package/pipeline/eval/golden-tasks/README.md +65 -0
- package/pipeline/eval/triage/01-empty-findings/expected.json +6 -0
- package/pipeline/eval/triage/01-empty-findings/input.json +5 -0
- package/pipeline/eval/triage/01-empty-findings/notes.md +7 -0
- package/pipeline/eval/triage/02-real-blocker/expected.json +15 -0
- package/pipeline/eval/triage/02-real-blocker/input.json +14 -0
- package/pipeline/eval/triage/02-real-blocker/notes.md +7 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/expected.json +18 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/input.json +14 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +10 -0
- package/pipeline/eval/triage/04-false-positive-reject/expected.json +18 -0
- package/pipeline/eval/triage/04-false-positive-reject/input.json +14 -0
- package/pipeline/eval/triage/04-false-positive-reject/notes.md +10 -0
- package/pipeline/eval/triage/05-mixed-classification/expected.json +43 -0
- package/pipeline/eval/triage/05-mixed-classification/input.json +38 -0
- package/pipeline/eval/triage/05-mixed-classification/notes.md +17 -0
- package/pipeline/eval/triage/06-severity-mismatch/expected.json +15 -0
- package/pipeline/eval/triage/06-severity-mismatch/input.json +14 -0
- package/pipeline/eval/triage/06-severity-mismatch/notes.md +9 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/expected.json +27 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/input.json +22 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +9 -0
- package/pipeline/eval/triage/08-style-misclassified/expected.json +18 -0
- package/pipeline/eval/triage/08-style-misclassified/input.json +14 -0
- package/pipeline/eval/triage/08-style-misclassified/notes.md +9 -0
- package/pipeline/eval/triage/09-cascading-finding/expected.json +23 -0
- package/pipeline/eval/triage/09-cascading-finding/input.json +22 -0
- package/pipeline/eval/triage/09-cascading-finding/notes.md +9 -0
- package/pipeline/eval/triage/10-deferred-crossref/expected.json +18 -0
- package/pipeline/eval/triage/10-deferred-crossref/input.json +14 -0
- package/pipeline/eval/triage/10-deferred-crossref/notes.md +9 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +27 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +22 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +14 -0
- package/pipeline/eval/triage/README.md +54 -0
- package/pipeline/lib/account-resolver.sh +204 -0
- package/pipeline/lib/channels-multi-repo.sh +218 -0
- package/pipeline/lib/context-link-extractor.sh +192 -0
- package/pipeline/lib/credential-store-resolver.sh +57 -0
- package/pipeline/lib/credential-store.sh +226 -0
- package/pipeline/lib/fetch-confluence.sh +358 -0
- package/pipeline/lib/fetch-crashlytics.sh +314 -0
- package/pipeline/lib/fetch-fortify.sh +321 -0
- package/pipeline/lib/fetch-swagger.sh +270 -0
- package/pipeline/lib/issue-fetcher.sh +333 -0
- package/pipeline/lib/multi-repo-pipeline.sh +252 -0
- package/pipeline/lib/plan-todos.sh +284 -0
- package/pipeline/lib/post-pr-review.sh +374 -0
- package/pipeline/lib/repo-cache.sh +231 -0
- package/pipeline/lib/review-watch.sh +244 -0
- package/pipeline/lib/shadow-git.sh +222 -0
- package/pipeline/lib/submodule-detector.sh +177 -0
- package/pipeline/lib/vercel-deploy.sh +170 -0
- package/pipeline/preferences-template.json +132 -0
- package/pipeline/rules/app-store-guidelines.md +59 -0
- package/pipeline/rules/code-review.md +27 -0
- package/pipeline/rules/code-style.md +37 -0
- package/pipeline/rules/debugging.md +24 -0
- package/pipeline/rules/figma-pipeline.md +190 -0
- package/pipeline/rules/git-conventions.md +29 -0
- package/pipeline/rules/kotlin-android.md +92 -0
- package/pipeline/rules/performance.md +23 -0
- package/pipeline/rules/security.md +39 -0
- package/pipeline/rules/swiftui-qa.md +32 -0
- package/pipeline/rules/tdd.md +25 -0
- package/pipeline/rules/testing.md +37 -0
- package/pipeline/schemas/agent-state.schema.json +273 -0
- package/pipeline/schemas/analysis-output.schema.json +59 -0
- package/pipeline/schemas/clarify-output.schema.json +74 -0
- package/pipeline/schemas/dev-critic-output.schema.json +104 -0
- package/pipeline/schemas/diff-risk.schema.json +78 -0
- package/pipeline/schemas/figma-project-config.schema.json +372 -0
- package/pipeline/schemas/migrations/README.md +73 -0
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +112 -0
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +75 -0
- package/pipeline/schemas/migrations/prefs-2.1.0-to-2.2.0.mjs +64 -0
- package/pipeline/schemas/migrations/prefs-2.2.0-to-2.3.0.mjs +36 -0
- package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +34 -0
- package/pipeline/schemas/plan-todos.schema.json +62 -0
- package/pipeline/schemas/planning-output.schema.json +57 -0
- package/pipeline/schemas/prefs.schema.json +1137 -0
- package/pipeline/schemas/reviewer-output.schema.json +55 -0
- package/pipeline/schemas/test-gap.schema.json +64 -0
- package/pipeline/schemas/token-budget.json +17 -0
- package/pipeline/schemas/triage-corpus.schema.json +31 -0
- package/pipeline/schemas/triage-output.schema.json +115 -0
- package/pipeline/scripts/.last-figma-sync-plan.json +23 -0
- package/pipeline/scripts/README-figma-smokes.md +34 -0
- package/pipeline/scripts/README.md +104 -0
- package/pipeline/scripts/aggregate-metrics.mjs +310 -0
- package/pipeline/scripts/audit-log-rotate.sh +61 -0
- package/pipeline/scripts/audit-log.sh +69 -0
- package/pipeline/scripts/benchmark-phase-0.sh +128 -0
- package/pipeline/scripts/build-skills-index.mjs +139 -0
- package/pipeline/scripts/classify-plan-safety.mjs +177 -0
- package/pipeline/scripts/cost-table.json +27 -0
- package/pipeline/scripts/diff-explain.mjs +276 -0
- package/pipeline/scripts/diff-risk-score.mjs +328 -0
- package/pipeline/scripts/eval-golden-tasks-live.mjs +294 -0
- package/pipeline/scripts/eval-golden-tasks.mjs +223 -0
- package/pipeline/scripts/eval-triage.mjs +171 -0
- package/pipeline/scripts/figma-placeholder-map.json +191 -0
- package/pipeline/scripts/fixtures/diff-risk-android.diff +40 -0
- package/pipeline/scripts/fixtures/diff-risk-ios.diff +48 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +16 -0
- package/pipeline/scripts/fixtures/test-gap-node.diff +30 -0
- package/pipeline/scripts/fixtures/test-gap-python.diff +32 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +170 -0
- package/pipeline/scripts/gen-skills-index.mjs +90 -0
- package/pipeline/scripts/github-ssh-setup.sh +103 -0
- package/pipeline/scripts/import-figma-skills.sh +253 -0
- package/pipeline/scripts/keychain-save.sh +74 -0
- package/pipeline/scripts/keychain.py +294 -0
- package/pipeline/scripts/log-metric.sh +98 -0
- package/pipeline/scripts/match-skills.mjs +167 -0
- package/pipeline/scripts/memory-load.sh +46 -0
- package/pipeline/scripts/memory-save.sh +76 -0
- package/pipeline/scripts/migrate-prefs.mjs +390 -0
- package/pipeline/scripts/migrate-state.mjs +215 -0
- package/pipeline/scripts/output-quality-check.sh +125 -0
- package/pipeline/scripts/phase-banner.sh +158 -0
- package/pipeline/scripts/phase-tracker.sh +548 -0
- package/pipeline/scripts/pre-commit-check.sh +69 -0
- package/pipeline/scripts/pre-push-check.sh +77 -0
- package/pipeline/scripts/render-agent-log-cost.sh +149 -0
- package/pipeline/scripts/render-cost-summary.sh +137 -0
- package/pipeline/scripts/render-work-summary.sh +195 -0
- package/pipeline/scripts/repo-map.mjs +367 -0
- package/pipeline/scripts/run-aggregator.mjs +298 -0
- package/pipeline/scripts/scan-skills.sh +332 -0
- package/pipeline/scripts/search-logs.sh +291 -0
- package/pipeline/scripts/sign-skills.sh +67 -0
- package/pipeline/scripts/smoke-adapters.sh +207 -0
- package/pipeline/scripts/smoke-add-detail.sh +137 -0
- package/pipeline/scripts/smoke-agent-log-cost.sh +183 -0
- package/pipeline/scripts/smoke-agent-model-routing.sh +87 -0
- package/pipeline/scripts/smoke-bitbucket-contract.sh +223 -0
- package/pipeline/scripts/smoke-channels-flow.sh +130 -0
- package/pipeline/scripts/smoke-ci-workflows.sh +88 -0
- package/pipeline/scripts/smoke-clarify.sh +148 -0
- package/pipeline/scripts/smoke-commands-skills-parity.sh +87 -0
- package/pipeline/scripts/smoke-compliance-skills.sh +119 -0
- package/pipeline/scripts/smoke-cost-summary.sh +139 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +198 -0
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +128 -0
- package/pipeline/scripts/smoke-delete-flow.sh +151 -0
- package/pipeline/scripts/smoke-dev-critic.sh +144 -0
- package/pipeline/scripts/smoke-diff-explain.sh +128 -0
- package/pipeline/scripts/smoke-diff-risk.sh +161 -0
- package/pipeline/scripts/smoke-dynamic-skill-loading.sh +160 -0
- package/pipeline/scripts/smoke-eval-live.sh +136 -0
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +71 -0
- package/pipeline/scripts/smoke-figma-android-parity.sh +148 -0
- package/pipeline/scripts/smoke-figma-config-schema.sh +144 -0
- package/pipeline/scripts/smoke-figma-credential-store.sh +105 -0
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +177 -0
- package/pipeline/scripts/smoke-figma-dispatch.sh +123 -0
- package/pipeline/scripts/smoke-figma-skill-import.sh +174 -0
- package/pipeline/scripts/smoke-figma-sync.sh +149 -0
- package/pipeline/scripts/smoke-identity-isolation.sh +70 -0
- package/pipeline/scripts/smoke-install-layout.sh +241 -0
- package/pipeline/scripts/smoke-install-leak-gate.sh +125 -0
- package/pipeline/scripts/smoke-issue-comment-template.sh +86 -0
- package/pipeline/scripts/smoke-issue-jira-triad.sh +120 -0
- package/pipeline/scripts/smoke-keychain.sh +158 -0
- package/pipeline/scripts/smoke-language-axis.sh +109 -0
- package/pipeline/scripts/smoke-lib-scripts.sh +395 -0
- package/pipeline/scripts/smoke-migrate-state.sh +102 -0
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +158 -0
- package/pipeline/scripts/smoke-multi-repo-integration.sh +116 -0
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +61 -0
- package/pipeline/scripts/smoke-no-token-prompt.sh +69 -0
- package/pipeline/scripts/smoke-pat-audit.sh +107 -0
- package/pipeline/scripts/smoke-per-repo-memory.sh +156 -0
- package/pipeline/scripts/smoke-personal-data.sh +82 -0
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +170 -0
- package/pipeline/scripts/smoke-phase-6-multi.sh +79 -0
- package/pipeline/scripts/smoke-phase-banner.sh +101 -0
- package/pipeline/scripts/smoke-phase-tracker.sh +255 -0
- package/pipeline/scripts/smoke-phase0-bridge-contract.sh +241 -0
- package/pipeline/scripts/smoke-phase4-triage.sh +142 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +71 -0
- package/pipeline/scripts/smoke-plan-safety.sh +139 -0
- package/pipeline/scripts/smoke-plan-todos.sh +193 -0
- package/pipeline/scripts/smoke-pr-review-actions.sh +152 -0
- package/pipeline/scripts/smoke-pre-commit.sh +138 -0
- package/pipeline/scripts/smoke-pref-migration.sh +224 -0
- package/pipeline/scripts/smoke-prefs-language.sh +134 -0
- package/pipeline/scripts/smoke-progress-contract.sh +118 -0
- package/pipeline/scripts/smoke-push-retry.sh +75 -0
- package/pipeline/scripts/smoke-readme-counts.sh +120 -0
- package/pipeline/scripts/smoke-repo-map.sh +300 -0
- package/pipeline/scripts/smoke-review-watch.sh +134 -0
- package/pipeline/scripts/smoke-run-aggregator.sh +216 -0
- package/pipeline/scripts/smoke-schema-validation.sh +173 -0
- package/pipeline/scripts/smoke-search.sh +187 -0
- package/pipeline/scripts/smoke-shadow-git.sh +175 -0
- package/pipeline/scripts/smoke-skill-authoring.sh +142 -0
- package/pipeline/scripts/smoke-skill-language.sh +83 -0
- package/pipeline/scripts/smoke-skill-manifest.sh +138 -0
- package/pipeline/scripts/smoke-skill-scan.sh +198 -0
- package/pipeline/scripts/smoke-stack-swap.sh +132 -0
- package/pipeline/scripts/smoke-subagent-validators.sh +105 -0
- package/pipeline/scripts/smoke-sync-delegation.sh +74 -0
- package/pipeline/scripts/smoke-sync-parity.sh +92 -0
- package/pipeline/scripts/smoke-tasklist-ordering.sh +111 -0
- package/pipeline/scripts/smoke-telemetry.sh +147 -0
- package/pipeline/scripts/smoke-test-gap.sh +183 -0
- package/pipeline/scripts/smoke-token-budget.sh +67 -0
- package/pipeline/scripts/smoke-tracker-contract.sh +129 -0
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +65 -0
- package/pipeline/scripts/smoke-triage-memory.sh +174 -0
- package/pipeline/scripts/smoke-url-enrichment.sh +70 -0
- package/pipeline/scripts/smoke-validator-contradiction.sh +67 -0
- package/pipeline/scripts/smoke-vercel-deploy-redact.sh +129 -0
- package/pipeline/scripts/smoke-wiki-integration.sh +146 -0
- package/pipeline/scripts/smoke-work-summary.sh +163 -0
- package/pipeline/scripts/smoke-worktree-path-convention.sh +86 -0
- package/pipeline/scripts/smoke-write-state.sh +115 -0
- package/pipeline/scripts/stack-swap.sh +182 -0
- package/pipeline/scripts/sync-figma-source.sh +228 -0
- package/pipeline/scripts/sync-parity-check.sh +135 -0
- package/pipeline/scripts/test-gap-rules/android.json +25 -0
- package/pipeline/scripts/test-gap-rules/ios.json +29 -0
- package/pipeline/scripts/test-gap-rules/node.json +17 -0
- package/pipeline/scripts/test-gap-rules/python.json +19 -0
- package/pipeline/scripts/test-gap-scan.mjs +343 -0
- package/pipeline/scripts/token-budget-report.mjs +145 -0
- package/pipeline/scripts/triage-memory.mjs +258 -0
- package/pipeline/scripts/ui-tree-dumper.swift +122 -0
- package/pipeline/scripts/uninstall.mjs +331 -0
- package/pipeline/scripts/update-issue-progress.sh +146 -0
- package/pipeline/scripts/validate-analysis.mjs +132 -0
- package/pipeline/scripts/validate-diff-risk.mjs +117 -0
- package/pipeline/scripts/validate-planning.mjs +180 -0
- package/pipeline/scripts/validate-reviewer.mjs +131 -0
- package/pipeline/scripts/validate-schemas.mjs +88 -0
- package/pipeline/scripts/validate-test-gap.mjs +90 -0
- package/pipeline/scripts/validate-triage.mjs +175 -0
- package/pipeline/scripts/verify-skills.sh +126 -0
- package/pipeline/scripts/write-state.mjs +175 -0
- package/pipeline/skills/.skill-manifest.json +779 -0
- package/pipeline/skills/.skills-index.json +1771 -0
- package/pipeline/skills/figma-android/README.md +36 -0
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +62 -0
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +158 -0
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +120 -0
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +35 -0
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +124 -0
- package/pipeline/skills/figma-common/README.md +57 -0
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +277 -0
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +498 -0
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +283 -0
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +362 -0
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +206 -0
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +337 -0
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +211 -0
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +218 -0
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +246 -0
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +73 -0
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +316 -0
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +542 -0
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +745 -0
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +203 -0
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +1015 -0
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +331 -0
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +398 -0
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +104 -0
- package/pipeline/skills/figma-common/figma-review/SKILL.md +395 -0
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +514 -0
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +592 -0
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +129 -0
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +104 -0
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +274 -0
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +808 -0
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +633 -0
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +711 -0
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +233 -0
- package/pipeline/skills/figma-common/performance-start/SKILL.md +425 -0
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +706 -0
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +418 -0
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +67 -0
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +178 -0
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +184 -0
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +219 -0
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +274 -0
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +401 -0
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +57 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +307 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +119 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +174 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +333 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +368 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +393 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +617 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +352 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +337 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +206 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +235 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +214 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +871 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +156 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +175 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +333 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +412 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +336 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +695 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +380 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +262 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +482 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +274 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +636 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +142 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +547 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +39 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +659 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +580 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +51 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +129 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +64 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +531 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +89 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +155 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +196 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +57 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +89 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +227 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +157 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +90 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +116 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +153 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +130 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +218 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +188 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +93 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +98 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +261 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +147 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +182 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +185 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +609 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +261 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +184 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +188 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +768 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +191 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +420 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.json +94 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +336 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +391 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +292 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +1 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +93 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +299 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +343 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +206 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +149 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +281 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +98 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +298 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +195 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +1298 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +228 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +1089 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +141 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +106 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +162 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +105 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +179 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +260 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +260 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +86 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +321 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +1470 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +147 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +629 -0
- package/pipeline/skills/shared/README.md +212 -0
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +315 -0
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +348 -0
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +944 -0
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +51 -0
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +300 -0
- package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +63 -0
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +64 -0
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +56 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +36 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +42 -0
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +66 -0
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +292 -0
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +35 -0
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +38 -0
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +41 -0
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +87 -0
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +53 -0
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +28 -0
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +47 -0
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +42 -0
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +191 -0
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +31 -0
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +62 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +309 -0
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +55 -0
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +41 -0
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +184 -0
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +44 -0
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +34 -0
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +45 -0
- package/pipeline/skills/shared/external/agentflow/SKILL.md +199 -0
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +438 -0
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +584 -0
- package/pipeline/skills/shared/external/android-architecture/SKILL.md +407 -0
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +153 -0
- package/pipeline/skills/shared/external/android-performance/SKILL.md +736 -0
- package/pipeline/skills/shared/external/android-security/SKILL.md +577 -0
- package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +66 -0
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +85 -0
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +910 -0
- package/pipeline/skills/shared/external/app-clips/SKILL.md +436 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +489 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +1076 -0
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +75 -0
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +409 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +411 -0
- package/pipeline/skills/shared/external/app-store-review/references/code-signing.md +259 -0
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +90 -0
- package/pipeline/skills/shared/external/app-store-review/references/rejection-patterns.md +152 -0
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +118 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +500 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +425 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +344 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +508 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +285 -0
- package/pipeline/skills/shared/external/architecture/SKILL.md +60 -0
- package/pipeline/skills/shared/external/authentication/SKILL.md +496 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +211 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +499 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +390 -0
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +461 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +425 -0
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +462 -0
- package/pipeline/skills/shared/external/clean-code/SKILL.md +94 -0
- package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +116 -0
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +492 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +461 -0
- package/pipeline/skills/shared/external/compose-components/SKILL.md +441 -0
- package/pipeline/skills/shared/external/compose-navigation/SKILL.md +436 -0
- package/pipeline/skills/shared/external/compose-testing/SKILL.md +527 -0
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +425 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +409 -0
- package/pipeline/skills/shared/external/context-compression/SKILL.md +266 -0
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +491 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +435 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +388 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +405 -0
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +495 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +420 -0
- package/pipeline/skills/shared/external/coreml/SKILL.md +458 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +765 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +467 -0
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +335 -0
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +422 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +387 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +298 -0
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +37 -0
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +477 -0
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +413 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +460 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +541 -0
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +483 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +326 -0
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +190 -0
- package/pipeline/skills/shared/external/firebase/SKILL.md +61 -0
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +348 -0
- package/pipeline/skills/shared/external/gradle-kotlin-dsl/SKILL.md +552 -0
- package/pipeline/skills/shared/external/healthkit/SKILL.md +498 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +602 -0
- package/pipeline/skills/shared/external/help-skills/SKILL.md +166 -0
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +81 -0
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +95 -0
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +82 -0
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +101 -0
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +94 -0
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +110 -0
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +99 -0
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +81 -0
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +125 -0
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +496 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +455 -0
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +301 -0
- package/pipeline/skills/shared/external/humanizer/SKILL.md +118 -0
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +301 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +140 -0
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +59 -0
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +217 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +418 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +627 -0
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +462 -0
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +441 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +862 -0
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +563 -0
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +1116 -0
- package/pipeline/skills/shared/external/ios-security/SKILL.md +496 -0
- package/pipeline/skills/shared/external/ios-security/references/app-review-guidelines.md +174 -0
- package/pipeline/skills/shared/external/ios-security/references/cryptokit-advanced.md +297 -0
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +354 -0
- package/pipeline/skills/shared/external/ios-security/references/privacy-manifest.md +117 -0
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +101 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +500 -0
- package/pipeline/skills/shared/external/live-activities/references/live-activity-patterns.md +868 -0
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +109 -0
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +110 -0
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +485 -0
- package/pipeline/skills/shared/external/mapkit-location/references/corelocation-patterns.md +730 -0
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +748 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +479 -0
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +64 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +395 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +363 -0
- package/pipeline/skills/shared/external/natural-language/SKILL.md +412 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +311 -0
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +418 -0
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +38 -0
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +235 -0
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +398 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +254 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +387 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/paperkit-integration.md +376 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +302 -0
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +446 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +435 -0
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +501 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +701 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +774 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +869 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/photospicker-patterns.md +597 -0
- package/pipeline/skills/shared/external/play-store-review/SKILL.md +350 -0
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +501 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +677 -0
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +745 -0
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +383 -0
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +290 -0
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +479 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +480 -0
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +386 -0
- package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +506 -0
- package/pipeline/skills/shared/external/room-database/SKILL.md +564 -0
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +483 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +544 -0
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +485 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +478 -0
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +58 -0
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +755 -0
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +487 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +895 -0
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +467 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +408 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +80 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swift-6-2-concurrency.md +233 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +187 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +341 -0
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +113 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +124 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +155 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/async-streams.md +67 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bridging.md +52 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bug-patterns.md +100 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +107 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/diagnostics.md +70 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/hotspots.md +47 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +129 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +224 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +101 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +218 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/unstructured.md +61 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +498 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +505 -0
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +462 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +504 -0
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +97 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +252 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/core-rules.md +52 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/migrating-from-xctest.md +34 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +318 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +254 -0
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +334 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +504 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +975 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +675 -0
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +102 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/class-inheritance.md +104 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/cloudkit.md +10 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/core-rules.md +20 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/indexing.md +27 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/predicates.md +73 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +503 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +821 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +553 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +102 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/accessibility-patterns.md +215 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-advanced.md +403 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-basics.md +284 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-transitions.md +326 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +135 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +602 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +203 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +464 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +266 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/liquid-glass.md +416 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +394 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +318 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +357 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +303 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/performance-patterns.md +403 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/scroll-patterns.md +293 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/sheet-navigation-patterns.md +363 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +417 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +389 -0
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +450 -0
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +425 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +336 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +97 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +69 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +99 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +147 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +98 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +262 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +207 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +177 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +169 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +178 -0
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +371 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +486 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +1097 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +780 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +696 -0
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +487 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +46 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +29 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +33 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +52 -0
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +114 -0
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +108 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/accessibility.md +13 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/api.md +39 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/data.md +43 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/design.md +31 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/hygiene.md +9 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/navigation.md +14 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/performance.md +46 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/swift.md +56 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/views.md +35 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +103 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +428 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +534 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +948 -0
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +210 -0
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +273 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +151 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +95 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +51 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +111 -0
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +309 -0
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +393 -0
- package/pipeline/skills/shared/external/tipkit/SKILL.md +494 -0
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +782 -0
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +336 -0
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +475 -0
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +736 -0
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +738 -0
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +371 -0
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +410 -0
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +567 -0
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +373 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +345 -0
- package/pipeline/skills/shared/external/web-testing/SKILL.md +385 -0
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +497 -0
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +871 -0
- package/pipeline/skills/skills-index.md +205 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# PHASE 0 — Component Initialization
|
|
2
|
+
|
|
3
|
+
Setup component context and create artifact directory before implementation.
|
|
4
|
+
NEXT: Phase 1 (Data Gathering)
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## PRE-CHECK: Setup Marker
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
Read: {repos.packagesContainer}/{repos.artifactsRepo}/ImplementationArtifacts/Figma/.setup-verified.json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
If file does NOT exist:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
STATUS: HALT
|
|
18
|
+
PHASE: phase-0
|
|
19
|
+
GATE: PRE_CHECK_SETUP
|
|
20
|
+
REASON: Environment setup not completed.
|
|
21
|
+
COMPLETED_GATES: []
|
|
22
|
+
ARTIFACTS_CREATED: none
|
|
23
|
+
USER_ACTION_REQUIRED: Run /figma-setup first to configure your environment.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If file exists → proceed to REBUILD_DERIVED_ARTIFACTS.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## REBUILD_DERIVED_ARTIFACTS: Rebuild Gitignored Derived Files
|
|
31
|
+
|
|
32
|
+
Derived artifacts (component-catalog, ui-token-index, merged translations, etc.) are gitignored. Always rebuild to guarantee fresh data before implementation.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
36
|
+
bash "${REPO_ROOT}/.instructions/common/scripts/common-rebuild-derived-artifacts.sh"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If the script exits non-zero:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
STATUS: HALT
|
|
43
|
+
PHASE: phase-0
|
|
44
|
+
GATE: REBUILD_DERIVED_ARTIFACTS
|
|
45
|
+
REASON: Failed to rebuild derived artifacts. Check tool build errors above.
|
|
46
|
+
COMPLETED_GATES: [PRE_CHECK_SETUP]
|
|
47
|
+
ARTIFACTS_CREATED: none
|
|
48
|
+
USER_ACTION_REQUIRED: Fix build errors in {project.slug}-common and retry.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
If exit 0 → proceed to GATE 1.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## GATE 1: EXTRACT_NODE_ID
|
|
56
|
+
|
|
57
|
+
INPUT: User provides Figma URL or node ID.
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
URL: https://figma.com/design/FILEKEY/Name?node-id=123-456
|
|
61
|
+
↑ ↑
|
|
62
|
+
fileKey nodeId=123:456
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Convert `-` to `:` in nodeId.
|
|
66
|
+
|
|
67
|
+
PASS → Store `nodeId`, `fileKey`. Proceed to GATE 2.
|
|
68
|
+
|
|
69
|
+
FAIL →
|
|
70
|
+
```
|
|
71
|
+
STATUS: NEEDS_INPUT
|
|
72
|
+
PHASE: phase-0
|
|
73
|
+
GATE: EXTRACT_NODE_ID
|
|
74
|
+
QUESTION: No node ID found in user input.
|
|
75
|
+
OPTIONS:
|
|
76
|
+
1) Provide Figma URL (format: https://figma.com/design/KEY/Name?node-id=X-Y)
|
|
77
|
+
2) Provide node ID directly (format: X:Y)
|
|
78
|
+
SUGGESTED: Option 1 — paste the full Figma URL
|
|
79
|
+
COMPLETED_GATES: [PRE_CHECK_SETUP]
|
|
80
|
+
CONTEXT: A Figma URL or node ID is required to start implementation.
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## GATE 2: REGISTRY_LOOKUP
|
|
86
|
+
|
|
87
|
+
REF: `reference/registry.md`
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
91
|
+
CONFIG_PATH="${REPO_ROOT}/{repos.common.path}"
|
|
92
|
+
cd "$CONFIG_PATH" && .build/debug/FigmaRegistryUtility lookup --node-id '<NODE_ID>'
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Important:** The utility must run from the config package directory (`cd "$CONFIG_PATH"`) because it resolves `Shared/Figma/Generated/component-registry.json` relative to CWD.
|
|
96
|
+
|
|
97
|
+
PASS → Store from JSON output:
|
|
98
|
+
- `suggestedComponentName`
|
|
99
|
+
- `suggestedComponentLocation`
|
|
100
|
+
- `suggestedArtifactPath`
|
|
101
|
+
- `fileKey` (verify matches GATE 1)
|
|
102
|
+
|
|
103
|
+
Proceed to GATE 3.
|
|
104
|
+
|
|
105
|
+
FAIL (binary not found) →
|
|
106
|
+
```bash
|
|
107
|
+
swift build --package-path "$CONFIG_PATH" --product FigmaRegistryUtility
|
|
108
|
+
```
|
|
109
|
+
Retry GATE 2.
|
|
110
|
+
|
|
111
|
+
FAIL (component not found) →
|
|
112
|
+
```
|
|
113
|
+
STATUS: NEEDS_INPUT
|
|
114
|
+
PHASE: phase-0
|
|
115
|
+
GATE: REGISTRY_LOOKUP
|
|
116
|
+
QUESTION: Component with node ID <NODE_ID> not found in registry.
|
|
117
|
+
OPTIONS:
|
|
118
|
+
1) Update registry first (run registry update command)
|
|
119
|
+
2) Provide component name and location manually
|
|
120
|
+
3) Check if node ID is correct
|
|
121
|
+
SUGGESTED: Option 1 — registry may be outdated
|
|
122
|
+
COMPLETED_GATES: [PRE_CHECK_SETUP, EXTRACT_NODE_ID]
|
|
123
|
+
CONTEXT: The FigmaRegistryUtility lookup returned no results for node ID <NODE_ID>.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## GATE 3: RESOLVE_OVERRIDES
|
|
129
|
+
|
|
130
|
+
Resolve `componentName`, `componentLocation`, and `artifactPath` using this priority:
|
|
131
|
+
|
|
132
|
+
### 3.1 Priority order
|
|
133
|
+
|
|
134
|
+
| Field | Priority 1 (highest) | Priority 2 | Priority 3 (lowest) |
|
|
135
|
+
|-------|---------------------|------------|---------------------|
|
|
136
|
+
| `componentName` | User-provided in prompt | Suggested by registry | HALT — ask user |
|
|
137
|
+
| `componentLocation` | User-provided in prompt | `suggestedComponentLocation` from registry | HALT — ask user |
|
|
138
|
+
| `artifactPath` | Derived from final `componentName` if name changed | `suggestedArtifactPath` from registry | HALT — ask user |
|
|
139
|
+
|
|
140
|
+
**How to detect user overrides:** Scan the user's original prompt for explicit name or location mentions:
|
|
141
|
+
- `"implement as PackageBadge"` → override componentName
|
|
142
|
+
- `"name: FlightCard"` → override componentName
|
|
143
|
+
- `"put it in Sources/UIComponents/Booking/"` → override componentLocation
|
|
144
|
+
- Any PascalCase word the user associates with the component → override componentName
|
|
145
|
+
|
|
146
|
+
If user provided an override in their prompt, use it directly — do NOT ask for confirmation.
|
|
147
|
+
If user did NOT provide an override, use the registry suggestion — but check for vague names first.
|
|
148
|
+
|
|
149
|
+
### 3.2 Vague name detection
|
|
150
|
+
|
|
151
|
+
Registry names derived from Figma layer hierarchy can be too generic. Check if `suggestedComponentName` is vague:
|
|
152
|
+
|
|
153
|
+
**Vague indicators** — single common word that doesn't describe the component's purpose:
|
|
154
|
+
- Generic containers: `Package`, `Card`, `Item`, `Cell`, `Row`, `View`, `Container`, `Component`, `Element`, `Block`, `Section`, `Group`, `Box`, `Wrapper`
|
|
155
|
+
- Generic actions: `Button`, `Label`, `Icon`, `Badge`, `Tag`, `Chip`, `Indicator`
|
|
156
|
+
- Generic layout: `Header`, `Footer`, `Content`, `Body`, `Stack`, `List`
|
|
157
|
+
|
|
158
|
+
If `suggestedComponentName` matches a vague indicator (case-insensitive, exact match):
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
STATUS: NEEDS_INPUT
|
|
162
|
+
PHASE: phase-0
|
|
163
|
+
GATE: RESOLVE_OVERRIDES
|
|
164
|
+
QUESTION: Registry suggested "{suggestedComponentName}" which is too generic. What should this component be called?
|
|
165
|
+
OPTIONS:
|
|
166
|
+
1) Suggest a more descriptive name based on design context (e.g., "Package" → "PackageBadge", "Card" → "FlightCard")
|
|
167
|
+
2) User provides custom name
|
|
168
|
+
SUGGESTED: Look at the Figma layer name, parent frame, and page name for context clues.
|
|
169
|
+
COMPLETED_GATES: [PRE_CHECK_SETUP, EXTRACT_NODE_ID, REGISTRY_LOOKUP]
|
|
170
|
+
CONTEXT:
|
|
171
|
+
Registry name: {suggestedComponentName}
|
|
172
|
+
Registry location: {suggestedComponentLocation}
|
|
173
|
+
Figma node path: {parent names from registry if available}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
If `suggestedComponentName` is NOT vague → use it as-is.
|
|
177
|
+
|
|
178
|
+
### 3.3 Store resolved values
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
componentName = <user override OR registry suggestion (after vague check)>
|
|
182
|
+
componentLocation = <user override OR suggestedComponentLocation>
|
|
183
|
+
artifactPath = {artifactPath} (update path suffix if componentName was overridden)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
If `componentName` was overridden and differs from the registry name, update `artifactPath` by replacing the last path component:
|
|
187
|
+
```
|
|
188
|
+
Original: .../Components/StepBar/Package
|
|
189
|
+
Overridden: .../Components/StepBar/PackageBadge
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
PASS → Store `componentName`, `componentLocation`, `artifactPath`. Proceed to GATE 4.
|
|
193
|
+
|
|
194
|
+
FAIL (no name resolvable) →
|
|
195
|
+
```
|
|
196
|
+
STATUS: NEEDS_INPUT
|
|
197
|
+
PHASE: phase-0
|
|
198
|
+
GATE: RESOLVE_OVERRIDES
|
|
199
|
+
QUESTION: Component name could not be determined.
|
|
200
|
+
OPTIONS:
|
|
201
|
+
1) Use suggested name from registry: <SUGGESTED_NAME>
|
|
202
|
+
2) Provide custom name and location
|
|
203
|
+
COMPLETED_GATES: [PRE_CHECK_SETUP, EXTRACT_NODE_ID, REGISTRY_LOOKUP]
|
|
204
|
+
CONTEXT: suggestedComponentName: <VALUE_OR_EMPTY>, suggestedComponentLocation: <VALUE_OR_EMPTY>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## GATE 4: CREATE_ARTIFACTS
|
|
210
|
+
|
|
211
|
+
Use resolved `artifactPath` from GATE 3.
|
|
212
|
+
|
|
213
|
+
### 4.1 Create directory structure
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
mkdir -p {artifactPath}/pass1 {artifactPath}/pass2 {artifactPath}/pass3
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### 4.2 Create IMPLEMENTATION_HISTORY.md
|
|
220
|
+
|
|
221
|
+
Write `{artifactPath}/IMPLEMENTATION_HISTORY.md`:
|
|
222
|
+
|
|
223
|
+
```markdown
|
|
224
|
+
# <COMPONENT_NAME>
|
|
225
|
+
|
|
226
|
+
## Inputs
|
|
227
|
+
- Node ID: <NODE_ID>
|
|
228
|
+
- File Key: <FILE_KEY>
|
|
229
|
+
- Component Name: <NAME>
|
|
230
|
+
- Source Location: {componentLocation}
|
|
231
|
+
- Artifact Location: {artifactPath}
|
|
232
|
+
- GitHub Issue: #<ISSUE_NUMBER> (https://github.com/{github.componentsRepo}/issues/<ISSUE_NUMBER>)
|
|
233
|
+
- Jira: <JIRA_KEY>
|
|
234
|
+
- Date: <DATE>
|
|
235
|
+
|
|
236
|
+
## Decisions
|
|
237
|
+
<!-- User decisions during implementation -->
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### 4.3 Create PROMPT_HISTORY.md
|
|
241
|
+
|
|
242
|
+
Write `{artifactPath}/PROMPT_HISTORY.md`:
|
|
243
|
+
|
|
244
|
+
```markdown
|
|
245
|
+
# <COMPONENT_NAME> Prompt History
|
|
246
|
+
|
|
247
|
+
All user prompts verbatim. Sensitive data masked.
|
|
248
|
+
|
|
249
|
+
## Session: <DATE>
|
|
250
|
+
|
|
251
|
+
### Prompt 1
|
|
252
|
+
Context: Initial Figma URL provided
|
|
253
|
+
<!-- Mask: tokens → <TOKEN>, passwords → <PASSWORD>, keys → <KEY> -->
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
PASS → Proceed to GATE 5.
|
|
257
|
+
|
|
258
|
+
FAIL →
|
|
259
|
+
```
|
|
260
|
+
STATUS: HALT
|
|
261
|
+
PHASE: phase-0
|
|
262
|
+
GATE: CREATE_ARTIFACTS
|
|
263
|
+
REASON: Failed to create artifact directory or files.
|
|
264
|
+
COMPLETED_GATES: [PRE_CHECK_SETUP, EXTRACT_NODE_ID, REGISTRY_LOOKUP, RESOLVE_OVERRIDES]
|
|
265
|
+
ARTIFACTS_CREATED: none
|
|
266
|
+
USER_ACTION_REQUIRED: Check file system permissions for {artifactPath}.
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## GATE 5: LOAD_SPECS
|
|
272
|
+
|
|
273
|
+
Check if specs were saved by `/figma-to-swift-ui-start`:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
ls {artifactPath}/pass0/specs.md 2>/dev/null
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**If specs exist:** read the file and store as `implementationSpecs`. These specs will be passed to subsequent phases as additional context:
|
|
280
|
+
- Phase 3 (Analysis) — informs pattern decisions
|
|
281
|
+
- Phase 4 (Implementation) — constrains the init signature, defaults, and behavior
|
|
282
|
+
|
|
283
|
+
Append to IMPLEMENTATION_HISTORY.md:
|
|
284
|
+
```markdown
|
|
285
|
+
## Specs
|
|
286
|
+
- Source: pass0/specs.md
|
|
287
|
+
- Loaded: <DATE>
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**If no specs file:** continue without. No error — specs are optional.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## SUCCESS OUTPUT
|
|
295
|
+
|
|
296
|
+
```
|
|
297
|
+
STATUS: COMPLETE
|
|
298
|
+
PHASE: phase-0
|
|
299
|
+
GATES_PASSED: [PRE_CHECK_SETUP, REBUILD_DERIVED_ARTIFACTS, EXTRACT_NODE_ID, REGISTRY_LOOKUP, RESOLVE_OVERRIDES, CREATE_ARTIFACTS, LOAD_SPECS]
|
|
300
|
+
ARTIFACTS_CREATED:
|
|
301
|
+
- {artifactPath}/IMPLEMENTATION_HISTORY.md
|
|
302
|
+
- {artifactPath}/PROMPT_HISTORY.md
|
|
303
|
+
- {artifactPath}/pass1/ (empty, ready for Phase 1)
|
|
304
|
+
- {artifactPath}/pass2/ (empty, ready for Phase 2)
|
|
305
|
+
- {artifactPath}/pass3/ (empty, ready for Phase 3)
|
|
306
|
+
SUMMARY: Component <NAME> initialized with artifact directory at {artifactPath}
|
|
307
|
+
```
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Phase 1 — Data Gathering
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Runs `phase1-gather.py` to collect all Figma data, then checks if design context was deferred due to sublayer cap.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Step 1: Run the Script
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
python3 .instructions/figma/figma-to-swiftui/scripts/phase1-gather.py \
|
|
13
|
+
--file-key "{fileKey}" \
|
|
14
|
+
--node-id "{nodeId}" \
|
|
15
|
+
--artifact-path "{artifactPath}" \
|
|
16
|
+
--component-name "{componentName}"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Parse the JSON output from stdout.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 2: Check Result
|
|
24
|
+
|
|
25
|
+
### If `status` = `COMPLETE`
|
|
26
|
+
|
|
27
|
+
Phase 1 is done. All artifacts are in `pass1/`. Proceed to Phase 2.
|
|
28
|
+
|
|
29
|
+
### If `status` = `COMPLETE_WITH_DEFERRED`
|
|
30
|
+
|
|
31
|
+
The script completed all data gathering **except** `get_design_context`, which was deferred because the component has too many sublayers (>20). Report status to orchestrator — it will dispatch a Phase 1 subagent for deferred resolution.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Deferred Resolution
|
|
36
|
+
|
|
37
|
+
**When the orchestrator dispatches you for deferred resolution, follow these steps.**
|
|
38
|
+
|
|
39
|
+
### Step 1: Read Context
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Read: {artifactPath}/pass1/component_properties.json
|
|
43
|
+
Read: {artifactPath}/pass1/design_context_deferred.json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
From `component_properties.json` extract the variant axes (properties with `type: "VARIANT"`).
|
|
47
|
+
From `design_context_deferred.json` extract `sublayerIds` (node IDs) and `sublayerCount`.
|
|
48
|
+
|
|
49
|
+
### Step 2: Smart Representative Selection
|
|
50
|
+
|
|
51
|
+
Classify each variant axis:
|
|
52
|
+
|
|
53
|
+
| Category | Examples | Action |
|
|
54
|
+
|----------|----------|--------|
|
|
55
|
+
| **Interaction** | `State` (Default/Hover/Pressed/Disabled), focus/hover variants | Fix to `Default` (only color/opacity changes — no structural difference) |
|
|
56
|
+
| **Theme** | `Color`, `Theme`, `Mode` | Fix to first value (e.g., `Brand`) |
|
|
57
|
+
| **Structural** | `Size`, `Style`, `IconDirection`, `Type`, `Layout`, everything else | **Vary** — these change layout/structure |
|
|
58
|
+
|
|
59
|
+
Calculate structural combinations:
|
|
60
|
+
- If <= 20: fetch all structural combinations (with interaction + theme fixed).
|
|
61
|
+
- If > 20: also fix the structural axis with the most values to `Default` or its first value. Repeat until <= 20. Target: ~9-12 representatives.
|
|
62
|
+
|
|
63
|
+
### Step 3: Map to Node IDs
|
|
64
|
+
|
|
65
|
+
Each sublayer in Figma is a variant named like `Color=Brand, Size=Default, Style=Primary, State=Default, IconDirection=None`.
|
|
66
|
+
|
|
67
|
+
The `sublayerIds` list in `design_context_deferred.json` corresponds to the children of the component set. To map selected variant combinations to node IDs:
|
|
68
|
+
|
|
69
|
+
1. Read `{artifactPath}/pass1/screenshots/variants.md` — it has a table of `Variant | Node ID | File`.
|
|
70
|
+
2. Match your selected combinations against the variant names.
|
|
71
|
+
3. Collect the node IDs for matched variants.
|
|
72
|
+
|
|
73
|
+
If `variants.md` doesn't have the mapping, use the Figma REST API or MCP `get_metadata` to resolve.
|
|
74
|
+
|
|
75
|
+
### Step 4: Fetch
|
|
76
|
+
|
|
77
|
+
Call the script with the selected sublayer IDs:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
python3 .instructions/figma/figma-to-swiftui/scripts/phase1-gather.py \
|
|
81
|
+
--fetch-deferred \
|
|
82
|
+
--file-key "{fileKey}" \
|
|
83
|
+
--node-id "{nodeId}" \
|
|
84
|
+
--artifact-path "{artifactPath}" \
|
|
85
|
+
--component-name "{componentName}" \
|
|
86
|
+
--sublayer-ids "id1,id2,id3,..."
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The script:
|
|
90
|
+
- Fetches `get_design_context` for each sublayer ID (parallel, using its internal MCP)
|
|
91
|
+
- Merges into `pass1/design_context_response.json` in the **same format** as non-deferred components
|
|
92
|
+
- Sets `representativeSelection: true` with selection metadata
|
|
93
|
+
- Updates `pass1/component_summary.json`
|
|
94
|
+
|
|
95
|
+
Parse the JSON output from stdout.
|
|
96
|
+
|
|
97
|
+
### Step 5: Update History
|
|
98
|
+
|
|
99
|
+
Append to `{artifactPath}/IMPLEMENTATION_HISTORY.md`:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
- Design context: deferred → smart selection ({N} representatives)
|
|
103
|
+
- Fixed: {list fixed axes and values}
|
|
104
|
+
- Varied: {list varied axes with cross product notation}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Step 6: Return
|
|
108
|
+
|
|
109
|
+
Return COMPLETE with the script's output summary.
|
|
110
|
+
|
|
111
|
+
### If `status` = `HALT`
|
|
112
|
+
|
|
113
|
+
Script failed at a specific gate. Report the gate, reason, and user action to the orchestrator for user resolution.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Return
|
|
118
|
+
|
|
119
|
+
Return the script's JSON output as-is to the orchestrator. The orchestrator handles HALT/NEEDS_INPUT flows.
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# PHASE 1.5 — Existing Component Discovery
|
|
2
|
+
|
|
3
|
+
Detects whether the target component is already implemented in the codebase OR already mapped via Code Connect, BEFORE Phase 2 starts greenfield generation. Without this gate, the pipeline can silently overwrite existing implementations and re-publish duplicate Code Connect mappings.
|
|
4
|
+
|
|
5
|
+
PREV: Phase 1 (Data Gathering)
|
|
6
|
+
NEXT: Phase 2 (Utility Integration) — only when status is `GREENFIELD_OK`
|
|
7
|
+
REF: `phase-6-code-connect.md` (publish gate honors discovery output)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## ENTRY GATE
|
|
12
|
+
|
|
13
|
+
| Condition | Action |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `pass1/code_connect_map_response.json` missing | HALT — Phase 1 didn't complete cleanly |
|
|
16
|
+
| All other cases | EXECUTE |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## STEP 1 — Inspect Code Connect map for self-reference
|
|
21
|
+
|
|
22
|
+
INPUT: `{artifactPath}/pass1/code_connect_map_response.json`
|
|
23
|
+
|
|
24
|
+
The map is a `{ nodeId: { codeConnectSrc, codeConnectName } }` lookup. The current target's nodeId may or may not appear.
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
# Pseudocode
|
|
28
|
+
target_node_id = state.issue.nodeId # e.g. "7528:23317"
|
|
29
|
+
target_name = state.issue.componentName # PascalCase, e.g. "MilesSmilesAccountSettingsAirlineProgramMembershipLayout"
|
|
30
|
+
|
|
31
|
+
cc_map = json.load(open(f"{artifactPath}/pass1/code_connect_map_response.json"))
|
|
32
|
+
|
|
33
|
+
if target_node_id in cc_map:
|
|
34
|
+
return {
|
|
35
|
+
"status": "ALREADY_MAPPED",
|
|
36
|
+
"sourcePath": cc_map[target_node_id]["codeConnectSrc"],
|
|
37
|
+
"componentName": cc_map[target_node_id]["codeConnectName"]
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
If `ALREADY_MAPPED`: the target Figma node is already wired to a code component. The pipeline does not generate a new component or republish Code Connect. It runs gap analysis instead (see Step 4).
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## STEP 2 — Search the codebase for an existing source file
|
|
46
|
+
|
|
47
|
+
If Step 1 returned no match, look for a file that matches the target component name. Use the project's component root (resolved from `figma-config.json` → `componentRoot` if set, else `Sources/UIComponents/Components/`).
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
find "$COMPONENT_ROOT" -type f -name "${target_name}.swift" 2>/dev/null | head -5
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Three outcomes:
|
|
54
|
+
|
|
55
|
+
| Files found | Status |
|
|
56
|
+
|---|---|
|
|
57
|
+
| 0 | `GREENFIELD_OK` — proceed to Phase 2 normally |
|
|
58
|
+
| 1 | `EXISTING_SOURCE_NO_CC` — file exists but Code Connect mapping is missing |
|
|
59
|
+
| 2+ | `AMBIGUOUS_SOURCE` — multiple files match; needs user disambiguation |
|
|
60
|
+
|
|
61
|
+
For `EXISTING_SOURCE_NO_CC`, also check whether a sibling `.figma.swift` exists:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
DIR=$(dirname "<found-file>")
|
|
65
|
+
ls "$DIR/${target_name}.figma.swift" 2>/dev/null
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If `.figma.swift` exists → the source has Code Connect locally but it was never published; offer to publish-only.
|
|
69
|
+
If `.figma.swift` is absent → the source exists but is fully unconnected.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## STEP 3 — User decision (only on non-greenfield)
|
|
74
|
+
|
|
75
|
+
When the orchestrator sees status `ALREADY_MAPPED`, `EXISTING_SOURCE_NO_CC`, or `AMBIGUOUS_SOURCE`, emit a `STATUS: NEEDS_INPUT` block to the parent multi-agent pipeline.
|
|
76
|
+
|
|
77
|
+
### ALREADY_MAPPED
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
STATUS: NEEDS_INPUT
|
|
81
|
+
PHASE: phase-1.5
|
|
82
|
+
GATE: ALREADY_MAPPED
|
|
83
|
+
DETECTED: {sourcePath} (already mapped to Figma node {nodeId})
|
|
84
|
+
QUESTION: This Figma node is already wired to a code component. What should the pipeline do?
|
|
85
|
+
OPTIONS:
|
|
86
|
+
1. Run gap analysis only (FIGMA.md / tests / wiki — fill what's missing, do NOT touch the component source)
|
|
87
|
+
2. Force regenerate (DANGER — overwrites the existing source file; only choose this if the design has materially changed)
|
|
88
|
+
3. Cancel — abort this run, no edits
|
|
89
|
+
DEFAULT: 1
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
User answer feeds back to the orchestrator as a `USER_DECISION` block; on `1` set `state.discovery.status = "GAP_ANALYSIS"` and proceed to Step 4.
|
|
93
|
+
|
|
94
|
+
### EXISTING_SOURCE_NO_CC
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
STATUS: NEEDS_INPUT
|
|
98
|
+
PHASE: phase-1.5
|
|
99
|
+
GATE: EXISTING_SOURCE_NO_CC
|
|
100
|
+
DETECTED: {sourcePath} exists in the codebase but is not connected to the Figma node.
|
|
101
|
+
SIBLING_FIGMA_SWIFT: {present | absent}
|
|
102
|
+
QUESTION: Found an existing source file matching {target_name}. What should the pipeline do?
|
|
103
|
+
OPTIONS:
|
|
104
|
+
1. Add Code Connect only — write {target_name}.figma.swift next to the source, publish it (recommended when sibling absent)
|
|
105
|
+
2. Publish-only — sibling .figma.swift already exists; just run `figma connect publish` (recommended when sibling present)
|
|
106
|
+
3. Force regenerate — overwrite the source file with a fresh greenfield generation
|
|
107
|
+
4. Cancel
|
|
108
|
+
DEFAULT: 2 if sibling present, else 1
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### AMBIGUOUS_SOURCE
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
STATUS: NEEDS_INPUT
|
|
115
|
+
PHASE: phase-1.5
|
|
116
|
+
GATE: AMBIGUOUS_SOURCE
|
|
117
|
+
DETECTED: {N} candidates matching {target_name}.swift
|
|
118
|
+
CANDIDATES: <bulleted list of paths>
|
|
119
|
+
QUESTION: Pick the canonical source for this Figma node, or cancel.
|
|
120
|
+
OPTIONS:
|
|
121
|
+
<one option per candidate>
|
|
122
|
+
N+1. None of the above — treat as greenfield
|
|
123
|
+
N+2. Cancel
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## STEP 4 — Gap analysis (only on ALREADY_MAPPED + user picked option 1)
|
|
129
|
+
|
|
130
|
+
When the existing component is reused, the orchestrator still checks what's missing:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
SRC_DIR=$(dirname "$sourcePath")
|
|
134
|
+
[ -f "$SRC_DIR/FIGMA.md" ] || gaps+=("FIGMA.md")
|
|
135
|
+
[ -f "$SRC_DIR/${target_name}.figma.swift" ] || gaps+=("Code Connect")
|
|
136
|
+
# Snapshot tests, ViewInspector tests, wiki MD, ...
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The gap list goes into `state.discovery.gaps[]`. Phases 2/3 are SKIPPED. Phase 4–7 run only the steps that target gaps:
|
|
140
|
+
|
|
141
|
+
| Gap | Phase that fills it |
|
|
142
|
+
|---|---|
|
|
143
|
+
| `FIGMA.md` | Phase 4c (Documentation) |
|
|
144
|
+
| `Code Connect` | Phase 6 (Code Connect Publish) |
|
|
145
|
+
| `Snapshot test` | Phase 5b |
|
|
146
|
+
| `ViewInspector test` | Phase 5a |
|
|
147
|
+
| `Wiki page` | Phase 7 |
|
|
148
|
+
|
|
149
|
+
Phase 6 ENTRY GATE then sees `discovery.status === "GAP_ANALYSIS"` and `"Code Connect" in discovery.gaps` and runs publish; if Code Connect is NOT in gaps, Phase 6 is silently skipped.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## OUTPUT
|
|
154
|
+
|
|
155
|
+
Phase 1.5 always writes the result to `agent-state.json`:
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"discovery": {
|
|
160
|
+
"status": "GREENFIELD_OK | ALREADY_MAPPED | EXISTING_SOURCE_NO_CC | AMBIGUOUS_SOURCE | GAP_ANALYSIS | CANCELLED",
|
|
161
|
+
"sourcePath": "Sources/.../Component.swift", // when applicable
|
|
162
|
+
"siblingFigmaSwift": true | false, // when applicable
|
|
163
|
+
"gaps": ["FIGMA.md", "Code Connect", ...] // when applicable
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Phase 2 ENTRY GATE reads this and halts unless `status === "GREENFIELD_OK"` or the user explicitly picked "Force regenerate".
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## CONSERVATIVE FALLBACK
|
|
173
|
+
|
|
174
|
+
If anything in this phase fails (missing JSON, missing `find` binary, ambiguous parse), default to `GREENFIELD_OK` and log the anomaly. Better to do harmless duplicate work than to silently skip generation when the user expected it.
|