@mmerterden/multi-agent-pipeline 8.6.1 → 10.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +544 -2484
- package/README.md +117 -138
- package/docs/features.md +1 -1
- package/index.js +8 -10
- package/install/_adapters.mjs +5 -1
- package/install/_common.mjs +63 -0
- package/install/claude.mjs +14 -14
- package/install/copilot.mjs +14 -8
- package/install/index.mjs +85 -19
- package/install/templates/claude-hooks.json +18 -0
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +21 -6
- package/pipeline/adapters/_base.mjs +366 -14
- package/pipeline/adapters/antigravity.mjs +140 -0
- package/pipeline/adapters/codex.mjs +159 -0
- package/pipeline/adapters/copilot-chat-orchestration.mjs +148 -0
- package/pipeline/adapters/copilot-chat.mjs +34 -68
- package/pipeline/adapters/cursor-orchestration.mjs +152 -0
- package/pipeline/adapters/cursor.mjs +49 -90
- package/pipeline/agents/android-architect.md +5 -5
- package/pipeline/agents/backend-architect.md +4 -4
- package/pipeline/agents/code-reviewer.md +10 -10
- package/pipeline/agents/dev-critic.md +17 -17
- package/pipeline/agents/explorer.md +3 -3
- package/pipeline/agents/ios-architect.md +4 -4
- package/pipeline/agents/security-auditor.md +12 -12
- package/pipeline/agents/task-clarifier.md +18 -18
- package/pipeline/claude-md-template.md +3 -3
- package/pipeline/commands/archive-guard.md +3 -3
- package/pipeline/commands/figma-to-swiftui.md +10 -10
- package/pipeline/commands/multi-agent/_account-picker.md +13 -9
- package/pipeline/commands/multi-agent/_dev-context.md +15 -15
- package/pipeline/commands/multi-agent/_input-parser.md +4 -4
- package/pipeline/commands/multi-agent/_repo-picker.md +9 -9
- package/pipeline/commands/multi-agent/analysis-resolve.md +129 -0
- package/pipeline/commands/multi-agent/analysis.md +667 -0
- package/pipeline/commands/multi-agent/autopilot.md +22 -22
- package/pipeline/commands/multi-agent/build-optimize.md +77 -0
- package/pipeline/commands/multi-agent/channels.md +96 -96
- package/pipeline/commands/multi-agent/delete.md +19 -17
- package/pipeline/commands/multi-agent/dev-autopilot.md +23 -23
- package/pipeline/commands/multi-agent/dev-local-autopilot.md +23 -23
- package/pipeline/commands/multi-agent/dev-local.md +25 -22
- package/pipeline/commands/multi-agent/dev.md +49 -49
- package/pipeline/commands/multi-agent/diff-explain.md +4 -4
- package/pipeline/commands/multi-agent/garbage-collect.md +58 -0
- package/pipeline/commands/multi-agent/help.md +75 -66
- package/pipeline/commands/multi-agent/issue.md +3 -3
- package/pipeline/commands/multi-agent/jira.md +12 -12
- package/pipeline/commands/multi-agent/kill.md +6 -6
- package/pipeline/commands/multi-agent/language.md +12 -12
- package/pipeline/commands/multi-agent/local-autopilot.md +34 -34
- package/pipeline/commands/multi-agent/local.md +24 -25
- package/pipeline/commands/multi-agent/log.md +6 -6
- package/pipeline/commands/multi-agent/manual-test.md +3 -3
- package/pipeline/commands/multi-agent/prune-logs.md +60 -0
- package/pipeline/commands/multi-agent/purge.md +10 -7
- package/pipeline/commands/multi-agent/refactor.md +9 -9
- package/pipeline/commands/multi-agent/refs/analysis-template.md +1062 -0
- package/pipeline/commands/multi-agent/refs/android-guide.md +15 -13
- package/pipeline/commands/multi-agent/refs/audit-guide.md +20 -20
- package/pipeline/commands/multi-agent/refs/backend-guide.md +9 -9
- package/pipeline/commands/multi-agent/refs/channels/confluence.md +17 -17
- package/pipeline/commands/multi-agent/refs/channels/issue-comment.md +30 -30
- package/pipeline/commands/multi-agent/refs/channels/jira.md +15 -15
- package/pipeline/commands/multi-agent/refs/channels/pr-review-actions.md +19 -17
- package/pipeline/commands/multi-agent/refs/channels/pr.md +22 -22
- package/pipeline/commands/multi-agent/refs/channels/wiki.md +19 -19
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +11 -11
- package/pipeline/commands/multi-agent/refs/conventions-defaults.md +179 -0
- package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +35 -33
- package/pipeline/commands/multi-agent/refs/features/dev-critic.md +5 -5
- package/pipeline/commands/multi-agent/refs/features/external-context-injection.md +6 -6
- package/pipeline/commands/multi-agent/refs/features/model-fallback.md +73 -0
- package/pipeline/commands/multi-agent/refs/features/plan-todos.md +1 -1
- package/pipeline/commands/multi-agent/refs/features/prior-fix-detection.md +4 -4
- package/pipeline/commands/multi-agent/refs/features/repo-map.md +6 -6
- package/pipeline/commands/multi-agent/refs/features/shadow-git.md +2 -2
- package/pipeline/commands/multi-agent/refs/frontend-guide.md +16 -16
- package/pipeline/commands/multi-agent/refs/issue-jira-triad.md +18 -18
- package/pipeline/commands/multi-agent/refs/keychain.md +18 -8
- package/pipeline/commands/multi-agent/refs/knowledge.md +9 -9
- package/pipeline/commands/multi-agent/refs/multi-repo-integration-build.md +19 -19
- package/pipeline/commands/multi-agent/refs/phases/log-format.md +29 -9
- package/pipeline/commands/multi-agent/refs/phases/modes.md +33 -33
- package/pipeline/commands/multi-agent/refs/phases/operations.md +11 -11
- package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +93 -57
- package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +59 -28
- package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +115 -63
- package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +99 -36
- package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +160 -63
- package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +33 -18
- package/pipeline/commands/multi-agent/refs/phases/phase-6-commit.md +45 -43
- package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +54 -28
- package/pipeline/commands/multi-agent/refs/phases.md +17 -17
- package/pipeline/commands/multi-agent/refs/picker-contract.md +65 -0
- package/pipeline/commands/multi-agent/refs/progress-contract.md +37 -21
- package/pipeline/commands/multi-agent/refs/rules.md +83 -25
- package/pipeline/commands/multi-agent/refs/swiftui-guide.md +32 -30
- package/pipeline/commands/multi-agent/refs/tracker-contract.md +54 -30
- package/pipeline/commands/multi-agent/refs/wiki-capture.md +36 -33
- package/pipeline/commands/multi-agent/resume.md +9 -9
- package/pipeline/commands/multi-agent/review.md +24 -24
- package/pipeline/commands/multi-agent/scan.md +10 -10
- package/pipeline/commands/multi-agent/search.md +8 -8
- package/pipeline/commands/multi-agent/setup.md +111 -84
- package/pipeline/commands/multi-agent/stack.md +5 -5
- package/pipeline/commands/multi-agent/status.md +5 -5
- package/pipeline/commands/multi-agent/sync.md +123 -111
- package/pipeline/commands/multi-agent/test.md +6 -6
- package/pipeline/commands/multi-agent/update.md +1 -1
- package/pipeline/commands/multi-agent.md +66 -60
- package/pipeline/commands/sim-test.md +14 -14
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +1 -1
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +2 -2
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +2 -2
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +1 -1
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +2 -2
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +3 -3
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +4 -4
- package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +1 -1
- package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +1 -1
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/task.json +12 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-2-plan.json +40 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/task.json +12 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-review.json +28 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-triage.json +27 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/task.json +12 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-2-plan.json +41 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-review.json +12 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-triage.json +6 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/task.json +12 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-review.json +28 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-triage.json +27 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/task.json +12 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-1-analysis.json +25 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-2-plan.json +31 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-review.json +12 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-triage.json +18 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/task.json +12 -0
- package/pipeline/eval/golden-tasks/README.md +14 -14
- package/pipeline/eval/intent-cases.json +40 -0
- package/pipeline/eval/run-metrics-fixture.json +46 -0
- package/pipeline/eval/triage/01-empty-findings/notes.md +1 -1
- package/pipeline/eval/triage/02-real-blocker/notes.md +2 -2
- package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +1 -1
- package/pipeline/eval/triage/04-false-positive-reject/notes.md +1 -1
- package/pipeline/eval/triage/05-mixed-classification/notes.md +2 -2
- package/pipeline/eval/triage/06-severity-mismatch/notes.md +2 -2
- package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +1 -1
- package/pipeline/eval/triage/08-style-misclassified/notes.md +1 -1
- package/pipeline/eval/triage/09-cascading-finding/notes.md +2 -2
- package/pipeline/eval/triage/10-deferred-crossref/notes.md +2 -2
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +3 -3
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +2 -2
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +5 -5
- package/pipeline/eval/triage/README.md +4 -4
- package/pipeline/lib/account-resolver.sh +3 -3
- package/pipeline/lib/ask-choice.sh +98 -0
- package/pipeline/lib/channels-multi-repo.sh +3 -3
- package/pipeline/lib/classify-intent.sh +110 -0
- package/pipeline/lib/context-link-extractor.sh +3 -3
- package/pipeline/lib/credential-store-resolver.sh +3 -3
- package/pipeline/lib/credential-store.sh +9 -5
- package/pipeline/lib/extract-conventions.sh +1034 -0
- package/pipeline/lib/fetch-confluence.sh +3 -3
- package/pipeline/lib/fetch-crashlytics.sh +5 -5
- package/pipeline/lib/fetch-fortify.sh +5 -21
- package/pipeline/lib/fetch-swagger.sh +5 -5
- package/pipeline/lib/figma-screenshot.sh +536 -0
- package/pipeline/lib/issue-fetcher.sh +46 -20
- package/pipeline/lib/md2confluence-v3.py +1076 -0
- package/pipeline/lib/multi-repo-pipeline.sh +13 -22
- package/pipeline/lib/plan-todos.sh +7 -7
- package/pipeline/lib/post-pr-review.sh +53 -21
- package/pipeline/lib/repo-cache.sh +5 -5
- package/pipeline/lib/review-watch.sh +17 -13
- package/pipeline/lib/shadow-git.sh +7 -7
- package/pipeline/lib/submodule-detector.sh +3 -3
- package/pipeline/lib/vercel-deploy.sh +28 -15
- package/pipeline/preferences-template.json +21 -4
- package/pipeline/rules/app-store-guidelines.md +2 -2
- package/pipeline/rules/code-style.md +6 -6
- package/pipeline/rules/figma-pipeline.md +100 -2
- package/pipeline/rules/kotlin-android.md +8 -8
- package/pipeline/rules/security.md +4 -4
- package/pipeline/rules/tdd.md +1 -1
- package/pipeline/rules/testing.md +5 -5
- package/pipeline/schemas/agent-state.schema.json +55 -20
- package/pipeline/schemas/analysis-output.schema.json +7 -2
- package/pipeline/schemas/analysis-spec.schema.json +484 -0
- package/pipeline/schemas/clarify-output.schema.json +5 -5
- package/pipeline/schemas/conventions-output.schema.json +70 -0
- package/pipeline/schemas/dev-critic-output.schema.json +2 -2
- package/pipeline/schemas/diff-risk.schema.json +3 -3
- package/pipeline/schemas/figma-project-config.schema.json +3 -3
- package/pipeline/schemas/learnings-ledger.schema.json +39 -0
- package/pipeline/schemas/migrations/README.md +2 -2
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +5 -5
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +3 -3
- package/pipeline/schemas/migrations/prefs-2.1.0-to-2.2.0.mjs +4 -4
- package/pipeline/schemas/migrations/prefs-2.2.0-to-2.3.0.mjs +5 -5
- package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +3 -3
- package/pipeline/schemas/plan-todos.schema.json +4 -4
- package/pipeline/schemas/planning-output.schema.json +3 -3
- package/pipeline/schemas/prefs.schema.json +97 -13
- package/pipeline/schemas/reviewer-output.schema.json +7 -3
- package/pipeline/schemas/test-gap.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +8 -8
- package/pipeline/schemas/triage-corpus.schema.json +1 -1
- package/pipeline/schemas/triage-output.schema.json +44 -6
- package/pipeline/scripts/README.md +64 -64
- package/pipeline/scripts/aggregate-metrics.mjs +55 -16
- package/pipeline/scripts/audit-log-rotate.sh +3 -3
- package/pipeline/scripts/audit-log.sh +20 -7
- package/pipeline/scripts/benchmark-phase-0.sh +6 -6
- package/pipeline/scripts/build-skills-index.mjs +15 -15
- package/pipeline/scripts/check-md-links.mjs +59 -0
- package/pipeline/scripts/classify-plan-safety.mjs +24 -18
- package/pipeline/scripts/cost-budget-check.mjs +160 -0
- package/pipeline/scripts/cost-table.json +23 -13
- package/pipeline/scripts/diff-explain.mjs +12 -12
- package/pipeline/scripts/diff-risk-score.mjs +18 -17
- package/pipeline/scripts/eval-golden-tasks-live.mjs +13 -10
- package/pipeline/scripts/eval-golden-tasks.mjs +3 -14
- package/pipeline/scripts/eval-intent.mjs +103 -0
- package/pipeline/scripts/eval-triage.mjs +3 -3
- package/pipeline/scripts/evidence-gate.mjs +155 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +9 -9
- package/pipeline/scripts/gc-tmp.sh +102 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +27 -21
- package/pipeline/scripts/gen-skills-index.mjs +6 -6
- package/pipeline/scripts/github-ssh-setup.sh +1 -1
- package/pipeline/scripts/keychain-save.sh +1 -1
- package/pipeline/scripts/keychain.py +6 -6
- package/pipeline/scripts/learnings-ledger.mjs +284 -0
- package/pipeline/scripts/lint-skills.mjs +80 -0
- package/pipeline/scripts/log-metric.sh +18 -9
- package/pipeline/scripts/match-skills.mjs +13 -8
- package/pipeline/scripts/memory-load.sh +3 -3
- package/pipeline/scripts/memory-save.sh +5 -5
- package/pipeline/scripts/migrate-prefs.mjs +17 -17
- package/pipeline/scripts/migrate-state.mjs +12 -12
- package/pipeline/scripts/output-quality-check.sh +7 -7
- package/pipeline/scripts/phase-banner.sh +5 -5
- package/pipeline/scripts/phase-tracker.sh +90 -53
- package/pipeline/scripts/pre-commit-check.sh +45 -5
- package/pipeline/scripts/pre-push-check.sh +7 -7
- package/pipeline/scripts/prune-logs.sh +118 -0
- package/pipeline/scripts/render-agent-log-cost.sh +55 -18
- package/pipeline/scripts/render-cost-summary.sh +9 -9
- package/pipeline/scripts/render-work-summary.sh +4 -4
- package/pipeline/scripts/repo-map.mjs +9 -9
- package/pipeline/scripts/run-aggregator.mjs +7 -6
- package/pipeline/scripts/run-metrics.mjs +129 -0
- package/pipeline/scripts/run-smokes.mjs +76 -0
- package/pipeline/scripts/scan-skills.sh +11 -11
- package/pipeline/scripts/search-logs.sh +8 -8
- package/pipeline/scripts/sign-skills.sh +2 -2
- package/pipeline/scripts/smoke-adapters.sh +79 -10
- package/pipeline/scripts/smoke-add-detail.sh +5 -5
- package/pipeline/scripts/smoke-agent-log-cost.sh +85 -6
- package/pipeline/scripts/smoke-agent-model-routing.sh +3 -3
- package/pipeline/scripts/smoke-ask-choice.sh +42 -0
- package/pipeline/scripts/smoke-bitbucket-contract.sh +19 -3
- package/pipeline/scripts/smoke-changelog-version.sh +47 -0
- package/pipeline/scripts/smoke-channels-flow.sh +1 -1
- package/pipeline/scripts/smoke-ci-workflows.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +3 -3
- package/pipeline/scripts/smoke-commands-skills-parity.sh +4 -4
- package/pipeline/scripts/smoke-community-gates.sh +75 -0
- package/pipeline/scripts/smoke-compliance-skills.sh +5 -5
- package/pipeline/scripts/smoke-cost-budget.sh +70 -0
- package/pipeline/scripts/smoke-cost-summary.sh +4 -4
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +50 -9
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +5 -5
- package/pipeline/scripts/smoke-delete-flow.sh +5 -5
- package/pipeline/scripts/smoke-dev-critic.sh +2 -2
- package/pipeline/scripts/smoke-diff-explain.sh +22 -3
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-dynamic-skill-loading.sh +1 -1
- package/pipeline/scripts/smoke-eval-live.sh +4 -4
- package/pipeline/scripts/smoke-evidence-gate.sh +93 -0
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +1 -1
- package/pipeline/scripts/smoke-extract-conventions.sh +163 -0
- package/pipeline/scripts/smoke-figma-android-parity.sh +1 -1
- package/pipeline/scripts/smoke-figma-credential-store.sh +3 -3
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +12 -12
- package/pipeline/scripts/smoke-figma-dispatch.sh +5 -5
- package/pipeline/scripts/smoke-figma-sync.sh +1 -1
- package/pipeline/scripts/smoke-gate-hooks.sh +56 -0
- package/pipeline/scripts/smoke-gc-tmp.sh +84 -0
- package/pipeline/scripts/smoke-identity-isolation.sh +7 -7
- package/pipeline/scripts/smoke-install-layout.sh +10 -10
- package/pipeline/scripts/smoke-intent-guard.sh +86 -0
- package/pipeline/scripts/smoke-issue-comment-template.sh +3 -3
- package/pipeline/scripts/smoke-issue-jira-triad.sh +1 -1
- package/pipeline/scripts/smoke-keychain.sh +6 -6
- package/pipeline/scripts/smoke-language-axis.sh +2 -2
- package/pipeline/scripts/smoke-learnings-ledger.sh +86 -0
- package/pipeline/scripts/smoke-lib-scripts.sh +2 -2
- package/pipeline/scripts/smoke-mcp-gate.sh +68 -0
- package/pipeline/scripts/smoke-md-links.sh +8 -0
- package/pipeline/scripts/smoke-md2confluence.sh +126 -0
- package/pipeline/scripts/smoke-metrics-cache-ratio.sh +72 -0
- package/pipeline/scripts/smoke-migrate-state.sh +10 -10
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +7 -4
- package/pipeline/scripts/smoke-model-fallback.sh +80 -0
- package/pipeline/scripts/smoke-multi-repo-integration.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +115 -0
- package/pipeline/scripts/smoke-no-token-prompt.sh +31 -15
- package/pipeline/scripts/smoke-pat-audit.sh +26 -5
- package/pipeline/scripts/smoke-per-repo-memory.sh +1 -1
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +2 -2
- package/pipeline/scripts/smoke-phase-banner.sh +1 -1
- package/pipeline/scripts/smoke-phase-tracker.sh +1 -1
- package/pipeline/scripts/smoke-phase0-bridge-contract.sh +4 -4
- package/pipeline/scripts/smoke-phase4-triage.sh +94 -7
- package/pipeline/scripts/smoke-plan-approval-gate.sh +3 -3
- package/pipeline/scripts/smoke-plan-safety.sh +1 -1
- package/pipeline/scripts/smoke-plan-todos.sh +7 -4
- package/pipeline/scripts/smoke-pr-review-actions.sh +2 -2
- package/pipeline/scripts/smoke-pre-commit.sh +34 -2
- package/pipeline/scripts/smoke-pref-migration.sh +1 -1
- package/pipeline/scripts/smoke-prefs-language.sh +5 -5
- package/pipeline/scripts/smoke-progress-contract.sh +3 -3
- package/pipeline/scripts/smoke-prune-logs.sh +87 -0
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-readme-counts.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +9 -9
- package/pipeline/scripts/smoke-review-watch.sh +12 -0
- package/pipeline/scripts/smoke-run-aggregator.sh +7 -7
- package/pipeline/scripts/smoke-run-metrics.sh +50 -0
- package/pipeline/scripts/smoke-schema-validation.sh +18 -11
- package/pipeline/scripts/smoke-search.sh +5 -5
- package/pipeline/scripts/smoke-shared-runtime.sh +108 -0
- package/pipeline/scripts/smoke-skill-authoring.sh +13 -13
- package/pipeline/scripts/smoke-skill-language.sh +4 -4
- package/pipeline/scripts/smoke-skill-manifest.sh +2 -2
- package/pipeline/scripts/smoke-skill-scan.sh +2 -2
- package/pipeline/scripts/smoke-stack-swap.sh +2 -2
- package/pipeline/scripts/smoke-subagent-validators.sh +8 -5
- package/pipeline/scripts/smoke-sync-adapters.sh +1 -1
- package/pipeline/scripts/smoke-sync-delegation.sh +7 -7
- package/pipeline/scripts/smoke-sync-parity.sh +1 -1
- package/pipeline/scripts/smoke-tasklist-ordering.sh +7 -7
- package/pipeline/scripts/smoke-telemetry.sh +1 -1
- package/pipeline/scripts/smoke-test-gap.sh +5 -5
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-tracker-contract.sh +6 -6
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +9 -1
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-contradiction.sh +1 -1
- package/pipeline/scripts/smoke-validator-gates.sh +164 -0
- package/pipeline/scripts/smoke-vercel-deploy-redact.sh +11 -11
- package/pipeline/scripts/smoke-wiki-integration.sh +2 -2
- package/pipeline/scripts/smoke-work-summary.sh +3 -3
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/smoke-write-state.sh +2 -2
- package/pipeline/scripts/stack-swap.sh +3 -3
- package/pipeline/scripts/sync-adapters.mjs +37 -10
- package/pipeline/scripts/sync-parity-check.sh +6 -6
- package/pipeline/scripts/test-gap-scan.mjs +11 -13
- package/pipeline/scripts/token-budget-report.mjs +4 -4
- package/pipeline/scripts/triage-memory.mjs +6 -6
- package/pipeline/scripts/uninstall.mjs +42 -4
- package/pipeline/scripts/update-issue-progress.sh +2 -2
- package/pipeline/scripts/validate-analysis.mjs +19 -21
- package/pipeline/scripts/validate-diff-risk.mjs +4 -4
- package/pipeline/scripts/validate-planning.mjs +3 -3
- package/pipeline/scripts/validate-reviewer.mjs +4 -4
- package/pipeline/scripts/validate-schemas.mjs +4 -4
- package/pipeline/scripts/validate-test-gap.mjs +4 -4
- package/pipeline/scripts/validate-triage.mjs +68 -9
- package/pipeline/scripts/verify-skills.sh +7 -7
- package/pipeline/scripts/write-state.mjs +49 -11
- package/pipeline/skills/.skill-manifest.json +245 -149
- package/pipeline/skills/.skills-index.json +236 -47
- package/pipeline/skills/figma-android/README.md +5 -5
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +3 -3
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +8 -8
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +4 -4
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +5 -5
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +14 -14
- package/pipeline/skills/figma-common/README.md +29 -29
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +20 -15
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +35 -30
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +35 -30
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +20 -20
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +32 -32
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +9 -9
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +25 -20
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +11 -6
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +30 -25
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +9 -4
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +27 -22
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +38 -38
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +39 -34
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +20 -15
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +44 -39
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +6 -6
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +30 -30
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +1 -1
- package/pipeline/skills/figma-common/figma-review/SKILL.md +31 -26
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +11 -11
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +5 -5
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +6 -6
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +12 -12
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +4 -4
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +1 -1
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +48 -48
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +42 -37
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +23 -18
- package/pipeline/skills/figma-common/performance-start/SKILL.md +52 -47
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +68 -68
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +42 -37
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +16 -16
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +15 -15
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +9 -9
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +15 -15
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +38 -38
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +19 -19
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +25 -25
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +7 -7
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +38 -38
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +29 -29
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +57 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +10 -10
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +16 -16
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +23 -23
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +26 -26
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +43 -43
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +17 -17
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +19 -19
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +15 -15
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +39 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +7 -7
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +29 -29
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +31 -31
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +16 -16
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +49 -49
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +8 -8
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +10 -10
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +11 -11
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +14 -14
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +9 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +26 -26
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +41 -41
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +8 -8
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +7 -7
- package/pipeline/skills/shared/README.md +62 -41
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +39 -39
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +44 -44
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +182 -176
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +55 -0
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +48 -0
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +16 -16
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +48 -0
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +40 -40
- package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +33 -30
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +26 -26
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +20 -20
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +15 -15
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +10 -10
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +18 -18
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +9 -9
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +20 -20
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +63 -0
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +16 -13
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +110 -110
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +13 -13
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +18 -18
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +13 -13
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +33 -30
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +9 -9
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +79 -79
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +10 -10
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +41 -0
- package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +53 -0
- package/pipeline/skills/shared/external/agentflow/SKILL.md +9 -9
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +113 -52
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +41 -0
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +23 -16
- package/pipeline/skills/shared/external/app-clips/SKILL.md +85 -354
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +135 -0
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +125 -0
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +113 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +152 -59
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +161 -118
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +289 -392
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +174 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +191 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +57 -107
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +35 -12
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +28 -26
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +53 -62
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +7 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +4 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +32 -12
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +34 -30
- package/pipeline/skills/shared/external/authentication/SKILL.md +134 -138
- package/pipeline/skills/shared/external/authentication/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +56 -29
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +183 -0
- package/pipeline/skills/shared/external/avkit/SKILL.md +497 -0
- package/pipeline/skills/shared/external/avkit/evals/evals.json +55 -0
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +668 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +29 -29
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +44 -19
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +136 -99
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +27 -8
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +7 -6
- package/pipeline/skills/shared/external/clean-code/SKILL.md +2 -2
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +63 -56
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +7 -4
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +31 -11
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +41 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +51 -51
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +70 -65
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +25 -1
- package/pipeline/skills/shared/external/core-data/SKILL.md +496 -0
- package/pipeline/skills/shared/external/core-data/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +47 -14
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +47 -16
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +43 -54
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +32 -2
- package/pipeline/skills/shared/external/coreml/SKILL.md +89 -48
- package/pipeline/skills/shared/external/coreml/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +82 -37
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +493 -0
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +602 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +6 -5
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +77 -47
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +42 -34
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +2 -2
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +136 -176
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +240 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +73 -34
- package/pipeline/skills/shared/external/energykit/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +80 -38
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +67 -53
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +53 -3
- package/pipeline/skills/shared/external/healthkit/SKILL.md +57 -124
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +82 -1
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +43 -41
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +13 -8
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +5 -4
- package/pipeline/skills/shared/external/humanizer/SKILL.md +4 -4
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +174 -18
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +262 -4
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +117 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +141 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +67 -14
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +20 -3
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +131 -22
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +69 -22
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +28 -16
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +354 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +69 -44
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +35 -69
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +8 -8
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +485 -0
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +316 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +120 -131
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/live-activities/references/{live-activity-patterns.md → activitykit-patterns.md} +148 -63
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +40 -21
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/mapkit-location/references/{corelocation-patterns.md → mapkit-corelocation-patterns.md} +88 -41
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +27 -24
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +129 -172
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +180 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +45 -18
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +26 -6
- package/pipeline/skills/shared/external/natural-language/SKILL.md +48 -18
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +20 -7
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +4 -3
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +156 -66
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +51 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +69 -19
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +499 -0
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +42 -0
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +844 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +122 -28
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +49 -18
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +100 -51
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +48 -8
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +13 -15
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +4 -4
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +2 -2
- package/pipeline/skills/shared/external/photos-camera-media/references/{photospicker-patterns.md → photokit-patterns.md} +3 -3
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +45 -48
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +22 -33
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +56 -37
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +4 -3
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -0
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +74 -53
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +10 -10
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +21 -20
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +81 -64
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +48 -9
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +118 -104
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +171 -0
- package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +93 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/spm-analysis-checks.md +105 -0
- package/pipeline/skills/shared/external/spm-build-analysis/scripts/check_spm_pins.py +118 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +110 -44
- package/pipeline/skills/shared/external/storekit/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +94 -43
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +82 -33
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +449 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +164 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +219 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +184 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +158 -0
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +499 -0
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +52 -40
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +92 -11
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +43 -16
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +43 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +50 -30
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +11 -4
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +113 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +150 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/{swift-6-2-concurrency.md → concurrency-patterns.md} +22 -11
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +52 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +21 -15
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/async-streams.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bridging.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bug-patterns.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +8 -8
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/diagnostics.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/hotspots.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +4 -4
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/unstructured.md +3 -3
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +339 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +33 -34
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +97 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +19 -6
- package/pipeline/skills/shared/external/swift-security/SKILL.md +195 -0
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +595 -0
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +611 -0
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +708 -0
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +573 -0
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +752 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +538 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +530 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +543 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +620 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +515 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +496 -0
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +747 -0
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +566 -0
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +813 -0
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +97 -297
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +123 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +162 -34
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +3 -3
- package/pipeline/skills/shared/external/swift-testing-pro/references/core-rules.md +2 -2
- package/pipeline/skills/shared/external/swift-testing-pro/references/migrating-from-xctest.md +5 -5
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +3 -3
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +5 -5
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +44 -23
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +3 -3
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +75 -0
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +54 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +14 -10
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +5 -5
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swiftdata-pro/references/class-inheritance.md +2 -2
- package/pipeline/skills/shared/external/swiftdata-pro/references/cloudkit.md +1 -1
- package/pipeline/skills/shared/external/swiftdata-pro/references/core-rules.md +6 -6
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +337 -0
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +297 -0
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +170 -0
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +307 -0
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +35 -0
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +306 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +56 -65
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +48 -44
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +6 -6
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +13 -13
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +3 -3
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +1 -1
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +4 -4
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +2 -2
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +1 -1
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +16 -16
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +11 -11
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +7 -7
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +5 -5
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +6 -6
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +38 -16
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +13 -3
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +32 -28
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +1 -1
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +202 -41
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +16 -25
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +71 -26
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +284 -65
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +387 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +10 -10
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +15 -3
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +2 -2
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +1 -1
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +51 -25
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +78 -6
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +161 -16
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +85 -27
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +37 -33
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +39 -51
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +204 -30
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +226 -21
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +220 -20
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +159 -34
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +27 -0
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/accessibility.md +4 -4
- package/pipeline/skills/shared/external/swiftui-pro/references/api.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/data.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/design.md +4 -4
- package/pipeline/skills/shared/external/swiftui-pro/references/hygiene.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/navigation.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/performance.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/swift.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/views.md +2 -2
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +12 -12
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +3 -3
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +1 -1
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +11 -11
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +124 -10
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +2 -1
- package/pipeline/skills/shared/external/tipkit/SKILL.md +3 -3
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +9 -9
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +17 -16
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +11 -11
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +1 -1
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +5 -5
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +7 -6
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +3 -3
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +9 -9
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +8 -7
- package/pipeline/skills/shared/external/web-testing/SKILL.md +7 -6
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +23 -17
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +99 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +89 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/references/benchmark-artifacts.md +94 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/references/benchmarking-workflow.md +67 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +230 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +219 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/fix-patterns.md +290 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +157 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/benchmark-artifacts.md +94 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/orchestration-report-template.md +143 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/diagnose_compilation.py +273 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/generate_optimization_report.py +533 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +90 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/code-compilation-checks.md +106 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/scripts/diagnose_compilation.py +273 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +77 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/project-audit-checks.md +101 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/recommendation-format.md +85 -0
- package/pipeline/skills/skills-index.md +213 -192
- package/docs/GENERICITY-REVIEW.md +0 -277
- package/docs/STABILITY-FIX-PLAN.md +0 -168
- package/pipeline/scripts/.last-figma-sync-plan.json +0 -23
- package/pipeline/scripts/README-figma-smokes.md +0 -34
- package/pipeline/scripts/figma-placeholder-map.json +0 -191
- package/pipeline/scripts/import-figma-skills.sh +0 -253
- package/pipeline/scripts/smoke-figma-config-schema.sh +0 -144
- package/pipeline/scripts/smoke-figma-skill-import.sh +0 -174
- package/pipeline/scripts/smoke-install-leak-gate.sh +0 -125
- package/pipeline/scripts/smoke-personal-data.sh +0 -82
- package/pipeline/scripts/sync-figma-source.sh +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.json +0 -94
- package/pipeline/skills/shared/external/app-store-review/references/code-signing.md +0 -259
- package/pipeline/skills/shared/external/app-store-review/references/rejection-patterns.md +0 -152
- package/pipeline/skills/shared/external/pencilkit-drawing/references/paperkit-integration.md +0 -376
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# PHASE 4
|
|
1
|
+
# PHASE 4 - Implementation Orchestrator
|
|
2
2
|
|
|
3
3
|
Orchestrates Phase 4 sub-phases: dispatches sub-agents to write Swift code, collects results.
|
|
4
4
|
PREV: Phase 3 (Data Analysis)
|
|
@@ -54,9 +54,9 @@ Read: {artifactPath}/pass3/05_complexity.md
|
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
EXTRACT:
|
|
57
|
-
- `componentLocation`
|
|
58
|
-
- `complexity`
|
|
59
|
-
- `filesToCreate`
|
|
57
|
+
- `componentLocation` - Swift package path for the component
|
|
58
|
+
- `complexity` - SIMPLE or COMPLEX
|
|
59
|
+
- `filesToCreate` - list of files from the spec
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
|
|
@@ -84,7 +84,7 @@ OPTIONS:
|
|
|
84
84
|
1) Override (delete existing files and recreate)
|
|
85
85
|
2) Merge (update existing files, keep others)
|
|
86
86
|
3) Choose different location
|
|
87
|
-
SUGGESTED: Option 2
|
|
87
|
+
SUGGESTED: Option 2 - merge with existing.
|
|
88
88
|
COMPLETED_GATES: [PRE_CHECK, LOAD_SPEC]
|
|
89
89
|
CONTEXT:
|
|
90
90
|
Path: {componentLocation}
|
|
@@ -120,9 +120,9 @@ PRE-CHECK + LOAD_SPEC + GATE 1
|
|
|
120
120
|
┌──────────────────────────────────────────┐
|
|
121
121
|
│ WAVE 1: PARALLEL DISPATCH (sub-agents) │
|
|
122
122
|
│ │
|
|
123
|
-
│ 4A
|
|
124
|
-
│ 4B
|
|
125
|
-
│ 4C
|
|
123
|
+
│ 4A - Configuration ← if COMPLEX │
|
|
124
|
+
│ 4B - View ← ALWAYS │
|
|
125
|
+
│ 4C - FIGMA.md ← ALWAYS │
|
|
126
126
|
│ │
|
|
127
127
|
└──────────────────────────────────────────┘
|
|
128
128
|
↓ wait for all to complete
|
|
@@ -130,7 +130,7 @@ PRE-CHECK + LOAD_SPEC + GATE 1
|
|
|
130
130
|
┌──────────────────────────────────────────┐
|
|
131
131
|
│ WAVE 2: SEQUENTIAL │
|
|
132
132
|
│ │
|
|
133
|
-
│ 4D
|
|
133
|
+
│ 4D - Preview ← ALWAYS │
|
|
134
134
|
│ (depends on 4A + 4B) │
|
|
135
135
|
│ │
|
|
136
136
|
└──────────────────────────────────────────┘
|
|
@@ -189,7 +189,7 @@ After all sub-phases complete, verify each produced its file:
|
|
|
189
189
|
|
|
190
190
|
```
|
|
191
191
|
[ ] {componentLocation}/{ComponentName}.swift exists (Phase 4B)
|
|
192
|
-
[ ] {componentLocation}/{ComponentName}Configuration.swift exists (Phase 4A
|
|
192
|
+
[ ] {componentLocation}/{ComponentName}Configuration.swift exists (Phase 4A - or SIMPLE skip)
|
|
193
193
|
[ ] {componentLocation}/FIGMA.md exists (Phase 4C)
|
|
194
194
|
```
|
|
195
195
|
|
|
@@ -272,10 +272,10 @@ xcodebuild build \
|
|
|
272
272
|
```
|
|
273
273
|
|
|
274
274
|
**Why this command is portable:**
|
|
275
|
-
- `git rev-parse --show-toplevel`
|
|
276
|
-
- `generic/platform=iOS`
|
|
277
|
-
- `CODE_SIGNING_ALLOWED=NO`
|
|
278
|
-
- `-quiet`
|
|
275
|
+
- `git rev-parse --show-toplevel` - resolves absolute repo path on any machine, no hardcoded user paths
|
|
276
|
+
- `generic/platform=iOS` - no simulator name, ID, or OS version needed. Works regardless of installed simulators
|
|
277
|
+
- `CODE_SIGNING_ALLOWED=NO` - bypasses development team / provisioning profile requirements. We only need compilation verification, not a runnable binary
|
|
278
|
+
- `-quiet` - suppresses build log noise, only shows errors and warnings
|
|
279
279
|
|
|
280
280
|
| Result | Action |
|
|
281
281
|
|--------|--------|
|
|
@@ -321,11 +321,11 @@ python3 .instructions/figma/figma-to-swiftui/scripts/phase4-finalize.py \
|
|
|
321
321
|
|
|
322
322
|
| Result | Action |
|
|
323
323
|
|--------|--------|
|
|
324
|
-
| Exit 0, `"action": "updated"` | Registry updated
|
|
325
|
-
| Exit 0, `"action": "version_bumped"` | Content hash changed, version bumped (other flags auto-yellow)
|
|
326
|
-
| Exit 0, `"action": "already_current"` | Byte-identical re-run, no-op
|
|
327
|
-
| Exit 0, `"action": "created"` | New registry file created
|
|
328
|
-
| Exit 1 | HALT
|
|
324
|
+
| Exit 0, `"action": "updated"` | Registry updated - proceed |
|
|
325
|
+
| Exit 0, `"action": "version_bumped"` | Content hash changed, version bumped (other flags auto-yellow) - proceed |
|
|
326
|
+
| Exit 0, `"action": "already_current"` | Byte-identical re-run, no-op - proceed |
|
|
327
|
+
| Exit 0, `"action": "created"` | New registry file created - proceed |
|
|
328
|
+
| Exit 1 | HALT - registry update failed |
|
|
329
329
|
|
|
330
330
|
**Why this matters:** This is the single source of truth for `status.ios.implemented`. The content hash prevents spurious version bumps on byte-identical re-runs; when content changes, `implemented.version` bumps and any downstream flags (`tested`, `codeConnect`, `wiki`) whose `against` is lower drop to yellow automatically. The subsequent `figma-iteration-commit` step will read this and sync the GitHub issue via `update-issue-from-registry.py`.
|
|
331
331
|
|
|
@@ -373,10 +373,10 @@ Implementation:
|
|
|
373
373
|
[ ] Phase 3 artifacts loaded (pass3/_index.md, 07_implementation_spec.md)
|
|
374
374
|
[ ] Component directory created (or merged with existing)
|
|
375
375
|
[ ] Git user name retrieved
|
|
376
|
-
[ ] 4A dispatched and completed (if COMPLEX)
|
|
377
|
-
[ ] 4B dispatched and completed
|
|
378
|
-
[ ] 4C dispatched and completed
|
|
379
|
-
[ ] 4D dispatched and completed
|
|
376
|
+
[ ] 4A dispatched and completed (if COMPLEX) - Configuration.swift exists
|
|
377
|
+
[ ] 4B dispatched and completed - View.swift exists
|
|
378
|
+
[ ] 4C dispatched and completed - FIGMA.md exists
|
|
379
|
+
[ ] 4D dispatched and completed - LTR + RTL Previews appended to View.swift
|
|
380
380
|
[ ] validate-phase4.sh passed (no violations)
|
|
381
381
|
[ ] xcodebuild passed (exit 0, no compilation errors)
|
|
382
382
|
[ ] phase4-finalize.py passed (status.ios.implemented updated)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# PHASE 4A
|
|
1
|
+
# PHASE 4A - Configuration File
|
|
2
2
|
|
|
3
3
|
Write the Configuration struct with chain modifier macros.
|
|
4
4
|
Only executed for COMPLEX components (>3 properties).
|
|
5
5
|
|
|
6
|
-
CONDITIONAL
|
|
6
|
+
CONDITIONAL - skip if SIMPLE.
|
|
7
7
|
PARALLEL WITH: Phase 4B (View), Phase 4C (FIGMA.md)
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -11,14 +11,14 @@ PARALLEL WITH: Phase 4B (View), Phase 4C (FIGMA.md)
|
|
|
11
11
|
## CONTEXT VARIABLES
|
|
12
12
|
|
|
13
13
|
These are provided by the orchestrator in the dispatch prompt:
|
|
14
|
-
- `componentName`
|
|
15
|
-
- `componentLocation`
|
|
16
|
-
- `artifactPath`
|
|
17
|
-
- `nodeId`
|
|
18
|
-
- `fileKey`
|
|
19
|
-
- `complexity`
|
|
20
|
-
- `gitUser`
|
|
21
|
-
- `date`
|
|
14
|
+
- `componentName` - e.g., "LabelBadge"
|
|
15
|
+
- `componentLocation` - e.g., "Sources/UIComponents/.../LabelBadge/"
|
|
16
|
+
- `artifactPath` - path to implementation artifacts
|
|
17
|
+
- `nodeId` - Figma node ID
|
|
18
|
+
- `fileKey` - Figma file key
|
|
19
|
+
- `complexity` - must be COMPLEX for this phase to execute
|
|
20
|
+
- `gitUser` - from `git config user.name`
|
|
21
|
+
- `date` - current date in DD.MM.YYYY format
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
@@ -31,7 +31,7 @@ STATUS: COMPLETE
|
|
|
31
31
|
PHASE: phase-4a
|
|
32
32
|
GATES_PASSED: [PRE_CHECK]
|
|
33
33
|
ARTIFACTS_CREATED: none
|
|
34
|
-
SUMMARY: Skipped
|
|
34
|
+
SUMMARY: Skipped - SIMPLE component, no configuration file needed.
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Read:
|
|
@@ -43,7 +43,7 @@ Read:
|
|
|
43
43
|
|
|
44
44
|
The `04c_variant_config_analysis.json` (from Phase 3H) provides typed recommendations for each boolean property:
|
|
45
45
|
- `KNOWN_SUBCOMPONENT` entries → use `swiftType` from 3H. Only `dynamicProps` go in config. If 2+ dynamic props → create mini config struct. If 1 → unwrap to single type. If 0 → boolean presence only.
|
|
46
|
-
- `PAIRED_ACTION_SUBCOMPONENT` entries → same as KNOWN_SUBCOMPONENT for data props. The `pairedClosure` is a View dependency
|
|
46
|
+
- `PAIRED_ACTION_SUBCOMPONENT` entries → same as KNOWN_SUBCOMPONENT for data props. The `pairedClosure` is a View dependency - NOT in Configuration. Phase 4B generates the paired modifier.
|
|
47
47
|
- `ICON_BOOLEAN_GATED` entries → use `swiftType` (`Image?` or `Optional3<Image>`)
|
|
48
48
|
- `CONTENT_LEAF` entries → `String?` (nil = hidden)
|
|
49
49
|
|
|
@@ -68,11 +68,11 @@ USER_ACTION_REQUIRED: Run Phase 3 first.
|
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
71
|
-
## ARCHITECTURAL RULE
|
|
71
|
+
## ARCHITECTURAL RULE - Configuration Purity
|
|
72
72
|
|
|
73
73
|
**Configuration structs hold ONLY declarative, value-type properties.**
|
|
74
74
|
|
|
75
|
-
Do NOT put these in Configuration
|
|
75
|
+
Do NOT put these in Configuration - they are direct View dependencies:
|
|
76
76
|
|
|
77
77
|
| Excluded Type | Where It Lives Instead |
|
|
78
78
|
|---------------|----------------------|
|
|
@@ -83,7 +83,7 @@ Do NOT put these in Configuration — they are direct View dependencies:
|
|
|
83
83
|
|
|
84
84
|
This separation enables the `+Modifiers` extension (Phase 4E) to safely forward all Configuration properties as view-level chain modifiers.
|
|
85
85
|
|
|
86
|
-
## ARCHITECTURAL RULE
|
|
86
|
+
## ARCHITECTURAL RULE - Only Dynamic Props in Config
|
|
87
87
|
|
|
88
88
|
**Sub-component properties that are fixed by the parent's design (static) do NOT go in Configuration.** Only caller-controlled (dynamic) properties are exposed.
|
|
89
89
|
|
|
@@ -106,7 +106,7 @@ ls {componentLocation}/*Configuration.swift 2>/dev/null
|
|
|
106
106
|
|
|
107
107
|
## GATE 2: WRITE_CONFIGURATION
|
|
108
108
|
|
|
109
|
-
INPUT: `pass3/04b_component_architecture.md`
|
|
109
|
+
INPUT: `pass3/04b_component_architecture.md` - contains the Final API Design section
|
|
110
110
|
|
|
111
111
|
### 2.1 Extract from architecture
|
|
112
112
|
|
|
@@ -120,12 +120,12 @@ From the **Final API Design** section, extract:
|
|
|
120
120
|
|
|
121
121
|
| Property Pattern | Attribute |
|
|
122
122
|
|------------------|-----------|
|
|
123
|
-
| UUID, ID, identifier | `@IgnoreChainModifier`
|
|
124
|
-
| Non-localizable String (URL, code, ID) | `@IgnoreLocalization`
|
|
123
|
+
| UUID, ID, identifier | `@IgnoreChainModifier` - immutable, not chainable |
|
|
124
|
+
| Non-localizable String (URL, code, ID) | `@IgnoreLocalization` - no `.title(localized:)` variant |
|
|
125
125
|
| Name conflicts with SwiftUI methods | `@ChainModifierName("customName")` |
|
|
126
|
-
| Closure `() -> Void` | `@IgnoreLocalization`
|
|
126
|
+
| Closure `() -> Void` | `@IgnoreLocalization` - not a String |
|
|
127
127
|
| Image | No special attribute needed |
|
|
128
|
-
| Optional property | No attribute
|
|
128
|
+
| Optional property | No attribute - macro generates double-optional `T??` in `modified()` automatically |
|
|
129
129
|
|
|
130
130
|
### 2.3 Write file
|
|
131
131
|
|
|
@@ -159,7 +159,7 @@ public struct {ComponentName}Configuration: Sendable {
|
|
|
159
159
|
|
|
160
160
|
// MARK: - Enums
|
|
161
161
|
|
|
162
|
-
{Enum definitions from architecture
|
|
162
|
+
{Enum definitions from architecture - inside the struct if component-specific}
|
|
163
163
|
|
|
164
164
|
// MARK: - Properties
|
|
165
165
|
|
|
@@ -205,7 +205,7 @@ public struct {ComponentName}Configuration: Sendable {
|
|
|
205
205
|
public let title: String
|
|
206
206
|
public let price: Price?
|
|
207
207
|
|
|
208
|
-
// Nested PriceRepresentable
|
|
208
|
+
// Nested PriceRepresentable - only the fields this component uses
|
|
209
209
|
public struct Price: PriceRepresentable {
|
|
210
210
|
public let amount: Double
|
|
211
211
|
public let currency: String
|
|
@@ -226,7 +226,7 @@ public struct {ComponentName}Configuration: Sendable {
|
|
|
226
226
|
}
|
|
227
227
|
```
|
|
228
228
|
|
|
229
|
-
**For form data:** When the architecture identifies a `FORM_PATTERN` (component embeds 1+ form-capable sub-components
|
|
229
|
+
**For form data:** When the architecture identifies a `FORM_PATTERN` (component embeds 1+ form-capable sub-components - Selectbox, Checkbox, Radio, TextboxTextarea, DatepickerSchedule), read the `/figma-form-integration` skill at `.instructions/figma/figma-form-integration/SKILL.md`. Define a nested `Section` class conforming to `FormSection` (annotated with `@FormSection @Observable`) with ONLY the form fields this component renders. The `section` lives on Configuration; static labels/placeholders remain as Configuration strings:
|
|
230
230
|
|
|
231
231
|
```swift
|
|
232
232
|
@GenerateChainModifiers
|
|
@@ -280,7 +280,7 @@ public struct {ComponentName}Configuration: Sendable {
|
|
|
280
280
|
public let title: String
|
|
281
281
|
public let badge: BadgeSection?
|
|
282
282
|
|
|
283
|
-
// Nested sub-configuration (no @GenerateChainModifiers
|
|
283
|
+
// Nested sub-configuration (no @GenerateChainModifiers - only top-level gets it)
|
|
284
284
|
public struct BadgeSection: Sendable {
|
|
285
285
|
public let text: String
|
|
286
286
|
public let style: BadgeStyle
|
|
@@ -314,8 +314,8 @@ Verify the written file:
|
|
|
314
314
|
[ ] All enums defined with correct cases
|
|
315
315
|
[ ] Init has sensible defaults (empty string, nil for optionals, first enum case or required)
|
|
316
316
|
[ ] Struct is Sendable
|
|
317
|
-
[ ] NO manual modified() method
|
|
318
|
-
[ ] NO manual chain methods
|
|
317
|
+
[ ] NO manual modified() method - macro handles it
|
|
318
|
+
[ ] NO manual chain methods - macro handles it
|
|
319
319
|
[ ] @IgnoreChainModifier on non-chainable properties
|
|
320
320
|
[ ] @IgnoreLocalization on non-localizable String properties
|
|
321
321
|
[ ] Correct imports: SwiftUI, UIMacros
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# PHASE 4B
|
|
1
|
+
# PHASE 4B - View Implementation + Preview
|
|
2
2
|
|
|
3
3
|
Write the main View struct and Preview.
|
|
4
|
-
This is the most critical implementation phase
|
|
4
|
+
This is the most critical implementation phase - it produces the actual SwiftUI component.
|
|
5
5
|
|
|
6
|
-
required
|
|
6
|
+
required - always execute this phase.
|
|
7
7
|
PARALLEL WITH: Phase 4A (Configuration), Phase 4C (FIGMA.md)
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -11,15 +11,15 @@ PARALLEL WITH: Phase 4A (Configuration), Phase 4C (FIGMA.md)
|
|
|
11
11
|
## CONTEXT VARIABLES
|
|
12
12
|
|
|
13
13
|
These are provided by the orchestrator in the dispatch prompt:
|
|
14
|
-
- `componentName`
|
|
15
|
-
- `componentLocation`
|
|
16
|
-
- `artifactPath`
|
|
17
|
-
- `nodeId`
|
|
18
|
-
- `fileKey`
|
|
19
|
-
- `complexity`
|
|
20
|
-
- `gitUser`
|
|
21
|
-
- `date`
|
|
22
|
-
- `issueNumber`
|
|
14
|
+
- `componentName` - e.g., "LabelBadge"
|
|
15
|
+
- `componentLocation` - e.g., "Sources/UIComponents/.../LabelBadge/"
|
|
16
|
+
- `artifactPath` - path to implementation artifacts
|
|
17
|
+
- `nodeId` - Figma node ID
|
|
18
|
+
- `fileKey` - Figma file key
|
|
19
|
+
- `complexity` - SIMPLE or COMPLEX
|
|
20
|
+
- `gitUser` - from `git config user.name`
|
|
21
|
+
- `date` - current date in DD.MM.YYYY format
|
|
22
|
+
- `issueNumber` - GitHub issue number (e.g., "340"). May be empty if not available.
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
@@ -28,7 +28,7 @@ These are provided by the orchestrator in the dispatch prompt:
|
|
|
28
28
|
Read all required analysis files **in this order** (compact context first, large files last):
|
|
29
29
|
|
|
30
30
|
```
|
|
31
|
-
{artifactPath}/pass1/component_summary.json → Component overview (~100 lines)
|
|
31
|
+
{artifactPath}/pass1/component_summary.json → Component overview (~100 lines) - READ FIRST
|
|
32
32
|
{artifactPath}/pass3/00_property_coverage.json → Property mandate (IMPLEMENT/SKIP/DEFER)
|
|
33
33
|
{artifactPath}/pass3/07_implementation_spec.md → Compiled blueprint
|
|
34
34
|
{artifactPath}/pass3/04b_component_architecture.md → API shape, enums, properties
|
|
@@ -56,7 +56,7 @@ Read effects conversion reference (shadows, blur, gradients, animations):
|
|
|
56
56
|
|
|
57
57
|
**(strict) CSS effect lookup:** If `design_context_response.json` contains any of `backdrop-blur-[...]`, `backdrop-filter`, `filter: blur(...)`, `box-shadow`, `linear-gradient(...deg, ...)`, you MUST apply the mapping from `figma-to-swiftui-effects.md` verbatim. Cite the section number in a code comment next to the translated line.
|
|
58
58
|
|
|
59
|
-
**ANTI-PATTERN
|
|
59
|
+
**ANTI-PATTERN - do NOT reach for system Materials:** CSS `backdrop-blur-[Npx]` maps to `.blur(radius: N/2)` per effects-reference section2 - NOT to `.ultraThinMaterial`, `.regularMaterial`, or `.thinMaterial`. iOS Materials adapt their tint based on underlying content (darker on dark backgrounds, lighter on light) which does not match CSS `backdrop-filter` semantics. Use a plain gradient/fill + `.blur(radius:)` following the reference. If a stroke border must stay sharp, put it in an overlay above the blurred layer.
|
|
60
60
|
|
|
61
61
|
If any required file is missing:
|
|
62
62
|
|
|
@@ -125,7 +125,7 @@ private enum Constants {
|
|
|
125
125
|
**Constants Placement Rule:**
|
|
126
126
|
- Constants MUST be `private enum Constants` nested INSIDE the View struct, NOT at file scope
|
|
127
127
|
- Place it as the first item inside the struct, before `// MARK: - Properties`
|
|
128
|
-
- Token values (`.Spacing.*`, `.Radius.*`, `Color.*`, `.Size.*`) are used directly in the body
|
|
128
|
+
- Token values (`.Spacing.*`, `.Radius.*`, `Color.*`, `.Size.*`) are used directly in the body - do NOT wrap them in Constants
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
|
|
@@ -173,7 +173,7 @@ If `00_property_coverage.json` does not exist, skip this gate (backward compatib
|
|
|
173
173
|
public struct {ComponentName}: View {
|
|
174
174
|
// MARK: - Properties
|
|
175
175
|
|
|
176
|
-
{All properties from Final API Design
|
|
176
|
+
{All properties from Final API Design - public let}
|
|
177
177
|
|
|
178
178
|
// MARK: - Initialization
|
|
179
179
|
|
|
@@ -193,11 +193,11 @@ public struct {ComponentName}: View {
|
|
|
193
193
|
}
|
|
194
194
|
```
|
|
195
195
|
|
|
196
|
-
**CRITICAL
|
|
196
|
+
**CRITICAL - Type Placement:**
|
|
197
197
|
- ALL component-specific enums/types MUST be nested inside the View struct (SIMPLE) or Configuration struct (COMPLEX)
|
|
198
198
|
- **For COMPLEX components: ALL data model types MUST be defined inside `{ComponentName}Configuration`, NOT inside the View struct.** The View then exposes them via `public typealias` for backwards-compatible API: `public typealias MyType = {ComponentName}Configuration.MyType`
|
|
199
199
|
- NEVER define them as top-level types outside the struct
|
|
200
|
-
- NEVER define data model types inside a COMPLEX View struct
|
|
200
|
+
- NEVER define data model types inside a COMPLEX View struct - they belong in Configuration
|
|
201
201
|
- Name them WITHOUT the component prefix: `Size` not `{ComponentName}Size`, `State` not `{ComponentName}State`
|
|
202
202
|
- Extensions on nested types use `extension {ComponentName}.TypeName { }` after the struct closing brace
|
|
203
203
|
|
|
@@ -263,18 +263,18 @@ public struct {ComponentName}: View {
|
|
|
263
263
|
|
|
264
264
|
**CRITICAL for COMPLEX:**
|
|
265
265
|
- `@GenerateViewConfiguration` macro generates ONLY:
|
|
266
|
-
- `configured(_:)` method
|
|
267
|
-
- **AI writes the custom init**
|
|
268
|
-
- **Phase 4E writes +Modifiers**
|
|
266
|
+
- `configured(_:)` method - post-init configuration transform
|
|
267
|
+
- **AI writes the custom init** - the macro does NOT generate inits
|
|
268
|
+
- **Phase 4E writes +Modifiers** - View-level forwarding modifiers (`.state()`, `.title()`, etc.) are written by AI in +Modifiers.swift because Swift macros cannot introspect the Configuration struct
|
|
269
269
|
- Init includes **required dynamic props** as direct parameters + **required closures**
|
|
270
270
|
- Optional props with defaults → set via chain modifiers (generated by macro)
|
|
271
|
-
- Configuration is `private let`
|
|
271
|
+
- Configuration is `private let` - the macro-generated `configured()` method reconstructs via init, not mutation
|
|
272
272
|
|
|
273
273
|
**Init generation rules:**
|
|
274
274
|
1. **Required props** = Configuration props that have no sensible default (the component is meaningless without them). These become init parameters. AI infers this from component semantics, not from whether a default exists in config.
|
|
275
275
|
2. **Required closures** = Always-present actions (e.g., primary button action). These become init parameters.
|
|
276
276
|
3. **Optional config props** = Props with defaults or optional props. Set via chain modifiers, NOT init params.
|
|
277
|
-
4. **Paired action closures** = From `PAIRED_ACTION_SUBCOMPONENT`. NOT in init
|
|
277
|
+
4. **Paired action closures** = From `PAIRED_ACTION_SUBCOMPONENT`. NOT in init - set via paired modifiers.
|
|
278
278
|
|
|
279
279
|
### With dependencies (Bindings, ObservedObjects)
|
|
280
280
|
|
|
@@ -453,24 +453,24 @@ Static props from 3H `staticProps` are hardcoded in the View body. Only dynamic
|
|
|
453
453
|
if let title = configuration.secondaryButtonTitle {
|
|
454
454
|
TurkishButton { secondaryAction?() }
|
|
455
455
|
.title(title)
|
|
456
|
-
.style(.ghost) // static
|
|
456
|
+
.style(.ghost) // static - hardcoded from 3H staticProps
|
|
457
457
|
.size(.default) // static
|
|
458
458
|
.colorTheme(.brand) // static
|
|
459
459
|
}
|
|
460
460
|
```
|
|
461
461
|
|
|
462
|
-
### 4.7 Layer text
|
|
462
|
+
### 4.7 Layer text - static vs dynamic
|
|
463
463
|
|
|
464
464
|
Texts from Figma layers are classified in `pass3/04_patterns.md` (Layer Text Classification table) as STATIC or DYNAMIC.
|
|
465
465
|
|
|
466
466
|
- **DYNAMIC** texts → MUST use the corresponding Configuration property: `Text(configuration.currencyCode)`, NOT `Text("TRY")`
|
|
467
467
|
- **STATIC** texts → use localization key if available (`Text(.Price.totalAmount)`), or hardcode only if truly fixed structural text (separators like "/", operators like "+")
|
|
468
468
|
|
|
469
|
-
**Never hardcode text that represents variable data.** If a text looks like sample data (a price, an amount, a percentage, a currency code, a date), it MUST come from a configuration property. If no matching property exists in the architecture, HALT
|
|
469
|
+
**Never hardcode text that represents variable data.** If a text looks like sample data (a price, an amount, a percentage, a currency code, a date), it MUST come from a configuration property. If no matching property exists in the architecture, HALT - the architecture is incomplete.
|
|
470
470
|
|
|
471
471
|
### 4.7.1 Price pattern rendering
|
|
472
472
|
|
|
473
|
-
When the architecture identifies a **price pattern** (
|
|
473
|
+
When the architecture identifies a **price pattern** (section1.5.1 in Phase 3D), use `CurrencyTextRenderer` for rendering:
|
|
474
474
|
|
|
475
475
|
```swift
|
|
476
476
|
// Create a style with the component's fonts
|
|
@@ -480,7 +480,7 @@ let style = CurrencyTextStyle(
|
|
|
480
480
|
color: .Text.textWhite
|
|
481
481
|
)
|
|
482
482
|
|
|
483
|
-
// Render as AttributedString
|
|
483
|
+
// Render as AttributedString - handles placement, formatting, grouping
|
|
484
484
|
Text(CurrencyTextRenderer.attributedString(
|
|
485
485
|
value: amount, // Double
|
|
486
486
|
currencyCode: currencyCode, // String
|
|
@@ -488,11 +488,11 @@ Text(CurrencyTextRenderer.attributedString(
|
|
|
488
488
|
))
|
|
489
489
|
```
|
|
490
490
|
|
|
491
|
-
Do NOT manually place currency code left/right
|
|
491
|
+
Do NOT manually place currency code left/right - `CurrencyTextRenderer` resolves placement from `CurrencyFormatProvider`. Do NOT format the amount as String - pass `Double`, the renderer formats it.
|
|
492
492
|
|
|
493
493
|
### 4.7.1a Attributed text rendering (multi-font)
|
|
494
494
|
|
|
495
|
-
When a text has mixed typography (
|
|
495
|
+
When a text has mixed typography (section1.5.1a in Phase 3D), use `AttributedString.format()` from `UIExtensions`. The highlight value can be a dynamic prop or a localization key - use `.localized` (no args) to keep `%@` placeholders intact:
|
|
496
496
|
|
|
497
497
|
```swift
|
|
498
498
|
// Highlight from localization key (static but styled differently)
|
|
@@ -510,7 +510,7 @@ Text(template.format(highlight))
|
|
|
510
510
|
|
|
511
511
|
### 4.7.2 Image asset rendering
|
|
512
512
|
|
|
513
|
-
When the architecture identifies image assets (
|
|
513
|
+
When the architecture identifies image assets (section1.5.2 in Phase 3D):
|
|
514
514
|
|
|
515
515
|
**DYNAMIC images (remote):**
|
|
516
516
|
```swift
|
|
@@ -522,7 +522,7 @@ RemoteImage(url: configuration.imageURL)
|
|
|
522
522
|
.clipShape(RoundedRectangle(cornerRadius: .Radius.radius8))
|
|
523
523
|
```
|
|
524
524
|
|
|
525
|
-
Do NOT embed Figma placeholder photos as bundled assets
|
|
525
|
+
Do NOT embed Figma placeholder photos as bundled assets - they are sample data. The component takes a `URL` and loads the real image at runtime.
|
|
526
526
|
|
|
527
527
|
**STATIC images (bundled):**
|
|
528
528
|
```swift
|
|
@@ -550,7 +550,7 @@ if isExpanded {
|
|
|
550
550
|
- **Container:** Apply `.animation(.easeInOut(duration: 0.25), value: isExpanded)` on the outer VStack so SwiftUI animates the height change
|
|
551
551
|
- **Tap:** Toggle via `.onTapGesture { withAnimation { isExpanded.toggle() } }` on the header row
|
|
552
552
|
|
|
553
|
-
Do NOT use `DisclosureGroup`
|
|
553
|
+
Do NOT use `DisclosureGroup` - it has limited styling control. Build the expand/collapse manually for pixel-perfect Figma match.
|
|
554
554
|
|
|
555
555
|
### 4.8 @ViewBuilder for complex conditional views
|
|
556
556
|
|
|
@@ -608,12 +608,12 @@ INPUT: `pass3/08_utility_integration.md` → Accessibility section
|
|
|
608
608
|
|
|
609
609
|
Apply ONLY what the analysis specifies. If the analysis says 0 accessibility keys and no modifiers, add NOTHING.
|
|
610
610
|
|
|
611
|
-
**CRITICAL
|
|
611
|
+
**CRITICAL - No unnecessary accessibility annotations:**
|
|
612
612
|
- Accessibility is for vision-impaired users to **navigate and use** the app
|
|
613
|
-
- Ask: "Does a vision-impaired person need this information?"
|
|
613
|
+
- Ask: "Does a vision-impaired person need this information?" - if NO, do not add it
|
|
614
614
|
- Do NOT generate per-enum-variant accessibility keys for visual state the user already knows (loyalty tier, color-coded status)
|
|
615
615
|
- Do NOT add `localizedAccessibilityName` computed properties on enums unless Phase 2C explicitly defined those keys
|
|
616
|
-
- If any accessibility text IS needed, it MUST use `LocalizedAccessibilityStringKey`
|
|
616
|
+
- If any accessibility text IS needed, it MUST use `LocalizedAccessibilityStringKey` - never hardcode English strings
|
|
617
617
|
|
|
618
618
|
**Before adding ANY modifier, ask: "What breaks if I remove this?"** If the answer is "nothing", do not add it.
|
|
619
619
|
|
|
@@ -622,11 +622,11 @@ Apply ONLY what the analysis specifies. If the analysis says 0 accessibility key
|
|
|
622
622
|
icon.accessibilityHidden(true)
|
|
623
623
|
|
|
624
624
|
// Group children into single VoiceOver stop
|
|
625
|
-
// SwiftUI reads visible Text automatically
|
|
625
|
+
// SwiftUI reads visible Text automatically - do NOT add .accessibilityLabel on top
|
|
626
626
|
.accessibilityElement(children: .combine)
|
|
627
627
|
|
|
628
628
|
// Do NOT add .accessibilityLabel when SwiftUI reads visible text correctly
|
|
629
|
-
// Do NOT add .accessibilityAddTraits(.isStaticText) to Text
|
|
629
|
+
// Do NOT add .accessibilityAddTraits(.isStaticText) to Text - SwiftUI already knows
|
|
630
630
|
// Do NOT add .accessibilityRemoveTraits(.isButton) when there is no Button
|
|
631
631
|
// Do NOT announce visual state (color) for non-interactive display components
|
|
632
632
|
```
|
|
@@ -664,21 +664,21 @@ Before marking complete, verify:
|
|
|
664
664
|
[ ] Paired modifiers present for each PAIRED_ACTION_SUBCOMPONENT from 3H
|
|
665
665
|
[ ] Every config property (including data props from paired modifiers) will get a forwarding modifier in Phase 4E
|
|
666
666
|
[ ] Static sub-component props hardcoded in body (from 3H staticProps)
|
|
667
|
-
[ ] Manual init present (if SIMPLE
|
|
667
|
+
[ ] Manual init present (if SIMPLE - no macro)
|
|
668
668
|
[ ] SwiftDoc with Figma link above struct declaration
|
|
669
669
|
[ ] Constants enum: private, nested inside View struct, no raw numbers in body (or omitted if no component-specific constants)
|
|
670
670
|
[ ] ALL tokens from pass3/02_token_mapping.md applied (no hardcoded colors/spacing/fonts)
|
|
671
|
-
[ ] No hardcoded sample/placeholder text
|
|
671
|
+
[ ] No hardcoded sample/placeholder text - all DYNAMIC layer texts use configuration properties (per pass3/04_patterns.md classification)
|
|
672
672
|
[ ] Layout matches Figma: correct stacks, spacing, alignment, padding
|
|
673
673
|
[ ] State-driven styling via computed properties (not inline switch in body)
|
|
674
674
|
[ ] Nested components use exact init signatures from pass3/03_nested_components.md
|
|
675
675
|
[ ] Testing identifiers applied per pass3/08_utility_integration.md (or skipped if 0)
|
|
676
676
|
[ ] Accessibility modifiers applied per pass3/08_utility_integration.md (or skipped if 0)
|
|
677
677
|
[ ] Analytics modifiers applied per pass3/08_utility_integration.md (or skipped if 0)
|
|
678
|
-
[ ] No invented utility modifiers
|
|
679
|
-
[ ] NO Preview code in this file
|
|
678
|
+
[ ] No invented utility modifiers - only what analysis specifies
|
|
679
|
+
[ ] NO Preview code in this file - Phase 4D handles Preview separately
|
|
680
680
|
[ ] Every IMPLEMENT property from 00_property_coverage.json has a Swift init parameter (if coverage file exists)
|
|
681
|
-
[ ] ALL types nested inside View or Configuration struct
|
|
681
|
+
[ ] ALL types nested inside View or Configuration struct - no top-level enums
|
|
682
682
|
```
|
|
683
683
|
|
|
684
684
|
---
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# PHASE 4C
|
|
1
|
+
# PHASE 4C - FIGMA.md Documentation
|
|
2
2
|
|
|
3
3
|
Write the FIGMA.md file for the component.
|
|
4
|
-
This file is the bridge between Figma and code
|
|
4
|
+
This file is the bridge between Figma and code - used by other phases (Phase 3C nested lookup) and developers.
|
|
5
5
|
|
|
6
|
-
required
|
|
6
|
+
required - always execute this phase.
|
|
7
7
|
PARALLEL WITH: Phase 4A (Configuration), Phase 4B (View)
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -11,14 +11,14 @@ PARALLEL WITH: Phase 4A (Configuration), Phase 4B (View)
|
|
|
11
11
|
## CONTEXT VARIABLES
|
|
12
12
|
|
|
13
13
|
These are provided by the orchestrator in the dispatch prompt:
|
|
14
|
-
- `componentName`
|
|
15
|
-
- `componentLocation`
|
|
16
|
-
- `artifactPath`
|
|
17
|
-
- `nodeId`
|
|
18
|
-
- `fileKey`
|
|
19
|
-
- `complexity`
|
|
20
|
-
- `gitUser`
|
|
21
|
-
- `date`
|
|
14
|
+
- `componentName` - e.g., "LabelBadge"
|
|
15
|
+
- `componentLocation` - e.g., "Sources/UIComponents/.../LabelBadge/"
|
|
16
|
+
- `artifactPath` - path to implementation artifacts
|
|
17
|
+
- `nodeId` - Figma node ID
|
|
18
|
+
- `fileKey` - Figma file key
|
|
19
|
+
- `complexity` - SIMPLE or COMPLEX
|
|
20
|
+
- `gitUser` - from `git config user.name`
|
|
21
|
+
- `date` - current date in DD.MM.YYYY format
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
@@ -73,7 +73,7 @@ Build the header metadata block.
|
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
Where the init shows required dynamic props + required closures:
|
|
76
|
-
- No required props → `{ComponentName}().modifier(value)` (unlikely
|
|
76
|
+
- No required props → `{ComponentName}().modifier(value)` (unlikely - most have at least one required prop)
|
|
77
77
|
- Required prop + closure → `{ComponentName}(title: "value") { action() }.modifier(value)`
|
|
78
78
|
- With binding → `{ComponentName}(page: $page, title: "value").modifier(value)`
|
|
79
79
|
- With paired modifier → `{ComponentName}(title: "value") { action() }.secondaryButton("title") { action() }`
|
|
@@ -83,7 +83,7 @@ Where the init shows required dynamic props + required closures:
|
|
|
83
83
|
- Node ID uses colon format (`6893:6879`), not dash format
|
|
84
84
|
- For SIMPLE: **Component** shows the init signature with parameter labels
|
|
85
85
|
- For COMPLEX: **Init** shows the custom init + chain modifier pattern (preferred usage)
|
|
86
|
-
- Trailing closure syntax ONLY when there is an actual closure dependency
|
|
86
|
+
- Trailing closure syntax ONLY when there is an actual closure dependency - NOT for configuration
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
@@ -125,7 +125,7 @@ Show ALL init parameters with their types and defaults. Match the exact init fro
|
|
|
125
125
|
- List every chainable property from the Configuration
|
|
126
126
|
- Skip properties marked `@IgnoreChainModifier` (UUIDs, IDs)
|
|
127
127
|
- Include `(localized:)` variant for String properties NOT marked `@IgnoreLocalization`
|
|
128
|
-
- These are auto-generated by `@GenerateChainModifiers`
|
|
128
|
+
- These are auto-generated by `@GenerateChainModifiers` - document what the macro produces
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
|
|
@@ -192,7 +192,7 @@ If no nested View components (only inline Text/Image) → skip.
|
|
|
192
192
|
```markdown
|
|
193
193
|
## Nested Components
|
|
194
194
|
|
|
195
|
-
- **{ChildComponent}**
|
|
195
|
+
- **{ChildComponent}** - [{ChildComponent} FIGMA.md](relative/path/to/FIGMA.md)
|
|
196
196
|
```
|
|
197
197
|
|
|
198
198
|
**Rules:**
|
|
@@ -254,7 +254,7 @@ COMPLEX components use a **custom init** with required dynamic props + required
|
|
|
254
254
|
```
|
|
255
255
|
|
|
256
256
|
**Rules:**
|
|
257
|
-
- Show ONLY the preferred pattern: required props in init + chain modifiers
|
|
257
|
+
- Show ONLY the preferred pattern: required props in init + chain modifiers - FIGMA.md is consumed by AI (Phase 3C nesting), keep it compact
|
|
258
258
|
- Required dynamic props and required closures go in init
|
|
259
259
|
- Optional config props → chain modifiers
|
|
260
260
|
- Paired sub-components → paired modifiers (`.secondaryButton("title") { action }`)
|
|
@@ -315,7 +315,7 @@ Skip if there's nothing noteworthy beyond what's obvious from the API.
|
|
|
315
315
|
[ ] First usage example is the recommended pattern
|
|
316
316
|
[ ] Usage shows 2-4 examples covering major variants
|
|
317
317
|
[ ] All Variants table (if ≤10 combinations)
|
|
318
|
-
[ ] No implementation details
|
|
318
|
+
[ ] No implementation details - only public API surface
|
|
319
319
|
```
|
|
320
320
|
|
|
321
321
|
---
|