@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,706 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performance-swiftui
|
|
3
|
+
description: Performance-optimized Figma-to-SwiftUI workflow. Same phases as figma-to-swiftui but with model downgrades on deterministic phases, parallel Phase 6+7 execution, combined test execution, and disk-persisted elapsed time tracking. Supports --lean flag to skip testing (Phase 5) and wiki (Phase 7).
|
|
4
|
+
user-invocable: true
|
|
5
|
+
argument-hint: <figma-url> [--lean] | phase-<N> | status
|
|
6
|
+
allowed-tools: Task, Read, Glob, Grep, Bash, Write, Edit, AskUserQuestion
|
|
7
|
+
status: wip-v5
|
|
8
|
+
sourced-from: upstream/performance-swiftui
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /performance-swiftui — Performance-Optimized Figma-to-SwiftUI Workflow
|
|
12
|
+
|
|
13
|
+
> Based on `/figma-to-swiftui`. All phase instruction files, scripts, and reference docs
|
|
14
|
+
> are shared from `.instructions/figma/figma-to-swiftui/`. Only the orchestrator routing,
|
|
15
|
+
> model selection, turn allocation, and execution strategy differ.
|
|
16
|
+
|
|
17
|
+
## Parse Arguments
|
|
18
|
+
|
|
19
|
+
`$ARGUMENTS` determines the mode:
|
|
20
|
+
|
|
21
|
+
| Input | Mode | Action |
|
|
22
|
+
|-------|------|--------|
|
|
23
|
+
| `https://www.figma.com/design/...` | **Start** | Extract fileKey + nodeId, begin Phase 0 |
|
|
24
|
+
| `https://www.figma.com/design/... --lean` | **Start (lean)** | Same as Start but skip Phase 5 (testing) and Phase 7 (wiki) |
|
|
25
|
+
| `phase-0` through `phase-6` | **Resume** | Read IMPLEMENTATION_HISTORY.md, dispatch that phase |
|
|
26
|
+
| `phase-2a` through `phase-2d` | **Resume** | Dispatch specific Phase 2 sub-phase |
|
|
27
|
+
| `phase-5a` through `phase-5d` | **Resume** | Dispatch specific Phase 5 sub-phase |
|
|
28
|
+
| `phase-7` | **Resume** | Run Phase 7A (generate wiki markdown) |
|
|
29
|
+
| `phase-7a` | **Resume** | Dispatch Phase 7A only (generate wiki markdown) |
|
|
30
|
+
| `status` | **Status** | Read and display IMPLEMENTATION_HISTORY.md |
|
|
31
|
+
|
|
32
|
+
### Lean Mode (`--lean`)
|
|
33
|
+
|
|
34
|
+
When `--lean` is appended to a Figma URL, the workflow runs **Phases 0–4 + Phase 6 only**.
|
|
35
|
+
Phase 5 (testing) and Phase 7 (wiki) are **skipped**.
|
|
36
|
+
|
|
37
|
+
Lean mode is persisted in the `_perf_tracker.json` tracker:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"lean_mode": true
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
When resuming from a `phase-N` argument, read `_perf_tracker.json` to detect lean mode.
|
|
46
|
+
If `lean_mode` is `true`, skip Phase 5 and Phase 7 even if explicitly requested.
|
|
47
|
+
|
|
48
|
+
### URL Parsing
|
|
49
|
+
|
|
50
|
+
Extract from Figma URL:
|
|
51
|
+
```
|
|
52
|
+
https://www.figma.com/design/{fileKey}/{fileName}?node-id={nodeId}
|
|
53
|
+
```
|
|
54
|
+
Convert `-` to `:` in node-id (e.g., `9419-30700` → `9419:30700`).
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Elapsed Time Tracking
|
|
59
|
+
|
|
60
|
+
> **All timing, HALT, and retry data is persisted to disk after every phase.**
|
|
61
|
+
> This ensures the workflow summary survives context loss, conversation cuts, and token budget exhaustion.
|
|
62
|
+
|
|
63
|
+
### Tracker File
|
|
64
|
+
|
|
65
|
+
All performance metrics are stored in `{artifactPath}/_perf_tracker.json`. This file is the **single source of truth** — never rely on in-memory variables for timing or reliability data.
|
|
66
|
+
|
|
67
|
+
**At workflow start** (Phase 0 or first resumed phase), create/update the tracker file:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
TRACKER="{artifactPath}/_perf_tracker.json"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Initial content (written at Phase 0 start):
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"workflow_start": "2026-03-18T14:30:00Z",
|
|
78
|
+
"lean_mode": false,
|
|
79
|
+
"phases": {},
|
|
80
|
+
"halt_count": 0,
|
|
81
|
+
"retry_count": 0,
|
|
82
|
+
"halt_log": []
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
If `--lean` flag is active, set `"lean_mode": true`.
|
|
87
|
+
|
|
88
|
+
**After every phase completes** (or HALTs/retries), update the tracker file on disk:
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
import json, datetime
|
|
92
|
+
|
|
93
|
+
tracker_path = "{artifactPath}/_perf_tracker.json"
|
|
94
|
+
with open(tracker_path) as f:
|
|
95
|
+
tracker = json.load(f)
|
|
96
|
+
|
|
97
|
+
# Record phase timing
|
|
98
|
+
tracker["phases"]["phase_N"] = {
|
|
99
|
+
"name": "Phase N (Name)",
|
|
100
|
+
"start": "ISO-8601",
|
|
101
|
+
"end": "ISO-8601",
|
|
102
|
+
"duration_seconds": 123,
|
|
103
|
+
"status": "COMPLETE" # or "HALT", "SKIPPED"
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
# If HALT occurred, also update:
|
|
107
|
+
# tracker["halt_count"] += 1
|
|
108
|
+
# tracker["halt_log"].append({"phase": "N", "gate": "...", "reason": "...", "resolution": "..."})
|
|
109
|
+
|
|
110
|
+
# If retry occurred:
|
|
111
|
+
# tracker["retry_count"] += 1
|
|
112
|
+
|
|
113
|
+
with open(tracker_path, "w") as f:
|
|
114
|
+
json.dump(tracker, f, indent=2)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**CRITICAL:** The tracker file write happens IMMEDIATELY after each phase dispatch returns — before proceeding to the next phase. This is the mechanism that survives context loss.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## required PRE-READ
|
|
122
|
+
|
|
123
|
+
Before dispatching any phase subagent, read:
|
|
124
|
+
.instructions/figma/figma-to-swiftui/reference/orchestrator-discipline.md
|
|
125
|
+
|
|
126
|
+
These 6 rules govern orchestrator behavior. Violations have caused repeated failures. Follow them strictly.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Phase Execution Order
|
|
131
|
+
|
|
132
|
+
**Full mode (default):**
|
|
133
|
+
```
|
|
134
|
+
0 (Init) → 1 (Gather) → 2A → 2B → 2C → 2D → 3 (Analysis) → 4 (Implementation) → 5A → 5B → 5C → [6 + 7 parallel]
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Lean mode (`--lean`):**
|
|
138
|
+
```
|
|
139
|
+
0 (Init) → 1 (Gather) → 2A → 2B → 2C → 2D → 3 (Analysis) → 4 (Implementation) → 6 (Code Connect)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
In lean mode, Phase 5 (testing) and Phase 7 (wiki) are **SKIPPED**. Phase 6 runs sequentially (no parallel partner).
|
|
143
|
+
|
|
144
|
+
This skill dispatches Phase 2 and Phase 5 sub-phases directly — no orchestrator subagent.
|
|
145
|
+
|
|
146
|
+
When `phase-7` is invoked:
|
|
147
|
+
1. Dispatch `phase-7a` (generate two wiki pages: main + iOS, plus assets into wiki submodule).
|
|
148
|
+
2. On COMPLETE, Phase 7 is done. No VPN required.
|
|
149
|
+
3. Wiki changes are committed and pushed by the designated commit skill along with all other submodule changes.
|
|
150
|
+
|
|
151
|
+
> **Confluence upload** is a separate standalone skill: `/figma-to-swift-ui-confluence-sync`.
|
|
152
|
+
> It reads the wiki markdown, converts to XHTML, and uploads to Confluence (VPN required).
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Dispatch Table
|
|
157
|
+
|
|
158
|
+
All instruction files are relative to the ORIGINAL skill directory: `.instructions/figma/figma-to-swiftui/`
|
|
159
|
+
|
|
160
|
+
> **PERF CHANGES vs original:**
|
|
161
|
+
> - Phase 0: opus→sonnet, 30→15 turns (deterministic registry lookup + mkdir)
|
|
162
|
+
> - Phase 6: opus→sonnet, 30→20 turns (template-based, phase6-finalize.py is safety net)
|
|
163
|
+
|
|
164
|
+
| Phase | Instruction | Model | Max Turns | Tool Restrictions |
|
|
165
|
+
|-------|-------------|-------|-----------|-------------------|
|
|
166
|
+
| 0 | `phases/phase-0-init.md` | **sonnet** | **15** | No Edit |
|
|
167
|
+
| 1 | `phases/phase-1-gathering.md` + `scripts/phase1-gather.py` | N/A (script) | N/A | Bash only |
|
|
168
|
+
| 2A | `phases/phase-2a-testing-identifiers.md` | opus | 25 | No Edit |
|
|
169
|
+
| 2B | `phases/phase-2b-localization.md` | sonnet | 25 | No Edit |
|
|
170
|
+
| 2C | `phases/phase-2c-accessibility.md` | opus | 25 | No Edit |
|
|
171
|
+
| 2D | `phases/phase-2d-analytics.md` | sonnet | 20 | No Edit, No Bash |
|
|
172
|
+
| 3A | `phases/phase-3a-location.md` | sonnet | 20 | No Edit |
|
|
173
|
+
| 3C | `phases/phase-3c-nested.md` | sonnet | 20 | No Edit |
|
|
174
|
+
| 3H | `phases/phase-3h-variant-config.md` | opus | 25 | No Edit |
|
|
175
|
+
| 3D | `phases/phase-3d-patterns.md` | opus | 30 | No Edit |
|
|
176
|
+
| 4A | `phases/phase-4a-configuration.md` | opus | 30 | ALL allowed |
|
|
177
|
+
| 4B | `phases/phase-4b-view.md` | opus | 40 | ALL allowed |
|
|
178
|
+
| 4C | `phases/phase-4c-documentation.md` | sonnet | 20 | ALL allowed |
|
|
179
|
+
| 4D | `phases/phase-4d-preview.md` | sonnet | 20 | ALL allowed |
|
|
180
|
+
| 4E | `phases/phase-4e-modifiers.md` | sonnet | 20 | ALL allowed |
|
|
181
|
+
| 5A | `phases/phase-5a-viewinspector.md` | sonnet | 40 | ALL allowed |
|
|
182
|
+
| 5B | `phases/phase-5b-snapshot.md` | sonnet | 40 | ALL allowed |
|
|
183
|
+
| 5C | `phases/phase-5c-unit.md` | sonnet | 30 | ALL allowed |
|
|
184
|
+
| 6 | `phases/phase-6-code-connect.md` | **sonnet** | **20** | No Edit |
|
|
185
|
+
| 7 | `phases/phase-7a-wiki-generate.md` | sonnet | 30 | No Edit |
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Reference Files
|
|
190
|
+
|
|
191
|
+
Bundled in `.instructions/figma/figma-to-swiftui/reference/`. Include relevant paths in dispatch prompts so subagents can read them.
|
|
192
|
+
|
|
193
|
+
| File | Used By Phases |
|
|
194
|
+
|------|----------------|
|
|
195
|
+
| `reference/tools.md` | 0, 1 |
|
|
196
|
+
| `reference/code-connect.md` | 6 |
|
|
197
|
+
| `reference/registry.md` | 0, 3 |
|
|
198
|
+
| `reference/missing-tokens.md` | 3, 4 |
|
|
199
|
+
| `reference/macros.md` | 4 |
|
|
200
|
+
| `reference/figma-to-swiftui-effects.md` | 4 |
|
|
201
|
+
| `reference/confluence-api.md` | standalone confluence skill |
|
|
202
|
+
| `reference/confluence-xhtml.md` | standalone confluence skill |
|
|
203
|
+
| `reference/wiki-to-confluence-mapping.md` | standalone confluence skill |
|
|
204
|
+
| `reference/accessibility.md` | 2C |
|
|
205
|
+
| `reference/localization-naming.md` | 2B |
|
|
206
|
+
| `reference/testing-identifiers-naming.md` | 2A |
|
|
207
|
+
| `reference/analytics-events.md` | 2D |
|
|
208
|
+
| `reference/viewinspector.md` | 5A |
|
|
209
|
+
| `reference/snapshot-testing.md` | 5D |
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Dispatch Procedure
|
|
214
|
+
|
|
215
|
+
**CRITICAL: Do NOT read phase instruction files or reference docs in the main orchestrator context. Subagents read their own instructions by path. This prevents context bloat.**
|
|
216
|
+
|
|
217
|
+
For each phase in order:
|
|
218
|
+
|
|
219
|
+
### 1. Build the dispatch prompt (DO NOT read instruction files)
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
You are executing {Phase Name} of the Figma-to-SwiftUI workflow.
|
|
223
|
+
|
|
224
|
+
## Context
|
|
225
|
+
- Component: {componentName}
|
|
226
|
+
- File Key: {fileKey}
|
|
227
|
+
- Node ID: {nodeId}
|
|
228
|
+
- Artifact Path: {artifactPath}
|
|
229
|
+
- Component Location: {componentLocation}
|
|
230
|
+
- GitHub Issue: {issueNumber} (omit if not available)
|
|
231
|
+
- Wiki Path: {wikiPath} (Phase 7 only — `{repos.wiki.path}`)
|
|
232
|
+
- Specs: {specsPath} (if `{artifactPath}/pass0/specs.md` exists — include in Phase 3, 4 dispatch prompts as additional implementation guidance)
|
|
233
|
+
|
|
234
|
+
## Tool Restrictions
|
|
235
|
+
{from dispatch table — e.g., "Do NOT use the Edit tool."}
|
|
236
|
+
|
|
237
|
+
## Your Instructions
|
|
238
|
+
Read and STRICTLY FOLLOW your phase instructions gate-by-gate from this file:
|
|
239
|
+
.instructions/figma/figma-to-swiftui/{instruction path from dispatch table}
|
|
240
|
+
|
|
241
|
+
Execute every gate sequentially. Do not skip gates.
|
|
242
|
+
|
|
243
|
+
Read the return protocol from:
|
|
244
|
+
.instructions/figma/figma-to-swiftui/reference/halt-return-protocol.md
|
|
245
|
+
|
|
246
|
+
## Specs (if present)
|
|
247
|
+
- {artifactPath}/pass0/specs.md
|
|
248
|
+
Read and incorporate specs alongside phase instructions. Both are inputs you must follow — phase instructions define methodology and coding standards, specs define acceptance criteria and design intent. Neither overrides the other.
|
|
249
|
+
|
|
250
|
+
## Reference Files (read during execution if needed)
|
|
251
|
+
- .instructions/figma/figma-to-swiftui/{reference path}
|
|
252
|
+
|
|
253
|
+
## Previous Phase Artifacts (read in this order)
|
|
254
|
+
{use the Read-Order Table below — list file PATHS only, do not embed content}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### 2. Dispatch
|
|
258
|
+
|
|
259
|
+
**Phase 1 (script):** Run directly via Bash — no subagent needed:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
python3 .instructions/figma/figma-to-swiftui/scripts/phase1-gather.py \
|
|
263
|
+
--file-key "{fileKey}" \
|
|
264
|
+
--node-id "{nodeId}" \
|
|
265
|
+
--artifact-path "{artifactPath}" \
|
|
266
|
+
--component-name "{componentName}"
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Parse the JSON output from stdout. The script exits 0 on success, 1 on failure.
|
|
270
|
+
The script tries remote MCP first, falls back to local MCP automatically.
|
|
271
|
+
|
|
272
|
+
**If `status` = `COMPLETE_WITH_DEFERRED`:**
|
|
273
|
+
Design context was deferred (too many sublayers). All other artifacts are present.
|
|
274
|
+
Do NOT ask the user — dispatch a **Phase 1 subagent** for deferred resolution:
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
Agent(
|
|
278
|
+
subagent_type: "general-purpose",
|
|
279
|
+
model: opus,
|
|
280
|
+
max_turns: 25,
|
|
281
|
+
prompt: "You are executing Phase 1 Deferred Resolution...
|
|
282
|
+
Read instructions from: .instructions/figma/figma-to-swiftui/phases/phase-1-gathering.md (Section: Deferred Resolution)
|
|
283
|
+
Read halt-return from: .instructions/figma/figma-to-swiftui/reference/halt-return-protocol.md
|
|
284
|
+
Context: componentName={componentName}, fileKey={fileKey}, nodeId={nodeId}, artifactPath={artifactPath}
|
|
285
|
+
Previous artifacts: {artifactPath}/pass1/component_properties.json, {artifactPath}/pass1/design_context_deferred.json"
|
|
286
|
+
)
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
The subagent handles smart selection (classifying axes, picking representatives) and calls `phase1-gather.py --fetch-deferred`. On COMPLETE → continue to Phase 2.
|
|
290
|
+
|
|
291
|
+
**All other phases:** Dispatch via Agent tool:
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
Agent(
|
|
295
|
+
subagent_type: "general-purpose",
|
|
296
|
+
model: {from dispatch table},
|
|
297
|
+
max_turns: {from dispatch table},
|
|
298
|
+
prompt: {constructed prompt from step 1}
|
|
299
|
+
)
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 3. Parse the return
|
|
303
|
+
|
|
304
|
+
> **All counters are persisted to `{artifactPath}/_perf_tracker.json` — NOT held in memory.**
|
|
305
|
+
> Read the tracker file before updating, write it back immediately after. This survives context loss.
|
|
306
|
+
|
|
307
|
+
**Before dispatching each phase**, record the start time in the tracker:
|
|
308
|
+
|
|
309
|
+
```python
|
|
310
|
+
import json, datetime
|
|
311
|
+
tracker_path = "{artifactPath}/_perf_tracker.json"
|
|
312
|
+
with open(tracker_path) as f:
|
|
313
|
+
tracker = json.load(f)
|
|
314
|
+
tracker["phases"]["phase_N"] = {"name": "Phase N (Name)", "start": datetime.datetime.now(datetime.timezone.utc).isoformat(), "status": "in-progress"}
|
|
315
|
+
with open(tracker_path, "w") as f:
|
|
316
|
+
json.dump(tracker, f, indent=2)
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**STATUS: COMPLETE**
|
|
320
|
+
→ Record gates and artifacts
|
|
321
|
+
→ **Update tracker file on disk**: set phase `end`, `duration_seconds`, `status: "COMPLETE"`
|
|
322
|
+
→ **Append phase timing to IMPLEMENTATION_HISTORY.md** (incremental write — see step 4)
|
|
323
|
+
→ Proceed to next phase
|
|
324
|
+
|
|
325
|
+
**STATUS: HALT**
|
|
326
|
+
→ **Update tracker file on disk**: increment `halt_count`, append to `halt_log`
|
|
327
|
+
→ Show user: GATE, REASON, USER_ACTION_REQUIRED via AskUserQuestion
|
|
328
|
+
→ Options: "Fix and retry", "Skip this phase", "Abort workflow"
|
|
329
|
+
→ Retry: update tracker — increment `retry_count`, set `resolution: "retry"`, re-dispatch same phase
|
|
330
|
+
→ Skip: update tracker — set `resolution: "skipped"`, `status: "SKIPPED"`, proceed
|
|
331
|
+
→ Abort: update tracker — set `resolution: "aborted"`, `status: "ABORTED"`, stop workflow
|
|
332
|
+
|
|
333
|
+
**STATUS: NEEDS_INPUT**
|
|
334
|
+
→ Show user: QUESTION, OPTIONS, SUGGESTED via AskUserQuestion
|
|
335
|
+
→ Re-dispatch same phase with user decision prepended:
|
|
336
|
+
```
|
|
337
|
+
USER_DECISION:
|
|
338
|
+
GATE: {gate-id}
|
|
339
|
+
ANSWER: {user's choice}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### 4. Update history (incremental — after EVERY phase)
|
|
343
|
+
|
|
344
|
+
**After each phase completes, IMMEDIATELY write two things:**
|
|
345
|
+
|
|
346
|
+
**A) Update `_perf_tracker.json`** with phase end time, duration, and status (as shown above).
|
|
347
|
+
|
|
348
|
+
**B) Append a `## Phase Timing` entry to IMPLEMENTATION_HISTORY.md:**
|
|
349
|
+
|
|
350
|
+
If the `## Phase Timings` section does not yet exist in IMPLEMENTATION_HISTORY.md, create it:
|
|
351
|
+
|
|
352
|
+
```markdown
|
|
353
|
+
## Phase Timings
|
|
354
|
+
|
|
355
|
+
| Phase | Duration | Status | Timestamp |
|
|
356
|
+
|-------|----------|--------|-----------|
|
|
357
|
+
| Phase 0 (Init) | 0:45 | ✅ | 2026-03-18T14:30:45Z |
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
If it already exists, append a new row to the table:
|
|
361
|
+
|
|
362
|
+
```markdown
|
|
363
|
+
| Phase 2 (Utilities) | 4:12 | ✅ | 2026-03-18T14:35:00Z |
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
Use `✅` for COMPLETE, `⏭️` for SKIPPED, `❌` for HALT/ABORTED.
|
|
367
|
+
|
|
368
|
+
Also update IMPLEMENTATION_HISTORY.md with the standard phase status, gates, and artifacts (unchanged from before).
|
|
369
|
+
|
|
370
|
+
> **WHY:** This ensures timing data is on disk after every phase. If the conversation is cut or context overflows, the final summary can reconstruct everything from `_perf_tracker.json` and the IMPLEMENTATION_HISTORY.md table.
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Phase 2 Routing (inline — do NOT read phase-2-orchestrator.md)
|
|
375
|
+
|
|
376
|
+
**Do NOT read `phase-2-orchestrator.md`. All routing logic is here. Subagents read their own docs.**
|
|
377
|
+
|
|
378
|
+
> **UNCHANGED from original** — Phase 2 routing preserved exactly.
|
|
379
|
+
|
|
380
|
+
1. **PRE-CHECK**: Read `IMPLEMENTATION_HISTORY.md` (already in context). Verify `pass1/_index.md` exists.
|
|
381
|
+
2. **NORMALIZE**: Check `pass1/design_context_response.json` — if `sublayers: true` and no `response` field, concatenate `responses` values into `response` field and write back.
|
|
382
|
+
3. **REGISTRY_LOOKUP**: `cd {repos.common.path} && .build/debug/FigmaRegistryUtility utility-lookup --node-id '{nodeId}'` — pass result as `registryData` context to subagents.
|
|
383
|
+
4. **Wave 1 (parallel)**: Dispatch 2A + 2B + 2C as subagents (each reads its own instruction doc by path).
|
|
384
|
+
5. **Wave 2**: Dispatch 2D as subagent (depends on 2A output).
|
|
385
|
+
6. **FINALIZE (script)**:
|
|
386
|
+
```bash
|
|
387
|
+
python3 .instructions/figma/figma-to-swiftui/scripts/phase2-finalize.py \
|
|
388
|
+
--artifact-path '{artifactPath}' --node-id '{nodeId}' \
|
|
389
|
+
--file-key '{fileKey}' --component-name '{componentName}'
|
|
390
|
+
```
|
|
391
|
+
Parse stdout JSON: `{"status":"ok","testing":N,"localization":N,"accessibility":N,"analytics":N,"registry":bool}`
|
|
392
|
+
7. **UPDATE HISTORY**: Append Phase 2 summary using script output counts.
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## Phase 3 Routing (inline — do NOT read phase-3-orchestrator.md)
|
|
397
|
+
|
|
398
|
+
**Do NOT read `phase-3-orchestrator.md`. Subagents read their own docs. Scripts handle deterministic phases.**
|
|
399
|
+
|
|
400
|
+
> **UNCHANGED from original** — Phase 3 routing preserved exactly.
|
|
401
|
+
|
|
402
|
+
1. **PRE-CHECK**: Verify `pass2/_index.md` exists.
|
|
403
|
+
2. **NORMALIZE**: Same sublayer check as Phase 2 (skip if already normalized).
|
|
404
|
+
3. **Wave 1 (parallel)**: Launch ALL simultaneously:
|
|
405
|
+
- **Scripts**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py wave1 --artifact-path '{artifactPath}'` (runs 3B+3E+3F, ~5s)
|
|
406
|
+
- **Subagents**: 3A (`phase-3a-location.md`, sonnet, 20 turns), 3C (`phase-3c-nested.md`, sonnet, 20 turns), 3H (`phase-3h-variant-config.md`, opus, 25 turns)
|
|
407
|
+
4. **MISSING TOKEN RESOLUTION**: After Wave 1, check `pass3/02_token_mapping.md` for missing tokens (lines with "⚠️ not found"). If any exist, dispatch a subagent:
|
|
408
|
+
- **Subagent** (`general-purpose`, opus, 25 turns) — reads `reference/missing-tokens.md` for procedure, resolves each missing token by:
|
|
409
|
+
- **Typography**: Adding alias entries to `typography-registry.json` (match font size + weight to existing Swift tokens)
|
|
410
|
+
- **Colors**: Adding to `Shared/UIAssets/Colors/*.json` (source), running `swift package plugin --allow-writing-to-package-directory generate-ui-assets`, adding to `ui-token-index.json`
|
|
411
|
+
- **Variables**: Using `FigmaRegistryUtility ui-token-lookup` / `ui-token-index` to verify
|
|
412
|
+
- Pass artifact path and token mapping path as context. Subagent updates token mapping after resolution.
|
|
413
|
+
- If 0 missing tokens, skip this step entirely.
|
|
414
|
+
5. **Wave 2 (parallel)**: Launch simultaneously:
|
|
415
|
+
- **Subagent**: 3D (`phase-3d-patterns.md`, opus, 30 turns) — reads 3H output (`pass3/04c_variant_config_analysis.json`)
|
|
416
|
+
6. **Wave 3**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py 3g --artifact-path '{artifactPath}'` (depends on 3D JSON output)
|
|
417
|
+
7. **COLLECT**: Verify 12 artifacts exist in `pass3/` (10 original + 2 from 3H).
|
|
418
|
+
8. **SPEC (script)**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py spec --artifact-path '{artifactPath}'`
|
|
419
|
+
9. **WRITE INDEX**: Write `pass3/_index.md` (list the 12 files + spec).
|
|
420
|
+
10. **UPDATE HISTORY**: Append Phase 3 summary.
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Phase 4 Routing (inline — do NOT read phase-4-orchestrator.md)
|
|
425
|
+
|
|
426
|
+
**Do NOT read `phase-4-orchestrator.md`. Subagents read their own docs. Orchestrator stays lean.**
|
|
427
|
+
|
|
428
|
+
1. **PRE-CHECK**: Verify `pass3/_index.md` exists.
|
|
429
|
+
2. **LOAD_SPEC**: Read `pass3/07_implementation_spec.md` and `pass3/05_complexity.md` — extract `componentLocation`, `complexity` (SIMPLE/COMPLEX).
|
|
430
|
+
3. **PREPARE_DIRECTORY**: `mkdir -p {componentLocation}`. Get `gitUser` via `git config user.name`. Get `date` in DD.MM.YYYY format.
|
|
431
|
+
4. **Wave 1 (parallel)**: Dispatch subagents:
|
|
432
|
+
- **4A** (`phase-4a-configuration.md`, opus, 30 turns) — **COMPLEX only** (skip if SIMPLE). Writes `{ComponentName}Configuration.swift`.
|
|
433
|
+
- **4B** (`phase-4b-view.md`, opus, 40 turns) — **ALWAYS**. Writes `{ComponentName}.swift`.
|
|
434
|
+
- **4C** (`phase-4c-documentation.md`, sonnet, 20 turns) — **ALWAYS**. Writes `FIGMA.md`.
|
|
435
|
+
- Pass to each: componentName, componentLocation, artifactPath, nodeId, fileKey, complexity, gitUser, date, issueNumber (from IMPLEMENTATION_HISTORY.md `GitHub Issue` field — extract the number after `#`).
|
|
436
|
+
5. **Wave 2 (parallel)**: Dispatch subagents that depend on 4A+4B:
|
|
437
|
+
- **4D** (`phase-4d-preview.md`, sonnet, 20 turns) — appends Preview to `{ComponentName}.swift`.
|
|
438
|
+
- **4E** (`phase-4e-modifiers.md`, sonnet, 20 turns) — **COMPLEX only** (skip if SIMPLE). Writes `{ComponentName}+Modifiers.swift`.
|
|
439
|
+
6. **COLLECT**: Verify `{ComponentName}.swift`, `{ComponentName}Configuration.swift` (if COMPLEX), `{ComponentName}+Modifiers.swift` (if COMPLEX), `FIGMA.md` exist.
|
|
440
|
+
7. **VALIDATE**: `bash .instructions/figma/figma-to-swiftui/scripts/validate-phase4.sh "{componentLocation}" "{ComponentName}" "{artifactPath}/pass3/00_property_coverage.json"` — fix violations if any.
|
|
441
|
+
8. **BUILD**: `xcodebuild build -project "$(git rev-parse --show-toplevel)/{build.xcodeproj}" -scheme {build.scheme} -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO -quiet` — fix compilation errors if any.
|
|
442
|
+
9. **REGISTRY FINALIZE**: After build passes, mark `status.ios.implemented` green in the component registry with a content-hashed version bump:
|
|
443
|
+
```bash
|
|
444
|
+
python3 .instructions/figma/figma-to-swiftui/scripts/phase4-finalize.py \
|
|
445
|
+
--node-id "{nodeId}" \
|
|
446
|
+
--component-name "{ComponentName}" \
|
|
447
|
+
--source-file "{componentLocation}/{ComponentName}.swift" \
|
|
448
|
+
--platform ios
|
|
449
|
+
```
|
|
450
|
+
Parse stdout JSON. On success (`"status": "ok"`), the registry entry now has `implemented.value: true`, `implemented.version: 1` (or bumped), and a content hash. On failure, log the error but do NOT halt — the finalize can be re-run manually or via `/figma-iteration-commit`.
|
|
451
|
+
10. **UPDATE HISTORY**: Append Phase 4 summary.
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
## Phase 5 Routing (inline — do NOT read phase-5-orchestrator.md)
|
|
456
|
+
|
|
457
|
+
> **LEAN MODE: If `lean_mode` is `true` in `_perf_tracker.json`, SKIP this entire section.**
|
|
458
|
+
> Record Phase 5 as `"status": "SKIPPED"` in the tracker and append `| Phase 5 (Testing) | — | ⏭️ lean | ... |` to IMPLEMENTATION_HISTORY.md.
|
|
459
|
+
> Proceed directly to Phase 6 (sequentially, not parallel with Phase 7).
|
|
460
|
+
|
|
461
|
+
**Do NOT read `phase-5-orchestrator.md`. Subagents read their own docs.**
|
|
462
|
+
|
|
463
|
+
> **PERF CHANGE: Combined test execution** — runs ViewInspector + Snapshot tests in a single xcodebuild invocation instead of two separate build+test cycles.
|
|
464
|
+
> **PERF CHANGE: Simulator pre-warm** — boots simulator in background during test file generation to eliminate cold-start latency.
|
|
465
|
+
|
|
466
|
+
1. **PRE-CHECK**: Verify Phase 4 complete (component Swift file exists at `{componentLocation}`).
|
|
467
|
+
2. **SIMULATOR PRE-WARM** (parallel with Wave 1): Boot the simulator in the background before test files are written:
|
|
468
|
+
```bash
|
|
469
|
+
xcrun simctl boot "iPhone 17 Pro" 2>/dev/null &
|
|
470
|
+
```
|
|
471
|
+
This runs asynchronously — no need to wait. By the time test execution starts (step 4b), the simulator is ready.
|
|
472
|
+
3. **Wave 1 (parallel)**: Dispatch subagents:
|
|
473
|
+
- **5A** (`phase-5a-viewinspector.md`, sonnet, 40 turns) — ViewInspector structure + accessibility tests.
|
|
474
|
+
- **5B** (`phase-5b-snapshot.md`, sonnet, 40 turns) — Snapshot tests for all Figma variants.
|
|
475
|
+
4. **Wave 2 (conditional)**: **5C** (`phase-5c-unit.md`, sonnet, 30 turns) — Unit tests. Only if component has ViewModel/model logic. N/A for pure View + Configuration.
|
|
476
|
+
5. **TEST EXECUTION (combined)**: Run all tests via a SINGLE xcodebuild invocation:
|
|
477
|
+
a. **Switch to local common dependency**: In `{repos.components.path}/Package.swift`, comment out the `.package(url: "...{project.slug}-common...", ...)` line and add `.package(path: "../{project.slug}-common"),` below it. This is needed because the SPM package resolves dependencies from remote git, but Phase 2 adds identifiers/keys to the local editable copy.
|
|
478
|
+
b. **Run ALL tests in a single invocation**:
|
|
479
|
+
```bash
|
|
480
|
+
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
481
|
+
UICOMP_PKG="${REPO_ROOT}/{repos.components.path}"
|
|
482
|
+
cd "${UICOMP_PKG}" && xcodebuild test \
|
|
483
|
+
-scheme UIComponents-Package \
|
|
484
|
+
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
|
|
485
|
+
-only-testing:UIComponentsTests/{ComponentName}ViewInspectorTests \
|
|
486
|
+
-only-testing:UIComponentsTests/{ComponentName}SnapshotTests \
|
|
487
|
+
CODE_SIGNING_ALLOWED=NO \
|
|
488
|
+
2>&1 | tail -50
|
|
489
|
+
```
|
|
490
|
+
This eliminates the second build+resolve cycle. Both test suites share the same build artifacts.
|
|
491
|
+
If 5C unit tests also exist, add another `-only-testing:UIComponentsTests/{ComponentName}UnitTests` to the same command.
|
|
492
|
+
All tests must pass with zero warnings on component test files. Fix deprecated `Inspectable` conformance or other warnings before proceeding.
|
|
493
|
+
c. **Revert to remote dependency**: Uncomment the original `.package(url: ...)` line and remove the `.package(path: ...)` line in `Package.swift`.
|
|
494
|
+
6. **UPDATE HISTORY**: Append Phase 5 summary with test counts.
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## Phase 6 + 7 Parallel Execution
|
|
499
|
+
|
|
500
|
+
> **LEAN MODE:** If `lean_mode` is `true` in `_perf_tracker.json`:
|
|
501
|
+
> - Run **Phase 6 only** (sequentially, after Phase 4).
|
|
502
|
+
> - **SKIP Phase 7 entirely.** Record as `"status": "SKIPPED"` in the tracker and append `| Phase 7 (Wiki) | — | ⏭️ lean | ... |` to IMPLEMENTATION_HISTORY.md.
|
|
503
|
+
> - Do NOT touch the wiki submodule.
|
|
504
|
+
|
|
505
|
+
> **PERF CHANGE:** Phase 6 (Code Connect) and Phase 7 (Wiki Markdown generation) have NO dependency on each other. Phase 7 reads component Swift files + FIGMA.md + pass3 artifacts — all completed in Phase 4. Phase 6 publishes to Figma. Running them in parallel saves ~5-10 minutes.
|
|
506
|
+
|
|
507
|
+
After Phase 5 completes (or Phase 4 in lean mode):
|
|
508
|
+
|
|
509
|
+
1. **Dispatch Phase 6 + Phase 7 simultaneously as parallel subagents:**
|
|
510
|
+
|
|
511
|
+
**Phase 6 subagent:**
|
|
512
|
+
```
|
|
513
|
+
Agent(
|
|
514
|
+
subagent_type: "general-purpose",
|
|
515
|
+
model: sonnet,
|
|
516
|
+
max_turns: 20,
|
|
517
|
+
prompt: {standard Phase 6 dispatch prompt}
|
|
518
|
+
)
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
**Phase 7 subagent:**
|
|
522
|
+
```
|
|
523
|
+
Agent(
|
|
524
|
+
subagent_type: "general-purpose",
|
|
525
|
+
model: sonnet,
|
|
526
|
+
max_turns: 30,
|
|
527
|
+
prompt: {standard Phase 7 dispatch prompt — include wikiPath in context}
|
|
528
|
+
)
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
2. **Wait for both to complete.** Parse both returns.
|
|
532
|
+
|
|
533
|
+
3. **Phase 6 finalization** (after its subagent returns COMPLETE):
|
|
534
|
+
```bash
|
|
535
|
+
python3 .instructions/figma/figma-to-swiftui/scripts/phase6-finalize.py \
|
|
536
|
+
--node-id '{nodeId}' \
|
|
537
|
+
--file-key '{fileKey}' \
|
|
538
|
+
--component-name '{componentName}' \
|
|
539
|
+
--platform ios
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
4. **Phase 7 complete:** Wiki markdown + assets written to wiki submodule. Wiki changes are committed and pushed by the designated commit skill along with all other submodule changes.
|
|
543
|
+
|
|
544
|
+
> Confluence upload (XHTML generation + upload to {confluence.host}) is a separate standalone skill: `/figma-to-swift-ui-confluence-sync`. Run it independently after the main workflow completes (requires VPN).
|
|
545
|
+
|
|
546
|
+
---
|
|
547
|
+
|
|
548
|
+
## Read-Order Table
|
|
549
|
+
|
|
550
|
+
When building the `Previous Phase Artifacts` section of the dispatch prompt, list artifacts in this order. Compact artifacts go FIRST so the subagent establishes context before large files consume the context window.
|
|
551
|
+
|
|
552
|
+
Every phase must be independently operable from a clean session — all artifacts remain accessible on disk. This table is a **read-ordering preference**, not a prohibition.
|
|
553
|
+
|
|
554
|
+
| Phase | Read FIRST (compact) | Read SECOND (if detail needed) |
|
|
555
|
+
|-------|---------------------|-------------------------------|
|
|
556
|
+
| 2A-2D | `pass1/component_summary.json` | `pass1/design_context_response.json`, `pass1/component_properties.json` |
|
|
557
|
+
| 3A | `pass1/component_summary.json`, `IMPLEMENTATION_HISTORY.md` | — |
|
|
558
|
+
| 3B | `pass1/component_summary.json`, `pass1/variable_defs_response.json` | `pass1/design_context_response.json` (for binding context) |
|
|
559
|
+
| 3C | `pass1/component_summary.json`, `pass1/code_connect_map_response.json` | — |
|
|
560
|
+
| 3D | `pass1/component_summary.json`, `pass1/component_properties.json` | `pass1/design_context_response.json`, `pass1/metadata_response.xml` |
|
|
561
|
+
| 3E | `pass1/component_summary.json`, `pass1/design_context_assets.txt` | — |
|
|
562
|
+
| 3F | `pass1/component_summary.json`, `pass2/utility_*.md` | `pass1/design_context_response.json` |
|
|
563
|
+
| 3G | `pass1/component_summary.json`, `pass3/04b_component_architecture.md` | — |
|
|
564
|
+
| 4A | `pass3/04b_component_architecture.md`, `pass3/05_complexity.md`, `pass3/00_property_coverage.json` | `pass1/component_summary.json` |
|
|
565
|
+
| 4B | `pass1/component_summary.json`, `pass3/00_property_coverage.json`, `pass3/07_implementation_spec.md`, `pass3/02_token_mapping.md`, `pass3/04b_component_architecture.md`, `pass3/04_patterns.md`, `pass3/03_nested_components.md`, `pass3/08_utility_integration.md`, `pass1/screenshot.png` | `pass1/design_context_response.json` (for complex layout detail) |
|
|
566
|
+
| 4C | `pass3/07_implementation_spec.md`, `pass3/04b_component_architecture.md`, `pass3/00_property_coverage.json` | `pass1/component_summary.json` |
|
|
567
|
+
| 4D | `{componentLocation}/{ComponentName}.swift`, `{componentLocation}/{ComponentName}Configuration.swift` (if exists) | `pass3/04_patterns.md` |
|
|
568
|
+
| 4E | `{componentLocation}/{ComponentName}Configuration.swift`, `{componentLocation}/{ComponentName}.swift` | — |
|
|
569
|
+
| 6 | `pass1/component_properties.json`, `{sourceLocation}/FIGMA.md`, `{sourceLocation}/{componentName}.swift` | — |
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
## Resume Mode
|
|
574
|
+
|
|
575
|
+
When `$ARGUMENTS` is `phase-N`:
|
|
576
|
+
|
|
577
|
+
1. Find IMPLEMENTATION_HISTORY.md by searching `{repos.packagesContainer}/{repos.artifactsRepo}/ImplementationArtifacts/Figma/Components/`
|
|
578
|
+
2. Read it to get: componentName, fileKey, nodeId, artifactPath, componentLocation. Derive confluencePath: replace `Figma/Components` with `Confluence` in artifactPath.
|
|
579
|
+
3. Verify prerequisite phase artifacts exist
|
|
580
|
+
4. Dispatch the requested phase
|
|
581
|
+
|
|
582
|
+
If prerequisites are missing, HALT and inform user.
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
## Status Mode
|
|
587
|
+
|
|
588
|
+
When `$ARGUMENTS` is `status`:
|
|
589
|
+
|
|
590
|
+
1. Search for all IMPLEMENTATION_HISTORY.md files in `{repos.packagesContainer}/{repos.artifactsRepo}/ImplementationArtifacts/`
|
|
591
|
+
2. For each found IMPLEMENTATION_HISTORY.md, look for a sibling `_perf_tracker.json` in the same directory.
|
|
592
|
+
3. If `_perf_tracker.json` exists:
|
|
593
|
+
a. Read it and display the full timing/reliability summary (same format as Final Summary).
|
|
594
|
+
b. If IMPLEMENTATION_HISTORY.md is missing the `## Workflow Summary` section but the tracker shows all phases completed, **generate and append the summary now** — this recovers from context loss.
|
|
595
|
+
4. If `_perf_tracker.json` does not exist, fall back to displaying: component name, current phase, last gate, last updated (from IMPLEMENTATION_HISTORY.md only).
|
|
596
|
+
|
|
597
|
+
---
|
|
598
|
+
|
|
599
|
+
## Artifact Path Resolution
|
|
600
|
+
|
|
601
|
+
Use FigmaRegistryUtility to resolve component paths:
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
CONFIG_PATH="{repos.common.path}"
|
|
605
|
+
cd "$CONFIG_PATH" && .build/debug/FigmaRegistryUtility lookup --node-id '{nodeId}'
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
Returns:
|
|
609
|
+
- `suggestedComponentName` → componentName
|
|
610
|
+
- `suggestedComponentLocation` → componentLocation (under UIComponents/Sources/)
|
|
611
|
+
- `suggestedArtifactPath` → artifactPath: `ImplementationArtifacts/Figma/Components/{Category}/{ComponentName}/`
|
|
612
|
+
|
|
613
|
+
Derive confluencePath from artifactPath: replace `Figma/Components` with `Confluence` in the artifact path string.
|
|
614
|
+
|
|
615
|
+
---
|
|
616
|
+
|
|
617
|
+
## Final Summary
|
|
618
|
+
|
|
619
|
+
When the last phase completes (or workflow is aborted/skipped):
|
|
620
|
+
|
|
621
|
+
1. **Read `{artifactPath}/_perf_tracker.json`** — this is the single source of truth for all timing and reliability data.
|
|
622
|
+
2. **Read IMPLEMENTATION_HISTORY.md** `## Phase Timings` table — as a cross-check.
|
|
623
|
+
3. **Compute totals** from the tracker file (not from memory).
|
|
624
|
+
4. **Output the summary** to the user AND **append it to IMPLEMENTATION_HISTORY.md**.
|
|
625
|
+
|
|
626
|
+
> If the orchestrator context was lost (conversation cut, token overflow) and the workflow is resumed,
|
|
627
|
+
> the tracker file still has all data. The final summary can be generated from any conversation context
|
|
628
|
+
> by reading `_perf_tracker.json`.
|
|
629
|
+
|
|
630
|
+
### Summary Format
|
|
631
|
+
|
|
632
|
+
```
|
|
633
|
+
## Workflow Summary
|
|
634
|
+
|
|
635
|
+
- Component: {componentName}
|
|
636
|
+
- Lean Mode: {yes/no — from tracker `lean_mode` field}
|
|
637
|
+
- Phases Executed: {list of completed phases — from tracker}
|
|
638
|
+
- Phases Skipped: {list, if any — from tracker. In lean mode: Phase 5, Phase 7}
|
|
639
|
+
- Total Elapsed Time: {HH:MM:SS} (from tracker workflow_start to last phase end)
|
|
640
|
+
- Artifacts: {artifactPath}
|
|
641
|
+
- Component Location: {componentLocation}
|
|
642
|
+
|
|
643
|
+
### Phase Timings
|
|
644
|
+
| Phase | Duration | Status |
|
|
645
|
+
|-------|----------|--------|
|
|
646
|
+
| Phase 0 (Init) | {elapsed} | ✅ |
|
|
647
|
+
| Phase 1 (Gather) | {elapsed} | ✅ |
|
|
648
|
+
| Phase 2 (Utilities) | {elapsed} | ✅ |
|
|
649
|
+
| Phase 3 (Analysis) | {elapsed} | ✅ |
|
|
650
|
+
| Phase 4 (Implementation) | {elapsed} | ✅ |
|
|
651
|
+
| Phase 5 (Testing) | {elapsed} | ✅ |
|
|
652
|
+
| Phase 6 (Code Connect) | {elapsed} | ✅ |
|
|
653
|
+
| Phase 7 (Wiki Markdown) | {elapsed} | ✅ |
|
|
654
|
+
| **Total** | **{total elapsed}** | |
|
|
655
|
+
|
|
656
|
+
### Reliability
|
|
657
|
+
- First-pass success: {phases_without_halt}/{total_phases} phases ({percentage}%)
|
|
658
|
+
- HALTs: {halt_count from tracker} — {halt_log entries}
|
|
659
|
+
- Retries: {retry_count from tracker}
|
|
660
|
+
|
|
661
|
+
### Bottlenecks
|
|
662
|
+
⚠️ Phase {N} took {actual} (expected ~{expected}) — {reason if known from halt_log, else "investigate"}
|
|
663
|
+
{If no bottlenecks: "None — all phases within expected duration."}
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
**Expected Phase Durations** (used for bottleneck detection):
|
|
667
|
+
|
|
668
|
+
| Phase | Expected (COMPLEX) | Expected (SIMPLE) |
|
|
669
|
+
|-------|-------------------|-------------------|
|
|
670
|
+
| Phase 0 | 1:00 | 1:00 |
|
|
671
|
+
| Phase 1 | 0:30 | 0:30 |
|
|
672
|
+
| Phase 2 | 5:30 | 4:00 |
|
|
673
|
+
| Phase 3 | 9:00 | 6:00 |
|
|
674
|
+
| Phase 4 | 13:00 | 7:00 |
|
|
675
|
+
| Phase 5 | 12:00 | 8:00 |
|
|
676
|
+
| Phase 6+7 | 3:00 | 3:00 |
|
|
677
|
+
|
|
678
|
+
A phase is flagged as bottleneck when `actual_duration > 2 × expected_duration`.
|
|
679
|
+
|
|
680
|
+
### Generating Summary After Context Loss
|
|
681
|
+
|
|
682
|
+
If the workflow completed but the summary was never written (e.g., token budget exceeded),
|
|
683
|
+
it can be reconstructed at any time by running:
|
|
684
|
+
|
|
685
|
+
```
|
|
686
|
+
/performance-swiftui status
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
The `status` command reads `_perf_tracker.json`, computes the summary, and appends the
|
|
690
|
+
`## Workflow Summary` section to IMPLEMENTATION_HISTORY.md if it doesn't already exist.
|
|
691
|
+
|
|
692
|
+
---
|
|
693
|
+
|
|
694
|
+
## Performance Optimizations Applied (vs figma-to-swiftui)
|
|
695
|
+
|
|
696
|
+
| Optimization | Description |
|
|
697
|
+
|---|---|
|
|
698
|
+
| **Phase 0 model downgrade** | opus→sonnet (deterministic registry lookup + mkdir) |
|
|
699
|
+
| **Phase 6 model downgrade** | opus→sonnet (template-based, finalize script is safety net) |
|
|
700
|
+
| **Combined test execution** | Single `xcodebuild test` with multiple `--only-testing:` instead of 2 separate build+test cycles |
|
|
701
|
+
| **Simulator pre-warm** | Boots iOS Simulator in background during test file generation, eliminating cold-start latency |
|
|
702
|
+
| **Phase 6 ∥ 7 parallelism** | Code Connect publish + Wiki Markdown generation run simultaneously |
|
|
703
|
+
| **Phase 4 registry finalize** | Calls `phase4-finalize.py` after BUILD to mark `implemented: true` — was missing in original routing, caused gray implementation flags on issue board |
|
|
704
|
+
| **Disk-persisted tracking** | All timing, HALT, and retry data written to `_perf_tracker.json` after every phase — survives context loss |
|
|
705
|
+
| **Incremental history writes** | Phase timing rows appended to IMPLEMENTATION_HISTORY.md after each phase — no data lost if conversation cuts |
|
|
706
|
+
| **Bottleneck detection** | Flags phases exceeding 2× expected duration — reconstructable from `_perf_tracker.json` at any time |
|