@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,9 +1,9 @@
|
|
|
1
|
-
# PHASE 3D
|
|
1
|
+
# PHASE 3D - Pattern Detection + Component Architecture + Complexity
|
|
2
2
|
|
|
3
3
|
Analyze design data to detect structural patterns, design the Swift API shape, and evaluate complexity.
|
|
4
|
-
This is the most critical analysis phase
|
|
4
|
+
This is the most critical analysis phase - its output defines the API that Phase 4 implements.
|
|
5
5
|
|
|
6
|
-
required
|
|
6
|
+
required - always execute this phase.
|
|
7
7
|
PARALLEL WITH: Phase 3A, 3B, 3C, 3E, 3F (all read from pass1/ independently)
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -100,13 +100,13 @@ Same component with property-based variations.
|
|
|
100
100
|
| Boolean toggles MULTIPLE elements | Keep `Bool`, keep content properties | `ShowHeader boolean` controls title + subtitle + icon → `showHeader: Bool` |
|
|
101
101
|
| Boolean controls behavior (not visibility) | Keep `Bool` | `IsInteractive boolean` → `isInteractive: Bool` |
|
|
102
102
|
|
|
103
|
-
**Rationale:** In Figma, a boolean + content slot is two properties because Figma has no optionals. In Swift, `Optional` naturally expresses "present or absent." Keeping a separate `showX: Bool` alongside the content creates redundant state
|
|
103
|
+
**Rationale:** In Figma, a boolean + content slot is two properties because Figma has no optionals. In Swift, `Optional` naturally expresses "present or absent." Keeping a separate `showX: Bool` alongside the content creates redundant state - you can have `showLabel: false` but `text: "Hello"`, which is a contradiction the API shouldn't allow.
|
|
104
104
|
|
|
105
|
-
**Apply this merge consistently**
|
|
105
|
+
**Apply this merge consistently** - if the icon boolean was merged into `Image?`, the label boolean must also be merged into `String?`. Same pattern, same treatment.
|
|
106
106
|
|
|
107
|
-
**Cross-source merges (Figma boolean + LAYER_TEXT):** After Layer Text Classification (
|
|
107
|
+
**Cross-source merges (Figma boolean + LAYER_TEXT):** After Layer Text Classification (section1.5), re-evaluate the merge rule against the combined property set. A Figma boolean may gate a LAYER_TEXT dynamic property - if the boolean toggles visibility of that single text element, merge the boolean into the LAYER_TEXT property as `String?`. The merge rule applies identically regardless of whether the content property originated from a Figma TEXT override or from layer text classification.
|
|
108
108
|
|
|
109
|
-
**Shared-content exception:** When MULTIPLE booleans independently gate sections that share ONE content source, do NOT merge. Each boolean provides independent per-section visibility that a single optional can't express. Example: `/Money&Mil` and `+Money&Mil` both display `milesAmount`
|
|
109
|
+
**Shared-content exception:** When MULTIPLE booleans independently gate sections that share ONE content source, do NOT merge. Each boolean provides independent per-section visibility that a single optional can't express. Example: `/Money&Mil` and `+Money&Mil` both display `milesAmount` - merging would destroy the ability to show one section but not the other. Keep the booleans; the view short-circuits via `if showX, let content = sharedContent { ... }`.
|
|
110
110
|
|
|
111
111
|
### 1.3 Extract Variant Examples
|
|
112
112
|
|
|
@@ -125,16 +125,16 @@ From metadata_response.xml:
|
|
|
125
125
|
|
|
126
126
|
### 1.5 Layer Text Classification
|
|
127
127
|
|
|
128
|
-
Figma component properties capture variant axes, boolean toggles, text overrides, and instance swaps
|
|
128
|
+
Figma component properties capture variant axes, boolean toggles, text overrides, and instance swaps - but NOT the actual text content rendered inside layers. That layer text often contains **sample/placeholder data** that must become dynamic API parameters.
|
|
129
129
|
|
|
130
130
|
**Procedure:**
|
|
131
131
|
|
|
132
132
|
1. Extract every visible text value from `design_context_response.json` (from the generated code / layer content)
|
|
133
|
-
2. Filter out texts already captured as Figma TEXT properties in `component_properties.json`
|
|
134
|
-
3. Filter out texts that have a localization key assigned in `pass2/utility_localization.json` (read if available)
|
|
133
|
+
2. Filter out texts already captured as Figma TEXT properties in `component_properties.json` - these are already handled
|
|
134
|
+
3. Filter out texts that have a localization key assigned in `pass2/utility_localization.json` (read if available) - these are static labels managed by the localization system
|
|
135
135
|
4. For each remaining text, classify as STATIC or DYNAMIC using contextual reasoning
|
|
136
136
|
|
|
137
|
-
**Classification
|
|
137
|
+
**Classification - reason about the component's semantic purpose and each text's role:**
|
|
138
138
|
|
|
139
139
|
| Question | If YES → |
|
|
140
140
|
|----------|----------|
|
|
@@ -144,7 +144,7 @@ Figma component properties capture variant axes, boolean toggles, text overrides
|
|
|
144
144
|
| Is this a fixed UI label describing what adjacent data represents? | STATIC |
|
|
145
145
|
| Is this a structural/grammatical element (separator, connector, operator like "/" or "+")? | STATIC |
|
|
146
146
|
|
|
147
|
-
**Key principle:** Reason about what the component IS FOR. A Price component displays prices
|
|
147
|
+
**Key principle:** Reason about what the component IS FOR. A Price component displays prices - price amounts are inherently variable. A "Total Amount" label is inherently fixed - it describes the data, it IS not data. A currency code like "TRY" is variable - the same component shows USD, EUR, GBP in different contexts.
|
|
148
148
|
|
|
149
149
|
**Edge cases:**
|
|
150
150
|
- Currency codes/symbols (TRY, USD, €) → DYNAMIC: varies by market/context
|
|
@@ -154,8 +154,8 @@ Figma component properties capture variant axes, boolean toggles, text overrides
|
|
|
154
154
|
- Structural operators that visually separate data ("+", "/", "·") → STATIC
|
|
155
155
|
|
|
156
156
|
**For each DYNAMIC text, propose:**
|
|
157
|
-
- Swift property name (camelCase, descriptive of the semantic role
|
|
158
|
-
- Swift type: `String` (formatting is the caller's responsibility
|
|
157
|
+
- Swift property name (camelCase, descriptive of the semantic role - e.g., `currencyCode` not `tryText`)
|
|
158
|
+
- Swift type: `String` (formatting is the caller's responsibility - even for numeric data)
|
|
159
159
|
- Whether required or optional (based on whether the element's parent section is boolean-gated)
|
|
160
160
|
|
|
161
161
|
**Output:** Include classification in `04_patterns.md` (Layer Text Classification table) and carry DYNAMIC entries into GATE 2 as additional API properties.
|
|
@@ -169,11 +169,11 @@ When Layer Text Classification identifies a **currency code + numeric amount** p
|
|
|
169
169
|
**Detection:** Two adjacent DYNAMIC texts where one is a currency code (3-letter ISO 4217 or known symbol) and the other is a numeric amount. Also triggered when a nested `Price` component instance is detected.
|
|
170
170
|
|
|
171
171
|
**Rules:**
|
|
172
|
-
- Define a **nested `Price` struct** conforming to `PriceRepresentable`
|
|
173
|
-
- The amount parameter type MUST be `Double`, NOT `String`
|
|
174
|
-
- Do NOT flatten price fields into the parent Configuration
|
|
172
|
+
- Define a **nested `Price` struct** conforming to `PriceRepresentable` - include ONLY the properties this component needs (amount + currency at minimum)
|
|
173
|
+
- The amount parameter type MUST be `Double`, NOT `String` - formatting is handled by `toConfiguration()` → `CurrencyAmountFormatter` at render time
|
|
174
|
+
- Do NOT flatten price fields into the parent Configuration - keep them grouped in the nested `Price` type
|
|
175
175
|
- The view uses `Price(priceModel)` for standalone price display or `CurrencyTextRenderer` for inline attributed text
|
|
176
|
-
- Do NOT hardcode currency placement (left/right)
|
|
176
|
+
- Do NOT hardcode currency placement (left/right) - `CurrencyFormatProvider` determines this from the currency code
|
|
177
177
|
|
|
178
178
|
**Additional price properties to check for in the design:**
|
|
179
179
|
- Strikethrough/original price → `originalAmount: Double?`
|
|
@@ -182,11 +182,11 @@ When Layer Text Classification identifies a **currency code + numeric amount** p
|
|
|
182
182
|
- Green/red coloring with +/- prefix → `sign: PriceSign?`
|
|
183
183
|
|
|
184
184
|
**Architecture output:** When a price pattern is detected, the property coverage should list:
|
|
185
|
-
- `price: ComponentName.Price` (PRICE_PATTERN, IMPLEMENT)
|
|
185
|
+
- `price: ComponentName.Price` (PRICE_PATTERN, IMPLEMENT) - nested `PriceRepresentable` conformance
|
|
186
186
|
|
|
187
187
|
### 1.5.1b Inline Price in Attributed Text
|
|
188
188
|
|
|
189
|
-
When a **price pattern** (
|
|
189
|
+
When a **price pattern** (section1.5.1) appears **inside a text element** alongside static surrounding text (e.g., "TRY 10.000 dan başlayan fiyatlarla"), this is an **inline price attributed text pattern**.
|
|
190
190
|
|
|
191
191
|
**Detection:** A DYNAMIC price (currency + amount) adjacent to STATIC text within the same visual text block, where the price portion has different typography (bold, larger) than the surrounding text.
|
|
192
192
|
|
|
@@ -212,25 +212,25 @@ When a **price pattern** (§1.5.1) appears **inside a text element** alongside s
|
|
|
212
212
|
```
|
|
213
213
|
|
|
214
214
|
**Architecture output:** When an inline price attributed text pattern is detected, the property coverage should list:
|
|
215
|
-
- `price: ComponentName.Price` (PRICE_PATTERN, IMPLEMENT)
|
|
216
|
-
- Note in patterns output: "Inline price in attributed text
|
|
215
|
+
- `price: ComponentName.Price` (PRICE_PATTERN, IMPLEMENT) - nested `PriceRepresentable` conformance
|
|
216
|
+
- Note in patterns output: "Inline price in attributed text - use `price.attributedString(style:)` with `AttributedString.format()`"
|
|
217
217
|
|
|
218
|
-
**This pattern must be explicitly confirmed during analysis.** If a price appears near text, ask: is this a standalone `Price` view + separate `Text`, or a single attributed string combining both? Check the Figma layer structure
|
|
218
|
+
**This pattern must be explicitly confirmed during analysis.** If a price appears near text, ask: is this a standalone `Price` view + separate `Text`, or a single attributed string combining both? Check the Figma layer structure - if the price and surrounding text are in the same text layer with different font styles, it's inline attributed text.
|
|
219
219
|
|
|
220
220
|
### 1.5.1a Attributed Text Pattern (Multi-Font Text)
|
|
221
221
|
|
|
222
222
|
**Detection during Layer Text Classification:** When examining text elements in `design_context_response.json`, look for text where the generated code has multiple sibling `<span>` tags with different `font-family` or `font-weight` classes. Each distinct style run within a single text element indicates a multi-font attributed text pattern.
|
|
223
223
|
|
|
224
|
-
**Classify each style run independently** using the same DYNAMIC/STATIC rules from
|
|
224
|
+
**Classify each style run independently** using the same DYNAMIC/STATIC rules from section1.5 - a highlighted portion may be a dynamic prop (varies per instance) OR a static localization key (fixed but styled differently).
|
|
225
225
|
|
|
226
226
|
**Rules:**
|
|
227
227
|
- The surrounding text → localization format key with `%@` placeholders
|
|
228
228
|
- Each differently-styled portion → classify as DYNAMIC (`String` prop) or STATIC (its own localization key)
|
|
229
|
-
- Render using `AttributedString.format()` from `UIExtensions`
|
|
229
|
+
- Render using `AttributedString.format()` from `UIExtensions` - template gets base styling, each `%@` argument gets its own styling
|
|
230
230
|
|
|
231
231
|
### 1.5.3 Form Pattern Detection
|
|
232
232
|
|
|
233
|
-
When Sub-Component analysis identifies embedded instances of form-capable design-system components
|
|
233
|
+
When Sub-Component analysis identifies embedded instances of form-capable design-system components - **Selectbox, Checkbox, CheckboxButton, Radio, RadioButton, TextboxTextarea, DatepickerSchedule** - this is a **form pattern**.
|
|
234
234
|
|
|
235
235
|
**IMPORTANT:** When a form pattern is detected, read the `/figma-form-integration` skill instructions at `.instructions/figma/figma-form-integration/SKILL.md` for the full integration guide.
|
|
236
236
|
|
|
@@ -240,10 +240,10 @@ When Sub-Component analysis identifies embedded instances of form-capable design
|
|
|
240
240
|
- 2+ → **composite form**: nested `Section: FormSection` class declared in an extension on the component namespace, owned via Configuration.
|
|
241
241
|
|
|
242
242
|
**Rules:**
|
|
243
|
-
- Every form input MUST be modeled as a `*FormField` subclass
|
|
244
|
-
- The caller (scene view-model) constructs fields and rules. The component is headless
|
|
243
|
+
- Every form input MUST be modeled as a `*FormField` subclass - no `Binding<Value>`, no `@State` values, no ad-hoc `isChecked: Bool` / `selectedOption` properties.
|
|
244
|
+
- The caller (scene view-model) constructs fields and rules. The component is headless - it never instantiates fields and never calls `validate()`.
|
|
245
245
|
- Static copy (labels, placeholders, helper text, toggle captions) lives in Configuration; fields carry value+state+rules only.
|
|
246
|
-
- Non-form actions (e.g. "Sil", "Edit", "Detaylar") stay as paired closures on the View
|
|
246
|
+
- Non-form actions (e.g. "Sil", "Edit", "Detaylar") stay as paired closures on the View - they are NOT fields and NOT Configuration values.
|
|
247
247
|
|
|
248
248
|
**Figma → FormField mapping:**
|
|
249
249
|
|
|
@@ -282,7 +282,7 @@ Configuration then carries `public let section: ComponentName.Section` plus stat
|
|
|
282
282
|
|
|
283
283
|
Figma designs contain images that are either **static assets** (bundled in the app) or **dynamic content** (loaded remotely at runtime). Classify each image in the design context.
|
|
284
284
|
|
|
285
|
-
**Classification
|
|
285
|
+
**Classification - reason about what the image represents:**
|
|
286
286
|
|
|
287
287
|
| Signal | Classification |
|
|
288
288
|
|--------|---------------|
|
|
@@ -298,7 +298,7 @@ Figma designs contain images that are either **static assets** (bundled in the a
|
|
|
298
298
|
**For DYNAMIC images:**
|
|
299
299
|
- Swift type: `URL` or `String` (the remote image URL)
|
|
300
300
|
- The view MUST use the remote image component from `CoreUI` (Kingfisher-backed) for async loading, caching, and placeholder handling
|
|
301
|
-
- Do NOT download the Figma placeholder image
|
|
301
|
+
- Do NOT download the Figma placeholder image - it's sample data, not a real asset
|
|
302
302
|
- Add a `placeholder` parameter or use a default placeholder view for loading state
|
|
303
303
|
|
|
304
304
|
**For STATIC images:**
|
|
@@ -308,7 +308,7 @@ Figma designs contain images that are either **static assets** (bundled in the a
|
|
|
308
308
|
- Reference via the generated `Image.` accessor
|
|
309
309
|
|
|
310
310
|
**Architecture output:** When a dynamic image is detected, the property coverage should list:
|
|
311
|
-
- `{imageName}URL: URL` (LAYER_IMAGE, IMPLEMENT)
|
|
311
|
+
- `{imageName}URL: URL` (LAYER_IMAGE, IMPLEMENT) - or `String` if the URL comes as a string from the API
|
|
312
312
|
|
|
313
313
|
### 1.6 Write `{artifactPath}/pass3/04_patterns.md`
|
|
314
314
|
|
|
@@ -355,9 +355,9 @@ OR: None detected.
|
|
|
355
355
|
|
|
356
356
|
| Layer Text | Semantic Role | Classification | Swift Property | Notes |
|
|
357
357
|
|------------|--------------|----------------|----------------|-------|
|
|
358
|
-
| "{text}" | {role} | DYNAMIC / STATIC | `{propName}: String` /
|
|
358
|
+
| "{text}" | {role} | DYNAMIC / STATIC | `{propName}: String` / - | {rationale} |
|
|
359
359
|
|
|
360
|
-
OR: All layer text already captured as Figma TEXT properties or localization keys
|
|
360
|
+
OR: All layer text already captured as Figma TEXT properties or localization keys - no additional dynamic parameters.
|
|
361
361
|
|
|
362
362
|
## Image Asset Classification
|
|
363
363
|
|
|
@@ -374,14 +374,14 @@ OR: No images detected in component.
|
|
|
374
374
|
|
|
375
375
|
**This is the core analysis gate.** Using pattern data from GATE 1, determine the complete Swift API shape.
|
|
376
376
|
|
|
377
|
-
INPUT: GATE 1 output (in memory
|
|
377
|
+
INPUT: GATE 1 output (in memory - just computed)
|
|
378
378
|
INPUT: `{artifactPath}/pass1/design_context_response.json`
|
|
379
379
|
INPUT: `{artifactPath}/pass1/component_properties.json`
|
|
380
380
|
INPUT: `{artifactPath}/pass3/04c_variant_config_analysis.json` (from Phase 3H)
|
|
381
381
|
|
|
382
382
|
### 2.0 Consume Phase 3H Classifications
|
|
383
383
|
|
|
384
|
-
Read `04c_variant_config_analysis.json`. This contains typed recommendations for every boolean property. **Do NOT re-classify**
|
|
384
|
+
Read `04c_variant_config_analysis.json`. This contains typed recommendations for every boolean property. **Do NOT re-classify** - use 3H output directly.
|
|
385
385
|
|
|
386
386
|
For entries with `"deferredTo": "3D"` (UNCLASSIFIED booleans): analyze using `design_context_response.json` HTML structure to determine if the boolean is a section toggle (controls multiple children → `Bool`), decorative leaf (`Bool`), or behavioral bool (`Bool`).
|
|
387
387
|
|
|
@@ -439,19 +439,19 @@ public let sections: [CardSection]
|
|
|
439
439
|
|
|
440
440
|
### 2.2 Sub-Component Integration
|
|
441
441
|
|
|
442
|
-
**This section consumes Phase 3H output.** Do NOT re-detect sub-components
|
|
442
|
+
**This section consumes Phase 3H output.** Do NOT re-detect sub-components - 3H has already classified them.
|
|
443
443
|
|
|
444
444
|
Phase 3H provides `dynamicProps` and `staticProps` for each sub-component entry. Only dynamic props are exposed to the caller. Static props are hardcoded internally by the parent View (Phase 4B).
|
|
445
445
|
|
|
446
446
|
**For each `KNOWN_SUBCOMPONENT` entry:**
|
|
447
447
|
|
|
448
|
-
Use the `swiftType` from 3H directly
|
|
448
|
+
Use the `swiftType` from 3H directly - it's already resolved based on dynamic prop count:
|
|
449
449
|
|
|
450
450
|
| Dynamic Props | Result |
|
|
451
451
|
|---|---|
|
|
452
452
|
| 0 | Boolean presence only |
|
|
453
453
|
| 1 | Unwrapped to prop type (e.g., `String?`) |
|
|
454
|
-
| 2+ | Mini config struct (e.g., `PriceConfiguration?`)
|
|
454
|
+
| 2+ | Mini config struct (e.g., `PriceConfiguration?`) - define it in the parent's Configuration |
|
|
455
455
|
|
|
456
456
|
```swift
|
|
457
457
|
// 1 dynamic prop (title only): unwrapped to String?
|
|
@@ -463,7 +463,7 @@ public struct PriceConfiguration: Sendable {
|
|
|
463
463
|
public let currency: String
|
|
464
464
|
public let wholeAmount: String
|
|
465
465
|
public let decimalAmount: String
|
|
466
|
-
// textStyle is STATIC
|
|
466
|
+
// textStyle is STATIC - not exposed, hardcoded in View body
|
|
467
467
|
}
|
|
468
468
|
public let priceConfiguration: PriceConfiguration? // nil = hidden
|
|
469
469
|
```
|
|
@@ -492,7 +492,7 @@ Same prop filtering as KNOWN_SUBCOMPONENT, plus a paired closure. The data goes
|
|
|
492
492
|
- Use the `swiftType` from 3H (`Image?` or `Optional3<Image>`)
|
|
493
493
|
- Use the `swiftName` from 3H for naming
|
|
494
494
|
|
|
495
|
-
**For `UNCLASSIFIED` entries resolved in
|
|
495
|
+
**For `UNCLASSIFIED` entries resolved in section2.0:**
|
|
496
496
|
- Integrate the resolved type (`Bool` for section toggles, etc.)
|
|
497
497
|
|
|
498
498
|
### 2.3 Property Classification
|
|
@@ -502,18 +502,18 @@ For each property identified in GATE 1, classify into its final Swift form:
|
|
|
502
502
|
| Classification | When | Swift Pattern |
|
|
503
503
|
|----------------|------|---------------|
|
|
504
504
|
| Required parameter | Always visible, component meaningless without it | `init(title: String)` |
|
|
505
|
-
| Optional parameter | Sometimes hidden/absent | `subtitle: String? = nil`
|
|
506
|
-
| Merged optional | Boolean toggles ONE content element | `text: String?`
|
|
505
|
+
| Optional parameter | Sometimes hidden/absent | `subtitle: String? = nil` - chain modifier |
|
|
506
|
+
| Merged optional | Boolean toggles ONE content element | `text: String?` - boolean dropped, nil = hidden |
|
|
507
507
|
| Enum | Variant with named values | `enum State { case active, inactive }` |
|
|
508
508
|
| Bool toggle | Binary behavior OR toggles MULTIPLE elements | `isInteractive: Bool = true` |
|
|
509
509
|
| Array | Repeated homogeneous children | `items: [ItemRow]` |
|
|
510
510
|
| Enum array | Repeated heterogeneous children | `sections: [CardSection]` |
|
|
511
|
-
| Mini config (display) | Boolean-gated sub-component, 2+ dynamic props, no action | `priceConfiguration: PriceConfiguration?`
|
|
511
|
+
| Mini config (display) | Boolean-gated sub-component, 2+ dynamic props, no action | `priceConfiguration: PriceConfiguration?` - chain modifier |
|
|
512
512
|
| Mini config (paired) | Boolean-gated sub-component, 2+ dynamic props + action | Paired modifier: `.actionLink(config) { action }` |
|
|
513
513
|
| Paired single prop | Boolean-gated sub-component, 1 dynamic prop + action | Paired modifier: `.secondaryButton(title) { action }` |
|
|
514
514
|
| Paired closure-only | Boolean-gated sub-component, 0 dynamic props + action | Paired modifier: `.dismissButton { action }` |
|
|
515
515
|
| Closure | Interactive action (always present, not boolean-gated) | `onTap: (() -> Void)?` |
|
|
516
|
-
| Layer text (dynamic) | Sample/placeholder data in Figma layers (from
|
|
516
|
+
| Layer text (dynamic) | Sample/placeholder data in Figma layers (from section1.5 classification) | `{propName}: String` |
|
|
517
517
|
|
|
518
518
|
### 2.3.1 Coexistent Property Rule
|
|
519
519
|
|
|
@@ -528,7 +528,7 @@ When two properties are semantically meaningless without each other, they MUST b
|
|
|
528
528
|
|
|
529
529
|
**Resolution:** Coexistent pairs are expressed as **paired modifiers** on the View. The data prop goes in Configuration (for nil = hidden), the closure stays as a View dependency. The modifier sets both atomically.
|
|
530
530
|
|
|
531
|
-
This is NOT limited to sub-components
|
|
531
|
+
This is NOT limited to sub-components - any two semantically bound props follow this rule.
|
|
532
532
|
|
|
533
533
|
### 2.4 Configuration Hierarchy
|
|
534
534
|
|
|
@@ -660,11 +660,11 @@ OR: No sub-components detected. All properties are flat.
|
|
|
660
660
|
|
|
661
661
|
| Property | Classification | Swift Type | Default |
|
|
662
662
|
|----------|---------------|------------|---------|
|
|
663
|
-
| title | Required | `String` |
|
|
663
|
+
| title | Required | `String` | - |
|
|
664
664
|
| subtitle | Optional | `String?` | `nil` |
|
|
665
|
-
| state | Enum | `State` |
|
|
665
|
+
| state | Enum | `State` | - |
|
|
666
666
|
| showIcon | Bool toggle | `Bool` | `true` |
|
|
667
|
-
| passengers | Array | `[PassengerRow]` |
|
|
667
|
+
| passengers | Array | `[PassengerRow]` | - |
|
|
668
668
|
| onTap | Closure | `(() -> Void)?` | `nil` |
|
|
669
669
|
|
|
670
670
|
## Enum Definitions
|
|
@@ -725,7 +725,7 @@ Alongside the markdown, emit a structured JSON so Phase 3G (Property Coverage) c
|
|
|
725
725
|
"type": "{VARIANT|BOOLEAN|TEXT|INSTANCE_SWAP|LAYER_TEXT}",
|
|
726
726
|
"status": "{IMPLEMENT|SKIP}",
|
|
727
727
|
"swiftType": "{enum State | String? | Image? | Bool | ...}",
|
|
728
|
-
"reason": "{only for SKIP
|
|
728
|
+
"reason": "{only for SKIP - mandatory, e.g. 'Boolean merged into icon: Image? per Boolean Visibility Merge Rule'}"
|
|
729
729
|
}
|
|
730
730
|
],
|
|
731
731
|
"enums": [
|
|
@@ -741,7 +741,7 @@ Alongside the markdown, emit a structured JSON so Phase 3G (Property Coverage) c
|
|
|
741
741
|
|
|
742
742
|
**Rules:**
|
|
743
743
|
- Every key from `componentPropertyDefinitions` in `component_properties.json` MUST appear in `properties`
|
|
744
|
-
- DYNAMIC entries from Layer Text Classification (
|
|
744
|
+
- DYNAMIC entries from Layer Text Classification (section1.5) MUST also appear in `properties` with `"type": "LAYER_TEXT"` and `"figmaKey": null`
|
|
745
745
|
- IMPLEMENT properties MUST have `swiftType`
|
|
746
746
|
- SKIP properties MUST have `reason`
|
|
747
747
|
- `propertyCount` = count of IMPLEMENT properties (used by GATE 3 complexity check)
|
|
@@ -838,14 +838,14 @@ Before marking complete, verify:
|
|
|
838
838
|
[ ] component_properties.json fully analyzed for variant types
|
|
839
839
|
[ ] All repeating patterns identified and modeled as arrays
|
|
840
840
|
[ ] All variant properties classified (enum, bool, optional, array)
|
|
841
|
-
[ ] Layer text classification performed
|
|
842
|
-
[ ] Image asset classification performed
|
|
843
|
-
[ ] List inference performed
|
|
844
|
-
[ ] Sub-component detection performed
|
|
845
|
-
[ ] Configuration hierarchy decided
|
|
841
|
+
[ ] Layer text classification performed - all sample/placeholder data identified as DYNAMIC API parameters
|
|
842
|
+
[ ] Image asset classification performed - stock photos as DYNAMIC (remote URL), icons/logos as STATIC (bundled)
|
|
843
|
+
[ ] List inference performed - homogeneous vs heterogeneous determined
|
|
844
|
+
[ ] Sub-component detection performed - configurations created where needed
|
|
845
|
+
[ ] Configuration hierarchy decided - flat vs grouped
|
|
846
846
|
[ ] All enums defined with correct case names
|
|
847
847
|
[ ] Final API design is complete and compilable
|
|
848
|
-
[ ] NO protocols used
|
|
848
|
+
[ ] NO protocols used - all types are concrete structs/enums
|
|
849
849
|
[ ] All configurations are Sendable
|
|
850
850
|
[ ] Complexity evaluated using FINAL property count (not raw Figma count)
|
|
851
851
|
[ ] 04_patterns.md written to pass3/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# PHASE 3E
|
|
1
|
+
# PHASE 3E - Asset Inventory
|
|
2
2
|
|
|
3
3
|
Inventory downloaded assets, cross-reference with existing token registry.
|
|
4
4
|
Determines which assets are new vs already exist in the project.
|
|
5
5
|
|
|
6
|
-
CONDITIONAL
|
|
6
|
+
CONDITIONAL - skip if no design_context_assets.txt exists or is empty.
|
|
7
7
|
PARALLEL WITH: Phase 3A, 3B, 3C, 3D, 3F (all read from pass1/ independently)
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -72,9 +72,9 @@ cd {repos.common.path} && .build/debug/FigmaRegistryUtility ui-token-lookup --na
|
|
|
72
72
|
|
|
73
73
|
| Result | Action |
|
|
74
74
|
|--------|--------|
|
|
75
|
-
| Found | Mark status: "Existing"
|
|
76
|
-
| Not found | Mark status: "New"
|
|
77
|
-
| Tool error | Mark status: "Unknown"
|
|
75
|
+
| Found | Mark status: "Existing" - already in project, no action needed |
|
|
76
|
+
| Not found | Mark status: "New" - needs to be added to asset catalog |
|
|
77
|
+
| Tool error | Mark status: "Unknown" - log warning, continue |
|
|
78
78
|
|
|
79
79
|
Also check if the asset exists in the UIComponents asset catalog directly:
|
|
80
80
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# PHASE 3F
|
|
1
|
+
# PHASE 3F - Utility Integration Summary
|
|
2
2
|
|
|
3
3
|
Consolidate Phase 2 utility artifacts and map utilities to design elements.
|
|
4
4
|
Cross-references testing identifiers, localization keys, accessibility keys, and analytics events
|
|
5
5
|
with the actual design elements from Phase 1.
|
|
6
6
|
|
|
7
|
-
required
|
|
7
|
+
required - always execute this phase.
|
|
8
8
|
PARALLEL WITH: Phase 3A, 3B, 3C, 3D, 3E (all read from pass1/pass2 independently)
|
|
9
9
|
|
|
10
10
|
---
|
|
@@ -100,10 +100,10 @@ Source: pass2/utility_identifiers.md, pass2/utility_localization.md, pass2/utili
|
|
|
100
100
|
|
|
101
101
|
| Element | Testing ID | Localization Key | Accessibility | Analytics |
|
|
102
102
|
|---------|------------|------------------|---------------|-----------|
|
|
103
|
-
| Title text | `.title` | `ComponentName.Title` |
|
|
103
|
+
| Title text | `.title` | `ComponentName.Title` | - | - |
|
|
104
104
|
| Action button | `.actionButton` | `ComponentName.Action` | `.actionButton` | `UIInteractionButtonTapped` |
|
|
105
|
-
| Card container | `.card` |
|
|
106
|
-
| Badge | `.badge` |
|
|
105
|
+
| Card container | `.card` | - | - | `UIInteractionCardTapped` |
|
|
106
|
+
| Badge | `.badge` | - | runtime label | - |
|
|
107
107
|
|
|
108
108
|
## Testing Identifiers
|
|
109
109
|
|
|
@@ -126,7 +126,7 @@ OR: No localization keys (dynamic text only).
|
|
|
126
126
|
|-----|---------|-------|
|
|
127
127
|
| ComponentName.ActionButton | VoiceOver label for action | `.accessibilityLabel(...)` |
|
|
128
128
|
|
|
129
|
-
OR: No dedicated keys
|
|
129
|
+
OR: No dedicated keys - using runtime accessibility patterns.
|
|
130
130
|
|
|
131
131
|
## Analytics Events
|
|
132
132
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# PHASE 3G
|
|
1
|
+
# PHASE 3G - Property Coverage Verification
|
|
2
2
|
|
|
3
3
|
Verify that every Figma component property gathered in Phase 1 has been explicitly addressed by Phase 3D's architecture design. Prevents silent property drops.
|
|
4
4
|
|
|
5
|
-
SEQUENTIAL
|
|
5
|
+
SEQUENTIAL - runs AFTER all parallel sub-phases (3A-3F) complete.
|
|
6
6
|
DEPENDS ON: Phase 3D output (`pass3/04b_component_architecture.md`)
|
|
7
7
|
|
|
8
8
|
---
|
|
@@ -41,11 +41,11 @@ USER_ACTION_REQUIRED: Run Phase 3D first.
|
|
|
41
41
|
Extract the complete list of Figma component properties:
|
|
42
42
|
|
|
43
43
|
For each property, record:
|
|
44
|
-
- `name`
|
|
45
|
-
- `type`
|
|
46
|
-
- `figmaKey`
|
|
47
|
-
- `values`
|
|
48
|
-
- `default`
|
|
44
|
+
- `name` - display name (e.g., "Size", "Loyalty Type", "Icon")
|
|
45
|
+
- `type` - VARIANT, BOOLEAN, TEXT, INSTANCE_SWAP
|
|
46
|
+
- `figmaKey` - exact key from componentPropertyDefinitions (e.g., "Icon#1634:1")
|
|
47
|
+
- `values` - possible values (for VARIANT/BOOLEAN)
|
|
48
|
+
- `default` - default value
|
|
49
49
|
|
|
50
50
|
**CRITICAL: Every property in componentPropertyDefinitions MUST appear in this list. No exceptions.**
|
|
51
51
|
|
|
@@ -84,8 +84,8 @@ For each property, assign exactly one status:
|
|
|
84
84
|
| `DEFER` | Deferred to future iteration | **Mandatory reason** |
|
|
85
85
|
|
|
86
86
|
**SKIP reasons (valid examples):**
|
|
87
|
-
- "Fixed to single value per design
|
|
88
|
-
- "Internal Figma layout property
|
|
87
|
+
- "Fixed to single value per design - not configurable by developers"
|
|
88
|
+
- "Internal Figma layout property - no user-facing impact"
|
|
89
89
|
- "Controlled by parent component via slot composition"
|
|
90
90
|
- "Boolean merged into optional per Boolean Visibility Merge Rule"
|
|
91
91
|
|
|
@@ -118,7 +118,7 @@ Write: {artifactPath}/pass3/00_property_coverage.json
|
|
|
118
118
|
"figmaKey": "{exact key}",
|
|
119
119
|
"status": "{IMPLEMENT|SKIP|DEFER}",
|
|
120
120
|
"swiftType": "{enum TypeName | Bool | String | Image? | ...}",
|
|
121
|
-
"reason": "{only for SKIP/DEFER
|
|
121
|
+
"reason": "{only for SKIP/DEFER - mandatory}"
|
|
122
122
|
}
|
|
123
123
|
],
|
|
124
124
|
"unmapped": []
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# PHASE 3H
|
|
1
|
+
# PHASE 3H - Variant Property Configuration Analysis
|
|
2
2
|
|
|
3
3
|
Analyze how Figma variant/state properties (booleans, instance swaps) map to Swift configuration types.
|
|
4
4
|
Detects when Figma's boolean-only exposure is insufficient for a sub-component's actual configuration needs.
|
|
5
5
|
|
|
6
|
-
required
|
|
6
|
+
required - always execute this phase.
|
|
7
7
|
PARALLEL WITH: Phase 3A, 3B, 3C, 3E, 3F (all read from pass1/ independently)
|
|
8
8
|
MUST COMPLETE BEFORE: Phase 3D (which consumes this output)
|
|
9
9
|
|
|
@@ -41,11 +41,11 @@ Parse `code_connect_map_response.json` and classify every entry:
|
|
|
41
41
|
|---|---|
|
|
42
42
|
| `label` = our platform (SwiftUI) AND no `componentName` AND `snippet` matches `Image.xxx` | `ICON` |
|
|
43
43
|
| `label` = our platform AND `componentName` present AND `source` URL present | `SUBCOMPONENT` |
|
|
44
|
-
| `label` ≠ our platform (e.g., Compose, React) | `CROSS_PLATFORM`
|
|
44
|
+
| `label` ≠ our platform (e.g., Compose, React) | `CROSS_PLATFORM` - ignore |
|
|
45
45
|
|
|
46
46
|
Build a lookup: `{ nodeId → { classification, componentName?, source?, snippet } }`
|
|
47
47
|
|
|
48
|
-
If code_connect_map is empty or missing → set `codeConnectAvailable = false`. Continue
|
|
48
|
+
If code_connect_map is empty or missing → set `codeConnectAvailable = false`. Continue - all booleans will be `UNCLASSIFIED` and 3D handles them.
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
@@ -71,7 +71,7 @@ Look up the instance swap's nodes in the code_connect_map index (GATE 1):
|
|
|
71
71
|
| Found as `SUBCOMPONENT` (`componentName` + `source`) | `KNOWN_SUBCOMPONENT` | Swift type resolved in GATE 3 |
|
|
72
72
|
| Not found in code_connect_map | `UNMAPPED_SUBCOMPONENT` | → **HALT** |
|
|
73
73
|
|
|
74
|
-
**Node matching**: The instance swap's `nodeId` from `nestedComponents` is the definition ID. Variant-specific instance IDs appear in code_connect_map. Match by searching for code_connect_map entries whose `data-name` (from surrounding context) corresponds to the instance swap name. If ambiguous, check ALL code_connect_map ICON/SUBCOMPONENT entries
|
|
74
|
+
**Node matching**: The instance swap's `nodeId` from `nestedComponents` is the definition ID. Variant-specific instance IDs appear in code_connect_map. Match by searching for code_connect_map entries whose `data-name` (from surrounding context) corresponds to the instance swap name. If ambiguous, check ALL code_connect_map ICON/SUBCOMPONENT entries - group by snippet pattern and correlate with the instance swap slot.
|
|
75
75
|
|
|
76
76
|
### Step 3: Resolve unpaired Boolean
|
|
77
77
|
|
|
@@ -113,7 +113,7 @@ If action pairing detected → reclassify as `PAIRED_ACTION_SUBCOMPONENT`.
|
|
|
113
113
|
|
|
114
114
|
This classification tells downstream phases that:
|
|
115
115
|
1. The sub-component needs both data (config props) and a closure (action)
|
|
116
|
-
2. These must be paired at the call site
|
|
116
|
+
2. These must be paired at the call site - one without the other is nonsensical
|
|
117
117
|
3. A paired modifier pattern is required (not separate config prop + closure)
|
|
118
118
|
|
|
119
119
|
---
|
|
@@ -145,7 +145,7 @@ Analyze whether the icon has a **computed default** that varies by component sta
|
|
|
145
145
|
- Icon is generic (e.g., `caretDown`, `chevronRight`) with no variant correlation
|
|
146
146
|
- Icon appears in ALL variants identically with no semantic relationship to variant values
|
|
147
147
|
|
|
148
|
-
**When uncertain:** Prefer `Optional3<Image>`
|
|
148
|
+
**When uncertain:** Prefer `Optional3<Image>` - it's strictly more expressive than `Image?` and never wrong. The consumer can always use `.default` instead of being forced to know the internal default.
|
|
149
149
|
|
|
150
150
|
### KNOWN_SUBCOMPONENT
|
|
151
151
|
|
|
@@ -154,11 +154,11 @@ Analyze whether the icon has a **computed default** that varies by component sta
|
|
|
154
154
|
```
|
|
155
155
|
Glob: Sources/UIComponents/**/{ComponentName}Configuration.swift
|
|
156
156
|
```
|
|
157
|
-
3. **Filter sub-component props
|
|
157
|
+
3. **Filter sub-component props - static vs dynamic:**
|
|
158
158
|
|
|
159
159
|
Read the sub-component's Configuration (or init for SIMPLE). For each property, determine:
|
|
160
160
|
- **Dynamic**: Content props that the caller controls (title, text, label, description, icon when context-dependent). These carry meaning unique to each usage.
|
|
161
|
-
- **Static**: Styling/layout props that the parent component dictates (style, size, colorTheme, iconPosition). These are internal design decisions
|
|
161
|
+
- **Static**: Styling/layout props that the parent component dictates (style, size, colorTheme, iconPosition). These are internal design decisions - same for every instance of this sub-component within the parent.
|
|
162
162
|
|
|
163
163
|
**Rule:** If a prop's value is fixed by the parent's design (e.g., secondary button always uses `style: .ghost, size: .default`) → static. If a prop carries caller-specific content → dynamic.
|
|
164
164
|
|
|
@@ -171,7 +171,7 @@ Analyze whether the icon has a **computed default** that varies by component sta
|
|
|
171
171
|
| 2+ | Mini config struct (e.g., `PriceConfiguration?`) | Multiple dynamic props grouped, nil = hidden |
|
|
172
172
|
| Component doesn't exist | **HALT** | Sub-component must be implemented first |
|
|
173
173
|
|
|
174
|
-
**Mini config structs** contain ONLY the dynamic props
|
|
174
|
+
**Mini config structs** contain ONLY the dynamic props - static props are NOT exposed:
|
|
175
175
|
```swift
|
|
176
176
|
// TurkishButton has 6 props, but in BottomActions context only title is dynamic:
|
|
177
177
|
// → secondaryButtonTitle: String? (not TurkishButtonConfiguration?)
|
|
@@ -181,7 +181,7 @@ Analyze whether the icon has a **computed default** that varies by component sta
|
|
|
181
181
|
// struct PriceConfiguration { label, currency, wholeAmount, decimalAmount }
|
|
182
182
|
```
|
|
183
183
|
|
|
184
|
-
Record the static props and their fixed values in the artifact
|
|
184
|
+
Record the static props and their fixed values in the artifact - Phase 4B needs them to hardcode internally.
|
|
185
185
|
|
|
186
186
|
### PAIRED_ACTION_SUBCOMPONENT
|
|
187
187
|
|
|
@@ -205,7 +205,7 @@ func dismissButton(action: @escaping () -> Void) -> Self
|
|
|
205
205
|
|
|
206
206
|
### CONTENT_LEAF
|
|
207
207
|
|
|
208
|
-
Swift type: `String?`
|
|
208
|
+
Swift type: `String?` - `nil` = hidden. The boolean is dropped (merged into the optional).
|
|
209
209
|
|
|
210
210
|
### REPEATING_PATTERN_MEMBER / REPEATING_PATTERN_CONTAINER
|
|
211
211
|
|
|
@@ -255,8 +255,8 @@ Swift type: deferred to Phase 3D. Output `"swiftType": null, "deferredTo": "3D"`
|
|
|
255
255
|
"swiftType": "Optional3<Image> | String? | PriceConfiguration? | Bool | null",
|
|
256
256
|
"swiftName": "{suggested Swift property name}",
|
|
257
257
|
"dynamicProps": ["{list of dynamic prop names and types, for KNOWN_SUBCOMPONENT / PAIRED_ACTION_SUBCOMPONENT}"],
|
|
258
|
-
"staticProps": ["{list of static prop names, values, and types
|
|
259
|
-
"pairedClosure": "(() -> Void)? | null
|
|
258
|
+
"staticProps": ["{list of static prop names, values, and types - parent hardcodes these}"],
|
|
259
|
+
"pairedClosure": "(() -> Void)? | null - only for PAIRED_ACTION_SUBCOMPONENT",
|
|
260
260
|
"rationale": "{why this classification and type were chosen, including static/dynamic reasoning}",
|
|
261
261
|
"halt": false,
|
|
262
262
|
"deferredTo": null
|
|
@@ -294,8 +294,8 @@ This output is consumed by:
|
|
|
294
294
|
|
|
295
295
|
| Phase | Artifact Read | Usage |
|
|
296
296
|
|---|---|---|
|
|
297
|
-
| **3D** (GATE 2: Architecture) | `04c_variant_config_analysis.json` | Uses classifications for
|
|
298
|
-
| **4A** (Configuration) | `04c_variant_config_analysis.json` | Uses `swiftType` for property declarations. Only `dynamicProps` go in config
|
|
297
|
+
| **3D** (GATE 2: Architecture) | `04c_variant_config_analysis.json` | Uses classifications for section2.2 Sub-Component Detection and section2.3 Property Classification. Does NOT re-classify - consumes directly. Resolves UNCLASSIFIED entries using design_context. |
|
|
298
|
+
| **4A** (Configuration) | `04c_variant_config_analysis.json` | Uses `swiftType` for property declarations. Only `dynamicProps` go in config - `staticProps` are omitted. Creates mini config structs for 2+ dynamic props. |
|
|
299
299
|
| **4B** (View) | `04c_variant_config_analysis.json` | For KNOWN_SUBCOMPONENT: instantiates sub-component internally with `staticProps` hardcoded. For PAIRED_ACTION_SUBCOMPONENT: generates paired modifier binding data+closure. For ICON with Optional3: switches on `.default`/`.none`/`.some`. |
|
|
300
300
|
| **6** (Code Connect) | `04c_variant_config_analysis.json` | For KNOWN_SUBCOMPONENT/PAIRED_ACTION_SUBCOMPONENT: `@FigmaBoolean` maps to `nil`/default-config. For ICON with Optional3: `@FigmaBoolean` maps to `.default`/`.none`. No ternary expressions. |
|
|
301
301
|
|