@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,283 @@
|
|
|
1
|
+
# /figma-cli-lean-iterate — Lean Pipeline Orchestrator for CLI
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Runs a **lean** Figma-to-SwiftUI pipeline for one or more issues: pick → start → implement (phases 0-4) → code connect (phase 6) → commit. **Skips testing (phase 5) and wiki (phase 7).** Returns a structured `ORCHESTRATOR_RESULT` block that the CLI orchestrator can parse.
|
|
6
|
+
|
|
7
|
+
This skill is identical in structure to `/figma-cli-iterate` — the only difference is that phases 5 and 7 are omitted. Use this when you want a faster turnaround and will run tests/wiki separately (or not at all).
|
|
8
|
+
|
|
9
|
+
This skill IS the orchestrator. It dispatches **only leaf-phase subagents** — individual phase instruction files that read one doc, execute gates, and return. It never delegates to multi-phase meta-skills.
|
|
10
|
+
|
|
11
|
+
## Forbidden Dispatches
|
|
12
|
+
|
|
13
|
+
**NEVER dispatch these as subagents — they are orchestrators that would try to dispatch further:**
|
|
14
|
+
|
|
15
|
+
- `/figma-to-swift-ui-implement` (Phases 0-4)
|
|
16
|
+
- `/figma-to-swift-ui-test` (Phase 5)
|
|
17
|
+
- `/figma-to-swift-ui-code-connect` (Phase 6)
|
|
18
|
+
- `/figma-to-swift-ui-wiki` (Phase 7)
|
|
19
|
+
- `/figma-iteration-commit`
|
|
20
|
+
- `/figma-to-swiftui` (entire pipeline)
|
|
21
|
+
|
|
22
|
+
Instead, dispatch the **leaf phase instruction files** directly via Agent tool.
|
|
23
|
+
|
|
24
|
+
## Parameters
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/figma-cli-lean-iterate #230 ← implement specific issue (lean)
|
|
28
|
+
/figma-cli-lean-iterate ← auto-pick next available (lean)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Constants
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
GH_REPO = {github.componentsRepo}
|
|
37
|
+
REPO_ROOT = git repo root (auto-detect)
|
|
38
|
+
COMMON = ${REPO_ROOT}/{repos.common.path}
|
|
39
|
+
UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
|
|
40
|
+
PHASE_DIR = .instructions/figma/figma-to-swiftui/phases
|
|
41
|
+
REF_DIR = .instructions/figma/figma-to-swiftui/reference
|
|
42
|
+
SCRIPT_DIR = .instructions/figma/figma-to-swiftui/scripts
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Note: the `WIKI` submodule is intentionally omitted from the constants — the lean flow never touches it.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## STEP 0 — Pick Issue
|
|
50
|
+
|
|
51
|
+
Same logic as `/figma-iterate` STEP 0. Read `.instructions/figma/figma-iterate/SKILL.md` STEP 0 for details.
|
|
52
|
+
|
|
53
|
+
Extract from issue body: `componentName`, `figmaUrl`, `nodeId`, `jiraKey`, `registryName`, `figmaPage`, `acceptanceCriteria`.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## STEP 1 — Start
|
|
58
|
+
|
|
59
|
+
Run inline (not as a skill). Read `.instructions/figma/figma-to-swift-ui-start/SKILL.md` for the full procedure:
|
|
60
|
+
|
|
61
|
+
1. Parse issue → extract metadata
|
|
62
|
+
2. Fetch latest → checkout `develop` (main stays on develop, NO feature branch), `iteration/develop` (submodules)
|
|
63
|
+
3. Create feature branches on **submodules only** (common, uicomponents) — wiki submodule is NOT checked out
|
|
64
|
+
4. Registry lookup → `componentLocation`, `artifactPath`
|
|
65
|
+
5. Save specs artifact if acceptance criteria exist
|
|
66
|
+
6. Assign (GitHub + Jira)
|
|
67
|
+
7. **Move GitHub issue to "In Develop" on the Projects V2 board** — required. Read STEP 5 of the start skill. Run both GraphQL mutations: set Status option `bc6c45f7` (In Develop) and Phase option `0577dcda` (Implementation). Do NOT skip this — new issues are created with Status=Todo, so this transition is how the board reflects "someone is working on it".
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## required PRE-READ
|
|
72
|
+
|
|
73
|
+
Before dispatching any phase subagent, read:
|
|
74
|
+
${REF_DIR}/orchestrator-discipline.md
|
|
75
|
+
|
|
76
|
+
These 6 rules govern orchestrator behavior. Violations have caused repeated failures. Follow them strictly.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## STEP 2 — Implement (Phases 0-4, 6)
|
|
81
|
+
|
|
82
|
+
This is the core orchestration. Run each phase by dispatching leaf subagents and scripts.
|
|
83
|
+
|
|
84
|
+
**Phases 5 (testing) and 7 (wiki) are INTENTIONALLY skipped in the lean flow.** The `status.ios.tested` and `status.ios.wiki` registry flags will remain their previous values.
|
|
85
|
+
|
|
86
|
+
### Spec Injection (Option A)
|
|
87
|
+
|
|
88
|
+
Before dispatching any Phase 4+ subagent, check if `{artifactPath}/pass0/specs.md` exists. If it does:
|
|
89
|
+
1. Read the specs
|
|
90
|
+
2. Extract concrete requirements
|
|
91
|
+
3. Inject them as **CRITICAL SPEC GATES** in the subagent dispatch prompt — NOT as a sidecar "also read this file" instruction
|
|
92
|
+
|
|
93
|
+
This ensures spec requirements become indistinguishable from standard gates.
|
|
94
|
+
|
|
95
|
+
### Phase Dispatch Table
|
|
96
|
+
|
|
97
|
+
All instruction files relative to `${PHASE_DIR}/`.
|
|
98
|
+
|
|
99
|
+
| Phase | Instruction | Model | Subagent? |
|
|
100
|
+
|-------|-------------|-------|-----------|
|
|
101
|
+
| 0 | `phase-0-init.md` | opus | Yes (leaf) |
|
|
102
|
+
| 1 | `${SCRIPT_DIR}/phase1-gather.py` | N/A | No (script) |
|
|
103
|
+
| 2A | `phase-2a-testing-identifiers.md` | opus | Yes (leaf) |
|
|
104
|
+
| 2B | `phase-2b-localization.md` | sonnet | Yes (leaf) |
|
|
105
|
+
| 2C | `phase-2c-accessibility.md` | opus | Yes (leaf) |
|
|
106
|
+
| 2D | `phase-2d-analytics.md` | sonnet | Yes (leaf) |
|
|
107
|
+
| 3A | `phase-3a-location.md` | sonnet | Yes (leaf) |
|
|
108
|
+
| 3C | `phase-3c-nested.md` | sonnet | Yes (leaf) |
|
|
109
|
+
| 3H | `phase-3h-variant-config.md` | opus | Yes (leaf) |
|
|
110
|
+
| 3D | `phase-3d-patterns.md` | opus | Yes (leaf) |
|
|
111
|
+
| 4A | `phase-4a-configuration.md` | opus | Yes (leaf, COMPLEX only) |
|
|
112
|
+
| 4B | `phase-4b-view.md` | opus | Yes (leaf) |
|
|
113
|
+
| 4C | `phase-4c-documentation.md` | sonnet | Yes (leaf) |
|
|
114
|
+
| 4D | `phase-4d-preview.md` | sonnet | Yes (leaf) |
|
|
115
|
+
| 4E | `phase-4e-modifiers.md` | sonnet | Yes (leaf, COMPLEX only) |
|
|
116
|
+
| ~~5A~~ | *(skipped — lean)* | — | — |
|
|
117
|
+
| ~~5B~~ | *(skipped — lean)* | — | — |
|
|
118
|
+
| ~~5C~~ | *(skipped — lean)* | — | — |
|
|
119
|
+
| 6 | `phase-6-code-connect.md` | opus | Yes (leaf) |
|
|
120
|
+
| ~~7~~ | *(skipped — lean)* | — | — |
|
|
121
|
+
|
|
122
|
+
### Dispatch Prompt Template
|
|
123
|
+
|
|
124
|
+
For each leaf subagent:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
You are executing {Phase Name} of the Figma-to-SwiftUI workflow (lean run — no testing, no wiki).
|
|
128
|
+
|
|
129
|
+
## Context
|
|
130
|
+
- Component: {componentName}
|
|
131
|
+
- File Key: {fileKey}
|
|
132
|
+
- Node ID: {nodeId}
|
|
133
|
+
- Artifact Path: {artifactPath}
|
|
134
|
+
- Component Location: {componentLocation}
|
|
135
|
+
|
|
136
|
+
## CRITICAL SPEC GATES (only if specs exist)
|
|
137
|
+
{Concrete requirements extracted from specs — phrased as mandatory instructions, not a file reference}
|
|
138
|
+
|
|
139
|
+
## Tool Restrictions
|
|
140
|
+
{from dispatch table}
|
|
141
|
+
|
|
142
|
+
## Your Instructions
|
|
143
|
+
Read and STRICTLY FOLLOW your phase instructions gate-by-gate from this file:
|
|
144
|
+
{PHASE_DIR}/{instruction file}
|
|
145
|
+
|
|
146
|
+
Read the return protocol from:
|
|
147
|
+
{REF_DIR}/halt-return-protocol.md
|
|
148
|
+
|
|
149
|
+
## Reference Files
|
|
150
|
+
{relevant reference files from the read-order table in figma-to-swiftui/SKILL.md}
|
|
151
|
+
|
|
152
|
+
## Previous Phase Artifacts
|
|
153
|
+
{artifact paths in read order — compact first}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Phase Execution Flow
|
|
157
|
+
|
|
158
|
+
**Phase 0**: Dispatch subagent → verify `IMPLEMENTATION_HISTORY.md` created.
|
|
159
|
+
|
|
160
|
+
**Phase 1**: Run script:
|
|
161
|
+
```bash
|
|
162
|
+
python3 ${SCRIPT_DIR}/phase1-gather.py \
|
|
163
|
+
--file-key "{fileKey}" --node-id "{nodeId}" \
|
|
164
|
+
--artifact-path "{artifactPath}" --component-name "{componentName}"
|
|
165
|
+
```
|
|
166
|
+
If `COMPLETE_WITH_DEFERRED` → dispatch Phase 1 deferred resolution subagent.
|
|
167
|
+
|
|
168
|
+
**Phase 2**:
|
|
169
|
+
1. Pre-check: verify `pass1/_index.md`
|
|
170
|
+
2. Normalize: check sublayers in `design_context_response.json`
|
|
171
|
+
3. Registry lookup: `FigmaRegistryUtility utility-lookup --node-id '{nodeId}'`
|
|
172
|
+
4. Wave 1 (parallel): dispatch 2A + 2B + 2C subagents simultaneously
|
|
173
|
+
5. Wave 2: dispatch 2D subagent
|
|
174
|
+
6. Finalize: `python3 ${SCRIPT_DIR}/phase2-finalize.py ...`
|
|
175
|
+
|
|
176
|
+
**Phase 3**:
|
|
177
|
+
1. Wave 1 (parallel): `python3 ${SCRIPT_DIR}/phase3-scripts.py wave1 ...` + dispatch 3A + 3C + 3H subagents
|
|
178
|
+
2. Missing token resolution: check `pass3/02_token_mapping.md` for "⚠️ not found". If any → dispatch resolution subagent
|
|
179
|
+
3. Wave 2: dispatch 3D subagent
|
|
180
|
+
4. Wave 3: `python3 ${SCRIPT_DIR}/phase3-scripts.py 3g ...`
|
|
181
|
+
5. Spec: `python3 ${SCRIPT_DIR}/phase3-scripts.py spec ...`
|
|
182
|
+
6. Write `pass3/_index.md`
|
|
183
|
+
|
|
184
|
+
**Phase 4**:
|
|
185
|
+
1. Read `pass3/05_complexity.md` → SIMPLE or COMPLEX
|
|
186
|
+
2. Prepare directory: `mkdir -p {componentLocation}`
|
|
187
|
+
3. Wave 1 (parallel): dispatch 4B + 4C (+ 4A if COMPLEX)
|
|
188
|
+
4. Wave 2 (parallel): dispatch 4D (+ 4E if COMPLEX)
|
|
189
|
+
5. Validate: `bash ${SCRIPT_DIR}/validate-phase4.sh ...`
|
|
190
|
+
6. Build: `xcodebuild build ...` — fix errors if any
|
|
191
|
+
7. Registry finalize: `python3 ${SCRIPT_DIR}/phase4-finalize.py ...`
|
|
192
|
+
|
|
193
|
+
**Phase 5 (TESTING)**: **SKIPPED — lean flow.** Do NOT switch Package.swift to local common. Do NOT dispatch 5A/5B/5C. Do NOT run tests. The `status.ios.tested` flag will stay at its previous value.
|
|
194
|
+
|
|
195
|
+
**Phase 6**: Dispatch subagent → run `${SCRIPT_DIR}/phase6-finalize.py` as safety net.
|
|
196
|
+
|
|
197
|
+
**Phase 7 (WIKI)**: **SKIPPED — lean flow.** Do NOT dispatch 7A. Do NOT touch the wiki submodule. The `status.ios.wiki` flag will stay at its previous value.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## STEP 3 — Commit
|
|
202
|
+
|
|
203
|
+
Run inline. Read `.instructions/figma/figma-iteration-commit/SKILL.md` for the full procedure, with these lean-mode adjustments:
|
|
204
|
+
|
|
205
|
+
1. Rebase submodules to `iteration/develop` if on feature branch
|
|
206
|
+
2. Build validation
|
|
207
|
+
3. Commit to `iteration/develop` (**common → uicomponents only** — wiki submodule is intentionally untouched)
|
|
208
|
+
4. Push with rebase-retry loop
|
|
209
|
+
5. Clean up feature branches (common + uicomponents only)
|
|
210
|
+
6. Issue housekeeping (comment, progress table — but the Tests and Wiki rows stay at their previous state)
|
|
211
|
+
7. Auto-unblock dependents
|
|
212
|
+
|
|
213
|
+
**Skip any step in `/figma-iteration-commit` that writes to or pushes the wiki submodule.**
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## STEP 4 — Loop
|
|
218
|
+
|
|
219
|
+
Same logic as `/figma-iterate` STEP 4. If specific issue → exit after one. If `--count` → decrement. Otherwise → pick next.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## STEP 5 — Output Result
|
|
224
|
+
|
|
225
|
+
Output EXACTLY this block as your FINAL message. Nothing else after it.
|
|
226
|
+
|
|
227
|
+
### On success (per component):
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
ORCHESTRATOR_RESULT:
|
|
231
|
+
status: COMPLETE
|
|
232
|
+
mode: lean
|
|
233
|
+
issueNumber: <N>
|
|
234
|
+
componentName: <name>
|
|
235
|
+
figmaUrl: <url>
|
|
236
|
+
nodeId: <nodeId>
|
|
237
|
+
jiraKey: <key>
|
|
238
|
+
commits:
|
|
239
|
+
common: <SHA>
|
|
240
|
+
uicomponents: <SHA>
|
|
241
|
+
wiki: null # lean run — wiki not touched
|
|
242
|
+
phases: [0, 1, 2, 3, 4, 6] # 5 and 7 intentionally omitted
|
|
243
|
+
testsRun: 0 # lean run — no tests executed
|
|
244
|
+
summary: <one-line>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### On failure:
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
ORCHESTRATOR_RESULT:
|
|
251
|
+
status: FAILED
|
|
252
|
+
mode: lean
|
|
253
|
+
issueNumber: <N>
|
|
254
|
+
componentName: <name>
|
|
255
|
+
failedPhase: <phase>
|
|
256
|
+
reason: <exact reason>
|
|
257
|
+
suggestion: <what to fix>
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### On full iteration completion:
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
ORCHESTRATOR_RESULT:
|
|
264
|
+
status: ITERATION_COMPLETE
|
|
265
|
+
mode: lean
|
|
266
|
+
completed:
|
|
267
|
+
- { issue: <N>, component: <name>, commits: { common: <SHA>, uicomponents: <SHA> } }
|
|
268
|
+
failed:
|
|
269
|
+
- { issue: <N>, component: <name>, phase: <phase>, reason: <reason> }
|
|
270
|
+
remaining: <count>
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Error Handling
|
|
276
|
+
|
|
277
|
+
- **No available issues**: Output ORCHESTRATOR_RESULT with status ITERATION_COMPLETE, empty completed/failed.
|
|
278
|
+
- **Blocked issue**: Output FAILED.
|
|
279
|
+
- **Phase HALT**: Show reason, ask user. If resolved → retry phase. If skipped → FAILED for this component, move to next.
|
|
280
|
+
- **Build failure**: Attempt auto-fix. If unfixable → FAILED.
|
|
281
|
+
- **3 consecutive failures**: Stop iteration.
|
|
282
|
+
- **Subagents can't dispatch subagents**: This is why we dispatch only leaf phases. If a phase instruction file references dispatching subagents, ignore that — run its gates directly in the subagent.
|
|
283
|
+
- **Accidental phase-5 / phase-7 dispatch**: If you catch yourself dispatching a 5A/5B/5C/7A subagent, STOP immediately. This is the lean flow — those phases must not run.
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: figma-cli-skip
|
|
3
|
+
description: CLI variant of /figma-skip — fetches origin iteration/develop on mobile-common, marks a Figma component as skipped in the registry, commits, pushes, and returns a structured ORCHESTRATOR_RESULT block for the CLI.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
argument-hint: <figma-url> [<figma-url> ...] [--reason <reason>]
|
|
6
|
+
allowed-tools: Bash, Read, Write, Edit
|
|
7
|
+
status: wip-v5
|
|
8
|
+
sourced-from: upstream/figma-cli-skip
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /figma-cli-skip — CLI Skip Orchestrator
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
CLI-friendly variant of `/figma-skip`. Marks one or more Figma components as
|
|
16
|
+
skipped in the `mobile-common` component registry, then **commits and pushes
|
|
17
|
+
to `origin/iteration/develop`** so the skip state is visible to other tools
|
|
18
|
+
and teammates immediately. Returns a structured `ORCHESTRATOR_RESULT` block
|
|
19
|
+
the CLI orchestrator can parse.
|
|
20
|
+
|
|
21
|
+
This skill wraps the existing `/figma-skip` logic with:
|
|
22
|
+
- A mandatory `git fetch origin iteration/develop` + fast-forward/rebase on
|
|
23
|
+
`mobile-common` **before** touching registry files.
|
|
24
|
+
- A mandatory commit + push on `mobile-common` **after** writing the registry
|
|
25
|
+
entries and regenerating the catalog.
|
|
26
|
+
- A structured machine-readable output block.
|
|
27
|
+
|
|
28
|
+
It does **not** update Confluence (that's VPN-gated and not a CLI concern).
|
|
29
|
+
Use `/figma-skip` directly when you need the Confluence dashboard refreshed.
|
|
30
|
+
|
|
31
|
+
## Forbidden Operations
|
|
32
|
+
|
|
33
|
+
> **NEVER create branches on the main repo (REPO_ROOT).** This skill only
|
|
34
|
+
> touches the `mobile-common` submodule. Main repo submodule pointer updates
|
|
35
|
+
> are out of scope — handle them separately.
|
|
36
|
+
|
|
37
|
+
> **NEVER commit unrelated working-tree changes.** Stage only the registry
|
|
38
|
+
> JSON(s) you wrote and the catalog output files the `FigmaRegistryUtility
|
|
39
|
+
> catalog` command produced. Use explicit file paths with `git add` — never
|
|
40
|
+
> `git add -A` / `git add .`.
|
|
41
|
+
|
|
42
|
+
> **NEVER skip hooks (`--no-verify`) or force-push.** If push is rejected
|
|
43
|
+
> because the remote moved, rebase and retry; do not force.
|
|
44
|
+
|
|
45
|
+
## Parameters
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
/figma-cli-skip https://www.figma.com/design/{fileKey}/{fileName}?node-id={nodeId}
|
|
49
|
+
/figma-cli-skip https://www.figma.com/design/{fileKey}/{fileName}?node-id={nodeId} --reason "Cursor component, not needed on mobile"
|
|
50
|
+
/figma-cli-skip <url1> <url2> <url3> --reason "Legacy components removed from scope"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
| Parameter | Required | Description |
|
|
54
|
+
|-----------|----------|-------------|
|
|
55
|
+
| `<figma-url>` | Yes | One or more Figma URLs (space-separated for batch). |
|
|
56
|
+
| `--reason <reason>` | No | Free-form skip reason. Captured in the commit message body. |
|
|
57
|
+
|
|
58
|
+
### URL Parsing
|
|
59
|
+
|
|
60
|
+
For each URL, extract:
|
|
61
|
+
```
|
|
62
|
+
https://www.figma.com/design/{fileKey}/{fileName}?node-id={nodeId}
|
|
63
|
+
```
|
|
64
|
+
Convert `-` to `:` in node-id (e.g., `3-9045` → `3:9045`). The registry
|
|
65
|
+
filename is `{nodeId-with-colon-replaced-by-dash}.json` (e.g., `3-9045.json`).
|
|
66
|
+
|
|
67
|
+
## Constants
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
REPO_ROOT = git repo root (auto-detect via `git rev-parse --show-toplevel`)
|
|
71
|
+
COMMON = ${REPO_ROOT}/{repos.common.path}
|
|
72
|
+
REGISTRY_DIR = ${COMMON}/Shared/Figma/Components
|
|
73
|
+
UTILITY = ${COMMON}/.build/debug/FigmaRegistryUtility
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## STEP 0 — Parse Arguments
|
|
79
|
+
|
|
80
|
+
Split `$ARGUMENTS` into URLs and flags. Extract:
|
|
81
|
+
- `urls[]` — every non-flag argument that looks like a Figma URL
|
|
82
|
+
- `reason` — value after `--reason` (may be empty)
|
|
83
|
+
|
|
84
|
+
If `urls` is empty → output `FAILED` with `reason: "No Figma URL provided"`.
|
|
85
|
+
|
|
86
|
+
For each URL, extract `fileKey` and `nodeId` (colon form).
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## STEP 1 — Sync `mobile-common` to `origin/iteration/develop`
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
cd "${COMMON}"
|
|
94
|
+
git fetch origin iteration/develop
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Check current branch:
|
|
98
|
+
```bash
|
|
99
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**If `CURRENT_BRANCH == iteration/develop`**:
|
|
103
|
+
```bash
|
|
104
|
+
git pull --ff-only origin iteration/develop
|
|
105
|
+
```
|
|
106
|
+
If fast-forward fails (local has diverged work) → HALT with
|
|
107
|
+
`FAILED / reason: "mobile-common iteration/develop has diverged from origin — resolve manually before running figma-cli-skip"`.
|
|
108
|
+
|
|
109
|
+
**If on a different branch**:
|
|
110
|
+
Check whether the working tree is clean:
|
|
111
|
+
```bash
|
|
112
|
+
git status --porcelain
|
|
113
|
+
```
|
|
114
|
+
- If dirty → HALT with `FAILED / reason: "mobile-common working tree is dirty on {branch} — commit or stash before running figma-cli-skip"`.
|
|
115
|
+
- If clean → checkout and fast-forward:
|
|
116
|
+
```bash
|
|
117
|
+
git checkout iteration/develop
|
|
118
|
+
git pull --ff-only origin iteration/develop
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
After this step, `mobile-common` must be on `iteration/develop` and even with
|
|
122
|
+
`origin/iteration/develop`.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## STEP 2 — Ensure `FigmaRegistryUtility` Is Built
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
cd "${COMMON}"
|
|
130
|
+
if [[ ! -x "${UTILITY}" ]]; then
|
|
131
|
+
swift build --product FigmaRegistryUtility
|
|
132
|
+
fi
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
If the build fails → HALT with `FAILED / reason: "FigmaRegistryUtility build failed"` and include the build error tail.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## STEP 3 — Process Each URL
|
|
140
|
+
|
|
141
|
+
For each `(fileKey, nodeId)` pair:
|
|
142
|
+
|
|
143
|
+
### 3a. Resolve Component Name
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
cd "${COMMON}"
|
|
147
|
+
"${UTILITY}" lookup --node-id '{nodeId-with-colon}'
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Parse `suggestedComponentName` from the JSON output. If the lookup fails
|
|
151
|
+
(node not in registry), still proceed — the lookup may return a suggested
|
|
152
|
+
name even for unknown nodes. If no name is returned at all, use the raw
|
|
153
|
+
`{nodeId}` as a placeholder and note it in the summary.
|
|
154
|
+
|
|
155
|
+
### 3b. Check Existing Registry Entry
|
|
156
|
+
|
|
157
|
+
Path: `${REGISTRY_DIR}/{nodeId-with-colon-replaced-by-dash}.json`
|
|
158
|
+
|
|
159
|
+
**If file exists**:
|
|
160
|
+
- Read it.
|
|
161
|
+
- If `"skip": true` is already set → record this component as `ALREADY_SKIPPED` (no changes) and continue to next URL. Do NOT short-circuit the whole batch.
|
|
162
|
+
- If not skipped → overwrite with the skip payload (below). Log that you're overwriting pre-existing implementation data.
|
|
163
|
+
|
|
164
|
+
**If file does not exist**:
|
|
165
|
+
- Create it with the skip payload.
|
|
166
|
+
|
|
167
|
+
### 3c. Write the Skip Payload
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"nodeId": "{nodeId-with-colon}",
|
|
172
|
+
"componentName": {
|
|
173
|
+
"ios": "{componentName}",
|
|
174
|
+
"android": "{componentName}"
|
|
175
|
+
},
|
|
176
|
+
"skip": true,
|
|
177
|
+
"codeConnect": {
|
|
178
|
+
"ios": false,
|
|
179
|
+
"android": false
|
|
180
|
+
},
|
|
181
|
+
"confluence": {
|
|
182
|
+
"page": null,
|
|
183
|
+
"ios": null,
|
|
184
|
+
"android": null
|
|
185
|
+
},
|
|
186
|
+
"fileKey": "{fileKey}",
|
|
187
|
+
"lastUpdated": "{YYYY-MM-DD}",
|
|
188
|
+
"updatedBy": "ios",
|
|
189
|
+
"testingIdentifiers": [],
|
|
190
|
+
"localizationKeys": [],
|
|
191
|
+
"accessibilityKeys": [],
|
|
192
|
+
"analyticsEvents": []
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Use the current date (UTC) for `lastUpdated`.
|
|
197
|
+
|
|
198
|
+
Collect the relative path (`Shared/Figma/Components/{filename}.json`) into a
|
|
199
|
+
`written_files[]` list for later staging.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## STEP 4 — Regenerate Catalog
|
|
204
|
+
|
|
205
|
+
Run once **after all URLs have been processed**, not per-URL:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
cd "${COMMON}"
|
|
209
|
+
"${UTILITY}" catalog
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Capture the list of files the catalog command wrote/modified. In practice
|
|
213
|
+
this writes into `Shared/Figma/Catalog/` (or similar). Use `git status
|
|
214
|
+
--porcelain` to discover everything that changed under `Shared/Figma/` and
|
|
215
|
+
stage those paths explicitly in STEP 5.
|
|
216
|
+
|
|
217
|
+
If catalog regeneration fails → HALT with `FAILED / reason: "Catalog regeneration failed"`.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## STEP 5 — Commit & Push
|
|
222
|
+
|
|
223
|
+
### 5a. Stage only the intended files
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
cd "${COMMON}"
|
|
227
|
+
# Registry JSONs we wrote
|
|
228
|
+
git add Shared/Figma/Components/{file1}.json Shared/Figma/Components/{file2}.json ...
|
|
229
|
+
# Catalog files the utility regenerated (discover via `git status --porcelain`
|
|
230
|
+
# — stage every modified/untracked path that lives under Shared/Figma/ AND was
|
|
231
|
+
# not already present before STEP 4)
|
|
232
|
+
git add <catalog paths discovered from git status>
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Do NOT** use `git add -A` or `git add .`. If there are unrelated dirty
|
|
236
|
+
files in the working tree (there shouldn't be, STEP 1 guaranteed it), leave
|
|
237
|
+
them alone.
|
|
238
|
+
|
|
239
|
+
### 5b. Verify the index is what we expect
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
git diff --cached --name-only
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Only `Shared/Figma/Components/*.json` and `Shared/Figma/Catalog/*` paths
|
|
246
|
+
should appear. If anything else shows up → HALT with
|
|
247
|
+
`FAILED / reason: "Unexpected files staged: {list}"`.
|
|
248
|
+
|
|
249
|
+
### 5c. Commit
|
|
250
|
+
|
|
251
|
+
Commit message format:
|
|
252
|
+
|
|
253
|
+
- **Single skip**:
|
|
254
|
+
```
|
|
255
|
+
chore(common): skip {componentName} [{nodeId}]
|
|
256
|
+
|
|
257
|
+
Reason: {reason or "Not specified"}
|
|
258
|
+
```
|
|
259
|
+
- **Batch skip (2+)**:
|
|
260
|
+
```
|
|
261
|
+
chore(common): skip {N} components
|
|
262
|
+
|
|
263
|
+
- {componentName1} [{nodeId1}]
|
|
264
|
+
- {componentName2} [{nodeId2}]
|
|
265
|
+
- ...
|
|
266
|
+
|
|
267
|
+
Reason: {reason or "Not specified"}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Pass the body via HEREDOC to preserve formatting:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
git commit -m "$(cat <<'EOF'
|
|
274
|
+
chore(common): skip {componentName} [{nodeId}]
|
|
275
|
+
|
|
276
|
+
Reason: {reason or "Not specified"}
|
|
277
|
+
EOF
|
|
278
|
+
)"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Capture the resulting commit SHA from `git rev-parse HEAD`.
|
|
282
|
+
|
|
283
|
+
### 5d. Push with rebase retry
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
git push origin iteration/develop
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**If push is rejected (non-fast-forward)**:
|
|
290
|
+
```bash
|
|
291
|
+
git fetch origin iteration/develop
|
|
292
|
+
git rebase origin/iteration/develop
|
|
293
|
+
git push origin iteration/develop
|
|
294
|
+
```
|
|
295
|
+
Allow up to 3 rebase-retry attempts. If it still fails → HALT with
|
|
296
|
+
`FAILED / reason: "Push rejected after 3 rebase retries"`.
|
|
297
|
+
|
|
298
|
+
After a successful rebase, re-read the new HEAD SHA for the output.
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## STEP 6 — Output `ORCHESTRATOR_RESULT`
|
|
303
|
+
|
|
304
|
+
Output EXACTLY this block as your FINAL message. Nothing else after it.
|
|
305
|
+
|
|
306
|
+
### On success (single or batch, all components either skipped now or already skipped):
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
ORCHESTRATOR_RESULT:
|
|
310
|
+
status: COMPLETE
|
|
311
|
+
commit: <SHA>
|
|
312
|
+
pushed: true
|
|
313
|
+
branch: iteration/develop
|
|
314
|
+
skipped:
|
|
315
|
+
- { nodeId: <nodeId>, componentName: <name>, fileKey: <fileKey>, state: NEWLY_SKIPPED }
|
|
316
|
+
- { nodeId: <nodeId>, componentName: <name>, fileKey: <fileKey>, state: ALREADY_SKIPPED }
|
|
317
|
+
reason: <reason or "Not specified">
|
|
318
|
+
summary: <one-line — e.g. "Skipped 2 components, 1 already skipped">
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
If **all** components were `ALREADY_SKIPPED` (nothing new written, nothing
|
|
322
|
+
committed, nothing pushed), the block looks like:
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
ORCHESTRATOR_RESULT:
|
|
326
|
+
status: NOOP
|
|
327
|
+
commit: —
|
|
328
|
+
pushed: false
|
|
329
|
+
branch: iteration/develop
|
|
330
|
+
skipped:
|
|
331
|
+
- { nodeId: <nodeId>, componentName: <name>, fileKey: <fileKey>, state: ALREADY_SKIPPED }
|
|
332
|
+
reason: <reason or "Not specified">
|
|
333
|
+
summary: All components already skipped
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### On failure:
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
ORCHESTRATOR_RESULT:
|
|
340
|
+
status: FAILED
|
|
341
|
+
failedStep: <STEP 0 | 1 | 2 | 3 | 4 | 5>
|
|
342
|
+
reason: <exact reason>
|
|
343
|
+
branch: iteration/develop
|
|
344
|
+
skippedBeforeFailure:
|
|
345
|
+
- { nodeId: <nodeId>, componentName: <name>, state: <NEWLY_SKIPPED | ALREADY_SKIPPED> }
|
|
346
|
+
suggestion: <what to fix — e.g. "resolve rebase conflicts manually and re-run">
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Error Handling Quick Reference
|
|
352
|
+
|
|
353
|
+
| Failure | Action |
|
|
354
|
+
|---------|--------|
|
|
355
|
+
| No URLs provided | `FAILED / STEP 0 / "No Figma URL provided"` |
|
|
356
|
+
| Dirty working tree on feature branch | `FAILED / STEP 1 / "mobile-common working tree is dirty"` |
|
|
357
|
+
| Diverged `iteration/develop` | `FAILED / STEP 1 / "mobile-common has diverged from origin"` |
|
|
358
|
+
| `FigmaRegistryUtility` build failure | `FAILED / STEP 2` + build error tail |
|
|
359
|
+
| `FigmaRegistryUtility lookup` returns nothing usable | Continue with `{nodeId}` as placeholder; note in summary |
|
|
360
|
+
| Catalog regeneration failure | `FAILED / STEP 4` |
|
|
361
|
+
| Unexpected files staged | `FAILED / STEP 5 / "Unexpected files staged: ..."` |
|
|
362
|
+
| Push rejected after 3 rebase retries | `FAILED / STEP 5 / "Push rejected after 3 rebase retries"` |
|