@mmerterden/multi-agent-pipeline 8.6.1 → 10.0.6
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 +544 -2484
- package/README.md +117 -138
- package/docs/features.md +1 -1
- package/index.js +8 -10
- package/install/_adapters.mjs +5 -1
- package/install/_common.mjs +63 -0
- package/install/claude.mjs +14 -14
- package/install/copilot.mjs +14 -8
- package/install/index.mjs +85 -19
- package/install/templates/claude-hooks.json +18 -0
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +21 -6
- package/pipeline/adapters/_base.mjs +366 -14
- package/pipeline/adapters/antigravity.mjs +140 -0
- package/pipeline/adapters/codex.mjs +159 -0
- package/pipeline/adapters/copilot-chat-orchestration.mjs +148 -0
- package/pipeline/adapters/copilot-chat.mjs +34 -68
- package/pipeline/adapters/cursor-orchestration.mjs +152 -0
- package/pipeline/adapters/cursor.mjs +49 -90
- package/pipeline/agents/android-architect.md +5 -5
- package/pipeline/agents/backend-architect.md +4 -4
- package/pipeline/agents/code-reviewer.md +10 -10
- package/pipeline/agents/dev-critic.md +17 -17
- package/pipeline/agents/explorer.md +3 -3
- package/pipeline/agents/ios-architect.md +4 -4
- package/pipeline/agents/security-auditor.md +12 -12
- package/pipeline/agents/task-clarifier.md +18 -18
- package/pipeline/claude-md-template.md +3 -3
- package/pipeline/commands/archive-guard.md +3 -3
- package/pipeline/commands/figma-to-swiftui.md +10 -10
- package/pipeline/commands/multi-agent/_account-picker.md +13 -9
- package/pipeline/commands/multi-agent/_dev-context.md +15 -15
- package/pipeline/commands/multi-agent/_input-parser.md +4 -4
- package/pipeline/commands/multi-agent/_repo-picker.md +9 -9
- package/pipeline/commands/multi-agent/analysis-resolve.md +129 -0
- package/pipeline/commands/multi-agent/analysis.md +667 -0
- package/pipeline/commands/multi-agent/autopilot.md +22 -22
- package/pipeline/commands/multi-agent/build-optimize.md +77 -0
- package/pipeline/commands/multi-agent/channels.md +96 -96
- package/pipeline/commands/multi-agent/delete.md +19 -17
- package/pipeline/commands/multi-agent/dev-autopilot.md +23 -23
- package/pipeline/commands/multi-agent/dev-local-autopilot.md +23 -23
- package/pipeline/commands/multi-agent/dev-local.md +25 -22
- package/pipeline/commands/multi-agent/dev.md +49 -49
- package/pipeline/commands/multi-agent/diff-explain.md +4 -4
- package/pipeline/commands/multi-agent/garbage-collect.md +58 -0
- package/pipeline/commands/multi-agent/help.md +75 -66
- package/pipeline/commands/multi-agent/issue.md +3 -3
- package/pipeline/commands/multi-agent/jira.md +12 -12
- package/pipeline/commands/multi-agent/kill.md +6 -6
- package/pipeline/commands/multi-agent/language.md +12 -12
- package/pipeline/commands/multi-agent/local-autopilot.md +34 -34
- package/pipeline/commands/multi-agent/local.md +24 -25
- package/pipeline/commands/multi-agent/log.md +6 -6
- package/pipeline/commands/multi-agent/manual-test.md +3 -3
- package/pipeline/commands/multi-agent/prune-logs.md +60 -0
- package/pipeline/commands/multi-agent/purge.md +10 -7
- package/pipeline/commands/multi-agent/refactor.md +9 -9
- package/pipeline/commands/multi-agent/refs/analysis-template.md +1062 -0
- package/pipeline/commands/multi-agent/refs/android-guide.md +15 -13
- package/pipeline/commands/multi-agent/refs/audit-guide.md +20 -20
- package/pipeline/commands/multi-agent/refs/backend-guide.md +9 -9
- package/pipeline/commands/multi-agent/refs/channels/confluence.md +17 -17
- package/pipeline/commands/multi-agent/refs/channels/issue-comment.md +30 -30
- package/pipeline/commands/multi-agent/refs/channels/jira.md +15 -15
- package/pipeline/commands/multi-agent/refs/channels/pr-review-actions.md +19 -17
- package/pipeline/commands/multi-agent/refs/channels/pr.md +22 -22
- package/pipeline/commands/multi-agent/refs/channels/wiki.md +19 -19
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +11 -11
- package/pipeline/commands/multi-agent/refs/conventions-defaults.md +179 -0
- package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +35 -33
- package/pipeline/commands/multi-agent/refs/features/dev-critic.md +5 -5
- package/pipeline/commands/multi-agent/refs/features/external-context-injection.md +6 -6
- package/pipeline/commands/multi-agent/refs/features/model-fallback.md +73 -0
- package/pipeline/commands/multi-agent/refs/features/plan-todos.md +1 -1
- package/pipeline/commands/multi-agent/refs/features/prior-fix-detection.md +4 -4
- package/pipeline/commands/multi-agent/refs/features/repo-map.md +6 -6
- package/pipeline/commands/multi-agent/refs/features/shadow-git.md +2 -2
- package/pipeline/commands/multi-agent/refs/frontend-guide.md +16 -16
- package/pipeline/commands/multi-agent/refs/issue-jira-triad.md +18 -18
- package/pipeline/commands/multi-agent/refs/keychain.md +18 -8
- package/pipeline/commands/multi-agent/refs/knowledge.md +9 -9
- package/pipeline/commands/multi-agent/refs/multi-repo-integration-build.md +19 -19
- package/pipeline/commands/multi-agent/refs/phases/log-format.md +29 -9
- package/pipeline/commands/multi-agent/refs/phases/modes.md +33 -33
- package/pipeline/commands/multi-agent/refs/phases/operations.md +11 -11
- package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +93 -57
- package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +59 -28
- package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +115 -63
- package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +99 -36
- package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +160 -63
- package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +33 -18
- package/pipeline/commands/multi-agent/refs/phases/phase-6-commit.md +45 -43
- package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +54 -28
- package/pipeline/commands/multi-agent/refs/phases.md +17 -17
- package/pipeline/commands/multi-agent/refs/picker-contract.md +65 -0
- package/pipeline/commands/multi-agent/refs/progress-contract.md +37 -21
- package/pipeline/commands/multi-agent/refs/rules.md +83 -25
- package/pipeline/commands/multi-agent/refs/swiftui-guide.md +32 -30
- package/pipeline/commands/multi-agent/refs/tracker-contract.md +54 -30
- package/pipeline/commands/multi-agent/refs/wiki-capture.md +36 -33
- package/pipeline/commands/multi-agent/resume.md +9 -9
- package/pipeline/commands/multi-agent/review.md +24 -24
- package/pipeline/commands/multi-agent/scan.md +10 -10
- package/pipeline/commands/multi-agent/search.md +8 -8
- package/pipeline/commands/multi-agent/setup.md +111 -84
- package/pipeline/commands/multi-agent/stack.md +5 -5
- package/pipeline/commands/multi-agent/status.md +5 -5
- package/pipeline/commands/multi-agent/sync.md +123 -111
- package/pipeline/commands/multi-agent/test.md +6 -6
- package/pipeline/commands/multi-agent/update.md +1 -1
- package/pipeline/commands/multi-agent.md +66 -60
- package/pipeline/commands/sim-test.md +14 -14
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +1 -1
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +2 -2
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +2 -2
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +1 -1
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +2 -2
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +3 -3
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +4 -4
- package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +1 -1
- package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +1 -1
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/task.json +12 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-2-plan.json +40 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/task.json +12 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-review.json +28 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-triage.json +27 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/task.json +12 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-2-plan.json +41 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-review.json +12 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-triage.json +6 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/task.json +12 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-review.json +28 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-triage.json +27 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/task.json +12 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-1-analysis.json +25 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-2-plan.json +31 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-review.json +12 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-triage.json +18 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/task.json +12 -0
- package/pipeline/eval/golden-tasks/README.md +14 -14
- package/pipeline/eval/intent-cases.json +40 -0
- package/pipeline/eval/run-metrics-fixture.json +46 -0
- package/pipeline/eval/triage/01-empty-findings/notes.md +1 -1
- package/pipeline/eval/triage/02-real-blocker/notes.md +2 -2
- package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +1 -1
- package/pipeline/eval/triage/04-false-positive-reject/notes.md +1 -1
- package/pipeline/eval/triage/05-mixed-classification/notes.md +2 -2
- package/pipeline/eval/triage/06-severity-mismatch/notes.md +2 -2
- package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +1 -1
- package/pipeline/eval/triage/08-style-misclassified/notes.md +1 -1
- package/pipeline/eval/triage/09-cascading-finding/notes.md +2 -2
- package/pipeline/eval/triage/10-deferred-crossref/notes.md +2 -2
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +3 -3
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +2 -2
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +5 -5
- package/pipeline/eval/triage/README.md +4 -4
- package/pipeline/lib/account-resolver.sh +3 -3
- package/pipeline/lib/ask-choice.sh +98 -0
- package/pipeline/lib/channels-multi-repo.sh +3 -3
- package/pipeline/lib/classify-intent.sh +110 -0
- package/pipeline/lib/context-link-extractor.sh +3 -3
- package/pipeline/lib/credential-store-resolver.sh +3 -3
- package/pipeline/lib/credential-store.sh +9 -5
- package/pipeline/lib/extract-conventions.sh +1034 -0
- package/pipeline/lib/fetch-confluence.sh +3 -3
- package/pipeline/lib/fetch-crashlytics.sh +5 -5
- package/pipeline/lib/fetch-fortify.sh +5 -21
- package/pipeline/lib/fetch-swagger.sh +5 -5
- package/pipeline/lib/figma-screenshot.sh +536 -0
- package/pipeline/lib/issue-fetcher.sh +46 -20
- package/pipeline/lib/md2confluence-v3.py +1076 -0
- package/pipeline/lib/multi-repo-pipeline.sh +13 -22
- package/pipeline/lib/plan-todos.sh +7 -7
- package/pipeline/lib/post-pr-review.sh +53 -21
- package/pipeline/lib/repo-cache.sh +5 -5
- package/pipeline/lib/review-watch.sh +17 -13
- package/pipeline/lib/shadow-git.sh +7 -7
- package/pipeline/lib/submodule-detector.sh +3 -3
- package/pipeline/lib/vercel-deploy.sh +28 -15
- package/pipeline/preferences-template.json +21 -4
- package/pipeline/rules/app-store-guidelines.md +2 -2
- package/pipeline/rules/code-style.md +6 -6
- package/pipeline/rules/figma-pipeline.md +100 -2
- package/pipeline/rules/kotlin-android.md +8 -8
- package/pipeline/rules/security.md +4 -4
- package/pipeline/rules/tdd.md +1 -1
- package/pipeline/rules/testing.md +5 -5
- package/pipeline/schemas/agent-state.schema.json +55 -20
- package/pipeline/schemas/analysis-output.schema.json +7 -2
- package/pipeline/schemas/analysis-spec.schema.json +484 -0
- package/pipeline/schemas/clarify-output.schema.json +5 -5
- package/pipeline/schemas/conventions-output.schema.json +70 -0
- package/pipeline/schemas/dev-critic-output.schema.json +2 -2
- package/pipeline/schemas/diff-risk.schema.json +3 -3
- package/pipeline/schemas/figma-project-config.schema.json +3 -3
- package/pipeline/schemas/learnings-ledger.schema.json +39 -0
- package/pipeline/schemas/migrations/README.md +2 -2
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +5 -5
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +3 -3
- package/pipeline/schemas/migrations/prefs-2.1.0-to-2.2.0.mjs +4 -4
- package/pipeline/schemas/migrations/prefs-2.2.0-to-2.3.0.mjs +5 -5
- package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +3 -3
- package/pipeline/schemas/plan-todos.schema.json +4 -4
- package/pipeline/schemas/planning-output.schema.json +3 -3
- package/pipeline/schemas/prefs.schema.json +97 -13
- package/pipeline/schemas/reviewer-output.schema.json +7 -3
- package/pipeline/schemas/test-gap.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +8 -8
- package/pipeline/schemas/triage-corpus.schema.json +1 -1
- package/pipeline/schemas/triage-output.schema.json +44 -6
- package/pipeline/scripts/README.md +64 -64
- package/pipeline/scripts/aggregate-metrics.mjs +55 -16
- package/pipeline/scripts/audit-log-rotate.sh +3 -3
- package/pipeline/scripts/audit-log.sh +20 -7
- package/pipeline/scripts/benchmark-phase-0.sh +6 -6
- package/pipeline/scripts/build-skills-index.mjs +15 -15
- package/pipeline/scripts/check-md-links.mjs +59 -0
- package/pipeline/scripts/classify-plan-safety.mjs +24 -18
- package/pipeline/scripts/cost-budget-check.mjs +160 -0
- package/pipeline/scripts/cost-table.json +23 -13
- package/pipeline/scripts/diff-explain.mjs +12 -12
- package/pipeline/scripts/diff-risk-score.mjs +18 -17
- package/pipeline/scripts/eval-golden-tasks-live.mjs +13 -10
- package/pipeline/scripts/eval-golden-tasks.mjs +3 -14
- package/pipeline/scripts/eval-intent.mjs +103 -0
- package/pipeline/scripts/eval-triage.mjs +3 -3
- package/pipeline/scripts/evidence-gate.mjs +155 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +9 -9
- package/pipeline/scripts/gc-tmp.sh +102 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +27 -21
- package/pipeline/scripts/gen-skills-index.mjs +6 -6
- package/pipeline/scripts/github-ssh-setup.sh +1 -1
- package/pipeline/scripts/keychain-save.sh +1 -1
- package/pipeline/scripts/keychain.py +6 -6
- package/pipeline/scripts/learnings-ledger.mjs +284 -0
- package/pipeline/scripts/lint-skills.mjs +80 -0
- package/pipeline/scripts/log-metric.sh +18 -9
- package/pipeline/scripts/match-skills.mjs +13 -8
- package/pipeline/scripts/memory-load.sh +3 -3
- package/pipeline/scripts/memory-save.sh +5 -5
- package/pipeline/scripts/migrate-prefs.mjs +17 -17
- package/pipeline/scripts/migrate-state.mjs +12 -12
- package/pipeline/scripts/output-quality-check.sh +7 -7
- package/pipeline/scripts/phase-banner.sh +5 -5
- package/pipeline/scripts/phase-tracker.sh +90 -53
- package/pipeline/scripts/pre-commit-check.sh +45 -5
- package/pipeline/scripts/pre-push-check.sh +7 -7
- package/pipeline/scripts/prune-logs.sh +118 -0
- package/pipeline/scripts/render-agent-log-cost.sh +55 -18
- package/pipeline/scripts/render-cost-summary.sh +9 -9
- package/pipeline/scripts/render-work-summary.sh +4 -4
- package/pipeline/scripts/repo-map.mjs +9 -9
- package/pipeline/scripts/run-aggregator.mjs +7 -6
- package/pipeline/scripts/run-metrics.mjs +129 -0
- package/pipeline/scripts/run-smokes.mjs +76 -0
- package/pipeline/scripts/scan-skills.sh +11 -11
- package/pipeline/scripts/search-logs.sh +8 -8
- package/pipeline/scripts/sign-skills.sh +2 -2
- package/pipeline/scripts/smoke-adapters.sh +79 -10
- package/pipeline/scripts/smoke-add-detail.sh +5 -5
- package/pipeline/scripts/smoke-agent-log-cost.sh +85 -6
- package/pipeline/scripts/smoke-agent-model-routing.sh +3 -3
- package/pipeline/scripts/smoke-ask-choice.sh +42 -0
- package/pipeline/scripts/smoke-bitbucket-contract.sh +19 -3
- package/pipeline/scripts/smoke-changelog-version.sh +47 -0
- package/pipeline/scripts/smoke-channels-flow.sh +1 -1
- package/pipeline/scripts/smoke-ci-workflows.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +3 -3
- package/pipeline/scripts/smoke-commands-skills-parity.sh +4 -4
- package/pipeline/scripts/smoke-community-gates.sh +75 -0
- package/pipeline/scripts/smoke-compliance-skills.sh +5 -5
- package/pipeline/scripts/smoke-cost-budget.sh +70 -0
- package/pipeline/scripts/smoke-cost-summary.sh +4 -4
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +50 -9
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +5 -5
- package/pipeline/scripts/smoke-delete-flow.sh +5 -5
- package/pipeline/scripts/smoke-dev-critic.sh +2 -2
- package/pipeline/scripts/smoke-diff-explain.sh +22 -3
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-dynamic-skill-loading.sh +1 -1
- package/pipeline/scripts/smoke-eval-live.sh +4 -4
- package/pipeline/scripts/smoke-evidence-gate.sh +93 -0
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +1 -1
- package/pipeline/scripts/smoke-extract-conventions.sh +163 -0
- package/pipeline/scripts/smoke-figma-android-parity.sh +1 -1
- package/pipeline/scripts/smoke-figma-credential-store.sh +3 -3
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +12 -12
- package/pipeline/scripts/smoke-figma-dispatch.sh +5 -5
- package/pipeline/scripts/smoke-figma-sync.sh +1 -1
- package/pipeline/scripts/smoke-gate-hooks.sh +56 -0
- package/pipeline/scripts/smoke-gc-tmp.sh +84 -0
- package/pipeline/scripts/smoke-identity-isolation.sh +7 -7
- package/pipeline/scripts/smoke-install-layout.sh +10 -10
- package/pipeline/scripts/smoke-intent-guard.sh +86 -0
- package/pipeline/scripts/smoke-issue-comment-template.sh +3 -3
- package/pipeline/scripts/smoke-issue-jira-triad.sh +1 -1
- package/pipeline/scripts/smoke-keychain.sh +6 -6
- package/pipeline/scripts/smoke-language-axis.sh +2 -2
- package/pipeline/scripts/smoke-learnings-ledger.sh +86 -0
- package/pipeline/scripts/smoke-lib-scripts.sh +2 -2
- package/pipeline/scripts/smoke-mcp-gate.sh +68 -0
- package/pipeline/scripts/smoke-md-links.sh +8 -0
- package/pipeline/scripts/smoke-md2confluence.sh +126 -0
- package/pipeline/scripts/smoke-metrics-cache-ratio.sh +72 -0
- package/pipeline/scripts/smoke-migrate-state.sh +10 -10
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +7 -4
- package/pipeline/scripts/smoke-model-fallback.sh +80 -0
- package/pipeline/scripts/smoke-multi-repo-integration.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +115 -0
- package/pipeline/scripts/smoke-no-token-prompt.sh +31 -15
- package/pipeline/scripts/smoke-pat-audit.sh +26 -5
- package/pipeline/scripts/smoke-per-repo-memory.sh +1 -1
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +2 -2
- package/pipeline/scripts/smoke-phase-banner.sh +1 -1
- package/pipeline/scripts/smoke-phase-tracker.sh +1 -1
- package/pipeline/scripts/smoke-phase0-bridge-contract.sh +4 -4
- package/pipeline/scripts/smoke-phase4-triage.sh +94 -7
- package/pipeline/scripts/smoke-plan-approval-gate.sh +3 -3
- package/pipeline/scripts/smoke-plan-safety.sh +1 -1
- package/pipeline/scripts/smoke-plan-todos.sh +7 -4
- package/pipeline/scripts/smoke-pr-review-actions.sh +2 -2
- package/pipeline/scripts/smoke-pre-commit.sh +34 -2
- package/pipeline/scripts/smoke-pref-migration.sh +1 -1
- package/pipeline/scripts/smoke-prefs-language.sh +5 -5
- package/pipeline/scripts/smoke-progress-contract.sh +3 -3
- package/pipeline/scripts/smoke-prune-logs.sh +87 -0
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-readme-counts.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +9 -9
- package/pipeline/scripts/smoke-review-watch.sh +12 -0
- package/pipeline/scripts/smoke-run-aggregator.sh +7 -7
- package/pipeline/scripts/smoke-run-metrics.sh +50 -0
- package/pipeline/scripts/smoke-schema-validation.sh +18 -11
- package/pipeline/scripts/smoke-search.sh +5 -5
- package/pipeline/scripts/smoke-shared-runtime.sh +108 -0
- package/pipeline/scripts/smoke-skill-authoring.sh +13 -13
- package/pipeline/scripts/smoke-skill-language.sh +4 -4
- package/pipeline/scripts/smoke-skill-manifest.sh +2 -2
- package/pipeline/scripts/smoke-skill-scan.sh +2 -2
- package/pipeline/scripts/smoke-stack-swap.sh +2 -2
- package/pipeline/scripts/smoke-subagent-validators.sh +8 -5
- package/pipeline/scripts/smoke-sync-adapters.sh +1 -1
- package/pipeline/scripts/smoke-sync-delegation.sh +7 -7
- package/pipeline/scripts/smoke-sync-parity.sh +1 -1
- package/pipeline/scripts/smoke-tasklist-ordering.sh +7 -7
- package/pipeline/scripts/smoke-telemetry.sh +1 -1
- package/pipeline/scripts/smoke-test-gap.sh +5 -5
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-tracker-contract.sh +6 -6
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +9 -1
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-contradiction.sh +1 -1
- package/pipeline/scripts/smoke-validator-gates.sh +164 -0
- package/pipeline/scripts/smoke-vercel-deploy-redact.sh +11 -11
- package/pipeline/scripts/smoke-wiki-integration.sh +2 -2
- package/pipeline/scripts/smoke-work-summary.sh +3 -3
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/smoke-write-state.sh +2 -2
- package/pipeline/scripts/stack-swap.sh +3 -3
- package/pipeline/scripts/sync-adapters.mjs +37 -10
- package/pipeline/scripts/sync-parity-check.sh +6 -6
- package/pipeline/scripts/test-gap-scan.mjs +11 -13
- package/pipeline/scripts/token-budget-report.mjs +4 -4
- package/pipeline/scripts/triage-memory.mjs +6 -6
- package/pipeline/scripts/uninstall.mjs +42 -4
- package/pipeline/scripts/update-issue-progress.sh +2 -2
- package/pipeline/scripts/validate-analysis.mjs +19 -21
- package/pipeline/scripts/validate-diff-risk.mjs +4 -4
- package/pipeline/scripts/validate-planning.mjs +3 -3
- package/pipeline/scripts/validate-reviewer.mjs +4 -4
- package/pipeline/scripts/validate-schemas.mjs +4 -4
- package/pipeline/scripts/validate-test-gap.mjs +4 -4
- package/pipeline/scripts/validate-triage.mjs +68 -9
- package/pipeline/scripts/verify-skills.sh +7 -7
- package/pipeline/scripts/write-state.mjs +49 -11
- package/pipeline/skills/.skill-manifest.json +245 -149
- package/pipeline/skills/.skills-index.json +236 -47
- package/pipeline/skills/figma-android/README.md +5 -5
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +3 -3
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +8 -8
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +4 -4
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +5 -5
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +14 -14
- package/pipeline/skills/figma-common/README.md +29 -29
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +20 -15
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +35 -30
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +35 -30
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +20 -20
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +32 -32
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +9 -9
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +25 -20
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +11 -6
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +30 -25
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +9 -4
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +27 -22
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +38 -38
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +39 -34
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +20 -15
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +44 -39
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +6 -6
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +30 -30
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +1 -1
- package/pipeline/skills/figma-common/figma-review/SKILL.md +31 -26
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +11 -11
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +5 -5
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +6 -6
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +12 -12
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +4 -4
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +1 -1
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +48 -48
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +42 -37
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +23 -18
- package/pipeline/skills/figma-common/performance-start/SKILL.md +52 -47
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +68 -68
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +42 -37
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +16 -16
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +15 -15
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +9 -9
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +15 -15
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +38 -38
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +19 -19
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +25 -25
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +7 -7
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +38 -38
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +29 -29
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +57 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +10 -10
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +16 -16
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +23 -23
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +26 -26
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +43 -43
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +17 -17
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +19 -19
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +15 -15
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +39 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +7 -7
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +29 -29
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +31 -31
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +16 -16
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +49 -49
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +8 -8
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +10 -10
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +11 -11
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +14 -14
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +9 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +26 -26
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +41 -41
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +8 -8
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +7 -7
- package/pipeline/skills/shared/README.md +62 -41
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +39 -39
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +44 -44
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +182 -176
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +55 -0
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +48 -0
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +16 -16
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +48 -0
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +40 -40
- package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +33 -30
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +26 -26
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +20 -20
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +15 -15
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +10 -10
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +18 -18
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +9 -9
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +20 -20
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +63 -0
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +16 -13
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +110 -110
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +13 -13
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +18 -18
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +13 -13
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +33 -30
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +9 -9
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +79 -79
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +10 -10
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +41 -0
- package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +53 -0
- package/pipeline/skills/shared/external/agentflow/SKILL.md +9 -9
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +113 -52
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +41 -0
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +23 -16
- package/pipeline/skills/shared/external/app-clips/SKILL.md +85 -354
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +135 -0
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +125 -0
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +113 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +152 -59
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +161 -118
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +289 -392
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +174 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +191 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +57 -107
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +35 -12
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +28 -26
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +53 -62
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +7 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +4 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +32 -12
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +34 -30
- package/pipeline/skills/shared/external/authentication/SKILL.md +134 -138
- package/pipeline/skills/shared/external/authentication/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +56 -29
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +183 -0
- package/pipeline/skills/shared/external/avkit/SKILL.md +497 -0
- package/pipeline/skills/shared/external/avkit/evals/evals.json +55 -0
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +668 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +29 -29
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +44 -19
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +136 -99
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +27 -8
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +7 -6
- package/pipeline/skills/shared/external/clean-code/SKILL.md +2 -2
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +63 -56
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +7 -4
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +31 -11
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +41 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +51 -51
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +70 -65
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +25 -1
- package/pipeline/skills/shared/external/core-data/SKILL.md +496 -0
- package/pipeline/skills/shared/external/core-data/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +47 -14
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +47 -16
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +43 -54
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +32 -2
- package/pipeline/skills/shared/external/coreml/SKILL.md +89 -48
- package/pipeline/skills/shared/external/coreml/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +82 -37
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +493 -0
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +602 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +6 -5
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +77 -47
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +42 -34
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +2 -2
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +136 -176
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +240 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +73 -34
- package/pipeline/skills/shared/external/energykit/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +80 -38
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +67 -53
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +53 -3
- package/pipeline/skills/shared/external/healthkit/SKILL.md +57 -124
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +82 -1
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +43 -41
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +13 -8
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +5 -4
- package/pipeline/skills/shared/external/humanizer/SKILL.md +4 -4
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +174 -18
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +262 -4
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +117 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +141 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +67 -14
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +20 -3
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +131 -22
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +69 -22
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +28 -16
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +354 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +69 -44
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +35 -69
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +8 -8
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +485 -0
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +316 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +120 -131
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/live-activities/references/{live-activity-patterns.md → activitykit-patterns.md} +148 -63
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +40 -21
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/mapkit-location/references/{corelocation-patterns.md → mapkit-corelocation-patterns.md} +88 -41
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +27 -24
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +129 -172
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +180 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +45 -18
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +26 -6
- package/pipeline/skills/shared/external/natural-language/SKILL.md +48 -18
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +20 -7
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +4 -3
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +156 -66
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +51 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +69 -19
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +499 -0
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +42 -0
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +844 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +122 -28
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +49 -18
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +100 -51
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +48 -8
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +13 -15
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +4 -4
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +2 -2
- package/pipeline/skills/shared/external/photos-camera-media/references/{photospicker-patterns.md → photokit-patterns.md} +3 -3
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +45 -48
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +22 -33
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +56 -37
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +4 -3
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -0
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +74 -53
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +10 -10
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +21 -20
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +81 -64
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +48 -9
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +118 -104
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +171 -0
- package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +93 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/spm-analysis-checks.md +105 -0
- package/pipeline/skills/shared/external/spm-build-analysis/scripts/check_spm_pins.py +118 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +110 -44
- package/pipeline/skills/shared/external/storekit/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +94 -43
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +82 -33
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +449 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +164 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +219 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +184 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +158 -0
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +499 -0
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +52 -40
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +92 -11
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +43 -16
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +43 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +50 -30
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +11 -4
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +113 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +150 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/{swift-6-2-concurrency.md → concurrency-patterns.md} +22 -11
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +52 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +21 -15
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/async-streams.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bridging.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bug-patterns.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +8 -8
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/diagnostics.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/hotspots.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +4 -4
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/unstructured.md +3 -3
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +339 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +33 -34
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +97 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +19 -6
- package/pipeline/skills/shared/external/swift-security/SKILL.md +195 -0
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +595 -0
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +611 -0
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +708 -0
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +573 -0
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +752 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +538 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +530 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +543 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +620 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +515 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +496 -0
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +747 -0
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +566 -0
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +813 -0
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +97 -297
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +123 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +162 -34
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +3 -3
- package/pipeline/skills/shared/external/swift-testing-pro/references/core-rules.md +2 -2
- package/pipeline/skills/shared/external/swift-testing-pro/references/migrating-from-xctest.md +5 -5
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +3 -3
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +5 -5
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +44 -23
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +3 -3
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +75 -0
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +54 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +14 -10
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +5 -5
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swiftdata-pro/references/class-inheritance.md +2 -2
- package/pipeline/skills/shared/external/swiftdata-pro/references/cloudkit.md +1 -1
- package/pipeline/skills/shared/external/swiftdata-pro/references/core-rules.md +6 -6
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +337 -0
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +297 -0
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +170 -0
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +307 -0
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +35 -0
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +306 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +56 -65
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +48 -44
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +6 -6
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +13 -13
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +3 -3
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +1 -1
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +4 -4
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +2 -2
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +1 -1
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +16 -16
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +11 -11
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +7 -7
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +5 -5
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +6 -6
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +38 -16
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +13 -3
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +32 -28
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +1 -1
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +202 -41
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +16 -25
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +71 -26
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +284 -65
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +387 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +10 -10
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +15 -3
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +2 -2
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +1 -1
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +51 -25
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +78 -6
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +161 -16
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +85 -27
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +37 -33
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +39 -51
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +204 -30
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +226 -21
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +220 -20
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +159 -34
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +27 -0
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/accessibility.md +4 -4
- package/pipeline/skills/shared/external/swiftui-pro/references/api.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/data.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/design.md +4 -4
- package/pipeline/skills/shared/external/swiftui-pro/references/hygiene.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/navigation.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/performance.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/swift.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/views.md +2 -2
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +12 -12
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +3 -3
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +1 -1
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +11 -11
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +124 -10
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +2 -1
- package/pipeline/skills/shared/external/tipkit/SKILL.md +3 -3
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +9 -9
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +17 -16
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +11 -11
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +1 -1
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +5 -5
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +7 -6
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +3 -3
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +9 -9
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +8 -7
- package/pipeline/skills/shared/external/web-testing/SKILL.md +7 -6
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +23 -17
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +99 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +89 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/references/benchmark-artifacts.md +94 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/references/benchmarking-workflow.md +67 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +230 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +219 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/fix-patterns.md +290 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +157 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/benchmark-artifacts.md +94 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/orchestration-report-template.md +143 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/diagnose_compilation.py +273 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/generate_optimization_report.py +533 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +90 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/code-compilation-checks.md +106 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/scripts/diagnose_compilation.py +273 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +77 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/project-audit-checks.md +101 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/recommendation-format.md +85 -0
- package/pipeline/skills/skills-index.md +213 -192
- package/docs/GENERICITY-REVIEW.md +0 -277
- package/docs/STABILITY-FIX-PLAN.md +0 -168
- package/pipeline/scripts/.last-figma-sync-plan.json +0 -23
- package/pipeline/scripts/README-figma-smokes.md +0 -34
- package/pipeline/scripts/figma-placeholder-map.json +0 -191
- package/pipeline/scripts/import-figma-skills.sh +0 -253
- package/pipeline/scripts/smoke-figma-config-schema.sh +0 -144
- package/pipeline/scripts/smoke-figma-skill-import.sh +0 -174
- package/pipeline/scripts/smoke-install-leak-gate.sh +0 -125
- package/pipeline/scripts/smoke-personal-data.sh +0 -82
- package/pipeline/scripts/sync-figma-source.sh +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.json +0 -94
- package/pipeline/skills/shared/external/app-store-review/references/code-signing.md +0 -259
- package/pipeline/skills/shared/external/app-store-review/references/rejection-patterns.md +0 -152
- package/pipeline/skills/shared/external/pencilkit-drawing/references/paperkit-integration.md +0 -376
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: figma-to-component
|
|
3
|
-
description: Figma-to-SwiftUI component implementation workflow. Takes a Figma URL and produces a production-ready SwiftUI component through 8 phases
|
|
3
|
+
description: Figma-to-SwiftUI component implementation workflow. Takes a Figma URL and produces a production-ready SwiftUI component through 8 phases - data gathering, analysis, code generation, testing, Code Connect, and documentation.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: <figma-url> | phase-<N> | status
|
|
6
6
|
allowed-tools: Task, Read, Glob, Grep, Bash, Write, Edit, AskUserQuestion
|
|
@@ -8,7 +8,7 @@ status: wip-v5
|
|
|
8
8
|
sourced-from: upstream/figma-to-swiftui
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# /figma
|
|
11
|
+
# /figma - Figma-to-SwiftUI Workflow Orchestrator
|
|
12
12
|
|
|
13
13
|
## Parse Arguments
|
|
14
14
|
|
|
@@ -50,7 +50,7 @@ These 6 rules govern orchestrator behavior. Violations have caused repeated fail
|
|
|
50
50
|
0 (Init) → 1 (Gather) → 2A → 2B → 2C → 2D → 3 (Analysis) → 4 (Implementation) → 5A → 5B → 5C → 6 (Code Connect) → 7 (Wiki Markdown)
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
This skill dispatches Phase 2 and Phase 5 sub-phases directly
|
|
53
|
+
This skill dispatches Phase 2 and Phase 5 sub-phases directly - no orchestrator subagent.
|
|
54
54
|
|
|
55
55
|
When `phase-7` is invoked:
|
|
56
56
|
1. Dispatch `phase-7a` (generate two wiki pages: main + iOS, plus assets into wiki submodule).
|
|
@@ -133,10 +133,10 @@ You are executing {Phase Name} of the Figma-to-SwiftUI workflow.
|
|
|
133
133
|
- Artifact Path: {artifactPath}
|
|
134
134
|
- Component Location: {componentLocation}
|
|
135
135
|
- GitHub Issue: {issueNumber} (omit if not available)
|
|
136
|
-
- Wiki Path: {wikiPath} (Phase 7 only
|
|
136
|
+
- Wiki Path: {wikiPath} (Phase 7 only - `{repos.wiki.path}`)
|
|
137
137
|
|
|
138
138
|
## Tool Restrictions
|
|
139
|
-
{from dispatch table
|
|
139
|
+
{from dispatch table - e.g., "Do NOT use the Edit tool."}
|
|
140
140
|
|
|
141
141
|
## Your Instructions
|
|
142
142
|
Read and STRICTLY FOLLOW your phase instructions gate-by-gate from this file:
|
|
@@ -149,18 +149,18 @@ Read the return protocol from:
|
|
|
149
149
|
|
|
150
150
|
## Specs (if present)
|
|
151
151
|
- {artifactPath}/pass0/specs.md
|
|
152
|
-
Read and incorporate specs alongside phase instructions. Both are inputs you must follow
|
|
152
|
+
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.
|
|
153
153
|
|
|
154
154
|
## Reference Files (read during execution if needed)
|
|
155
155
|
- .instructions/figma/figma-to-swiftui/{reference path}
|
|
156
156
|
|
|
157
157
|
## Previous Phase Artifacts (read in this order)
|
|
158
|
-
{use the Read-Order Table below
|
|
158
|
+
{use the Read-Order Table below - list file PATHS only, do not embed content}
|
|
159
159
|
```
|
|
160
160
|
|
|
161
161
|
### 2. Dispatch
|
|
162
162
|
|
|
163
|
-
**Phase 1 (script):** Run directly via Bash
|
|
163
|
+
**Phase 1 (script):** Run directly via Bash - no subagent needed:
|
|
164
164
|
|
|
165
165
|
```bash
|
|
166
166
|
python3 .instructions/figma/figma-to-swiftui/scripts/phase1-gather.py \
|
|
@@ -175,7 +175,7 @@ The script tries remote MCP first, falls back to local MCP automatically.
|
|
|
175
175
|
|
|
176
176
|
**If `status` = `COMPLETE_WITH_DEFERRED`:**
|
|
177
177
|
Design context was deferred (too many sublayers). All other artifacts are present.
|
|
178
|
-
Do NOT ask the user
|
|
178
|
+
Do NOT ask the user - dispatch a **Phase 1 subagent** for deferred resolution:
|
|
179
179
|
|
|
180
180
|
```
|
|
181
181
|
Agent(
|
|
@@ -230,13 +230,13 @@ After each phase completes, update IMPLEMENTATION_HISTORY.md with phase status,
|
|
|
230
230
|
|
|
231
231
|
---
|
|
232
232
|
|
|
233
|
-
## Phase 2 Routing (inline
|
|
233
|
+
## Phase 2 Routing (inline - do NOT read phase-2-orchestrator.md)
|
|
234
234
|
|
|
235
235
|
**Do NOT read `phase-2-orchestrator.md`. All routing logic is here. Subagents read their own docs.**
|
|
236
236
|
|
|
237
237
|
1. **PRE-CHECK**: Read `IMPLEMENTATION_HISTORY.md` (already in context). Verify `pass1/_index.md` exists.
|
|
238
|
-
2. **NORMALIZE**: Check `pass1/design_context_response.json`
|
|
239
|
-
3. **REGISTRY_LOOKUP**: `cd {repos.common.path} && .build/debug/FigmaRegistryUtility utility-lookup --node-id '{nodeId}'`
|
|
238
|
+
2. **NORMALIZE**: Check `pass1/design_context_response.json` - if `sublayers: true` and no `response` field, concatenate `responses` values into `response` field and write back.
|
|
239
|
+
3. **REGISTRY_LOOKUP**: `cd {repos.common.path} && .build/debug/FigmaRegistryUtility utility-lookup --node-id '{nodeId}'` - pass result as `registryData` context to subagents.
|
|
240
240
|
4. **Wave 1 (parallel)**: Dispatch 2A + 2B + 2C as subagents (each reads its own instruction doc by path).
|
|
241
241
|
5. **Wave 2**: Dispatch 2D as subagent (depends on 2A output).
|
|
242
242
|
6. **FINALIZE (script)**:
|
|
@@ -250,7 +250,7 @@ After each phase completes, update IMPLEMENTATION_HISTORY.md with phase status,
|
|
|
250
250
|
|
|
251
251
|
---
|
|
252
252
|
|
|
253
|
-
## Phase 3 Routing (inline
|
|
253
|
+
## Phase 3 Routing (inline - do NOT read phase-3-orchestrator.md)
|
|
254
254
|
|
|
255
255
|
**Do NOT read `phase-3-orchestrator.md`. Subagents read their own docs. Scripts handle deterministic phases.**
|
|
256
256
|
|
|
@@ -260,14 +260,14 @@ After each phase completes, update IMPLEMENTATION_HISTORY.md with phase status,
|
|
|
260
260
|
- **Scripts**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py wave1 --artifact-path '{artifactPath}'` (runs 3B+3E+3F, ~5s)
|
|
261
261
|
- **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)
|
|
262
262
|
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:
|
|
263
|
-
- **Subagent** (`general-purpose`, opus, 25 turns)
|
|
263
|
+
- **Subagent** (`general-purpose`, opus, 25 turns) - reads `reference/missing-tokens.md` for procedure, resolves each missing token by:
|
|
264
264
|
- **Typography**: Adding alias entries to `typography-registry.json` (match font size + weight to existing Swift tokens)
|
|
265
265
|
- **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`
|
|
266
266
|
- **Variables**: Using `FigmaRegistryUtility ui-token-lookup` / `ui-token-index` to verify
|
|
267
267
|
- Pass artifact path and token mapping path as context. Subagent updates token mapping after resolution.
|
|
268
268
|
- If 0 missing tokens, skip this step entirely.
|
|
269
269
|
5. **Wave 2 (parallel)**: Launch simultaneously:
|
|
270
|
-
- **Subagent**: 3D (`phase-3d-patterns.md`, opus, 30 turns)
|
|
270
|
+
- **Subagent**: 3D (`phase-3d-patterns.md`, opus, 30 turns) - reads 3H output (`pass3/04c_variant_config_analysis.json`)
|
|
271
271
|
6. **Wave 3**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py 3g --artifact-path '{artifactPath}'` (depends on 3D JSON output)
|
|
272
272
|
7. **COLLECT**: Verify 12 artifacts exist in `pass3/` (10 original + 2 from 3H).
|
|
273
273
|
8. **SPEC (script)**: `python3 .instructions/figma/figma-to-swiftui/scripts/phase3-scripts.py spec --artifact-path '{artifactPath}'`
|
|
@@ -276,38 +276,38 @@ After each phase completes, update IMPLEMENTATION_HISTORY.md with phase status,
|
|
|
276
276
|
|
|
277
277
|
---
|
|
278
278
|
|
|
279
|
-
## Phase 4 Routing (inline
|
|
279
|
+
## Phase 4 Routing (inline - do NOT read phase-4-orchestrator.md)
|
|
280
280
|
|
|
281
281
|
**Do NOT read `phase-4-orchestrator.md`. Subagents read their own docs. Orchestrator stays lean.**
|
|
282
282
|
|
|
283
283
|
1. **PRE-CHECK**: Verify `pass3/_index.md` exists.
|
|
284
|
-
2. **LOAD_SPEC**: Read `pass3/07_implementation_spec.md` and `pass3/05_complexity.md`
|
|
284
|
+
2. **LOAD_SPEC**: Read `pass3/07_implementation_spec.md` and `pass3/05_complexity.md` - extract `componentLocation`, `complexity` (SIMPLE/COMPLEX).
|
|
285
285
|
3. **PREPARE_DIRECTORY**: `mkdir -p {componentLocation}`. Get `gitUser` via `git config user.name`. Get `date` in DD.MM.YYYY format.
|
|
286
286
|
4. **Wave 1 (parallel)**: Dispatch subagents:
|
|
287
|
-
- **4A** (`phase-4a-configuration.md`, opus, 30 turns)
|
|
288
|
-
- **4B** (`phase-4b-view.md`, opus, 40 turns)
|
|
289
|
-
- **4C** (`phase-4c-documentation.md`, sonnet, 20 turns)
|
|
290
|
-
- Pass to each: componentName, componentLocation, artifactPath, nodeId, fileKey, complexity, gitUser, date, issueNumber (from IMPLEMENTATION_HISTORY.md `GitHub Issue` field
|
|
287
|
+
- **4A** (`phase-4a-configuration.md`, opus, 30 turns) - **COMPLEX only** (skip if SIMPLE). Writes `{ComponentName}Configuration.swift`.
|
|
288
|
+
- **4B** (`phase-4b-view.md`, opus, 40 turns) - **ALWAYS**. Writes `{ComponentName}.swift`.
|
|
289
|
+
- **4C** (`phase-4c-documentation.md`, sonnet, 20 turns) - **ALWAYS**. Writes `FIGMA.md`.
|
|
290
|
+
- Pass to each: componentName, componentLocation, artifactPath, nodeId, fileKey, complexity, gitUser, date, issueNumber (from IMPLEMENTATION_HISTORY.md `GitHub Issue` field - extract the number after `#`).
|
|
291
291
|
5. **Wave 2 (parallel)**: Dispatch subagents that depend on 4A+4B:
|
|
292
|
-
- **4D** (`phase-4d-preview.md`, sonnet, 20 turns)
|
|
293
|
-
- **4E** (`phase-4e-modifiers.md`, sonnet, 20 turns)
|
|
292
|
+
- **4D** (`phase-4d-preview.md`, sonnet, 20 turns) - appends Preview to `{ComponentName}.swift`.
|
|
293
|
+
- **4E** (`phase-4e-modifiers.md`, sonnet, 20 turns) - **COMPLEX only** (skip if SIMPLE). Writes `{ComponentName}+Modifiers.swift`.
|
|
294
294
|
6. **COLLECT**: Verify `{ComponentName}.swift`, `{ComponentName}Configuration.swift` (if COMPLEX), `{ComponentName}+Modifiers.swift` (if COMPLEX), `FIGMA.md` exist.
|
|
295
|
-
7. **VALIDATE**: `bash .instructions/figma/figma-to-swiftui/scripts/validate-phase4.sh "{componentLocation}" "{ComponentName}" "{artifactPath}/pass3/00_property_coverage.json"`
|
|
296
|
-
8. **BUILD**: `xcodebuild build -project "$(git rev-parse --show-toplevel)/{build.xcodeproj}" -scheme {build.scheme} -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO -quiet`
|
|
295
|
+
7. **VALIDATE**: `bash .instructions/figma/figma-to-swiftui/scripts/validate-phase4.sh "{componentLocation}" "{ComponentName}" "{artifactPath}/pass3/00_property_coverage.json"` - fix violations if any.
|
|
296
|
+
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.
|
|
297
297
|
9. **UPDATE HISTORY**: Append Phase 4 summary.
|
|
298
298
|
|
|
299
299
|
---
|
|
300
300
|
|
|
301
|
-
## Phase 5 Routing (inline
|
|
301
|
+
## Phase 5 Routing (inline - do NOT read phase-5-orchestrator.md)
|
|
302
302
|
|
|
303
303
|
**Do NOT read `phase-5-orchestrator.md`. Subagents read their own docs.**
|
|
304
304
|
|
|
305
305
|
1. **PRE-CHECK**: Verify Phase 4 complete (component Swift file exists at `{componentLocation}`).
|
|
306
306
|
2. **Wave 1 (parallel)**: Dispatch subagents:
|
|
307
|
-
- **5A** (`phase-5a-viewinspector.md`, sonnet, 40 turns)
|
|
308
|
-
- **5B** (`phase-5b-snapshot.md`, sonnet, 40 turns)
|
|
309
|
-
3. **Wave 2 (conditional)**: **5C** (`phase-5c-unit.md`, sonnet, 30 turns)
|
|
310
|
-
4. **TEST EXECUTION**: Run all tests via script
|
|
307
|
+
- **5A** (`phase-5a-viewinspector.md`, sonnet, 40 turns) - ViewInspector structure + accessibility tests.
|
|
308
|
+
- **5B** (`phase-5b-snapshot.md`, sonnet, 40 turns) - Snapshot tests for all Figma variants.
|
|
309
|
+
3. **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.
|
|
310
|
+
4. **TEST EXECUTION**: Run all tests via script - sequentially, NOT parallel (shared DerivedData lock):
|
|
311
311
|
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.
|
|
312
312
|
b. **Run tests**:
|
|
313
313
|
```bash
|
|
@@ -323,7 +323,7 @@ After each phase completes, update IMPLEMENTATION_HISTORY.md with phase status,
|
|
|
323
323
|
|
|
324
324
|
## Phase 6 Routing
|
|
325
325
|
|
|
326
|
-
Phase 6 is dispatched as a single subagent. After the subagent returns COMPLETE, run the finalization script as a safety net (idempotent
|
|
326
|
+
Phase 6 is dispatched as a single subagent. After the subagent returns COMPLETE, run the finalization script as a safety net (idempotent - safe to run even if the subagent already ran it):
|
|
327
327
|
|
|
328
328
|
```bash
|
|
329
329
|
python3 .instructions/figma/figma-to-swiftui/scripts/phase6-finalize.py \
|
|
@@ -341,24 +341,24 @@ Parse stdout JSON. Verify `"status": "ok"`. Update IMPLEMENTATION_HISTORY.md wit
|
|
|
341
341
|
|
|
342
342
|
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.
|
|
343
343
|
|
|
344
|
-
Every phase must be independently operable from a clean session
|
|
344
|
+
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.
|
|
345
345
|
|
|
346
346
|
| Phase | Read FIRST (compact) | Read SECOND (if detail needed) |
|
|
347
347
|
|-------|---------------------|-------------------------------|
|
|
348
348
|
| 2A-2D | `pass1/component_summary.json` | `pass1/design_context_response.json`, `pass1/component_properties.json` |
|
|
349
|
-
| 3A | `pass1/component_summary.json`, `IMPLEMENTATION_HISTORY.md` |
|
|
349
|
+
| 3A | `pass1/component_summary.json`, `IMPLEMENTATION_HISTORY.md` | - |
|
|
350
350
|
| 3B | `pass1/component_summary.json`, `pass1/variable_defs_response.json` | `pass1/design_context_response.json` (for binding context) |
|
|
351
|
-
| 3C | `pass1/component_summary.json`, `pass1/code_connect_map_response.json` |
|
|
351
|
+
| 3C | `pass1/component_summary.json`, `pass1/code_connect_map_response.json` | - |
|
|
352
352
|
| 3D | `pass1/component_summary.json`, `pass1/component_properties.json` | `pass1/design_context_response.json`, `pass1/metadata_response.xml` |
|
|
353
|
-
| 3E | `pass1/component_summary.json`, `pass1/design_context_assets.txt` |
|
|
353
|
+
| 3E | `pass1/component_summary.json`, `pass1/design_context_assets.txt` | - |
|
|
354
354
|
| 3F | `pass1/component_summary.json`, `pass2/utility_*.md` | `pass1/design_context_response.json` |
|
|
355
|
-
| 3G | `pass1/component_summary.json`, `pass3/04b_component_architecture.md` |
|
|
355
|
+
| 3G | `pass1/component_summary.json`, `pass3/04b_component_architecture.md` | - |
|
|
356
356
|
| 4A | `pass3/04b_component_architecture.md`, `pass3/05_complexity.md`, `pass3/00_property_coverage.json` | `pass1/component_summary.json` |
|
|
357
357
|
| 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) |
|
|
358
358
|
| 4C | `pass3/07_implementation_spec.md`, `pass3/04b_component_architecture.md`, `pass3/00_property_coverage.json` | `pass1/component_summary.json` |
|
|
359
359
|
| 4D | `{componentLocation}/{ComponentName}.swift`, `{componentLocation}/{ComponentName}Configuration.swift` (if exists) | `pass3/04_patterns.md` |
|
|
360
|
-
| 4E | `{componentLocation}/{ComponentName}Configuration.swift`, `{componentLocation}/{ComponentName}.swift` |
|
|
361
|
-
| 6 | `pass1/component_properties.json`, `{sourceLocation}/FIGMA.md`, `{sourceLocation}/{componentName}.swift` |
|
|
360
|
+
| 4E | `{componentLocation}/{ComponentName}Configuration.swift`, `{componentLocation}/{ComponentName}.swift` | - |
|
|
361
|
+
| 6 | `pass1/component_properties.json`, `{sourceLocation}/FIGMA.md`, `{sourceLocation}/{componentName}.swift` | - |
|
|
362
362
|
|
|
363
363
|
---
|
|
364
364
|
|
|
@@ -22,7 +22,7 @@ SUMMARY: {one-line description of what was accomplished}
|
|
|
22
22
|
STATUS: HALT
|
|
23
23
|
PHASE: phase-{N}
|
|
24
24
|
GATE: {gate-id that failed}
|
|
25
|
-
REASON: {exact reason
|
|
25
|
+
REASON: {exact reason - copy from instruction if applicable}
|
|
26
26
|
COMPLETED_GATES: [gates that passed before halt]
|
|
27
27
|
ARTIFACTS_CREATED: [files written before halt, or "none"]
|
|
28
28
|
USER_ACTION_REQUIRED: {what the user must fix before retry}
|
|
@@ -52,6 +52,6 @@ CONTEXT: {relevant data the user needs to make the decision}
|
|
|
52
52
|
2. STOP after outputting the block. Do not call any more tools.
|
|
53
53
|
3. Every gate you pass must appear in GATES_PASSED or COMPLETED_GATES.
|
|
54
54
|
4. Every file you created must appear in ARTIFACTS_CREATED.
|
|
55
|
-
5. Never output a STATUS block mid-execution
|
|
55
|
+
5. Never output a STATUS block mid-execution - only at the very end.
|
|
56
56
|
6. If you encounter multiple failures, report the FIRST one.
|
|
57
57
|
7. If a HALT condition says to check for USER_DECISION in the prompt first, do so before halting.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# PHASE 0
|
|
1
|
+
# PHASE 0 - Component Initialization
|
|
2
2
|
|
|
3
3
|
Setup component context and create artifact directory before implementation.
|
|
4
4
|
NEXT: Phase 1 (Data Gathering)
|
|
@@ -75,7 +75,7 @@ QUESTION: No node ID found in user input.
|
|
|
75
75
|
OPTIONS:
|
|
76
76
|
1) Provide Figma URL (format: https://figma.com/design/KEY/Name?node-id=X-Y)
|
|
77
77
|
2) Provide node ID directly (format: X:Y)
|
|
78
|
-
SUGGESTED: Option 1
|
|
78
|
+
SUGGESTED: Option 1 - paste the full Figma URL
|
|
79
79
|
COMPLETED_GATES: [PRE_CHECK_SETUP]
|
|
80
80
|
CONTEXT: A Figma URL or node ID is required to start implementation.
|
|
81
81
|
```
|
|
@@ -118,7 +118,7 @@ OPTIONS:
|
|
|
118
118
|
1) Update registry first (run registry update command)
|
|
119
119
|
2) Provide component name and location manually
|
|
120
120
|
3) Check if node ID is correct
|
|
121
|
-
SUGGESTED: Option 1
|
|
121
|
+
SUGGESTED: Option 1 - registry may be outdated
|
|
122
122
|
COMPLETED_GATES: [PRE_CHECK_SETUP, EXTRACT_NODE_ID]
|
|
123
123
|
CONTEXT: The FigmaRegistryUtility lookup returned no results for node ID <NODE_ID>.
|
|
124
124
|
```
|
|
@@ -133,9 +133,9 @@ Resolve `componentName`, `componentLocation`, and `artifactPath` using this prio
|
|
|
133
133
|
|
|
134
134
|
| Field | Priority 1 (highest) | Priority 2 | Priority 3 (lowest) |
|
|
135
135
|
|-------|---------------------|------------|---------------------|
|
|
136
|
-
| `componentName` | User-provided in prompt | Suggested by registry | HALT
|
|
137
|
-
| `componentLocation` | User-provided in prompt | `suggestedComponentLocation` from registry | HALT
|
|
138
|
-
| `artifactPath` | Derived from final `componentName` if name changed | `suggestedArtifactPath` from registry | HALT
|
|
136
|
+
| `componentName` | User-provided in prompt | Suggested by registry | HALT - ask user |
|
|
137
|
+
| `componentLocation` | User-provided in prompt | `suggestedComponentLocation` from registry | HALT - ask user |
|
|
138
|
+
| `artifactPath` | Derived from final `componentName` if name changed | `suggestedArtifactPath` from registry | HALT - ask user |
|
|
139
139
|
|
|
140
140
|
**How to detect user overrides:** Scan the user's original prompt for explicit name or location mentions:
|
|
141
141
|
- `"implement as PackageBadge"` → override componentName
|
|
@@ -143,14 +143,14 @@ Resolve `componentName`, `componentLocation`, and `artifactPath` using this prio
|
|
|
143
143
|
- `"put it in Sources/UIComponents/Booking/"` → override componentLocation
|
|
144
144
|
- Any PascalCase word the user associates with the component → override componentName
|
|
145
145
|
|
|
146
|
-
If user provided an override in their prompt, use it directly
|
|
147
|
-
If user did NOT provide an override, use the registry suggestion
|
|
146
|
+
If user provided an override in their prompt, use it directly - do NOT ask for confirmation.
|
|
147
|
+
If user did NOT provide an override, use the registry suggestion - but check for vague names first.
|
|
148
148
|
|
|
149
149
|
### 3.2 Vague name detection
|
|
150
150
|
|
|
151
151
|
Registry names derived from Figma layer hierarchy can be too generic. Check if `suggestedComponentName` is vague:
|
|
152
152
|
|
|
153
|
-
**Vague indicators**
|
|
153
|
+
**Vague indicators** - single common word that doesn't describe the component's purpose:
|
|
154
154
|
- Generic containers: `Package`, `Card`, `Item`, `Cell`, `Row`, `View`, `Container`, `Component`, `Element`, `Block`, `Section`, `Group`, `Box`, `Wrapper`
|
|
155
155
|
- Generic actions: `Button`, `Label`, `Icon`, `Badge`, `Tag`, `Chip`, `Indicator`
|
|
156
156
|
- Generic layout: `Header`, `Footer`, `Content`, `Body`, `Stack`, `List`
|
|
@@ -277,8 +277,8 @@ ls {artifactPath}/pass0/specs.md 2>/dev/null
|
|
|
277
277
|
```
|
|
278
278
|
|
|
279
279
|
**If specs exist:** read the file and store as `implementationSpecs`. These specs will be passed to subsequent phases as additional context:
|
|
280
|
-
- Phase 3 (Analysis)
|
|
281
|
-
- Phase 4 (Implementation)
|
|
280
|
+
- Phase 3 (Analysis) - informs pattern decisions
|
|
281
|
+
- Phase 4 (Implementation) - constrains the init signature, defaults, and behavior
|
|
282
282
|
|
|
283
283
|
Append to IMPLEMENTATION_HISTORY.md:
|
|
284
284
|
```markdown
|
|
@@ -287,7 +287,7 @@ Append to IMPLEMENTATION_HISTORY.md:
|
|
|
287
287
|
- Loaded: <DATE>
|
|
288
288
|
```
|
|
289
289
|
|
|
290
|
-
**If no specs file:** continue without. No error
|
|
290
|
+
**If no specs file:** continue without. No error - specs are optional.
|
|
291
291
|
|
|
292
292
|
---
|
|
293
293
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Phase 1
|
|
1
|
+
# Phase 1 - Data Gathering
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
@@ -28,7 +28,7 @@ Phase 1 is done. All artifacts are in `pass1/`. Proceed to Phase 2.
|
|
|
28
28
|
|
|
29
29
|
### If `status` = `COMPLETE_WITH_DEFERRED`
|
|
30
30
|
|
|
31
|
-
The script completed all data gathering **except** `get_design_context`, which was deferred because the component has too many sublayers (>20). Report status to orchestrator
|
|
31
|
+
The script completed all data gathering **except** `get_design_context`, which was deferred because the component has too many sublayers (>20). Report status to orchestrator - it will dispatch a Phase 1 subagent for deferred resolution.
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
@@ -52,9 +52,9 @@ Classify each variant axis:
|
|
|
52
52
|
|
|
53
53
|
| Category | Examples | Action |
|
|
54
54
|
|----------|----------|--------|
|
|
55
|
-
| **Interaction** | `State` (Default/Hover/Pressed/Disabled), focus/hover variants | Fix to `Default` (only color/opacity changes
|
|
55
|
+
| **Interaction** | `State` (Default/Hover/Pressed/Disabled), focus/hover variants | Fix to `Default` (only color/opacity changes - no structural difference) |
|
|
56
56
|
| **Theme** | `Color`, `Theme`, `Mode` | Fix to first value (e.g., `Brand`) |
|
|
57
|
-
| **Structural** | `Size`, `Style`, `IconDirection`, `Type`, `Layout`, everything else | **Vary**
|
|
57
|
+
| **Structural** | `Size`, `Style`, `IconDirection`, `Type`, `Layout`, everything else | **Vary** - these change layout/structure |
|
|
58
58
|
|
|
59
59
|
Calculate structural combinations:
|
|
60
60
|
- If <= 20: fetch all structural combinations (with interaction + theme fixed).
|
|
@@ -66,7 +66,7 @@ Each sublayer in Figma is a variant named like `Color=Brand, Size=Default, Style
|
|
|
66
66
|
|
|
67
67
|
The `sublayerIds` list in `design_context_deferred.json` corresponds to the children of the component set. To map selected variant combinations to node IDs:
|
|
68
68
|
|
|
69
|
-
1. Read `{artifactPath}/pass1/screenshots/variants.md`
|
|
69
|
+
1. Read `{artifactPath}/pass1/screenshots/variants.md` - it has a table of `Variant | Node ID | File`.
|
|
70
70
|
2. Match your selected combinations against the variant names.
|
|
71
71
|
3. Collect the node IDs for matched variants.
|
|
72
72
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# PHASE 1.5
|
|
1
|
+
# PHASE 1.5 - Existing Component Discovery
|
|
2
2
|
|
|
3
3
|
Detects whether the target component is already implemented in the codebase OR already mapped via Code Connect, BEFORE Phase 2 starts greenfield generation. Without this gate, the pipeline can silently overwrite existing implementations and re-publish duplicate Code Connect mappings.
|
|
4
4
|
|
|
5
5
|
PREV: Phase 1 (Data Gathering)
|
|
6
|
-
NEXT: Phase 2 (Utility Integration)
|
|
6
|
+
NEXT: Phase 2 (Utility Integration) - only when status is `GREENFIELD_OK`
|
|
7
7
|
REF: `phase-6-code-connect.md` (publish gate honors discovery output)
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -12,12 +12,12 @@ REF: `phase-6-code-connect.md` (publish gate honors discovery output)
|
|
|
12
12
|
|
|
13
13
|
| Condition | Action |
|
|
14
14
|
|---|---|
|
|
15
|
-
| `pass1/code_connect_map_response.json` missing | HALT
|
|
15
|
+
| `pass1/code_connect_map_response.json` missing | HALT - Phase 1 didn't complete cleanly |
|
|
16
16
|
| All other cases | EXECUTE |
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
## STEP 1
|
|
20
|
+
## STEP 1 - Inspect Code Connect map for self-reference
|
|
21
21
|
|
|
22
22
|
INPUT: `{artifactPath}/pass1/code_connect_map_response.json`
|
|
23
23
|
|
|
@@ -26,7 +26,7 @@ The map is a `{ nodeId: { codeConnectSrc, codeConnectName } }` lookup. The curre
|
|
|
26
26
|
```python
|
|
27
27
|
# Pseudocode
|
|
28
28
|
target_node_id = state.issue.nodeId # e.g. "7528:23317"
|
|
29
|
-
target_name = state.issue.componentName # PascalCase, e.g. "
|
|
29
|
+
target_name = state.issue.componentName # PascalCase, e.g. "MyComponentSettingsLayout"
|
|
30
30
|
|
|
31
31
|
cc_map = json.load(open(f"{artifactPath}/pass1/code_connect_map_response.json"))
|
|
32
32
|
|
|
@@ -42,7 +42,7 @@ If `ALREADY_MAPPED`: the target Figma node is already wired to a code component.
|
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
|
-
## STEP 2
|
|
45
|
+
## STEP 2 - Search the codebase for an existing source file
|
|
46
46
|
|
|
47
47
|
If Step 1 returned no match, look for a file that matches the target component name. Use the project's component root (resolved from `figma-config.json` → `componentRoot` if set, else `Sources/UIComponents/Components/`).
|
|
48
48
|
|
|
@@ -54,9 +54,9 @@ Three outcomes:
|
|
|
54
54
|
|
|
55
55
|
| Files found | Status |
|
|
56
56
|
|---|---|
|
|
57
|
-
| 0 | `GREENFIELD_OK`
|
|
58
|
-
| 1 | `EXISTING_SOURCE_NO_CC`
|
|
59
|
-
| 2+ | `AMBIGUOUS_SOURCE`
|
|
57
|
+
| 0 | `GREENFIELD_OK` - proceed to Phase 2 normally |
|
|
58
|
+
| 1 | `EXISTING_SOURCE_NO_CC` - file exists but Code Connect mapping is missing |
|
|
59
|
+
| 2+ | `AMBIGUOUS_SOURCE` - multiple files match; needs user disambiguation |
|
|
60
60
|
|
|
61
61
|
For `EXISTING_SOURCE_NO_CC`, also check whether a sibling `.figma.swift` exists:
|
|
62
62
|
|
|
@@ -70,7 +70,7 @@ If `.figma.swift` is absent → the source exists but is fully unconnected.
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
## STEP 3
|
|
73
|
+
## STEP 3 - User decision (only on non-greenfield)
|
|
74
74
|
|
|
75
75
|
When the orchestrator sees status `ALREADY_MAPPED`, `EXISTING_SOURCE_NO_CC`, or `AMBIGUOUS_SOURCE`, emit a `STATUS: NEEDS_INPUT` block to the parent multi-agent pipeline.
|
|
76
76
|
|
|
@@ -83,9 +83,9 @@ GATE: ALREADY_MAPPED
|
|
|
83
83
|
DETECTED: {sourcePath} (already mapped to Figma node {nodeId})
|
|
84
84
|
QUESTION: This Figma node is already wired to a code component. What should the pipeline do?
|
|
85
85
|
OPTIONS:
|
|
86
|
-
1. Run gap analysis only (FIGMA.md / tests / wiki
|
|
87
|
-
2. Force regenerate (DANGER
|
|
88
|
-
3. Cancel
|
|
86
|
+
1. Run gap analysis only (FIGMA.md / tests / wiki - fill what's missing, do NOT touch the component source)
|
|
87
|
+
2. Force regenerate (DANGER - overwrites the existing source file; only choose this if the design has materially changed)
|
|
88
|
+
3. Cancel - abort this run, no edits
|
|
89
89
|
DEFAULT: 1
|
|
90
90
|
```
|
|
91
91
|
|
|
@@ -101,9 +101,9 @@ DETECTED: {sourcePath} exists in the codebase but is not connected to the Figma
|
|
|
101
101
|
SIBLING_FIGMA_SWIFT: {present | absent}
|
|
102
102
|
QUESTION: Found an existing source file matching {target_name}. What should the pipeline do?
|
|
103
103
|
OPTIONS:
|
|
104
|
-
1. Add Code Connect only
|
|
105
|
-
2. Publish-only
|
|
106
|
-
3. Force regenerate
|
|
104
|
+
1. Add Code Connect only - write {target_name}.figma.swift next to the source, publish it (recommended when sibling absent)
|
|
105
|
+
2. Publish-only - sibling .figma.swift already exists; just run `figma connect publish` (recommended when sibling present)
|
|
106
|
+
3. Force regenerate - overwrite the source file with a fresh greenfield generation
|
|
107
107
|
4. Cancel
|
|
108
108
|
DEFAULT: 2 if sibling present, else 1
|
|
109
109
|
```
|
|
@@ -119,13 +119,13 @@ CANDIDATES: <bulleted list of paths>
|
|
|
119
119
|
QUESTION: Pick the canonical source for this Figma node, or cancel.
|
|
120
120
|
OPTIONS:
|
|
121
121
|
<one option per candidate>
|
|
122
|
-
N+1. None of the above
|
|
122
|
+
N+1. None of the above - treat as greenfield
|
|
123
123
|
N+2. Cancel
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
---
|
|
127
127
|
|
|
128
|
-
## STEP 4
|
|
128
|
+
## STEP 4 - Gap analysis (only on ALREADY_MAPPED + user picked option 1)
|
|
129
129
|
|
|
130
130
|
When the existing component is reused, the orchestrator still checks what's missing:
|
|
131
131
|
|
|
@@ -136,7 +136,7 @@ SRC_DIR=$(dirname "$sourcePath")
|
|
|
136
136
|
# Snapshot tests, ViewInspector tests, wiki MD, ...
|
|
137
137
|
```
|
|
138
138
|
|
|
139
|
-
The gap list goes into `state.discovery.gaps[]`. Phases 2/3 are SKIPPED. Phase 4
|
|
139
|
+
The gap list goes into `state.discovery.gaps[]`. Phases 2/3 are SKIPPED. Phase 4-7 run only the steps that target gaps:
|
|
140
140
|
|
|
141
141
|
| Gap | Phase that fills it |
|
|
142
142
|
|---|---|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# PHASE 2
|
|
1
|
+
# PHASE 2 - Utility Integration Orchestrator
|
|
2
2
|
|
|
3
3
|
Orchestrates Phase 2 sub-phases: dispatches sub-agents, collects results, writes pass2/_index.md.
|
|
4
4
|
PREV: Phase 1.5 (Existing Component Discovery)
|
|
@@ -6,18 +6,18 @@ NEXT: Phase 3 (Data Analysis)
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## ENTRY GATE
|
|
9
|
+
## ENTRY GATE - discovery status
|
|
10
10
|
|
|
11
11
|
Phase 2 reads `agent-state.discovery.status` written by Phase 1.5:
|
|
12
12
|
|
|
13
13
|
| `discovery.status` | Phase 2 action |
|
|
14
14
|
|---|---|
|
|
15
|
-
| `GREENFIELD_OK` (or absent for backward compat) | EXECUTE
|
|
16
|
-
| `GAP_ANALYSIS` | SKIP
|
|
17
|
-
| `ALREADY_MAPPED` (no user override) | SKIP
|
|
18
|
-
| `EXISTING_SOURCE_NO_CC` (publish-only path picked) | SKIP
|
|
15
|
+
| `GREENFIELD_OK` (or absent for backward compat) | EXECUTE - run all sub-phases below |
|
|
16
|
+
| `GAP_ANALYSIS` | SKIP - Phase 2 outputs are not needed; jump to Phase 4 (only run Documentation / Code Connect / tests / wiki sub-phases that target the gap list) |
|
|
17
|
+
| `ALREADY_MAPPED` (no user override) | SKIP - same as `GAP_ANALYSIS` |
|
|
18
|
+
| `EXISTING_SOURCE_NO_CC` (publish-only path picked) | SKIP - jump to Phase 6 |
|
|
19
19
|
| `CANCELLED` | HALT |
|
|
20
|
-
| Any other value | HALT
|
|
20
|
+
| Any other value | HALT - unknown discovery state, refuse to proceed |
|
|
21
21
|
|
|
22
22
|
If `discovery` field is absent on `agent-state.json`, log a one-line warning ("phase-1.5 not run; assuming GREENFIELD_OK") and proceed. This preserves backward compatibility with runs started before the discovery gate existed.
|
|
23
23
|
|
|
@@ -35,7 +35,7 @@ import UIComponentUtilities
|
|
|
35
35
|
|----------|-----------|-------|
|
|
36
36
|
| Testing | `View.accessibilityIdentifier(_ key: UITestingIdentifierKey)` | `.accessibilityIdentifier(.ComponentName.element)` |
|
|
37
37
|
| Localization | `Text(_ key: LocalizationStringKey)` | `Text(.ComponentName.title)` |
|
|
38
|
-
| Accessibility | `View.accessibilityLabel(_ key: LocalizedAccessibilityStringKey)` | Only when SwiftUI can't read visible text
|
|
38
|
+
| Accessibility | `View.accessibilityLabel(_ key: LocalizedAccessibilityStringKey)` | Only when SwiftUI can't read visible text - many components need NO accessibility modifiers |
|
|
39
39
|
| Analytics | `View.analyticsButton(id:label:type:)` | `.analyticsButton(id: "id", label: "Submit", type: .primary)` |
|
|
40
40
|
|
|
41
41
|
SOURCE: `Sources/UIComponentUtilities/`
|
|
@@ -91,7 +91,7 @@ Check the JSON structure:
|
|
|
91
91
|
|
|
92
92
|
| Format | Detection | Action |
|
|
93
93
|
|--------|-----------|--------|
|
|
94
|
-
| Normal | `sublayers` is `false` or absent | No action needed
|
|
94
|
+
| Normal | `sublayers` is `false` or absent | No action needed - `response` field exists |
|
|
95
95
|
| Sublayer | `sublayers` is `true` | Concatenate all `responses` values (see below) |
|
|
96
96
|
|
|
97
97
|
### Sublayer normalization
|
|
@@ -104,7 +104,7 @@ If `sublayers: true`:
|
|
|
104
104
|
4. Keep the original `sublayers`, `sublayerNodeIds`, and `responses` fields intact (for traceability)
|
|
105
105
|
5. Write the updated JSON back to `{artifactPath}/pass1/design_context_response.json`
|
|
106
106
|
|
|
107
|
-
After normalization, all sub-phases read the `response` field as usual
|
|
107
|
+
After normalization, all sub-phases read the `response` field as usual - no sublayer awareness needed.
|
|
108
108
|
|
|
109
109
|
```json
|
|
110
110
|
{
|
|
@@ -162,14 +162,14 @@ REGISTRY_LOOKUP
|
|
|
162
162
|
┌───────────────────────────────────┐
|
|
163
163
|
│ PARALLEL DISPATCH (sub-agents) │
|
|
164
164
|
│ │
|
|
165
|
-
│ 2A
|
|
166
|
-
│ 2B
|
|
167
|
-
│ 2C
|
|
165
|
+
│ 2A - Testing Identifiers │ ← required
|
|
166
|
+
│ 2B - Localization Keys │ ← if visible text
|
|
167
|
+
│ 2C - Accessibility Keys │ ← required
|
|
168
168
|
│ │
|
|
169
169
|
└───────────────────────────────────┘
|
|
170
170
|
↓ wait for all to complete
|
|
171
171
|
↓
|
|
172
|
-
2D
|
|
172
|
+
2D - Analytics Events ← if interactive elements (depends on 2A output)
|
|
173
173
|
↓
|
|
174
174
|
COLLECT RESULTS
|
|
175
175
|
↓
|
|
@@ -216,13 +216,13 @@ After all sub-phases complete, verify each produced its artifacts (both JSON sid
|
|
|
216
216
|
|
|
217
217
|
```
|
|
218
218
|
[ ] pass2/utility_identifiers.md exists (Phase 2A)
|
|
219
|
-
[ ] pass2/utility_identifiers.json exists (Phase 2A
|
|
220
|
-
[ ] pass2/utility_localization.md exists (Phase 2B
|
|
221
|
-
[ ] pass2/utility_localization.json exists (Phase 2B
|
|
219
|
+
[ ] pass2/utility_identifiers.json exists (Phase 2A - JSON sidecar)
|
|
220
|
+
[ ] pass2/utility_localization.md exists (Phase 2B - or skipped placeholder)
|
|
221
|
+
[ ] pass2/utility_localization.json exists (Phase 2B - JSON sidecar)
|
|
222
222
|
[ ] pass2/utility_accessibility.md exists (Phase 2C)
|
|
223
|
-
[ ] pass2/utility_accessibility.json exists (Phase 2C
|
|
224
|
-
[ ] pass2/utility_analytics.md exists (Phase 2D
|
|
225
|
-
[ ] pass2/utility_analytics.json exists (Phase 2D
|
|
223
|
+
[ ] pass2/utility_accessibility.json exists (Phase 2C - JSON sidecar)
|
|
224
|
+
[ ] pass2/utility_analytics.md exists (Phase 2D - or skipped placeholder)
|
|
225
|
+
[ ] pass2/utility_analytics.json exists (Phase 2D - JSON sidecar)
|
|
226
226
|
```
|
|
227
227
|
|
|
228
228
|
ANY markdown missing →
|
|
@@ -235,7 +235,7 @@ MISSING: [list missing files]
|
|
|
235
235
|
USER_ACTION_REQUIRED: Re-run the failed sub-phase.
|
|
236
236
|
```
|
|
237
237
|
|
|
238
|
-
If a JSON sidecar is missing but the markdown exists, the finalize script will log a warning and use empty arrays
|
|
238
|
+
If a JSON sidecar is missing but the markdown exists, the finalize script will log a warning and use empty arrays - this is non-blocking.
|
|
239
239
|
|
|
240
240
|
---
|
|
241
241
|
|
|
@@ -293,10 +293,10 @@ Using the counts from the finalize script output, append to `{artifactPath}/IMPL
|
|
|
293
293
|
[ ] design_context_response.json normalized (sublayer → flat response field)
|
|
294
294
|
[ ] Registry lookup performed (utility-lookup)
|
|
295
295
|
[ ] Pre-existing keys passed to sub-phases (if registry data found)
|
|
296
|
-
[ ] Phase 2A completed
|
|
297
|
-
[ ] Phase 2B completed
|
|
298
|
-
[ ] Phase 2C completed
|
|
299
|
-
[ ] Phase 2D completed
|
|
296
|
+
[ ] Phase 2A completed - utility_identifiers.md + .json exists (required)
|
|
297
|
+
[ ] Phase 2B completed - utility_localization.md + .json exists (or skipped with placeholder)
|
|
298
|
+
[ ] Phase 2C completed - utility_accessibility.md + .json exists (required)
|
|
299
|
+
[ ] Phase 2D completed - utility_analytics.md + .json exists (or skipped with placeholder)
|
|
300
300
|
[ ] phase2-finalize.py ran successfully (builds component-utilities.json, registers, writes _index.md)
|
|
301
301
|
[ ] IMPLEMENTATION_HISTORY.md updated with Phase 2 summary (using script output counts)
|
|
302
302
|
```
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# PHASE 2A
|
|
1
|
+
# PHASE 2A - Testing Identifiers
|
|
2
2
|
|
|
3
3
|
UI testing identifier integration.
|
|
4
4
|
REF: `reference/testing-identifiers-naming.md`
|
|
5
5
|
|
|
6
|
-
required
|
|
6
|
+
required - always execute this phase.
|
|
7
7
|
PARALLEL WITH: Phase 2B, Phase 2C (all read from pass1/_index.md independently)
|
|
8
8
|
NEXT: Phase 2D (depends on this phase's output)
|
|
9
9
|
|
|
@@ -68,7 +68,7 @@ USER_ACTION_REQUIRED: Run Phase 1 first to gather Figma data.
|
|
|
68
68
|
|
|
69
69
|
## CONTEXT-AWARE IDENTIFIERS
|
|
70
70
|
|
|
71
|
-
Components are reusable
|
|
71
|
+
Components are reusable - the same `TurkishButton` appears in many screens.
|
|
72
72
|
Testing identifiers cascade via `UIIdentifierContext` (SwiftUI EnvironmentKey).
|
|
73
73
|
|
|
74
74
|
### How It Works
|
|
@@ -76,7 +76,7 @@ Testing identifiers cascade via `UIIdentifierContext` (SwiftUI EnvironmentKey).
|
|
|
76
76
|
Parent views set context using `UITestingIdentifierKey` or raw strings:
|
|
77
77
|
|
|
78
78
|
```swift
|
|
79
|
-
// Type-safe (recommended)
|
|
79
|
+
// Type-safe (recommended) - uses key's identifier string as segment
|
|
80
80
|
PassengerListView()
|
|
81
81
|
.identifierContext(.PassengerList.screen)
|
|
82
82
|
|
|
@@ -85,7 +85,7 @@ SearchSection()
|
|
|
85
85
|
.identifierContext("search")
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
Child components use standard `.accessibilityIdentifier(.Component.element)`
|
|
88
|
+
Child components use standard `.accessibilityIdentifier(.Component.element)` -
|
|
89
89
|
the context is prepended automatically:
|
|
90
90
|
|
|
91
91
|
```
|
|
@@ -97,7 +97,7 @@ context = ["passenger_list", "search"]
|
|
|
97
97
|
### What Phase 2A Generates
|
|
98
98
|
|
|
99
99
|
Phase 2A generates **component-level** identifiers only (e.g., `TurkishButton.button`).
|
|
100
|
-
Context prefixes are NOT baked into component identifiers
|
|
100
|
+
Context prefixes are NOT baked into component identifiers - they come from the
|
|
101
101
|
parent view hierarchy at runtime via `.identifierContext()`.
|
|
102
102
|
|
|
103
103
|
### Artifact Guidance
|
|
@@ -282,7 +282,7 @@ Write `{artifactPath}/pass2/utility_identifiers.json`:
|
|
|
282
282
|
}
|
|
283
283
|
```
|
|
284
284
|
|
|
285
|
-
This JSON is consumed by `phase2-finalize.py` to build `component-utilities.json`. The orchestrator reads ONLY this JSON
|
|
285
|
+
This JSON is consumed by `phase2-finalize.py` to build `component-utilities.json`. The orchestrator reads ONLY this JSON - never the markdown.
|
|
286
286
|
|
|
287
287
|
### Markdown Artifact (human-readable)
|
|
288
288
|
|