@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
|
@@ -5,6 +5,8 @@ description: "Debug iOS apps and profile performance using LLDB, Memory Graph De
|
|
|
5
5
|
|
|
6
6
|
# Debugging and Instruments
|
|
7
7
|
|
|
8
|
+
Diagnose crashes, memory leaks, retain cycles, main thread hangs, and performance bottlenecks in iOS apps using LLDB, Memory Graph Debugger, and Instruments. Covers breakpoint workflows, memory graph analysis, hang detection, build failure triage, and Instruments profiling for CPU, memory, energy, and network.
|
|
9
|
+
|
|
8
10
|
## Contents
|
|
9
11
|
|
|
10
12
|
- [LLDB Debugging](#lldb-debugging)
|
|
@@ -23,7 +25,7 @@ description: "Debug iOS apps and profile performance using LLDB, Memory Graph De
|
|
|
23
25
|
```text
|
|
24
26
|
(lldb) po myObject # Print object description (calls debugDescription)
|
|
25
27
|
(lldb) p myInt # Print with type info (uses LLDB formatter)
|
|
26
|
-
(lldb) v myLocal # Frame variable
|
|
28
|
+
(lldb) v myLocal # Frame variable - fast, no code execution
|
|
27
29
|
(lldb) bt # Backtrace current thread
|
|
28
30
|
(lldb) bt all # Backtrace all threads
|
|
29
31
|
(lldb) frame select 3 # Jump to frame #3 in the backtrace
|
|
@@ -31,7 +33,7 @@ description: "Debug iOS apps and profile performance using LLDB, Memory Graph De
|
|
|
31
33
|
(lldb) thread select 4 # Switch to thread #4
|
|
32
34
|
```
|
|
33
35
|
|
|
34
|
-
Use `v` over `po` when you only need a local variable value
|
|
36
|
+
Use `v` over `po` when you only need a local variable value - it does not
|
|
35
37
|
execute code and cannot trigger side effects.
|
|
36
38
|
|
|
37
39
|
### Breakpoint Management
|
|
@@ -73,7 +75,7 @@ to see the change immediately without resuming execution.
|
|
|
73
75
|
```
|
|
74
76
|
|
|
75
77
|
Watchpoints are hardware-backed (limited to ~4 on ARM). Use them to find
|
|
76
|
-
unexpected mutations
|
|
78
|
+
unexpected mutations - the debugger stops at the exact line that changes
|
|
77
79
|
the value.
|
|
78
80
|
|
|
79
81
|
### Symbolic Breakpoints
|
|
@@ -98,7 +100,7 @@ common diagnostics like `-[UIApplication main]` or `swift_willThrow`.
|
|
|
98
100
|
1. Run the app in Debug configuration.
|
|
99
101
|
2. Reproduce the suspected leak (navigate to a screen, then back).
|
|
100
102
|
3. Tap the **Memory Graph** button in Xcode's debug bar.
|
|
101
|
-
4. Look for purple warning icons
|
|
103
|
+
4. Look for purple warning icons - these indicate leaked objects.
|
|
102
104
|
5. Select a leaked object to see its reference graph and backtrace.
|
|
103
105
|
|
|
104
106
|
Enable **Malloc Stack Logging** (Scheme > Diagnostics) before running so
|
|
@@ -109,7 +111,7 @@ the Memory Graph shows allocation backtraces.
|
|
|
109
111
|
**Closure capturing self strongly:**
|
|
110
112
|
|
|
111
113
|
```swift
|
|
112
|
-
// LEAK
|
|
114
|
+
// LEAK - closure holds strong reference to self
|
|
113
115
|
class ProfileViewModel {
|
|
114
116
|
var onUpdate: (() -> Void)?
|
|
115
117
|
|
|
@@ -120,7 +122,7 @@ class ProfileViewModel {
|
|
|
120
122
|
}
|
|
121
123
|
}
|
|
122
124
|
|
|
123
|
-
// FIXED
|
|
125
|
+
// FIXED - use [weak self]
|
|
124
126
|
func startObserving() {
|
|
125
127
|
onUpdate = { [weak self] in
|
|
126
128
|
self?.refresh()
|
|
@@ -131,7 +133,7 @@ func startObserving() {
|
|
|
131
133
|
**Strong delegate reference:**
|
|
132
134
|
|
|
133
135
|
```swift
|
|
134
|
-
// LEAK
|
|
136
|
+
// LEAK - strong delegate creates a cycle
|
|
135
137
|
protocol DataDelegate: AnyObject {
|
|
136
138
|
func didUpdate()
|
|
137
139
|
}
|
|
@@ -140,7 +142,7 @@ class DataManager {
|
|
|
140
142
|
var delegate: DataDelegate? // should be weak
|
|
141
143
|
}
|
|
142
144
|
|
|
143
|
-
// FIXED
|
|
145
|
+
// FIXED - weak delegate
|
|
144
146
|
class DataManager {
|
|
145
147
|
weak var delegate: DataDelegate?
|
|
146
148
|
}
|
|
@@ -149,13 +151,13 @@ class DataManager {
|
|
|
149
151
|
**Timer retaining target:**
|
|
150
152
|
|
|
151
153
|
```swift
|
|
152
|
-
// LEAK
|
|
154
|
+
// LEAK - Timer.scheduledTimer retains its target
|
|
153
155
|
timer = Timer.scheduledTimer(
|
|
154
156
|
timeInterval: 1.0, target: self,
|
|
155
157
|
selector: #selector(tick), userInfo: nil, repeats: true
|
|
156
158
|
)
|
|
157
159
|
|
|
158
|
-
// FIXED
|
|
160
|
+
// FIXED - use closure-based API with [weak self]
|
|
159
161
|
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
|
|
160
162
|
self?.tick()
|
|
161
163
|
}
|
|
@@ -166,33 +168,43 @@ timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self]
|
|
|
166
168
|
- **Allocations template**: Track memory growth over time. Use the
|
|
167
169
|
"Mark Generation" feature to isolate allocations created between
|
|
168
170
|
user actions (e.g., open/close a screen).
|
|
169
|
-
- **Leaks template**:
|
|
170
|
-
Run alongside Allocations for a
|
|
171
|
+
- **Leaks template**: Detects leaked allocations, including isolated retain
|
|
172
|
+
cycles the process can no longer reach. Run alongside Allocations for a
|
|
173
|
+
complete picture.
|
|
171
174
|
- Filter by your app's module name to exclude system allocations.
|
|
172
175
|
|
|
176
|
+
For leak or memory-growth triage, pair the tools: use Allocations **Mark
|
|
177
|
+
Generation** before and after the reproduction step to prove retained growth,
|
|
178
|
+
then use Memory Graph Debugger to inspect object ownership and Malloc Stack
|
|
179
|
+
Logging to recover allocation call stacks.
|
|
180
|
+
|
|
173
181
|
### Malloc Stack Logging
|
|
174
182
|
|
|
175
|
-
Enable in Scheme > Run > Diagnostics > Malloc Stack Logging
|
|
176
|
-
|
|
177
|
-
|
|
183
|
+
Enable in Scheme > Run > Diagnostics > Malloc Stack Logging. This records
|
|
184
|
+
allocation backtraces so the Memory Graph Debugger, Allocations instrument,
|
|
185
|
+
and exported `.memgraph` files can show where objects were created.
|
|
178
186
|
|
|
179
187
|
```bash
|
|
180
|
-
#
|
|
181
|
-
leaks
|
|
182
|
-
# Symbolicate with dSYMs for readable stacks
|
|
188
|
+
# Inspect an exported memory graph from Xcode or Instruments
|
|
189
|
+
leaks MyApp.memgraph
|
|
183
190
|
```
|
|
184
191
|
|
|
185
192
|
## Hang Diagnostics
|
|
186
193
|
|
|
187
194
|
### Identifying Main Thread Hangs
|
|
188
195
|
|
|
189
|
-
|
|
190
|
-
|
|
196
|
+
For discrete interactions, delays under 100 ms are rarely noticeable; a few
|
|
197
|
+
hundred milliseconds can make an app feel unresponsive. Apple developer tools
|
|
198
|
+
typically start reporting main-run-loop busy periods over 250 ms. Common
|
|
199
|
+
detection tools:
|
|
191
200
|
|
|
192
201
|
- **Thread Checker** (Xcode Diagnostics): warns about non-main-thread UI calls
|
|
202
|
+
- **Thread Performance Checker**: reports priority inversions while debugging
|
|
203
|
+
- **On-device Hang Detection**: Developer Settings reports hangs from device use
|
|
204
|
+
- **Time Profiler / CPU Profiler / Hitches**: profile reproducible hangs
|
|
193
205
|
- **os_signpost** and `OSSignposter`: mark intervals for Instruments
|
|
194
206
|
- **MetricKit** hang diagnostics: production hang detection (see
|
|
195
|
-
`metrickit
|
|
207
|
+
`metrickit` skill for `MXHangDiagnostic`)
|
|
196
208
|
|
|
197
209
|
```swift
|
|
198
210
|
import os
|
|
@@ -212,7 +224,7 @@ func loadData() async {
|
|
|
212
224
|
1. Product > Profile (Cmd+I) to launch Instruments.
|
|
213
225
|
2. Select the **Time Profiler** template.
|
|
214
226
|
3. Record while reproducing the slow interaction.
|
|
215
|
-
4. Focus on the main thread
|
|
227
|
+
4. Focus on the main thread - sort by "Weight" to find hot paths.
|
|
216
228
|
5. Check "Hide System Libraries" to see only your code.
|
|
217
229
|
6. Double-click a heavy frame to jump to source.
|
|
218
230
|
|
|
@@ -230,7 +242,7 @@ func loadData() async {
|
|
|
230
242
|
|
|
231
243
|
### Reading Compiler Diagnostics
|
|
232
244
|
|
|
233
|
-
- Start from the **first** error
|
|
245
|
+
- Start from the **first** error - subsequent errors are often cascading.
|
|
234
246
|
- Search for the error code (e.g., `error: cannot convert`) in the build log.
|
|
235
247
|
- Use Report Navigator (Cmd+9) for the full build log with timestamps.
|
|
236
248
|
|
|
@@ -272,8 +284,8 @@ Build settings to inspect first:
|
|
|
272
284
|
| **Leaks** | Suspect retain cycles or abandoned objects |
|
|
273
285
|
| **Network** | Inspecting HTTP request/response timing and payloads |
|
|
274
286
|
| **SwiftUI** | Profiling view body evaluations and update frequency |
|
|
275
|
-
| **Core Animation** | Frame drops,
|
|
276
|
-
| **
|
|
287
|
+
| **Animation Hitches / Core Animation instruments** | Frame drops, hitches, blending, and commit/render work |
|
|
288
|
+
| **Power Profiler** | Battery drain, thermal pressure, background energy impact |
|
|
277
289
|
| **File Activity** | Excessive disk I/O, slow file operations |
|
|
278
290
|
| **System Trace** | Thread scheduling, syscalls, virtual memory faults |
|
|
279
291
|
|
|
@@ -283,8 +295,9 @@ Build settings to inspect first:
|
|
|
283
295
|
# Record a trace from the command line
|
|
284
296
|
xcrun xctrace record --device "My iPhone" \
|
|
285
297
|
--template "Time Profiler" \
|
|
298
|
+
--instrument "Allocations" \
|
|
286
299
|
--output profile.trace \
|
|
287
|
-
--launch MyApp.app
|
|
300
|
+
--launch -- /path/to/MyApp.app
|
|
288
301
|
|
|
289
302
|
# Export trace data as XML for automated analysis
|
|
290
303
|
xcrun xctrace export --input profile.trace --xpath '/trace-toc/run/data/table'
|
|
@@ -296,23 +309,23 @@ xcrun xctrace list templates
|
|
|
296
309
|
xcrun xctrace list devices
|
|
297
310
|
```
|
|
298
311
|
|
|
299
|
-
Use `
|
|
312
|
+
Use one `--template` per recording; add extra instruments with
|
|
313
|
+
`--instrument`. Use `xctrace` in CI pipelines to catch performance regressions
|
|
300
314
|
automatically. Compare exported metrics between builds.
|
|
301
315
|
|
|
302
316
|
## Common Mistakes
|
|
303
317
|
|
|
304
318
|
### DON'T: Use print() for debugging instead of os.Logger
|
|
305
319
|
|
|
306
|
-
`print()` output is
|
|
307
|
-
|
|
308
|
-
makes it impossible to isolate relevant output.
|
|
320
|
+
`print()` output is unstructured, has no subsystem/category or privacy
|
|
321
|
+
metadata, and is harder to filter than unified logging.
|
|
309
322
|
|
|
310
323
|
```swift
|
|
311
|
-
// WRONG
|
|
324
|
+
// WRONG - unstructured and not filterable by subsystem/category
|
|
312
325
|
print("user tapped button, state: \(viewModel.state)")
|
|
313
326
|
print("network response: \(data)")
|
|
314
327
|
|
|
315
|
-
// CORRECT
|
|
328
|
+
// CORRECT - structured logging with Logger
|
|
316
329
|
import os
|
|
317
330
|
|
|
318
331
|
let logger = Logger(subsystem: "com.example.app", category: "UI")
|
|
@@ -322,7 +335,7 @@ logger.info("Network response received, bytes: \(data.count)")
|
|
|
322
335
|
```
|
|
323
336
|
|
|
324
337
|
`Logger` messages appear in Console.app with filtering by subsystem and
|
|
325
|
-
category, and `.debug` messages are
|
|
338
|
+
category, and `.debug` messages are written to the in-memory log store only (not persisted to disk in release builds).
|
|
326
339
|
|
|
327
340
|
### DON'T: Forget to enable Malloc Stack Logging before memory debugging
|
|
328
341
|
|
|
@@ -331,10 +344,10 @@ objects but cannot display allocation backtraces, making it difficult to
|
|
|
331
344
|
find the code that created them.
|
|
332
345
|
|
|
333
346
|
```swift
|
|
334
|
-
// WRONG
|
|
347
|
+
// WRONG - open Memory Graph without enabling Malloc Stack Logging
|
|
335
348
|
// Result: leaked objects visible but no allocation backtrace
|
|
336
349
|
|
|
337
|
-
// CORRECT
|
|
350
|
+
// CORRECT - enable BEFORE running:
|
|
338
351
|
// Scheme > Run > Diagnostics > check "Malloc Stack Logging: All Allocations"
|
|
339
352
|
// Then run, reproduce the leak, and open Memory Graph
|
|
340
353
|
```
|
|
@@ -345,7 +358,7 @@ In Release (optimized) builds, the compiler may inline functions, eliminate
|
|
|
345
358
|
variables, and reorder code. LLDB cannot display optimized-away values.
|
|
346
359
|
|
|
347
360
|
```swift
|
|
348
|
-
// WRONG
|
|
361
|
+
// WRONG - profiling with Debug build, debugging with Release build
|
|
349
362
|
// Debug builds: extra runtime checks distort perf measurements
|
|
350
363
|
// Release builds: variables show as "<optimized out>" in debugger
|
|
351
364
|
|
|
@@ -360,12 +373,12 @@ Breaking on every iteration wastes time and makes it hard to find the
|
|
|
360
373
|
specific case you care about.
|
|
361
374
|
|
|
362
375
|
```swift
|
|
363
|
-
// WRONG
|
|
376
|
+
// WRONG - breakpoint on line inside loop, stops 10,000 times
|
|
364
377
|
for item in items {
|
|
365
378
|
process(item) // breakpoint here stops on EVERY item
|
|
366
379
|
}
|
|
367
380
|
|
|
368
|
-
// CORRECT
|
|
381
|
+
// CORRECT - use a conditional breakpoint:
|
|
369
382
|
// (lldb) br set -f MyFile.swift -l 42 -c "item.id == targetID"
|
|
370
383
|
// Or in Xcode: right-click breakpoint > Edit > add Condition
|
|
371
384
|
```
|
|
@@ -373,13 +386,13 @@ for item in items {
|
|
|
373
386
|
### DON'T: Ignore Thread Sanitizer warnings
|
|
374
387
|
|
|
375
388
|
Thread Sanitizer (TSan) warnings indicate data races that may only crash
|
|
376
|
-
intermittently.
|
|
389
|
+
intermittently. Treat them as real bugs unless you have isolated a tool issue.
|
|
377
390
|
|
|
378
391
|
```swift
|
|
379
|
-
// WRONG
|
|
392
|
+
// WRONG - ignoring TSan warning about concurrent access
|
|
380
393
|
var cache: [String: Data] = [:] // accessed from multiple threads
|
|
381
394
|
|
|
382
|
-
// CORRECT
|
|
395
|
+
// CORRECT - protect shared mutable state
|
|
383
396
|
actor CacheActor {
|
|
384
397
|
var cache: [String: Data] = [:]
|
|
385
398
|
|
|
@@ -388,8 +401,23 @@ actor CacheActor {
|
|
|
388
401
|
}
|
|
389
402
|
```
|
|
390
403
|
|
|
391
|
-
Enable TSan: Scheme > Run > Diagnostics > Thread Sanitizer.
|
|
392
|
-
|
|
404
|
+
Enable TSan: Scheme > Run > Diagnostics > Thread Sanitizer. For iOS, iPadOS,
|
|
405
|
+
tvOS, visionOS, and watchOS apps, run TSan in Simulator; Apple documents device
|
|
406
|
+
support only for 64-bit macOS apps.
|
|
407
|
+
|
|
408
|
+
### Correction Pattern: Flawed Memory and Hang Plans
|
|
409
|
+
|
|
410
|
+
When correcting another diagnostic plan, explicitly check these points:
|
|
411
|
+
|
|
412
|
+
- **Leaks scope**: Leaks can catch unreachable abandoned allocations and
|
|
413
|
+
isolated retain cycles the process can no longer reach; it does not prove
|
|
414
|
+
every retain cycle still reachable from roots.
|
|
415
|
+
- **Memory growth**: Use Allocations **Mark Generation** before and after the
|
|
416
|
+
reproduction step, then use Memory Graph Debugger for ownership and Malloc
|
|
417
|
+
Stack Logging for allocation backtraces.
|
|
418
|
+
- **Hang severity**: Distinguish tool reporting from severity. Developer tools
|
|
419
|
+
commonly report main-run-loop busy periods over 250 ms, while a few hundred
|
|
420
|
+
milliseconds can still feel unresponsive to users.
|
|
393
421
|
|
|
394
422
|
## Review Checklist
|
|
395
423
|
|
|
@@ -399,7 +427,7 @@ cannot run simultaneously with Address Sanitizer.
|
|
|
399
427
|
- [ ] Delegates declared as `weak var` to prevent retain cycles
|
|
400
428
|
- [ ] Closures stored as properties use `[weak self]` capture lists
|
|
401
429
|
- [ ] Timers use closure-based API with `[weak self]`
|
|
402
|
-
- [ ] Thread Sanitizer enabled in test schemes
|
|
430
|
+
- [ ] Thread Sanitizer enabled in Simulator test schemes for race triage
|
|
403
431
|
- [ ] No synchronous I/O or heavy computation on the main thread
|
|
404
432
|
- [ ] Time Profiler run on Release build for performance baselines
|
|
405
433
|
- [ ] Build failures triaged from the first error in the build log
|
|
@@ -416,7 +444,9 @@ cannot run simultaneously with Address Sanitizer.
|
|
|
416
444
|
- [Diagnosing memory, thread, and crash issues early](https://sosumi.ai/documentation/xcode/diagnosing-memory-thread-and-crash-issues-early)
|
|
417
445
|
- [Data races](https://sosumi.ai/documentation/xcode/data-races)
|
|
418
446
|
- [Reducing your app's memory use](https://sosumi.ai/documentation/xcode/reducing-your-app-s-memory-use)
|
|
419
|
-
- [Profiling apps using Instruments](https://
|
|
447
|
+
- [Profiling apps using Instruments](https://developer.apple.com/tutorials/instruments)
|
|
448
|
+
- [Improving app responsiveness](https://sosumi.ai/documentation/xcode/improving-app-responsiveness)
|
|
449
|
+
- [Analyzing your app's battery use](https://sosumi.ai/documentation/xcode/analyzing-your-app-s-battery-use)
|
|
420
450
|
- [Analyzing the performance of your shipping app](https://sosumi.ai/documentation/xcode/analyzing-the-performance-of-your-shipping-app)
|
|
421
|
-
- LLDB command reference:
|
|
422
|
-
- Instruments template guide:
|
|
451
|
+
- LLDB command reference: [references/lldb-patterns.md](references/lldb-patterns.md)
|
|
452
|
+
- Instruments template guide: [references/instruments-guide.md](references/instruments-guide.md)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "debugging-instruments",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 0,
|
|
6
|
+
"prompt": "I need a concise profiling plan for an iOS app that has a slow feed refresh, battery-drain complaints, and a CI job that should collect a Time Profiler trace with xctrace. Include the Instruments templates or instruments to use, and show both the basic xctrace launch command and the command shape if we add Allocations to the same Time Profiler recording.",
|
|
7
|
+
"expected_output": "A source-grounded Instruments plan that chooses current template names, profiles on device, uses Power Profiler for battery work, shows xctrace launch syntax with the required -- separator, and uses --instrument for adding Allocations to a Time Profiler recording.",
|
|
8
|
+
"files": [],
|
|
9
|
+
"expectations": [
|
|
10
|
+
"Recommends Time Profiler for CPU or slow interaction triage.",
|
|
11
|
+
"Recommends Power Profiler, not Energy Log, for battery or energy-impact analysis.",
|
|
12
|
+
"Mentions profiling on a physical device for realistic measurements.",
|
|
13
|
+
"Shows xcrun xctrace record using --launch -- before the app command or bundle path.",
|
|
14
|
+
"Uses --instrument for adding an extra instrument to a template rather than repeating --template for multiple instruments.",
|
|
15
|
+
"Does not claim that Energy Log is the current Instruments template name."
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 1,
|
|
20
|
+
"prompt": "Review this debugging plan: use the Leaks template to prove every retain cycle, run leaks --atExit -- ./MyApp.app/MyApp for our iOS build, call any 250 ms main-thread pause a severe hang, and enable Thread Sanitizer on a real iPhone test run. Correct the plan.",
|
|
21
|
+
"expected_output": "A correction-focused review that narrows leak, hang, Memory Graph, and Thread Sanitizer guidance using Apple-documented behavior.",
|
|
22
|
+
"files": [],
|
|
23
|
+
"expectations": [
|
|
24
|
+
"Explains that Leaks detects leaked allocations or isolated cycles but not every still-reachable retain cycle.",
|
|
25
|
+
"Recommends Memory Graph Debugger and Allocations generation marks for iOS retain-cycle or growth triage.",
|
|
26
|
+
"Uses exported .memgraph files with leaks for CLI memory-graph inspection instead of presenting --atExit as the default iOS app workflow.",
|
|
27
|
+
"States that a few hundred milliseconds can feel unresponsive and that Apple tools typically report main-run-loop busy periods over 250 ms.",
|
|
28
|
+
"States that Thread Sanitizer for iOS-family apps runs in Simulator, while Apple documents device support only for 64-bit macOS apps.",
|
|
29
|
+
"Does not expand into MetricKit payload handling beyond a concise handoff to the metrickit skill."
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 2,
|
|
34
|
+
"prompt": "My SwiftUI screen stutters while scrolling and I also want production hang telemetry in MetricKit plus a new Swift Testing benchmark. What should this debugging skill handle directly, and what should move to adjacent skills?",
|
|
35
|
+
"expected_output": "A boundary-aware answer that keeps Instruments and LLDB guidance in debugging-instruments while routing SwiftUI remediation, MetricKit ingestion, and Swift Testing test design to sibling skills.",
|
|
36
|
+
"files": [],
|
|
37
|
+
"expectations": [
|
|
38
|
+
"Keeps Instruments capture guidance in scope, such as SwiftUI or Animation Hitches with Time Profiler on device.",
|
|
39
|
+
"Routes SwiftUI code-level remediation patterns to the swiftui-performance skill.",
|
|
40
|
+
"Routes MetricKit subscriber setup, MXDiagnosticPayload processing, or MXHangDiagnostic ingestion details to the metrickit skill.",
|
|
41
|
+
"Routes Swift Testing or XCTest benchmark organization details to the swift-testing skill.",
|
|
42
|
+
"Mentions OSSignposter or signposts as useful instrumentation for correlating app intervals with Instruments.",
|
|
43
|
+
"Does not collapse the sibling skills by giving a full MetricKit ingestion implementation or full SwiftUI refactor recipe."
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md
CHANGED
|
@@ -10,8 +10,8 @@ Detailed template-by-template guide for profiling iOS apps with Instruments. Com
|
|
|
10
10
|
- [Leaks](#leaks)
|
|
11
11
|
- [Network](#network)
|
|
12
12
|
- [SwiftUI Instruments](#swiftui-instruments)
|
|
13
|
-
- [Core Animation](#core-animation)
|
|
14
|
-
- [
|
|
13
|
+
- [Animation Hitches and Core Animation](#animation-hitches-and-core-animation)
|
|
14
|
+
- [Power Profiler](#power-profiler)
|
|
15
15
|
- [File Activity](#file-activity)
|
|
16
16
|
- [System Trace](#system-trace)
|
|
17
17
|
- [xctrace CLI](#xctrace-cli)
|
|
@@ -41,9 +41,9 @@ find which functions consume the most time.
|
|
|
41
41
|
2. Select the time range of interest in the timeline.
|
|
42
42
|
3. Switch to the **Call Tree** view in the detail pane.
|
|
43
43
|
4. Enable these checkboxes:
|
|
44
|
-
- **Separate by Thread**
|
|
45
|
-
- **Invert Call Tree**
|
|
46
|
-
- **Hide System Libraries**
|
|
44
|
+
- **Separate by Thread** - isolate main thread vs background
|
|
45
|
+
- **Invert Call Tree** - show leaf functions (actual work) first
|
|
46
|
+
- **Hide System Libraries** - focus on your code
|
|
47
47
|
5. Sort by **Weight** (self time) to find the hottest functions.
|
|
48
48
|
6. Double-click a function to view source with per-line timing.
|
|
49
49
|
|
|
@@ -51,9 +51,9 @@ find which functions consume the most time.
|
|
|
51
51
|
|
|
52
52
|
- **Weight**: total time in this function and all its callees
|
|
53
53
|
- **Self Weight**: time spent in this function alone (not callees)
|
|
54
|
-
- **Symbol Name**: the function
|
|
54
|
+
- **Symbol Name**: the function - look for your module prefix
|
|
55
55
|
|
|
56
|
-
Focus on functions with high **Self Weight**
|
|
56
|
+
Focus on functions with high **Self Weight** - these are doing the actual work.
|
|
57
57
|
|
|
58
58
|
### Tips
|
|
59
59
|
|
|
@@ -86,7 +86,7 @@ freed, or you need to track object lifetimes.
|
|
|
86
86
|
- **Persistent**: long-lived allocations (singletons, caches)
|
|
87
87
|
- **Transient**: short-lived allocations (autoreleased, temporary)
|
|
88
88
|
|
|
89
|
-
Focus on "Created & Still Living" objects in the generation diff
|
|
89
|
+
Focus on "Created & Still Living" objects in the generation diff - these
|
|
90
90
|
are your potential leaks.
|
|
91
91
|
|
|
92
92
|
### Heap Growth Analysis
|
|
@@ -106,14 +106,14 @@ Enable the **Allocations List** and sort by **Persistent Bytes**. Look for:
|
|
|
106
106
|
2. The tool automatically checks for leaks every 10 seconds.
|
|
107
107
|
3. Red "Leak" markers appear in the timeline when leaks are detected.
|
|
108
108
|
4. Click a leak marker to see the leaked object and its retain/release history.
|
|
109
|
-
5. The **Cycles & Roots** view shows the reference graph
|
|
109
|
+
5. The **Cycles & Roots** view shows the reference graph - follow the arrows
|
|
110
110
|
to find the cycle.
|
|
111
111
|
|
|
112
112
|
### Interpreting Results
|
|
113
113
|
|
|
114
114
|
- **Leak**: an object with no references pointing to it (true orphan)
|
|
115
115
|
- **Root Leak**: the object at the head of a leaked object graph
|
|
116
|
-
- **Cycles & Roots graph**: arrows show retain relationships
|
|
116
|
+
- **Cycles & Roots graph**: arrows show retain relationships - look for
|
|
117
117
|
bidirectional arrows indicating a cycle
|
|
118
118
|
|
|
119
119
|
### Common Cycle Patterns
|
|
@@ -156,8 +156,9 @@ redraws, or identity churn in lists.
|
|
|
156
156
|
1. Select the **SwiftUI** template in Instruments.
|
|
157
157
|
2. Record while interacting with the UI.
|
|
158
158
|
3. Check these lanes:
|
|
159
|
-
- **
|
|
160
|
-
- **View
|
|
159
|
+
- **Update Groups**: shows batches of view updates triggered together
|
|
160
|
+
- **Long View Body Updates**: highlights body evaluations exceeding a time threshold
|
|
161
|
+
- **Cause and Effect Graph**: traces why a view was re-evaluated
|
|
161
162
|
4. Look for views with excessive body evaluations during a single interaction.
|
|
162
163
|
|
|
163
164
|
### Tips
|
|
@@ -166,18 +167,23 @@ redraws, or identity churn in lists.
|
|
|
166
167
|
- Cross-reference with Time Profiler to see if body evaluations are expensive.
|
|
167
168
|
- See the `swiftui-performance` skill for remediation patterns.
|
|
168
169
|
|
|
169
|
-
## Core Animation
|
|
170
|
+
## Animation Hitches and Core Animation
|
|
170
171
|
|
|
171
172
|
**When to use**: Frame drops, off-screen rendering, excessive blending.
|
|
172
173
|
|
|
173
174
|
### Key Workflow
|
|
174
175
|
|
|
175
|
-
1. Record with the
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
-
|
|
180
|
-
|
|
176
|
+
1. Record with the **Animation Hitches** template on a real device when the
|
|
177
|
+
symptom is stutter or missed frames.
|
|
178
|
+
2. Add Core Animation instruments such as **Core Animation FPS**,
|
|
179
|
+
**Core Animation Commits**, or **Core Animation Activity** when you need
|
|
180
|
+
lower-level render pipeline detail.
|
|
181
|
+
3. Check FPS, hitches, commits, and frame lifetime lanes for drops or long
|
|
182
|
+
commit/render work.
|
|
183
|
+
4. Enable these debug options in Recording Options or Xcode view debugging:
|
|
184
|
+
- **Color Blended Layers** - red areas have multiple overlapping layers
|
|
185
|
+
- **Color Off-screen Rendered** - yellow areas use off-screen passes
|
|
186
|
+
- **Color Hits Green and Misses Red** - rasterization cache hits/misses
|
|
181
187
|
|
|
182
188
|
### Common Issues
|
|
183
189
|
|
|
@@ -188,15 +194,15 @@ redraws, or identity churn in lists.
|
|
|
188
194
|
| Shadow without path | Off-screen rendering | Set `shadowPath` explicitly |
|
|
189
195
|
| Large images not downsampled | High memory + slow rendering | Downsample before display |
|
|
190
196
|
|
|
191
|
-
##
|
|
197
|
+
## Power Profiler
|
|
192
198
|
|
|
193
199
|
**When to use**: Battery drain complaints, background energy impact, or
|
|
194
200
|
App Store rejection for excessive energy use.
|
|
195
201
|
|
|
196
202
|
### Key Workflow
|
|
197
203
|
|
|
198
|
-
1. Record with the
|
|
199
|
-
2. Check
|
|
204
|
+
1. Record with the **Power Profiler** template on a physical device.
|
|
205
|
+
2. Check power, thermal, and energy-impact lanes for high readings.
|
|
200
206
|
3. Examine component breakdown:
|
|
201
207
|
- CPU
|
|
202
208
|
- Network
|
|
@@ -238,7 +244,7 @@ faults, system calls, and inter-process communication.
|
|
|
238
244
|
- **VM faults**: page faults from memory-mapped files or large allocations
|
|
239
245
|
- **Context switches**: excessive switching between threads
|
|
240
246
|
|
|
241
|
-
This is the most advanced template
|
|
247
|
+
This is the most advanced template - use it after Time Profiler when you
|
|
242
248
|
need OS-level detail.
|
|
243
249
|
|
|
244
250
|
## xctrace CLI
|
|
@@ -252,21 +258,21 @@ xcrun xctrace record \
|
|
|
252
258
|
--device "iPhone" \
|
|
253
259
|
--output ~/traces/profile.trace \
|
|
254
260
|
--time-limit 30s \
|
|
255
|
-
--launch
|
|
261
|
+
--launch -- /path/to/MyApp.app
|
|
256
262
|
|
|
257
263
|
# Record Allocations trace for a running app
|
|
258
264
|
xcrun xctrace record \
|
|
259
265
|
--template "Allocations" \
|
|
260
266
|
--device "iPhone" \
|
|
261
267
|
--output ~/traces/alloc.trace \
|
|
262
|
-
--attach
|
|
268
|
+
--attach MyApp
|
|
263
269
|
|
|
264
270
|
# Record with multiple instruments
|
|
265
271
|
xcrun xctrace record \
|
|
266
272
|
--template "Time Profiler" \
|
|
267
|
-
--
|
|
273
|
+
--instrument "Allocations" \
|
|
268
274
|
--output ~/traces/combined.trace \
|
|
269
|
-
--launch
|
|
275
|
+
--launch -- /path/to/MyApp.app
|
|
270
276
|
```
|
|
271
277
|
|
|
272
278
|
### Exporting Data
|
|
@@ -294,8 +300,8 @@ xcrun xctrace list templates
|
|
|
294
300
|
# Connected devices
|
|
295
301
|
xcrun xctrace list devices
|
|
296
302
|
|
|
297
|
-
#
|
|
298
|
-
xcrun xctrace list
|
|
303
|
+
# Available instruments
|
|
304
|
+
xcrun xctrace list instruments
|
|
299
305
|
```
|
|
300
306
|
|
|
301
307
|
## Custom Instruments with os_signpost
|
|
@@ -308,11 +314,12 @@ import os
|
|
|
308
314
|
let signposter = OSSignposter(subsystem: "com.example.app", category: "Networking")
|
|
309
315
|
|
|
310
316
|
func fetchUser(id: String) async throws -> User {
|
|
311
|
-
let
|
|
317
|
+
let signpostID = signposter.makeSignpostID()
|
|
318
|
+
let state = signposter.beginInterval("fetchUser", id: signpostID)
|
|
312
319
|
defer { signposter.endInterval("fetchUser", state) }
|
|
313
320
|
|
|
314
321
|
let (data, _) = try await URLSession.shared.data(from: userURL(id))
|
|
315
|
-
signposter.emitEvent("dataReceived", "\(data.count) bytes")
|
|
322
|
+
signposter.emitEvent("dataReceived", id: signpostID, "\(data.count) bytes")
|
|
316
323
|
|
|
317
324
|
return try JSONDecoder().decode(User.self, from: data)
|
|
318
325
|
}
|
|
@@ -320,7 +327,8 @@ func fetchUser(id: String) async throws -> User {
|
|
|
320
327
|
|
|
321
328
|
### Viewing in Instruments
|
|
322
329
|
|
|
323
|
-
1. Open Instruments with
|
|
330
|
+
1. Open Instruments with a Blank document, then add the **os_signpost**
|
|
331
|
+
instrument, or start from a template that includes **Points of Interest**.
|
|
324
332
|
2. Your custom intervals appear as labeled bars in the timeline.
|
|
325
333
|
3. Events appear as point markers.
|
|
326
334
|
4. Filter by subsystem or category to isolate your signposts.
|
|
@@ -328,7 +336,7 @@ func fetchUser(id: String) async throws -> User {
|
|
|
328
336
|
### Integration with MetricKit
|
|
329
337
|
|
|
330
338
|
Signposts emitted through `MXMetricManager.makeLogHandle(category:)` are
|
|
331
|
-
also reported in MetricKit payloads. See the `metrickit
|
|
339
|
+
also reported in MetricKit payloads. See the `metrickit` skill
|
|
332
340
|
for details on custom signpost metrics.
|
|
333
341
|
|
|
334
342
|
## Automation and CI Integration
|
|
@@ -350,7 +358,7 @@ xcrun xctrace record \
|
|
|
350
358
|
--template "$TEMPLATE" \
|
|
351
359
|
--output "$TRACE_OUTPUT" \
|
|
352
360
|
--time-limit 60s \
|
|
353
|
-
--launch "$APP_BUNDLE"
|
|
361
|
+
--launch -- "$APP_BUNDLE"
|
|
354
362
|
|
|
355
363
|
# Export data for analysis
|
|
356
364
|
xcrun xctrace export \
|
|
@@ -21,8 +21,8 @@ Complete LLDB command reference for iOS debugging. Companion to the main `debugg
|
|
|
21
21
|
|
|
22
22
|
| Command | Mechanism | Side Effects | Speed |
|
|
23
23
|
|---------|-----------|--------------|-------|
|
|
24
|
-
| `po expr` | Calls `debugDescription` via expression eval | Yes
|
|
25
|
-
| `p expr` | LLDB formatter on expression result | Yes
|
|
24
|
+
| `po expr` | Calls `debugDescription` via expression eval | Yes - runs code | Slow |
|
|
25
|
+
| `p expr` | LLDB formatter on expression result | Yes - runs code | Medium |
|
|
26
26
|
| `v varname` | Reads frame memory directly | No | Fast |
|
|
27
27
|
|
|
28
28
|
```text
|