@mmerterden/multi-agent-pipeline 8.6.0
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 +2623 -0
- package/LICENSE +21 -0
- package/README.md +852 -0
- package/docs/FIGMA_PIPELINE.md +138 -0
- package/docs/GENERICITY-REVIEW.md +277 -0
- package/docs/STABILITY-FIX-PLAN.md +168 -0
- package/docs/adr/0001-three-model-triage.md +81 -0
- package/docs/adr/0002-instruction-driven-flag.md +62 -0
- package/docs/adr/0003-unified-shared-skills.md +55 -0
- package/docs/adr/0004-zero-dependency-philosophy.md +60 -0
- package/docs/adr/0005-lazy-phase-docs.md +68 -0
- package/docs/adr/0006-skills-core-external-split.md +52 -0
- package/docs/adr/0007-multi-tool-adapter-framework.md +110 -0
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +98 -0
- package/docs/adr/README.md +33 -0
- package/docs/architecture.md +181 -0
- package/docs/best-practices.md +93 -0
- package/docs/features.md +274 -0
- package/docs/performance.md +116 -0
- package/docs/recovery-guide.md +479 -0
- package/index.js +76 -0
- package/install/_adapters.mjs +69 -0
- package/install/_common.mjs +150 -0
- package/install/_copilot-instructions.mjs +32 -0
- package/install/_dev-only-files.mjs +23 -0
- package/install/_platform-filter.mjs +132 -0
- package/install/_telemetry.mjs +79 -0
- package/install/claude.mjs +332 -0
- package/install/copilot.mjs +254 -0
- package/install/index.mjs +179 -0
- package/install/templates/copilot-instructions.md +319 -0
- package/install.js +24 -0
- package/package.json +78 -0
- package/pipeline/adapters/_base.mjs +288 -0
- package/pipeline/adapters/copilot-chat.mjs +158 -0
- package/pipeline/adapters/cursor.mjs +187 -0
- package/pipeline/agents/android-architect.md +42 -0
- package/pipeline/agents/backend-architect.md +43 -0
- package/pipeline/agents/code-reviewer.md +57 -0
- package/pipeline/agents/dev-critic.md +148 -0
- package/pipeline/agents/explorer.md +34 -0
- package/pipeline/agents/ios-architect.md +41 -0
- package/pipeline/agents/security-auditor.md +98 -0
- package/pipeline/agents/task-clarifier.md +113 -0
- package/pipeline/claude-md-template.md +55 -0
- package/pipeline/commands/archive-guard.md +45 -0
- package/pipeline/commands/deploy.md +54 -0
- package/pipeline/commands/figma-to-swiftui.md +295 -0
- package/pipeline/commands/multi-agent/_account-picker.md +90 -0
- package/pipeline/commands/multi-agent/_dev-context.md +111 -0
- package/pipeline/commands/multi-agent/_input-parser.md +43 -0
- package/pipeline/commands/multi-agent/_repo-picker.md +76 -0
- package/pipeline/commands/multi-agent/autopilot.md +116 -0
- package/pipeline/commands/multi-agent/channels.md +465 -0
- package/pipeline/commands/multi-agent/delete.md +66 -0
- package/pipeline/commands/multi-agent/dev-autopilot.md +120 -0
- package/pipeline/commands/multi-agent/dev-local-autopilot.md +110 -0
- package/pipeline/commands/multi-agent/dev-local.md +105 -0
- package/pipeline/commands/multi-agent/dev.md +246 -0
- package/pipeline/commands/multi-agent/diff-explain.md +68 -0
- package/pipeline/commands/multi-agent/help.md +422 -0
- package/pipeline/commands/multi-agent/issue.md +79 -0
- package/pipeline/commands/multi-agent/jira.md +132 -0
- package/pipeline/commands/multi-agent/kill.md +38 -0
- package/pipeline/commands/multi-agent/language.md +94 -0
- package/pipeline/commands/multi-agent/local-autopilot.md +139 -0
- package/pipeline/commands/multi-agent/local.md +117 -0
- package/pipeline/commands/multi-agent/log.md +25 -0
- package/pipeline/commands/multi-agent/manual-test.md +43 -0
- package/pipeline/commands/multi-agent/purge.md +39 -0
- package/pipeline/commands/multi-agent/refactor.md +188 -0
- package/pipeline/commands/multi-agent/refs/android-guide.md +250 -0
- package/pipeline/commands/multi-agent/refs/audit-guide.md +240 -0
- package/pipeline/commands/multi-agent/refs/backend-guide.md +135 -0
- package/pipeline/commands/multi-agent/refs/channels/confluence.md +153 -0
- package/pipeline/commands/multi-agent/refs/channels/issue-comment.md +141 -0
- package/pipeline/commands/multi-agent/refs/channels/jira.md +127 -0
- package/pipeline/commands/multi-agent/refs/channels/pr-review-actions.md +135 -0
- package/pipeline/commands/multi-agent/refs/channels/pr.md +139 -0
- package/pipeline/commands/multi-agent/refs/channels/wiki.md +66 -0
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +92 -0
- package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +326 -0
- package/pipeline/commands/multi-agent/refs/frontend-guide.md +136 -0
- package/pipeline/commands/multi-agent/refs/issue-jira-triad.md +104 -0
- package/pipeline/commands/multi-agent/refs/keychain.md +80 -0
- package/pipeline/commands/multi-agent/refs/knowledge.md +112 -0
- package/pipeline/commands/multi-agent/refs/multi-repo-integration-build.md +207 -0
- package/pipeline/commands/multi-agent/refs/phases/log-format.md +89 -0
- package/pipeline/commands/multi-agent/refs/phases/modes.md +156 -0
- package/pipeline/commands/multi-agent/refs/phases/operations.md +91 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +481 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +264 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +278 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +364 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +378 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +129 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-6-commit.md +339 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +361 -0
- package/pipeline/commands/multi-agent/refs/phases.md +187 -0
- package/pipeline/commands/multi-agent/refs/progress-contract.md +155 -0
- package/pipeline/commands/multi-agent/refs/rules.md +189 -0
- package/pipeline/commands/multi-agent/refs/swiftui-guide.md +254 -0
- package/pipeline/commands/multi-agent/refs/tracker-contract.md +256 -0
- package/pipeline/commands/multi-agent/refs/wiki-capture.md +109 -0
- package/pipeline/commands/multi-agent/resume.md +28 -0
- package/pipeline/commands/multi-agent/review.md +228 -0
- package/pipeline/commands/multi-agent/scan.md +74 -0
- package/pipeline/commands/multi-agent/search.md +97 -0
- package/pipeline/commands/multi-agent/setup.md +767 -0
- package/pipeline/commands/multi-agent/stack.md +48 -0
- package/pipeline/commands/multi-agent/status.md +38 -0
- package/pipeline/commands/multi-agent/sync.md +319 -0
- package/pipeline/commands/multi-agent/test.md +39 -0
- package/pipeline/commands/multi-agent/update.md +88 -0
- package/pipeline/commands/multi-agent.md +293 -0
- package/pipeline/commands/security-review.md +6 -0
- package/pipeline/commands/sim-test.md +256 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +25 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-2-plan.json +30 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/task.json +12 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-2-plan.json +43 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +35 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +35 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +12 -0
- package/pipeline/eval/golden-tasks/README.md +65 -0
- package/pipeline/eval/triage/01-empty-findings/expected.json +6 -0
- package/pipeline/eval/triage/01-empty-findings/input.json +5 -0
- package/pipeline/eval/triage/01-empty-findings/notes.md +7 -0
- package/pipeline/eval/triage/02-real-blocker/expected.json +15 -0
- package/pipeline/eval/triage/02-real-blocker/input.json +14 -0
- package/pipeline/eval/triage/02-real-blocker/notes.md +7 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/expected.json +18 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/input.json +14 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +10 -0
- package/pipeline/eval/triage/04-false-positive-reject/expected.json +18 -0
- package/pipeline/eval/triage/04-false-positive-reject/input.json +14 -0
- package/pipeline/eval/triage/04-false-positive-reject/notes.md +10 -0
- package/pipeline/eval/triage/05-mixed-classification/expected.json +43 -0
- package/pipeline/eval/triage/05-mixed-classification/input.json +38 -0
- package/pipeline/eval/triage/05-mixed-classification/notes.md +17 -0
- package/pipeline/eval/triage/06-severity-mismatch/expected.json +15 -0
- package/pipeline/eval/triage/06-severity-mismatch/input.json +14 -0
- package/pipeline/eval/triage/06-severity-mismatch/notes.md +9 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/expected.json +27 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/input.json +22 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +9 -0
- package/pipeline/eval/triage/08-style-misclassified/expected.json +18 -0
- package/pipeline/eval/triage/08-style-misclassified/input.json +14 -0
- package/pipeline/eval/triage/08-style-misclassified/notes.md +9 -0
- package/pipeline/eval/triage/09-cascading-finding/expected.json +23 -0
- package/pipeline/eval/triage/09-cascading-finding/input.json +22 -0
- package/pipeline/eval/triage/09-cascading-finding/notes.md +9 -0
- package/pipeline/eval/triage/10-deferred-crossref/expected.json +18 -0
- package/pipeline/eval/triage/10-deferred-crossref/input.json +14 -0
- package/pipeline/eval/triage/10-deferred-crossref/notes.md +9 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +27 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +22 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +14 -0
- package/pipeline/eval/triage/README.md +54 -0
- package/pipeline/lib/account-resolver.sh +204 -0
- package/pipeline/lib/channels-multi-repo.sh +218 -0
- package/pipeline/lib/context-link-extractor.sh +192 -0
- package/pipeline/lib/credential-store-resolver.sh +57 -0
- package/pipeline/lib/credential-store.sh +226 -0
- package/pipeline/lib/fetch-confluence.sh +358 -0
- package/pipeline/lib/fetch-crashlytics.sh +314 -0
- package/pipeline/lib/fetch-fortify.sh +321 -0
- package/pipeline/lib/fetch-swagger.sh +270 -0
- package/pipeline/lib/issue-fetcher.sh +333 -0
- package/pipeline/lib/multi-repo-pipeline.sh +252 -0
- package/pipeline/lib/plan-todos.sh +284 -0
- package/pipeline/lib/post-pr-review.sh +374 -0
- package/pipeline/lib/repo-cache.sh +231 -0
- package/pipeline/lib/review-watch.sh +244 -0
- package/pipeline/lib/shadow-git.sh +222 -0
- package/pipeline/lib/submodule-detector.sh +177 -0
- package/pipeline/lib/vercel-deploy.sh +170 -0
- package/pipeline/preferences-template.json +132 -0
- package/pipeline/rules/app-store-guidelines.md +59 -0
- package/pipeline/rules/code-review.md +27 -0
- package/pipeline/rules/code-style.md +37 -0
- package/pipeline/rules/debugging.md +24 -0
- package/pipeline/rules/figma-pipeline.md +190 -0
- package/pipeline/rules/git-conventions.md +29 -0
- package/pipeline/rules/kotlin-android.md +92 -0
- package/pipeline/rules/performance.md +23 -0
- package/pipeline/rules/security.md +39 -0
- package/pipeline/rules/swiftui-qa.md +32 -0
- package/pipeline/rules/tdd.md +25 -0
- package/pipeline/rules/testing.md +37 -0
- package/pipeline/schemas/agent-state.schema.json +273 -0
- package/pipeline/schemas/analysis-output.schema.json +59 -0
- package/pipeline/schemas/clarify-output.schema.json +74 -0
- package/pipeline/schemas/dev-critic-output.schema.json +104 -0
- package/pipeline/schemas/diff-risk.schema.json +78 -0
- package/pipeline/schemas/figma-project-config.schema.json +372 -0
- package/pipeline/schemas/migrations/README.md +73 -0
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +112 -0
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +75 -0
- package/pipeline/schemas/migrations/prefs-2.1.0-to-2.2.0.mjs +64 -0
- package/pipeline/schemas/migrations/prefs-2.2.0-to-2.3.0.mjs +36 -0
- package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +34 -0
- package/pipeline/schemas/plan-todos.schema.json +62 -0
- package/pipeline/schemas/planning-output.schema.json +57 -0
- package/pipeline/schemas/prefs.schema.json +1137 -0
- package/pipeline/schemas/reviewer-output.schema.json +55 -0
- package/pipeline/schemas/test-gap.schema.json +64 -0
- package/pipeline/schemas/token-budget.json +17 -0
- package/pipeline/schemas/triage-corpus.schema.json +31 -0
- package/pipeline/schemas/triage-output.schema.json +115 -0
- package/pipeline/scripts/.last-figma-sync-plan.json +23 -0
- package/pipeline/scripts/README-figma-smokes.md +34 -0
- package/pipeline/scripts/README.md +104 -0
- package/pipeline/scripts/aggregate-metrics.mjs +310 -0
- package/pipeline/scripts/audit-log-rotate.sh +61 -0
- package/pipeline/scripts/audit-log.sh +69 -0
- package/pipeline/scripts/benchmark-phase-0.sh +128 -0
- package/pipeline/scripts/build-skills-index.mjs +139 -0
- package/pipeline/scripts/classify-plan-safety.mjs +177 -0
- package/pipeline/scripts/cost-table.json +27 -0
- package/pipeline/scripts/diff-explain.mjs +276 -0
- package/pipeline/scripts/diff-risk-score.mjs +328 -0
- package/pipeline/scripts/eval-golden-tasks-live.mjs +294 -0
- package/pipeline/scripts/eval-golden-tasks.mjs +223 -0
- package/pipeline/scripts/eval-triage.mjs +171 -0
- package/pipeline/scripts/figma-placeholder-map.json +191 -0
- package/pipeline/scripts/fixtures/diff-risk-android.diff +40 -0
- package/pipeline/scripts/fixtures/diff-risk-ios.diff +48 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +16 -0
- package/pipeline/scripts/fixtures/test-gap-node.diff +30 -0
- package/pipeline/scripts/fixtures/test-gap-python.diff +32 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +170 -0
- package/pipeline/scripts/gen-skills-index.mjs +90 -0
- package/pipeline/scripts/github-ssh-setup.sh +103 -0
- package/pipeline/scripts/import-figma-skills.sh +253 -0
- package/pipeline/scripts/keychain-save.sh +74 -0
- package/pipeline/scripts/keychain.py +294 -0
- package/pipeline/scripts/log-metric.sh +98 -0
- package/pipeline/scripts/match-skills.mjs +167 -0
- package/pipeline/scripts/memory-load.sh +46 -0
- package/pipeline/scripts/memory-save.sh +76 -0
- package/pipeline/scripts/migrate-prefs.mjs +390 -0
- package/pipeline/scripts/migrate-state.mjs +215 -0
- package/pipeline/scripts/output-quality-check.sh +125 -0
- package/pipeline/scripts/phase-banner.sh +158 -0
- package/pipeline/scripts/phase-tracker.sh +548 -0
- package/pipeline/scripts/pre-commit-check.sh +69 -0
- package/pipeline/scripts/pre-push-check.sh +77 -0
- package/pipeline/scripts/render-agent-log-cost.sh +149 -0
- package/pipeline/scripts/render-cost-summary.sh +137 -0
- package/pipeline/scripts/render-work-summary.sh +195 -0
- package/pipeline/scripts/repo-map.mjs +367 -0
- package/pipeline/scripts/run-aggregator.mjs +298 -0
- package/pipeline/scripts/scan-skills.sh +332 -0
- package/pipeline/scripts/search-logs.sh +291 -0
- package/pipeline/scripts/sign-skills.sh +67 -0
- package/pipeline/scripts/smoke-adapters.sh +207 -0
- package/pipeline/scripts/smoke-add-detail.sh +137 -0
- package/pipeline/scripts/smoke-agent-log-cost.sh +183 -0
- package/pipeline/scripts/smoke-agent-model-routing.sh +87 -0
- package/pipeline/scripts/smoke-bitbucket-contract.sh +223 -0
- package/pipeline/scripts/smoke-channels-flow.sh +130 -0
- package/pipeline/scripts/smoke-ci-workflows.sh +88 -0
- package/pipeline/scripts/smoke-clarify.sh +148 -0
- package/pipeline/scripts/smoke-commands-skills-parity.sh +87 -0
- package/pipeline/scripts/smoke-compliance-skills.sh +119 -0
- package/pipeline/scripts/smoke-cost-summary.sh +139 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +198 -0
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +128 -0
- package/pipeline/scripts/smoke-delete-flow.sh +151 -0
- package/pipeline/scripts/smoke-dev-critic.sh +144 -0
- package/pipeline/scripts/smoke-diff-explain.sh +128 -0
- package/pipeline/scripts/smoke-diff-risk.sh +161 -0
- package/pipeline/scripts/smoke-dynamic-skill-loading.sh +160 -0
- package/pipeline/scripts/smoke-eval-live.sh +136 -0
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +71 -0
- package/pipeline/scripts/smoke-figma-android-parity.sh +148 -0
- package/pipeline/scripts/smoke-figma-config-schema.sh +144 -0
- package/pipeline/scripts/smoke-figma-credential-store.sh +105 -0
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +177 -0
- package/pipeline/scripts/smoke-figma-dispatch.sh +123 -0
- package/pipeline/scripts/smoke-figma-skill-import.sh +174 -0
- package/pipeline/scripts/smoke-figma-sync.sh +149 -0
- package/pipeline/scripts/smoke-identity-isolation.sh +70 -0
- package/pipeline/scripts/smoke-install-layout.sh +241 -0
- package/pipeline/scripts/smoke-install-leak-gate.sh +125 -0
- package/pipeline/scripts/smoke-issue-comment-template.sh +86 -0
- package/pipeline/scripts/smoke-issue-jira-triad.sh +120 -0
- package/pipeline/scripts/smoke-keychain.sh +158 -0
- package/pipeline/scripts/smoke-language-axis.sh +109 -0
- package/pipeline/scripts/smoke-lib-scripts.sh +395 -0
- package/pipeline/scripts/smoke-migrate-state.sh +102 -0
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +158 -0
- package/pipeline/scripts/smoke-multi-repo-integration.sh +116 -0
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +61 -0
- package/pipeline/scripts/smoke-no-token-prompt.sh +69 -0
- package/pipeline/scripts/smoke-pat-audit.sh +107 -0
- package/pipeline/scripts/smoke-per-repo-memory.sh +156 -0
- package/pipeline/scripts/smoke-personal-data.sh +82 -0
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +170 -0
- package/pipeline/scripts/smoke-phase-6-multi.sh +79 -0
- package/pipeline/scripts/smoke-phase-banner.sh +101 -0
- package/pipeline/scripts/smoke-phase-tracker.sh +255 -0
- package/pipeline/scripts/smoke-phase0-bridge-contract.sh +241 -0
- package/pipeline/scripts/smoke-phase4-triage.sh +142 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +71 -0
- package/pipeline/scripts/smoke-plan-safety.sh +139 -0
- package/pipeline/scripts/smoke-plan-todos.sh +193 -0
- package/pipeline/scripts/smoke-pr-review-actions.sh +152 -0
- package/pipeline/scripts/smoke-pre-commit.sh +138 -0
- package/pipeline/scripts/smoke-pref-migration.sh +224 -0
- package/pipeline/scripts/smoke-prefs-language.sh +134 -0
- package/pipeline/scripts/smoke-progress-contract.sh +118 -0
- package/pipeline/scripts/smoke-push-retry.sh +75 -0
- package/pipeline/scripts/smoke-readme-counts.sh +120 -0
- package/pipeline/scripts/smoke-repo-map.sh +300 -0
- package/pipeline/scripts/smoke-review-watch.sh +134 -0
- package/pipeline/scripts/smoke-run-aggregator.sh +216 -0
- package/pipeline/scripts/smoke-schema-validation.sh +173 -0
- package/pipeline/scripts/smoke-search.sh +187 -0
- package/pipeline/scripts/smoke-shadow-git.sh +175 -0
- package/pipeline/scripts/smoke-skill-authoring.sh +142 -0
- package/pipeline/scripts/smoke-skill-language.sh +83 -0
- package/pipeline/scripts/smoke-skill-manifest.sh +138 -0
- package/pipeline/scripts/smoke-skill-scan.sh +198 -0
- package/pipeline/scripts/smoke-stack-swap.sh +132 -0
- package/pipeline/scripts/smoke-subagent-validators.sh +105 -0
- package/pipeline/scripts/smoke-sync-delegation.sh +74 -0
- package/pipeline/scripts/smoke-sync-parity.sh +92 -0
- package/pipeline/scripts/smoke-tasklist-ordering.sh +111 -0
- package/pipeline/scripts/smoke-telemetry.sh +147 -0
- package/pipeline/scripts/smoke-test-gap.sh +183 -0
- package/pipeline/scripts/smoke-token-budget.sh +67 -0
- package/pipeline/scripts/smoke-tracker-contract.sh +129 -0
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +65 -0
- package/pipeline/scripts/smoke-triage-memory.sh +174 -0
- package/pipeline/scripts/smoke-url-enrichment.sh +70 -0
- package/pipeline/scripts/smoke-validator-contradiction.sh +67 -0
- package/pipeline/scripts/smoke-vercel-deploy-redact.sh +129 -0
- package/pipeline/scripts/smoke-wiki-integration.sh +146 -0
- package/pipeline/scripts/smoke-work-summary.sh +163 -0
- package/pipeline/scripts/smoke-worktree-path-convention.sh +86 -0
- package/pipeline/scripts/smoke-write-state.sh +115 -0
- package/pipeline/scripts/stack-swap.sh +182 -0
- package/pipeline/scripts/sync-figma-source.sh +228 -0
- package/pipeline/scripts/sync-parity-check.sh +135 -0
- package/pipeline/scripts/test-gap-rules/android.json +25 -0
- package/pipeline/scripts/test-gap-rules/ios.json +29 -0
- package/pipeline/scripts/test-gap-rules/node.json +17 -0
- package/pipeline/scripts/test-gap-rules/python.json +19 -0
- package/pipeline/scripts/test-gap-scan.mjs +343 -0
- package/pipeline/scripts/token-budget-report.mjs +145 -0
- package/pipeline/scripts/triage-memory.mjs +258 -0
- package/pipeline/scripts/ui-tree-dumper.swift +122 -0
- package/pipeline/scripts/uninstall.mjs +331 -0
- package/pipeline/scripts/update-issue-progress.sh +146 -0
- package/pipeline/scripts/validate-analysis.mjs +132 -0
- package/pipeline/scripts/validate-diff-risk.mjs +117 -0
- package/pipeline/scripts/validate-planning.mjs +180 -0
- package/pipeline/scripts/validate-reviewer.mjs +131 -0
- package/pipeline/scripts/validate-schemas.mjs +88 -0
- package/pipeline/scripts/validate-test-gap.mjs +90 -0
- package/pipeline/scripts/validate-triage.mjs +175 -0
- package/pipeline/scripts/verify-skills.sh +126 -0
- package/pipeline/scripts/write-state.mjs +175 -0
- package/pipeline/skills/.skill-manifest.json +779 -0
- package/pipeline/skills/.skills-index.json +1771 -0
- package/pipeline/skills/figma-android/README.md +36 -0
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +62 -0
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +158 -0
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +120 -0
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +35 -0
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +124 -0
- package/pipeline/skills/figma-common/README.md +57 -0
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +277 -0
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +498 -0
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +283 -0
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +362 -0
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +206 -0
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +337 -0
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +211 -0
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +218 -0
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +246 -0
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +73 -0
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +316 -0
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +542 -0
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +745 -0
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +203 -0
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +1015 -0
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +331 -0
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +398 -0
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +104 -0
- package/pipeline/skills/figma-common/figma-review/SKILL.md +395 -0
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +514 -0
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +592 -0
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +129 -0
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +104 -0
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +274 -0
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +808 -0
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +633 -0
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +711 -0
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +233 -0
- package/pipeline/skills/figma-common/performance-start/SKILL.md +425 -0
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +706 -0
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +418 -0
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +67 -0
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +178 -0
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +184 -0
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +219 -0
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +274 -0
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +401 -0
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +57 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +307 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +119 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +174 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +333 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +368 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +393 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +617 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +352 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +337 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +206 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +235 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +214 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +871 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +156 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +175 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +333 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +412 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +336 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +695 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +380 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +262 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +482 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +274 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +636 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +142 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +547 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +39 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +659 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +580 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +51 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +129 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +64 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +531 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +89 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +155 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +196 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +57 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +89 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +227 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +157 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +90 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +116 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +153 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +130 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +218 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +188 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +93 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +98 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +261 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +147 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +182 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +185 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +609 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +261 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +184 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +188 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +768 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +191 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +420 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.json +94 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +336 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +391 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +292 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +1 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +93 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +299 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +343 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +206 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +149 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +281 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +98 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +298 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +195 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +1298 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +228 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +1089 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +141 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +106 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +162 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +105 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +179 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +260 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +260 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +86 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +321 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +1470 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +147 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +629 -0
- package/pipeline/skills/shared/README.md +212 -0
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +315 -0
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +348 -0
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +944 -0
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +51 -0
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +300 -0
- package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +63 -0
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +64 -0
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +56 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +36 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +42 -0
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +66 -0
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +292 -0
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +35 -0
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +38 -0
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +41 -0
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +87 -0
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +53 -0
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +28 -0
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +47 -0
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +42 -0
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +191 -0
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +31 -0
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +62 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +309 -0
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +55 -0
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +41 -0
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +184 -0
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +44 -0
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +34 -0
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +45 -0
- package/pipeline/skills/shared/external/agentflow/SKILL.md +199 -0
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +438 -0
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +584 -0
- package/pipeline/skills/shared/external/android-architecture/SKILL.md +407 -0
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +153 -0
- package/pipeline/skills/shared/external/android-performance/SKILL.md +736 -0
- package/pipeline/skills/shared/external/android-security/SKILL.md +577 -0
- package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +66 -0
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +85 -0
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +910 -0
- package/pipeline/skills/shared/external/app-clips/SKILL.md +436 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +489 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +1076 -0
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +75 -0
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +409 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +411 -0
- package/pipeline/skills/shared/external/app-store-review/references/code-signing.md +259 -0
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +90 -0
- package/pipeline/skills/shared/external/app-store-review/references/rejection-patterns.md +152 -0
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +118 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +500 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +425 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +344 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +508 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +285 -0
- package/pipeline/skills/shared/external/architecture/SKILL.md +60 -0
- package/pipeline/skills/shared/external/authentication/SKILL.md +496 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +211 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +499 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +390 -0
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +461 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +425 -0
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +462 -0
- package/pipeline/skills/shared/external/clean-code/SKILL.md +94 -0
- package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +116 -0
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +492 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +461 -0
- package/pipeline/skills/shared/external/compose-components/SKILL.md +441 -0
- package/pipeline/skills/shared/external/compose-navigation/SKILL.md +436 -0
- package/pipeline/skills/shared/external/compose-testing/SKILL.md +527 -0
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +425 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +409 -0
- package/pipeline/skills/shared/external/context-compression/SKILL.md +266 -0
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +491 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +435 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +388 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +405 -0
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +495 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +420 -0
- package/pipeline/skills/shared/external/coreml/SKILL.md +458 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +765 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +467 -0
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +335 -0
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +422 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +387 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +298 -0
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +37 -0
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +477 -0
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +413 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +460 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +541 -0
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +483 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +326 -0
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +190 -0
- package/pipeline/skills/shared/external/firebase/SKILL.md +61 -0
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +348 -0
- package/pipeline/skills/shared/external/gradle-kotlin-dsl/SKILL.md +552 -0
- package/pipeline/skills/shared/external/healthkit/SKILL.md +498 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +602 -0
- package/pipeline/skills/shared/external/help-skills/SKILL.md +166 -0
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +81 -0
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +95 -0
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +82 -0
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +101 -0
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +94 -0
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +110 -0
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +99 -0
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +81 -0
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +125 -0
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +496 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +455 -0
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +301 -0
- package/pipeline/skills/shared/external/humanizer/SKILL.md +118 -0
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +301 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +140 -0
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +59 -0
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +217 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +418 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +627 -0
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +462 -0
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +441 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +862 -0
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +563 -0
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +1116 -0
- package/pipeline/skills/shared/external/ios-security/SKILL.md +496 -0
- package/pipeline/skills/shared/external/ios-security/references/app-review-guidelines.md +174 -0
- package/pipeline/skills/shared/external/ios-security/references/cryptokit-advanced.md +297 -0
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +354 -0
- package/pipeline/skills/shared/external/ios-security/references/privacy-manifest.md +117 -0
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +101 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +500 -0
- package/pipeline/skills/shared/external/live-activities/references/live-activity-patterns.md +868 -0
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +109 -0
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +110 -0
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +485 -0
- package/pipeline/skills/shared/external/mapkit-location/references/corelocation-patterns.md +730 -0
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +748 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +479 -0
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +64 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +395 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +363 -0
- package/pipeline/skills/shared/external/natural-language/SKILL.md +412 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +311 -0
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +418 -0
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +38 -0
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +235 -0
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +398 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +254 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +387 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/paperkit-integration.md +376 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +302 -0
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +446 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +435 -0
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +501 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +701 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +774 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +869 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/photospicker-patterns.md +597 -0
- package/pipeline/skills/shared/external/play-store-review/SKILL.md +350 -0
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +501 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +677 -0
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +745 -0
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +383 -0
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +290 -0
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +479 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +480 -0
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +386 -0
- package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +506 -0
- package/pipeline/skills/shared/external/room-database/SKILL.md +564 -0
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +483 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +544 -0
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +485 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +478 -0
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +58 -0
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +755 -0
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +487 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +895 -0
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +467 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +408 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +80 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swift-6-2-concurrency.md +233 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +187 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +341 -0
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +113 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +124 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +155 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/async-streams.md +67 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bridging.md +52 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bug-patterns.md +100 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +107 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/diagnostics.md +70 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/hotspots.md +47 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +129 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +224 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +101 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +218 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/unstructured.md +61 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +498 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +505 -0
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +462 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +504 -0
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +97 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +252 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/core-rules.md +52 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/migrating-from-xctest.md +34 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +318 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +254 -0
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +334 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +504 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +975 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +675 -0
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +102 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/class-inheritance.md +104 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/cloudkit.md +10 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/core-rules.md +20 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/indexing.md +27 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/predicates.md +73 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +503 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +821 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +553 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +102 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/accessibility-patterns.md +215 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-advanced.md +403 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-basics.md +284 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-transitions.md +326 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +135 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +602 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +203 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +464 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +266 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/liquid-glass.md +416 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +394 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +318 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +357 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +303 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/performance-patterns.md +403 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/scroll-patterns.md +293 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/sheet-navigation-patterns.md +363 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +417 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +389 -0
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +450 -0
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +425 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +336 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +97 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +69 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +99 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +147 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +98 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +262 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +207 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +177 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +169 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +178 -0
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +371 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +486 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +1097 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +780 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +696 -0
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +487 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +46 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +29 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +33 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +52 -0
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +114 -0
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +108 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/accessibility.md +13 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/api.md +39 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/data.md +43 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/design.md +31 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/hygiene.md +9 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/navigation.md +14 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/performance.md +46 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/swift.md +56 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/views.md +35 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +103 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +428 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +534 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +948 -0
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +210 -0
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +273 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +151 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +95 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +51 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +111 -0
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +309 -0
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +393 -0
- package/pipeline/skills/shared/external/tipkit/SKILL.md +494 -0
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +782 -0
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +336 -0
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +475 -0
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +736 -0
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +738 -0
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +371 -0
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +410 -0
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +567 -0
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +373 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +345 -0
- package/pipeline/skills/shared/external/web-testing/SKILL.md +385 -0
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +497 -0
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +871 -0
- package/pipeline/skills/skills-index.md +205 -0
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
# Recovery Guide — What to Do When Things Break
|
|
2
|
+
|
|
3
|
+
Every failure mode in the pipeline has a deterministic recovery path. This
|
|
4
|
+
guide is a single place to look up "X failed — now what?" instead of chasing
|
|
5
|
+
the answer across `modes.md`, `operations.md`, and the individual phase specs.
|
|
6
|
+
|
|
7
|
+
## Fast Triage — Which Path Do I Need?
|
|
8
|
+
|
|
9
|
+
| Symptom | Jump to |
|
|
10
|
+
| ------------------------------------------------------- | ----------------------------------------------- |
|
|
11
|
+
| Pipeline paused/halted mid-run | [Resume a paused task](#resume-a-paused-task) |
|
|
12
|
+
| Phase 3 build failed > 3 times | [Build retry exhausted](#build-retry-exhausted) |
|
|
13
|
+
| Phase 4 triage returned exit 1 (invalid JSON) twice | [Triage fallback](#triage-fallback) |
|
|
14
|
+
| Phase 4 triage returned exit 2 (over-rejection) | [Over-rejection](#over-rejection-guard) |
|
|
15
|
+
| Worktree already exists / dirty | [Worktree collisions](#worktree-collisions) |
|
|
16
|
+
| `agent-state.json` corrupt or unreadable | [State corruption](#state-corruption) |
|
|
17
|
+
| Wrong git identity committed | [Identity rewind](#identity-rewind) |
|
|
18
|
+
| Commit hook blocked commit (secret scan) | [Secret scan blocked commit](#secret-scan-blocked-commit) |
|
|
19
|
+
| Autopilot ran too long / cost concern | [Abort autopilot](#abort-autopilot) |
|
|
20
|
+
| instructionDriven flag set but instruction file missing | [Instruction fallback](#instruction-fallback) |
|
|
21
|
+
| CHANGELOG / version out of sync | [Version drift](#version-drift) |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Resume a Paused Task
|
|
26
|
+
|
|
27
|
+
Paused tasks keep their full state in `.worktrees/{jiraId}/agent-state.json`.
|
|
28
|
+
Inspect, then resume.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
/multi-agent:status # Claude Code
|
|
32
|
+
multi-agent-status # Copilot CLI
|
|
33
|
+
# → shows #N, jiraId, currentPhase, status
|
|
34
|
+
|
|
35
|
+
/multi-agent:resume #3
|
|
36
|
+
multi-agent-resume 3
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Resume re-enters the phase whose `status` is `in_progress` or `failed`. If a
|
|
40
|
+
phase is `failed`, it restarts from its first step; if `in_progress`, it picks
|
|
41
|
+
up at the last logged step.
|
|
42
|
+
|
|
43
|
+
**Autopilot resume:** the `autopilot` flag on `state.autopilot=true` persists,
|
|
44
|
+
so `resume` continues in autopilot.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Build Retry Exhausted
|
|
49
|
+
|
|
50
|
+
Phase 3 retries the build up to **3 times** on each TDD cycle's green step. On
|
|
51
|
+
the 4th consecutive failure the pipeline **pauses** (even in autopilot) and
|
|
52
|
+
surfaces the error. Autopilot does not loop infinitely — this is intentional.
|
|
53
|
+
|
|
54
|
+
Path forward:
|
|
55
|
+
|
|
56
|
+
1. Read the last 20 lines of `agent-log.md` — the root cause is usually there.
|
|
57
|
+
2. If the failure is environmental (missing Xcode sim, wrong JDK), fix the
|
|
58
|
+
environment and `resume` — the 3-retry counter resets.
|
|
59
|
+
3. If the failure is logic (compile error in the generated code), edit the
|
|
60
|
+
offending file in the worktree, then `resume` — Phase 3 re-runs build.
|
|
61
|
+
4. If the task itself is wrong-shaped (Phase 2 plan is infeasible), `kill` and
|
|
62
|
+
restart with a better-scoped prompt.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Triage Fallback
|
|
67
|
+
|
|
68
|
+
`validate-triage.mjs` exit codes and what they mean:
|
|
69
|
+
|
|
70
|
+
| Exit | Meaning | Pipeline action |
|
|
71
|
+
| ---- | ------------------------ | ---------------------------------------------- |
|
|
72
|
+
| 0 | Valid & clean | Proceed to Phase 5 |
|
|
73
|
+
| 1 | Invalid JSON / schema | Retry triage ONCE. On second exit-1, fallback: treat ALL raw findings as accepted. |
|
|
74
|
+
| 2 | Over-rejection (>80%) | Pause for human confirmation |
|
|
75
|
+
| 3 | Contradiction corrected | Use `result.corrected`, continue |
|
|
76
|
+
|
|
77
|
+
If exit 1 fires twice (fallback path):
|
|
78
|
+
|
|
79
|
+
1. The pipeline logs `Phase 4: triage failed twice — fallback, all findings accepted as blocking`.
|
|
80
|
+
2. All raw findings loop back into Phase 3 as if they were all real blockers.
|
|
81
|
+
3. This is intentionally conservative — we'd rather over-fix than skip
|
|
82
|
+
something real. You can manually mark noise in the Phase 6 PR description.
|
|
83
|
+
|
|
84
|
+
## Over-Rejection Guard
|
|
85
|
+
|
|
86
|
+
Exit code 2 means triage rejected >80% of findings, which is suspicious — it
|
|
87
|
+
often indicates the triage prompt lost the task context. Pipeline halts and
|
|
88
|
+
asks a human to look at the raw findings vs triage output.
|
|
89
|
+
|
|
90
|
+
**Normal resolution:**
|
|
91
|
+
|
|
92
|
+
- Open `agent-log.md`, find the triage invocation.
|
|
93
|
+
- Compare raw findings (logged) with rejected items.
|
|
94
|
+
- If the rejections are correct, run `resume` with `--accept-overrejection` (Phase 4 re-enters validation with the guard soft-failed).
|
|
95
|
+
- If not, run `resume` — Phase 4 re-runs triage with the guard still active.
|
|
96
|
+
|
|
97
|
+
Autopilot behavior: logs the warning, accepts the triage output, continues —
|
|
98
|
+
the autopilot contract values throughput over human-in-loop.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Worktree Collisions
|
|
103
|
+
|
|
104
|
+
Phase 0 creates `.worktrees/{jiraId}`. If that path already exists:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Option A — resume the previous run
|
|
108
|
+
/multi-agent:resume #N
|
|
109
|
+
|
|
110
|
+
# Option B — delete the stale worktree
|
|
111
|
+
/multi-agent:kill #N # asks to confirm, removes worktree + branch
|
|
112
|
+
|
|
113
|
+
# Option C — manual cleanup
|
|
114
|
+
git worktree list # find stale entries
|
|
115
|
+
git worktree remove .worktrees/{jiraId} # safe if no uncommitted work
|
|
116
|
+
git worktree prune # drop any dead refs
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
If `git worktree remove` refuses (uncommitted changes), commit the WIP work
|
|
120
|
+
inside the worktree first:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
git -C .worktrees/{jiraId} add -A
|
|
124
|
+
git -C .worktrees/{jiraId} commit -m "WIP: rescue before remove"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## State Corruption
|
|
130
|
+
|
|
131
|
+
`agent-state.json` is validated against `pipeline/schemas/agent-state.schema.json`
|
|
132
|
+
at Phase 0 load. If validation fails:
|
|
133
|
+
|
|
134
|
+
1. Back up the file: `cp agent-state.json agent-state.json.bak`.
|
|
135
|
+
2. Try `node pipeline/scripts/validate-schemas.mjs` to identify the violation.
|
|
136
|
+
3. Common fixes:
|
|
137
|
+
- **Missing required field** — add the default per the schema description.
|
|
138
|
+
- **Bad enum value** — check `phase.status` and `taskType` enums.
|
|
139
|
+
- **`lastUpdated` not ISO-8601** — regenerate with `date -u +"%Y-%m-%dT%H:%M:%SZ"`.
|
|
140
|
+
4. If the file is irrecoverable, `kill` the task and restart. State loss for
|
|
141
|
+
a single task is recoverable; corruption bleeding into the next run is not.
|
|
142
|
+
|
|
143
|
+
To prevent future corruption, use the atomic writer — never write state with
|
|
144
|
+
shell `echo > agent-state.json`:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
echo '{"currentPhase":4}' | node pipeline/scripts/write-state.mjs .worktrees/{id}/agent-state.json
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Identity Rewind
|
|
153
|
+
|
|
154
|
+
If a commit landed under the wrong git identity:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Check what happened
|
|
158
|
+
git log -1 --format='%an <%ae>'
|
|
159
|
+
|
|
160
|
+
# Amend (only if not pushed)
|
|
161
|
+
git -c user.name="Correct Name" -c user.email="correct@example.com" commit --amend --no-edit
|
|
162
|
+
|
|
163
|
+
# Already pushed? Revert is safer than force-push
|
|
164
|
+
git revert HEAD
|
|
165
|
+
# then re-do the commit with correct identity
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Never rewrite published history on `main`/`master`/`develop` without team
|
|
169
|
+
consent. Force-push rewrites break downstream clones.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Secret Scan Blocked Commit
|
|
174
|
+
|
|
175
|
+
The pre-commit hook (`~/.claude/scripts/pre-commit-check.sh`) scans staged
|
|
176
|
+
files for hardcoded secrets and blocks the commit if any are found.
|
|
177
|
+
|
|
178
|
+
If the hit is a **real secret**:
|
|
179
|
+
|
|
180
|
+
1. `git reset HEAD {file}` — unstage.
|
|
181
|
+
2. Move the secret to env / keychain / secret manager.
|
|
182
|
+
3. Re-stage the cleaned file and commit.
|
|
183
|
+
|
|
184
|
+
If the hit is a **false positive** (e.g. an example string in docs):
|
|
185
|
+
|
|
186
|
+
1. Rename the variable so the pattern doesn't match
|
|
187
|
+
(`EXAMPLE_API_KEY` not `api_key=`).
|
|
188
|
+
2. Or, for documentation, break the pattern with a zero-width marker.
|
|
189
|
+
3. Never `--no-verify` to bypass — that's how real secrets slip through.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Abort Autopilot
|
|
194
|
+
|
|
195
|
+
Autopilot runs to completion unless:
|
|
196
|
+
|
|
197
|
+
- A phase fails 3×+ (hard pause)
|
|
198
|
+
- Ctrl-C sent to the running process
|
|
199
|
+
|
|
200
|
+
Graceful abort without data loss:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# 1. Interrupt
|
|
204
|
+
Ctrl-C
|
|
205
|
+
|
|
206
|
+
# 2. Verify state
|
|
207
|
+
cat .worktrees/{id}/agent-state.json | grep status
|
|
208
|
+
|
|
209
|
+
# 3. Either resume (continue where it stopped) or kill (wipe and restart)
|
|
210
|
+
/multi-agent:resume #N
|
|
211
|
+
/multi-agent:kill #N
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Instruction Fallback
|
|
217
|
+
|
|
218
|
+
`state.instructionDriven=true` but the file at `state.instructionFiles.commit`
|
|
219
|
+
is missing on disk. Phase 6 logs an error, sets
|
|
220
|
+
`state.instructionDrivenFallback=true`, and uses the standard commit path.
|
|
221
|
+
|
|
222
|
+
This is rarely fatal — usually the instruction file was removed between
|
|
223
|
+
sessions or the wrong path was cached. To recover cleanly:
|
|
224
|
+
|
|
225
|
+
1. Check whether the intended instruction file still exists somewhere:
|
|
226
|
+
`find ~/.claude/skills ~/.copilot/skills -name "{file-basename}"`
|
|
227
|
+
2. If found, update `state.instructionFiles.commit` with
|
|
228
|
+
`write-state.mjs` and `resume`.
|
|
229
|
+
3. If the skill was removed, either accept the standard commit path (already
|
|
230
|
+
what happened) or update the task definition to not expect instruction
|
|
231
|
+
mode.
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Version Drift
|
|
236
|
+
|
|
237
|
+
`package.json` version does not match the tag the release workflow sees, so
|
|
238
|
+
publishing fails with "Tag version does not match package.json version".
|
|
239
|
+
|
|
240
|
+
Fix:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# What does the tag expect?
|
|
244
|
+
git describe --tags --abbrev=0 # e.g. v3.5.0
|
|
245
|
+
|
|
246
|
+
# What does package.json say?
|
|
247
|
+
node -p "require('./package.json').version"
|
|
248
|
+
|
|
249
|
+
# Match them and re-tag
|
|
250
|
+
npm version {version} --no-git-tag-version
|
|
251
|
+
git add package.json package-lock.json
|
|
252
|
+
git commit -m "chore: bump version to {version}"
|
|
253
|
+
git tag -d v{version}
|
|
254
|
+
git tag v{version}
|
|
255
|
+
git push origin main
|
|
256
|
+
git push origin v{version} --force # only if tag was never consumed
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
If the tag has already been consumed (release CI ran), bump to the next patch
|
|
260
|
+
version and tag fresh — never re-publish a consumed version.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Worktree Corruption (v8.0.0)
|
|
265
|
+
|
|
266
|
+
`agent-state.json` says the task lives at `.worktrees/<id>/` but the directory
|
|
267
|
+
is missing, locked, or `git worktree list` does not list it. Symptoms: `:resume`
|
|
268
|
+
exits 1 with `cannot cd to <path>`, or git operations inside the worktree fail
|
|
269
|
+
with `fatal: not a git repository`.
|
|
270
|
+
|
|
271
|
+
Fix:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# Inspect git's worktree registry — the source of truth
|
|
275
|
+
git worktree list --porcelain | grep -A 2 "<task-id>"
|
|
276
|
+
|
|
277
|
+
# If the path is missing but git still tracks it (common when a stale .git/worktrees/<id>/
|
|
278
|
+
# entry survived a manual rm -rf):
|
|
279
|
+
git worktree prune --verbose
|
|
280
|
+
git worktree list # confirm cleanup
|
|
281
|
+
|
|
282
|
+
# If the worktree is locked:
|
|
283
|
+
git worktree unlock .worktrees/<task-id>
|
|
284
|
+
git worktree remove --force .worktrees/<task-id>
|
|
285
|
+
|
|
286
|
+
# Re-create the worktree pointing at the same branch:
|
|
287
|
+
git worktree add .worktrees/<task-id> <branch-name>
|
|
288
|
+
|
|
289
|
+
# Update agent-state.json to point at the new worktree path (only if it changed):
|
|
290
|
+
node -e 'const f="$HOME/.claude/logs/multi-agent/<project>/<task-id>/agent-state.json";
|
|
291
|
+
const s=JSON.parse(require("fs").readFileSync(f));
|
|
292
|
+
s.worktreePath="/abs/path/.worktrees/<task-id>";
|
|
293
|
+
require("fs").writeFileSync(f, JSON.stringify(s, null, 2));'
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
If branch and commits look intact but the worktree refuses to recover, the
|
|
297
|
+
safest path is `kill` the task (preserves logs + branch) and restart with
|
|
298
|
+
`/multi-agent:resume <id>` from a fresh clone.
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Tracker State Corruption (v8.0.0)
|
|
303
|
+
|
|
304
|
+
`phase-tracker.sh render` returns garbage — duplicate phases, missing
|
|
305
|
+
elapsed/token fields, JSON parse errors — even though the task is healthy.
|
|
306
|
+
Usually caused by a manual edit to `tracker-state.json` or a partial write
|
|
307
|
+
mid-update.
|
|
308
|
+
|
|
309
|
+
Fix:
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
TRACKER_STATE="$HOME/.claude/logs/multi-agent/<project>/<task-id>/tracker-state.json"
|
|
313
|
+
|
|
314
|
+
# 1. Verify it's invalid JSON (otherwise the issue is elsewhere)
|
|
315
|
+
jq empty "$TRACKER_STATE" # exit non-zero == corrupted
|
|
316
|
+
|
|
317
|
+
# 2. Back it up before fixing
|
|
318
|
+
cp "$TRACKER_STATE" "$TRACKER_STATE.bak.$(date +%s)"
|
|
319
|
+
|
|
320
|
+
# 3. Either restore from a recent valid snapshot in the same dir, or
|
|
321
|
+
# reinitialize from the agent-log timeline:
|
|
322
|
+
bash $HOME/.claude/scripts/phase-tracker.sh init "<task-id>"
|
|
323
|
+
for p in 0:Init 1:Analysis 2:Planning 3:Dev 4:Review 5:Test 6:Commit 7:Report; do
|
|
324
|
+
bash $HOME/.claude/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
|
|
325
|
+
done
|
|
326
|
+
# Replay completed phases from agent-log.md headers
|
|
327
|
+
grep -E '^## Phase [0-9]+:' "$HOME/.claude/logs/multi-agent/<project>/<task-id>/agent-log.md" \
|
|
328
|
+
| awk -F'[: ]' '{print $3}' | sort -u | while read n; do
|
|
329
|
+
bash $HOME/.claude/scripts/phase-tracker.sh update "$n" completed
|
|
330
|
+
done
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Token counts are not recoverable from the log — those start fresh after a
|
|
334
|
+
reinit. A footnote in `agent-log.md` documenting the rebuild is good practice.
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Token Rotation Mid-Pipeline (v8.0.0)
|
|
339
|
+
|
|
340
|
+
A token (Jira / Bitbucket / GitHub / Vercel) was rotated while a long-running
|
|
341
|
+
pipeline was active. Phase 6 / Phase 7 then fail with `401 Unauthorized` even
|
|
342
|
+
though earlier phases worked.
|
|
343
|
+
|
|
344
|
+
Fix:
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
# 1. Update the keychain entry for the rotated provider. The mapping
|
|
348
|
+
# keys live in prefs.global.keychainMapping (account+label tuple per provider).
|
|
349
|
+
ACCOUNT=$(jq -r '.global.keychainMapping.<provider>.account' \
|
|
350
|
+
$HOME/.claude/multi-agent-preferences.json)
|
|
351
|
+
LABEL=$(jq -r '.global.keychainMapping.<provider>.label' \
|
|
352
|
+
$HOME/.claude/multi-agent-preferences.json)
|
|
353
|
+
|
|
354
|
+
# macOS:
|
|
355
|
+
security delete-generic-password -s "$LABEL" -a "$ACCOUNT" 2>/dev/null
|
|
356
|
+
security add-generic-password -s "$LABEL" -a "$ACCOUNT" -w "$NEW_TOKEN"
|
|
357
|
+
|
|
358
|
+
# Linux:
|
|
359
|
+
secret-tool clear account "$ACCOUNT" service "$LABEL"
|
|
360
|
+
echo "$NEW_TOKEN" | secret-tool store --label="$LABEL" account "$ACCOUNT" service "$LABEL"
|
|
361
|
+
|
|
362
|
+
# 2. Sanity-check the doctor reports the new token's prefix
|
|
363
|
+
bash pipeline/lib/credential-store.sh doctor
|
|
364
|
+
|
|
365
|
+
# 3. Resume the pipeline — Phase 6/7 re-resolve the token on each invocation,
|
|
366
|
+
# so no state edit is required.
|
|
367
|
+
/multi-agent:resume <task-id>
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
If the rotated token was Vercel, also run `bash pipeline/lib/vercel-deploy.sh
|
|
371
|
+
doctor` to confirm the wrapper sees the new value before retrying any deploy.
|
|
372
|
+
|
|
373
|
+
**Never** copy-paste the new token into a `--token=` argv to test it — see
|
|
374
|
+
`pipeline/lib/vercel-deploy.sh` for why this is forbidden.
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## Author Rewrite + Tag Re-Sync (v8.0.0)
|
|
379
|
+
|
|
380
|
+
A series of commits (and any tags pointing at them) were authored under the
|
|
381
|
+
wrong identity — typically because someone passed `git -c user.email=…` or
|
|
382
|
+
the repo-local config drifted. Vercel / npm / GitHub team-membership gates
|
|
383
|
+
then reject the push because the author email is not a recognized contributor.
|
|
384
|
+
|
|
385
|
+
This is the v7.9.1 release-window incident verbatim: 7 commits across
|
|
386
|
+
v7.7.0–v7.9.1 plus 4 annotated tags shipped with the wrong author. Recovery
|
|
387
|
+
required a rebase + retag dance.
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
# 1. Confirm the repo-local identity is now what you actually want.
|
|
391
|
+
git config user.email
|
|
392
|
+
git config user.name
|
|
393
|
+
# Repair if needed:
|
|
394
|
+
git config user.email "you@example.com"
|
|
395
|
+
git config user.name "You"
|
|
396
|
+
|
|
397
|
+
# 2. Find the first wrong commit (the one BEFORE the rebase rewrites everything):
|
|
398
|
+
git log --format='%h %ae %s' main..HEAD | grep -i "wrong-email-pattern" | tail -1
|
|
399
|
+
# Grab its parent SHA — that's your --onto target.
|
|
400
|
+
PARENT_OF_FIRST_WRONG=<sha>
|
|
401
|
+
|
|
402
|
+
# 3. Rebase with --reset-author to rewrite every commit since that point.
|
|
403
|
+
# --reset-author forces git to take the new author from the repo-local config.
|
|
404
|
+
git rebase --reset-author "$PARENT_OF_FIRST_WRONG"
|
|
405
|
+
|
|
406
|
+
# 4. Verify EVERY rewritten commit's author is now correct:
|
|
407
|
+
git log --format='%h %ae' "$PARENT_OF_FIRST_WRONG"..HEAD
|
|
408
|
+
|
|
409
|
+
# 5. Force-with-lease the branch (NOT plain --force):
|
|
410
|
+
git push --force-with-lease origin <branch>
|
|
411
|
+
|
|
412
|
+
# 6. Now retag every tag whose target SHA changed during the rebase.
|
|
413
|
+
# For each affected tag:
|
|
414
|
+
TAG=v7.7.0 # repeat for every tag in the rebased range
|
|
415
|
+
OLD_SHA=$(git rev-parse "$TAG")
|
|
416
|
+
NEW_SHA=$(git log --format=%H --grep="<commit-subject-or-marker>" -1)
|
|
417
|
+
|
|
418
|
+
# 6a. Local tag delete + recreate at the rewritten SHA, with annotation:
|
|
419
|
+
git tag -d "$TAG"
|
|
420
|
+
git tag -a "$TAG" "$NEW_SHA" -m "$(git tag -l --format='%(contents)' "$TAG-old" 2>/dev/null || echo "$TAG release")"
|
|
421
|
+
|
|
422
|
+
# 6b. Remote tag — DELETE then PUSH (no atomic option for tag content rewrite):
|
|
423
|
+
git push origin :refs/tags/"$TAG"
|
|
424
|
+
git push origin "$TAG"
|
|
425
|
+
|
|
426
|
+
# 7. If a CI release pipeline already consumed the OLD tag SHA (npm publish,
|
|
427
|
+
# GitHub Release creation), the published artifact stays attached to the
|
|
428
|
+
# deleted SHA. You CANNOT rewrite published packages — bump the patch
|
|
429
|
+
# version and ship a fresh release instead. Document the orphan in the
|
|
430
|
+
# CHANGELOG with a "yanked" note.
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
**Tag attestation gotcha:** GitHub Releases attached to a deleted tag SHA
|
|
434
|
+
remain visible in the UI as "this tag has been deleted". Either delete the
|
|
435
|
+
release manually (`gh release delete <tag>`) and recreate it pointing at the
|
|
436
|
+
new SHA, or accept the orphan and document it.
|
|
437
|
+
|
|
438
|
+
**npm publish gotcha:** if `npm publish` ran against the wrong-author tag,
|
|
439
|
+
the package is permanently anchored to that SHA on the registry. Bump the
|
|
440
|
+
patch version (`npm version patch --no-git-tag-version`), commit, push,
|
|
441
|
+
publish — never `npm unpublish` (registry blocks unpublish for stable
|
|
442
|
+
versions).
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## Failed Push + Force-Push Decision (v8.0.0)
|
|
447
|
+
|
|
448
|
+
`git push` rejects the branch (non-fast-forward, hook rejected, branch
|
|
449
|
+
protection mismatch, etc.). The pipeline is paused at Phase 6 Step 3.
|
|
450
|
+
|
|
451
|
+
Decision tree:
|
|
452
|
+
|
|
453
|
+
| Condition | Safe action |
|
|
454
|
+
|---|---|
|
|
455
|
+
| Remote ahead — someone pushed to the same branch | `git pull --rebase origin <branch>`, replay the commit, retry push |
|
|
456
|
+
| Hook rejected (lint / signing / size) | Fix locally, amend or new commit, retry push — NEVER `--no-verify` |
|
|
457
|
+
| Branch protection (review count) | Push to a new branch with `-u`, open PR — do NOT `--force` |
|
|
458
|
+
| Author rewrite needed (wrong identity, see `feedback_git_author_repo_local.md`) | `git rebase --reset-author`, `git push --force-with-lease`, NOT `--force` |
|
|
459
|
+
|
|
460
|
+
Force-with-lease is the only acceptable force variant: it refuses to push if
|
|
461
|
+
someone else committed in the meantime. The plain `--force` flag silently
|
|
462
|
+
overwrites their work.
|
|
463
|
+
|
|
464
|
+
Bitbucket-specific: a force-push wipes default reviewers if the PR description
|
|
465
|
+
PUT happens before reviewers re-attach. The `channels.md` adapter's
|
|
466
|
+
reviewer-preserving payload handles this — never `gh pr edit --body` on a
|
|
467
|
+
Bitbucket PR after a force-push without re-reading the reviewer list first.
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
## When None of These Apply
|
|
472
|
+
|
|
473
|
+
1. Capture `agent-log.md`, `agent-state.json`, and the last 100 lines of
|
|
474
|
+
whatever command last ran.
|
|
475
|
+
2. Open a repo issue with the artifacts attached.
|
|
476
|
+
3. For urgent cases, `kill` the task to unblock, then diagnose offline.
|
|
477
|
+
|
|
478
|
+
Recovery is preferable to reset, but reset is preferable to carrying forward a
|
|
479
|
+
broken state.
|
package/index.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* multi-agent-pipeline — 9-phase AI development pipeline
|
|
5
|
+
*
|
|
6
|
+
* Supports: Claude Code, Copilot CLI
|
|
7
|
+
* Install: npx @mmerterden/multi-agent-pipeline install
|
|
8
|
+
*
|
|
9
|
+
* @module multi-agent-pipeline
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { pathToFileURL } from "url";
|
|
13
|
+
import { join, dirname } from "path";
|
|
14
|
+
import { fileURLToPath } from "url";
|
|
15
|
+
|
|
16
|
+
/** @type {string} */
|
|
17
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
18
|
+
|
|
19
|
+
/** @type {string|undefined} */
|
|
20
|
+
const command = process.argv[2];
|
|
21
|
+
|
|
22
|
+
/** @type {boolean} Whether colored output is disabled */
|
|
23
|
+
const noColor =
|
|
24
|
+
process.argv.includes("--no-color") ||
|
|
25
|
+
process.env.NO_COLOR !== undefined ||
|
|
26
|
+
process.env.TERM === "dumb";
|
|
27
|
+
|
|
28
|
+
if (noColor) {
|
|
29
|
+
process.env.NO_COLOR = "1";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (!command || command === "install") {
|
|
33
|
+
await import(pathToFileURL(join(__dirname, "install.js")).href);
|
|
34
|
+
} else if (command === "uninstall" || command === "delete") {
|
|
35
|
+
await import(pathToFileURL(join(__dirname, "pipeline", "scripts", "uninstall.mjs")).href);
|
|
36
|
+
} else if (command === "help") {
|
|
37
|
+
console.log(`
|
|
38
|
+
multi-agent-pipeline — 9-phase AI development pipeline
|
|
39
|
+
|
|
40
|
+
Install:
|
|
41
|
+
npx @mmerterden/multi-agent-pipeline install Install for Claude Code (default)
|
|
42
|
+
npx @mmerterden/multi-agent-pipeline install --copilot Install for Copilot CLI
|
|
43
|
+
npx @mmerterden/multi-agent-pipeline install --all Both Claude + Copilot
|
|
44
|
+
npx @mmerterden/multi-agent-pipeline install --cursor Cursor adapter (.cursor/rules/*.mdc)
|
|
45
|
+
npx @mmerterden/multi-agent-pipeline install --windsurf Windsurf adapter (.windsurfrules)
|
|
46
|
+
npx @mmerterden/multi-agent-pipeline install --cline Cline adapter (.clinerules/)
|
|
47
|
+
npx @mmerterden/multi-agent-pipeline install --copilot-chat GitHub Copilot Chat (.github/copilot-instructions.md)
|
|
48
|
+
npx @mmerterden/multi-agent-pipeline install --continue Continue.dev (.continue/rules/)
|
|
49
|
+
npx @mmerterden/multi-agent-pipeline install --zed Zed AI (.rules)
|
|
50
|
+
npx @mmerterden/multi-agent-pipeline install --all-tools Every supported tool (Tier 1 + Tier 2 + Tier 3)
|
|
51
|
+
npx @mmerterden/multi-agent-pipeline install --link Use symlinks (saves tokens, dev mode)
|
|
52
|
+
|
|
53
|
+
Uninstall (token-preserving — Keychain/Credential Manager untouched):
|
|
54
|
+
npx @mmerterden/multi-agent-pipeline uninstall Interactive: remove from all installed targets
|
|
55
|
+
npx @mmerterden/multi-agent-pipeline uninstall --yes Skip prompt
|
|
56
|
+
npx @mmerterden/multi-agent-pipeline uninstall --dry-run Report what would be removed
|
|
57
|
+
npx @mmerterden/multi-agent-pipeline uninstall --cursor Only Cursor (use --target=<path> to override cwd)
|
|
58
|
+
|
|
59
|
+
Help:
|
|
60
|
+
npx @mmerterden/multi-agent-pipeline help
|
|
61
|
+
|
|
62
|
+
Options:
|
|
63
|
+
--no-color Disable colored output
|
|
64
|
+
--target=<path> Adapter target dir (defaults to cwd; ignored for Claude/Copilot)
|
|
65
|
+
--platform=ios|android|all Filter external skills by platform (default: all)
|
|
66
|
+
|
|
67
|
+
After installation:
|
|
68
|
+
Claude Code: /multi-agent "MOBILE-123"
|
|
69
|
+
Copilot CLI: Describe your task naturally — pipeline instructions are loaded
|
|
70
|
+
Cursor / Windsurf / Cline: knowledge layer only (orchestration not portable)
|
|
71
|
+
|
|
72
|
+
More info: https://github.com/mmerterden/multi-agent-pipeline
|
|
73
|
+
`);
|
|
74
|
+
} else {
|
|
75
|
+
console.log(`Unknown command: ${command}. Run with 'help' for usage.`);
|
|
76
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Third-party adapter dispatch.
|
|
3
|
+
*
|
|
4
|
+
* Each adapter (Cursor / Copilot Chat) is dynamically imported only when its
|
|
5
|
+
* flag is set, so the default Claude / Copilot install path stays free of
|
|
6
|
+
* adapter module load cost.
|
|
7
|
+
*
|
|
8
|
+
* As of v8.5.4 the previously-shipped Windsurf / Cline / Zed / Continue
|
|
9
|
+
* adapters were removed — pipeline owner did not use them, and keeping them
|
|
10
|
+
* green added smoke-test surface for no real benefit. Their files were
|
|
11
|
+
* deleted from `pipeline/adapters/`. Reintroducing any of them is a one-file
|
|
12
|
+
* add against `_base.mjs`.
|
|
13
|
+
*
|
|
14
|
+
* @module install/_adapters
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { join } from "path";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @typedef {object} AdapterFlags
|
|
21
|
+
* @property {boolean} cursor
|
|
22
|
+
* @property {boolean} copilotChat
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @param {AdapterFlags} flags
|
|
27
|
+
* @returns {boolean}
|
|
28
|
+
*/
|
|
29
|
+
export function anyAdapterRequested(flags) {
|
|
30
|
+
return flags.cursor || flags.copilotChat;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @param {{
|
|
35
|
+
* pipelineRoot: string,
|
|
36
|
+
* pipelineSrc: string,
|
|
37
|
+
* target: string,
|
|
38
|
+
* platformFilter: "ios"|"android"|"all",
|
|
39
|
+
* flags: AdapterFlags,
|
|
40
|
+
* }} ctx
|
|
41
|
+
*/
|
|
42
|
+
export async function installAdapters(ctx) {
|
|
43
|
+
const { pipelineRoot, target, platformFilter, flags } = ctx;
|
|
44
|
+
console.log("");
|
|
45
|
+
console.log(" Third-party tool adapters (knowledge layer only)");
|
|
46
|
+
console.log(` Target: ${target}`);
|
|
47
|
+
console.log("");
|
|
48
|
+
|
|
49
|
+
const adapterCommonOpts = {
|
|
50
|
+
pipelineSrc: ctx.pipelineSrc,
|
|
51
|
+
target,
|
|
52
|
+
platformFilter,
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const adapterTargets = [
|
|
56
|
+
flags.cursor && "./pipeline/adapters/cursor.mjs",
|
|
57
|
+
flags.copilotChat && "./pipeline/adapters/copilot-chat.mjs",
|
|
58
|
+
].filter(Boolean);
|
|
59
|
+
|
|
60
|
+
for (const modPath of adapterTargets) {
|
|
61
|
+
try {
|
|
62
|
+
const adapter = (await import(join(pipelineRoot, modPath))).default;
|
|
63
|
+
console.log(` [${adapter.name}] Installing...`);
|
|
64
|
+
adapter.install(adapterCommonOpts);
|
|
65
|
+
} catch (e) {
|
|
66
|
+
console.error(` -> Adapter load failed (${modPath}): ${e.message}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|