@mmerterden/multi-agent-pipeline 8.6.1 → 10.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +544 -2484
- package/README.md +117 -138
- package/docs/features.md +1 -1
- package/index.js +8 -10
- package/install/_adapters.mjs +5 -1
- package/install/_common.mjs +63 -0
- package/install/claude.mjs +14 -14
- package/install/copilot.mjs +14 -8
- package/install/index.mjs +85 -19
- package/install/templates/claude-hooks.json +18 -0
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +21 -6
- package/pipeline/adapters/_base.mjs +366 -14
- package/pipeline/adapters/antigravity.mjs +140 -0
- package/pipeline/adapters/codex.mjs +159 -0
- package/pipeline/adapters/copilot-chat-orchestration.mjs +148 -0
- package/pipeline/adapters/copilot-chat.mjs +34 -68
- package/pipeline/adapters/cursor-orchestration.mjs +152 -0
- package/pipeline/adapters/cursor.mjs +49 -90
- package/pipeline/agents/android-architect.md +5 -5
- package/pipeline/agents/backend-architect.md +4 -4
- package/pipeline/agents/code-reviewer.md +10 -10
- package/pipeline/agents/dev-critic.md +17 -17
- package/pipeline/agents/explorer.md +3 -3
- package/pipeline/agents/ios-architect.md +4 -4
- package/pipeline/agents/security-auditor.md +12 -12
- package/pipeline/agents/task-clarifier.md +18 -18
- package/pipeline/claude-md-template.md +3 -3
- package/pipeline/commands/archive-guard.md +3 -3
- package/pipeline/commands/figma-to-swiftui.md +10 -10
- package/pipeline/commands/multi-agent/_account-picker.md +13 -9
- package/pipeline/commands/multi-agent/_dev-context.md +15 -15
- package/pipeline/commands/multi-agent/_input-parser.md +4 -4
- package/pipeline/commands/multi-agent/_repo-picker.md +9 -9
- package/pipeline/commands/multi-agent/analysis-resolve.md +129 -0
- package/pipeline/commands/multi-agent/analysis.md +667 -0
- package/pipeline/commands/multi-agent/autopilot.md +22 -22
- package/pipeline/commands/multi-agent/build-optimize.md +77 -0
- package/pipeline/commands/multi-agent/channels.md +96 -96
- package/pipeline/commands/multi-agent/delete.md +19 -17
- package/pipeline/commands/multi-agent/dev-autopilot.md +23 -23
- package/pipeline/commands/multi-agent/dev-local-autopilot.md +23 -23
- package/pipeline/commands/multi-agent/dev-local.md +25 -22
- package/pipeline/commands/multi-agent/dev.md +49 -49
- package/pipeline/commands/multi-agent/diff-explain.md +4 -4
- package/pipeline/commands/multi-agent/garbage-collect.md +58 -0
- package/pipeline/commands/multi-agent/help.md +75 -66
- package/pipeline/commands/multi-agent/issue.md +3 -3
- package/pipeline/commands/multi-agent/jira.md +12 -12
- package/pipeline/commands/multi-agent/kill.md +6 -6
- package/pipeline/commands/multi-agent/language.md +12 -12
- package/pipeline/commands/multi-agent/local-autopilot.md +34 -34
- package/pipeline/commands/multi-agent/local.md +24 -25
- package/pipeline/commands/multi-agent/log.md +6 -6
- package/pipeline/commands/multi-agent/manual-test.md +3 -3
- package/pipeline/commands/multi-agent/prune-logs.md +60 -0
- package/pipeline/commands/multi-agent/purge.md +10 -7
- package/pipeline/commands/multi-agent/refactor.md +9 -9
- package/pipeline/commands/multi-agent/refs/analysis-template.md +1062 -0
- package/pipeline/commands/multi-agent/refs/android-guide.md +15 -13
- package/pipeline/commands/multi-agent/refs/audit-guide.md +20 -20
- package/pipeline/commands/multi-agent/refs/backend-guide.md +9 -9
- package/pipeline/commands/multi-agent/refs/channels/confluence.md +17 -17
- package/pipeline/commands/multi-agent/refs/channels/issue-comment.md +30 -30
- package/pipeline/commands/multi-agent/refs/channels/jira.md +15 -15
- package/pipeline/commands/multi-agent/refs/channels/pr-review-actions.md +19 -17
- package/pipeline/commands/multi-agent/refs/channels/pr.md +22 -22
- package/pipeline/commands/multi-agent/refs/channels/wiki.md +19 -19
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +11 -11
- package/pipeline/commands/multi-agent/refs/conventions-defaults.md +179 -0
- package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +35 -33
- package/pipeline/commands/multi-agent/refs/features/dev-critic.md +5 -5
- package/pipeline/commands/multi-agent/refs/features/external-context-injection.md +6 -6
- package/pipeline/commands/multi-agent/refs/features/model-fallback.md +73 -0
- package/pipeline/commands/multi-agent/refs/features/plan-todos.md +1 -1
- package/pipeline/commands/multi-agent/refs/features/prior-fix-detection.md +4 -4
- package/pipeline/commands/multi-agent/refs/features/repo-map.md +6 -6
- package/pipeline/commands/multi-agent/refs/features/shadow-git.md +2 -2
- package/pipeline/commands/multi-agent/refs/frontend-guide.md +16 -16
- package/pipeline/commands/multi-agent/refs/issue-jira-triad.md +18 -18
- package/pipeline/commands/multi-agent/refs/keychain.md +18 -8
- package/pipeline/commands/multi-agent/refs/knowledge.md +9 -9
- package/pipeline/commands/multi-agent/refs/multi-repo-integration-build.md +19 -19
- package/pipeline/commands/multi-agent/refs/phases/log-format.md +29 -9
- package/pipeline/commands/multi-agent/refs/phases/modes.md +33 -33
- package/pipeline/commands/multi-agent/refs/phases/operations.md +11 -11
- package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +93 -57
- package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +59 -28
- package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +115 -63
- package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +99 -36
- package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +160 -63
- package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +33 -18
- package/pipeline/commands/multi-agent/refs/phases/phase-6-commit.md +45 -43
- package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +54 -28
- package/pipeline/commands/multi-agent/refs/phases.md +17 -17
- package/pipeline/commands/multi-agent/refs/picker-contract.md +65 -0
- package/pipeline/commands/multi-agent/refs/progress-contract.md +37 -21
- package/pipeline/commands/multi-agent/refs/rules.md +83 -25
- package/pipeline/commands/multi-agent/refs/swiftui-guide.md +32 -30
- package/pipeline/commands/multi-agent/refs/tracker-contract.md +54 -30
- package/pipeline/commands/multi-agent/refs/wiki-capture.md +36 -33
- package/pipeline/commands/multi-agent/resume.md +9 -9
- package/pipeline/commands/multi-agent/review.md +24 -24
- package/pipeline/commands/multi-agent/scan.md +10 -10
- package/pipeline/commands/multi-agent/search.md +8 -8
- package/pipeline/commands/multi-agent/setup.md +111 -84
- package/pipeline/commands/multi-agent/stack.md +5 -5
- package/pipeline/commands/multi-agent/status.md +5 -5
- package/pipeline/commands/multi-agent/sync.md +123 -111
- package/pipeline/commands/multi-agent/test.md +6 -6
- package/pipeline/commands/multi-agent/update.md +1 -1
- package/pipeline/commands/multi-agent.md +66 -60
- package/pipeline/commands/sim-test.md +14 -14
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +1 -1
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +2 -2
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +2 -2
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +1 -1
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +2 -2
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +3 -3
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +4 -4
- package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +1 -1
- package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +1 -1
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/task.json +12 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-2-plan.json +40 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/task.json +12 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-review.json +28 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-triage.json +27 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/task.json +12 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-2-plan.json +41 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-review.json +12 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-triage.json +6 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/task.json +12 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-review.json +28 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-triage.json +27 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/task.json +12 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-1-analysis.json +25 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-2-plan.json +31 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-review.json +12 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-triage.json +18 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/task.json +12 -0
- package/pipeline/eval/golden-tasks/README.md +14 -14
- package/pipeline/eval/intent-cases.json +40 -0
- package/pipeline/eval/run-metrics-fixture.json +46 -0
- package/pipeline/eval/triage/01-empty-findings/notes.md +1 -1
- package/pipeline/eval/triage/02-real-blocker/notes.md +2 -2
- package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +1 -1
- package/pipeline/eval/triage/04-false-positive-reject/notes.md +1 -1
- package/pipeline/eval/triage/05-mixed-classification/notes.md +2 -2
- package/pipeline/eval/triage/06-severity-mismatch/notes.md +2 -2
- package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +1 -1
- package/pipeline/eval/triage/08-style-misclassified/notes.md +1 -1
- package/pipeline/eval/triage/09-cascading-finding/notes.md +2 -2
- package/pipeline/eval/triage/10-deferred-crossref/notes.md +2 -2
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +3 -3
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +2 -2
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +5 -5
- package/pipeline/eval/triage/README.md +4 -4
- package/pipeline/lib/account-resolver.sh +3 -3
- package/pipeline/lib/ask-choice.sh +98 -0
- package/pipeline/lib/channels-multi-repo.sh +3 -3
- package/pipeline/lib/classify-intent.sh +110 -0
- package/pipeline/lib/context-link-extractor.sh +3 -3
- package/pipeline/lib/credential-store-resolver.sh +3 -3
- package/pipeline/lib/credential-store.sh +9 -5
- package/pipeline/lib/extract-conventions.sh +1034 -0
- package/pipeline/lib/fetch-confluence.sh +3 -3
- package/pipeline/lib/fetch-crashlytics.sh +5 -5
- package/pipeline/lib/fetch-fortify.sh +5 -21
- package/pipeline/lib/fetch-swagger.sh +5 -5
- package/pipeline/lib/figma-screenshot.sh +536 -0
- package/pipeline/lib/issue-fetcher.sh +46 -20
- package/pipeline/lib/md2confluence-v3.py +1076 -0
- package/pipeline/lib/multi-repo-pipeline.sh +13 -22
- package/pipeline/lib/plan-todos.sh +7 -7
- package/pipeline/lib/post-pr-review.sh +53 -21
- package/pipeline/lib/repo-cache.sh +5 -5
- package/pipeline/lib/review-watch.sh +17 -13
- package/pipeline/lib/shadow-git.sh +7 -7
- package/pipeline/lib/submodule-detector.sh +3 -3
- package/pipeline/lib/vercel-deploy.sh +28 -15
- package/pipeline/preferences-template.json +21 -4
- package/pipeline/rules/app-store-guidelines.md +2 -2
- package/pipeline/rules/code-style.md +6 -6
- package/pipeline/rules/figma-pipeline.md +100 -2
- package/pipeline/rules/kotlin-android.md +8 -8
- package/pipeline/rules/security.md +4 -4
- package/pipeline/rules/tdd.md +1 -1
- package/pipeline/rules/testing.md +5 -5
- package/pipeline/schemas/agent-state.schema.json +55 -20
- package/pipeline/schemas/analysis-output.schema.json +7 -2
- package/pipeline/schemas/analysis-spec.schema.json +484 -0
- package/pipeline/schemas/clarify-output.schema.json +5 -5
- package/pipeline/schemas/conventions-output.schema.json +70 -0
- package/pipeline/schemas/dev-critic-output.schema.json +2 -2
- package/pipeline/schemas/diff-risk.schema.json +3 -3
- package/pipeline/schemas/figma-project-config.schema.json +3 -3
- package/pipeline/schemas/learnings-ledger.schema.json +39 -0
- package/pipeline/schemas/migrations/README.md +2 -2
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +5 -5
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +3 -3
- package/pipeline/schemas/migrations/prefs-2.1.0-to-2.2.0.mjs +4 -4
- package/pipeline/schemas/migrations/prefs-2.2.0-to-2.3.0.mjs +5 -5
- package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +3 -3
- package/pipeline/schemas/plan-todos.schema.json +4 -4
- package/pipeline/schemas/planning-output.schema.json +3 -3
- package/pipeline/schemas/prefs.schema.json +97 -13
- package/pipeline/schemas/reviewer-output.schema.json +7 -3
- package/pipeline/schemas/test-gap.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +8 -8
- package/pipeline/schemas/triage-corpus.schema.json +1 -1
- package/pipeline/schemas/triage-output.schema.json +44 -6
- package/pipeline/scripts/README.md +64 -64
- package/pipeline/scripts/aggregate-metrics.mjs +55 -16
- package/pipeline/scripts/audit-log-rotate.sh +3 -3
- package/pipeline/scripts/audit-log.sh +20 -7
- package/pipeline/scripts/benchmark-phase-0.sh +6 -6
- package/pipeline/scripts/build-skills-index.mjs +15 -15
- package/pipeline/scripts/check-md-links.mjs +59 -0
- package/pipeline/scripts/classify-plan-safety.mjs +24 -18
- package/pipeline/scripts/cost-budget-check.mjs +160 -0
- package/pipeline/scripts/cost-table.json +23 -13
- package/pipeline/scripts/diff-explain.mjs +12 -12
- package/pipeline/scripts/diff-risk-score.mjs +18 -17
- package/pipeline/scripts/eval-golden-tasks-live.mjs +13 -10
- package/pipeline/scripts/eval-golden-tasks.mjs +3 -14
- package/pipeline/scripts/eval-intent.mjs +103 -0
- package/pipeline/scripts/eval-triage.mjs +3 -3
- package/pipeline/scripts/evidence-gate.mjs +155 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +9 -9
- package/pipeline/scripts/gc-tmp.sh +102 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +27 -21
- package/pipeline/scripts/gen-skills-index.mjs +6 -6
- package/pipeline/scripts/github-ssh-setup.sh +1 -1
- package/pipeline/scripts/keychain-save.sh +1 -1
- package/pipeline/scripts/keychain.py +6 -6
- package/pipeline/scripts/learnings-ledger.mjs +284 -0
- package/pipeline/scripts/lint-skills.mjs +80 -0
- package/pipeline/scripts/log-metric.sh +18 -9
- package/pipeline/scripts/match-skills.mjs +13 -8
- package/pipeline/scripts/memory-load.sh +3 -3
- package/pipeline/scripts/memory-save.sh +5 -5
- package/pipeline/scripts/migrate-prefs.mjs +17 -17
- package/pipeline/scripts/migrate-state.mjs +12 -12
- package/pipeline/scripts/output-quality-check.sh +7 -7
- package/pipeline/scripts/phase-banner.sh +5 -5
- package/pipeline/scripts/phase-tracker.sh +90 -53
- package/pipeline/scripts/pre-commit-check.sh +45 -5
- package/pipeline/scripts/pre-push-check.sh +7 -7
- package/pipeline/scripts/prune-logs.sh +118 -0
- package/pipeline/scripts/render-agent-log-cost.sh +55 -18
- package/pipeline/scripts/render-cost-summary.sh +9 -9
- package/pipeline/scripts/render-work-summary.sh +4 -4
- package/pipeline/scripts/repo-map.mjs +9 -9
- package/pipeline/scripts/run-aggregator.mjs +7 -6
- package/pipeline/scripts/run-metrics.mjs +129 -0
- package/pipeline/scripts/run-smokes.mjs +76 -0
- package/pipeline/scripts/scan-skills.sh +11 -11
- package/pipeline/scripts/search-logs.sh +8 -8
- package/pipeline/scripts/sign-skills.sh +2 -2
- package/pipeline/scripts/smoke-adapters.sh +79 -10
- package/pipeline/scripts/smoke-add-detail.sh +5 -5
- package/pipeline/scripts/smoke-agent-log-cost.sh +85 -6
- package/pipeline/scripts/smoke-agent-model-routing.sh +3 -3
- package/pipeline/scripts/smoke-ask-choice.sh +42 -0
- package/pipeline/scripts/smoke-bitbucket-contract.sh +19 -3
- package/pipeline/scripts/smoke-changelog-version.sh +47 -0
- package/pipeline/scripts/smoke-channels-flow.sh +1 -1
- package/pipeline/scripts/smoke-ci-workflows.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +3 -3
- package/pipeline/scripts/smoke-commands-skills-parity.sh +4 -4
- package/pipeline/scripts/smoke-community-gates.sh +75 -0
- package/pipeline/scripts/smoke-compliance-skills.sh +5 -5
- package/pipeline/scripts/smoke-cost-budget.sh +70 -0
- package/pipeline/scripts/smoke-cost-summary.sh +4 -4
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +50 -9
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +5 -5
- package/pipeline/scripts/smoke-delete-flow.sh +5 -5
- package/pipeline/scripts/smoke-dev-critic.sh +2 -2
- package/pipeline/scripts/smoke-diff-explain.sh +22 -3
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-dynamic-skill-loading.sh +1 -1
- package/pipeline/scripts/smoke-eval-live.sh +4 -4
- package/pipeline/scripts/smoke-evidence-gate.sh +93 -0
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +1 -1
- package/pipeline/scripts/smoke-extract-conventions.sh +163 -0
- package/pipeline/scripts/smoke-figma-android-parity.sh +1 -1
- package/pipeline/scripts/smoke-figma-credential-store.sh +3 -3
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +12 -12
- package/pipeline/scripts/smoke-figma-dispatch.sh +5 -5
- package/pipeline/scripts/smoke-figma-sync.sh +1 -1
- package/pipeline/scripts/smoke-gate-hooks.sh +56 -0
- package/pipeline/scripts/smoke-gc-tmp.sh +84 -0
- package/pipeline/scripts/smoke-identity-isolation.sh +7 -7
- package/pipeline/scripts/smoke-install-layout.sh +10 -10
- package/pipeline/scripts/smoke-intent-guard.sh +86 -0
- package/pipeline/scripts/smoke-issue-comment-template.sh +3 -3
- package/pipeline/scripts/smoke-issue-jira-triad.sh +1 -1
- package/pipeline/scripts/smoke-keychain.sh +6 -6
- package/pipeline/scripts/smoke-language-axis.sh +2 -2
- package/pipeline/scripts/smoke-learnings-ledger.sh +86 -0
- package/pipeline/scripts/smoke-lib-scripts.sh +2 -2
- package/pipeline/scripts/smoke-mcp-gate.sh +68 -0
- package/pipeline/scripts/smoke-md-links.sh +8 -0
- package/pipeline/scripts/smoke-md2confluence.sh +126 -0
- package/pipeline/scripts/smoke-metrics-cache-ratio.sh +72 -0
- package/pipeline/scripts/smoke-migrate-state.sh +10 -10
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +7 -4
- package/pipeline/scripts/smoke-model-fallback.sh +80 -0
- package/pipeline/scripts/smoke-multi-repo-integration.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +115 -0
- package/pipeline/scripts/smoke-no-token-prompt.sh +31 -15
- package/pipeline/scripts/smoke-pat-audit.sh +26 -5
- package/pipeline/scripts/smoke-per-repo-memory.sh +1 -1
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +2 -2
- package/pipeline/scripts/smoke-phase-banner.sh +1 -1
- package/pipeline/scripts/smoke-phase-tracker.sh +1 -1
- package/pipeline/scripts/smoke-phase0-bridge-contract.sh +4 -4
- package/pipeline/scripts/smoke-phase4-triage.sh +94 -7
- package/pipeline/scripts/smoke-plan-approval-gate.sh +3 -3
- package/pipeline/scripts/smoke-plan-safety.sh +1 -1
- package/pipeline/scripts/smoke-plan-todos.sh +7 -4
- package/pipeline/scripts/smoke-pr-review-actions.sh +2 -2
- package/pipeline/scripts/smoke-pre-commit.sh +34 -2
- package/pipeline/scripts/smoke-pref-migration.sh +1 -1
- package/pipeline/scripts/smoke-prefs-language.sh +5 -5
- package/pipeline/scripts/smoke-progress-contract.sh +3 -3
- package/pipeline/scripts/smoke-prune-logs.sh +87 -0
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-readme-counts.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +9 -9
- package/pipeline/scripts/smoke-review-watch.sh +12 -0
- package/pipeline/scripts/smoke-run-aggregator.sh +7 -7
- package/pipeline/scripts/smoke-run-metrics.sh +50 -0
- package/pipeline/scripts/smoke-schema-validation.sh +18 -11
- package/pipeline/scripts/smoke-search.sh +5 -5
- package/pipeline/scripts/smoke-shared-runtime.sh +108 -0
- package/pipeline/scripts/smoke-skill-authoring.sh +13 -13
- package/pipeline/scripts/smoke-skill-language.sh +4 -4
- package/pipeline/scripts/smoke-skill-manifest.sh +2 -2
- package/pipeline/scripts/smoke-skill-scan.sh +2 -2
- package/pipeline/scripts/smoke-stack-swap.sh +2 -2
- package/pipeline/scripts/smoke-subagent-validators.sh +8 -5
- package/pipeline/scripts/smoke-sync-adapters.sh +1 -1
- package/pipeline/scripts/smoke-sync-delegation.sh +7 -7
- package/pipeline/scripts/smoke-sync-parity.sh +1 -1
- package/pipeline/scripts/smoke-tasklist-ordering.sh +7 -7
- package/pipeline/scripts/smoke-telemetry.sh +1 -1
- package/pipeline/scripts/smoke-test-gap.sh +5 -5
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-tracker-contract.sh +6 -6
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +9 -1
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-contradiction.sh +1 -1
- package/pipeline/scripts/smoke-validator-gates.sh +164 -0
- package/pipeline/scripts/smoke-vercel-deploy-redact.sh +11 -11
- package/pipeline/scripts/smoke-wiki-integration.sh +2 -2
- package/pipeline/scripts/smoke-work-summary.sh +3 -3
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/smoke-write-state.sh +2 -2
- package/pipeline/scripts/stack-swap.sh +3 -3
- package/pipeline/scripts/sync-adapters.mjs +37 -10
- package/pipeline/scripts/sync-parity-check.sh +6 -6
- package/pipeline/scripts/test-gap-scan.mjs +11 -13
- package/pipeline/scripts/token-budget-report.mjs +4 -4
- package/pipeline/scripts/triage-memory.mjs +6 -6
- package/pipeline/scripts/uninstall.mjs +42 -4
- package/pipeline/scripts/update-issue-progress.sh +2 -2
- package/pipeline/scripts/validate-analysis.mjs +19 -21
- package/pipeline/scripts/validate-diff-risk.mjs +4 -4
- package/pipeline/scripts/validate-planning.mjs +3 -3
- package/pipeline/scripts/validate-reviewer.mjs +4 -4
- package/pipeline/scripts/validate-schemas.mjs +4 -4
- package/pipeline/scripts/validate-test-gap.mjs +4 -4
- package/pipeline/scripts/validate-triage.mjs +68 -9
- package/pipeline/scripts/verify-skills.sh +7 -7
- package/pipeline/scripts/write-state.mjs +49 -11
- package/pipeline/skills/.skill-manifest.json +245 -149
- package/pipeline/skills/.skills-index.json +236 -47
- package/pipeline/skills/figma-android/README.md +5 -5
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +3 -3
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +8 -8
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +4 -4
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +5 -5
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +14 -14
- package/pipeline/skills/figma-common/README.md +29 -29
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +20 -15
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +35 -30
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +35 -30
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +20 -20
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +32 -32
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +9 -9
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +25 -20
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +11 -6
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +30 -25
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +9 -4
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +27 -22
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +38 -38
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +39 -34
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +20 -15
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +44 -39
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +6 -6
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +30 -30
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +1 -1
- package/pipeline/skills/figma-common/figma-review/SKILL.md +31 -26
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +11 -11
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +5 -5
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +6 -6
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +12 -12
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +4 -4
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +1 -1
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +48 -48
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +42 -37
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +23 -18
- package/pipeline/skills/figma-common/performance-start/SKILL.md +52 -47
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +68 -68
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +42 -37
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +16 -16
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +15 -15
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +9 -9
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +15 -15
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +38 -38
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +19 -19
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +25 -25
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +7 -7
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +38 -38
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +29 -29
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +57 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +10 -10
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +16 -16
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +23 -23
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +26 -26
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +43 -43
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +17 -17
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +19 -19
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +15 -15
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +39 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +7 -7
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +29 -29
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +31 -31
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +16 -16
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +49 -49
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +8 -8
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +10 -10
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +11 -11
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +14 -14
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +9 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +26 -26
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +41 -41
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +8 -8
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +7 -7
- package/pipeline/skills/shared/README.md +62 -41
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +39 -39
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +44 -44
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +182 -176
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +55 -0
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +48 -0
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +16 -16
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +48 -0
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +40 -40
- package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +33 -30
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +26 -26
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +20 -20
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +15 -15
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +10 -10
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +18 -18
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +9 -9
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +20 -20
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +63 -0
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +16 -13
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +110 -110
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +13 -13
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +18 -18
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +13 -13
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +33 -30
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +9 -9
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +79 -79
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +10 -10
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +41 -0
- package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +53 -0
- package/pipeline/skills/shared/external/agentflow/SKILL.md +9 -9
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +113 -52
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +41 -0
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +23 -16
- package/pipeline/skills/shared/external/app-clips/SKILL.md +85 -354
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +135 -0
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +125 -0
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +113 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +152 -59
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +161 -118
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +289 -392
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +174 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +191 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +57 -107
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +35 -12
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +28 -26
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +53 -62
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +7 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +4 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +32 -12
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +34 -30
- package/pipeline/skills/shared/external/authentication/SKILL.md +134 -138
- package/pipeline/skills/shared/external/authentication/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +56 -29
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +183 -0
- package/pipeline/skills/shared/external/avkit/SKILL.md +497 -0
- package/pipeline/skills/shared/external/avkit/evals/evals.json +55 -0
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +668 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +29 -29
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +44 -19
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +136 -99
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +27 -8
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +7 -6
- package/pipeline/skills/shared/external/clean-code/SKILL.md +2 -2
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +63 -56
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +7 -4
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +31 -11
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +41 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +51 -51
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +70 -65
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +25 -1
- package/pipeline/skills/shared/external/core-data/SKILL.md +496 -0
- package/pipeline/skills/shared/external/core-data/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +47 -14
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +47 -16
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +43 -54
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +32 -2
- package/pipeline/skills/shared/external/coreml/SKILL.md +89 -48
- package/pipeline/skills/shared/external/coreml/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +82 -37
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +493 -0
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +602 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +6 -5
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +77 -47
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +42 -34
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +2 -2
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +136 -176
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +240 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +73 -34
- package/pipeline/skills/shared/external/energykit/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +80 -38
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +67 -53
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +53 -3
- package/pipeline/skills/shared/external/healthkit/SKILL.md +57 -124
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +82 -1
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +43 -41
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +13 -8
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +5 -4
- package/pipeline/skills/shared/external/humanizer/SKILL.md +4 -4
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +174 -18
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +262 -4
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +117 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +141 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +67 -14
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +20 -3
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +131 -22
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +69 -22
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +28 -16
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +354 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +69 -44
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +35 -69
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +8 -8
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +485 -0
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +316 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +120 -131
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/live-activities/references/{live-activity-patterns.md → activitykit-patterns.md} +148 -63
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +40 -21
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/mapkit-location/references/{corelocation-patterns.md → mapkit-corelocation-patterns.md} +88 -41
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +27 -24
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +129 -172
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +180 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +45 -18
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +26 -6
- package/pipeline/skills/shared/external/natural-language/SKILL.md +48 -18
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +20 -7
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +4 -3
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +156 -66
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +51 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +69 -19
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +499 -0
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +42 -0
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +844 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +122 -28
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +49 -18
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +100 -51
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +48 -8
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +13 -15
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +4 -4
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +2 -2
- package/pipeline/skills/shared/external/photos-camera-media/references/{photospicker-patterns.md → photokit-patterns.md} +3 -3
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +45 -48
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +22 -33
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +56 -37
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +4 -3
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -0
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +74 -53
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +10 -10
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +21 -20
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +81 -64
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +48 -9
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +118 -104
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +171 -0
- package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +93 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/spm-analysis-checks.md +105 -0
- package/pipeline/skills/shared/external/spm-build-analysis/scripts/check_spm_pins.py +118 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +110 -44
- package/pipeline/skills/shared/external/storekit/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +94 -43
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +82 -33
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +449 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +164 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +219 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +184 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +158 -0
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +499 -0
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +52 -40
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +92 -11
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +43 -16
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +43 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +50 -30
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +11 -4
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +113 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +150 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/{swift-6-2-concurrency.md → concurrency-patterns.md} +22 -11
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +52 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +21 -15
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/async-streams.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bridging.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bug-patterns.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +8 -8
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/diagnostics.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/hotspots.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +4 -4
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/unstructured.md +3 -3
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +339 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +33 -34
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +97 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +19 -6
- package/pipeline/skills/shared/external/swift-security/SKILL.md +195 -0
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +595 -0
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +611 -0
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +708 -0
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +573 -0
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +752 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +538 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +530 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +543 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +620 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +515 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +496 -0
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +747 -0
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +566 -0
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +813 -0
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +97 -297
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +123 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +162 -34
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +3 -3
- package/pipeline/skills/shared/external/swift-testing-pro/references/core-rules.md +2 -2
- package/pipeline/skills/shared/external/swift-testing-pro/references/migrating-from-xctest.md +5 -5
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +3 -3
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +5 -5
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +44 -23
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +3 -3
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +75 -0
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +54 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +14 -10
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +5 -5
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swiftdata-pro/references/class-inheritance.md +2 -2
- package/pipeline/skills/shared/external/swiftdata-pro/references/cloudkit.md +1 -1
- package/pipeline/skills/shared/external/swiftdata-pro/references/core-rules.md +6 -6
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +337 -0
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +297 -0
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +170 -0
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +307 -0
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +35 -0
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +306 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +56 -65
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +48 -44
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +6 -6
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +13 -13
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +3 -3
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +1 -1
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +4 -4
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +2 -2
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +1 -1
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +16 -16
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +11 -11
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +7 -7
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +5 -5
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +6 -6
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +38 -16
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +13 -3
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +32 -28
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +1 -1
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +202 -41
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +16 -25
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +71 -26
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +284 -65
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +387 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +10 -10
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +15 -3
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +2 -2
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +1 -1
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +51 -25
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +78 -6
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +161 -16
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +85 -27
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +37 -33
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +39 -51
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +204 -30
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +226 -21
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +220 -20
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +159 -34
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +27 -0
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/accessibility.md +4 -4
- package/pipeline/skills/shared/external/swiftui-pro/references/api.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/data.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/design.md +4 -4
- package/pipeline/skills/shared/external/swiftui-pro/references/hygiene.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/navigation.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/performance.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/swift.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/views.md +2 -2
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +12 -12
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +3 -3
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +1 -1
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +11 -11
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +124 -10
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +2 -1
- package/pipeline/skills/shared/external/tipkit/SKILL.md +3 -3
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +9 -9
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +17 -16
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +11 -11
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +1 -1
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +5 -5
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +7 -6
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +3 -3
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +9 -9
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +8 -7
- package/pipeline/skills/shared/external/web-testing/SKILL.md +7 -6
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +23 -17
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +99 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +89 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/references/benchmark-artifacts.md +94 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/references/benchmarking-workflow.md +67 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +230 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +219 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/fix-patterns.md +290 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +157 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/benchmark-artifacts.md +94 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/orchestration-report-template.md +143 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/diagnose_compilation.py +273 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/generate_optimization_report.py +533 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +90 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/code-compilation-checks.md +106 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/scripts/diagnose_compilation.py +273 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +77 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/project-audit-checks.md +101 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/recommendation-format.md +85 -0
- package/pipeline/skills/skills-index.md +213 -192
- package/docs/GENERICITY-REVIEW.md +0 -277
- package/docs/STABILITY-FIX-PLAN.md +0 -168
- package/pipeline/scripts/.last-figma-sync-plan.json +0 -23
- package/pipeline/scripts/README-figma-smokes.md +0 -34
- package/pipeline/scripts/figma-placeholder-map.json +0 -191
- package/pipeline/scripts/import-figma-skills.sh +0 -253
- package/pipeline/scripts/smoke-figma-config-schema.sh +0 -144
- package/pipeline/scripts/smoke-figma-skill-import.sh +0 -174
- package/pipeline/scripts/smoke-install-leak-gate.sh +0 -125
- package/pipeline/scripts/smoke-personal-data.sh +0 -82
- package/pipeline/scripts/sync-figma-source.sh +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.json +0 -94
- package/pipeline/skills/shared/external/app-store-review/references/code-signing.md +0 -259
- package/pipeline/skills/shared/external/app-store-review/references/rejection-patterns.md +0 -152
- package/pipeline/skills/shared/external/pencilkit-drawing/references/paperkit-integration.md +0 -376
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""phase6-finalize.py
|
|
2
|
+
"""phase6-finalize.py - Post-Phase 6 registry update.
|
|
3
3
|
|
|
4
4
|
Marks status.<platform>.codeConnect=true in the component registry JSON
|
|
5
5
|
after `figma connect publish` succeeds. Also mirrors to the legacy
|
|
@@ -8,7 +8,7 @@ dashboard and register-icons-codeconnect.py keep working unchanged.
|
|
|
8
8
|
|
|
9
9
|
CLI interface is BACKWARD-COMPATIBLE with the prior version of this
|
|
10
10
|
script so `.instructions/figma/figma-to-swiftui/phases/phase-6-code-connect.md`
|
|
11
|
-
can keep calling it verbatim
|
|
11
|
+
can keep calling it verbatim - only the internals changed.
|
|
12
12
|
|
|
13
13
|
Usage:
|
|
14
14
|
python3 phase6-finalize.py \\
|
|
@@ -18,8 +18,8 @@ Usage:
|
|
|
18
18
|
[--platform ios]
|
|
19
19
|
|
|
20
20
|
Exit codes:
|
|
21
|
-
0
|
|
22
|
-
1
|
|
21
|
+
0 - Success
|
|
22
|
+
1 - Error
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
25
|
import argparse
|
|
@@ -90,7 +90,7 @@ def ensure_legacy_shell(
|
|
|
90
90
|
|
|
91
91
|
def main() -> int:
|
|
92
92
|
parser = argparse.ArgumentParser(
|
|
93
|
-
description="Phase 6 finalize
|
|
93
|
+
description="Phase 6 finalize - update registry codeConnect flag",
|
|
94
94
|
)
|
|
95
95
|
parser.add_argument("--node-id", required=True)
|
|
96
96
|
parser.add_argument("--file-key", required=True)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""phase7-finalize.py
|
|
2
|
+
"""phase7-finalize.py - Post-Phase 7 registry update.
|
|
3
3
|
|
|
4
4
|
Marks status.<platform>.wiki=true in the component registry JSON after
|
|
5
5
|
Phase 7 writes the wiki page for a component.
|
|
@@ -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
|
|
18
|
+
1 - Error
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
21
|
import argparse
|
|
@@ -51,7 +51,7 @@ def default_registry_dir() -> Path:
|
|
|
51
51
|
|
|
52
52
|
def main() -> int:
|
|
53
53
|
parser = argparse.ArgumentParser(
|
|
54
|
-
description="Phase 7 finalize
|
|
54
|
+
description="Phase 7 finalize - update registry status.<platform>.wiki",
|
|
55
55
|
)
|
|
56
56
|
parser.add_argument("--node-id", required=True)
|
|
57
57
|
parser.add_argument("--platform", default="ios", choices=["ios", "android"])
|
|
@@ -30,9 +30,9 @@ TOKENS_FILE = os.path.join(
|
|
|
30
30
|
CONFIG_PKG, "iOS", "Sources", "UIAssets", "Generated", "UIAssetsGeneratedTokens.swift"
|
|
31
31
|
)
|
|
32
32
|
|
|
33
|
-
FILE_KEY = "
|
|
34
|
-
CONFLUENCE_PAGE = "{confluence.baseUrl}/display/
|
|
35
|
-
CONFLUENCE_PAGE_ID = "
|
|
33
|
+
FILE_KEY = "{FIGMA_FILE_KEY}"
|
|
34
|
+
CONFLUENCE_PAGE = "{confluence.baseUrl}/display/{SPACE}/Custom+Icons"
|
|
35
|
+
CONFLUENCE_PAGE_ID = "{CUSTOM_ICONS_PAGE_ID}"
|
|
36
36
|
TODAY = date.today().isoformat()
|
|
37
37
|
|
|
38
38
|
|
|
@@ -111,7 +111,7 @@ def main():
|
|
|
111
111
|
swift_name = swift_map.get(figma_name.strip())
|
|
112
112
|
if not swift_name:
|
|
113
113
|
unmatched += 1
|
|
114
|
-
print(f" SKIP: {figma_name} ({node_id})
|
|
114
|
+
print(f" SKIP: {figma_name} ({node_id}) - no Swift match")
|
|
115
115
|
continue
|
|
116
116
|
|
|
117
117
|
ios_name = f"Image.{swift_name}"
|
|
@@ -102,7 +102,7 @@ def mcp_call(token, tool_name, arguments):
|
|
|
102
102
|
if init_resp.status != 200:
|
|
103
103
|
body = init_resp.read().decode()
|
|
104
104
|
conn.close()
|
|
105
|
-
raise RuntimeError(f"MCP init failed: HTTP {init_resp.status}
|
|
105
|
+
raise RuntimeError(f"MCP init failed: HTTP {init_resp.status} - {body}")
|
|
106
106
|
init_resp.read() # drain
|
|
107
107
|
conn.close()
|
|
108
108
|
|
|
@@ -120,9 +120,9 @@ def mcp_call(token, tool_name, arguments):
|
|
|
120
120
|
conn2.close()
|
|
121
121
|
|
|
122
122
|
if resp.status != 200:
|
|
123
|
-
raise RuntimeError(f"MCP {tool_name}: HTTP {resp.status}
|
|
123
|
+
raise RuntimeError(f"MCP {tool_name}: HTTP {resp.status} - {raw[:300]}")
|
|
124
124
|
|
|
125
|
-
# Parse SSE
|
|
125
|
+
# Parse SSE - extract JSON from "data: " lines
|
|
126
126
|
# The JSON payload may span multiple physical lines (text content with \n),
|
|
127
127
|
# so we extract everything after the first "data: " prefix until valid JSON.
|
|
128
128
|
texts = []
|
|
@@ -205,13 +205,13 @@ def main():
|
|
|
205
205
|
"clientLanguages": "swift",
|
|
206
206
|
"clientFrameworks": "swiftui",
|
|
207
207
|
}
|
|
208
|
-
# Disable Code Connect in design context
|
|
208
|
+
# Disable Code Connect in design context - when Code Connect is enabled,
|
|
209
209
|
# the returned snippets override the original Tailwind reference code we
|
|
210
210
|
# need for layout/style extraction. We fetch Code Connect separately
|
|
211
211
|
# via get_code_connect_map.
|
|
212
212
|
if args.tool == "get_design_context":
|
|
213
213
|
arguments["disableCodeConnect"] = True
|
|
214
|
-
# Filter Code Connect by SwiftUI
|
|
214
|
+
# Filter Code Connect by SwiftUI - without this, MCP returns all platforms
|
|
215
215
|
# (e.g. Compose) and we get Android snippets instead of iOS ones.
|
|
216
216
|
if args.tool == "get_code_connect_map":
|
|
217
217
|
arguments["codeConnectLabel"] = "SwiftUI"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""resolve-author-logins.py
|
|
2
|
+
"""resolve-author-logins.py - resolve the 26 distinct git-author names
|
|
3
3
|
to real GitHub logins via the commits API.
|
|
4
4
|
|
|
5
5
|
Reads temp/authors-registry.json (output of build-author-registry.py),
|
|
@@ -36,7 +36,7 @@ Output: temp/author-login-map.json
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
Idempotent
|
|
39
|
+
Idempotent - re-running uses the existing map file as a cache and
|
|
40
40
|
only queries API for names that don't have a login yet. Pass
|
|
41
41
|
--refresh to re-resolve everything.
|
|
42
42
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# run-uicomponents-tests.sh
|
|
2
|
+
# run-uicomponents-tests.sh - Portable UIComponentsTests runner
|
|
3
3
|
#
|
|
4
4
|
# Runs tests via the UIComponents-Package scheme inside the SPM package directory.
|
|
5
5
|
# This avoids the need to "show" the UIComponentsTests scheme in Xcode's Manage Schemes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""
|
|
3
|
-
sidebar-generator.py
|
|
3
|
+
sidebar-generator.py - Idempotent _Sidebar.md generator for GitHub Wiki.
|
|
4
4
|
|
|
5
5
|
Scans the wiki directory structure and produces a deterministic _Sidebar.md.
|
|
6
|
-
No external dependencies (registry, frontmatter, etc.)
|
|
6
|
+
No external dependencies (registry, frontmatter, etc.) - purely filesystem-based.
|
|
7
7
|
|
|
8
8
|
Usage:
|
|
9
9
|
python3 sidebar-generator.py [--wiki-root PATH] [--dry-run] [--check]
|
|
@@ -64,7 +64,7 @@ def collect_components(section_root: Path) -> Dict[str, List[str]]:
|
|
|
64
64
|
"""
|
|
65
65
|
Walk a section folder and return {subsection_name: [component_names]}.
|
|
66
66
|
|
|
67
|
-
The subsection is the "grouping folder"
|
|
67
|
+
The subsection is the "grouping folder" - the directory that contains
|
|
68
68
|
individual component folders (which themselves contain .md files).
|
|
69
69
|
|
|
70
70
|
Structure patterns handled:
|
|
@@ -123,7 +123,7 @@ def collect_components(section_root: Path) -> Dict[str, List[str]]:
|
|
|
123
123
|
result.setdefault(sub, []).append(child.name)
|
|
124
124
|
_scan(child, sub)
|
|
125
125
|
elif component_subdirs:
|
|
126
|
-
# Pure grouping folder
|
|
126
|
+
# Pure grouping folder - recurse.
|
|
127
127
|
if _is_intermediate_folder(child, base):
|
|
128
128
|
_scan(child, subsection_name)
|
|
129
129
|
else:
|
|
@@ -307,7 +307,7 @@ def main():
|
|
|
307
307
|
print("_Sidebar.md is up-to-date.")
|
|
308
308
|
sys.exit(0)
|
|
309
309
|
else:
|
|
310
|
-
print("_Sidebar.md is STALE
|
|
310
|
+
print("_Sidebar.md is STALE - needs regeneration.")
|
|
311
311
|
sys.exit(1)
|
|
312
312
|
|
|
313
313
|
if args.dry_run:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""update-issue-from-registry.py
|
|
2
|
+
"""update-issue-from-registry.py - full GitHub sync driven by registry.
|
|
3
3
|
|
|
4
4
|
Per-flag state is stored as 4 single-select Projects V2 fields on the
|
|
5
5
|
"Figma Components" board:
|
|
@@ -9,7 +9,7 @@ Per-flag state is stored as 4 single-select Projects V2 fields on the
|
|
|
9
9
|
Code Connect Gray / Green / Yellow
|
|
10
10
|
Wiki Gray / Green / Yellow
|
|
11
11
|
|
|
12
|
-
These fields replace the label-based approach
|
|
12
|
+
These fields replace the label-based approach - GitHub labels can't
|
|
13
13
|
vary color per-issue, but project fields can.
|
|
14
14
|
|
|
15
15
|
For one node-id, this script:
|
|
@@ -28,7 +28,7 @@ For one node-id, this script:
|
|
|
28
28
|
"Duplicate of #N" comment.
|
|
29
29
|
7. On the survivor: rewrites the `### Progress` table in the body +
|
|
30
30
|
sets the 4 project field values.
|
|
31
|
-
8. Idempotent
|
|
31
|
+
8. Idempotent - re-running after a successful sync produces no writes.
|
|
32
32
|
|
|
33
33
|
No label manipulation beyond what `gh issue create` applies at birth.
|
|
34
34
|
The 8 flag labels (`implemented:green` etc.) from the previous
|
|
@@ -45,8 +45,8 @@ Usage:
|
|
|
45
45
|
[--dry-run]
|
|
46
46
|
|
|
47
47
|
Exit codes:
|
|
48
|
-
0
|
|
49
|
-
1
|
|
48
|
+
0 - success
|
|
49
|
+
1 - error
|
|
50
50
|
"""
|
|
51
51
|
|
|
52
52
|
import argparse
|
|
@@ -61,13 +61,13 @@ from typing import List, Optional, Tuple
|
|
|
61
61
|
DEFAULT_REPO = "{github.componentsRepo}"
|
|
62
62
|
DEFAULT_TEAM_LABEL = "team:core"
|
|
63
63
|
|
|
64
|
-
# Projects V2
|
|
64
|
+
# Projects V2 - "Figma Components" board
|
|
65
65
|
PROJECT_ID = "{github.projectV2Id}"
|
|
66
66
|
|
|
67
67
|
# Repo-level labels for flag state. ONE per flag (4 total). Label
|
|
68
68
|
# present = flag is green (done and current). Label absent = flag is
|
|
69
69
|
# gray (not done) or yellow (stale). Yellow state is tracked on the
|
|
70
|
-
# Projects V2 fields only
|
|
70
|
+
# Projects V2 fields only - the label only fires on green, so the
|
|
71
71
|
# issue list stays uncluttered and shows "what's done."
|
|
72
72
|
FLAG_LABEL_NAMES = {
|
|
73
73
|
"implemented": "implemented",
|
|
@@ -134,7 +134,7 @@ FLAG_FIELDS: dict = {
|
|
|
134
134
|
},
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
# Status column
|
|
137
|
+
# Status column - single-select field that drives the kanban board view.
|
|
138
138
|
# Option ids captured at 2026-04-12 field expansion.
|
|
139
139
|
STATUS_FIELD_ID = "{github.projectV2Fields.status}"
|
|
140
140
|
STATUS_OPTIONS: dict = {
|
|
@@ -147,7 +147,7 @@ STATUS_OPTIONS: dict = {
|
|
|
147
147
|
"Stale": "457a1e74",
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
# Review Progress field
|
|
150
|
+
# Review Progress field - single-select replaces the review:0/4..review:4/4 labels.
|
|
151
151
|
REVIEW_PROGRESS_FIELD_ID = "PVTSSF_lADOD594Cs4BSatBzhBgYNs"
|
|
152
152
|
REVIEW_PROGRESS_OPTIONS: dict = {
|
|
153
153
|
"0/4": "d33443cf",
|
|
@@ -157,7 +157,7 @@ REVIEW_PROGRESS_OPTIONS: dict = {
|
|
|
157
157
|
"4/4": "04e0358a",
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
# Bugfix signal
|
|
160
|
+
# Bugfix signal - if any of these labels are present on the issue, the column is Bugfix.
|
|
161
161
|
BUGFIX_LABELS = {"review-fix", "bug", "bugfix"}
|
|
162
162
|
|
|
163
163
|
# Review label legacy fallback: review:0/4 .. review:4/4
|
|
@@ -211,7 +211,7 @@ def load_entry(registry_dir: Path, node_id: str) -> Optional[dict]:
|
|
|
211
211
|
|
|
212
212
|
def is_icon_entry(entry: dict) -> bool:
|
|
213
213
|
"""Icons have componentName starting with 'Image.' on iOS or 'Images.'
|
|
214
|
-
on android. Generated in bulk
|
|
214
|
+
on android. Generated in bulk - never get individual issues."""
|
|
215
215
|
cn = entry.get("componentName")
|
|
216
216
|
if isinstance(cn, dict):
|
|
217
217
|
ios = cn.get("ios") or ""
|
|
@@ -229,14 +229,14 @@ def is_icon_entry(entry: dict) -> bool:
|
|
|
229
229
|
|
|
230
230
|
|
|
231
231
|
# --------------------------------------------------------------------
|
|
232
|
-
# Pure logic
|
|
232
|
+
# Pure logic - flag state computation
|
|
233
233
|
# --------------------------------------------------------------------
|
|
234
234
|
|
|
235
235
|
def get_implemented_by(entry: dict, platform: str) -> Optional[str]:
|
|
236
236
|
"""Return status.<platform>.implementedBy if set, else None.
|
|
237
237
|
|
|
238
238
|
Stored as a plain string (git author name). May differ from a
|
|
239
|
-
real GitHub login
|
|
239
|
+
real GitHub login - the backfill stores whatever git log returned.
|
|
240
240
|
For this repo, git author names match GitHub logins (e.g.
|
|
241
241
|
M-ISPIRLI_tkgithub), so we pass them directly to gh as assignees.
|
|
242
242
|
"""
|
|
@@ -293,7 +293,7 @@ def compute_flag_states(entry: dict, platform: str) -> dict:
|
|
|
293
293
|
|
|
294
294
|
|
|
295
295
|
# --------------------------------------------------------------------
|
|
296
|
-
# Sub-component graph (for Blocked column)
|
|
296
|
+
# Sub-component graph (for Blocked column) - lazy loaded + cached
|
|
297
297
|
# --------------------------------------------------------------------
|
|
298
298
|
|
|
299
299
|
_sub_graph_cache: Optional[dict] = None
|
|
@@ -376,7 +376,7 @@ def is_blocked(
|
|
|
376
376
|
for sub_name in subs:
|
|
377
377
|
sub_nid_dash = name_index.get(sub_name)
|
|
378
378
|
if not sub_nid_dash:
|
|
379
|
-
continue # not in registry
|
|
379
|
+
continue # not in registry - can't assess, assume OK
|
|
380
380
|
sub_entry = load_entry(registry_dir, sub_nid_dash)
|
|
381
381
|
if not isinstance(sub_entry, dict):
|
|
382
382
|
continue
|
|
@@ -424,7 +424,7 @@ def has_bugfix_signal(label_names: List[str], open_bug_sub_issues: int = 0) -> b
|
|
|
424
424
|
|
|
425
425
|
Checking both makes the system self-healing: if someone forgets to
|
|
426
426
|
remove the label after all bugs are closed, the sub-issue count
|
|
427
|
-
catches it (and vice versa
|
|
427
|
+
catches it (and vice versa - if the label is missing but open bugs
|
|
428
428
|
exist, we still detect it).
|
|
429
429
|
"""
|
|
430
430
|
if any(name in BUGFIX_LABELS for name in label_names):
|
|
@@ -436,7 +436,7 @@ def count_open_bug_sub_issues(owner: str, name: str, issue_number: int) -> int:
|
|
|
436
436
|
"""Count open sub-issues that carry a bugfix label (review-fix, bug, bugfix).
|
|
437
437
|
|
|
438
438
|
Uses the existing list_sub_issues() helper to get sub-issue numbers,
|
|
439
|
-
then checks each for open state + bug label. Cached per-call
|
|
439
|
+
then checks each for open state + bug label. Cached per-call - not
|
|
440
440
|
expensive for typical 0-3 bug sub-issues per component.
|
|
441
441
|
"""
|
|
442
442
|
try:
|
|
@@ -463,7 +463,7 @@ def effective_review_progress(label_names: List[str], flag_states: dict) -> int:
|
|
|
463
463
|
"""Return the effective review count, accounting for staleness.
|
|
464
464
|
|
|
465
465
|
Reviews become stale (reset to 0) when tested or codeConnect are
|
|
466
|
-
YELLOW
|
|
466
|
+
YELLOW - meaning the implementation version bumped since those phases
|
|
467
467
|
last ran. This happens after a bugfix or re-implementation.
|
|
468
468
|
|
|
469
469
|
Reviews are NOT reset when tested/codeConnect are GRAY (never run).
|
|
@@ -474,9 +474,9 @@ def effective_review_progress(label_names: List[str], flag_states: dict) -> int:
|
|
|
474
474
|
raw = parse_review_progress_from_labels(label_names)
|
|
475
475
|
tested = flag_states.get("tested", "gray")
|
|
476
476
|
cc = flag_states.get("codeConnect", "gray")
|
|
477
|
-
# Only yellow (stale) resets reviews
|
|
477
|
+
# Only yellow (stale) resets reviews - gray (never done) does not.
|
|
478
478
|
if tested == "yellow" or cc == "yellow":
|
|
479
|
-
return 0 # stale
|
|
479
|
+
return 0 # stale - impl version changed since phases ran
|
|
480
480
|
return raw
|
|
481
481
|
|
|
482
482
|
|
|
@@ -501,32 +501,32 @@ def compute_status_column(
|
|
|
501
501
|
impl = flag_states.get("implemented", "gray")
|
|
502
502
|
cc = flag_states.get("codeConnect", "gray")
|
|
503
503
|
|
|
504
|
-
# 1. Stale
|
|
504
|
+
# 1. Stale - only implementation yellow counts (downstream yellow is per-flag)
|
|
505
505
|
if impl == "yellow":
|
|
506
506
|
return "Stale"
|
|
507
507
|
|
|
508
|
-
# 2. Bugfix
|
|
508
|
+
# 2. Bugfix - review-fix/bug labels present OR open bug sub-issues
|
|
509
509
|
if has_bugfix_signal(label_names, open_bug_sub_issues):
|
|
510
510
|
return "Bugfix"
|
|
511
511
|
|
|
512
|
-
# 3. Blocked
|
|
512
|
+
# 3. Blocked - a sub-component is not implemented
|
|
513
513
|
if blocked and impl != "green":
|
|
514
514
|
return "Blocked"
|
|
515
515
|
|
|
516
|
-
# 4. Done
|
|
516
|
+
# 4. Done - effective 4/4 reviews passed (stale reviews = 0)
|
|
517
517
|
reviews = effective_review_progress(label_names, flag_states)
|
|
518
518
|
if reviews >= 4 and impl == "green":
|
|
519
519
|
return "Done"
|
|
520
520
|
|
|
521
|
-
# 5. In Review
|
|
521
|
+
# 5. In Review - implementation + code connect both green
|
|
522
522
|
if impl == "green" and cc == "green":
|
|
523
523
|
return "In Review"
|
|
524
524
|
|
|
525
|
-
# 6. In Develop
|
|
525
|
+
# 6. In Develop - claimed (has assignee) but not implemented yet
|
|
526
526
|
if has_assignees and impl != "green":
|
|
527
527
|
return "In Develop"
|
|
528
528
|
|
|
529
|
-
# 7. Todo
|
|
529
|
+
# 7. Todo - default
|
|
530
530
|
return "Todo"
|
|
531
531
|
|
|
532
532
|
|
|
@@ -569,10 +569,10 @@ def rewrite_progress_table(body: str, flag_states: dict) -> str:
|
|
|
569
569
|
|
|
570
570
|
|
|
571
571
|
# --------------------------------------------------------------------
|
|
572
|
-
# gh wrapper
|
|
572
|
+
# gh wrapper - always captures stdout
|
|
573
573
|
# --------------------------------------------------------------------
|
|
574
574
|
|
|
575
|
-
GH_TIMEOUT_SECONDS = 30 # hard timeout per gh invocation
|
|
575
|
+
GH_TIMEOUT_SECONDS = 30 # hard timeout per gh invocation - prevents infinite hangs
|
|
576
576
|
|
|
577
577
|
|
|
578
578
|
def gh(args: List[str], dry_run: bool = False, timeout: int = GH_TIMEOUT_SECONDS) -> str:
|
|
@@ -616,7 +616,7 @@ def gh_graphql(query: str, variables: Optional[dict] = None, dry_run: bool = Fal
|
|
|
616
616
|
|
|
617
617
|
|
|
618
618
|
# --------------------------------------------------------------------
|
|
619
|
-
# GitHub operations
|
|
619
|
+
# GitHub operations - REST (issue list/comment/close)
|
|
620
620
|
# --------------------------------------------------------------------
|
|
621
621
|
|
|
622
622
|
def find_all_open_issues(node_id: str, repo: str, dry_run: bool) -> List[dict]:
|
|
@@ -694,7 +694,7 @@ def get_issue_assignees(issue_number: int, repo: str) -> List[str]:
|
|
|
694
694
|
def add_assignees(issue_number: int, repo: str, logins: List[str], dry_run: bool) -> None:
|
|
695
695
|
"""Add assignees to an issue via gh issue edit --add-assignee.
|
|
696
696
|
|
|
697
|
-
Non-fatal on errors
|
|
697
|
+
Non-fatal on errors - assignee names may not map to real GitHub
|
|
698
698
|
logins (backfill stores git author names, which usually match but
|
|
699
699
|
not always). Failure is logged, not raised.
|
|
700
700
|
"""
|
|
@@ -789,7 +789,7 @@ def conflate_duplicate(
|
|
|
789
789
|
repo: str,
|
|
790
790
|
dry_run: bool,
|
|
791
791
|
) -> dict:
|
|
792
|
-
"""Full duplicate conflation
|
|
792
|
+
"""Full duplicate conflation - transfer state from loser to keeper, then close loser.
|
|
793
793
|
|
|
794
794
|
Transfers:
|
|
795
795
|
1. Assignees (add loser's assignees to keeper)
|
|
@@ -848,7 +848,7 @@ def conflate_duplicate(
|
|
|
848
848
|
"issue", "comment", str(loser_number),
|
|
849
849
|
"--repo", repo,
|
|
850
850
|
"--body",
|
|
851
|
-
f"Duplicate of #{keeper_number}
|
|
851
|
+
f"Duplicate of #{keeper_number} - closed by registry sync on {today}. "
|
|
852
852
|
f"{transferred_summary}.",
|
|
853
853
|
],
|
|
854
854
|
dry_run=dry_run,
|
|
@@ -866,14 +866,14 @@ def conflate_duplicate(
|
|
|
866
866
|
|
|
867
867
|
|
|
868
868
|
def close_duplicate(issue_number: int, keep_number: int, repo: str, dry_run: bool) -> None:
|
|
869
|
-
"""Legacy shim
|
|
869
|
+
"""Legacy shim - kept for backwards compatibility with any caller
|
|
870
870
|
that doesn't need the full conflation. Prefer conflate_duplicate."""
|
|
871
871
|
today = date.today().isoformat()
|
|
872
872
|
gh(
|
|
873
873
|
[
|
|
874
874
|
"issue", "comment", str(issue_number),
|
|
875
875
|
"--repo", repo,
|
|
876
|
-
"--body", f"Duplicate of #{keep_number}
|
|
876
|
+
"--body", f"Duplicate of #{keep_number} - closed by registry sync on {today}.",
|
|
877
877
|
],
|
|
878
878
|
dry_run=dry_run,
|
|
879
879
|
)
|
|
@@ -900,7 +900,7 @@ def pick_survivor(issues: List[dict]) -> dict:
|
|
|
900
900
|
|
|
901
901
|
|
|
902
902
|
# --------------------------------------------------------------------
|
|
903
|
-
# GitHub operations
|
|
903
|
+
# GitHub operations - GraphQL (project fields)
|
|
904
904
|
# --------------------------------------------------------------------
|
|
905
905
|
|
|
906
906
|
def find_project_item_id(
|
|
@@ -1057,7 +1057,7 @@ def compute_flag_labels_from_states(flag_states: dict) -> List[str]:
|
|
|
1057
1057
|
Label present = flag is green (done and current).
|
|
1058
1058
|
Label absent = flag is gray (not done) OR yellow (stale).
|
|
1059
1059
|
|
|
1060
|
-
The yellow state is intentionally invisible at the label layer
|
|
1060
|
+
The yellow state is intentionally invisible at the label layer -
|
|
1061
1061
|
it's tracked on the Projects V2 fields so the issue list only
|
|
1062
1062
|
shows completed flags, not in-progress or stale ones."""
|
|
1063
1063
|
labels: List[str] = []
|
|
@@ -1078,7 +1078,7 @@ def sync_flag_labels(
|
|
|
1078
1078
|
dry_run: bool,
|
|
1079
1079
|
) -> dict:
|
|
1080
1080
|
"""Apply desired flag labels to an issue, remove any drifted ones
|
|
1081
|
-
and any legacy phase:* labels. Only touches managed labels
|
|
1081
|
+
and any legacy phase:* labels. Only touches managed labels -
|
|
1082
1082
|
team/component/review/etc. are untouched."""
|
|
1083
1083
|
current_set = set(current_labels)
|
|
1084
1084
|
desired_set = set(desired_labels)
|
|
@@ -1263,7 +1263,7 @@ def sync_one(
|
|
|
1263
1263
|
result["assignee"] = implemented_by
|
|
1264
1264
|
|
|
1265
1265
|
# Compute status column for the freshly created issue. It has at most
|
|
1266
|
-
# one assignee (implemented_by) and zero labels at this point
|
|
1266
|
+
# one assignee (implemented_by) and zero labels at this point - so
|
|
1267
1267
|
# bugfix/review-count inputs are empty.
|
|
1268
1268
|
new_status_column = compute_status_column(
|
|
1269
1269
|
flag_states=flag_states,
|
|
@@ -1336,7 +1336,7 @@ def sync_one(
|
|
|
1336
1336
|
)
|
|
1337
1337
|
result["label_diff"] = label_result
|
|
1338
1338
|
|
|
1339
|
-
# Assignee from implementedBy
|
|
1339
|
+
# Assignee from implementedBy - additive, never removes existing assignees
|
|
1340
1340
|
if implemented_by:
|
|
1341
1341
|
try:
|
|
1342
1342
|
current_assignees = get_issue_assignees(keep_number, repo)
|
|
@@ -1407,7 +1407,7 @@ def sync_one(
|
|
|
1407
1407
|
try:
|
|
1408
1408
|
item_id = find_project_item_id(owner, name, keep_number, project_id)
|
|
1409
1409
|
if not item_id:
|
|
1410
|
-
# Survivor isn't on the project
|
|
1410
|
+
# Survivor isn't on the project - add it
|
|
1411
1411
|
issue_node_id = get_issue_node_id(owner, name, keep_number)
|
|
1412
1412
|
item_id = add_issue_to_project(issue_node_id, project_id)
|
|
1413
1413
|
if item_id:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# validate-phase4.sh
|
|
2
|
+
# validate-phase4.sh - Post-Phase 4 validation for Figma-to-SwiftUI components
|
|
3
3
|
# Runs after Phase 4 COLLECT_RESULTS, before UPDATE_IMPLEMENTATION_HISTORY.
|
|
4
4
|
#
|
|
5
5
|
# Usage: validate-phase4.sh <component-location> <component-name> [coverage-json-path]
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
# coverage-json-path Optional path to pass3/00_property_coverage.json
|
|
11
11
|
#
|
|
12
12
|
# Exit codes:
|
|
13
|
-
# 0
|
|
14
|
-
# 1
|
|
13
|
+
# 0 - All checks passed
|
|
14
|
+
# 1 - One or more violations found
|
|
15
15
|
|
|
16
16
|
set -euo pipefail
|
|
17
17
|
|
|
@@ -42,7 +42,7 @@ echo "---"
|
|
|
42
42
|
# Allowed: extensions on nested types (extension ComponentName.TypeName)
|
|
43
43
|
if grep -nE '^(public |internal |private |fileprivate )?enum ' "$VIEW_FILE" | grep -v '^ ' | head -20 > /tmp/validate_toplevel_enums.txt 2>/dev/null; then
|
|
44
44
|
while IFS= read -r line; do
|
|
45
|
-
# Skip if it's inside a struct (check indentation
|
|
45
|
+
# Skip if it's inside a struct (check indentation - truly zero-indent lines only)
|
|
46
46
|
linenum=$(echo "$line" | cut -d: -f1)
|
|
47
47
|
content=$(sed -n "${linenum}p" "$VIEW_FILE")
|
|
48
48
|
# Check if line starts with no whitespace
|
|
@@ -93,11 +93,11 @@ if grep -n 'enum Constants' "$VIEW_FILE" > /dev/null 2>&1; then
|
|
|
93
93
|
CONTENT=$(sed -n "${LINENUM}p" "$VIEW_FILE")
|
|
94
94
|
# Check that it has leading whitespace (is indented = inside struct)
|
|
95
95
|
if [[ ! "$CONTENT" =~ ^[[:space:]]+ ]]; then
|
|
96
|
-
add_violation "Constants enum at file scope (line $LINENUM)
|
|
96
|
+
add_violation "Constants enum at file scope (line $LINENUM) - must be nested inside View struct"
|
|
97
97
|
fi
|
|
98
98
|
# Check it's private
|
|
99
99
|
if ! echo "$CONTENT" | grep -q 'private'; then
|
|
100
|
-
add_violation "Constants enum is not private (line $LINENUM)
|
|
100
|
+
add_violation "Constants enum is not private (line $LINENUM) - must be 'private enum Constants'"
|
|
101
101
|
fi
|
|
102
102
|
fi
|
|
103
103
|
|
|
@@ -133,7 +133,7 @@ for p in data.get('properties', []):
|
|
|
133
133
|
# Also try the enum/type name from swiftType (e.g., "enum IconPosition" -> "IconPosition")
|
|
134
134
|
type_name=$(echo "$swift_type" | sed 's/^enum //' | sed 's/\?$//')
|
|
135
135
|
if [[ -n "$type_name" ]] && grep -qi "$type_name" "$VIEW_FILE" 2>/dev/null; then
|
|
136
|
-
: # Found via type name
|
|
136
|
+
: # Found via type name - property exists with a renamed parameter
|
|
137
137
|
else
|
|
138
138
|
add_violation "IMPLEMENT property '$display_name' (expected: $swift_name: $swift_type) not found in view"
|
|
139
139
|
fi
|
|
@@ -159,7 +159,7 @@ PREVIEW_COUNT=$(grep -c '#Preview' "$VIEW_FILE" 2>/dev/null | tr -d '[:space:]'
|
|
|
159
159
|
if [[ "$PREVIEW_COUNT" -eq 0 ]]; then
|
|
160
160
|
add_violation "No #Preview block found in $VIEW_FILE"
|
|
161
161
|
elif [[ "$PREVIEW_COUNT" -gt 2 ]]; then
|
|
162
|
-
add_violation "Too many #Preview blocks found ($PREVIEW_COUNT)
|
|
162
|
+
add_violation "Too many #Preview blocks found ($PREVIEW_COUNT) - expected 2 (LTR + RTL)"
|
|
163
163
|
fi
|
|
164
164
|
|
|
165
165
|
# --- Summary ---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# validate-phase6.sh
|
|
2
|
+
# validate-phase6.sh - Post-Phase 6 validation for Code Connect files
|
|
3
3
|
# Runs after Phase 6 CREATE_FIGMA_SWIFT, before VALIDATE (figma connect parse).
|
|
4
4
|
#
|
|
5
5
|
# Usage: validate-phase6.sh <figma-swift-path> <component-name> [component-properties-json]
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
# component-properties-json Optional path to pass1/component_properties.json
|
|
11
11
|
#
|
|
12
12
|
# Exit codes:
|
|
13
|
-
# 0
|
|
14
|
-
# 1
|
|
13
|
+
# 0 - All checks passed
|
|
14
|
+
# 1 - One or more violations found
|
|
15
15
|
|
|
16
16
|
set -euo pipefail
|
|
17
17
|
|
|
@@ -46,7 +46,7 @@ if grep -nE "${COMPONENT_NAME}\.[A-Z][a-zA-Z]+\.[a-z]" "$FIGMA_SWIFT" > /tmp/val
|
|
|
46
46
|
if [[ "$content" =~ ^[[:space:]]*//.* ]]; then
|
|
47
47
|
continue
|
|
48
48
|
fi
|
|
49
|
-
add_violation "Fully-qualified enum path at $line
|
|
49
|
+
add_violation "Fully-qualified enum path at $line - use implicit shorthand (.case) instead"
|
|
50
50
|
done < /tmp/validate_enum_qualified.txt
|
|
51
51
|
fi
|
|
52
52
|
|
|
@@ -57,7 +57,7 @@ if grep -nE 'Configuration\.[A-Z][a-zA-Z]+\.[a-z]' "$FIGMA_SWIFT" > /tmp/validat
|
|
|
57
57
|
if [[ "$content" =~ ^[[:space:]]*//.* ]]; then
|
|
58
58
|
continue
|
|
59
59
|
fi
|
|
60
|
-
add_violation "Fully-qualified Configuration enum path at $line
|
|
60
|
+
add_violation "Fully-qualified Configuration enum path at $line - use implicit shorthand (.case)"
|
|
61
61
|
done < /tmp/validate_config_qualified.txt
|
|
62
62
|
fi
|
|
63
63
|
|
|
@@ -111,7 +111,7 @@ if comp_defs:
|
|
|
111
111
|
if [[ -n "$UNMAPPED_LIST" ]]; then
|
|
112
112
|
echo "WARNING: $((TOTAL - MAPPED))/$TOTAL properties not found in .figma.swift:"
|
|
113
113
|
echo -e "$UNMAPPED_LIST"
|
|
114
|
-
# This is a warning, not a hard failure
|
|
114
|
+
# This is a warning, not a hard failure - some properties may be intentionally skipped
|
|
115
115
|
# Only fail if more than half are missing
|
|
116
116
|
if [[ $((TOTAL - MAPPED)) -gt $((TOTAL / 2)) ]]; then
|
|
117
117
|
add_violation "More than half of Figma properties ($((TOTAL - MAPPED))/$TOTAL) not mapped in Code Connect"
|
|
@@ -125,7 +125,7 @@ fi
|
|
|
125
125
|
# --- Check 3: Basic structure ---
|
|
126
126
|
# Verify the file conforms to FigmaConnect protocol (": FigmaConnect")
|
|
127
127
|
if ! grep -q ': FigmaConnect' "$FIGMA_SWIFT" 2>/dev/null; then
|
|
128
|
-
add_violation "No FigmaConnect protocol conformance found (': FigmaConnect')
|
|
128
|
+
add_violation "No FigmaConnect protocol conformance found (': FigmaConnect') - not a valid Code Connect file"
|
|
129
129
|
fi
|
|
130
130
|
|
|
131
131
|
# Verify the file references the component name
|