@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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
### 1.2 CLI Installation
|
|
12
12
|
Two options:
|
|
13
13
|
- Global: `npm install --global @figma/code-connect@latest` then `figma connect <cmd>`
|
|
14
|
-
- No-install (npx): `npx @figma/code-connect@latest connect <cmd>`
|
|
14
|
+
- No-install (npx): `npx @figma/code-connect@latest connect <cmd>` - recommended for CI/CD and machines without global install
|
|
15
15
|
- Local dependency: if `@figma/code-connect` is a package dependency, just use `npx figma connect <cmd>` from the package root
|
|
16
16
|
|
|
17
17
|
Current installed version: 1.3.12 (latest available: 1.4.1)
|
|
@@ -20,7 +20,7 @@ Current installed version: 1.3.12 (latest available: 1.4.1)
|
|
|
20
20
|
```swift
|
|
21
21
|
.package(url: "https://github.com/figma/code-connect", from: "1.2.0")
|
|
22
22
|
```
|
|
23
|
-
Product: "Figma" library
|
|
23
|
+
Product: "Figma" library - provides property wrappers only. CLI is npm-based, NOT from SPM.
|
|
24
24
|
|
|
25
25
|
### 1.4 Configuration (figma.config.json)
|
|
26
26
|
```json
|
|
@@ -67,7 +67,7 @@ Component/
|
|
|
67
67
|
└── FIGMA.md
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
### 2.3 Template
|
|
70
|
+
### 2.3 Template - Static (No Figma Properties)
|
|
71
71
|
```swift
|
|
72
72
|
import Figma
|
|
73
73
|
import SwiftUI
|
|
@@ -82,7 +82,7 @@ struct ComponentNameFigmaConnect: FigmaConnect {
|
|
|
82
82
|
}
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
### 2.4 Template
|
|
85
|
+
### 2.4 Template - Mapped Properties
|
|
86
86
|
```swift
|
|
87
87
|
import Figma
|
|
88
88
|
import SwiftUI
|
|
@@ -112,7 +112,7 @@ struct ComponentNameFigmaConnect: FigmaConnect {
|
|
|
112
112
|
}
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
### 2.5 Template
|
|
115
|
+
### 2.5 Template - Multi-Variant (string enum)
|
|
116
116
|
```swift
|
|
117
117
|
struct PrimaryButtonFigmaConnect: FigmaConnect {
|
|
118
118
|
let component = Button.self
|
|
@@ -129,7 +129,7 @@ struct SecondaryButtonFigmaConnect: FigmaConnect {
|
|
|
129
129
|
}
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
### 2.6 Template
|
|
132
|
+
### 2.6 Template - Multi-Variant (boolean gate)
|
|
133
133
|
Use a computed `var variant` property when matching on a boolean toggle (e.g., "Label" on/off):
|
|
134
134
|
```swift
|
|
135
135
|
// Default struct (Label = true, the default)
|
|
@@ -150,8 +150,8 @@ struct LabelBadgeIconOnlyFigmaConnect: FigmaConnect {
|
|
|
150
150
|
```
|
|
151
151
|
Figma shows the most specific matching struct. When "Label" is toggled off, the icon-only struct renders.
|
|
152
152
|
|
|
153
|
-
### 2.7 Template
|
|
154
|
-
For simple icon nodes without component properties
|
|
153
|
+
### 2.7 Template - Icon/Symbol (no component)
|
|
154
|
+
For simple icon nodes without component properties - no `let component`, no property wrappers:
|
|
155
155
|
```swift
|
|
156
156
|
struct PlusCircleFillIconConnect: FigmaConnect {
|
|
157
157
|
let figmaNodeUrl = "https://figma.com/design/FILE_KEY/?node-id=X-Y"
|
|
@@ -182,25 +182,25 @@ var leftIcon: Image? = nil
|
|
|
182
182
|
```
|
|
183
183
|
When `hideDefault: true` and value is `nil` (default), the `.leftIcon(...)` line is omitted from the snippet entirely.
|
|
184
184
|
|
|
185
|
-
**IMPORTANT
|
|
185
|
+
**IMPORTANT - hideDefault default value trap:** When using `hideDefault: true` with a mapping, the **default value** determines which mapped result gets hidden. Set the default to the value you want HIDDEN (typically `nil` for optionals):
|
|
186
186
|
|
|
187
187
|
```swift
|
|
188
|
-
// CORRECT
|
|
188
|
+
// CORRECT - default=nil: Text=true shows .initials("BT"), Text=false hides it
|
|
189
189
|
@FigmaBoolean("Text", mapping: [true: "BT", false: nil], hideDefault: true)
|
|
190
190
|
var initials: String? = nil
|
|
191
191
|
|
|
192
|
-
// WRONG
|
|
192
|
+
// WRONG - default="BT": Text=true HIDES .initials("BT"), Text=false shows .initials(nil)
|
|
193
193
|
@FigmaBoolean("Text", mapping: [true: "BT", false: nil], hideDefault: true)
|
|
194
194
|
var initials: String? = "BT" // ← "BT" matches default, so it's hidden!
|
|
195
195
|
```
|
|
196
196
|
|
|
197
|
-
### @FigmaEnum
|
|
197
|
+
### @FigmaEnum - prefer implicit shorthand
|
|
198
198
|
Use `.success` instead of `LabelBadgeConfiguration.LabelBadgeState.success` in mappings. The parser captures the expression as-is via `trimmedDescription`, so shorter values produce cleaner snippets:
|
|
199
199
|
```swift
|
|
200
|
-
// GOOD
|
|
200
|
+
// GOOD - clean snippet output
|
|
201
201
|
@FigmaEnum("State", mapping: ["Success": .success, "Warning": .warning])
|
|
202
202
|
|
|
203
|
-
// BAD
|
|
203
|
+
// BAD - verbose snippet output
|
|
204
204
|
@FigmaEnum("State", mapping: ["Success": LabelBadgeConfiguration.LabelBadgeState.success])
|
|
205
205
|
```
|
|
206
206
|
|
|
@@ -223,9 +223,9 @@ When a designer swaps the icon instance in Figma, Dev Mode renders that specific
|
|
|
223
223
|
- Useful when the instance swap is always visible and you want the swapped component's Code Connect to render inline.
|
|
224
224
|
|
|
225
225
|
### figmaApply
|
|
226
|
-
Conditionally applies view modifiers based on a boolean condition. In Dev Mode, Figma only shows the branch that matches the current property value
|
|
226
|
+
Conditionally applies view modifiers based on a boolean condition. In Dev Mode, Figma only shows the branch that matches the current property value - keeping snippets clean.
|
|
227
227
|
|
|
228
|
-
**Basic
|
|
228
|
+
**Basic - show modifier only when true:**
|
|
229
229
|
```swift
|
|
230
230
|
@FigmaBoolean("Disabled", hideDefault: true)
|
|
231
231
|
var disabled: Bool = false
|
|
@@ -237,7 +237,7 @@ var body: some View {
|
|
|
237
237
|
```
|
|
238
238
|
When `Disabled = false` (default + hideDefault), nothing renders. When `Disabled = true`, snippet shows `.opacity(0.5)`.
|
|
239
239
|
|
|
240
|
-
**With elseApply
|
|
240
|
+
**With elseApply - different modifiers per branch:**
|
|
241
241
|
```swift
|
|
242
242
|
@FigmaEnum("Type", mapping: ["Primary": true, "Secondary": false])
|
|
243
243
|
var isPrimary: Bool = false
|
|
@@ -251,7 +251,7 @@ var body: some View {
|
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
```
|
|
254
|
-
`elseApply` is optional
|
|
254
|
+
`elseApply` is optional - omit it to show nothing when condition is false.
|
|
255
255
|
|
|
256
256
|
**With @FigmaBoolean + chain modifier (project pattern):**
|
|
257
257
|
```swift
|
|
@@ -262,33 +262,33 @@ var showMember: Bool = false
|
|
|
262
262
|
var memberText: String = "CLASSIC"
|
|
263
263
|
|
|
264
264
|
var body: some View {
|
|
265
|
-
|
|
265
|
+
TicketPassengerInfo(passengerName: passengerName, colorVariant: colorVariant)
|
|
266
266
|
.figmaApply(showMember) { $0.membershipInfo(.init(memberId: "TK 12345678", memberClass: memberText)) }
|
|
267
267
|
}
|
|
268
268
|
```
|
|
269
269
|
Combines `hideDefault` boolean with a chain modifier that passes a nested configuration. When `M&S Member = false`, the `.membershipInfo(...)` line is hidden entirely in Dev Mode.
|
|
270
270
|
|
|
271
|
-
**Multiple figmaApply
|
|
271
|
+
**Multiple figmaApply - TYPE ERASURE WARNING:**
|
|
272
272
|
|
|
273
|
-
`figmaApply` returns `some View`, NOT `Self`. This means chaining multiple `figmaApply` calls causes the second call's closure `$0` to be `some View` instead of the concrete view type
|
|
273
|
+
`figmaApply` returns `some View`, NOT `Self`. This means chaining multiple `figmaApply` calls causes the second call's closure `$0` to be `some View` instead of the concrete view type - resulting in a compile error when calling component-specific modifiers inside the closure.
|
|
274
274
|
|
|
275
275
|
```swift
|
|
276
|
-
// ❌ COMPILE ERROR
|
|
276
|
+
// ❌ COMPILE ERROR - second $0 is `some View`, not `MyComponent`
|
|
277
277
|
var body: some View {
|
|
278
278
|
MyComponent(title: title)
|
|
279
279
|
.figmaApply(showIcon) { $0.leftIcon(icon) } // returns some View
|
|
280
|
-
.figmaApply(showBadge) { $0.badge(badgeCount) } // $0 is some View
|
|
280
|
+
.figmaApply(showBadge) { $0.badge(badgeCount) } // $0 is some View - .badge() not found
|
|
281
281
|
}
|
|
282
282
|
```
|
|
283
283
|
|
|
284
284
|
**The parser supports multiple chained `figmaApply` calls** (it uses a multi-pass while loop to replace each one independently). The limitation is purely a Swift type-checker issue at compile time.
|
|
285
285
|
|
|
286
|
-
**Workaround
|
|
286
|
+
**Workaround - direct modifiers first, single figmaApply last:**
|
|
287
287
|
|
|
288
288
|
Apply concrete-type modifiers (chain modifiers from Configuration) directly, then place `figmaApply` as the LAST call in the chain since it erases the type:
|
|
289
289
|
|
|
290
290
|
```swift
|
|
291
|
-
// ✅ CORRECT
|
|
291
|
+
// ✅ CORRECT - direct modifier preserves type, figmaApply goes last
|
|
292
292
|
@FigmaBoolean("Show Badge", hideDefault: true)
|
|
293
293
|
var showBadge: Bool = false
|
|
294
294
|
|
|
@@ -298,11 +298,11 @@ var isDisabled: Bool = false
|
|
|
298
298
|
var body: some View {
|
|
299
299
|
MyComponent(title: title)
|
|
300
300
|
.showBadge(showBadge) // direct modifier, type preserved
|
|
301
|
-
.figmaApply(isDisabled) { $0.opacity(0.5) } // figmaApply last, returns some View
|
|
301
|
+
.figmaApply(isDisabled) { $0.opacity(0.5) } // figmaApply last, returns some View - OK
|
|
302
302
|
}
|
|
303
303
|
```
|
|
304
304
|
|
|
305
|
-
**Multiple booleans
|
|
305
|
+
**Multiple booleans - use direct modifiers + single figmaApply:**
|
|
306
306
|
|
|
307
307
|
When a component has multiple boolean properties, prefer direct modifiers for Bool-to-Bool mappings and reserve `figmaApply` for conditional complex expressions (optional Strings, nested configs):
|
|
308
308
|
|
|
@@ -314,10 +314,10 @@ var whithBaby: Bool = false
|
|
|
314
314
|
var showBoardingDate: Bool = false
|
|
315
315
|
|
|
316
316
|
var body: some View {
|
|
317
|
-
|
|
317
|
+
TicketQrInfoGroup(
|
|
318
318
|
terminalNumber: "1", gateNumber: "G23",
|
|
319
319
|
seatNumber: "24 A", boardingTime: "23:30",
|
|
320
|
-
qrCodeData: "
|
|
320
|
+
qrCodeData: "TICKET-QR-DATA"
|
|
321
321
|
)
|
|
322
322
|
.whithBaby(whithBaby) // Bool → Bool, direct modifier
|
|
323
323
|
.figmaApply(showBoardingDate) { $0.boardingDate("13 Eyl") } // Bool → optional String, figmaApply last
|
|
@@ -326,7 +326,7 @@ var body: some View {
|
|
|
326
326
|
|
|
327
327
|
**If you MUST use multiple figmaApply (e.g., both need elseApply or complex expressions):**
|
|
328
328
|
|
|
329
|
-
The parser handles it fine
|
|
329
|
+
The parser handles it fine - it's only the Swift compiler that objects. Use the comment-out-after-publish pattern:
|
|
330
330
|
|
|
331
331
|
1. Write the `.figma.swift` with multiple `figmaApply` calls
|
|
332
332
|
2. Comment out the file content temporarily for `figma connect publish` (parser reads the file directly, not via Xcode build)
|
|
@@ -334,7 +334,7 @@ The parser handles it fine — it's only the Swift compiler that objects. Use th
|
|
|
334
334
|
4. After publish, comment out the body or the entire struct to prevent Xcode build failures:
|
|
335
335
|
|
|
336
336
|
```swift
|
|
337
|
-
// Published to Figma Dev Mode
|
|
337
|
+
// Published to Figma Dev Mode - commented to avoid type erasure build error
|
|
338
338
|
// struct MyComponentFigmaConnect: FigmaConnect {
|
|
339
339
|
// ...
|
|
340
340
|
// var body: some View {
|
|
@@ -346,10 +346,10 @@ The parser handles it fine — it's only the Swift compiler that objects. Use th
|
|
|
346
346
|
```
|
|
347
347
|
|
|
348
348
|
**Preference order for multiple boolean properties:**
|
|
349
|
-
1. **Direct modifier** (`.whithBaby(whithBaby)`)
|
|
350
|
-
2. **@FigmaBoolean with mapping** (`mapping: [true: "value", false: nil]`)
|
|
351
|
-
3. **Single figmaApply last**
|
|
352
|
-
4. **Multiple figmaApply + comment after publish**
|
|
349
|
+
1. **Direct modifier** (`.whithBaby(whithBaby)`) - cleanest, no type erasure
|
|
350
|
+
2. **@FigmaBoolean with mapping** (`mapping: [true: "value", false: nil]`) - for Bool → optional type
|
|
351
|
+
3. **Single figmaApply last** - for complex conditional expressions
|
|
352
|
+
4. **Multiple figmaApply + comment after publish** - last resort when multiple complex conditionals needed
|
|
353
353
|
|
|
354
354
|
**When to use figmaApply vs direct parameter:**
|
|
355
355
|
- **Direct parameter**: Property maps 1:1 to init/modifier argument (e.g., `@FigmaEnum → colorStyle:`)
|
|
@@ -371,12 +371,12 @@ var body: some View {
|
|
|
371
371
|
```
|
|
372
372
|
Use when the component uses slot-based composition in Figma (e.g., a list with repeating row children).
|
|
373
373
|
|
|
374
|
-
**Wildcard matching**
|
|
374
|
+
**Wildcard matching** - match any or partial layer names:
|
|
375
375
|
```swift
|
|
376
376
|
@FigmaChildren(layers: ["*"]) // all children
|
|
377
377
|
var allItems: AnyView?
|
|
378
378
|
|
|
379
|
-
@FigmaChildren(layers: ["Icon*"]) // partial match
|
|
379
|
+
@FigmaChildren(layers: ["Icon*"]) // partial match - "IconLeft", "IconRight", etc.
|
|
380
380
|
var icons: AnyView?
|
|
381
381
|
|
|
382
382
|
@FigmaChildren(layers: ["Tab 1", "Tab 2", "Tab 3"]) // multiple specific layers
|
|
@@ -384,11 +384,11 @@ var tabs: AnyView?
|
|
|
384
384
|
```
|
|
385
385
|
Layer name matching is **case sensitive**. The nested instance must have its own separate Code Connect file.
|
|
386
386
|
|
|
387
|
-
**Slots**
|
|
387
|
+
**Slots** - composable sub-areas within component instances where designers can place freeform content. Code Connect does NOT traverse slot children to generate code - it only renders a reference to the slot itself. Use `@FigmaChildren` to capture slot content.
|
|
388
388
|
|
|
389
389
|
## 3.5 ADVANCED PATTERNS
|
|
390
390
|
|
|
391
|
-
### Variant restrictions
|
|
391
|
+
### Variant restrictions - multiple structs per component
|
|
392
392
|
When a single Figma component maps to different Swift types based on variant, create multiple `FigmaConnect` structs pointing to the same node. Figma shows the most specific match:
|
|
393
393
|
```swift
|
|
394
394
|
// Matches when Type = "Primary"
|
|
@@ -409,7 +409,7 @@ struct DangerButtonConnect: FigmaConnect {
|
|
|
409
409
|
```
|
|
410
410
|
More specific variant dictionaries take priority. Combine multiple variant properties for fine-grained matching.
|
|
411
411
|
|
|
412
|
-
### Computed variant
|
|
412
|
+
### Computed variant - boolean gate for separate structs
|
|
413
413
|
Use a computed `var variant` property for dynamic matching (e.g., boolean toggles):
|
|
414
414
|
```swift
|
|
415
415
|
struct IconOnlyBadgeConnect: FigmaConnect {
|
|
@@ -420,14 +420,14 @@ struct IconOnlyBadgeConnect: FigmaConnect {
|
|
|
420
420
|
}
|
|
421
421
|
```
|
|
422
422
|
|
|
423
|
-
### @FigmaBoolean with custom mapping
|
|
423
|
+
### @FigmaBoolean with custom mapping - non-Bool types
|
|
424
424
|
Map boolean toggles to any Swift type, not just Bool. Useful for optional views:
|
|
425
425
|
```swift
|
|
426
|
-
// Boolean controls icon presence
|
|
426
|
+
// Boolean controls icon presence - maps to optional Image
|
|
427
427
|
@FigmaBoolean("Has Icon", mapping: [true: Image(systemName: "star.fill"), false: nil], hideDefault: true)
|
|
428
428
|
var icon: Image? = nil
|
|
429
429
|
|
|
430
|
-
// Boolean controls text presence
|
|
430
|
+
// Boolean controls text presence - maps to optional String
|
|
431
431
|
@FigmaBoolean("Show Label", mapping: [true: "Default Label", false: nil], hideDefault: true)
|
|
432
432
|
var label: String? = nil
|
|
433
433
|
|
|
@@ -439,7 +439,7 @@ var body: some View {
|
|
|
439
439
|
```
|
|
440
440
|
When `Has Icon = false` (default + hideDefault), `.icon(...)` is omitted from snippet entirely.
|
|
441
441
|
|
|
442
|
-
### @FigmaEnum
|
|
442
|
+
### @FigmaEnum - map to Bool for figmaApply
|
|
443
443
|
Convert an enum variant to a boolean condition for use with `figmaApply`:
|
|
444
444
|
```swift
|
|
445
445
|
@FigmaEnum("State", mapping: ["Disabled": true, "Default": false, "Hover": false, "Active": false])
|
|
@@ -501,11 +501,11 @@ The CLI parser uses SwiftSyntax AST analysis. Key behaviors that affect what dev
|
|
|
501
501
|
|
|
502
502
|
| Element | Behavior |
|
|
503
503
|
|---------|----------|
|
|
504
|
-
| `//` comments in body | **Stripped**
|
|
505
|
-
| `import` statements beyond Figma/SwiftUI | **Stripped**
|
|
506
|
-
| View modifiers (`.renderingMode(.template)`) | **Preserved**
|
|
507
|
-
| Property wrapper expressions | **Preserved**
|
|
508
|
-
| `let component = X.self` | **Optional**
|
|
504
|
+
| `//` comments in body | **Stripped** - never appear in snippet |
|
|
505
|
+
| `import` statements beyond Figma/SwiftUI | **Stripped** - `imports: []` always empty |
|
|
506
|
+
| View modifiers (`.renderingMode(.template)`) | **Preserved** - captured via `trimmedDescription` |
|
|
507
|
+
| Property wrapper expressions | **Preserved** - any expression works (e.g., `Image(systemName: "x")`) |
|
|
508
|
+
| `let component = X.self` | **Optional** - only needed for component-level Code Connect |
|
|
509
509
|
|
|
510
510
|
Do NOT rely on comments or extra imports to communicate with developers in snippets. Use view modifiers or static values in body instead.
|
|
511
511
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# FIGMA/CSS TO SWIFTUI EFFECTS CONVERSION
|
|
2
2
|
|
|
3
|
-
When translating Figma design properties (which use CSS conventions) to SwiftUI, several values require conversion. Figma's generated code (React+Tailwind) uses CSS units and conventions
|
|
3
|
+
When translating Figma design properties (which use CSS conventions) to SwiftUI, several values require conversion. Figma's generated code (React+Tailwind) uses CSS units and conventions - these do NOT map 1:1 to SwiftUI.
|
|
4
4
|
|
|
5
5
|
Source: [Matching drop shadows across CSS, Android, iOS, Figma, and Sketch](https://bjango.com/articles/matchingdropshadows/)
|
|
6
6
|
|
|
@@ -26,10 +26,10 @@ SwiftUI radius = Figma blur / 2
|
|
|
26
26
|
**When using design tokens:**
|
|
27
27
|
```swift
|
|
28
28
|
// Token .Effects.effect8 = 8 (Figma blur value)
|
|
29
|
-
// WRONG
|
|
29
|
+
// WRONG - passes Figma blur directly
|
|
30
30
|
.shadow(radius: .Effects.effect8)
|
|
31
31
|
|
|
32
|
-
// CORRECT
|
|
32
|
+
// CORRECT - divide by 2 for SwiftUI
|
|
33
33
|
.shadow(radius: .Effects.effect8 / 2)
|
|
34
34
|
```
|
|
35
35
|
|
|
@@ -47,7 +47,7 @@ ZStack {
|
|
|
47
47
|
}
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
For zero spread (the common case), no workaround needed
|
|
50
|
+
For zero spread (the common case), no workaround needed - just omit.
|
|
51
51
|
|
|
52
52
|
### Inner Shadow
|
|
53
53
|
CSS `box-shadow: inset ...` → SwiftUI has no built-in inner shadow.
|
|
@@ -71,7 +71,7 @@ CSS `box-shadow: inset ...` → SwiftUI has no built-in inner shadow.
|
|
|
71
71
|
SwiftUI blur radius = CSS blur radius / 2
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
Same conversion factor as shadows
|
|
74
|
+
Same conversion factor as shadows - iOS uses double the standard deviation.
|
|
75
75
|
|
|
76
76
|
```swift
|
|
77
77
|
// Figma: backdrop-filter: blur(20px)
|
|
@@ -89,7 +89,7 @@ Same conversion:
|
|
|
89
89
|
|
|
90
90
|
## 3. OPACITY
|
|
91
91
|
|
|
92
|
-
Opacity maps 1:1
|
|
92
|
+
Opacity maps 1:1 - no conversion needed.
|
|
93
93
|
|
|
94
94
|
```swift
|
|
95
95
|
// Figma: opacity: 0.5
|
|
@@ -101,7 +101,7 @@ For color opacity (e.g., `rgba(0,0,0,0.5)`):
|
|
|
101
101
|
Color.black.opacity(0.5)
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
When using design tokens like `Color.Opacity.Black.opacity50`, verify the token already encodes the correct alpha
|
|
104
|
+
When using design tokens like `Color.Opacity.Black.opacity50`, verify the token already encodes the correct alpha - don't double-apply.
|
|
105
105
|
|
|
106
106
|
---
|
|
107
107
|
|
|
@@ -176,7 +176,7 @@ TimelineView(.periodic(from: .now, by: interval)) { context in
|
|
|
176
176
|
.animation(.easeInOut(duration: transitionDuration), value: state)
|
|
177
177
|
}
|
|
178
178
|
```
|
|
179
|
-
Derive state from the timeline date
|
|
179
|
+
Derive state from the timeline date - do NOT mutate `@State` inside the TimelineView closure.
|
|
180
180
|
|
|
181
181
|
---
|
|
182
182
|
|
|
@@ -22,7 +22,7 @@ SUMMARY: {one-line description of what was accomplished}
|
|
|
22
22
|
STATUS: HALT
|
|
23
23
|
PHASE: phase-{N}
|
|
24
24
|
GATE: {gate-id that failed}
|
|
25
|
-
REASON: {exact reason
|
|
25
|
+
REASON: {exact reason - copy from instruction if applicable}
|
|
26
26
|
COMPLETED_GATES: [gates that passed before halt]
|
|
27
27
|
ARTIFACTS_CREATED: [files written before halt, or "none"]
|
|
28
28
|
USER_ACTION_REQUIRED: {what the user must fix before retry}
|
|
@@ -52,6 +52,6 @@ CONTEXT: {relevant data the user needs to make the decision}
|
|
|
52
52
|
2. STOP after outputting the block. Do not call any more tools.
|
|
53
53
|
3. Every gate you pass must appear in GATES_PASSED or COMPLETED_GATES.
|
|
54
54
|
4. Every file you created must appear in ARTIFACTS_CREATED.
|
|
55
|
-
5. Never output a STATUS block mid-execution
|
|
55
|
+
5. Never output a STATUS block mid-execution - only at the very end.
|
|
56
56
|
6. If you encounter multiple failures, report the FIRST one.
|
|
57
57
|
7. If a HALT condition says to check for USER_DECISION in the prompt first, do so before halting.
|
|
@@ -23,7 +23,7 @@ public struct ComponentConfiguration {
|
|
|
23
23
|
// GENERATED: .title(_), .title(localized:), .count(_), .isEnabled(_)
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
### @GenerateConfiguredInit (LEGACY
|
|
26
|
+
### @GenerateConfiguredInit (LEGACY - being replaced)
|
|
27
27
|
|
|
28
28
|
Applied to View structs. Generates:
|
|
29
29
|
- Default init with `@autoclosure` configuration
|
|
@@ -41,14 +41,14 @@ public struct Component: View {
|
|
|
41
41
|
// GENERATED: init(configuration:), init(configure:), configured(_:)
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
### @GenerateViewConfiguration (NEW
|
|
44
|
+
### @GenerateViewConfiguration (NEW - preferred)
|
|
45
45
|
|
|
46
46
|
Applied to View structs. Generates ONLY:
|
|
47
|
-
- `configured()` method
|
|
47
|
+
- `configured()` method - post-init configuration transform
|
|
48
48
|
|
|
49
49
|
Does NOT generate:
|
|
50
|
-
- **Inits**
|
|
51
|
-
- **View-level forwarding modifiers**
|
|
50
|
+
- **Inits** - AI writes custom inits tailored to each component's needs
|
|
51
|
+
- **View-level forwarding modifiers** - Swift macros cannot introspect types they're not attached to, so the macro cannot read Configuration struct properties. Phase 4E (AI) writes the +Modifiers file.
|
|
52
52
|
|
|
53
53
|
```swift
|
|
54
54
|
@GenerateViewConfiguration
|
|
@@ -56,7 +56,7 @@ public struct Component: View {
|
|
|
56
56
|
private let configuration: ComponentConfiguration
|
|
57
57
|
private let action: () -> Void
|
|
58
58
|
|
|
59
|
-
// AI-written custom init
|
|
59
|
+
// AI-written custom init - required props + closures
|
|
60
60
|
public init(title: String, action: @escaping () -> Void) {
|
|
61
61
|
self.configuration = .init(title: title)
|
|
62
62
|
self.action = action
|
|
@@ -68,7 +68,7 @@ public struct Component: View {
|
|
|
68
68
|
// NOT GENERATED: init (AI writes), forwarding modifiers (Phase 4E writes +Modifiers.swift)
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
**Why:** `@GenerateConfiguredInit` treats config as an opaque blob
|
|
71
|
+
**Why:** `@GenerateConfiguredInit` treats config as an opaque blob - it can't distinguish required vs optional props, can't pair data+closure, and generates a configure closure init that is an anti-pattern. `@GenerateViewConfiguration` gives AI full control over init shape while the macro handles only the mechanical `configured()` boilerplate.
|
|
72
72
|
|
|
73
73
|
**`configured()` is internal API.** It is used ONLY inside +Modifiers forwarding methods and paired modifiers. Consumers use the named forwarding modifiers (`.state()`, `.title()`) and paired modifiers (`.secondaryButton(title) { action }`). Never expose `configured()` in Code Connect, previews, or usage examples.
|
|
74
74
|
|
|
@@ -146,7 +146,7 @@ public struct Component: View {
|
|
|
146
146
|
public var body: some View { ... }
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
// Usage
|
|
149
|
+
// Usage - required in init, optional via chain modifiers
|
|
150
150
|
Component(title: "Hello") { doSomething() }
|
|
151
151
|
.subtitle("World")
|
|
152
152
|
.style(.primary)
|
|
@@ -183,7 +183,7 @@ public struct BottomActions: View {
|
|
|
183
183
|
self.primaryAction = primaryAction
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
// Paired modifier
|
|
186
|
+
// Paired modifier - binds title + action atomically
|
|
187
187
|
public func secondaryButton(_ title: String, action: @escaping () -> Void) -> Self {
|
|
188
188
|
var copy = self
|
|
189
189
|
copy.configuration.secondaryButtonTitle = title
|
|
@@ -13,9 +13,9 @@ Missing tokens from `pass3/02_token_mapping.md` fall into two categories:
|
|
|
13
13
|
| Category | What It Means | Example |
|
|
14
14
|
|----------|--------------|---------|
|
|
15
15
|
| **Typography alias** | Figma uses a new style name for an existing Swift token | `Caption/Regular/sm` → existing `.xSmallRegular` |
|
|
16
|
-
| **Truly missing** | No Swift token exists
|
|
16
|
+
| **Truly missing** | No Swift token exists - must be added to source | `Black White/25` color not in `Mode.json` |
|
|
17
17
|
|
|
18
|
-
**How to tell:** Extract font size + weight from the design context for the missing style. Look up the existing registry
|
|
18
|
+
**How to tell:** Extract font size + weight from the design context for the missing style. Look up the existing registry - if a token with the same size + weight exists, it's an alias. If not, it's truly missing.
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
@@ -56,7 +56,7 @@ When a missing typography token maps to an existing Swift token (same font size
|
|
|
56
56
|
}
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
**Match by font properties**
|
|
59
|
+
**Match by font properties** - extract from design_context_response.json:
|
|
60
60
|
|
|
61
61
|
| Font Size | Weight 400 (Regular) | Weight 600 (Bold) |
|
|
62
62
|
|-----------|---------------------|-------------------|
|
|
@@ -70,7 +70,7 @@ When a missing typography token maps to an existing Swift token (same font size
|
|
|
70
70
|
| 20 | `.h5Regular` | `.h5` |
|
|
71
71
|
| 24 | `.h3Regular` | `.h3` |
|
|
72
72
|
| 28 | `.h2Regular` | `.h2` |
|
|
73
|
-
| 32 |
|
|
73
|
+
| 32 | - | `.h1` |
|
|
74
74
|
|
|
75
75
|
**Verify after adding:**
|
|
76
76
|
```bash
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Orchestrator Discipline
|
|
1
|
+
# Orchestrator Discipline - Mandatory Rules for Pipeline Execution
|
|
2
2
|
|
|
3
3
|
These rules apply to every orchestrator skill (`/figma-cli-iterate`, `/figma-cli-lean-iterate`, `/figma-iterate`, `/figma-to-swiftui`, `/performance-swiftui`, `/performance-tour`) and to any agent acting as an orchestrator that dispatches leaf-phase subagents.
|
|
4
4
|
|
|
@@ -10,15 +10,15 @@ Violations of these rules have caused repeated implementation failures. Each rul
|
|
|
10
10
|
|
|
11
11
|
The dispatch prompt template specifies which variables to pass to subagents: component name, node ID, artifact path, file key, component location. Pass ONLY these context variables.
|
|
12
12
|
|
|
13
|
-
Never add sections like "IMPORTANT: form integration is NOT needed" or "IMPORTANT: no UI patterns apply." Those are gate outcomes
|
|
13
|
+
Never add sections like "IMPORTANT: form integration is NOT needed" or "IMPORTANT: no UI patterns apply." Those are gate outcomes - the subagent's gates decide them, not the orchestrator. Injecting conclusions pre-decides gate outcomes and defeats the purpose of having gates.
|
|
14
14
|
|
|
15
15
|
If the user provides implementation guidance (e.g., "check /figma-form-integration"), pass it as-is: "The user directed: check /figma-form-integration." Do not evaluate and dismiss it.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## Rule 2: Every Dispatch Table Row Executes
|
|
19
|
+
## Rule 2: Every Dispatch Table Row Executes - Verify Row-by-Row Before Proceeding
|
|
20
20
|
|
|
21
|
-
The dispatch table lists phases with their instruction files, models, and wave groupings. Every row executes. No phase is optional unless the table explicitly marks it (e.g., "COMPLEX only" for 4A/4E
|
|
21
|
+
The dispatch table lists phases with their instruction files, models, and wave groupings. Every row executes. No phase is optional unless the table explicitly marks it (e.g., "COMPLEX only" for 4A/4E - skip only if SIMPLE).
|
|
22
22
|
|
|
23
23
|
After completing Wave 1, check the table for Wave 2. After Wave 2, check for remaining phases. Do not move to the next step until every phase in the current step has been dispatched and returned.
|
|
24
24
|
|
|
@@ -39,7 +39,7 @@ If any row is unchecked, you are not done with that step.
|
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
42
|
-
## Rule 3: Subagent Fails
|
|
42
|
+
## Rule 3: Subagent Fails - Retry, Never Take Over
|
|
43
43
|
|
|
44
44
|
When a subagent times out, errors, or returns HALT:
|
|
45
45
|
|
|
@@ -47,7 +47,7 @@ When a subagent times out, errors, or returns HALT:
|
|
|
47
47
|
2. **HALT**: Read the HALT reason. Fix the blocking issue. Retry the subagent.
|
|
48
48
|
3. **Error**: Diagnose and retry.
|
|
49
49
|
|
|
50
|
-
Never take over and write implementation code without reading the phase instruction file the subagent would have read. The subagent reads `phase-4b-view.md` gate-by-gate
|
|
50
|
+
Never take over and write implementation code without reading the phase instruction file the subagent would have read. The subagent reads `phase-4b-view.md` gate-by-gate - if you skip that file and write code from assumptions, you will produce wrong output.
|
|
51
51
|
|
|
52
52
|
If you must write code directly (after 2+ retries), read the phase instruction file yourself first and follow its gates.
|
|
53
53
|
|
|
@@ -55,7 +55,7 @@ If you must write code directly (after 2+ retries), read the phase instruction f
|
|
|
55
55
|
|
|
56
56
|
## Rule 4: Skills Are Complementary, Not Dismissable
|
|
57
57
|
|
|
58
|
-
`/figma-form-integration`, `/figma-ui-patterns`, `/figma-price-integration`, `/coreui-forms`
|
|
58
|
+
`/figma-form-integration`, `/figma-ui-patterns`, `/figma-price-integration`, `/coreui-forms` - these skills feed INTO phases. They augment Phase 3D, Phase 4A, Phase 4B with domain-specific patterns.
|
|
59
59
|
|
|
60
60
|
When the user says "check /figma-form-integration":
|
|
61
61
|
- That is a directive to integrate, not a suggestion to evaluate.
|
|
@@ -73,9 +73,9 @@ If `{artifactPath}/pass0/specs.md` exists, or if the user provides acceptance cr
|
|
|
73
73
|
|
|
74
74
|
1. Read the specs BEFORE dispatching Phase 4+ subagents.
|
|
75
75
|
2. Extract concrete requirements.
|
|
76
|
-
3. Inject them as CRITICAL SPEC GATES in the subagent prompt
|
|
76
|
+
3. Inject them as CRITICAL SPEC GATES in the subagent prompt - per the orchestrator SKILL.md instructions.
|
|
77
77
|
|
|
78
|
-
Do not skip this step. Do not assume specs are empty without checking. The orchestrator SKILL.md has an explicit "Spec Injection" section
|
|
78
|
+
Do not skip this step. Do not assume specs are empty without checking. The orchestrator SKILL.md has an explicit "Spec Injection" section - follow it.
|
|
79
79
|
|
|
80
80
|
---
|
|
81
81
|
|
|
@@ -87,4 +87,4 @@ If for any reason you write implementation code directly (instead of through a s
|
|
|
87
87
|
2. Follow its gates in order.
|
|
88
88
|
3. Apply every check and validation the file specifies.
|
|
89
89
|
|
|
90
|
-
Writing code from "I've seen similar components" or "this is a common SwiftUI pattern" without reading the phase file produces code that doesn't follow project conventions
|
|
90
|
+
Writing code from "I've seen similar components" or "this is a common SwiftUI pattern" without reading the phase file produces code that doesn't follow project conventions - wrong init patterns, missing modifiers, hand-drawn shapes instead of real components.
|
|
@@ -48,9 +48,9 @@ python3 scripts/remote-mcp-fetch.py \
|
|
|
48
48
|
|
|
49
49
|
The script resolves the OAuth token in this order:
|
|
50
50
|
|
|
51
|
-
1. **`--mcp-token` CLI arg**
|
|
52
|
-
2. **Keychain `FIGMA_MCP_TOKEN`**
|
|
53
|
-
3. **Keychain `Claude Code-credentials`**
|
|
51
|
+
1. **`--mcp-token` CLI arg** - explicit token passed at invocation
|
|
52
|
+
2. **Keychain `FIGMA_MCP_TOKEN`** - dedicated entry stored by `/figma-setup` (CHECK 3b)
|
|
53
|
+
3. **Keychain `Claude Code-credentials`** - extracts `figma-remote` OAuth token via regex
|
|
54
54
|
|
|
55
55
|
Fallback #2 is fast (direct keychain lookup). Fallback #3 works but parses a large JSON blob.
|
|
56
56
|
Run `/figma-setup` to pre-store the token for fast access.
|
|
@@ -62,7 +62,7 @@ Run `/figma-setup` to pre-store the token for fast access.
|
|
|
62
62
|
- **Type:** OAuth access token (NOT a personal access token)
|
|
63
63
|
- **Prefix:** `figu_` (vs `figd_` for PATs)
|
|
64
64
|
- **Source:** Claude Code's MCP OAuth flow for `figma-remote` server
|
|
65
|
-
- **PATs do NOT work** with remote MCP
|
|
65
|
+
- **PATs do NOT work** with remote MCP - always returns 401
|
|
66
66
|
|
|
67
67
|
---
|
|
68
68
|
|
|
@@ -150,4 +150,4 @@ python3 scripts/remote-mcp-fetch.py \
|
|
|
150
150
|
| Requires Figma Desktop | Yes | No |
|
|
151
151
|
| Works in subagents/CI | Yes (HTTP) | Yes (HTTP) |
|
|
152
152
|
| Code Connect output | Returns ALL platforms | Filters by target platform |
|
|
153
|
-
| Rate limits | Daily cap (varies) | Per plan (see tools.md
|
|
153
|
+
| Rate limits | Daily cap (varies) | Per plan (see tools.md section1.7) |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# FIGMA REST API
|
|
1
|
+
# FIGMA REST API - SCRIPT USAGE REFERENCE
|
|
2
2
|
|
|
3
3
|
How the Phase 1 script (`scripts/phase1-gather.py`) uses the Figma REST API for data that MCP doesn't efficiently provide.
|
|
4
4
|
|
|
@@ -26,7 +26,7 @@ token = subprocess.check_output(
|
|
|
26
26
|
|
|
27
27
|
## Endpoints Used by Phase 1 Script
|
|
28
28
|
|
|
29
|
-
### 1. Node Data
|
|
29
|
+
### 1. Node Data - Component Properties
|
|
30
30
|
|
|
31
31
|
```
|
|
32
32
|
GET https://api.figma.com/v1/files/{fileKey}/nodes?ids={nodeId}
|
|
@@ -38,7 +38,7 @@ Returns full node JSON including `componentPropertyDefinitions` for the componen
|
|
|
38
38
|
|
|
39
39
|
---
|
|
40
40
|
|
|
41
|
-
### 2. Screenshot Export
|
|
41
|
+
### 2. Screenshot Export - Single Node
|
|
42
42
|
|
|
43
43
|
```
|
|
44
44
|
GET https://api.figma.com/v1/images/{fileKey}?ids={nodeId}&format=png&scale=2
|
|
@@ -46,11 +46,11 @@ GET https://api.figma.com/v1/images/{fileKey}?ids={nodeId}&format=png&scale=2
|
|
|
46
46
|
|
|
47
47
|
Returns JSON with `images` map: `{ "nodeId": "https://...s3.amazonaws.com/..." }`. The script downloads the URL to save as `screenshot.png`.
|
|
48
48
|
|
|
49
|
-
**Why REST not MCP:** MCP `get_screenshot` returns base64 inline (works but larger payload). REST returns a URL
|
|
49
|
+
**Why REST not MCP:** MCP `get_screenshot` returns base64 inline (works but larger payload). REST returns a URL - better for scripts that save to disk.
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
### 3. Batch Screenshot Export
|
|
53
|
+
### 3. Batch Screenshot Export - Variants
|
|
54
54
|
|
|
55
55
|
```
|
|
56
56
|
GET https://api.figma.com/v1/images/{fileKey}?ids={id1},{id2},{id3},...&format=png&scale=2
|
|
@@ -104,17 +104,17 @@ for node_id, url in data["images"].items():
|
|
|
104
104
|
|
|
105
105
|
---
|
|
106
106
|
|
|
107
|
-
## REST vs MCP
|
|
107
|
+
## REST vs MCP - When to Use What
|
|
108
108
|
|
|
109
109
|
| Data | Use REST | Use MCP | Reason |
|
|
110
110
|
|------|----------|---------|--------|
|
|
111
|
-
| Component properties/variants | yes |
|
|
111
|
+
| Component properties/variants | yes | - | MCP doesn't expose raw property defs |
|
|
112
112
|
| Screenshot (single) | ok | ok | Both work; MCP is simpler for inline use |
|
|
113
|
-
| Screenshots (batch) | yes |
|
|
114
|
-
| Design context (code) |
|
|
115
|
-
| Metadata (XML hierarchy) |
|
|
113
|
+
| Screenshots (batch) | yes | - | One REST call vs N MCP calls |
|
|
114
|
+
| Design context (code) | - | yes | MCP generates reference code |
|
|
115
|
+
| Metadata (XML hierarchy) | - | yes | MCP returns structured XML |
|
|
116
116
|
| Variable definitions | fallback | primary | MCP preferred; REST 403 on non-Enterprise |
|
|
117
|
-
| Code Connect mappings |
|
|
117
|
+
| Code Connect mappings | - | yes | MCP-only feature |
|
|
118
118
|
|
|
119
119
|
---
|
|
120
120
|
|