@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
|
@@ -4,7 +4,7 @@ Generates Component Implementation Status pages for the GitHub Wiki.
|
|
|
4
4
|
|
|
5
5
|
Source of truth: component-catalog.json (from FigmaRegistryUtility catalog).
|
|
6
6
|
|
|
7
|
-
IMPORTANT: No [[wiki links]]
|
|
7
|
+
IMPORTANT: No [[wiki links]] - GitHub resolves each one server-side,
|
|
8
8
|
causing timeout on pages with 100+ links. Use plain text + code backticks.
|
|
9
9
|
|
|
10
10
|
Splits output into 3 pages to stay under GitHub's rendering limit:
|
|
@@ -77,7 +77,7 @@ def generate_all(catalog_path, wiki_dir):
|
|
|
77
77
|
page_rows = []
|
|
78
78
|
|
|
79
79
|
detail_lines = [
|
|
80
|
-
f"# {label}
|
|
80
|
+
f"# {label} - Implementation Status",
|
|
81
81
|
"",
|
|
82
82
|
"[Back to summary](ComponentImplementationStatus)",
|
|
83
83
|
"",
|
|
@@ -116,7 +116,7 @@ def generate_all(catalog_path, wiki_dir):
|
|
|
116
116
|
detail_lines.append(f"*+ {len(ready)} ready*")
|
|
117
117
|
detail_lines.append("")
|
|
118
118
|
else:
|
|
119
|
-
detail_lines.append(f"**{page_name}**
|
|
119
|
+
detail_lines.append(f"**{page_name}** - 0/{eff} ({len(ready)} ready)")
|
|
120
120
|
detail_lines.append("")
|
|
121
121
|
|
|
122
122
|
f_eff = f_impl + f_ready
|
|
@@ -144,7 +144,7 @@ def generate_all(catalog_path, wiki_dir):
|
|
|
144
144
|
|
|
145
145
|
for label, short, f_impl, f_eff, page_rows in file_summaries:
|
|
146
146
|
pct = int(f_impl / f_eff * 100) if f_eff else 0
|
|
147
|
-
summary.append(f"## [{label}](ComponentImplementationStatus-{short})
|
|
147
|
+
summary.append(f"## [{label}](ComponentImplementationStatus-{short}) - {f_impl}/{f_eff} ({pct}%)")
|
|
148
148
|
summary.append("")
|
|
149
149
|
summary.append("| Section | Progress |")
|
|
150
150
|
summary.append("|---------|----------|")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""
|
|
3
|
-
Confluence Data Gather
|
|
3
|
+
Confluence Data Gather - Lightweight artifact builder for standalone Confluence upload.
|
|
4
4
|
|
|
5
5
|
Reads component source files (FIGMA.md, Swift, registry JSON, snapshots) and
|
|
6
6
|
optionally fetches screenshots from Figma REST API to produce the same artifact
|
|
@@ -203,7 +203,7 @@ def build_utility_files(registry, artifact_path):
|
|
|
203
203
|
|
|
204
204
|
# Write _index.md
|
|
205
205
|
with open(pass2 / "_index.md", "w") as f:
|
|
206
|
-
f.write("# Pass 2
|
|
206
|
+
f.write("# Pass 2 - Utility Artifacts (from registry)\n\n")
|
|
207
207
|
f.write(f"- Testing identifiers: {len(identifiers)}\n")
|
|
208
208
|
f.write(f"- Localization keys: {len(loc_keys)}\n")
|
|
209
209
|
f.write(f"- Accessibility keys: {len(a11y_keys)}\n")
|
|
@@ -237,7 +237,7 @@ def fetch_screenshots(artifact_path):
|
|
|
237
237
|
except Exception as e:
|
|
238
238
|
log(f"Main screenshot failed: {e}")
|
|
239
239
|
|
|
240
|
-
# Variant screenshots
|
|
240
|
+
# Variant screenshots - get node children
|
|
241
241
|
log("Fetching variant info...")
|
|
242
242
|
try:
|
|
243
243
|
node_data = figma_get(f"files/{FILE_KEY}/nodes?ids={NODE_ID}")
|
|
@@ -280,7 +280,7 @@ def build_pass1_index(artifact_path, figma_md_data, screenshot_count):
|
|
|
280
280
|
"""Write pass1/_index.md."""
|
|
281
281
|
pass1 = Path(artifact_path) / "pass1"
|
|
282
282
|
with open(pass1 / "_index.md", "w") as f:
|
|
283
|
-
f.write("# Pass 1
|
|
283
|
+
f.write("# Pass 1 - Data (from confluence-data-gather)\n\n")
|
|
284
284
|
f.write(f"- screenshot.png: {'present' if screenshot_count > 0 else 'missing'}\n")
|
|
285
285
|
f.write(f"- variant screenshots: {max(0, screenshot_count - 1)}\n")
|
|
286
286
|
f.write(f"- component_summary.json: present\n")
|
|
@@ -343,7 +343,7 @@ def main():
|
|
|
343
343
|
# ── Read sources ──
|
|
344
344
|
registry = read_registry(NODE_ID)
|
|
345
345
|
if not registry:
|
|
346
|
-
log("WARNING: No registry JSON found
|
|
346
|
+
log("WARNING: No registry JSON found - utility data will be empty")
|
|
347
347
|
|
|
348
348
|
figma_md_path = Path(COMPONENT_LOCATION) / "FIGMA.md"
|
|
349
349
|
if not figma_md_path.exists():
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Example confluence-page-ids registry. Copy to confluence-page-ids.json (gitignored) or to your project-local path and fill in real page IDs. Schema: flat map of 'Category/Subcategory' -> Confluence page ID string.",
|
|
3
|
+
"_root": "{ROOT_PAGE_ID}",
|
|
4
|
+
"Design System Core": "{PAGE_ID}",
|
|
5
|
+
"Design System Core/Button": "{PAGE_ID}",
|
|
6
|
+
"Mobile App Components": "{PAGE_ID}",
|
|
7
|
+
"Mobile App Components/Cards": "{PAGE_ID}",
|
|
8
|
+
"Visual Assets": "{PAGE_ID}"
|
|
9
|
+
}
|
|
@@ -210,7 +210,7 @@ def main():
|
|
|
210
210
|
main_content, existing["version"])
|
|
211
211
|
print(f"Updated: {main_page_id} (v{new_v})")
|
|
212
212
|
|
|
213
|
-
# ---- 2. ATTACH SCREENSHOTS (main page
|
|
213
|
+
# ---- 2. ATTACH SCREENSHOTS (main page - non-ios_ assets) ----
|
|
214
214
|
print(f"\n--- Attachments (Main Page) ---")
|
|
215
215
|
assets_dir = os.path.join(args.artifact_path, "assets")
|
|
216
216
|
ios_assets = [] # defer ios_ prefixed assets for iOS sub-page
|
|
@@ -235,7 +235,7 @@ def main():
|
|
|
235
235
|
|
|
236
236
|
print(f"\n--- iOS Sub-Page: {ios_title} ---")
|
|
237
237
|
if not os.path.isfile(ios_file):
|
|
238
|
-
print(f"WARNING: ios.html not found at {ios_file}
|
|
238
|
+
print(f"WARNING: ios.html not found at {ios_file} - skipping")
|
|
239
239
|
else:
|
|
240
240
|
with open(ios_file) as f:
|
|
241
241
|
ios_content = f.read()
|
|
@@ -323,7 +323,7 @@ def main():
|
|
|
323
323
|
f.write("\n")
|
|
324
324
|
print(f"Registry updated: {registry_file}")
|
|
325
325
|
else:
|
|
326
|
-
print("WARNING: Registry file not found
|
|
326
|
+
print("WARNING: Registry file not found - skipping registry update")
|
|
327
327
|
|
|
328
328
|
# ---- SUMMARY ----
|
|
329
329
|
print(f"\n=== Done ===")
|
|
@@ -332,7 +332,7 @@ def main():
|
|
|
332
332
|
output = {
|
|
333
333
|
"version": "1.0",
|
|
334
334
|
"generatedAt": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
|
|
335
|
-
"source": "Figma REST API /files/:key/nodes
|
|
335
|
+
"source": "Figma REST API /files/:key/nodes - INSTANCE child inspection",
|
|
336
336
|
"stats": {
|
|
337
337
|
"totalComponents": len(graph),
|
|
338
338
|
"componentsWithSubComponents": with_subs,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""figma-update.py
|
|
2
|
+
"""figma-update.py - detect Figma-side changes and mark components stale.
|
|
3
3
|
|
|
4
4
|
Fetches the file-level `lastModified` timestamp from the Figma REST API
|
|
5
5
|
(`GET /v1/files/:key`) and compares it to the `figmaUpdatedAt` stored in
|
|
6
6
|
each component registry entry. If Figma has newer data, the script calls
|
|
7
7
|
`lib.registry_writer.mark_stale()` for every registry entry that belongs
|
|
8
|
-
to that file
|
|
8
|
+
to that file - setting `status.<platform>.stale = true` on any platform
|
|
9
9
|
that has been implemented.
|
|
10
10
|
|
|
11
11
|
This is a FILE-LEVEL check. Any change anywhere in the Figma file will
|
|
@@ -30,8 +30,8 @@ Usage:
|
|
|
30
30
|
Token: FIGMA_ACCESS_TOKEN env var, or macOS Keychain FIGMA_ACCESS_TOKEN.
|
|
31
31
|
|
|
32
32
|
Exit codes:
|
|
33
|
-
0
|
|
34
|
-
1
|
|
33
|
+
0 - Success
|
|
34
|
+
1 - Error (network, auth, bad registry files, etc.)
|
|
35
35
|
"""
|
|
36
36
|
|
|
37
37
|
import argparse
|
|
@@ -107,7 +107,7 @@ def load_figma_token() -> Optional[str]:
|
|
|
107
107
|
def fetch_file_last_modified(file_key: str, token: str) -> str:
|
|
108
108
|
"""Call Figma REST API and return the file's lastModified timestamp.
|
|
109
109
|
|
|
110
|
-
Uses the `depth=1` parameter to minimize payload
|
|
110
|
+
Uses the `depth=1` parameter to minimize payload - we only need the
|
|
111
111
|
top-level metadata, not the full node tree. Figma returns a JSON
|
|
112
112
|
object with a top-level `lastModified` ISO 8601 string.
|
|
113
113
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Called at the end of each phase{4,5,6,7}-finalize.py so that completing a
|
|
4
4
|
phase flips the matching Projects V2 Status column immediately, instead of
|
|
5
5
|
waiting for the next figma-iteration-commit. Failures here are *logged
|
|
6
|
-
but not fatal*
|
|
6
|
+
but not fatal* - the registry write is the single source of truth; the
|
|
7
7
|
issue sync is propagation, not a prerequisite.
|
|
8
8
|
"""
|
|
9
9
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""registry_writer.py
|
|
1
|
+
"""registry_writer.py - single writer for component registry JSON files.
|
|
2
2
|
|
|
3
3
|
All phase finalize scripts (phase4/5/6/7) and the figma-update script MUST go
|
|
4
4
|
through this module. No script writes to registry JSONs directly.
|
|
@@ -201,7 +201,7 @@ def set_implemented_by(
|
|
|
201
201
|
"""Record who implemented a component (git author, most-commits-wins).
|
|
202
202
|
|
|
203
203
|
Writes `status.<platform>.implementedBy = <author_name>`. This is
|
|
204
|
-
metadata for issue assignment
|
|
204
|
+
metadata for issue assignment - does NOT affect any version or
|
|
205
205
|
flag-state computation.
|
|
206
206
|
"""
|
|
207
207
|
if not isinstance(platform, str) or platform not in PLATFORMS:
|
|
@@ -231,7 +231,7 @@ def mark_stale(
|
|
|
231
231
|
If `figma_updated_at` is newer than the stored `figmaUpdatedAt`, sets
|
|
232
232
|
`status.<platform>.stale=true` for any platform that has been implemented.
|
|
233
233
|
|
|
234
|
-
Does NOT create new registry files
|
|
234
|
+
Does NOT create new registry files - only updates existing ones.
|
|
235
235
|
|
|
236
236
|
Returns True if the registry was modified, False otherwise.
|
|
237
237
|
"""
|
|
@@ -276,7 +276,7 @@ def get_flag_state(
|
|
|
276
276
|
value == True, against < impl.ver → 'yellow'
|
|
277
277
|
value == True, against >= impl.ver → 'green'
|
|
278
278
|
|
|
279
|
-
The `stale` flag is intentionally orthogonal
|
|
279
|
+
The `stale` flag is intentionally orthogonal - it signals "Figma changed"
|
|
280
280
|
and is surfaced separately to dashboards, not folded into the flag state.
|
|
281
281
|
"""
|
|
282
282
|
path = _registry_file(registry_dir, node_id)
|
|
@@ -193,7 +193,7 @@ class UpdateFileComponentsTests(unittest.TestCase):
|
|
|
193
193
|
|
|
194
194
|
|
|
195
195
|
class FetchFunctionExistsTests(unittest.TestCase):
|
|
196
|
-
"""Smoke-check the HTTP helper has the right signature
|
|
196
|
+
"""Smoke-check the HTTP helper has the right signature - do NOT call it."""
|
|
197
197
|
|
|
198
198
|
def test_fetch_file_last_modified_exists(self):
|
|
199
199
|
self.assertTrue(callable(figma_update.fetch_file_last_modified))
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Run: python3 -m unittest test_registry_writer.py
|
|
4
4
|
Or: python3 test_registry_writer.py
|
|
5
5
|
|
|
6
|
-
Uses tempfile for isolation
|
|
6
|
+
Uses tempfile for isolation - no network, no repo writes, no dependencies
|
|
7
7
|
beyond the Python standard library.
|
|
8
8
|
"""
|
|
9
9
|
|
|
@@ -181,7 +181,7 @@ class RegistryWriterTests(unittest.TestCase):
|
|
|
181
181
|
set_flag(self.registry_dir, self.node_id, "ios", "bogus", updater="x")
|
|
182
182
|
|
|
183
183
|
def test_set_flag_rejects_implemented_as_flag(self):
|
|
184
|
-
# 'implemented' is not in FLAGS
|
|
184
|
+
# 'implemented' is not in FLAGS - use set_implemented instead
|
|
185
185
|
set_implemented(self.registry_dir, self.node_id, "ios", updater="phase-4-view")
|
|
186
186
|
with self.assertRaises(ValueError):
|
|
187
187
|
set_flag(self.registry_dir, self.node_id, "ios", "implemented", updater="x")
|
|
@@ -279,7 +279,7 @@ class RegistryWriterTests(unittest.TestCase):
|
|
|
279
279
|
for flag in FLAGS:
|
|
280
280
|
self.assertEqual(get_flag_state(self.registry_dir, self.node_id, "ios", flag), "green")
|
|
281
281
|
|
|
282
|
-
# Re-implement
|
|
282
|
+
# Re-implement - version bumps to 2
|
|
283
283
|
set_implemented(self.registry_dir, self.node_id, "ios", updater="phase-4-view")
|
|
284
284
|
|
|
285
285
|
# Everything downstream is now yellow
|
|
@@ -102,7 +102,7 @@ class SkillFigmaIssueReadinessTests(unittest.TestCase):
|
|
|
102
102
|
"componentName": {"ios": "LegacyButton", "android": "LegacyButton"},
|
|
103
103
|
"skip": False,
|
|
104
104
|
"codeConnect": {"ios": True, "android": False},
|
|
105
|
-
# No status block at all
|
|
105
|
+
# No status block at all - pure legacy shape
|
|
106
106
|
})
|
|
107
107
|
|
|
108
108
|
self._write_component("1-103.json", {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Covers gh wrapper, gh_graphql wrapper, close_duplicate,
|
|
4
4
|
create_missing_issue, get_issue_body, rewrite_issue_body.
|
|
5
5
|
|
|
6
|
-
sync_one is not fully exercised here
|
|
6
|
+
sync_one is not fully exercised here - its full happy path requires
|
|
7
7
|
mocking the entire REST-then-GraphQL sequence, which gets brittle.
|
|
8
8
|
Instead we trust the unit tests for pure-logic pieces
|
|
9
9
|
(compute_flag_states, pick_survivor, etc.) and the real single-node
|
|
@@ -173,7 +173,7 @@ def _parse_sse_json(raw):
|
|
|
173
173
|
try:
|
|
174
174
|
return json.loads(json_str)
|
|
175
175
|
except json.JSONDecodeError:
|
|
176
|
-
# JSON may have trailing SSE noise
|
|
176
|
+
# JSON may have trailing SSE noise - find balanced braces
|
|
177
177
|
depth = 0
|
|
178
178
|
end = 0
|
|
179
179
|
for i, ch in enumerate(json_str):
|
|
@@ -289,9 +289,9 @@ def mcp_init():
|
|
|
289
289
|
log(f"MCP: local connected (session: {SESSION_ID[:12]}...)")
|
|
290
290
|
return
|
|
291
291
|
except Exception as exc:
|
|
292
|
-
raise RuntimeError(f"MCP init failed
|
|
292
|
+
raise RuntimeError(f"MCP init failed - remote and local both unavailable. Local error: {exc}")
|
|
293
293
|
|
|
294
|
-
raise RuntimeError("MCP init failed
|
|
294
|
+
raise RuntimeError("MCP init failed - no session from local, no response from remote")
|
|
295
295
|
|
|
296
296
|
|
|
297
297
|
_MCP_CALL_ID = 10 # auto-increment per call
|
|
@@ -380,7 +380,7 @@ def _build_design_context_args(node_id, assets_dir=None):
|
|
|
380
380
|
"nodeId": node_id,
|
|
381
381
|
"clientLanguages": "swift",
|
|
382
382
|
"clientFrameworks": "swiftui",
|
|
383
|
-
# Disable Code Connect in design context
|
|
383
|
+
# Disable Code Connect in design context - when Code Connect is enabled,
|
|
384
384
|
# the returned snippets override the original Tailwind reference code we
|
|
385
385
|
# need for layout/style extraction. We fetch Code Connect separately
|
|
386
386
|
# via get_code_connect_map.
|
|
@@ -444,7 +444,7 @@ def fetch_design_context():
|
|
|
444
444
|
|
|
445
445
|
# Cap check: if too many sublayers, defer to manual resolution
|
|
446
446
|
if len(sublayer_ids) > SUBLAYER_CAP:
|
|
447
|
-
log(f"MCP: {len(sublayer_ids)} sublayers exceeds cap ({SUBLAYER_CAP})
|
|
447
|
+
log(f"MCP: {len(sublayer_ids)} sublayers exceeds cap ({SUBLAYER_CAP}) - deferring")
|
|
448
448
|
return {
|
|
449
449
|
"__deferred": True,
|
|
450
450
|
"__sublayer_count": len(sublayer_ids),
|
|
@@ -453,7 +453,7 @@ def fetch_design_context():
|
|
|
453
453
|
"__cap": SUBLAYER_CAP,
|
|
454
454
|
}
|
|
455
455
|
|
|
456
|
-
log(f"MCP: design too large
|
|
456
|
+
log(f"MCP: design too large - fetching {len(sublayer_ids)} sublayers in parallel")
|
|
457
457
|
if sublayer_ids:
|
|
458
458
|
sublayer_responses = _fetch_sublayers_parallel(sublayer_ids, assets_dir)
|
|
459
459
|
total = sum(
|
|
@@ -484,7 +484,7 @@ def fetch_variable_defs():
|
|
|
484
484
|
|
|
485
485
|
def fetch_code_connect_map():
|
|
486
486
|
log("MCP: get_code_connect_map...")
|
|
487
|
-
# Filter by SwiftUI label
|
|
487
|
+
# Filter by SwiftUI label - without this, MCP returns all platforms
|
|
488
488
|
# (e.g. Compose) and we get Android snippets instead of iOS ones.
|
|
489
489
|
text = mcp_call("get_code_connect_map", {
|
|
490
490
|
"nodeId": NODE_ID,
|
|
@@ -646,7 +646,7 @@ def write_design_context_deferred(data):
|
|
|
646
646
|
json.dumps(envelope, indent=2, ensure_ascii=False) + "\n"
|
|
647
647
|
)
|
|
648
648
|
|
|
649
|
-
# Write design_context_deferred.json
|
|
649
|
+
# Write design_context_deferred.json - resolution instructions
|
|
650
650
|
cmd_template = (
|
|
651
651
|
f"python3 .instructions/figma/figma-to-swiftui/scripts/phase1-gather.py "
|
|
652
652
|
f"--fetch-deferred "
|
|
@@ -994,7 +994,7 @@ def fetch_deferred(sublayer_ids):
|
|
|
994
994
|
else:
|
|
995
995
|
responses[sid] = str(resp)
|
|
996
996
|
|
|
997
|
-
# Build merged design_context_response.json
|
|
997
|
+
# Build merged design_context_response.json - same format as non-deferred
|
|
998
998
|
envelope = {
|
|
999
999
|
"rootNodeId": NODE_ID,
|
|
1000
1000
|
"source": MCP_MODE,
|
|
@@ -1216,8 +1216,8 @@ def main():
|
|
|
1216
1216
|
if "variable_defs" in b1:
|
|
1217
1217
|
save_mcp_text("variable_defs_response.json", b1["variable_defs"])
|
|
1218
1218
|
else:
|
|
1219
|
-
# REST API fallback (requires Enterprise plan
|
|
1220
|
-
log("MCP variable_defs failed
|
|
1219
|
+
# REST API fallback (requires Enterprise plan - may 403)
|
|
1220
|
+
log("MCP variable_defs failed - trying REST API fallback...")
|
|
1221
1221
|
try:
|
|
1222
1222
|
rest_vars = figma_get(f"files/{FILE_KEY}/variables/local")
|
|
1223
1223
|
(pass1 / "variable_defs_response.json").write_text(
|
|
@@ -1226,7 +1226,7 @@ def main():
|
|
|
1226
1226
|
log("REST API variable_defs fallback succeeded")
|
|
1227
1227
|
except HTTPError as exc:
|
|
1228
1228
|
if exc.code == 403:
|
|
1229
|
-
log("REST API variable_defs: 403 (requires Enterprise plan)
|
|
1229
|
+
log("REST API variable_defs: 403 (requires Enterprise plan) - skipping")
|
|
1230
1230
|
else:
|
|
1231
1231
|
log(f"REST API variable_defs fallback failed: {exc}")
|
|
1232
1232
|
(pass1 / "variable_defs_response.json").write_text(json.dumps({
|
|
@@ -56,14 +56,14 @@ def ensure_cli():
|
|
|
56
56
|
def read_json_sidecar(path: Path, fallback_key: str) -> list:
|
|
57
57
|
"""Read a JSON sidecar file. Returns the array for fallback_key, or [] if missing/empty."""
|
|
58
58
|
if not path.exists():
|
|
59
|
-
print(f" [warn] {path.name} not found
|
|
59
|
+
print(f" [warn] {path.name} not found - using empty array", file=sys.stderr)
|
|
60
60
|
return []
|
|
61
61
|
try:
|
|
62
62
|
with open(path) as f:
|
|
63
63
|
data = json.load(f)
|
|
64
64
|
return data.get(fallback_key, [])
|
|
65
65
|
except (json.JSONDecodeError, KeyError) as e:
|
|
66
|
-
print(f" [warn] {path.name} parse error: {e}
|
|
66
|
+
print(f" [warn] {path.name} parse error: {e} - using empty array", file=sys.stderr)
|
|
67
67
|
return []
|
|
68
68
|
|
|
69
69
|
|
|
@@ -174,7 +174,7 @@ def main():
|
|
|
174
174
|
print(f" [warn] {index_filename} regeneration failed: {e}", file=sys.stderr)
|
|
175
175
|
|
|
176
176
|
# --- GATE 6: WRITE _index.md ---
|
|
177
|
-
index_content = f"""# Pass 2
|
|
177
|
+
index_content = f"""# Pass 2 - Utility Files Output
|
|
178
178
|
|
|
179
179
|
Component: {args.component_name}
|
|
180
180
|
Generated: {ISO_DATE}
|
|
@@ -139,7 +139,7 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
139
139
|
if result:
|
|
140
140
|
token_map = result
|
|
141
141
|
|
|
142
|
-
# Typography lookup for composite styles
|
|
142
|
+
# Typography lookup for composite styles - pass the raw Figma variable names
|
|
143
143
|
# through untransformed. Resolution is the CLI's job, not ours.
|
|
144
144
|
typo_map = {}
|
|
145
145
|
if typo_composites:
|
|
@@ -169,7 +169,7 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
169
169
|
else:
|
|
170
170
|
lines.append(f"| {tc_name} | typography | ⚠️ not found | ⚠️ not found |")
|
|
171
171
|
if not typo_composites:
|
|
172
|
-
lines.append("| (none) |
|
|
172
|
+
lines.append("| (none) | - | - | - |")
|
|
173
173
|
lines.append("")
|
|
174
174
|
|
|
175
175
|
# Colors section
|
|
@@ -187,7 +187,7 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
187
187
|
else:
|
|
188
188
|
lines.append(f"| {var_name} | color | ⚠️ not found |")
|
|
189
189
|
if not colors:
|
|
190
|
-
lines.append("| (none) |
|
|
190
|
+
lines.append("| (none) | - | - |")
|
|
191
191
|
lines.append("")
|
|
192
192
|
|
|
193
193
|
# Spacing section
|
|
@@ -204,7 +204,7 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
204
204
|
else:
|
|
205
205
|
lines.append(f"| {var_name} | number | ⚠️ not found |")
|
|
206
206
|
if not spacings:
|
|
207
|
-
lines.append("| (none) |
|
|
207
|
+
lines.append("| (none) | - | - |")
|
|
208
208
|
lines.append("")
|
|
209
209
|
|
|
210
210
|
# Radius section
|
|
@@ -221,7 +221,7 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
221
221
|
else:
|
|
222
222
|
lines.append(f"| {var_name} | number | ⚠️ not found |")
|
|
223
223
|
if not radii:
|
|
224
|
-
lines.append("| (none) |
|
|
224
|
+
lines.append("| (none) | - | - |")
|
|
225
225
|
lines.append("")
|
|
226
226
|
|
|
227
227
|
# Images section
|
|
@@ -231,7 +231,7 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
231
231
|
# Font primitives section
|
|
232
232
|
if font_prims:
|
|
233
233
|
lines.append("## Font Primitives (Sub-tokens)\n")
|
|
234
|
-
lines.append("These are typography sub-properties. Not used directly
|
|
234
|
+
lines.append("These are typography sub-properties. Not used directly - encapsulated by composite typography tokens above.\n")
|
|
235
235
|
lines.append("| Figma Variable | Token Type | Swift Token | Note |")
|
|
236
236
|
lines.append("|----------------|------------|-------------|------|")
|
|
237
237
|
for var_name in font_prims:
|
|
@@ -240,16 +240,16 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
240
240
|
type_prefix, swift_path = token.split(":", 1)
|
|
241
241
|
lines.append(f"| {var_name} | {type_prefix} | `{swift_path}` | Font primitive (use composite token instead) |")
|
|
242
242
|
else:
|
|
243
|
-
lines.append(f"| {var_name} |
|
|
243
|
+
lines.append(f"| {var_name} | - | N/A | Font primitive - not a standalone token |")
|
|
244
244
|
lines.append("")
|
|
245
245
|
|
|
246
246
|
# Font families
|
|
247
247
|
if font_families:
|
|
248
248
|
lines.append("## Font Families\n")
|
|
249
249
|
for name in font_families:
|
|
250
|
-
lines.append(f"- `{name}`: \"{var_defs[name]}\"
|
|
250
|
+
lines.append(f"- `{name}`: \"{var_defs[name]}\" - font family reference, not a standalone token\n")
|
|
251
251
|
|
|
252
|
-
# Missing tokens
|
|
252
|
+
# Missing tokens - exclude font primitives and font families (encapsulated by composite)
|
|
253
253
|
missing = []
|
|
254
254
|
for var_name in lookup_vars:
|
|
255
255
|
token = token_map.get(var_name)
|
|
@@ -264,7 +264,7 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
264
264
|
if not entry or entry.get("status") != "found":
|
|
265
265
|
missing.append((tc_name, "typography"))
|
|
266
266
|
|
|
267
|
-
# Font primitives/families that returned null are NOT missing
|
|
267
|
+
# Font primitives/families that returned null are NOT missing - they're encapsulated
|
|
268
268
|
font_null_note = []
|
|
269
269
|
for var_name in lookup_vars:
|
|
270
270
|
token = token_map.get(var_name)
|
|
@@ -281,7 +281,7 @@ def run_3b(artifact_path: str) -> bool:
|
|
|
281
281
|
lines.append(f"| {name} | {ttype} | See reference/missing-tokens.md |")
|
|
282
282
|
else:
|
|
283
283
|
if font_null_note:
|
|
284
|
-
lines.append(f"All tokens resolved. ({len(font_null_note)} font primitive/family references excluded
|
|
284
|
+
lines.append(f"All tokens resolved. ({len(font_null_note)} font primitive/family references excluded - encapsulated by composite typography token.)\n")
|
|
285
285
|
else:
|
|
286
286
|
lines.append("All tokens resolved.\n")
|
|
287
287
|
|
|
@@ -333,7 +333,7 @@ def run_3e(artifact_path: str) -> bool:
|
|
|
333
333
|
out_path = ap / "pass3" / "06_assets.md"
|
|
334
334
|
with open(out_path, "w") as f:
|
|
335
335
|
f.write(f"# Asset Inventory\n\nNo downloadable assets found for this component.\nGenerated: {ISO_DATE}\n")
|
|
336
|
-
print(f" ⏭️ No assets
|
|
336
|
+
print(f" ⏭️ No assets - placeholder written")
|
|
337
337
|
return True
|
|
338
338
|
|
|
339
339
|
# Parse asset entries
|
|
@@ -354,7 +354,7 @@ def run_3e(artifact_path: str) -> bool:
|
|
|
354
354
|
out_path = ap / "pass3" / "06_assets.md"
|
|
355
355
|
with open(out_path, "w") as f:
|
|
356
356
|
f.write(f"# Asset Inventory\n\nNo downloadable assets found for this component.\nGenerated: {ISO_DATE}\n")
|
|
357
|
-
print(f" ⏭️ No assets
|
|
357
|
+
print(f" ⏭️ No assets - placeholder written")
|
|
358
358
|
return True
|
|
359
359
|
|
|
360
360
|
# Try to identify assets via code_connect_map (for icon names)
|
|
@@ -440,9 +440,9 @@ def run_3e(artifact_path: str) -> bool:
|
|
|
440
440
|
]
|
|
441
441
|
|
|
442
442
|
for r in results:
|
|
443
|
-
accessor = r["swift_accessor"] or "
|
|
443
|
+
accessor = r["swift_accessor"] or " - "
|
|
444
444
|
lines.append(f"| {r['filename']} | {r['ext']} | {r['identified_name']} | {r['status']} | `{accessor}` |" if r["swift_accessor"] else
|
|
445
|
-
f"| {r['filename']} | {r['ext']} | {r['identified_name']} | {r['status']} |
|
|
445
|
+
f"| {r['filename']} | {r['ext']} | {r['identified_name']} | {r['status']} | - |")
|
|
446
446
|
|
|
447
447
|
lines.extend([
|
|
448
448
|
"",
|
|
@@ -525,7 +525,7 @@ def run_3f(artifact_path: str) -> bool:
|
|
|
525
525
|
elem = ae.get("element", "unknown")
|
|
526
526
|
if elem not in elements:
|
|
527
527
|
elements[elem] = {"testing": None, "localization": None, "accessibility": None, "analytics": None}
|
|
528
|
-
elements[elem]["analytics"] = ae.get("event", "
|
|
528
|
+
elements[elem]["analytics"] = ae.get("event", " - ")
|
|
529
529
|
|
|
530
530
|
lines = [
|
|
531
531
|
f"# Utility Integration\n",
|
|
@@ -540,10 +540,10 @@ def run_3f(artifact_path: str) -> bool:
|
|
|
540
540
|
lines.append("| Element | Testing ID | Localization Key | Accessibility | Analytics |")
|
|
541
541
|
lines.append("|---------|------------|------------------|---------------|-----------|")
|
|
542
542
|
for elem, utils_map in elements.items():
|
|
543
|
-
t = utils_map["testing"] or "
|
|
544
|
-
l = utils_map["localization"] or "
|
|
545
|
-
a = utils_map["accessibility"] or "
|
|
546
|
-
an = utils_map["analytics"] or "
|
|
543
|
+
t = utils_map["testing"] or " - "
|
|
544
|
+
l = utils_map["localization"] or " - "
|
|
545
|
+
a = utils_map["accessibility"] or " - "
|
|
546
|
+
an = utils_map["analytics"] or " - "
|
|
547
547
|
lines.append(f"| {elem} | {t} | {l} | {a} | {an} |")
|
|
548
548
|
lines.append("")
|
|
549
549
|
|
|
@@ -577,7 +577,7 @@ def run_3f(artifact_path: str) -> bool:
|
|
|
577
577
|
for ak in a11y_keys:
|
|
578
578
|
lines.append(f"| {ak.get('key', '')} | {ak.get('purpose', '')} |")
|
|
579
579
|
else:
|
|
580
|
-
lines.append("No dedicated keys
|
|
580
|
+
lines.append("No dedicated keys - using runtime accessibility patterns.")
|
|
581
581
|
lines.append("")
|
|
582
582
|
|
|
583
583
|
# Analytics
|
|
@@ -662,7 +662,7 @@ def run_3g(artifact_path: str) -> bool:
|
|
|
662
662
|
"reason": ap_entry.get("reason"),
|
|
663
663
|
})
|
|
664
664
|
else:
|
|
665
|
-
# Not found in architecture
|
|
665
|
+
# Not found in architecture - unmapped
|
|
666
666
|
unmapped.append({
|
|
667
667
|
"name": display_name,
|
|
668
668
|
"type": prop_type,
|
|
@@ -801,7 +801,7 @@ def generate_api_shape_code(arch: dict) -> str:
|
|
|
801
801
|
lines.append(" self.configuration = configuration")
|
|
802
802
|
lines.append(" }")
|
|
803
803
|
else:
|
|
804
|
-
# SIMPLE
|
|
804
|
+
# SIMPLE - direct init params
|
|
805
805
|
for param in comp.get("initParameters", []):
|
|
806
806
|
lines.append(f" private let {param['name']}: {param['swiftType']}")
|
|
807
807
|
lines.append("}")
|
|
@@ -868,14 +868,14 @@ def run_spec(artifact_path: str) -> bool:
|
|
|
868
868
|
if status == "SKIP":
|
|
869
869
|
# Show merged info
|
|
870
870
|
reason = prop.get("reason", "")
|
|
871
|
-
swift_type = "
|
|
872
|
-
swift_name = "
|
|
871
|
+
swift_type = " - "
|
|
872
|
+
swift_name = " - "
|
|
873
873
|
if "merged" in reason.lower():
|
|
874
874
|
# Find the implicit property this was merged into
|
|
875
875
|
for ip in arch.get("implicitProperties", []):
|
|
876
876
|
if ip.get("figmaKey") == prop.get("figmaKey"):
|
|
877
877
|
swift_name = ip["name"]
|
|
878
|
-
swift_type = f"{ip['swiftType']} (merged
|
|
878
|
+
swift_type = f"{ip['swiftType']} (merged - nil = hidden)"
|
|
879
879
|
break
|
|
880
880
|
variant_lines.append(f"| {prop['name']} ({prop['type']}) | {swift_name} | {swift_type} |")
|
|
881
881
|
else:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""phase4-finalize.py
|
|
2
|
+
"""phase4-finalize.py - Post-Phase 4 registry update.
|
|
3
3
|
|
|
4
4
|
Marks status.<platform>.implemented in the component registry JSON after
|
|
5
5
|
Phase 4 writes the .swift (or .kt) source file. Uses content-hash to skip
|
|
@@ -14,8 +14,8 @@ Usage:
|
|
|
14
14
|
[--registry-dir /path/to/Shared/Figma/Components]
|
|
15
15
|
|
|
16
16
|
Exit codes:
|
|
17
|
-
0
|
|
18
|
-
1
|
|
17
|
+
0 - Success (registry updated, or no-op on byte-identical)
|
|
18
|
+
1 - Error (bad JSON, missing required flag, etc.)
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
21
|
import argparse
|
|
@@ -53,7 +53,7 @@ def default_registry_dir() -> Path:
|
|
|
53
53
|
|
|
54
54
|
def main() -> int:
|
|
55
55
|
parser = argparse.ArgumentParser(
|
|
56
|
-
description="Phase 4 finalize
|
|
56
|
+
description="Phase 4 finalize - update registry status.<platform>.implemented",
|
|
57
57
|
)
|
|
58
58
|
parser.add_argument("--node-id", required=True, help="Figma node ID (e.g. 5:17752)")
|
|
59
59
|
parser.add_argument("--component-name", required=True, help="PascalCase component name")
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""phase5-finalize.py
|
|
2
|
+
"""phase5-finalize.py - Post-Phase 5 registry update.
|
|
3
3
|
|
|
4
4
|
Marks status.<platform>.tested=true in the component registry JSON after
|
|
5
5
|
Phase 5 test waves (ViewInspector, snapshot, unit) complete successfully.
|
|
@@ -15,8 +15,8 @@ Usage:
|
|
|
15
15
|
[--registry-dir /path/to/Shared/Figma/Components]
|
|
16
16
|
|
|
17
17
|
Exit codes:
|
|
18
|
-
0
|
|
19
|
-
1
|
|
18
|
+
0 - Success
|
|
19
|
+
1 - Error
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
22
|
import argparse
|
|
@@ -52,7 +52,7 @@ def default_registry_dir() -> Path:
|
|
|
52
52
|
|
|
53
53
|
def main() -> int:
|
|
54
54
|
parser = argparse.ArgumentParser(
|
|
55
|
-
description="Phase 5 finalize
|
|
55
|
+
description="Phase 5 finalize - update registry status.<platform>.tested",
|
|
56
56
|
)
|
|
57
57
|
parser.add_argument("--node-id", required=True)
|
|
58
58
|
parser.add_argument("--platform", default="ios", choices=["ios", "android"])
|