@mmerterden/multi-agent-pipeline 8.6.2 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +660 -2483
- package/README.md +100 -101
- 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 +3 -3
- package/pipeline/agents/backend-architect.md +2 -2
- package/pipeline/agents/code-reviewer.md +8 -8
- package/pipeline/agents/dev-critic.md +17 -17
- package/pipeline/agents/explorer.md +3 -3
- package/pipeline/agents/ios-architect.md +2 -2
- package/pipeline/agents/security-auditor.md +10 -10
- 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 +12 -8
- 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 +20 -20
- package/pipeline/commands/multi-agent/dev-local-autopilot.md +22 -22
- package/pipeline/commands/multi-agent/dev-local.md +23 -20
- package/pipeline/commands/multi-agent/dev.md +43 -43
- 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 +65 -56
- 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 +16 -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 +41 -35
- 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 +91 -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 +24 -14
- package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +107 -57
- package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +65 -29
- package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +114 -62
- package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +99 -36
- package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +181 -62
- 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 +12 -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 +64 -58
- 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 +5 -5
- package/pipeline/lib/fetch-crashlytics.sh +7 -7
- package/pipeline/lib/fetch-fortify.sh +6 -22
- package/pipeline/lib/fetch-swagger.sh +6 -6
- 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 +28 -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 +63 -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 +42 -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 +95 -11
- 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 +17 -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 +97 -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 +88 -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 +2 -2
- 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-state.mjs +108 -0
- 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 +62 -13
- 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 +37 -30
- package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +137 -0
- 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-evolve-component/SKILL.md +61 -0
- 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-navigation/SKILL.md +142 -0
- package/pipeline/skills/figma-common/figma-overlays/SKILL.md +128 -0
- 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 +13 -12
- package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +112 -0
- 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 +53 -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 +88 -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 +53 -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 +56 -2
- 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/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 -84
- 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,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: figma-iterate
|
|
3
|
+
description: Picks the next available component issue and runs the full pipeline end-to-end: start → implement → commit. Loops until no more issues are available or the user stops it.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /figma-iterate - Automated Implementation Pipeline
|
|
2
7
|
|
|
3
8
|
## Purpose
|
|
4
9
|
|
|
@@ -8,7 +13,7 @@ Picks the next available component issue and runs the full pipeline end-to-end:
|
|
|
8
13
|
|
|
9
14
|
| Parameter | Required | Default | Description |
|
|
10
15
|
|-----------|----------|---------|-------------|
|
|
11
|
-
| `[#N]` | No |
|
|
16
|
+
| `[#N]` | No | - | Specific issue to implement. If omitted, auto-picks next available. |
|
|
12
17
|
| `--count <N>` | No | all | Number of components to implement before stopping. |
|
|
13
18
|
|
|
14
19
|
```
|
|
@@ -28,7 +33,7 @@ GH_REPO = {github.componentsRepo}
|
|
|
28
33
|
|
|
29
34
|
---
|
|
30
35
|
|
|
31
|
-
## STEP 0
|
|
36
|
+
## STEP 0 - Pick Next Issue
|
|
32
37
|
|
|
33
38
|
### If issue number provided:
|
|
34
39
|
|
|
@@ -41,7 +46,7 @@ gh issue view <N> --repo ${GH_REPO} --json number,title,state,labels --jq '{numb
|
|
|
41
46
|
If closed → HALT: "Issue #N is already closed."
|
|
42
47
|
If has `blocked` label → HALT: "Issue #N is blocked. Unblock first with `/figma-issue unblock #N`."
|
|
43
48
|
|
|
44
|
-
### If no issue number
|
|
49
|
+
### If no issue number - auto-pick:
|
|
45
50
|
|
|
46
51
|
Find the next available issue: open, `component` label, not `blocked`, not assigned.
|
|
47
52
|
|
|
@@ -62,14 +67,14 @@ Print:
|
|
|
62
67
|
|
|
63
68
|
```
|
|
64
69
|
Next available issue:
|
|
65
|
-
#<N>
|
|
70
|
+
#<N> - <title>
|
|
66
71
|
```
|
|
67
72
|
|
|
68
73
|
Print and STOP. Wait for user confirmation or "skip" to pick next.
|
|
69
74
|
|
|
70
75
|
---
|
|
71
76
|
|
|
72
|
-
## STEP 1
|
|
77
|
+
## STEP 1 - Start (`/figma-to-swift-ui-start`)
|
|
73
78
|
|
|
74
79
|
Run the start skill logic inline (not as a sub-skill invocation):
|
|
75
80
|
|
|
@@ -98,18 +103,18 @@ These 6 rules govern orchestrator behavior. Violations have caused repeated fail
|
|
|
98
103
|
|
|
99
104
|
---
|
|
100
105
|
|
|
101
|
-
## STEP 2
|
|
106
|
+
## STEP 2 - Implement (Phases 0-7)
|
|
102
107
|
|
|
103
108
|
Extract Figma URL from the issue body.
|
|
104
109
|
|
|
105
|
-
**Orchestrate inline**
|
|
110
|
+
**Orchestrate inline** - run each phase by dispatching leaf-phase subagents and scripts directly. Read the full orchestration logic from `.instructions/figma/figma-cli-iterate/SKILL.md` STEP 2.
|
|
106
111
|
|
|
107
112
|
**NEVER dispatch multi-phase meta-skills as subagents:**
|
|
108
113
|
- `/figma-to-swiftui`, `/figma-to-swift-ui-implement`, `/figma-to-swift-ui-test`, `/figma-to-swift-ui-code-connect`, `/figma-to-swift-ui-wiki`
|
|
109
114
|
|
|
110
115
|
Instead, dispatch individual phase instruction files (e.g., `phase-2a-testing-identifiers.md`, `phase-4b-view.md`) as leaf subagents.
|
|
111
116
|
|
|
112
|
-
**Spec injection (Option A):** If `{artifactPath}/pass0/specs.md` exists, read specs and inject concrete requirements into each subagent dispatch prompt as CRITICAL SPEC GATES
|
|
117
|
+
**Spec injection (Option A):** If `{artifactPath}/pass0/specs.md` exists, read specs and inject concrete requirements into each subagent dispatch prompt as CRITICAL SPEC GATES - not as a sidecar file reference.
|
|
113
118
|
|
|
114
119
|
Phases 0-7:
|
|
115
120
|
- Phase 0: Init (subagent, leaf)
|
|
@@ -125,11 +130,11 @@ If any phase HALTs → print the halt reason, ask user to resolve, then resume.
|
|
|
125
130
|
|
|
126
131
|
---
|
|
127
132
|
|
|
128
|
-
## STEP 3
|
|
133
|
+
## STEP 3 - Commit (`/figma-iteration-commit`)
|
|
129
134
|
|
|
130
135
|
Run the iteration commit logic inline:
|
|
131
136
|
|
|
132
|
-
1. Validate
|
|
137
|
+
1. Validate - build, tests, key sync, review + auto-fix
|
|
133
138
|
2. Commit to `iteration/develop` (common → uicomponents → wiki) + PR to `develop` (main, if needed)
|
|
134
139
|
3. Push each
|
|
135
140
|
4. Comment on issue with commit SHAs
|
|
@@ -147,7 +152,7 @@ Committed: <ComponentName> (#N)
|
|
|
147
152
|
|
|
148
153
|
---
|
|
149
154
|
|
|
150
|
-
## STEP 4
|
|
155
|
+
## STEP 4 - Loop
|
|
151
156
|
|
|
152
157
|
If specific issue `#N` was provided → print summary and exit (single run).
|
|
153
158
|
|
|
@@ -173,7 +178,7 @@ Before picking next, print:
|
|
|
173
178
|
|
|
174
179
|
---
|
|
175
180
|
|
|
176
|
-
## STEP 5
|
|
181
|
+
## STEP 5 - Final Summary
|
|
177
182
|
|
|
178
183
|
Print at the end of the loop:
|
|
179
184
|
|
|
@@ -196,8 +201,8 @@ Remaining: N open issues
|
|
|
196
201
|
## Error Handling
|
|
197
202
|
|
|
198
203
|
- **No available issues**: Exit cleanly with message.
|
|
199
|
-
- **Blocked issue (manual pick)**: HALT
|
|
204
|
+
- **Blocked issue (manual pick)**: HALT - don't implement blocked components.
|
|
200
205
|
- **Phase HALT**: Show reason, ask user. If resolved → resume. If skipped → mark issue, move to next.
|
|
201
|
-
- **Build/test failure in commit**: HALT
|
|
206
|
+
- **Build/test failure in commit**: HALT - don't push broken code.
|
|
202
207
|
- **3 consecutive HALTs**: Stop iteration to prevent infinite failure loops.
|
|
203
208
|
- **Submodules not on iteration/develop**: Auto-checkout before starting.
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: figma-iteration-commit
|
|
3
|
+
description: NEVER create branches on the main repo (REPO_ROOT). Do not create `iteration/develop` or any other branch on the main repo. Do not commit to the main repo.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /figma-iteration-commit - Validate & Commit to iteration/develop + PR to develop
|
|
2
7
|
|
|
3
8
|
## Guardrails
|
|
4
9
|
|
|
5
|
-
> **NEVER create branches on the main repo (REPO_ROOT).** Do not create `iteration/develop` or any other branch on the main repo. Do not commit to the main repo. This skill only commits to submodules (common, uicomponents, wiki). Main repo submodule refs are updated separately
|
|
10
|
+
> **NEVER create branches on the main repo (REPO_ROOT).** Do not create `iteration/develop` or any other branch on the main repo. Do not commit to the main repo. This skill only commits to submodules (common, uicomponents, wiki). Main repo submodule refs are updated separately - not by this skill.
|
|
6
11
|
|
|
7
12
|
> **NEVER use `json.dumps()` default formatting on JSON files.** When editing JSON files (e.g., `ui-testing-identifiers.json`), preserve the existing file format. Do not reformat, re-indent, or change separators. The canonical format for `ui-testing-identifiers.json` is `" : "` (space-colon-space), not `": "`. If you must write JSON programmatically, post-process the output to match the existing format.
|
|
8
13
|
|
|
9
14
|
> **NEVER manually edit `ui-testing-identifiers.json`.** Format corruption on this file is most likely caused by conflict resolution. When a rebase conflict occurs on this file:
|
|
10
|
-
> 1. Check what keys we added
|
|
15
|
+
> 1. Check what keys we added - look at `Shared/Figma/Components/{nodeId}.json` (has the key list) or `git show HEAD:Shared/UITestingIdentifiers/ui-testing-identifiers.json`
|
|
11
16
|
> 2. Take the remote version: `git checkout --ours Shared/UITestingIdentifiers/ui-testing-identifiers.json` (during rebase, `--ours` = upstream/remote)
|
|
12
|
-
> 3. Re-add our keys via `/common-utility` (`utility-add-key`)
|
|
17
|
+
> 3. Re-add our keys via `/common-utility` (`utility-add-key`) - this writes in the correct `" : "` format
|
|
13
18
|
> 4. `git add Shared/UITestingIdentifiers/ui-testing-identifiers.json` + `git rebase --continue`
|
|
14
19
|
>
|
|
15
|
-
> Never resolve JSON conflicts by hand-editing or `json.dumps()`
|
|
20
|
+
> Never resolve JSON conflicts by hand-editing or `json.dumps()` - it reformats the entire file.
|
|
16
21
|
|
|
17
|
-
> **ALWAYS validate `ui-testing-identifiers.json` key count after every rebase
|
|
22
|
+
> **ALWAYS validate `ui-testing-identifiers.json` key count after every rebase - even when there were no conflicts.** The implement agent regenerates this file from `identifier-keys.json` only, which means an auto-merge can silently drop keys that exist on `iteration/develop` but not in the local metadata. After every rebase (or cherry-pick), before staging and continuing, run:
|
|
18
23
|
>
|
|
19
24
|
> ```bash
|
|
20
25
|
> REMOTE_KEY_COUNT=$(git show origin/iteration/develop:Shared/UITestingIdentifiers/ui-testing-identifiers.json 2>/dev/null | grep -c '".*" : "' || echo 0)
|
|
@@ -25,7 +30,7 @@
|
|
|
25
30
|
> echo " Restoring from origin/iteration/develop and re-adding component keys..."
|
|
26
31
|
> git show origin/iteration/develop:Shared/UITestingIdentifiers/ui-testing-identifiers.json \
|
|
27
32
|
> > Shared/UITestingIdentifiers/ui-testing-identifiers.json
|
|
28
|
-
> # Re-add our component's keys (they are in identifier-keys.json
|
|
33
|
+
> # Re-add our component's keys (they are in identifier-keys.json - tool will merge them in)
|
|
29
34
|
> .build/debug/UITestingIdentifierTool generate \
|
|
30
35
|
> --config Shared/UITestingIdentifiers/Config/identifier-config.json
|
|
31
36
|
> git add Shared/UITestingIdentifiers/ui-testing-identifiers.json
|
|
@@ -35,7 +40,7 @@
|
|
|
35
40
|
>
|
|
36
41
|
> This guard runs even when `ui-testing-identifiers.json` was NOT in the conflict list. Silent key loss from auto-merge is the most common failure mode.
|
|
37
42
|
|
|
38
|
-
> **ALWAYS validate Generated Swift key files after every rebase
|
|
43
|
+
> **ALWAYS validate Generated Swift key files after every rebase - even when there were no conflicts.** The codegen tool (`UnifiedCodeGenerationTool`) regenerates `LocalizationStringKeys.swift` and `LocalizedAccessibilityStringKeys.swift` from config JSONs that reference `Sources/Suggested/*.json` files. An auto-merge (or accepting either side during conflict resolution) can silently drop enum blocks if the suggested-key files from another developer's component are not present locally. After every rebase (or cherry-pick), before rebuilding, run:
|
|
39
44
|
>
|
|
40
45
|
> ```bash
|
|
41
46
|
> LOC_FILE="iOS/Sources/LocalizationStringKeys/Generated/LocalizationStringKeys.swift"
|
|
@@ -54,9 +59,9 @@
|
|
|
54
59
|
> done
|
|
55
60
|
> ```
|
|
56
61
|
>
|
|
57
|
-
> This guard runs even when the Generated files were NOT in the conflict list. Silent enum loss from auto-merge or "accept either side" resolution is a known failure mode
|
|
62
|
+
> This guard runs even when the Generated files were NOT in the conflict list. Silent enum loss from auto-merge or "accept either side" resolution is a known failure mode - the rebuild script's codegen step (3.5) will re-add our component's keys on top of the restored remote file.
|
|
58
63
|
|
|
59
|
-
> **ALWAYS validate `Sources/Suggested/*.json` file count after every rebase, cherry-pick, AND before every commit
|
|
64
|
+
> **ALWAYS validate `Sources/Suggested/*.json` file count after every rebase, cherry-pick, AND before every commit - even when there were no conflicts.** The implement agent only creates source JSONs for the current component. A rebase, cherry-pick, or `git add -A` can silently drop source JSON files belonging to OTHER components (e.g., a tool run deletes files, or a workspace reset loses them). These per-key source files are the ground truth for localization and accessibility code generation - losing them means generated code silently loses keys for other components. After every rebase (or cherry-pick), AND before every `git add -A` in the commit step, run:
|
|
60
65
|
>
|
|
61
66
|
> ```bash
|
|
62
67
|
> for SUGGESTED_DIR in \
|
|
@@ -83,7 +88,7 @@
|
|
|
83
88
|
>
|
|
84
89
|
> This guard catches the most dangerous form of silent data loss: source JSON files from OTHER components being deleted by the current component's pipeline. Unlike generated files (which can be rebuilt), source JSONs contain the original translations and cannot be re-derived.
|
|
85
90
|
|
|
86
|
-
> **NEVER call `common-rebuild-derived-artifacts.sh` blindly after conflict resolution when `ui-testing-identifiers.json` may have been touched.** The rebuild script calls `UITestingIdentifierTool generate --swift-only` which only writes the Swift file
|
|
91
|
+
> **NEVER call `common-rebuild-derived-artifacts.sh` blindly after conflict resolution when `ui-testing-identifiers.json` may have been touched.** The rebuild script calls `UITestingIdentifierTool generate --swift-only` which only writes the Swift file - but the JSON may already be corrupt from a bad auto-merge. Always run the key-count integrity check BEFORE the rebuild script, and fix the JSON FIRST if the count decreased.
|
|
87
92
|
|
|
88
93
|
## Conflict File Classification (common submodule)
|
|
89
94
|
|
|
@@ -99,7 +104,7 @@ When a cherry-pick or rebase conflict occurs in the common submodule, classify e
|
|
|
99
104
|
| `Shared/UITestingIdentifiers/Metadata/*` | Accept either side | Gitignored, will regenerate |
|
|
100
105
|
| `Sources/Suggested/*.json` | Our version wins | Per-key files, we created them |
|
|
101
106
|
| `Shared/Figma/Components/*.json` | Our version wins | We created/modified it |
|
|
102
|
-
| `Shared/UITestingIdentifiers/ui-testing-identifiers.json` | Take remote + re-add keys via tool | See Guardrails
|
|
107
|
+
| `Shared/UITestingIdentifiers/ui-testing-identifiers.json` | Take remote + re-add keys via tool | See Guardrails - never hand-edit |
|
|
103
108
|
| `Shared/UIAssets/Colors/*.json` | Take remote + manually insert new entries | Match existing format exactly |
|
|
104
109
|
|
|
105
110
|
**After resolving all conflicts, ALWAYS rebuild derived artifacts:**
|
|
@@ -120,8 +125,8 @@ Validates a component implementation, commits directly to `iteration/develop` in
|
|
|
120
125
|
|
|
121
126
|
| Parameter | Required | Default | Description |
|
|
122
127
|
|-----------|----------|---------|-------------|
|
|
123
|
-
| `<ComponentName>` | Yes |
|
|
124
|
-
| `--gh` | No |
|
|
128
|
+
| `<ComponentName>` | Yes | - | PascalCase component name |
|
|
129
|
+
| `--gh` | No | - | GitHub issue number (auto-detected if on a tracked issue) |
|
|
125
130
|
|
|
126
131
|
```
|
|
127
132
|
/figma-iteration-commit ModalsTitle
|
|
@@ -144,7 +149,7 @@ DEFAULT_JIRA = {jira.projectKey}-124692
|
|
|
144
149
|
|
|
145
150
|
---
|
|
146
151
|
|
|
147
|
-
## STEP 0
|
|
152
|
+
## STEP 0 - Resolve
|
|
148
153
|
|
|
149
154
|
1. Parse `ComponentName`. Convert to kebab-case.
|
|
150
155
|
2. If `--gh` provided, read the issue to get Jira key. Otherwise search for the issue:
|
|
@@ -173,7 +178,7 @@ DEFAULT_JIRA = {jira.projectKey}-124692
|
|
|
173
178
|
- Reset iteration/develop to its previous state
|
|
174
179
|
- Restore the feature branch from the backup
|
|
175
180
|
- HALT: "Rebase broke the build. Feature branch preserved at {branch-name}."
|
|
176
|
-
- Do NOT delete the backup
|
|
181
|
+
- Do NOT delete the backup - leave it for manual resolution
|
|
177
182
|
```
|
|
178
183
|
|
|
179
184
|
```bash
|
|
@@ -198,7 +203,7 @@ DEFAULT_JIRA = {jira.projectKey}-124692
|
|
|
198
203
|
# Cherry-pick feature commits
|
|
199
204
|
for COMMIT in ${COMMITS}; do
|
|
200
205
|
git cherry-pick ${COMMIT} || {
|
|
201
|
-
# CONFLICT HANDLING
|
|
206
|
+
# CONFLICT HANDLING - do NOT abort or delete any changes
|
|
202
207
|
echo "⚠️ Cherry-pick conflict at ${COMMIT}."
|
|
203
208
|
echo "Conflicting files:"
|
|
204
209
|
CONFLICTED_FILES=$(git diff --name-only --diff-filter=U)
|
|
@@ -366,7 +371,7 @@ DEFAULT_JIRA = {jira.projectKey}-124692
|
|
|
366
371
|
|
|
367
372
|
---
|
|
368
373
|
|
|
369
|
-
## STEP 1
|
|
374
|
+
## STEP 1 - Validate
|
|
370
375
|
|
|
371
376
|
### 1a. Build
|
|
372
377
|
|
|
@@ -402,7 +407,7 @@ python3 .instructions/figma/figma-to-swiftui/scripts/validate-localization-sync.
|
|
|
402
407
|
--component "{ComponentName}"
|
|
403
408
|
```
|
|
404
409
|
|
|
405
|
-
If out of sync → HALT. Regenerate with `update-*-dev` (NOT `generate-*-code`
|
|
410
|
+
If out of sync → HALT. Regenerate with `update-*-dev` (NOT `generate-*-code` - see common-utility docs):
|
|
406
411
|
```bash
|
|
407
412
|
swift package plugin --allow-writing-to-package-directory update-localizations-dev
|
|
408
413
|
swift package plugin --allow-writing-to-package-directory update-accessibility-dev
|
|
@@ -429,7 +434,7 @@ Validation: PASS / FAIL
|
|
|
429
434
|
|
|
430
435
|
---
|
|
431
436
|
|
|
432
|
-
## STEP 2
|
|
437
|
+
## STEP 2 - Detect Changes
|
|
433
438
|
|
|
434
439
|
```bash
|
|
435
440
|
HAS_COMMON=$(cd "${COMMON}" && git status --porcelain | head -1)
|
|
@@ -439,9 +444,9 @@ HAS_WIKI=$(cd "${WIKI}" && git status --porcelain | head -1)
|
|
|
439
444
|
|
|
440
445
|
---
|
|
441
446
|
|
|
442
|
-
## STEP 3
|
|
447
|
+
## STEP 3 - Commit Locally
|
|
443
448
|
|
|
444
|
-
Commit to local `iteration/develop` in submodules. Do NOT push yet
|
|
449
|
+
Commit to local `iteration/develop` in submodules. Do NOT push yet - pushing happens in STEP 3b after validation confirms the build is clean.
|
|
445
450
|
|
|
446
451
|
### 3a. Commit (local only)
|
|
447
452
|
|
|
@@ -500,7 +505,7 @@ Refs: ${JIRA_ISSUE}"
|
|
|
500
505
|
|
|
501
506
|
---
|
|
502
507
|
|
|
503
|
-
### ⛔ 3a-gate
|
|
508
|
+
### ⛔ 3a-gate - Pre-Push Approval (required HARD STOP)
|
|
504
509
|
|
|
505
510
|
> **Do NOT proceed to STEP 3b until the user explicitly approves.**
|
|
506
511
|
> Use the `ask-questions` tool here. A silent "yes" assumption is a pipeline violation.
|
|
@@ -509,7 +514,7 @@ Refs: ${JIRA_ISSUE}"
|
|
|
509
514
|
|
|
510
515
|
```
|
|
511
516
|
╔══════════════════════════════════════════════════════════════════╗
|
|
512
|
-
║ PRE-PUSH SUMMARY
|
|
517
|
+
║ PRE-PUSH SUMMARY - iteration/develop ║
|
|
513
518
|
╠══════════════════════════════════════════════════════════════════╣
|
|
514
519
|
║ common (if HAS_COMMON): ║
|
|
515
520
|
║ Branch : iteration/develop ║
|
|
@@ -534,7 +539,7 @@ Refs: ${JIRA_ISSUE}"
|
|
|
534
539
|
Generate this summary with:
|
|
535
540
|
|
|
536
541
|
```bash
|
|
537
|
-
# For each submodule with commits
|
|
542
|
+
# For each submodule with commits - adapt branch name per repo:
|
|
538
543
|
cd ${SUBMODULE}
|
|
539
544
|
echo "Ahead: $(git rev-list origin/${PUSH_BRANCH}..HEAD --count) commits"
|
|
540
545
|
git log origin/${PUSH_BRANCH}..HEAD --oneline
|
|
@@ -561,7 +566,7 @@ git diff origin/${PUSH_BRANCH}..HEAD --stat | tail -1
|
|
|
561
566
|
Run /figma-iteration-commit again when ready to push.
|
|
562
567
|
```
|
|
563
568
|
|
|
564
|
-
Then **HALT**
|
|
569
|
+
Then **HALT** - do not revert any local commits, do not push anything.
|
|
565
570
|
|
|
566
571
|
---
|
|
567
572
|
|
|
@@ -590,12 +595,12 @@ MAX_RETRIES=3
|
|
|
590
595
|
for i in $(seq 1 $MAX_RETRIES); do
|
|
591
596
|
git push origin ${PUSH_BRANCH} && break
|
|
592
597
|
|
|
593
|
-
echo "Push rejected
|
|
598
|
+
echo "Push rejected - remote updated. Rebasing (attempt $i)..."
|
|
594
599
|
git fetch origin ${PUSH_BRANCH}
|
|
595
600
|
git rebase origin/${PUSH_BRANCH}
|
|
596
601
|
|
|
597
602
|
if [ $? -ne 0 ]; then
|
|
598
|
-
# CONFLICT HANDLING
|
|
603
|
+
# CONFLICT HANDLING - do NOT abort or delete any changes
|
|
599
604
|
echo "⚠️ Rebase conflict detected during push retry."
|
|
600
605
|
echo "Conflicting files:"
|
|
601
606
|
CONFLICTED_FILES=$(git diff --name-only --diff-filter=U)
|
|
@@ -763,7 +768,7 @@ cd ${UICOMPONENTS} && git fetch origin iteration/develop
|
|
|
763
768
|
|
|
764
769
|
---
|
|
765
770
|
|
|
766
|
-
## STEP 4
|
|
771
|
+
## STEP 4 - Issue Housekeeping
|
|
767
772
|
|
|
768
773
|
### 4a. Comment on issue
|
|
769
774
|
|
|
@@ -788,7 +793,7 @@ EOF
|
|
|
788
793
|
Phase state is tracked per-flag in the component registry
|
|
789
794
|
(`status.ios.{implemented,tested,codeConnect,wiki}`), written by the
|
|
790
795
|
phase finalize scripts during STEP 2 of `/figma-cli-iterate`. The
|
|
791
|
-
issue's labels and Progress table are projections of that state
|
|
796
|
+
issue's labels and Progress table are projections of that state - no
|
|
792
797
|
filesystem inference anymore.
|
|
793
798
|
|
|
794
799
|
Run the registry sync once, after the commit succeeds:
|
|
@@ -812,7 +817,7 @@ This call is idempotent:
|
|
|
812
817
|
lowest-numbered one with a "Duplicate of #N" comment.
|
|
813
818
|
|
|
814
819
|
If the call fails (gh not authenticated, rate limit, etc.), log the
|
|
815
|
-
error but don't fail the commit
|
|
820
|
+
error but don't fail the commit - the sync can always be re-run
|
|
816
821
|
manually or via `bulk-sync-issues.py`.
|
|
817
822
|
|
|
818
823
|
### 4c. Link wiki to issue
|
|
@@ -944,7 +949,7 @@ for comp_name in connected:
|
|
|
944
949
|
sub_issues_added.append(f"#{sub_issue_n} ({comp_name})")
|
|
945
950
|
print(f" ✅ Linked sub-issue #{sub_issue_n} ({comp_name})")
|
|
946
951
|
else:
|
|
947
|
-
# May already be linked
|
|
952
|
+
# May already be linked - not a fatal error
|
|
948
953
|
print(f" ℹ️ Could not link #{sub_issue_n} ({comp_name}): {api_result.stderr.strip()}")
|
|
949
954
|
|
|
950
955
|
if sub_issues_added:
|
|
@@ -953,12 +958,12 @@ else:
|
|
|
953
958
|
print("No sub-issues linked (no matching open issues found).")
|
|
954
959
|
```
|
|
955
960
|
|
|
956
|
-
> **Non-fatal:** If this step fails (artifact missing, gh API error, no matching issues), log and continue
|
|
961
|
+
> **Non-fatal:** If this step fails (artifact missing, gh API error, no matching issues), log and continue - it must never block the commit.
|
|
957
962
|
|
|
958
963
|
|
|
959
964
|
---
|
|
960
965
|
|
|
961
|
-
## STEP 5
|
|
966
|
+
## STEP 5 - Auto-Unblock Dependents
|
|
962
967
|
|
|
963
968
|
Scan all open issues with `blocked` label:
|
|
964
969
|
|
|
@@ -982,7 +987,7 @@ Print any unblocked issues.
|
|
|
982
987
|
|
|
983
988
|
---
|
|
984
989
|
|
|
985
|
-
## STEP 6
|
|
990
|
+
## STEP 6 - Summary
|
|
986
991
|
|
|
987
992
|
```
|
|
988
993
|
Iteration Commit: ${COMPONENT_PASCAL}
|
|
@@ -995,7 +1000,7 @@ Iteration Commit: ${COMPONENT_PASCAL}
|
|
|
995
1000
|
| main | ${MAIN_SHA} | ✅ pushed / PR created |
|
|
996
1001
|
|
|
997
1002
|
Validation: PASS
|
|
998
|
-
Issue: #N
|
|
1003
|
+
Issue: #N - commented + phase updated
|
|
999
1004
|
Sub-issues: #X (ComponentA), #Y (ComponentB) (or "none")
|
|
1000
1005
|
Unblocked: #M, #K (or "none")
|
|
1001
1006
|
Jira: ${JIRA_ISSUE}
|
|
@@ -1006,9 +1011,9 @@ Jira: ${JIRA_ISSUE}
|
|
|
1006
1011
|
## Error Handling
|
|
1007
1012
|
|
|
1008
1013
|
- **Submodules not on iteration/develop**: Checkout automatically (rebase-merge if commits exist).
|
|
1009
|
-
- **Build fails**: HALT
|
|
1010
|
-
- **Tests fail**: HALT
|
|
1011
|
-
- **Key sync fails**: HALT
|
|
1014
|
+
- **Build fails**: HALT - fix before committing.
|
|
1015
|
+
- **Tests fail**: HALT - fix before committing.
|
|
1016
|
+
- **Key sync fails**: HALT - regenerate keys first.
|
|
1012
1017
|
- **Push rejected**: Report error, do NOT force-push.
|
|
1013
1018
|
- **No changes**: Print "Nothing to commit" and exit.
|
|
1014
1019
|
- **Issue not found**: Commit without issue housekeeping, print warning.
|
|
@@ -8,7 +8,7 @@ status: wip-v5
|
|
|
8
8
|
sourced-from: upstream/figma-mend
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# /figma-mend
|
|
11
|
+
# /figma-mend - Re-implement Discarded Components
|
|
12
12
|
|
|
13
13
|
This skill wraps the full `figma-to-swiftui` workflow (Phases 0-8) with two additions:
|
|
14
14
|
1. **Pre-flight**: Locates old component in `Discarded/`, catalogs all its files
|
|
@@ -36,7 +36,7 @@ Same as figma-to-swiftui: extract `fileKey` and `nodeId`, convert `-` to `:` in
|
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
39
|
-
## Pre-Flight Phase (orchestrator-level
|
|
39
|
+
## Pre-Flight Phase (orchestrator-level - no subagent)
|
|
40
40
|
|
|
41
41
|
Run BEFORE Phase 0. Uses Grep/Glob/Bash directly in the main orchestrator.
|
|
42
42
|
|
|
@@ -122,7 +122,7 @@ Follow the EXACT same execution order as `.instructions/figma/figma-to-swiftui/S
|
|
|
122
122
|
|
|
123
123
|
### Dispatch Table
|
|
124
124
|
|
|
125
|
-
Use the SAME dispatch table from `.instructions/figma/figma-to-swiftui/SKILL.md`
|
|
125
|
+
Use the SAME dispatch table from `.instructions/figma/figma-to-swiftui/SKILL.md` - same phases, same models, same turn limits, same tool restrictions, same phase instruction paths. Do NOT read that file - the table is reproduced here for reference:
|
|
126
126
|
|
|
127
127
|
| Phase | Instruction (under figma-to-swiftui/) | Model | Max Turns | Tool Restrictions |
|
|
128
128
|
|-------|---------------------------------------|-------|-----------|-------------------|
|
|
@@ -160,8 +160,8 @@ The ONLY change from figma-to-swiftui: append this section to every AI subagent
|
|
|
160
160
|
## Complementary Reference (Old Implementation)
|
|
161
161
|
|
|
162
162
|
This component is being RE-IMPLEMENTED from Discarded/.
|
|
163
|
-
Old source files (read as reference
|
|
164
|
-
{list of relevant old file paths from oldFilesCatalog
|
|
163
|
+
Old source files (read as reference - do NOT copy verbatim):
|
|
164
|
+
{list of relevant old file paths from oldFilesCatalog - see injection table below}
|
|
165
165
|
|
|
166
166
|
Preserve domain-specific patterns if architecturally sound:
|
|
167
167
|
- Animations, transitions, gesture handling
|
|
@@ -172,7 +172,7 @@ Preserve domain-specific patterns if architecturally sound:
|
|
|
172
172
|
|
|
173
173
|
IMPORTANT: New implementation MUST follow current workflow standards
|
|
174
174
|
(macros, Configuration pattern, design tokens). Use old code ONLY as reference
|
|
175
|
-
for domain logic
|
|
175
|
+
for domain logic - not as a template for architecture.
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
### Selective File Injection Table
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: figma-navigation
|
|
3
|
+
description: "Navigation pattern integration for Figma-to-SwiftUI components. Guides how a component reaches other screens, tabs, or deep links without coupling to a router — headless screens that emit a typed Output, native NavigationStack/navigationDestination by default, an optional project-supplied navigation system (router + route enum + scene container) when figma-config declares one. Reach for this when a design embeds a tab bar, nav bar / back button, a push/detail affordance, or a deep-link entry point."
|
|
4
|
+
user-invocable: true
|
|
5
|
+
allowed-tools: Read, Glob, Grep
|
|
6
|
+
status: wip-v5
|
|
7
|
+
sourced-from: upstream/figma-navigation
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /figma-navigation - Navigation Pattern Integration
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Consumed by the figma-to-swiftui pipeline (Phase 3D pattern detection, Phase 4B view implementation) and available for ad-hoc/vibe-coding, this skill defines how a component participates in navigation **without owning routing**. It is the navigation counterpart of `/figma-form-integration` and `/figma-price-integration`: a cross-cutting integration with a **native-SwiftUI default** and a **config-driven hook** for projects that ship their own navigation system.
|
|
15
|
+
|
|
16
|
+
**Generic by design.** Nothing here assumes a specific app. The default is stock SwiftUI (`NavigationStack`, `navigationDestination`, `.toolbar`, `.sheet`). If the target project declares a custom navigation system in its `figma-config.json` (`ui.navigationSystem`), this skill routes to that system's types by name instead — same rules, project-specific vocabulary.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Strict Rules (non-negotiable)
|
|
21
|
+
|
|
22
|
+
1. **A component never names a route, a sibling screen, or a router.** A component/screen takes its arrival data as init params and emits intent through a typed **`Output`** closure (`onSelect`, `onSubmit`, `output:`). The *caller* (scene/coordinator/parent) maps each output to a navigation edge. This keeps the component reusable and testable in isolation.
|
|
23
|
+
2. **No navigation side effects inside a component body.** No `NavigationLink(destination:)` hardcoding a concrete next screen, no router calls, no global singletons touched from `body`. Navigation is a caller concern expressed via the emitted output.
|
|
24
|
+
3. **Selection/tab state is observable data, not an imperative bridge.** A selected tab/section is a bound value (`@Binding`/observable), written by the caller; the component reflects it. A selection set before the container mounts is simply rendered on appear - no cold-start race.
|
|
25
|
+
4. **Deep links reduce to state and never crash.** A URL parses to a plan/value; malformed input is dropped (logged, no trap). The component is never the deep-link parser - it only exposes the entry state the parser can set.
|
|
26
|
+
5. **Native SwiftUI is the default; a custom system is opt-in via config.** Do NOT invent a bespoke router for a project that hasn't asked for one. Only use custom navigation types when `ui.navigationSystem.mode == "custom"` is set in `figma-config.json`.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## When to Invoke This Skill
|
|
31
|
+
|
|
32
|
+
Invoke when ANY of these are detected in the design or task:
|
|
33
|
+
|
|
34
|
+
1. **Phase 3D - navigation sub-component / affordance:** a nested instance of a navigation-capable design element:
|
|
35
|
+
- Tab bar / segmented section switcher that changes the top-level view
|
|
36
|
+
- Navigation bar / header with a **back button** or close affordance
|
|
37
|
+
- A row/card whose variant implies a **push/detail** affordance (chevron, "Detaylar", disclosure)
|
|
38
|
+
- A link/button whose label implies leaving the screen ("Devam", "Tümünü gör")
|
|
39
|
+
- A deep-link entry point (the design is a landing surface reached by URL)
|
|
40
|
+
2. **Phase 4B - View:** the view renders a back button, tab strip, or a control that should navigate.
|
|
41
|
+
3. **Ad-hoc:** wiring a screen's push/pop/tab/deep-link flow outside the full pipeline.
|
|
42
|
+
|
|
43
|
+
**Not navigation (false-positive guards):**
|
|
44
|
+
- A segmented control that filters in-place (no screen change) → plain `Binding<Enum>`, not navigation.
|
|
45
|
+
- A button that submits a form → that's `/figma-form-integration`; the *result* may navigate, but the control is a form action.
|
|
46
|
+
- A modal card of data / a toast / a loading HUD → `/figma-overlays`. A bottom sheet surface → `/figma-bottom-sheets`.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Native-first architecture (default)
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Parent / Scene (caller)
|
|
54
|
+
| owns NavigationStack(path:) or tab Binding, maps Output → edge
|
|
55
|
+
v
|
|
56
|
+
ComponentView
|
|
57
|
+
| init(arrivalData…, output: @escaping (Output) -> Void)
|
|
58
|
+
| emits .selected(id) / .continue / .back - never routes
|
|
59
|
+
v
|
|
60
|
+
(caller) path.append(route) | selectedTab = .x | present(.sheet)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
- **Push/pop within a flow:** caller owns `NavigationStack(path:)`; component emits `Output`; caller appends a `Hashable` route; `navigationDestination(for:)` renders it.
|
|
64
|
+
- **Back button:** prefer the system back button. A custom header back affordance emits `.back` (or calls `dismiss`); it renders only when there is something to pop (depth > 0 / `isPresented`).
|
|
65
|
+
- **Tabs:** `TabView(selection:)` bound to an observable selection the caller owns; the component reads/writes the binding, never a global.
|
|
66
|
+
- **Deep links:** caller parses URL → a `Hashable` route / tab selection and applies it to the same path/selection state the UI already uses. Component only exposes the entry state.
|
|
67
|
+
- **Modal presentation of another screen:** `.sheet(item:)` / `.fullScreenCover(item:)` driven by caller state (data-driven, no `AnyView`). A *bottom sheet surface* is `/figma-bottom-sheets`; an *alert/data modal card* is `/figma-overlays`.
|
|
68
|
+
|
|
69
|
+
Design tokens (spacing, colors, typography) follow `reference/ui` + the project's figma-config token patterns - never raw literals.
|
|
70
|
+
|
|
71
|
+
## Config hook - project-supplied navigation system
|
|
72
|
+
|
|
73
|
+
When `figma-config.json` declares:
|
|
74
|
+
```jsonc
|
|
75
|
+
"ui": { "navigationSystem": {
|
|
76
|
+
"mode": "custom",
|
|
77
|
+
"router": "AppRouter", // type that dispatches routes
|
|
78
|
+
"routeEnum": "AppRoute", // exhaustive cross-surface route enum
|
|
79
|
+
"sceneType": "SceneContent", // headless screen container (optional)
|
|
80
|
+
"navigatorProtocol": "NavigatorProtocol" // DI'd selection/present API (optional)
|
|
81
|
+
}}
|
|
82
|
+
```
|
|
83
|
+
then apply the SAME rules, but express them in the project's vocabulary resolved from config (do NOT hardcode the names below - read them from `ui.navigationSystem`):
|
|
84
|
+
|
|
85
|
+
- Wrap screen content in `{sceneType}` (headless container) instead of a bare `NavigationStack` child, when provided.
|
|
86
|
+
- Screens still emit a typed `Output`; the domain coordinator maps outputs to the project's route type (`{routeEnum}`) and the `{router}` dispatches.
|
|
87
|
+
- Cross-surface jumps go through the DI'd `{navigatorProtocol}` (`selectTab`, `present`), never by importing a sibling domain.
|
|
88
|
+
- Deep links build the project's `{routeEnum}` case and hand it to the router's deep-link entry.
|
|
89
|
+
|
|
90
|
+
If `mode` is absent or `native`, use the native-first section above. Resolve types via `tools/resource-utility` / repo grep only when the config points at real files.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Integration with Phase 3D
|
|
95
|
+
|
|
96
|
+
When Phase 3D detects a navigation affordance, record it in `04b_component_architecture.md` and classify it as an **Output**, not a route:
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
## Navigation
|
|
100
|
+
| Affordance | Emits | Caller maps to |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| Back button (header) | `.back` closure / dismiss | pop current stack |
|
|
103
|
+
| Row chevron ("Detaylar") | `.selected(id)` | push detail route |
|
|
104
|
+
| Tab strip | `selection: Binding<Tab>` | caller-owned tab state |
|
|
105
|
+
| Deep-link landing | entry `route`/`tab` param | parser sets caller state |
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Property classification addition:
|
|
109
|
+
|
|
110
|
+
| Classification | When | Swift Pattern |
|
|
111
|
+
|---|---|---|
|
|
112
|
+
| Navigation output | Component has a push/select/back affordance | `output: (Output) -> Void` / `onSelect: (ID) -> Void` closure on the View |
|
|
113
|
+
| Tab/selection binding | Component switches top-level content | `selection: Binding<SomeTab>` |
|
|
114
|
+
| Deep-link entry | Component is a URL landing surface | plain entry `route`/`tab` param on the View/Configuration |
|
|
115
|
+
|
|
116
|
+
The affordance's **label/icon copy is static Configuration content** (localized), exactly like other copy - only the *intent* is an Output closure.
|
|
117
|
+
|
|
118
|
+
## Integration with Phase 4B
|
|
119
|
+
|
|
120
|
+
- Never hardcode `NavigationLink(destination: ConcreteScreen())` inside a reusable component - emit the Output.
|
|
121
|
+
- Prefer the system back button; a custom back affordance calls `@Environment(\.dismiss)` or emits `.back`.
|
|
122
|
+
- Bind tab/selection via the caller-owned binding; never a global.
|
|
123
|
+
- If `ui.navigationSystem.mode == custom`, wrap in `{sceneType}` and route via `{router}`/`{routeEnum}` per config.
|
|
124
|
+
- Verify by building + running on the simulator (`reference/build-and-test` / `figma-to-component` Phase 5): the transition happens, the back button appears only after a push, deep links land on the right surface.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## When NOT to Use Navigation Integration
|
|
129
|
+
- In-place filters/segmented state that never changes screen → `Binding<Enum>`.
|
|
130
|
+
- Form submission → `/figma-form-integration` (the *result* may navigate; the control is a form action).
|
|
131
|
+
- Toast / loading / alert / data modal → `/figma-overlays`. Bottom-sheet surface → `/figma-bottom-sheets`.
|
|
132
|
+
|
|
133
|
+
## Checklist - Before Leaving the Skill
|
|
134
|
+
```
|
|
135
|
+
[ ] Component emits a typed Output for every navigation affordance - no hardcoded routes
|
|
136
|
+
[ ] Back uses system back / dismiss / .back output; renders only when poppable
|
|
137
|
+
[ ] Tab/selection is a caller-owned binding, not a global
|
|
138
|
+
[ ] Deep-link entry is plain state the caller's parser can set (component never parses URLs)
|
|
139
|
+
[ ] Default is native SwiftUI (NavigationStack/navigationDestination/TabView/.sheet(item:))
|
|
140
|
+
[ ] Custom system used ONLY when figma-config ui.navigationSystem.mode == custom (names from config)
|
|
141
|
+
[ ] Labels/icons are localized Configuration copy; only intent is a closure
|
|
142
|
+
```
|