@mmerterden/multi-agent-pipeline 8.6.1 → 10.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +544 -2484
- package/README.md +117 -138
- package/docs/features.md +1 -1
- package/index.js +8 -10
- package/install/_adapters.mjs +5 -1
- package/install/_common.mjs +63 -0
- package/install/claude.mjs +14 -14
- package/install/copilot.mjs +14 -8
- package/install/index.mjs +85 -19
- package/install/templates/claude-hooks.json +18 -0
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +21 -6
- package/pipeline/adapters/_base.mjs +366 -14
- package/pipeline/adapters/antigravity.mjs +140 -0
- package/pipeline/adapters/codex.mjs +159 -0
- package/pipeline/adapters/copilot-chat-orchestration.mjs +148 -0
- package/pipeline/adapters/copilot-chat.mjs +34 -68
- package/pipeline/adapters/cursor-orchestration.mjs +152 -0
- package/pipeline/adapters/cursor.mjs +49 -90
- package/pipeline/agents/android-architect.md +5 -5
- package/pipeline/agents/backend-architect.md +4 -4
- package/pipeline/agents/code-reviewer.md +10 -10
- package/pipeline/agents/dev-critic.md +17 -17
- package/pipeline/agents/explorer.md +3 -3
- package/pipeline/agents/ios-architect.md +4 -4
- package/pipeline/agents/security-auditor.md +12 -12
- package/pipeline/agents/task-clarifier.md +18 -18
- package/pipeline/claude-md-template.md +3 -3
- package/pipeline/commands/archive-guard.md +3 -3
- package/pipeline/commands/figma-to-swiftui.md +10 -10
- package/pipeline/commands/multi-agent/_account-picker.md +13 -9
- package/pipeline/commands/multi-agent/_dev-context.md +15 -15
- package/pipeline/commands/multi-agent/_input-parser.md +4 -4
- package/pipeline/commands/multi-agent/_repo-picker.md +9 -9
- package/pipeline/commands/multi-agent/analysis-resolve.md +129 -0
- package/pipeline/commands/multi-agent/analysis.md +667 -0
- package/pipeline/commands/multi-agent/autopilot.md +22 -22
- package/pipeline/commands/multi-agent/build-optimize.md +77 -0
- package/pipeline/commands/multi-agent/channels.md +96 -96
- package/pipeline/commands/multi-agent/delete.md +19 -17
- package/pipeline/commands/multi-agent/dev-autopilot.md +23 -23
- package/pipeline/commands/multi-agent/dev-local-autopilot.md +23 -23
- package/pipeline/commands/multi-agent/dev-local.md +25 -22
- package/pipeline/commands/multi-agent/dev.md +49 -49
- package/pipeline/commands/multi-agent/diff-explain.md +4 -4
- package/pipeline/commands/multi-agent/garbage-collect.md +58 -0
- package/pipeline/commands/multi-agent/help.md +75 -66
- package/pipeline/commands/multi-agent/issue.md +3 -3
- package/pipeline/commands/multi-agent/jira.md +12 -12
- package/pipeline/commands/multi-agent/kill.md +6 -6
- package/pipeline/commands/multi-agent/language.md +12 -12
- package/pipeline/commands/multi-agent/local-autopilot.md +34 -34
- package/pipeline/commands/multi-agent/local.md +24 -25
- package/pipeline/commands/multi-agent/log.md +6 -6
- package/pipeline/commands/multi-agent/manual-test.md +3 -3
- package/pipeline/commands/multi-agent/prune-logs.md +60 -0
- package/pipeline/commands/multi-agent/purge.md +10 -7
- package/pipeline/commands/multi-agent/refactor.md +9 -9
- package/pipeline/commands/multi-agent/refs/analysis-template.md +1062 -0
- package/pipeline/commands/multi-agent/refs/android-guide.md +15 -13
- package/pipeline/commands/multi-agent/refs/audit-guide.md +20 -20
- package/pipeline/commands/multi-agent/refs/backend-guide.md +9 -9
- package/pipeline/commands/multi-agent/refs/channels/confluence.md +17 -17
- package/pipeline/commands/multi-agent/refs/channels/issue-comment.md +30 -30
- package/pipeline/commands/multi-agent/refs/channels/jira.md +15 -15
- package/pipeline/commands/multi-agent/refs/channels/pr-review-actions.md +19 -17
- package/pipeline/commands/multi-agent/refs/channels/pr.md +22 -22
- package/pipeline/commands/multi-agent/refs/channels/wiki.md +19 -19
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +11 -11
- package/pipeline/commands/multi-agent/refs/conventions-defaults.md +179 -0
- package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +35 -33
- package/pipeline/commands/multi-agent/refs/features/dev-critic.md +5 -5
- package/pipeline/commands/multi-agent/refs/features/external-context-injection.md +6 -6
- package/pipeline/commands/multi-agent/refs/features/model-fallback.md +73 -0
- package/pipeline/commands/multi-agent/refs/features/plan-todos.md +1 -1
- package/pipeline/commands/multi-agent/refs/features/prior-fix-detection.md +4 -4
- package/pipeline/commands/multi-agent/refs/features/repo-map.md +6 -6
- package/pipeline/commands/multi-agent/refs/features/shadow-git.md +2 -2
- package/pipeline/commands/multi-agent/refs/frontend-guide.md +16 -16
- package/pipeline/commands/multi-agent/refs/issue-jira-triad.md +18 -18
- package/pipeline/commands/multi-agent/refs/keychain.md +18 -8
- package/pipeline/commands/multi-agent/refs/knowledge.md +9 -9
- package/pipeline/commands/multi-agent/refs/multi-repo-integration-build.md +19 -19
- package/pipeline/commands/multi-agent/refs/phases/log-format.md +29 -9
- package/pipeline/commands/multi-agent/refs/phases/modes.md +33 -33
- package/pipeline/commands/multi-agent/refs/phases/operations.md +11 -11
- package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +93 -57
- package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +59 -28
- package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +115 -63
- package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +99 -36
- package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +160 -63
- package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +33 -18
- package/pipeline/commands/multi-agent/refs/phases/phase-6-commit.md +45 -43
- package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +54 -28
- package/pipeline/commands/multi-agent/refs/phases.md +17 -17
- package/pipeline/commands/multi-agent/refs/picker-contract.md +65 -0
- package/pipeline/commands/multi-agent/refs/progress-contract.md +37 -21
- package/pipeline/commands/multi-agent/refs/rules.md +83 -25
- package/pipeline/commands/multi-agent/refs/swiftui-guide.md +32 -30
- package/pipeline/commands/multi-agent/refs/tracker-contract.md +54 -30
- package/pipeline/commands/multi-agent/refs/wiki-capture.md +36 -33
- package/pipeline/commands/multi-agent/resume.md +9 -9
- package/pipeline/commands/multi-agent/review.md +24 -24
- package/pipeline/commands/multi-agent/scan.md +10 -10
- package/pipeline/commands/multi-agent/search.md +8 -8
- package/pipeline/commands/multi-agent/setup.md +111 -84
- package/pipeline/commands/multi-agent/stack.md +5 -5
- package/pipeline/commands/multi-agent/status.md +5 -5
- package/pipeline/commands/multi-agent/sync.md +123 -111
- package/pipeline/commands/multi-agent/test.md +6 -6
- package/pipeline/commands/multi-agent/update.md +1 -1
- package/pipeline/commands/multi-agent.md +66 -60
- package/pipeline/commands/sim-test.md +14 -14
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +1 -1
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +2 -2
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +2 -2
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +1 -1
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +2 -2
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +3 -3
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +4 -4
- package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +1 -1
- package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +1 -1
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/task.json +12 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-2-plan.json +40 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/task.json +12 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-review.json +28 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-triage.json +27 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/task.json +12 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-2-plan.json +41 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-review.json +12 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-triage.json +6 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/task.json +12 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-2-plan.json +42 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-review.json +28 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-triage.json +27 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/task.json +12 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-1-analysis.json +25 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-2-plan.json +31 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-review.json +12 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-triage.json +18 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/task.json +12 -0
- package/pipeline/eval/golden-tasks/README.md +14 -14
- package/pipeline/eval/intent-cases.json +40 -0
- package/pipeline/eval/run-metrics-fixture.json +46 -0
- package/pipeline/eval/triage/01-empty-findings/notes.md +1 -1
- package/pipeline/eval/triage/02-real-blocker/notes.md +2 -2
- package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +1 -1
- package/pipeline/eval/triage/04-false-positive-reject/notes.md +1 -1
- package/pipeline/eval/triage/05-mixed-classification/notes.md +2 -2
- package/pipeline/eval/triage/06-severity-mismatch/notes.md +2 -2
- package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +1 -1
- package/pipeline/eval/triage/08-style-misclassified/notes.md +1 -1
- package/pipeline/eval/triage/09-cascading-finding/notes.md +2 -2
- package/pipeline/eval/triage/10-deferred-crossref/notes.md +2 -2
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +3 -3
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +2 -2
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +5 -5
- package/pipeline/eval/triage/README.md +4 -4
- package/pipeline/lib/account-resolver.sh +3 -3
- package/pipeline/lib/ask-choice.sh +98 -0
- package/pipeline/lib/channels-multi-repo.sh +3 -3
- package/pipeline/lib/classify-intent.sh +110 -0
- package/pipeline/lib/context-link-extractor.sh +3 -3
- package/pipeline/lib/credential-store-resolver.sh +3 -3
- package/pipeline/lib/credential-store.sh +9 -5
- package/pipeline/lib/extract-conventions.sh +1034 -0
- package/pipeline/lib/fetch-confluence.sh +3 -3
- package/pipeline/lib/fetch-crashlytics.sh +5 -5
- package/pipeline/lib/fetch-fortify.sh +5 -21
- package/pipeline/lib/fetch-swagger.sh +5 -5
- package/pipeline/lib/figma-screenshot.sh +536 -0
- package/pipeline/lib/issue-fetcher.sh +46 -20
- package/pipeline/lib/md2confluence-v3.py +1076 -0
- package/pipeline/lib/multi-repo-pipeline.sh +13 -22
- package/pipeline/lib/plan-todos.sh +7 -7
- package/pipeline/lib/post-pr-review.sh +53 -21
- package/pipeline/lib/repo-cache.sh +5 -5
- package/pipeline/lib/review-watch.sh +17 -13
- package/pipeline/lib/shadow-git.sh +7 -7
- package/pipeline/lib/submodule-detector.sh +3 -3
- package/pipeline/lib/vercel-deploy.sh +28 -15
- package/pipeline/preferences-template.json +21 -4
- package/pipeline/rules/app-store-guidelines.md +2 -2
- package/pipeline/rules/code-style.md +6 -6
- package/pipeline/rules/figma-pipeline.md +100 -2
- package/pipeline/rules/kotlin-android.md +8 -8
- package/pipeline/rules/security.md +4 -4
- package/pipeline/rules/tdd.md +1 -1
- package/pipeline/rules/testing.md +5 -5
- package/pipeline/schemas/agent-state.schema.json +55 -20
- package/pipeline/schemas/analysis-output.schema.json +7 -2
- package/pipeline/schemas/analysis-spec.schema.json +484 -0
- package/pipeline/schemas/clarify-output.schema.json +5 -5
- package/pipeline/schemas/conventions-output.schema.json +70 -0
- package/pipeline/schemas/dev-critic-output.schema.json +2 -2
- package/pipeline/schemas/diff-risk.schema.json +3 -3
- package/pipeline/schemas/figma-project-config.schema.json +3 -3
- package/pipeline/schemas/learnings-ledger.schema.json +39 -0
- package/pipeline/schemas/migrations/README.md +2 -2
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +5 -5
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +3 -3
- package/pipeline/schemas/migrations/prefs-2.1.0-to-2.2.0.mjs +4 -4
- package/pipeline/schemas/migrations/prefs-2.2.0-to-2.3.0.mjs +5 -5
- package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +3 -3
- package/pipeline/schemas/plan-todos.schema.json +4 -4
- package/pipeline/schemas/planning-output.schema.json +3 -3
- package/pipeline/schemas/prefs.schema.json +97 -13
- package/pipeline/schemas/reviewer-output.schema.json +7 -3
- package/pipeline/schemas/test-gap.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +8 -8
- package/pipeline/schemas/triage-corpus.schema.json +1 -1
- package/pipeline/schemas/triage-output.schema.json +44 -6
- package/pipeline/scripts/README.md +64 -64
- package/pipeline/scripts/aggregate-metrics.mjs +55 -16
- package/pipeline/scripts/audit-log-rotate.sh +3 -3
- package/pipeline/scripts/audit-log.sh +20 -7
- package/pipeline/scripts/benchmark-phase-0.sh +6 -6
- package/pipeline/scripts/build-skills-index.mjs +15 -15
- package/pipeline/scripts/check-md-links.mjs +59 -0
- package/pipeline/scripts/classify-plan-safety.mjs +24 -18
- package/pipeline/scripts/cost-budget-check.mjs +160 -0
- package/pipeline/scripts/cost-table.json +23 -13
- package/pipeline/scripts/diff-explain.mjs +12 -12
- package/pipeline/scripts/diff-risk-score.mjs +18 -17
- package/pipeline/scripts/eval-golden-tasks-live.mjs +13 -10
- package/pipeline/scripts/eval-golden-tasks.mjs +3 -14
- package/pipeline/scripts/eval-intent.mjs +103 -0
- package/pipeline/scripts/eval-triage.mjs +3 -3
- package/pipeline/scripts/evidence-gate.mjs +155 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +9 -9
- package/pipeline/scripts/gc-tmp.sh +102 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +27 -21
- package/pipeline/scripts/gen-skills-index.mjs +6 -6
- package/pipeline/scripts/github-ssh-setup.sh +1 -1
- package/pipeline/scripts/keychain-save.sh +1 -1
- package/pipeline/scripts/keychain.py +6 -6
- package/pipeline/scripts/learnings-ledger.mjs +284 -0
- package/pipeline/scripts/lint-skills.mjs +80 -0
- package/pipeline/scripts/log-metric.sh +18 -9
- package/pipeline/scripts/match-skills.mjs +13 -8
- package/pipeline/scripts/memory-load.sh +3 -3
- package/pipeline/scripts/memory-save.sh +5 -5
- package/pipeline/scripts/migrate-prefs.mjs +17 -17
- package/pipeline/scripts/migrate-state.mjs +12 -12
- package/pipeline/scripts/output-quality-check.sh +7 -7
- package/pipeline/scripts/phase-banner.sh +5 -5
- package/pipeline/scripts/phase-tracker.sh +90 -53
- package/pipeline/scripts/pre-commit-check.sh +45 -5
- package/pipeline/scripts/pre-push-check.sh +7 -7
- package/pipeline/scripts/prune-logs.sh +118 -0
- package/pipeline/scripts/render-agent-log-cost.sh +55 -18
- package/pipeline/scripts/render-cost-summary.sh +9 -9
- package/pipeline/scripts/render-work-summary.sh +4 -4
- package/pipeline/scripts/repo-map.mjs +9 -9
- package/pipeline/scripts/run-aggregator.mjs +7 -6
- package/pipeline/scripts/run-metrics.mjs +129 -0
- package/pipeline/scripts/run-smokes.mjs +76 -0
- package/pipeline/scripts/scan-skills.sh +11 -11
- package/pipeline/scripts/search-logs.sh +8 -8
- package/pipeline/scripts/sign-skills.sh +2 -2
- package/pipeline/scripts/smoke-adapters.sh +79 -10
- package/pipeline/scripts/smoke-add-detail.sh +5 -5
- package/pipeline/scripts/smoke-agent-log-cost.sh +85 -6
- package/pipeline/scripts/smoke-agent-model-routing.sh +3 -3
- package/pipeline/scripts/smoke-ask-choice.sh +42 -0
- package/pipeline/scripts/smoke-bitbucket-contract.sh +19 -3
- package/pipeline/scripts/smoke-changelog-version.sh +47 -0
- package/pipeline/scripts/smoke-channels-flow.sh +1 -1
- package/pipeline/scripts/smoke-ci-workflows.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +3 -3
- package/pipeline/scripts/smoke-commands-skills-parity.sh +4 -4
- package/pipeline/scripts/smoke-community-gates.sh +75 -0
- package/pipeline/scripts/smoke-compliance-skills.sh +5 -5
- package/pipeline/scripts/smoke-cost-budget.sh +70 -0
- package/pipeline/scripts/smoke-cost-summary.sh +4 -4
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +50 -9
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +5 -5
- package/pipeline/scripts/smoke-delete-flow.sh +5 -5
- package/pipeline/scripts/smoke-dev-critic.sh +2 -2
- package/pipeline/scripts/smoke-diff-explain.sh +22 -3
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-dynamic-skill-loading.sh +1 -1
- package/pipeline/scripts/smoke-eval-live.sh +4 -4
- package/pipeline/scripts/smoke-evidence-gate.sh +93 -0
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +1 -1
- package/pipeline/scripts/smoke-extract-conventions.sh +163 -0
- package/pipeline/scripts/smoke-figma-android-parity.sh +1 -1
- package/pipeline/scripts/smoke-figma-credential-store.sh +3 -3
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +12 -12
- package/pipeline/scripts/smoke-figma-dispatch.sh +5 -5
- package/pipeline/scripts/smoke-figma-sync.sh +1 -1
- package/pipeline/scripts/smoke-gate-hooks.sh +56 -0
- package/pipeline/scripts/smoke-gc-tmp.sh +84 -0
- package/pipeline/scripts/smoke-identity-isolation.sh +7 -7
- package/pipeline/scripts/smoke-install-layout.sh +10 -10
- package/pipeline/scripts/smoke-intent-guard.sh +86 -0
- package/pipeline/scripts/smoke-issue-comment-template.sh +3 -3
- package/pipeline/scripts/smoke-issue-jira-triad.sh +1 -1
- package/pipeline/scripts/smoke-keychain.sh +6 -6
- package/pipeline/scripts/smoke-language-axis.sh +2 -2
- package/pipeline/scripts/smoke-learnings-ledger.sh +86 -0
- package/pipeline/scripts/smoke-lib-scripts.sh +2 -2
- package/pipeline/scripts/smoke-mcp-gate.sh +68 -0
- package/pipeline/scripts/smoke-md-links.sh +8 -0
- package/pipeline/scripts/smoke-md2confluence.sh +126 -0
- package/pipeline/scripts/smoke-metrics-cache-ratio.sh +72 -0
- package/pipeline/scripts/smoke-migrate-state.sh +10 -10
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +7 -4
- package/pipeline/scripts/smoke-model-fallback.sh +80 -0
- package/pipeline/scripts/smoke-multi-repo-integration.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +115 -0
- package/pipeline/scripts/smoke-no-token-prompt.sh +31 -15
- package/pipeline/scripts/smoke-pat-audit.sh +26 -5
- package/pipeline/scripts/smoke-per-repo-memory.sh +1 -1
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +2 -2
- package/pipeline/scripts/smoke-phase-banner.sh +1 -1
- package/pipeline/scripts/smoke-phase-tracker.sh +1 -1
- package/pipeline/scripts/smoke-phase0-bridge-contract.sh +4 -4
- package/pipeline/scripts/smoke-phase4-triage.sh +94 -7
- package/pipeline/scripts/smoke-plan-approval-gate.sh +3 -3
- package/pipeline/scripts/smoke-plan-safety.sh +1 -1
- package/pipeline/scripts/smoke-plan-todos.sh +7 -4
- package/pipeline/scripts/smoke-pr-review-actions.sh +2 -2
- package/pipeline/scripts/smoke-pre-commit.sh +34 -2
- package/pipeline/scripts/smoke-pref-migration.sh +1 -1
- package/pipeline/scripts/smoke-prefs-language.sh +5 -5
- package/pipeline/scripts/smoke-progress-contract.sh +3 -3
- package/pipeline/scripts/smoke-prune-logs.sh +87 -0
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-readme-counts.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +9 -9
- package/pipeline/scripts/smoke-review-watch.sh +12 -0
- package/pipeline/scripts/smoke-run-aggregator.sh +7 -7
- package/pipeline/scripts/smoke-run-metrics.sh +50 -0
- package/pipeline/scripts/smoke-schema-validation.sh +18 -11
- package/pipeline/scripts/smoke-search.sh +5 -5
- package/pipeline/scripts/smoke-shared-runtime.sh +108 -0
- package/pipeline/scripts/smoke-skill-authoring.sh +13 -13
- package/pipeline/scripts/smoke-skill-language.sh +4 -4
- package/pipeline/scripts/smoke-skill-manifest.sh +2 -2
- package/pipeline/scripts/smoke-skill-scan.sh +2 -2
- package/pipeline/scripts/smoke-stack-swap.sh +2 -2
- package/pipeline/scripts/smoke-subagent-validators.sh +8 -5
- package/pipeline/scripts/smoke-sync-adapters.sh +1 -1
- package/pipeline/scripts/smoke-sync-delegation.sh +7 -7
- package/pipeline/scripts/smoke-sync-parity.sh +1 -1
- package/pipeline/scripts/smoke-tasklist-ordering.sh +7 -7
- package/pipeline/scripts/smoke-telemetry.sh +1 -1
- package/pipeline/scripts/smoke-test-gap.sh +5 -5
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-tracker-contract.sh +6 -6
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +9 -1
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-contradiction.sh +1 -1
- package/pipeline/scripts/smoke-validator-gates.sh +164 -0
- package/pipeline/scripts/smoke-vercel-deploy-redact.sh +11 -11
- package/pipeline/scripts/smoke-wiki-integration.sh +2 -2
- package/pipeline/scripts/smoke-work-summary.sh +3 -3
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/smoke-write-state.sh +2 -2
- package/pipeline/scripts/stack-swap.sh +3 -3
- package/pipeline/scripts/sync-adapters.mjs +37 -10
- package/pipeline/scripts/sync-parity-check.sh +6 -6
- package/pipeline/scripts/test-gap-scan.mjs +11 -13
- package/pipeline/scripts/token-budget-report.mjs +4 -4
- package/pipeline/scripts/triage-memory.mjs +6 -6
- package/pipeline/scripts/uninstall.mjs +42 -4
- package/pipeline/scripts/update-issue-progress.sh +2 -2
- package/pipeline/scripts/validate-analysis.mjs +19 -21
- package/pipeline/scripts/validate-diff-risk.mjs +4 -4
- package/pipeline/scripts/validate-planning.mjs +3 -3
- package/pipeline/scripts/validate-reviewer.mjs +4 -4
- package/pipeline/scripts/validate-schemas.mjs +4 -4
- package/pipeline/scripts/validate-test-gap.mjs +4 -4
- package/pipeline/scripts/validate-triage.mjs +68 -9
- package/pipeline/scripts/verify-skills.sh +7 -7
- package/pipeline/scripts/write-state.mjs +49 -11
- package/pipeline/skills/.skill-manifest.json +245 -149
- package/pipeline/skills/.skills-index.json +236 -47
- package/pipeline/skills/figma-android/README.md +5 -5
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +3 -3
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +8 -8
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +4 -4
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +5 -5
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +14 -14
- package/pipeline/skills/figma-common/README.md +29 -29
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +20 -15
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +35 -30
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +35 -30
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +20 -20
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +32 -32
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +9 -9
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +25 -20
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +11 -6
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +30 -25
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +9 -4
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +27 -22
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +38 -38
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +39 -34
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +20 -15
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +44 -39
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +6 -6
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +30 -30
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +1 -1
- package/pipeline/skills/figma-common/figma-review/SKILL.md +31 -26
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +11 -11
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +5 -5
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +6 -6
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +12 -12
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +4 -4
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +1 -1
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +48 -48
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +42 -37
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +23 -18
- package/pipeline/skills/figma-common/performance-start/SKILL.md +52 -47
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +68 -68
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +42 -37
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +16 -16
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +15 -15
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +9 -9
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +15 -15
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +38 -38
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +19 -19
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +25 -25
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +7 -7
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +38 -38
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +29 -29
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +57 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +10 -10
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +16 -16
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +23 -23
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +26 -26
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +43 -43
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +17 -17
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +19 -19
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +15 -15
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +39 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +7 -7
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +29 -29
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +31 -31
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +16 -16
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +49 -49
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +8 -8
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +10 -10
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +11 -11
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +14 -14
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +6 -6
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +9 -9
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +18 -18
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +9 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +12 -12
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +3 -3
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +26 -26
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +4 -4
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +2 -2
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +1 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +5 -5
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +41 -41
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +8 -8
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +7 -7
- package/pipeline/skills/shared/README.md +62 -41
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +39 -39
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +44 -44
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +182 -176
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +55 -0
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +48 -0
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +16 -16
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +48 -0
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +40 -40
- package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +33 -30
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +26 -26
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +20 -20
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +15 -15
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +12 -12
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +10 -10
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +18 -18
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +9 -9
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +20 -20
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +63 -0
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +16 -13
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +110 -110
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +13 -13
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +22 -22
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +18 -18
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +13 -13
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +33 -30
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +9 -9
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +79 -79
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +10 -10
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +41 -0
- package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +53 -0
- package/pipeline/skills/shared/external/agentflow/SKILL.md +9 -9
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +113 -52
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +41 -0
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +23 -16
- package/pipeline/skills/shared/external/app-clips/SKILL.md +85 -354
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +135 -0
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +125 -0
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +113 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +152 -59
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +161 -118
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +289 -392
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +174 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +191 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +57 -107
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +35 -12
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +28 -26
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +53 -62
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +7 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +4 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +32 -12
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +34 -30
- package/pipeline/skills/shared/external/authentication/SKILL.md +134 -138
- package/pipeline/skills/shared/external/authentication/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +56 -29
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +183 -0
- package/pipeline/skills/shared/external/avkit/SKILL.md +497 -0
- package/pipeline/skills/shared/external/avkit/evals/evals.json +55 -0
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +668 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +29 -29
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +44 -19
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +136 -99
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +27 -8
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +7 -6
- package/pipeline/skills/shared/external/clean-code/SKILL.md +2 -2
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +63 -56
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +7 -4
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +31 -11
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +41 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +51 -51
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +70 -65
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +25 -1
- package/pipeline/skills/shared/external/core-data/SKILL.md +496 -0
- package/pipeline/skills/shared/external/core-data/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +47 -14
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +47 -16
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +43 -54
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +32 -2
- package/pipeline/skills/shared/external/coreml/SKILL.md +89 -48
- package/pipeline/skills/shared/external/coreml/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +82 -37
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +493 -0
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +602 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +6 -5
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +77 -47
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +42 -34
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +2 -2
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +136 -176
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +240 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +73 -34
- package/pipeline/skills/shared/external/energykit/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +80 -38
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +67 -53
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +53 -3
- package/pipeline/skills/shared/external/healthkit/SKILL.md +57 -124
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +82 -1
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +43 -41
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +13 -8
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +5 -4
- package/pipeline/skills/shared/external/humanizer/SKILL.md +4 -4
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +174 -18
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +262 -4
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +117 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +141 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +67 -14
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +20 -3
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +131 -22
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +69 -22
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +28 -16
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +354 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +69 -44
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +35 -69
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +8 -8
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +485 -0
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +316 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +120 -131
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/live-activities/references/{live-activity-patterns.md → activitykit-patterns.md} +148 -63
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +40 -21
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/mapkit-location/references/{corelocation-patterns.md → mapkit-corelocation-patterns.md} +88 -41
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +27 -24
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +129 -172
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +180 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +45 -18
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +26 -6
- package/pipeline/skills/shared/external/natural-language/SKILL.md +48 -18
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +20 -7
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +4 -3
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +156 -66
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +51 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +69 -19
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +499 -0
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +42 -0
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +844 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +122 -28
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +49 -18
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +100 -51
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +48 -8
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +13 -15
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +4 -4
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +2 -2
- package/pipeline/skills/shared/external/photos-camera-media/references/{photospicker-patterns.md → photokit-patterns.md} +3 -3
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +45 -48
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +46 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +22 -33
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +56 -37
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +4 -3
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -0
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +74 -53
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +10 -10
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +21 -20
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +81 -64
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +48 -9
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +118 -104
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +171 -0
- package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +93 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/spm-analysis-checks.md +105 -0
- package/pipeline/skills/shared/external/spm-build-analysis/scripts/check_spm_pins.py +118 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +110 -44
- package/pipeline/skills/shared/external/storekit/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +94 -43
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +82 -33
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +449 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +164 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +219 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +184 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +158 -0
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +499 -0
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +45 -0
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +52 -40
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +92 -11
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +43 -16
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +43 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +50 -30
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +11 -4
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +113 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +150 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/{swift-6-2-concurrency.md → concurrency-patterns.md} +22 -11
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +52 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +21 -15
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/async-streams.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bridging.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bug-patterns.md +3 -3
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +8 -8
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/diagnostics.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/hotspots.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +4 -4
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +1 -1
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +2 -2
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/unstructured.md +3 -3
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +339 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +33 -34
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +97 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +19 -6
- package/pipeline/skills/shared/external/swift-security/SKILL.md +195 -0
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +595 -0
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +611 -0
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +708 -0
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +573 -0
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +752 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +538 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +530 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +543 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +620 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +515 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +496 -0
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +747 -0
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +566 -0
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +813 -0
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +97 -297
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +44 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +123 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +162 -34
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +3 -3
- package/pipeline/skills/shared/external/swift-testing-pro/references/core-rules.md +2 -2
- package/pipeline/skills/shared/external/swift-testing-pro/references/migrating-from-xctest.md +5 -5
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +3 -3
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +5 -5
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +44 -23
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +3 -3
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +75 -0
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +54 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +14 -10
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +5 -5
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swiftdata-pro/references/class-inheritance.md +2 -2
- package/pipeline/skills/shared/external/swiftdata-pro/references/cloudkit.md +1 -1
- package/pipeline/skills/shared/external/swiftdata-pro/references/core-rules.md +6 -6
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +337 -0
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +297 -0
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +170 -0
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +307 -0
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +35 -0
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +306 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +56 -65
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +48 -44
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +6 -6
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +13 -13
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +3 -3
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +1 -1
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +4 -4
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +2 -2
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +1 -1
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +16 -16
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +11 -11
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +7 -7
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +5 -5
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +6 -6
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +38 -16
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +13 -3
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +32 -28
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +1 -1
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +202 -41
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +16 -25
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +71 -26
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +284 -65
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +387 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +10 -10
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +15 -3
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +2 -2
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +1 -1
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +51 -25
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +78 -6
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +161 -16
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +85 -27
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +37 -33
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +39 -51
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +204 -30
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +226 -21
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +220 -20
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +159 -34
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +27 -0
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/accessibility.md +4 -4
- package/pipeline/skills/shared/external/swiftui-pro/references/api.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/data.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/design.md +4 -4
- package/pipeline/skills/shared/external/swiftui-pro/references/hygiene.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/navigation.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/performance.md +1 -1
- package/pipeline/skills/shared/external/swiftui-pro/references/swift.md +2 -2
- package/pipeline/skills/shared/external/swiftui-pro/references/views.md +2 -2
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +12 -12
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +3 -3
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +1 -1
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +11 -11
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +124 -10
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +2 -1
- package/pipeline/skills/shared/external/tipkit/SKILL.md +3 -3
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +9 -9
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +17 -16
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +11 -11
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +1 -1
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +5 -5
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +7 -6
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +3 -3
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +9 -9
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +8 -7
- package/pipeline/skills/shared/external/web-testing/SKILL.md +7 -6
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +23 -17
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +99 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +89 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/references/benchmark-artifacts.md +94 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/references/benchmarking-workflow.md +67 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +230 -0
- package/pipeline/skills/shared/external/xcode-build-benchmark/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +219 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/fix-patterns.md +290 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +157 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/benchmark-artifacts.md +94 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/orchestration-report-template.md +143 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/benchmark_builds.py +308 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/diagnose_compilation.py +273 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/scripts/generate_optimization_report.py +533 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +90 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/code-compilation-checks.md +106 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/recommendation-format.md +85 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/scripts/diagnose_compilation.py +273 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +77 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-optimization-sources.md +155 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-settings-best-practices.md +216 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/project-audit-checks.md +101 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/recommendation-format.md +85 -0
- package/pipeline/skills/skills-index.md +213 -192
- package/docs/GENERICITY-REVIEW.md +0 -277
- package/docs/STABILITY-FIX-PLAN.md +0 -168
- package/pipeline/scripts/.last-figma-sync-plan.json +0 -23
- package/pipeline/scripts/README-figma-smokes.md +0 -34
- package/pipeline/scripts/figma-placeholder-map.json +0 -191
- package/pipeline/scripts/import-figma-skills.sh +0 -253
- package/pipeline/scripts/smoke-figma-config-schema.sh +0 -144
- package/pipeline/scripts/smoke-figma-skill-import.sh +0 -174
- package/pipeline/scripts/smoke-install-leak-gate.sh +0 -125
- package/pipeline/scripts/smoke-personal-data.sh +0 -82
- package/pipeline/scripts/sync-figma-source.sh +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.json +0 -94
- package/pipeline/skills/shared/external/app-store-review/references/code-signing.md +0 -259
- package/pipeline/skills/shared/external/app-store-review/references/rejection-patterns.md +0 -152
- package/pipeline/skills/shared/external/pencilkit-drawing/references/paperkit-integration.md +0 -376
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: figma-fix
|
|
3
|
+
description: Applies a targeted fix for a bug filed during component review (via `/figma-review`), re-runs affected pipeline phases, closes the bug sub-issue, and cleanly transitions the parent component back to In Review with a.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /figma-fix - Fix a Review Bug
|
|
2
7
|
|
|
3
8
|
## Purpose
|
|
4
9
|
|
|
@@ -10,8 +15,8 @@ This skill fills the gap between `/figma-review` (which *files* bugs) and `/figm
|
|
|
10
15
|
|
|
11
16
|
| Parameter | Required | Description |
|
|
12
17
|
|-----------|----------|-------------|
|
|
13
|
-
| Bug issue number | Yes (one of) | `#123`
|
|
14
|
-
| Parent issue number | Alternative | `#100`
|
|
18
|
+
| Bug issue number | Yes (one of) | `#123` - the bug sub-issue filed by a reviewer |
|
|
19
|
+
| Parent issue number | Alternative | `#100` - the parent component issue (lists open bugs to pick from) |
|
|
15
20
|
| Figma URL | Alternative | Resolves to the component, then lists open bugs |
|
|
16
21
|
|
|
17
22
|
```
|
|
@@ -56,7 +61,7 @@ gh issue list --repo ${GH_REPO} --search "parent:#<M> label:review-fix state:ope
|
|
|
56
61
|
```
|
|
57
62
|
|
|
58
63
|
2. If multiple bugs: present them and ask which to fix (or fix all sequentially).
|
|
59
|
-
3. If zero bugs: HALT
|
|
64
|
+
3. If zero bugs: HALT - "No open bugs on this component."
|
|
60
65
|
|
|
61
66
|
### If Figma URL provided:
|
|
62
67
|
|
|
@@ -89,7 +94,7 @@ Extract: `componentName`, `suggestedComponentLocation`, `suggestedArtifactPath`.
|
|
|
89
94
|
|
|
90
95
|
3. Read the Figma design (if MCP available) or FIGMA.md variant mapping to understand the correct behavior.
|
|
91
96
|
|
|
92
|
-
4. Identify the fix
|
|
97
|
+
4. Identify the fix - what code needs to change.
|
|
93
98
|
|
|
94
99
|
---
|
|
95
100
|
|
|
@@ -98,7 +103,7 @@ Extract: `componentName`, `suggestedComponentLocation`, `suggestedArtifactPath`.
|
|
|
98
103
|
Edit the component source files to fix the bug. This is a **surgical edit**, not a full re-implementation.
|
|
99
104
|
|
|
100
105
|
Rules:
|
|
101
|
-
- Only edit files that need changing
|
|
106
|
+
- Only edit files that need changing - don't rewrite the entire component
|
|
102
107
|
- Follow existing code patterns (tokens, modifiers, configuration style)
|
|
103
108
|
- If the fix requires new assets/tokens, use `/common-utility assets add-color` or `/common-utility assets generate`
|
|
104
109
|
- If the fix requires new testing identifiers/localization/accessibility keys, use `/common-utility identifiers add` / `localization add` / `accessibility add`
|
|
@@ -201,7 +206,7 @@ python3 .instructions/figma/figma-to-swiftui/scripts/phase6-finalize.py \
|
|
|
201
206
|
|
|
202
207
|
```bash
|
|
203
208
|
gh issue close <bug_number> --repo ${GH_REPO} \
|
|
204
|
-
--comment "Fixed in $(git log -1 --format='%h')
|
|
209
|
+
--comment "Fixed in $(git log -1 --format='%h') - $(git log -1 --format='%s')"
|
|
205
210
|
```
|
|
206
211
|
|
|
207
212
|
### 7b. Check remaining open bugs on parent
|
|
@@ -255,16 +260,16 @@ The commit message references the bug issue number so GitHub auto-links it.
|
|
|
255
260
|
```
|
|
256
261
|
[ ] Bug sub-issue identified and read
|
|
257
262
|
[ ] Component source files read
|
|
258
|
-
[ ] Fix applied
|
|
263
|
+
[ ] Fix applied - only changed files that needed changing
|
|
259
264
|
[ ] xcodebuild build passed (exit 0)
|
|
260
|
-
[ ] phase4-finalize.py ran
|
|
265
|
+
[ ] phase4-finalize.py ran - implementation version bumped
|
|
261
266
|
[ ] Tests re-run and passing (ViewInspector + Snapshot)
|
|
262
|
-
[ ] phase5-finalize.py ran
|
|
263
|
-
[ ] Code Connect checked
|
|
264
|
-
[ ] phase6-finalize.py ran
|
|
267
|
+
[ ] phase5-finalize.py ran - tested flag green
|
|
268
|
+
[ ] Code Connect checked - .figma.swift updated if needed
|
|
269
|
+
[ ] phase6-finalize.py ran - codeConnect flag green
|
|
265
270
|
[ ] Bug sub-issue closed with fix commit reference
|
|
266
271
|
[ ] review-fix label removed from parent (if last bug)
|
|
267
|
-
[ ] update-issue-from-registry.py ran
|
|
272
|
+
[ ] update-issue-from-registry.py ran - parent synced to board
|
|
268
273
|
[ ] Parent status column: In Review (not Bugfix)
|
|
269
274
|
[ ] Parent review progress: 0/4 (fresh cycle)
|
|
270
275
|
```
|
|
@@ -274,11 +279,11 @@ The commit message references the bug issue number so GitHub auto-links it.
|
|
|
274
279
|
## Success Output
|
|
275
280
|
|
|
276
281
|
```
|
|
277
|
-
Bug fix complete: {ComponentName}
|
|
282
|
+
Bug fix complete: {ComponentName} - #{bug_number}
|
|
278
283
|
|
|
279
284
|
| Field | Value |
|
|
280
285
|
|-------|-------|
|
|
281
|
-
| Bug | #{bug_number}
|
|
286
|
+
| Bug | #{bug_number} - {bug_title} |
|
|
282
287
|
| Component | {ComponentName} |
|
|
283
288
|
| Fix commit | {commit_hash} |
|
|
284
289
|
| Implementation version | {new_version} (bumped from {old_version}) |
|
|
@@ -295,22 +300,22 @@ Next: Reviewers can re-review the component at #{parent_number}.
|
|
|
295
300
|
|
|
296
301
|
| Error | Action |
|
|
297
302
|
|-------|--------|
|
|
298
|
-
| Issue is not a bug (no review-fix/bug label) | HALT
|
|
299
|
-
| No parent issue | HALT
|
|
300
|
-
| Component not found via registry | HALT
|
|
303
|
+
| Issue is not a bug (no review-fix/bug label) | HALT - not a bug issue |
|
|
304
|
+
| No parent issue | HALT - orphan bug, can't resolve component |
|
|
305
|
+
| Component not found via registry | HALT - check node-id |
|
|
301
306
|
| Build fails after fix | Show errors, iterate |
|
|
302
307
|
| Tests fail after fix | Show failures, update tests |
|
|
303
308
|
| Bug close fails | Show error, ask user to close manually |
|
|
304
|
-
| review-fix label removal blocked | Non-fatal
|
|
305
|
-
| Sync fails | Non-fatal
|
|
309
|
+
| review-fix label removal blocked | Non-fatal - sync will still work via sub-issue count |
|
|
310
|
+
| Sync fails | Non-fatal - finalize scripts already updated registry |
|
|
306
311
|
|
|
307
312
|
---
|
|
308
313
|
|
|
309
314
|
## Notes
|
|
310
315
|
|
|
311
|
-
- This skill is **surgical**
|
|
316
|
+
- This skill is **surgical** - it fixes one specific bug, not a full re-implementation
|
|
312
317
|
- It always bumps `implemented.version` (Phase 4 finalize) because the code changed
|
|
313
318
|
- The version bump automatically makes the old review count stale, forcing a fresh review cycle
|
|
314
319
|
- Multiple bugs on the same component: run `/figma-fix` once per bug, or pass the parent issue to batch
|
|
315
|
-
- The `--no-sync` flag on Gates 4-6 prevents 3 redundant sync calls
|
|
320
|
+
- The `--no-sync` flag on Gates 4-6 prevents 3 redundant sync calls - Gate 7d does a single authoritative sync
|
|
316
321
|
- Works hand-in-hand with `/figma-review` (which creates bugs) and `/figma-iteration-commit` (which commits)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: figma-form-integration
|
|
3
|
-
description: "Form pattern integration for Figma-to-SwiftUI components. Guides FormSection/FormField adoption
|
|
3
|
+
description: "Form pattern integration for Figma-to-SwiftUI components. Guides FormSection/FormField adoption - when a component embeds form-capable sub-components (Selectbox, Checkbox, Radio, TextboxTextarea, DatepickerSchedule, ButtonsInputStepper) this skill defines how to model them as FormField references inside a nested FormSection, owned by the caller."
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: Read, Glob, Grep
|
|
6
6
|
status: wip-v5
|
|
7
7
|
sourced-from: upstream/figma-form-integration
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# /figma-form-integration
|
|
10
|
+
# /figma-form-integration - Form Pattern Integration
|
|
11
11
|
|
|
12
12
|
## Purpose
|
|
13
13
|
|
|
@@ -33,13 +33,13 @@ This is the forms counterpart of `/figma-price-integration`. Same shape: a proto
|
|
|
33
33
|
|
|
34
34
|
4. **Configuration holds form references, not values.** No `amount: String`, no `selectedOption: Option`, no `isChecked: Bool` next to a form input. If a value travels through the API, it travels through its `FormField`.
|
|
35
35
|
|
|
36
|
-
5. **Section belongs in Configuration, not View
|
|
36
|
+
5. **Section belongs in Configuration, not View - if a Configuration exists.** When the component has a Configuration struct (COMPLEX), the `FormSection` property MUST live on Configuration. Only components with NO Configuration may accept a `FormField` directly as a View init parameter.
|
|
37
37
|
|
|
38
|
-
6. **Static content (labels, placeholders, helper text, toggle captions) stays in Configuration
|
|
38
|
+
6. **Static content (labels, placeholders, helper text, toggle captions) stays in Configuration - not on the field.** Fields are pure form state: value, rules, policy, options, loading. Labels and copy are visual/content - they go on Configuration (chainable via `@GenerateChainModifiers`).
|
|
39
39
|
|
|
40
40
|
7. **The nested `FormSection` mirrors the design exactly.** Declare ONLY the fields the component actually renders. Do not add fields the design doesn't use; do not drop fields the design does use. The section's shape is dictated by the design, not by developer convenience or a shared/generic form model.
|
|
41
41
|
|
|
42
|
-
8. **Non-form actions ("Sil", "Detaylar", "Edit") stay as paired closures on the View.** They are NOT fields, NOT Configuration values
|
|
42
|
+
8. **Non-form actions ("Sil", "Detaylar", "Edit") stay as paired closures on the View.** They are NOT fields, NOT Configuration values - they are View dependencies passed via paired modifiers, exactly like any other coexistent action (see Phase 3D section2.3.1).
|
|
43
43
|
|
|
44
44
|
9. **Validation and focus are caller concerns.** The component never exposes an `isValid` property, never owns a `FormFocus`, never calls `validate()` internally. The scene calls `section.validate()` (or `[section].validateAll(focus:)`) and sets `.formFocus(...)` at the scene root.
|
|
45
45
|
|
|
@@ -49,7 +49,7 @@ This is the forms counterpart of `/figma-price-integration`. Same shape: a proto
|
|
|
49
49
|
|
|
50
50
|
Invoke when ANY of these are detected:
|
|
51
51
|
|
|
52
|
-
1. **Phase 3D
|
|
52
|
+
1. **Phase 3D - Sub-Component Integration (section2.2):** A nested instance of a form-capable design-system component:
|
|
53
53
|
- `Selectbox` (single-select dropdown)
|
|
54
54
|
- `Checkbox` / `CheckboxButton`
|
|
55
55
|
- `Radio` / `RadioButton`
|
|
@@ -57,13 +57,13 @@ Invoke when ANY of these are detected:
|
|
|
57
57
|
- `DatepickerSchedule` (date / date-range input)
|
|
58
58
|
- `ButtonsInputStepper` (numeric +/- counter, e.g. passenger / quantity selectors)
|
|
59
59
|
- Any component whose Figma variants include an input state (empty/filled/error/disabled) with a user-driven value
|
|
60
|
-
2. **Phase 4A
|
|
61
|
-
3. **Phase 4B
|
|
60
|
+
2. **Phase 4A - Configuration:** A property group contains form-input fields.
|
|
61
|
+
3. **Phase 4B - View:** The view renders form controls that require user input with validation semantics.
|
|
62
62
|
|
|
63
63
|
**Counting rule (atomic vs composite):**
|
|
64
|
-
- **0 embedded form sub-components**
|
|
65
|
-
- **1 embedded form sub-component**
|
|
66
|
-
- **2+ embedded form sub-components**
|
|
64
|
+
- **0 embedded form sub-components** - no form pattern; skip this skill.
|
|
65
|
+
- **1 embedded form sub-component** - atomic form: the Configuration (or View init) takes ONE `*FormField` directly, no `FormSection` wrapper.
|
|
66
|
+
- **2+ embedded form sub-components** - composite form: nested `FormSection` class in Configuration bundling every field.
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
@@ -94,7 +94,7 @@ Atomic form views (Checkbox, Radio, Selectbox, InputField, DatePicker)
|
|
|
94
94
|
| File | Location | Purpose |
|
|
95
95
|
|------|----------|---------|
|
|
96
96
|
| `FormSection.swift` | `CoreUI/Components/Forms/Foundation/` | Protocol + default aggregate `validate` / `evaluate` / `clear` / `state` semantics |
|
|
97
|
-
| `FormGroup.swift` | `CoreUI/Components/Forms/Foundation/` | Concrete everyday `FormSection`
|
|
97
|
+
| `FormGroup.swift` | `CoreUI/Components/Forms/Foundation/` | Concrete everyday `FormSection` - use for ad-hoc grouping when a named type isn't worth it |
|
|
98
98
|
| `FormField.swift` | `CoreUI/Components/Forms/Foundation/` | Generic base: `value`, `state`, `rules`, `validationPolicy` |
|
|
99
99
|
| `Validatable.swift` | `CoreUI/Components/Forms/Foundation/` | Non-generic protocol; `[any Validatable].validateAll(focus:)` + `leafFields` |
|
|
100
100
|
| `FormFocus.swift` | `CoreUI/Components/Forms/Foundation/` | `.formFocus(focus)` environment, `focus.focusFirstError()` |
|
|
@@ -114,13 +114,13 @@ public protocol FormSection: Validatable {
|
|
|
114
114
|
}
|
|
115
115
|
```
|
|
116
116
|
|
|
117
|
-
Default aggregate implementations are provided by a protocol extension: `validate()` runs every child (no short-circuit
|
|
117
|
+
Default aggregate implementations are provided by a protocol extension: `validate()` runs every child (no short-circuit - all inline errors update), rolls the first error into the section's own `state`; `clear()` resets everything to `.pristine`. Identical semantics to `FormGroup`.
|
|
118
118
|
|
|
119
119
|
### @FormSection macro
|
|
120
120
|
|
|
121
121
|
Attached to an `@Observable` class, synthesizes:
|
|
122
122
|
- `public var state: FormState = .pristine`
|
|
123
|
-
- `public var children: [any Validatable]`
|
|
123
|
+
- `public var children: [any Validatable]` - auto-detected from stored properties whose type matches `*FormField`, `*FormSection`, `FormGroup`, or is marked `@FormChild`.
|
|
124
124
|
|
|
125
125
|
Supports `T?`, `[T]`, `[T]?` transparently. Plain data properties (`String`, `URL`, `Int`) are ignored.
|
|
126
126
|
|
|
@@ -128,7 +128,7 @@ Supports `T?`, `[T]`, `[T]?` transparently. Plain data properties (`String`, `UR
|
|
|
128
128
|
|
|
129
129
|
## How to Create a Component-Specific Section
|
|
130
130
|
|
|
131
|
-
**Rule: each COMPOSITE form component defines its own nested `.Section` class conforming to `FormSection`.** The nested section exposes ONLY the fields that component accepts
|
|
131
|
+
**Rule: each COMPOSITE form component defines its own nested `.Section` class conforming to `FormSection`.** The nested section exposes ONLY the fields that component accepts - no silent discard.
|
|
132
132
|
|
|
133
133
|
### Step 1: Inventory the Embedded Form Sub-Components
|
|
134
134
|
|
|
@@ -180,9 +180,9 @@ extension PNRContactCard {
|
|
|
180
180
|
}
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
-
> **`@unchecked Sendable` on the nested `Section`**: nested `Section` classes MUST conform to `@unchecked Sendable` so they can be stored on a `Sendable` Configuration (compiler cannot verify a mutable reference type as Sendable, but @Observable's MainActor scheduling makes it safe in practice). All concrete sections in the codebase use this pattern (see `
|
|
183
|
+
> **`@unchecked Sendable` on the nested `Section`**: nested `Section` classes MUST conform to `@unchecked Sendable` so they can be stored on a `Sendable` Configuration (compiler cannot verify a mutable reference type as Sendable, but @Observable's MainActor scheduling makes it safe in practice). All concrete sections in the codebase use this pattern (see `FrequentFlyerProgramMissingPoints.Section`, `MyFilterSection.Section`).
|
|
184
184
|
|
|
185
|
-
**If the component has NO Configuration (SIMPLE, 0
|
|
185
|
+
**If the component has NO Configuration (SIMPLE, 0-1 field):** skip the `Section` and take the `FormField` directly on the View init.
|
|
186
186
|
|
|
187
187
|
```swift
|
|
188
188
|
public struct TermsCheckbox: View {
|
|
@@ -205,7 +205,7 @@ public struct PNRContactCardConfiguration: Sendable {
|
|
|
205
205
|
public let avatarURL: URL?
|
|
206
206
|
public let deleteLinkTitle: String? // "Sil" (paired action's label)
|
|
207
207
|
|
|
208
|
-
// Per-field labels / placeholders
|
|
208
|
+
// Per-field labels / placeholders - static copy, NOT on the field
|
|
209
209
|
public let emailLabel: String // "E-Posta"
|
|
210
210
|
public let emailPlaceholder: String // "E-Postanızı giriniz"
|
|
211
211
|
public let phoneLabel: String // "Telefon Numarası"
|
|
@@ -352,9 +352,9 @@ struct EInvoiceSceneView: View {
|
|
|
352
352
|
|
|
353
353
|
## Integration with Phase 3D
|
|
354
354
|
|
|
355
|
-
When Phase 3D's Sub-Component Integration (
|
|
355
|
+
When Phase 3D's Sub-Component Integration (section2.2) detects a form-capable instance:
|
|
356
356
|
|
|
357
|
-
### Replace / augment
|
|
357
|
+
### Replace / augment section2.2 Output
|
|
358
358
|
|
|
359
359
|
Instead of treating a Selectbox/Checkbox/Radio/TextboxTextarea/DatepickerSchedule instance as a mini-config struct of its dynamic props, recognize it as a **form input** and emit a `FormField` reference.
|
|
360
360
|
|
|
@@ -367,10 +367,10 @@ In the Sub-Components section:
|
|
|
367
367
|
|
|
368
368
|
| Element | Scope | Integration |
|
|
369
369
|
|---------|-------|-------------|
|
|
370
|
-
| Email input (TextboxTextarea) | Required | `FormField`
|
|
371
|
-
| Phone country (Selectbox) | Required | `FormField`
|
|
372
|
-
| Phone number (TextboxTextarea) | Required | `FormField`
|
|
373
|
-
| Primary toggle (Checkbox) | Required | `FormField`
|
|
370
|
+
| Email input (TextboxTextarea) | Required | `FormField` - `email: TextFormField` in nested `Section` |
|
|
371
|
+
| Phone country (Selectbox) | Required | `FormField` - `phoneCountry: PickerFormField<CountryCode>` |
|
|
372
|
+
| Phone number (TextboxTextarea) | Required | `FormField` - `phoneNumber: TextFormField` |
|
|
373
|
+
| Primary toggle (Checkbox) | Required | `FormField` - `isPrimary: CheckboxFormField` (rendered as Switch) |
|
|
374
374
|
```
|
|
375
375
|
|
|
376
376
|
In the Final API Design:
|
|
@@ -405,7 +405,7 @@ public struct ComponentNameConfiguration: Sendable {
|
|
|
405
405
|
|
|
406
406
|
### Layer-text + form interaction
|
|
407
407
|
|
|
408
|
-
Dynamic layer text INSIDE a form control (e.g. the placeholder text inside a Selectbox) is still **static copy** from the caller's perspective
|
|
408
|
+
Dynamic layer text INSIDE a form control (e.g. the placeholder text inside a Selectbox) is still **static copy** from the caller's perspective - it becomes a Configuration string (`placeholder`, `label`), NOT a FormField-value substitute. Form fields own the *value*, not the *copy*.
|
|
409
409
|
|
|
410
410
|
---
|
|
411
411
|
|
|
@@ -414,11 +414,11 @@ Dynamic layer text INSIDE a form control (e.g. the placeholder text inside a Sel
|
|
|
414
414
|
When writing the Configuration struct for a component with form fields:
|
|
415
415
|
|
|
416
416
|
1. Define the nested `Section: FormSection` class in an extension on the component namespace, annotated `@FormSection @Observable`.
|
|
417
|
-
2. Only include the fields identified in Phase 3D analysis
|
|
417
|
+
2. Only include the fields identified in Phase 3D analysis - one FormField subclass per form sub-component.
|
|
418
418
|
3. The `section` property on Configuration is non-optional when the form is required, optional when the whole form block is boolean-gated.
|
|
419
|
-
4. Do NOT flatten field values into the Configuration
|
|
419
|
+
4. Do NOT flatten field values into the Configuration - keep them inside the section.
|
|
420
420
|
5. Static content (labels, placeholders, helper copy, toggle labels) stays in Configuration as `String` / `String?` and gets chainable modifiers via `@GenerateChainModifiers`.
|
|
421
|
-
6. Paired action closures (`onDelete`, `onEdit`, row-level disclosure) stay as View init parameters
|
|
421
|
+
6. Paired action closures (`onDelete`, `onEdit`, row-level disclosure) stay as View init parameters - NOT in Configuration, NOT on fields.
|
|
422
422
|
|
|
423
423
|
---
|
|
424
424
|
|
|
@@ -457,11 +457,11 @@ public struct ComponentName: View {
|
|
|
457
457
|
|
|
458
458
|
### Rules
|
|
459
459
|
|
|
460
|
-
- **Never** use `@State` for form values. Never wrap `section.<field>.value` in `Binding(get:set:)`
|
|
460
|
+
- **Never** use `@State` for form values. Never wrap `section.<field>.value` in `Binding(get:set:)` - pass the field itself.
|
|
461
461
|
- **Never** call `section.validate()` from inside the View. Validation is a caller concern.
|
|
462
462
|
- **Never** instantiate a `FormField` or `Section` inside the component. They come from the caller via Configuration.
|
|
463
463
|
- **Do** read `section.state` to render section-level banners/errors if the design shows one.
|
|
464
|
-
- **Do** use atomic form views (`InputField(field:)`, `Selectbox(field:)`, `Radio(field:)`, `Checkbox(field:)`, `DatePicker(field:)`)
|
|
464
|
+
- **Do** use atomic form views (`InputField(field:)`, `Selectbox(field:)`, `Radio(field:)`, `Checkbox(field:)`, `DatePicker(field:)`) - they handle `field.state` → visual state internally.
|
|
465
465
|
|
|
466
466
|
---
|
|
467
467
|
|
|
@@ -483,10 +483,10 @@ public struct ComponentName: View {
|
|
|
483
483
|
|
|
484
484
|
## When NOT to Use Form Integration
|
|
485
485
|
|
|
486
|
-
- **Pure display components** showing data that is not user-editable
|
|
487
|
-
- **Static checkmarks / indicators** that are read-only state (e.g., a green tick in a stepper)
|
|
488
|
-
- **Radio-like selection that is display only** (e.g., a highlighted selected tab in a segmented control where selection is controlled by the parent, not a form submission)
|
|
489
|
-
- **Segmented controls that represent navigation / filter state, not form input**
|
|
486
|
+
- **Pure display components** showing data that is not user-editable - use plain `String` / `Int` / model properties.
|
|
487
|
+
- **Static checkmarks / indicators** that are read-only state (e.g., a green tick in a stepper) - use `Bool` in Configuration, not `CheckboxFormField`.
|
|
488
|
+
- **Radio-like selection that is display only** (e.g., a highlighted selected tab in a segmented control where selection is controlled by the parent, not a form submission) - use an `enum` property, not `RadioFormField`.
|
|
489
|
+
- **Segmented controls that represent navigation / filter state, not form input** - plain `Binding<Enum>` is fine for those; they are not validated or submitted.
|
|
490
490
|
|
|
491
491
|
Rule of thumb: ask "would a ViewModel run `validate()` on this value before submitting?" If no → it's not a form field.
|
|
492
492
|
|
|
@@ -518,14 +518,14 @@ Prefer a named `FormSection` subclass when the card has a stable identity in the
|
|
|
518
518
|
| Search form with free-text + date range + pax count selectbox | Nested `Section` with 3 fields |
|
|
519
519
|
| E-invoice form (passenger radio + N contact cards) | Scene `FormGroup([passengerRadio] + contacts.map { $0 })` |
|
|
520
520
|
| Password change (old + new + confirm) | Nested `Section` with 3 `TextFormField`s + cross-field `MatchRule` |
|
|
521
|
-
| Toggle inside a card (no other inputs, dedicated) | `ToggleFormField` directly on Configuration (atomic, no Section)
|
|
522
|
-
| Toggle inside a card (no other inputs, unified) | `CheckboxFormField` directly on Configuration (atomic, no Section)
|
|
521
|
+
| Toggle inside a card (no other inputs, dedicated) | `ToggleFormField` directly on Configuration (atomic, no Section) - preferred when the design uses `TurkishToggle` |
|
|
522
|
+
| Toggle inside a card (no other inputs, unified) | `CheckboxFormField` directly on Configuration (atomic, no Section) - only when toggle and checkbox are interchangeable in the same form |
|
|
523
523
|
| Passenger picker (N stepper rows + disclosure expansion) | Nested `Section` with N `StepperFormField`s + a plain `displayState` enum property (named to avoid colliding with the `state: FormState` synthesized by `@FormSection`) |
|
|
524
524
|
| Filter panel (1 toggle + N multi-select chip groups) | Nested `Section` with 1 `ToggleFormField` + N `CheckboxGroupFormField<Item>` (one per group). Section conforms to `@unchecked Sendable`. See `AvailabilityFilter` for the canonical example. |
|
|
525
525
|
|
|
526
526
|
---
|
|
527
527
|
|
|
528
|
-
## Checklist
|
|
528
|
+
## Checklist - Before Leaving the Skill
|
|
529
529
|
|
|
530
530
|
```
|
|
531
531
|
[ ] Counted form-capable sub-components in the Figma design
|
|
@@ -537,6 +537,6 @@ Prefer a named `FormSection` subclass when the card has a stable identity in the
|
|
|
537
537
|
[ ] Non-form actions (Sil/Edit/Detaylar) are paired closures on the View
|
|
538
538
|
[ ] View uses @Bindable on the section; never @State for values
|
|
539
539
|
[ ] View never calls validate() or instantiates fields
|
|
540
|
-
[ ] No Binding<Value> anywhere in the component
|
|
540
|
+
[ ] No Binding<Value> anywhere in the component - only field references
|
|
541
541
|
[ ] Scene-level caller builds the section, calls validate() / leafFields / focus
|
|
542
542
|
```
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: figma-issue
|
|
3
|
+
description: Creates and manages GitHub Issues for Figma component implementations.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /figma-issue - GitHub Issue Manager for Figma Components
|
|
2
7
|
|
|
3
8
|
## Purpose
|
|
4
9
|
|
|
@@ -96,16 +101,16 @@ Map the registry `pageName` to the project board's Figma Page option. Use substr
|
|
|
96
101
|
|
|
97
102
|
## Command: `open <url>[,<url>,...]`
|
|
98
103
|
|
|
99
|
-
### STEP 0
|
|
104
|
+
### STEP 0 - Parse Input
|
|
100
105
|
|
|
101
106
|
1. Extract all Figma URLs from `$ARGUMENTS` (comma-separated or space-separated).
|
|
102
107
|
2. For each URL, extract `node-id` query parameter. Keep as-is (e.g., `2251-15872`).
|
|
103
|
-
3. Deduplicate by `node-id`
|
|
108
|
+
3. Deduplicate by `node-id` - if the same node-id appears multiple times, process it only once.
|
|
104
109
|
4. Print: "Found N unique Figma component(s) to process."
|
|
105
110
|
|
|
106
111
|
**For each component, run STEPs 1-6 sequentially.** The specs prompt (STEP 2.5) is asked once per component.
|
|
107
112
|
|
|
108
|
-
### STEP 1
|
|
113
|
+
### STEP 1 - Registry Lookup
|
|
109
114
|
|
|
110
115
|
```bash
|
|
111
116
|
cd ${REPO_ROOT}/{repos.common.path}
|
|
@@ -121,7 +126,7 @@ Collect from JSON output:
|
|
|
121
126
|
|
|
122
127
|
If lookup fails, mark as **unregistered**.
|
|
123
128
|
|
|
124
|
-
### STEP 1.5
|
|
129
|
+
### STEP 1.5 - Dependency Detection
|
|
125
130
|
|
|
126
131
|
Uses the **exact same algorithm** as `confluence-component-status-upload.py` → `readiness()`:
|
|
127
132
|
1. Build unified `name → nodeId` lookup from catalog + registry + graph
|
|
@@ -200,7 +205,7 @@ else:
|
|
|
200
205
|
for sname in sub_names:
|
|
201
206
|
sub_nid = name_to_nid.get(sname)
|
|
202
207
|
if not sub_nid:
|
|
203
|
-
# Unresolved
|
|
208
|
+
# Unresolved - not in any registry/catalog (same as all_comps.get() → None → not a blocker)
|
|
204
209
|
results.append({'name': sname, 'nodeId': None, 'status': 'unresolved'})
|
|
205
210
|
continue
|
|
206
211
|
sc = components.get(sub_nid)
|
|
@@ -243,7 +248,7 @@ else:
|
|
|
243
248
|
"
|
|
244
249
|
```
|
|
245
250
|
|
|
246
|
-
Parse the JSON output. Only `not_implemented` entries are blockers
|
|
251
|
+
Parse the JSON output. Only `not_implemented` entries are blockers - `implemented`, `skipped`, and `unresolved` (not in any registry) are NOT blockers.
|
|
247
252
|
|
|
248
253
|
**Readiness precedence (architecture-update):**
|
|
249
254
|
1. `status.ios.implemented.value` (new canonical field, set by `phase4-finalize.py`)
|
|
@@ -263,7 +268,7 @@ gh issue list --repo ${GH_REPO} --state open --label component \
|
|
|
263
268
|
--search "<SubComponentName>" --json number,title --jq '.[0]'
|
|
264
269
|
```
|
|
265
270
|
|
|
266
|
-
Collect: `BLOCKING_DEPS` = list of `{name, nodeId, issueNumber (or null)}`
|
|
271
|
+
Collect: `BLOCKING_DEPS` = list of `{name, nodeId, issueNumber (or null)}` - only `not_implemented` entries.
|
|
267
272
|
|
|
268
273
|
#### 1.5c. Report
|
|
269
274
|
|
|
@@ -282,16 +287,16 @@ If zero `not_implemented` → **no blockers**, do NOT auto-block.
|
|
|
282
287
|
|
|
283
288
|
Store `BLOCKING_DEPS` for use in STEP 3.5.
|
|
284
289
|
|
|
285
|
-
### STEP 2
|
|
290
|
+
### STEP 2 - Duplicate Check
|
|
286
291
|
|
|
287
292
|
```bash
|
|
288
293
|
gh issue list --repo ${GH_REPO} --state open --search "node-id=<NODE_ID>" --json number,title,url
|
|
289
294
|
```
|
|
290
295
|
|
|
291
296
|
If a match is found, print warning and stop:
|
|
292
|
-
"Issue already exists: #N
|
|
297
|
+
"Issue already exists: #N - <title> (<url>)"
|
|
293
298
|
|
|
294
|
-
### STEP 2.5
|
|
299
|
+
### STEP 2.5 - Specs & Acceptance Criteria
|
|
295
300
|
|
|
296
301
|
Present the component info and **STOP. Do not proceed to STEP 3.** Wait for the user's next message.
|
|
297
302
|
|
|
@@ -319,11 +324,11 @@ Type "skip" to create without specs.
|
|
|
319
324
|
|
|
320
325
|
When the user responds:
|
|
321
326
|
- If the response is `skip` (case-insensitive): set `SPECS = ""`, proceed to STEP 3.
|
|
322
|
-
- Otherwise: the user's message is the specs input. You MAY read referenced files to gather context and understand the user's intent better
|
|
327
|
+
- Otherwise: the user's message is the specs input. You MAY read referenced files to gather context and understand the user's intent better - this helps write clearer specs. Then rewrite the user's input into clean, actionable acceptance criteria (checkbox list) that another AI can easily follow when it fetches this issue for implementation. Do NOT implement anything - this skill only creates issues, not code. Then proceed to team selection / STEP 3.
|
|
323
328
|
|
|
324
329
|
If `SPECS` is not empty, include it in the issue body under `### Acceptance Criteria` (see STEP 3 body template).
|
|
325
330
|
|
|
326
|
-
### STEP 3
|
|
331
|
+
### STEP 3 - Create GitHub Issue
|
|
327
332
|
|
|
328
333
|
**Title:**
|
|
329
334
|
```
|
|
@@ -342,7 +347,7 @@ Where `<TEAM_SHORT>` is mapped from the team label:
|
|
|
342
347
|
|
|
343
348
|
If unregistered: `feat: <TEAM_SHORT> Implement component (node-id: <NODE_ID>)`
|
|
344
349
|
|
|
345
|
-
**Body**
|
|
350
|
+
**Body** - must match the issue template field headers exactly:
|
|
346
351
|
|
|
347
352
|
```markdown
|
|
348
353
|
### Figma URL
|
|
@@ -380,9 +385,9 @@ _No response_
|
|
|
380
385
|
|
|
381
386
|
<!--
|
|
382
387
|
State legend:
|
|
383
|
-
🟢 green
|
|
384
|
-
🟡 yellow
|
|
385
|
-
⚪ gray
|
|
388
|
+
🟢 green - flag is set and validated against the current implementation version
|
|
389
|
+
🟡 yellow - flag was validated against an older impl version (or Figma moved ahead, for implemented)
|
|
390
|
+
⚪ gray - flag is not set
|
|
386
391
|
|
|
387
392
|
The Progress table is rewritten automatically by update-issue-from-registry.py
|
|
388
393
|
on every phase finalize. Do not hand-edit this section; edits will be
|
|
@@ -443,7 +448,7 @@ gh issue create \
|
|
|
443
448
|
(`impl:green`, `impl:yellow`, `test:green`, etc.) are applied
|
|
444
449
|
automatically by `update-issue-from-registry.py` once a phase finalize
|
|
445
450
|
script has populated `status` in the registry. On creation the issue
|
|
446
|
-
has zero flag labels (all gray)
|
|
451
|
+
has zero flag labels (all gray) - that's the correct initial state for
|
|
447
452
|
a component nobody has implemented yet.
|
|
448
453
|
|
|
449
454
|
Legacy `phase:*` labels are stripped from existing issues on any sync;
|
|
@@ -451,7 +456,7 @@ new issues never get them.
|
|
|
451
456
|
|
|
452
457
|
Capture the issue number and URL from the output.
|
|
453
458
|
|
|
454
|
-
### STEP 3.5
|
|
459
|
+
### STEP 3.5 - Auto-Block (if dependencies detected)
|
|
455
460
|
|
|
456
461
|
If `BLOCKING_DEPS` from STEP 1.5 has any `not_implemented` sub-components:
|
|
457
462
|
|
|
@@ -462,7 +467,7 @@ gh issue edit <N> --repo ${GH_REPO} --add-label "blocked"
|
|
|
462
467
|
|
|
463
468
|
2. Comment with blocking info:
|
|
464
469
|
```bash
|
|
465
|
-
gh issue comment <N> --repo ${GH_REPO} --body "**Auto-blocked**
|
|
470
|
+
gh issue comment <N> --repo ${GH_REPO} --body "**Auto-blocked** - unimplemented sub-components (from sub-component-graph.json):
|
|
466
471
|
- <SubName> → #M
|
|
467
472
|
- <SubName> → no issue
|
|
468
473
|
|
|
@@ -471,7 +476,7 @@ Will be auto-unblocked when all dependencies are implemented."
|
|
|
471
476
|
|
|
472
477
|
The issue will be auto-unblocked by `/figma-iteration-commit` STEP 5 when blocking components get implemented.
|
|
473
478
|
|
|
474
|
-
### STEP 4
|
|
479
|
+
### STEP 4 - Add to Project Board
|
|
475
480
|
|
|
476
481
|
#### 4a. Add issue to project
|
|
477
482
|
|
|
@@ -503,7 +508,7 @@ Map `pageName` using the Figma Page Mapping table, then:
|
|
|
503
508
|
gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.figmaPage}", value: { singleSelectOptionId: "<MAPPED_PAGE_OPTION_ID>" } }) { projectV2Item { id } } }'
|
|
504
509
|
```
|
|
505
510
|
|
|
506
|
-
### STEP 5
|
|
511
|
+
### STEP 5 - Summary
|
|
507
512
|
|
|
508
513
|
Print:
|
|
509
514
|
|
|
@@ -527,13 +532,13 @@ Issue created:
|
|
|
527
532
|
|
|
528
533
|
Assign the issue to the current GitHub user. If a Jira task is linked, also assign it.
|
|
529
534
|
|
|
530
|
-
### STEP 1
|
|
535
|
+
### STEP 1 - Assign GitHub Issue
|
|
531
536
|
|
|
532
537
|
```bash
|
|
533
538
|
gh issue edit <N> --repo ${GH_REPO} --add-assignee @me
|
|
534
539
|
```
|
|
535
540
|
|
|
536
|
-
### STEP 2
|
|
541
|
+
### STEP 2 - Assign Jira (if linked)
|
|
537
542
|
|
|
538
543
|
Read the issue body and check the `### Jira Issue` section for a linked key.
|
|
539
544
|
|
|
@@ -560,7 +565,7 @@ Print: "Issue #N assigned to you." (+ "Jira <KEY> assigned." if applicable)
|
|
|
560
565
|
|
|
561
566
|
Link an existing Jira task to the GitHub issue (both directions).
|
|
562
567
|
|
|
563
|
-
### STEP 1
|
|
568
|
+
### STEP 1 - Update GitHub Issue Body
|
|
564
569
|
|
|
565
570
|
1. Read current issue body:
|
|
566
571
|
```bash
|
|
@@ -579,7 +584,7 @@ BODY=$(gh issue view <N> --repo ${GH_REPO} --json body --jq '.body')
|
|
|
579
584
|
gh issue edit <N> --repo ${GH_REPO} --body "<UPDATED_BODY>"
|
|
580
585
|
```
|
|
581
586
|
|
|
582
|
-
### STEP 2
|
|
587
|
+
### STEP 2 - Update Project Board Jira Field
|
|
583
588
|
|
|
584
589
|
```bash
|
|
585
590
|
# Get item ID from project
|
|
@@ -589,7 +594,7 @@ ITEM_ID=$(gh api graphql -f query='{ node(id: "{github.projectV2Id}") { ... on P
|
|
|
589
594
|
gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.jira}", value: { text: "<JIRA_KEY>" } }) { projectV2Item { id } } }'
|
|
590
595
|
```
|
|
591
596
|
|
|
592
|
-
### STEP 3
|
|
597
|
+
### STEP 3 - Update Jira Description with GitHub Link
|
|
593
598
|
|
|
594
599
|
```bash
|
|
595
600
|
JIRA_TOKEN=$("$HOME/.claude/lib/credential-store.sh" get \1 2>/dev/null)
|
|
@@ -613,12 +618,12 @@ Print: "Issue #N linked to [JIRA_KEY]({jira.baseUrl}/browse/JIRA_KEY)"
|
|
|
613
618
|
|
|
614
619
|
---
|
|
615
620
|
|
|
616
|
-
## Command: `phase <#N> <phase>`
|
|
621
|
+
## Command: `phase <#N> <phase>` - **DEPRECATED**
|
|
617
622
|
|
|
618
623
|
This command is deprecated as of the architecture-update. Phase state
|
|
619
624
|
is now tracked per-flag in the component registry
|
|
620
625
|
(`status.ios.{implemented,tested,codeConnect,wiki}`), not as a single
|
|
621
|
-
enum. The `phase:*` labels are no longer used
|
|
626
|
+
enum. The `phase:*` labels are no longer used - they're replaced by
|
|
622
627
|
per-flag `impl:green`/`impl:yellow`/`test:green`/etc. labels, which are
|
|
623
628
|
applied automatically by `update-issue-from-registry.py` after every
|
|
624
629
|
phase finalize script writes the registry.
|
|
@@ -709,7 +714,7 @@ Print: "Issue #N closed."
|
|
|
709
714
|
|
|
710
715
|
## Command: `status [#N]`
|
|
711
716
|
|
|
712
|
-
### With issue number
|
|
717
|
+
### With issue number - show single issue
|
|
713
718
|
|
|
714
719
|
```bash
|
|
715
720
|
gh issue view <N> --repo ${GH_REPO} --json number,title,state,assignees,labels,body
|
|
@@ -722,7 +727,7 @@ gh api graphql -f query='{ node(id: "{github.projectV2Id}") { ... on ProjectV2 {
|
|
|
722
727
|
|
|
723
728
|
Print a formatted summary with issue details + board fields.
|
|
724
729
|
|
|
725
|
-
### Without issue number
|
|
730
|
+
### Without issue number - list all open
|
|
726
731
|
|
|
727
732
|
```bash
|
|
728
733
|
gh issue list --repo ${GH_REPO} --state open --label component --json number,title,assignees --jq '.[] | "| #\(.number) | \(.title) | \(.assignees | map(.login) | join(", ")) |"'
|
|
@@ -737,9 +742,9 @@ Print as a table.
|
|
|
737
742
|
- **FigmaRegistryUtility not built**: Run `cd ${REPO_ROOT}/{repos.common.path} && swift build --product FigmaRegistryUtility`.
|
|
738
743
|
- **Issue not found**: Print error and stop.
|
|
739
744
|
- **Invalid phase**: Print valid options: `implementation`, `testing`, `code-connect`, `documentation`.
|
|
740
|
-
- **Duplicate issue**: Print existing issue link and stop
|
|
745
|
+
- **Duplicate issue**: Print existing issue link and stop - do not create.
|
|
741
746
|
- **GraphQL errors**: Print the error message from the API response.
|
|
742
747
|
- **Jira token not found**: Prompt user to add to keychain: `"$HOME/.claude/lib/credential-store.sh" set \1 \"\2\"`.
|
|
743
|
-
- **Jira API error (401/403)**: Token expired or invalid
|
|
744
|
-
- **Jira API error (404)**: Wrong issue key
|
|
748
|
+
- **Jira API error (401/403)**: Token expired or invalid - prompt user to update keychain.
|
|
749
|
+
- **Jira API error (404)**: Wrong issue key - print error and continue.
|
|
745
750
|
- **Jira VPN not reachable**: Print warning, skip Jira steps, continue with GitHub-only operations.
|