@mmerterden/multi-agent-pipeline 12.6.0 → 12.8.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 +209 -0
- package/README.md +18 -18
- package/docs/FIGMA_PIPELINE.md +34 -34
- package/docs/adr/0001-three-model-triage.md +12 -12
- package/docs/adr/0002-instruction-driven-flag.md +5 -5
- package/docs/adr/0003-unified-shared-skills.md +5 -5
- package/docs/adr/0004-zero-dependency-philosophy.md +5 -5
- package/docs/adr/0005-lazy-phase-docs.md +2 -2
- package/docs/adr/0006-skills-core-external-split.md +6 -6
- package/docs/adr/0007-multi-tool-adapter-framework.md +19 -19
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +19 -19
- package/docs/adr/README.md +1 -1
- package/docs/best-practices.md +3 -3
- package/docs/features.md +28 -28
- package/docs/performance.md +16 -16
- package/docs/recovery-guide.md +39 -39
- package/index.js +4 -4
- package/install/_common.mjs +53 -11
- package/install/_copilot-instructions.mjs +2 -2
- package/install/_dev-only-files.mjs +126 -6
- package/install/_platform-filter.mjs +1 -1
- package/install/_telemetry.mjs +1 -1
- package/install/claude.mjs +20 -13
- package/install/copilot.mjs +11 -23
- package/install/index.mjs +7 -15
- package/install/templates/copilot-instructions.md +54 -54
- package/install.js +1 -1
- package/package.json +29 -11
- package/pipeline/commands/multi-agent/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/analysis/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/design-check/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/finish/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/forget/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/issue/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/kill/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/language/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/log/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/purge/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +16 -8
- package/pipeline/commands/multi-agent/resume/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/review-issue/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/review-jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/routines/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/save/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/scan/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/search/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/stack/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/status/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/sync/SKILL.md +5 -5
- package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/uninstall/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/update/SKILL.md +3 -3
- package/pipeline/lib/account-resolver.sh +1 -1
- package/pipeline/lib/channels-multi-repo.sh +1 -1
- package/pipeline/lib/context-link-extractor.sh +1 -1
- package/pipeline/lib/credential-store.sh +21 -1
- package/pipeline/lib/fetch-confluence.sh +1 -1
- package/pipeline/lib/fetch-crashlytics.sh +1 -1
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/fetch-graylog.sh +1 -1
- package/pipeline/lib/fetch-swagger.sh +1 -1
- package/pipeline/lib/issue-fetcher.sh +1 -1
- package/pipeline/lib/multi-repo-pipeline.sh +1 -1
- package/pipeline/lib/repo-cache.sh +1 -1
- package/pipeline/lib/submodule-detector.sh +1 -1
- package/pipeline/multi-agent-refs/_account-picker.md +1 -1
- package/pipeline/multi-agent-refs/_dev-context.md +1 -1
- package/pipeline/multi-agent-refs/_repo-picker.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +1 -1
- package/pipeline/multi-agent-refs/component-generation.md +121 -0
- package/pipeline/multi-agent-refs/cross-cli-contract.md +1 -1
- package/pipeline/multi-agent-refs/features/model-fallback.md +2 -2
- package/pipeline/multi-agent-refs/phases/operations.md +28 -0
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +1 -0
- package/pipeline/multi-agent-refs/phases/phase-2-planning.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-3-dev.md +1 -2
- package/pipeline/multi-agent-refs/phases/phase-4-review.md +50 -5
- package/pipeline/preferences-template.json +5 -11
- package/pipeline/schemas/agent-state.schema.json +39 -9
- package/pipeline/schemas/analysis-output.schema.json +18 -4
- package/pipeline/schemas/analysis-spec.schema.json +120 -32
- package/pipeline/schemas/clarify-output.schema.json +15 -5
- package/pipeline/schemas/design-check-config.schema.json +32 -11
- package/pipeline/schemas/dev-critic-output.schema.json +20 -5
- package/pipeline/schemas/figma-project-config.schema.json +42 -10
- package/pipeline/schemas/learnings-ledger.schema.json +10 -2
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +1 -4
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +24 -7
- package/pipeline/schemas/plan-todos.schema.json +6 -3
- package/pipeline/schemas/planning-output.schema.json +5 -1
- package/pipeline/schemas/prefs.schema.json +97 -229
- package/pipeline/schemas/test-gap.schema.json +5 -5
- package/pipeline/schemas/token-budget.json +8 -8
- package/pipeline/schemas/triage-corpus.schema.json +1 -1
- package/pipeline/scripts/_smoke-root.sh +61 -0
- package/pipeline/scripts/aggregate-metrics.mjs +18 -6
- package/pipeline/scripts/audit-log.sh +25 -0
- package/pipeline/scripts/build-skills-index.mjs +6 -2
- package/pipeline/scripts/build-stack-plugins.mjs +142 -39
- package/pipeline/scripts/check-derived-drift.mjs +196 -0
- package/pipeline/scripts/classify-plan-safety.mjs +20 -7
- package/pipeline/scripts/cost-budget-check.mjs +2 -1
- package/pipeline/scripts/cost-table.json +1 -1
- package/pipeline/scripts/diff-explain.mjs +7 -3
- package/pipeline/scripts/diff-risk-score.mjs +13 -3
- package/pipeline/scripts/evidence-gate.mjs +7 -2
- package/pipeline/scripts/gen-mode-dispatch.mjs +38 -21
- package/pipeline/scripts/gen-skills-index.mjs +18 -3
- package/pipeline/scripts/learning-curve.mjs +13 -3
- package/pipeline/scripts/learnings-ledger.mjs +103 -36
- package/pipeline/scripts/localize-commands.mjs +6 -1
- package/pipeline/scripts/match-skills.mjs +15 -4
- package/pipeline/scripts/migrate-prefs.mjs +33 -16
- package/pipeline/scripts/phase-tracker.sh +3 -1
- package/pipeline/scripts/repo-map.mjs +110 -64
- package/pipeline/scripts/review-scope.mjs +7 -1
- package/pipeline/scripts/routine-registry.mjs +4 -9
- package/pipeline/scripts/run-aggregator.mjs +11 -5
- package/pipeline/scripts/run-metrics.mjs +13 -8
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +21 -7
- package/pipeline/scripts/test-gap-scan.mjs +44 -12
- package/pipeline/scripts/test-integrity-gate.mjs +5 -1
- package/pipeline/scripts/token-budget-report.mjs +44 -21
- package/pipeline/scripts/triage-memory.mjs +126 -34
- package/pipeline/scripts/uninstall.mjs +74 -30
- package/pipeline/scripts/validate-analysis-doc.mjs +15 -5
- package/pipeline/scripts/validate-diff-risk.mjs +32 -18
- package/pipeline/scripts/validate-test-gap.mjs +17 -7
- package/pipeline/scripts/validate-triage.mjs +17 -5
- package/pipeline/scripts/write-state.mjs +32 -9
- package/pipeline/skills/.skills-index.json +91 -91
- package/pipeline/skills/shared/README.md +57 -57
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +1 -1
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +26 -279
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +16 -8
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +1 -1
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +1 -1
- package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -4
- package/pipeline/skills/shared/external/agentflow/SKILL.md +1 -1
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +1 -1
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +1 -1
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +1 -1
- package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
- package/pipeline/skills/shared/external/backlog/SKILL.md +12 -12
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -1
- package/pipeline/skills/shared/external/context-compression/SKILL.md +1 -1
- package/pipeline/skills/shared/external/council/SKILL.md +3 -3
- package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -1
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +1 -1
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +1 -1
- package/pipeline/skills/shared/external/firebase/SKILL.md +1 -1
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +1 -1
- package/pipeline/skills/shared/external/help-skills/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +1 -1
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -1
- package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +1 -1
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +1 -1
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +1 -1
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -1
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +1 -1
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -1
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -1
- package/pipeline/skills/shared/external/search-first/SKILL.md +2 -2
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +12 -12
- package/pipeline/skills/shared/external/skill-creator/audit.md +21 -21
- package/pipeline/skills/shared/external/skill-creator/checklist.md +3 -3
- package/pipeline/skills/shared/external/skill-creator/examples.md +10 -10
- package/pipeline/skills/shared/external/skill-creator/label-check.md +17 -17
- package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +86 -50
- package/pipeline/skills/shared/external/skill-creator/template.md +9 -9
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +1 -1
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -1
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -1
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -1
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -1
- package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -1
- package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +9 -49
- package/pipeline/skills/skills-index.md +57 -57
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +0 -25
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-2-plan.json +0 -30
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +0 -20
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +0 -15
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +0 -14
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/task.json +0 -12
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +0 -29
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-2-plan.json +0 -43
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +0 -35
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +0 -35
- package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +0 -14
- package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +0 -12
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-1-analysis.json +0 -29
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-2-plan.json +0 -42
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-review.json +0 -20
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-triage.json +0 -15
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/metadata.json +0 -14
- package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/task.json +0 -12
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-1-analysis.json +0 -29
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-2-plan.json +0 -40
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-review.json +0 -20
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-triage.json +0 -15
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/metadata.json +0 -14
- package/pipeline/eval/golden-tasks/04-frontend-next-hydration/task.json +0 -12
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-1-analysis.json +0 -29
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-2-plan.json +0 -42
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-review.json +0 -28
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-triage.json +0 -27
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/metadata.json +0 -14
- package/pipeline/eval/golden-tasks/05-ios-security-keychain/task.json +0 -12
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-1-analysis.json +0 -29
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-2-plan.json +0 -41
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-review.json +0 -12
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-triage.json +0 -6
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/metadata.json +0 -14
- package/pipeline/eval/golden-tasks/06-android-refactor-usecase/task.json +0 -12
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-1-analysis.json +0 -29
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-2-plan.json +0 -42
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-review.json +0 -28
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-triage.json +0 -27
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/metadata.json +0 -14
- package/pipeline/eval/golden-tasks/07-backend-node-idempotency/task.json +0 -12
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-1-analysis.json +0 -25
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-2-plan.json +0 -31
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-review.json +0 -12
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-triage.json +0 -18
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/metadata.json +0 -14
- package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/task.json +0 -12
- package/pipeline/eval/golden-tasks/README.md +0 -65
- package/pipeline/eval/intent-cases.json +0 -40
- package/pipeline/eval/run-metrics-fixture.json +0 -46
- package/pipeline/eval/triage/01-empty-findings/expected.json +0 -6
- package/pipeline/eval/triage/01-empty-findings/input.json +0 -5
- package/pipeline/eval/triage/01-empty-findings/notes.md +0 -7
- package/pipeline/eval/triage/02-real-blocker/expected.json +0 -15
- package/pipeline/eval/triage/02-real-blocker/input.json +0 -14
- package/pipeline/eval/triage/02-real-blocker/notes.md +0 -7
- package/pipeline/eval/triage/03-out-of-scope-defer/expected.json +0 -18
- package/pipeline/eval/triage/03-out-of-scope-defer/input.json +0 -14
- package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +0 -10
- package/pipeline/eval/triage/04-false-positive-reject/expected.json +0 -18
- package/pipeline/eval/triage/04-false-positive-reject/input.json +0 -14
- package/pipeline/eval/triage/04-false-positive-reject/notes.md +0 -10
- package/pipeline/eval/triage/05-mixed-classification/expected.json +0 -43
- package/pipeline/eval/triage/05-mixed-classification/input.json +0 -38
- package/pipeline/eval/triage/05-mixed-classification/notes.md +0 -17
- package/pipeline/eval/triage/06-severity-mismatch/expected.json +0 -15
- package/pipeline/eval/triage/06-severity-mismatch/input.json +0 -14
- package/pipeline/eval/triage/06-severity-mismatch/notes.md +0 -9
- package/pipeline/eval/triage/07-duplicate-reviewers/expected.json +0 -27
- package/pipeline/eval/triage/07-duplicate-reviewers/input.json +0 -22
- package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +0 -9
- package/pipeline/eval/triage/08-style-misclassified/expected.json +0 -18
- package/pipeline/eval/triage/08-style-misclassified/input.json +0 -14
- package/pipeline/eval/triage/08-style-misclassified/notes.md +0 -9
- package/pipeline/eval/triage/09-cascading-finding/expected.json +0 -23
- package/pipeline/eval/triage/09-cascading-finding/input.json +0 -22
- package/pipeline/eval/triage/09-cascading-finding/notes.md +0 -9
- package/pipeline/eval/triage/10-deferred-crossref/expected.json +0 -18
- package/pipeline/eval/triage/10-deferred-crossref/input.json +0 -14
- package/pipeline/eval/triage/10-deferred-crossref/notes.md +0 -9
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +0 -27
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +0 -22
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +0 -14
- package/pipeline/eval/triage/README.md +0 -54
- package/pipeline/scripts/benchmark-phase-0.sh +0 -128
- package/pipeline/scripts/check-md-links.mjs +0 -84
- package/pipeline/scripts/eval-golden-tasks-live.mjs +0 -297
- package/pipeline/scripts/eval-golden-tasks.mjs +0 -212
- package/pipeline/scripts/eval-intent.mjs +0 -103
- package/pipeline/scripts/eval-mine-corpus.mjs +0 -201
- package/pipeline/scripts/eval-triage.mjs +0 -171
- package/pipeline/scripts/fixtures/diff-risk-android.diff +0 -40
- package/pipeline/scripts/fixtures/diff-risk-ios.diff +0 -48
- package/pipeline/scripts/fixtures/diff-risk-test-removal.diff +0 -40
- package/pipeline/scripts/fixtures/install-layout.tsv +0 -19
- package/pipeline/scripts/fixtures/pack-expected-count.txt +0 -1
- package/pipeline/scripts/fixtures/test-gap-node.diff +0 -30
- package/pipeline/scripts/fixtures/test-gap-python.diff +0 -32
- package/pipeline/scripts/lint-mcp-refs.mjs +0 -207
- package/pipeline/scripts/lint-skills.mjs +0 -143
- package/pipeline/scripts/run-smokes.mjs +0 -76
- package/pipeline/scripts/smoke-add-detail.sh +0 -137
- package/pipeline/scripts/smoke-agent-guard.sh +0 -74
- package/pipeline/scripts/smoke-agent-log-cost.sh +0 -262
- package/pipeline/scripts/smoke-agent-model-routing.sh +0 -87
- package/pipeline/scripts/smoke-ask-choice.sh +0 -42
- package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +0 -36
- package/pipeline/scripts/smoke-bitbucket-contract.sh +0 -255
- package/pipeline/scripts/smoke-changelog-version.sh +0 -47
- package/pipeline/scripts/smoke-channels-approval-gate.sh +0 -60
- package/pipeline/scripts/smoke-channels-flow.sh +0 -130
- package/pipeline/scripts/smoke-ci-workflows.sh +0 -88
- package/pipeline/scripts/smoke-clarify.sh +0 -148
- package/pipeline/scripts/smoke-command-inventory.sh +0 -81
- package/pipeline/scripts/smoke-commands-skills-parity.sh +0 -87
- package/pipeline/scripts/smoke-community-gates.sh +0 -75
- package/pipeline/scripts/smoke-compliance-skills.sh +0 -119
- package/pipeline/scripts/smoke-config-hygiene.sh +0 -58
- package/pipeline/scripts/smoke-cost-budget.sh +0 -70
- package/pipeline/scripts/smoke-cost-summary.sh +0 -139
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +0 -128
- package/pipeline/scripts/smoke-description-tr.sh +0 -82
- package/pipeline/scripts/smoke-dev-critic.sh +0 -144
- package/pipeline/scripts/smoke-diff-explain.sh +0 -147
- package/pipeline/scripts/smoke-diff-risk.sh +0 -190
- package/pipeline/scripts/smoke-dynamic-skill-loading.sh +0 -160
- package/pipeline/scripts/smoke-eval-live.sh +0 -136
- package/pipeline/scripts/smoke-evidence-gate.sh +0 -93
- package/pipeline/scripts/smoke-extract-conventions.sh +0 -163
- package/pipeline/scripts/smoke-fetchers-offline.sh +0 -448
- package/pipeline/scripts/smoke-figma-dispatch.sh +0 -112
- package/pipeline/scripts/smoke-gate-hooks.sh +0 -74
- package/pipeline/scripts/smoke-gc-tmp.sh +0 -130
- package/pipeline/scripts/smoke-gc-worktrees.sh +0 -125
- package/pipeline/scripts/smoke-generate-issue.sh +0 -120
- package/pipeline/scripts/smoke-handoff-contract.sh +0 -92
- package/pipeline/scripts/smoke-identity-isolation.sh +0 -70
- package/pipeline/scripts/smoke-install-layout.sh +0 -248
- package/pipeline/scripts/smoke-intent-guard.sh +0 -86
- package/pipeline/scripts/smoke-issue-comment-template.sh +0 -86
- package/pipeline/scripts/smoke-issue-jira-triad.sh +0 -120
- package/pipeline/scripts/smoke-keychain.sh +0 -158
- package/pipeline/scripts/smoke-language-axis.sh +0 -109
- package/pipeline/scripts/smoke-learning-curve.sh +0 -61
- package/pipeline/scripts/smoke-learnings-ledger.sh +0 -86
- package/pipeline/scripts/smoke-lib-scripts.sh +0 -448
- package/pipeline/scripts/smoke-mcp-gate.sh +0 -68
- package/pipeline/scripts/smoke-md-links.sh +0 -8
- package/pipeline/scripts/smoke-md2confluence.sh +0 -126
- package/pipeline/scripts/smoke-metrics-cache-ratio.sh +0 -72
- package/pipeline/scripts/smoke-migrate-state.sh +0 -102
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +0 -161
- package/pipeline/scripts/smoke-model-fallback.sh +0 -89
- package/pipeline/scripts/smoke-multi-repo-integration.sh +0 -116
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +0 -61
- package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +0 -115
- package/pipeline/scripts/smoke-no-token-prompt.sh +0 -85
- package/pipeline/scripts/smoke-pack-contents.sh +0 -140
- package/pipeline/scripts/smoke-pat-audit.sh +0 -128
- package/pipeline/scripts/smoke-per-repo-memory.sh +0 -156
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +0 -170
- package/pipeline/scripts/smoke-phase-6-multi.sh +0 -79
- package/pipeline/scripts/smoke-phase-banner.sh +0 -101
- package/pipeline/scripts/smoke-phase-tracker.sh +0 -324
- package/pipeline/scripts/smoke-phase0-bridge-contract.sh +0 -241
- package/pipeline/scripts/smoke-phase4-gates.sh +0 -45
- package/pipeline/scripts/smoke-phase4-triage.sh +0 -229
- package/pipeline/scripts/smoke-plan-approval-gate.sh +0 -71
- package/pipeline/scripts/smoke-plan-safety.sh +0 -139
- package/pipeline/scripts/smoke-plan-todos.sh +0 -196
- package/pipeline/scripts/smoke-plugin-validate.sh +0 -64
- package/pipeline/scripts/smoke-pr-review-actions.sh +0 -152
- package/pipeline/scripts/smoke-pre-commit.sh +0 -170
- package/pipeline/scripts/smoke-pref-migration.sh +0 -226
- package/pipeline/scripts/smoke-prefs-language.sh +0 -134
- package/pipeline/scripts/smoke-progress-contract.sh +0 -127
- package/pipeline/scripts/smoke-prune-logs.sh +0 -137
- package/pipeline/scripts/smoke-purge.sh +0 -138
- package/pipeline/scripts/smoke-push-retry.sh +0 -75
- package/pipeline/scripts/smoke-repo-map.sh +0 -300
- package/pipeline/scripts/smoke-review-readiness.sh +0 -92
- package/pipeline/scripts/smoke-review-watch.sh +0 -146
- package/pipeline/scripts/smoke-routines.sh +0 -84
- package/pipeline/scripts/smoke-run-aggregator.sh +0 -216
- package/pipeline/scripts/smoke-run-metrics.sh +0 -50
- package/pipeline/scripts/smoke-search.sh +0 -187
- package/pipeline/scripts/smoke-shadow-git.sh +0 -224
- package/pipeline/scripts/smoke-skill-authoring.sh +0 -137
- package/pipeline/scripts/smoke-skill-language.sh +0 -83
- package/pipeline/scripts/smoke-skill-manifest.sh +0 -138
- package/pipeline/scripts/smoke-skill-scan.sh +0 -198
- package/pipeline/scripts/smoke-source-parity.sh +0 -85
- package/pipeline/scripts/smoke-subagent-validators.sh +0 -108
- package/pipeline/scripts/smoke-sync-parity.sh +0 -92
- package/pipeline/scripts/smoke-tasklist-ordering.sh +0 -112
- package/pipeline/scripts/smoke-telemetry.sh +0 -147
- package/pipeline/scripts/smoke-test-gap.sh +0 -183
- package/pipeline/scripts/smoke-token-budget.sh +0 -67
- package/pipeline/scripts/smoke-token-preflight.sh +0 -82
- package/pipeline/scripts/smoke-tracker-contract.sh +0 -191
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +0 -73
- package/pipeline/scripts/smoke-triage-memory.sh +0 -174
- package/pipeline/scripts/smoke-update-check.sh +0 -135
- package/pipeline/scripts/smoke-url-enrichment.sh +0 -70
- package/pipeline/scripts/smoke-validate-analysis-doc.sh +0 -161
- package/pipeline/scripts/smoke-validator-contradiction.sh +0 -67
- package/pipeline/scripts/smoke-validator-gates.sh +0 -164
- package/pipeline/scripts/smoke-vercel-deploy-redact.sh +0 -129
- package/pipeline/scripts/smoke-verify-by-test.sh +0 -148
- package/pipeline/scripts/smoke-wiki-integration.sh +0 -122
- package/pipeline/scripts/smoke-work-summary.sh +0 -163
- package/pipeline/scripts/smoke-workflow-audit.sh +0 -69
- package/pipeline/scripts/smoke-worktree-path-convention.sh +0 -86
- package/pipeline/scripts/smoke-wrapper-preservation.sh +0 -68
- package/pipeline/scripts/smoke-write-state.sh +0 -115
- package/pipeline/scripts/sync-parity-check.sh +0 -135
- package/pipeline/scripts/test-gap-rules/android.json +0 -25
- package/pipeline/scripts/test-gap-rules/ios.json +0 -29
- package/pipeline/scripts/test-gap-rules/node.json +0 -17
- package/pipeline/scripts/test-gap-rules/python.json +0 -19
- package/pipeline/scripts/validate-schemas.mjs +0 -88
package/install/copilot.mjs
CHANGED
|
@@ -8,13 +8,7 @@
|
|
|
8
8
|
* @module install/copilot
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import {
|
|
12
|
-
existsSync,
|
|
13
|
-
mkdirSync,
|
|
14
|
-
readdirSync,
|
|
15
|
-
readFileSync,
|
|
16
|
-
rmSync,
|
|
17
|
-
} from "fs";
|
|
11
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync } from "fs";
|
|
18
12
|
import { join } from "path";
|
|
19
13
|
|
|
20
14
|
import {
|
|
@@ -29,7 +23,7 @@ import {
|
|
|
29
23
|
writeFile,
|
|
30
24
|
} from "./_common.mjs";
|
|
31
25
|
import { copyExternalSkillsFiltered } from "./_platform-filter.mjs";
|
|
32
|
-
import { DEV_ONLY_SCRIPTS } from "./_dev-only-files.mjs";
|
|
26
|
+
import { DEV_ONLY_SCRIPTS, countDevOnlyFiles } from "./_dev-only-files.mjs";
|
|
33
27
|
import { generateCopilotInstructions } from "./_copilot-instructions.mjs";
|
|
34
28
|
|
|
35
29
|
/**
|
|
@@ -72,8 +66,7 @@ export const INSTRUCTIONS_START_MARKER = "# Multi-Agent Development Pipeline";
|
|
|
72
66
|
* pipeline section survives. Pre-marker files fall back to
|
|
73
67
|
* `legacyTrailingContent` bounding.
|
|
74
68
|
*/
|
|
75
|
-
export const INSTRUCTIONS_END_MARKER =
|
|
76
|
-
"<!-- multi-agent-pipeline:copilot-instructions:end -->";
|
|
69
|
+
export const INSTRUCTIONS_END_MARKER = "<!-- multi-agent-pipeline:copilot-instructions:end -->";
|
|
77
70
|
|
|
78
71
|
/**
|
|
79
72
|
* Legacy files (written before the end marker existed) have no explicit
|
|
@@ -101,8 +94,7 @@ export function legacyTrailingContent(section) {
|
|
|
101
94
|
|
|
102
95
|
function writeInstructionsFile(path) {
|
|
103
96
|
const pipelineSection = generateCopilotInstructions();
|
|
104
|
-
const managedBlock =
|
|
105
|
-
pipelineSection.trimEnd() + "\n\n" + INSTRUCTIONS_END_MARKER + "\n";
|
|
97
|
+
const managedBlock = pipelineSection.trimEnd() + "\n\n" + INSTRUCTIONS_END_MARKER + "\n";
|
|
106
98
|
|
|
107
99
|
if (!existsSync(path)) {
|
|
108
100
|
writeFile(path, managedBlock);
|
|
@@ -118,7 +110,7 @@ function writeInstructionsFile(path) {
|
|
|
118
110
|
// Orchestrator", "## Instruction Sync") were written by older install
|
|
119
111
|
// scripts and now contradict the current generator output.
|
|
120
112
|
//
|
|
121
|
-
// Match strategy: end at EXPLICIT next-section markers
|
|
113
|
+
// Match strategy: end at EXPLICIT next-section markers - either the
|
|
122
114
|
// pipeline marker itself, or a known user-preserved heading. Using a
|
|
123
115
|
// generic `\n## ` sentinel is unsafe because bash code fences inside the
|
|
124
116
|
// body contain lines like `# Personal repos` which would be mistaken for
|
|
@@ -128,9 +120,7 @@ function writeInstructionsFile(path) {
|
|
|
128
120
|
const orchestratorRe = new RegExp(
|
|
129
121
|
"\\n---\\n+## Multi-Agent Task Orchestrator[\\s\\S]*?" + nextSectionEnd,
|
|
130
122
|
);
|
|
131
|
-
const instructionSyncRe = new RegExp(
|
|
132
|
-
"\\n---\\n+## Instruction Sync[\\s\\S]*?" + nextSectionEnd,
|
|
133
|
-
);
|
|
123
|
+
const instructionSyncRe = new RegExp("\\n---\\n+## Instruction Sync[\\s\\S]*?" + nextSectionEnd);
|
|
134
124
|
|
|
135
125
|
let cleaned = false;
|
|
136
126
|
if (orchestratorRe.test(existing)) {
|
|
@@ -176,14 +166,12 @@ function installScripts(pipelineSrc, dest, useSymlinks) {
|
|
|
176
166
|
if (!useSymlinks) ensureRealDir(dest);
|
|
177
167
|
wipeDir(dest);
|
|
178
168
|
copyDir(scriptsSrc, dest, { exclude: DEV_ONLY_SCRIPTS, useSymlinks });
|
|
179
|
-
// Count files actually excluded
|
|
180
|
-
//
|
|
181
|
-
//
|
|
182
|
-
const excludedCount =
|
|
169
|
+
// Count files actually excluded by walking the tree: DEV_ONLY_SCRIPTS mixes
|
|
170
|
+
// literal names, whole directories, and regexes (the maintainer-smoke rule),
|
|
171
|
+
// so summing countFiles() over the array reported 0 for every regex entry.
|
|
172
|
+
const excludedCount = countDevOnlyFiles(scriptsSrc);
|
|
183
173
|
const scriptCount = countFiles(scriptsSrc) - excludedCount;
|
|
184
|
-
console.log(
|
|
185
|
-
` -> ${scriptCount} files copied to ${dest} (${excludedCount} dev-only excluded)`,
|
|
186
|
-
);
|
|
174
|
+
console.log(` -> ${scriptCount} files copied to ${dest} (${excludedCount} dev-only excluded)`);
|
|
187
175
|
}
|
|
188
176
|
|
|
189
177
|
function installAgents(pipelineSrc, dest, useSymlinks) {
|
package/install/index.mjs
CHANGED
|
@@ -39,18 +39,12 @@ export async function runInstall(argv) {
|
|
|
39
39
|
process.exit(1);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
// Parse flags
|
|
42
|
+
// Parse flags - tolerate both invocation styles:
|
|
43
43
|
// `node install.js --all` (direct, argv[2]="--all")
|
|
44
44
|
// `multi-agent-pipeline install --all` (via bin, argv[2]="install")
|
|
45
45
|
const flags = argv.slice(2).filter((a) => a !== "install");
|
|
46
46
|
|
|
47
|
-
const KNOWN_FLAGS = [
|
|
48
|
-
...TOOL_FLAGS,
|
|
49
|
-
"--all",
|
|
50
|
-
"--link",
|
|
51
|
-
"--index-only",
|
|
52
|
-
"--dry-run",
|
|
53
|
-
];
|
|
47
|
+
const KNOWN_FLAGS = [...TOOL_FLAGS, "--all", "--link", "--index-only", "--dry-run"];
|
|
54
48
|
const KNOWN_PREFIXES = ["--target=", "--platform="];
|
|
55
49
|
const unknown = flags.filter(
|
|
56
50
|
(f) =>
|
|
@@ -69,11 +63,9 @@ export async function runInstall(argv) {
|
|
|
69
63
|
const dryRun = flags.includes("--dry-run");
|
|
70
64
|
setDryRun(dryRun);
|
|
71
65
|
|
|
72
|
-
const isExplicitlyTargeted =
|
|
73
|
-
flags.some((f) => TOOL_FLAGS.includes(f)) || flags.includes("--all");
|
|
66
|
+
const isExplicitlyTargeted = flags.some((f) => TOOL_FLAGS.includes(f)) || flags.includes("--all");
|
|
74
67
|
|
|
75
|
-
const forClaude =
|
|
76
|
-
flags.includes("--claude") || flags.includes("--all") || !isExplicitlyTargeted;
|
|
68
|
+
const forClaude = flags.includes("--claude") || flags.includes("--all") || !isExplicitlyTargeted;
|
|
77
69
|
|
|
78
70
|
const forCopilot = flags.includes("--copilot") || flags.includes("--all");
|
|
79
71
|
|
|
@@ -104,7 +96,7 @@ export async function runInstall(argv) {
|
|
|
104
96
|
|
|
105
97
|
if (dryRun) {
|
|
106
98
|
console.log("");
|
|
107
|
-
console.log(" Dry-run complete
|
|
99
|
+
console.log(" Dry-run complete - nothing was written. Re-run without --dry-run to install.");
|
|
108
100
|
console.log("");
|
|
109
101
|
return;
|
|
110
102
|
}
|
|
@@ -151,7 +143,7 @@ function parsePlatformFlag(flags) {
|
|
|
151
143
|
const value = raw.slice("--platform=".length).toLowerCase();
|
|
152
144
|
if (value === "ios" || value === "android" || value === "all") return value;
|
|
153
145
|
console.error(
|
|
154
|
-
` [warn] unrecognized --platform value: "${value}"
|
|
146
|
+
` [warn] unrecognized --platform value: "${value}" - falling back to "all". ` +
|
|
155
147
|
`Accepted: ios | android | all.`,
|
|
156
148
|
);
|
|
157
149
|
return "all";
|
|
@@ -173,7 +165,7 @@ function printSummary(opts) {
|
|
|
173
165
|
if (forCopilot) {
|
|
174
166
|
console.log(" Copilot CLI:");
|
|
175
167
|
console.log(" Pipeline instructions loaded into ~/.copilot/copilot-instructions.md");
|
|
176
|
-
console.log(" Just describe your task
|
|
168
|
+
console.log(" Just describe your task - Copilot will follow the pipeline");
|
|
177
169
|
console.log("");
|
|
178
170
|
}
|
|
179
171
|
|
|
@@ -8,20 +8,20 @@
|
|
|
8
8
|
|
|
9
9
|
8-phase development workflow (Phase 0 through Phase 7). Describe your task and follow the phases:
|
|
10
10
|
|
|
11
|
-
0. **Init**
|
|
12
|
-
1. **Analysis**
|
|
13
|
-
2. **Planning**
|
|
14
|
-
3. **Dev**
|
|
15
|
-
4. **Review**
|
|
11
|
+
0. **Init** - Project setup, worktree, branch creation, identity binding
|
|
12
|
+
1. **Analysis** - Stack detection, codebase exploration
|
|
13
|
+
2. **Planning** - Task decomposition, architecture review, user approval
|
|
14
|
+
3. **Dev** - TDD cycle: test -> code -> build
|
|
15
|
+
4. **Review** - Deterministic gates + CLI-aware parallel review + Opus triage.
|
|
16
16
|
Copilot CLI dispatches **3 reviewers in parallel**: GPT-5.4 (edge cases +
|
|
17
17
|
cross-provider diversity) + Opus (security + architecture) + Sonnet (quality +
|
|
18
18
|
correctness). Findings flow into an Opus triage pass that filters false-positives
|
|
19
19
|
and out-of-scope items before looping back to Phase 3. Claude Code drops GPT-5.4
|
|
20
|
-
(not natively reachable there) and runs a 2-model set
|
|
20
|
+
(not natively reachable there) and runs a 2-model set - this is the only
|
|
21
21
|
intentional cross-CLI asymmetry for Phase 4.
|
|
22
|
-
5. **Test**
|
|
23
|
-
6. **Commit**
|
|
24
|
-
7. **Report**
|
|
22
|
+
5. **Test** - Optional manual testing + on-demand device audits
|
|
23
|
+
6. **Commit** - Secret scan · commit · push · PR creation
|
|
24
|
+
7. **Report** - Jira comment · Wiki + Figma screenshots · Confluence · log · knowledge + memory
|
|
25
25
|
|
|
26
26
|
## Modes
|
|
27
27
|
|
|
@@ -29,21 +29,21 @@
|
|
|
29
29
|
- **Fast (multi-agent-dev)**: Init -> Dev(Opus) -> Commit -> Report
|
|
30
30
|
- **Autopilot (multi-agent-autopilot)**: Skip confirmations, auto commit/PR
|
|
31
31
|
- **Fastest (multi-agent-dev-autopilot)**: Combine dev + autopilot
|
|
32
|
-
- **Local (multi-agent-local)**: Full 8 phases on current branch
|
|
33
|
-
- **Fast + Local (multi-agent-dev-local)**: Dev on current branch
|
|
32
|
+
- **Local (multi-agent-local)**: Full 8 phases on current branch - no worktree
|
|
33
|
+
- **Fast + Local (multi-agent-dev-local)**: Dev on current branch - no worktree
|
|
34
34
|
- **Fastest + Local (multi-agent-dev-local-autopilot)**: Dev + autopilot, no worktree
|
|
35
35
|
|
|
36
36
|
## Prompt Language (en/tr)
|
|
37
37
|
|
|
38
38
|
The pipeline honors `prefs.global.promptLanguage` (set via `/multi-agent:setup` or
|
|
39
39
|
`/multi-agent:language en|tr`). This controls the language of **interactive prompts
|
|
40
|
-
only**
|
|
40
|
+
only** - e.g. the Phase 6 pre-commit local-checkout test prompt, Plan Approval Gate
|
|
41
41
|
questions, multi-repo branch picker labels, and phase-banner.sh banners (when
|
|
42
42
|
PHASE_LANG env is unset, it auto-reads prefs).
|
|
43
43
|
|
|
44
44
|
Default: `en`. Supported: `en`, `tr`. Commit messages, PR bodies, Jira comments,
|
|
45
45
|
and any external-facing payload **always stay in English** regardless of this
|
|
46
|
-
setting
|
|
46
|
+
setting - only the user-facing prompts change.
|
|
47
47
|
|
|
48
48
|
When writing TR prompts, use the same keyword/menu numbers as EN (e.g. `[1-4]`)
|
|
49
49
|
so the user's input pattern stays language-agnostic.
|
|
@@ -51,7 +51,7 @@ so the user's input pattern stays language-agnostic.
|
|
|
51
51
|
## Sub-Agent Personas
|
|
52
52
|
|
|
53
53
|
Phase 1 (Analysis) and Phase 4 (Review) dispatch sub-agents for parallel exploration
|
|
54
|
-
and review. The persona prompts live at `~/.copilot/agents/*.md`
|
|
54
|
+
and review. The persona prompts live at `~/.copilot/agents/*.md` - installed by the
|
|
55
55
|
pipeline installer alongside the Claude Code equivalents at `~/.claude/agents/`.
|
|
56
56
|
|
|
57
57
|
| Agent | File | Used in |
|
|
@@ -63,37 +63,37 @@ pipeline installer alongside the Claude Code equivalents at `~/.claude/agents/`.
|
|
|
63
63
|
| Backend Architect | `~/.copilot/agents/backend-architect.md` | Phase 4 API/backend review |
|
|
64
64
|
| Security Auditor | `~/.copilot/agents/security-auditor.md` | Phase 4 security audit (OWASP-based) |
|
|
65
65
|
|
|
66
|
-
Load the matching persona file before dispatching each reviewer
|
|
66
|
+
Load the matching persona file before dispatching each reviewer - the prompt defines
|
|
67
67
|
the model's focus area, severity rubric, and output format the triage pass expects.
|
|
68
68
|
|
|
69
|
-
## Phase 0
|
|
69
|
+
## Phase 0 - Interactive Steps (required)
|
|
70
70
|
|
|
71
71
|
The orchestrator skill (`multi-agent/SKILL.md`) shows a condensed Phase 0 for brevity,
|
|
72
72
|
but the actual contract is **8 interactive steps** from `refs/phases/phase-0-init.md`.
|
|
73
73
|
Copilot CLI has no slash-command infrastructure to auto-route through the full ref file,
|
|
74
74
|
so execute ALL of these explicitly before touching code:
|
|
75
75
|
|
|
76
|
-
1. **Bootstrap tracker**
|
|
77
|
-
2. **Load prefs**
|
|
78
|
-
3. **Parse input**
|
|
79
|
-
4. **Select project(s)
|
|
76
|
+
1. **Bootstrap tracker** - `bash ~/.copilot/scripts/phase-tracker.sh init 8` (once, before Step 0)
|
|
77
|
+
2. **Load prefs** - read `~/.claude/multi-agent-preferences.json`; warn + stop if setup never ran
|
|
78
|
+
3. **Parse input** - classify (Jira ID, GitHub URL, free-text) + fetch issue via `gh` / Jira API
|
|
79
|
+
4. **Select project(s) - single OR multi-repo** - scan `$HOME`, present numbered list,
|
|
80
80
|
honor `global.recentProjects`. Picker accepts space-separated numbers (`1 3 4`) for
|
|
81
81
|
multi-select. Surface `global.recentGroups` at top of list. Component/refactor tasks
|
|
82
82
|
commonly span repos (component repo + consumer app). **Never auto-pick one repo when
|
|
83
|
-
the task could touch more than one**
|
|
84
|
-
5. **Pick base branch
|
|
83
|
+
the task could touch more than one** - ask user to confirm single vs multi.
|
|
84
|
+
5. **Pick base branch - PER REPO** - REQUIRED INTERACTIVE STEP. Single repo: run
|
|
85
85
|
`git ls-remote --heads origin` on that repo, present sorted list (develop* / release/*
|
|
86
86
|
/ main/master first), suggest top of `global.recentBranches[{projectKey}]`.
|
|
87
|
-
**Multiple repos selected: fire the branch picker SEPARATELY for each repo**
|
|
87
|
+
**Multiple repos selected: fire the branch picker SEPARATELY for each repo** -
|
|
88
88
|
per phase-0-init.md the prompt fires per-repo, because different repos often have
|
|
89
89
|
different base branches (e.g. component repo on `iteration/develop`, consumer app on
|
|
90
90
|
`develop`). Skip the picker ONLY if user's input explicitly specified a branch.
|
|
91
|
-
6. **Branch name confirm**
|
|
91
|
+
6. **Branch name confirm** - `feature/PROJ-{id}-{kebab}` or `bugfix/...`. In multi-repo
|
|
92
92
|
mode, branch name is shared across all selected repos (collision check per-repo;
|
|
93
93
|
any collision applies the suffix to all, keeping cross-repo uniformity).
|
|
94
|
-
7. **Git identity
|
|
94
|
+
7. **Git identity - per repo** - route via `prefs.global.platformIdentityRouting`;
|
|
95
95
|
resolves independently for each repo in multi-repo mode.
|
|
96
|
-
8. **Workspace creation
|
|
96
|
+
8. **Workspace creation - serially per repo** - detect `.instructions/figma/` etc.;
|
|
97
97
|
in multi-repo mode loop worktree creation per repo serially; any failure rolls back
|
|
98
98
|
previously-created worktrees (no partial state). Write `agent-state.json` with
|
|
99
99
|
`state.projects[]` array; scalar `project`/`projectRoot`/`branch` mirror `projects[0]`
|
|
@@ -104,19 +104,19 @@ https://github.com/mmerterden/multi-agent-pipeline/blob/main/pipeline/multi-agen
|
|
|
104
104
|
or, on machines with Claude Code also installed:
|
|
105
105
|
`~/.claude/multi-agent-refs/phases/phase-0-init.md`
|
|
106
106
|
|
|
107
|
-
## Progress Tracking
|
|
107
|
+
## Progress Tracking - required
|
|
108
108
|
|
|
109
109
|
Every phase boundary MUST call the cross-CLI tracker. The tracker is the single source of truth
|
|
110
110
|
for user-visible phase progress on Copilot CLI (no TaskCreate native UI here). Banner is optional flair.
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
|
-
# Bootstrap once at Phase 0 start
|
|
113
|
+
# Bootstrap once at Phase 0 start - initialize all 8 phase tiles:
|
|
114
114
|
bash ~/.copilot/scripts/phase-tracker.sh init "$TASK_ID"
|
|
115
115
|
for p in 0:Init 1:Analysis 2:Planning 3:Dev 4:Review 5:Test 6:Commit 7:Report; do
|
|
116
116
|
bash ~/.copilot/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
|
|
117
117
|
done
|
|
118
118
|
|
|
119
|
-
# At each phase boundary
|
|
119
|
+
# At each phase boundary - update status. Tracker stamps started_at on first
|
|
120
120
|
# transition to in_progress, completed_at on terminal status (completed/failed/skipped).
|
|
121
121
|
# Render now shows a 16-char ASCII progress bar + elapsed time + per-phase token
|
|
122
122
|
# usage + Total footer (v5.5.0):
|
|
@@ -128,16 +128,16 @@ bash ~/.copilot/scripts/phase-tracker.sh update <N> completed # or failed / s
|
|
|
128
128
|
# After every LLM dispatch, record its token cost against the active phase (v5.5.0):
|
|
129
129
|
bash ~/.copilot/scripts/phase-tracker.sh tokens <N> <input_tokens> <output_tokens>
|
|
130
130
|
|
|
131
|
-
# v8.3+
|
|
131
|
+
# v8.3+ - single-call-site token forwarder (preferred). Mirrors tokens_in/out/model
|
|
132
132
|
# into both metrics.jsonl AND the phase tracker, so the agent-log Cost Breakdown
|
|
133
133
|
# stays in sync without two calls. Best-effort.
|
|
134
134
|
LOG_METRIC_FORWARD_TO_TRACKER=1 bash ~/.copilot/scripts/log-metric.sh "$TASK_ID" <N> <event> \
|
|
135
135
|
model=<opus|sonnet|haiku|gpt-5.4> tokens_in=$IN tokens_out=$OUT duration_ms=$DUR
|
|
136
136
|
|
|
137
|
-
# v8.3+
|
|
137
|
+
# v8.3+ - phase model tag (used by render-agent-log-cost.sh):
|
|
138
138
|
bash ~/.copilot/scripts/phase-tracker.sh model <N> <opus|sonnet|haiku|gpt-5.4>
|
|
139
139
|
|
|
140
|
-
# Phase 7 sub-step enforcement (v5.4.1)
|
|
140
|
+
# Phase 7 sub-step enforcement (v5.4.1) - register all 5 steps up front so
|
|
141
141
|
# wiki/confluence skips are VISIBLE, not silent. User reported prior silent-skip
|
|
142
142
|
# behaviour losing visibility of component wiki generation:
|
|
143
143
|
bash ~/.copilot/scripts/phase-tracker.sh update 7 in_progress
|
|
@@ -145,7 +145,7 @@ for s in 1:Jira-Comment 2:Wiki+Figma 3:Confluence 4:Log+Telemetry 5:Knowledge+Me
|
|
|
145
145
|
bash ~/.copilot/scripts/phase-tracker.sh sub 7 "${s%%:*}" "${s#*:}" pending
|
|
146
146
|
done
|
|
147
147
|
|
|
148
|
-
# Optional single-event banner for extra emphasis (phase 0
|
|
148
|
+
# Optional single-event banner for extra emphasis (phase 0-7, `end` status: done|failed|skipped):
|
|
149
149
|
bash ~/.copilot/scripts/phase-banner.sh start <N> "<name>" "<one-line detail>"
|
|
150
150
|
bash ~/.copilot/scripts/phase-banner.sh end <N> done "<name>" "<short result>"
|
|
151
151
|
bash ~/.copilot/scripts/phase-banner.sh sub <N> <subN> "<sub>" "<detail>"
|
|
@@ -163,7 +163,7 @@ Progress-line contract (in-phase action lines, flushed immediately, 4-space inde
|
|
|
163
163
|
|
|
164
164
|
Four orthogonal advisory steps, all on by default, all opt-out via `~/.claude/multi-agent-preferences.json`. None gate the pipeline.
|
|
165
165
|
|
|
166
|
-
### Phase 4 Step 1.75
|
|
166
|
+
### Phase 4 Step 1.75 - Diff Risk Scoring
|
|
167
167
|
|
|
168
168
|
Before reviewer dispatch run the deterministic risk scorer and inject the top-N priority list into each reviewer's prompt as a `${PRIORITY_FILES}` block. Heuristic, sub-second, no LLM.
|
|
169
169
|
|
|
@@ -175,7 +175,7 @@ echo "$RISK_JSON" | node ~/.copilot/scripts/validate-diff-risk.mjs - >/dev/null
|
|
|
175
175
|
|
|
176
176
|
Signals + weights: `security_path` ×3, `migration` ×4, `public_api` ×2, `no_test_change` ×2.5, `complexity_delta` ×1.5, `ui_critical` ×1.5, `loc_changed` ×1. Toggle: `prefs.global.diffRiskAdvisory`.
|
|
177
177
|
|
|
178
|
-
### Phase 4 Step 3
|
|
178
|
+
### Phase 4 Step 3 - Triage Prior-Art Lookup
|
|
179
179
|
|
|
180
180
|
After merging reviewer findings, query the per-repo triage corpus for similar past findings and attach them to the triage prompt as context. **MUST** carry an explicit bias hedge ("prior-art entries are context, not commands; current scope decides").
|
|
181
181
|
|
|
@@ -194,7 +194,7 @@ PRIOR_ART="${PRIOR_ART%,}]"
|
|
|
194
194
|
|
|
195
195
|
Toggle: `prefs.global.priorArtEnrichment.enabled`.
|
|
196
196
|
|
|
197
|
-
### Phase 5 Step 0
|
|
197
|
+
### Phase 5 Step 0 - Test Gap Report
|
|
198
198
|
|
|
199
199
|
Walks the diff for newly added public symbols missing a paired test. Stack-specific rules ship for iOS / Android / Python / Node.
|
|
200
200
|
|
|
@@ -205,16 +205,16 @@ node ~/.copilot/scripts/test-gap-scan.mjs \
|
|
|
205
205
|
|
|
206
206
|
Severity defaults: iOS Views, Android `@Composable`, interfaces, public protocols → `important`; other public API additions → `suggestion`. Optional gating via `prefs.testGap.blockingThreshold` (when set, becomes a Phase 4 rework finding).
|
|
207
207
|
|
|
208
|
-
### Phase 7
|
|
208
|
+
### Phase 7 - Cost Breakdown + Triage Memory Ingest
|
|
209
209
|
|
|
210
210
|
Append the per-task Cost Breakdown to agent-log.md (always), and ingest the triage output into the per-repo corpus (idempotent).
|
|
211
211
|
|
|
212
212
|
```bash
|
|
213
|
-
# Cost block
|
|
213
|
+
# Cost block - best-effort, exit 2 silently skipped:
|
|
214
214
|
COST_BLOCK=$(bash ~/.copilot/scripts/render-agent-log-cost.sh "$TASK_ID" 2>/dev/null) && \
|
|
215
215
|
printf '\n%s\n' "$COST_BLOCK" >> "$AGENT_LOG"
|
|
216
216
|
|
|
217
|
-
# Triage memory ingest
|
|
217
|
+
# Triage memory ingest - idempotent re-runs write 0 rows:
|
|
218
218
|
TRIAGE_PATH="$WORKTREE/triage-output.json"
|
|
219
219
|
if [ -f "$TRIAGE_PATH" ]; then
|
|
220
220
|
node ~/.copilot/scripts/triage-memory.mjs ingest \
|
|
@@ -251,18 +251,18 @@ multi-agent-stack [ios|android|mobile|backend|frontend|fullstack|all]
|
|
|
251
251
|
## UI Bug Hunter
|
|
252
252
|
|
|
253
253
|
For visual testing, use the dev-toolkit MCP server tools:
|
|
254
|
-
- ios_screenshot / android_screenshot
|
|
255
|
-
- ios_tap / android_tap
|
|
256
|
-
- ios_set_appearance
|
|
257
|
-
- ios_get_ui_tree / android_get_ui_tree
|
|
254
|
+
- ios_screenshot / android_screenshot - capture screen
|
|
255
|
+
- ios_tap / android_tap - interact with UI
|
|
256
|
+
- ios_set_appearance - toggle dark mode
|
|
257
|
+
- ios_get_ui_tree / android_get_ui_tree - accessibility tree
|
|
258
258
|
|
|
259
259
|
Requires: @mmerterden/dev-toolkit-mcp MCP server running
|
|
260
260
|
|
|
261
|
-
## Post-Development Integration Build (Multi-Repo)
|
|
261
|
+
## Post-Development Integration Build (Multi-Repo) - required
|
|
262
262
|
|
|
263
263
|
When a task touches multiple repositories that have a producer→consumer dependency
|
|
264
264
|
(e.g. shared codegen library + consuming UI library), the pipeline MUST build the
|
|
265
|
-
**host project** that integrates them after all changes are complete
|
|
265
|
+
**host project** that integrates them after all changes are complete - before commit/PR.
|
|
266
266
|
|
|
267
267
|
### When this applies
|
|
268
268
|
|
|
@@ -270,12 +270,12 @@ When a task touches multiple repositories that have a producer→consumer depend
|
|
|
270
270
|
- Repo B is consumed as a submodule or SPM/Gradle dependency by a host project (Repo C)
|
|
271
271
|
- Changes in Repo A or B can silently break Repo C if key structures diverge (e.g. nested enum vs flat access pattern)
|
|
272
272
|
|
|
273
|
-
### Required steps (Phase 6 · Step 0
|
|
273
|
+
### Required steps (Phase 6 · Step 0 - before pre-commit checkout)
|
|
274
274
|
|
|
275
|
-
1. **Identify the host project**
|
|
276
|
-
2. **Update submodules**
|
|
277
|
-
3. **Resolve package dependencies**
|
|
278
|
-
4. **Build the host scheme/module**
|
|
275
|
+
1. **Identify the host project** - check `prefs.global.multiRepoIntegrationHosts` for a matching `repoSet` combo. If no match, ASK the user once (record the answer to skip re-asking); autopilot refuses to prompt, skips visibly.
|
|
276
|
+
2. **Update submodules** - refresh each listed submodule path inside `hostPath` to pick up this task's feature branch / merged commits.
|
|
277
|
+
3. **Resolve package dependencies** - flush stale SPM/Gradle/CocoaPods cache.
|
|
278
|
+
4. **Build the host scheme/module** - capture error lines from stderr.
|
|
279
279
|
5. **Evaluate**:
|
|
280
280
|
- Zero new errors → sub-step `completed`, proceed to commit/PR.
|
|
281
281
|
- New errors from our changes → sub-step `failed`, STOP. Offer: return to Phase 3 for auto-fix / pause for manual fix / override with warning.
|
|
@@ -286,12 +286,12 @@ When a task touches multiple repositories that have a producer→consumer depend
|
|
|
286
286
|
Codegen mismatches only surface when the full dependency chain builds together. Building repos in
|
|
287
287
|
isolation gives false confidence. Skipping this step has caused post-merge build failures that required
|
|
288
288
|
additional fix PRs and wasted review cycles. The pipeline **learns** each combo's host project on first
|
|
289
|
-
encounter and auto-applies on subsequent runs
|
|
289
|
+
encounter and auto-applies on subsequent runs - no repeated configuration.
|
|
290
290
|
|
|
291
291
|
### Tracker integration
|
|
292
292
|
|
|
293
293
|
```bash
|
|
294
|
-
# Phase 6 entry
|
|
294
|
+
# Phase 6 entry - if multi-repo, register the integration-build sub-step:
|
|
295
295
|
if [ "$(jq '.projects | length' "$STATE_FILE")" -ge 2 ]; then
|
|
296
296
|
bash ~/.copilot/scripts/phase-tracker.sh sub 6 0 "Integration build" in_progress
|
|
297
297
|
# ... run the build per refs/multi-repo-integration-build.md ...
|
|
@@ -305,7 +305,7 @@ Full contract: `~/.copilot/skills/multi-agent/refs/multi-repo-integration-build.
|
|
|
305
305
|
## Permissions Expectation
|
|
306
306
|
|
|
307
307
|
Copilot CLI reads `~/.copilot/permissions-config.json` for its allowlist. The pipeline
|
|
308
|
-
regularly uses these command groups
|
|
308
|
+
regularly uses these command groups - ensure they are present in `tools.allow` to avoid
|
|
309
309
|
prompt fatigue during long pipeline runs:
|
|
310
310
|
|
|
311
311
|
- Shell basics: `cd`, `ls`, `cat`, `grep`, `find`, `mkdir`, `rm`, `mv`, `cp`
|
|
@@ -316,4 +316,4 @@ prompt fatigue during long pipeline runs:
|
|
|
316
316
|
- Pipeline scripts: `bash` (invokes phase-tracker.sh, phase-banner.sh, etc.)
|
|
317
317
|
|
|
318
318
|
Destructive commands (`rm -rf /`, `git push --force` to main, `chmod 777`) remain in `deny`
|
|
319
|
-
or `ask` by design
|
|
319
|
+
or `ask` by design - do not broaden these.
|
package/install.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* v8.0.0 split the monolithic 1246-LOC installer into focused modules under
|
|
7
7
|
* `install/`. This file remains as the entry point npm exposes via the
|
|
8
8
|
* `multi-agent-pipeline` bin and the `./install` package export, so existing
|
|
9
|
-
* `node install.js
|
|
9
|
+
* `node install.js ...` and `npx multi-agent-pipeline install ...` invocations
|
|
10
10
|
* continue to work without API changes.
|
|
11
11
|
*
|
|
12
12
|
* @module multi-agent-pipeline/install
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.8.0",
|
|
4
4
|
"description": "8-phase AI development pipeline with full orchestration on Claude Code and Copilot CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -14,16 +14,17 @@
|
|
|
14
14
|
},
|
|
15
15
|
"scripts": {
|
|
16
16
|
"start": "node index.js",
|
|
17
|
-
"test": "node --test test/*.test.mjs && node pipeline/scripts/run-smokes.mjs && node pipeline/scripts/lint-skills.mjs && node pipeline/scripts/lint-mcp-refs.mjs && node pipeline/scripts/eval-triage.mjs && node pipeline/scripts/eval-golden-tasks.mjs && node pipeline/scripts/eval-intent.mjs && node pipeline/scripts/validate-schemas.mjs && node pipeline/scripts/validate-prefs.mjs",
|
|
17
|
+
"test": "node --test test/*.test.mjs && node pipeline/scripts/run-smokes.mjs && node pipeline/scripts/lint-skills.mjs && node pipeline/scripts/lint-mcp-refs.mjs && node pipeline/scripts/eval-triage.mjs && node pipeline/scripts/eval-golden-tasks.mjs && node pipeline/scripts/eval-intent.mjs && node pipeline/scripts/validate-schemas.mjs && node pipeline/scripts/validate-prefs.mjs && node pipeline/scripts/scorecard.mjs",
|
|
18
18
|
"test:unit": "node --test test/*.test.mjs",
|
|
19
19
|
"test:smoke": "node pipeline/scripts/run-smokes.mjs",
|
|
20
20
|
"lint:skills": "node pipeline/scripts/lint-skills.mjs",
|
|
21
21
|
"test:quick": "node --test test/*.test.mjs && node pipeline/scripts/lint-skills.mjs && node pipeline/scripts/lint-mcp-refs.mjs",
|
|
22
|
-
"test:coverage": "c8 --
|
|
22
|
+
"test:coverage": "c8 --clean --reporter=none node --test test/*.test.mjs && c8 --clean=false --check-coverage --reporter=text --reporter=lcov node pipeline/scripts/run-smokes.mjs",
|
|
23
23
|
"lint": "eslint .",
|
|
24
24
|
"lint:fix": "eslint . --fix",
|
|
25
|
-
"format": "prettier --write \"**/*.{js,mjs,json,
|
|
26
|
-
"format:check": "prettier --check \"**/*.{js,mjs,json,
|
|
25
|
+
"format": "prettier --write \"**/*.{js,mjs,json,yml}\" --ignore-path .gitignore",
|
|
26
|
+
"format:check": "prettier --check \"**/*.{js,mjs,json,yml}\" --ignore-path .gitignore",
|
|
27
|
+
"scorecard": "node pipeline/scripts/scorecard.mjs"
|
|
27
28
|
},
|
|
28
29
|
"keywords": [
|
|
29
30
|
"multi-agent",
|
|
@@ -51,14 +52,14 @@
|
|
|
51
52
|
},
|
|
52
53
|
"repository": {
|
|
53
54
|
"type": "git",
|
|
54
|
-
"url": "https://github.com/mmerterden/multi-agent-pipeline.git"
|
|
55
|
+
"url": "git+https://github.com/mmerterden/multi-agent-pipeline.git"
|
|
55
56
|
},
|
|
56
57
|
"homepage": "https://github.com/mmerterden/multi-agent-pipeline#readme",
|
|
57
58
|
"bugs": {
|
|
58
59
|
"url": "https://github.com/mmerterden/multi-agent-pipeline/issues"
|
|
59
60
|
},
|
|
60
61
|
"engines": {
|
|
61
|
-
"node": ">=20.
|
|
62
|
+
"node": ">=20.11.0"
|
|
62
63
|
},
|
|
63
64
|
"files": [
|
|
64
65
|
"index.js",
|
|
@@ -74,15 +75,32 @@
|
|
|
74
75
|
"!pipeline/scripts/smoke-personal-data.sh",
|
|
75
76
|
"!pipeline/scripts/validate-prefs.mjs",
|
|
76
77
|
"!pipeline/scripts/smoke-install-leak-gate.sh",
|
|
77
|
-
"!docs/internal/**"
|
|
78
|
+
"!docs/internal/**",
|
|
79
|
+
"!pipeline/scripts/smoke-*.sh",
|
|
80
|
+
"!pipeline/scripts/run-smokes.mjs",
|
|
81
|
+
"!pipeline/scripts/eval-*.mjs",
|
|
82
|
+
"!pipeline/scripts/scorecard.mjs",
|
|
83
|
+
"!pipeline/scripts/lint-skills.mjs",
|
|
84
|
+
"!pipeline/scripts/lint-mcp-refs.mjs",
|
|
85
|
+
"!pipeline/scripts/check-md-links.mjs",
|
|
86
|
+
"!pipeline/scripts/validate-schemas.mjs",
|
|
87
|
+
"!pipeline/scripts/sync-parity-check.sh",
|
|
88
|
+
"!pipeline/scripts/benchmark-phase-0.sh",
|
|
89
|
+
"!pipeline/scripts/fixtures/**",
|
|
90
|
+
"!pipeline/scripts/test-gap-rules/**",
|
|
91
|
+
"!pipeline/eval/**",
|
|
92
|
+
"pipeline/scripts/smoke-schema-validation.sh",
|
|
93
|
+
"pipeline/scripts/smoke-cross-cli-behavior.sh"
|
|
78
94
|
],
|
|
79
95
|
"devDependencies": {
|
|
80
96
|
"@eslint/js": "^10.0.1",
|
|
81
97
|
"ajv": "^8.20.0",
|
|
82
98
|
"ajv-formats": "^3.0.1",
|
|
83
|
-
"c8": "^
|
|
84
|
-
"eslint": "^10.
|
|
99
|
+
"c8": "^12.0.0",
|
|
100
|
+
"eslint": "^10.8.0",
|
|
85
101
|
"eslint-config-prettier": "^10.1.8",
|
|
86
|
-
"
|
|
102
|
+
"eslint-plugin-n": "^18.2.2",
|
|
103
|
+
"prettier": "^3.9.6",
|
|
104
|
+
"publint": "0.3.22"
|
|
87
105
|
}
|
|
88
106
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Task orchestrator - full pipeline via Jira ID + branch or GitHub Issue URL: analysis, plan, TDD development, parallel review + Fable triage (CLI-aware: 2-model on Claude Code, 3-model on Copilot CLI), commit, log"
|
|
2
|
+
description: "Task orchestrator - full pipeline via Jira ID + branch or GitHub Issue URL: analysis, plan, TDD development, parallel review + Fable triage (CLI-aware: 2-model on Claude Code, 3-model on Copilot CLI), commit, log. Use when given a Jira ID, a GitHub issue or a free-text task and the whole pipeline should run."
|
|
3
3
|
description-tr: "Görev orkestratörü - Jira ID + branch veya GitHub Issue URL ile tam pipeline: analiz, plan, TDD geliştirme, paralel review + Fable triyajı (CLI'ya göre: Claude Code'da 2, Copilot CLI'da 3 model), commit, log"
|
|
4
4
|
allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, WebFetch, WebSearch, NotebookEdit, Skill
|
|
5
5
|
---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Standalone feature-spec analysis. Platform-agnostic concept layer with repo-driven convention extraction (Phase 1c) and per-platform Pass B render. 23 main sections + 3 footer in Full mode; 7 sections in Lite mode (auto for small features). Collects Figma / Swagger / Confluence / Jira / Standards (Confluence + Wiki + local file) / Firebase / repo inputs. Stops after emit - does not chain into /multi-agent:dev."
|
|
2
|
+
description: "Standalone feature-spec analysis. Platform-agnostic concept layer with repo-driven convention extraction (Phase 1c) and per-platform Pass B render. 23 main sections + 3 footer in Full mode; 7 sections in Lite mode (auto for small features). Collects Figma / Swagger / Confluence / Jira / Standards (Confluence + Wiki + local file) / Firebase / repo inputs. Stops after emit - does not chain into /multi-agent:dev. Use when a feature needs a written specification before any code, from Figma, Swagger, Confluence, Jira or repo inputs."
|
|
3
3
|
description-tr: "Bağımsız özellik-spesifikasyonu analizi. Repo'dan konvansiyon çıkarımıyla (Faz 1c) platform-bağımsız kavram katmanı ve platform başına Pass B render. Full modda 23 ana + 3 dipnot bölümü; Lite modda 7 bölüm (küçük işlerde otomatik). Figma / Swagger / Confluence / Jira / Standartlar (Confluence + Wiki + yerel dosya) / Firebase / repo girdilerini toplar. Çıktıyı üretince durur - /multi-agent:dev'e zincirlenmez."
|
|
4
4
|
argument-hint: "[\"<analysis-name>\"] [--lite | --full] [--no-cache] [--preview-conventions]"
|
|
5
5
|
---
|
|
@@ -65,7 +65,7 @@ When citing a Locked decision in code or docs, prefer `Locked <n> (<short label>
|
|
|
65
65
|
27. **Evidence digest caches Phase 1b and 1c.** `evidence_digest = sha256(featureName || sorted(platforms) || repoEvidence.summary || conventions.summary)`. When the same feature name is invoked again against the same set of repos and the digest matches, Phase 1b and 1c are skipped and the cached `evidence.repoEvidence` / `evidence.conventions` is reused. Cache TTL is 24 hours; manual invalidation via `--no-cache` flag.
|
|
66
66
|
28. **SwiftUI Preview block mandatory (iOS projection, SwiftUI only).** When the iOS file is produced AND the affected view is a SwiftUI view (detected via `import SwiftUI` + `: View` protocol conformance in `evidence.repoEvidence[<repo>].buckets.uiComponents`), Section 13.6 renders a Preview block table covering at minimum: canonical default (LTR Light), Dark, RTL, Dynamic Type accessibilityLarge, and one error variant. Loading state and edge-case variants are added when distinct from canonical. UIKit-only features (no SwiftUI view artefact) drop Section 13.6 with note `(N/A: UIKit-only feature)`. Preview macro convention (`#Preview` for Swift 5.9+ vs legacy `PreviewProvider`) is read from `evidence.conventions[<repo>].previewMacro`. Each Preview variant listed in Section 13.6 must have a matching row in Section 15.2 Snapshot Tests; a Preview without a snapshot row triggers a Section 20 Risk.
|
|
67
67
|
29. **Variant usage explicit and bounded.** Section 6 inventory rows list which variants this feature consumes per component (concrete enum case + bool value). New Section 6.X (Variant Usage Matrix) catalogues the full variant axis vs. used subset with a rationale per excluded variant. Sections 13.6 (Preview) and 15.2 (Snapshot) cover only the used subset; expanding the variant set requires updating Section 6.X first.
|
|
68
|
-
30. **Analysis as self-contained design bridge - no MCP outside analysis phase (BLOCKING, pipeline-wide
|
|
68
|
+
30. **Analysis as self-contained design bridge - no MCP outside analysis phase (BLOCKING, pipeline-wide).** The analysis document is the sole design source for every downstream phase. After Phase 1 of `/multi-agent:analysis` produces `analysis/<feature>-<platform>.md`, Phase 2 Planning, Phase 3 Dev, Phase 4 Review, Phase 5 Test, Phase 6 Commit, and Phase 7 Report consume only the analysis document plus repo Code Connect mappings (`*.figma.swift` / `*.figma.kt`). Calling `mcp__claude_ai_Figma__*`, hitting `api.figma.com`, or fetching a `figma.com/design/...` URL during Phase 2+ is a violation. Applies to every mode that runs Phase 2+: `/multi-agent`, `/multi-agent:autopilot`, `/multi-agent:local`, `/multi-agent:local-autopilot`, `/multi-agent:dev`, `/multi-agent:dev-autopilot`, `/multi-agent:dev-local`, `/multi-agent:dev-local-autopilot`. Hard requirement (v9.0.0): Phase 2 Pre-item and Phase 3 Pre-item (BLOCKING) abort the run when the analysis document is missing. Memory: `[[mcp-only-in-analysis]]`. Generic rule rationale and access matrix: see `pipeline/rules/figma-pipeline.md` "MUST: No MCP outside analysis phase".
|
|
69
69
|
31. **Business-rule to acceptance-criterion to test traceability (AI + human spine).** The analysis is a development handoff that both an AI implementer and a human reviewer must act on, so it is bound by one shared-ID vocabulary. Every business rule carries a stable id `BR-<slug>-NN` (Section 4.4). Each rule maps to at least one acceptance criterion written Given / When / Then (binary - two readers must not be able to disagree on pass/fail). Each acceptance criterion maps to unit-test scenarios in Section 15.1, one row per case across happy / boundary / error / empty-nil (enumerate at least the failure modes; agents hallucinate error handling when it is omitted). The same ids thread onward: Section 15.6 UI-test flows reference the `BR-` ids and use stable selectors (accessibilityIdentifier / testTag), Section 16 accessibility items reuse those identifiers, Section 11 analytics events cite their triggering rule or story, and Section 5/7 layout cells carry token + Figma node refs. Never invent copy or values (blank beats a guess; a missing source becomes a Section 20 Open Question). **Mode-aware gate:** in Full mode a business rule with no acceptance criterion, or an acceptance criterion with no Section 15.1 scenario, fails the dispatch gate. In **Lite mode Section 15 is not rendered**, so the rule-to-test half does not apply - Section 4.4 still lists each rule with its Given/When/Then acceptance criterion (the acceptance criterion is itself the testable statement), and the 15.1 mapping is deferred to whenever the feature is later analyzed in Full or implemented via `/multi-agent:dev`. The rule-to-acceptance-criterion half always holds, in both modes.
|
|
70
70
|
|
|
71
71
|
## Input
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Resolve the Section 20 Risks and Open Questions of an analysis v3 document one row at a time. Proposes up to 3 source-labeled answer candidates per row (from evidence / from repo / AI reasoned), merges the chosen answer into the target body section, and updates the doc in place with a Section 23 changelog bump. Companion to /multi-agent:analysis - same Locked decisions apply (citation discipline, humanizer punctuation, no MCP, no auto-commit). Optional sibling propagation for per-platform file sets."
|
|
2
|
+
description: "Resolve the Section 20 Risks and Open Questions of an analysis v3 document one row at a time. Proposes up to 3 source-labeled answer candidates per row (from evidence / from repo / AI reasoned), merges the chosen answer into the target body section, and updates the doc in place with a Section 23 changelog bump. Companion to /multi-agent:analysis - same Locked decisions apply (citation discipline, humanizer punctuation, no MCP, no auto-commit). Optional sibling propagation for per-platform file sets. Use when an analysis document's open questions and risks need answering row by row before development starts."
|
|
3
3
|
description-tr: "Analiz v3 dokümanının Bölüm 20 Riskler ve Açık Sorular satırlarını tek tek çözer. Satır başına en fazla 3 kaynak-etiketli cevap adayı önerir (kanıttan / repodan / AI çıkarımı), seçilen cevabı ilgili gövde bölümüne işler ve dokümanı Bölüm 23 changelog artışıyla yerinde günceller. /multi-agent:analysis'in eşlikçisi - aynı Kilitli kararlar geçerli (alıntı disiplini, humanizer noktalama, MCP yok, otomatik commit yok). Platform bazlı dosya setleri için isteğe bağlı kardeş yayılımı."
|
|
4
4
|
argument-hint: "[path/to/analysis/<feature>-<platform>.md] [--autonomous]"
|
|
5
5
|
---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Launch any task in autopilot mode: skips every confirmation, runs end-to-end autonomously."
|
|
2
|
+
description: "Launch any task in autopilot mode: skips every confirmation, runs end-to-end autonomously. Use when a task should run end to end with no confirmation prompts."
|
|
3
3
|
description-tr: "Herhangi bir görevi autopilot modunda başlatır: tüm onayları atlar, uçtan uca otonom çalışır."
|
|
4
4
|
argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
|
|
5
5
|
---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Thin wrapper that dispatches to xcode-build-orchestrator on iOS projects. Benchmarks current Xcode build, runs compilation / project / SPM analyzers, produces a recommend-first optimization plan, and re-benchmarks after the developer approves changes."
|
|
2
|
+
description: "Thin wrapper that dispatches to xcode-build-orchestrator on iOS projects. Benchmarks current Xcode build, runs compilation / project / SPM analyzers, produces a recommend-first optimization plan, and re-benchmarks after the developer approves changes. Use when an iOS build is slow and needs measuring before anything is changed."
|
|
3
3
|
description-tr: "iOS projelerinde xcode-build-orchestrator'a delege eden ince sarmalayıcı. Mevcut Xcode build'ini ölçer, derleme / proje / SPM analizlerini koşar, önce-öneri yaklaşımlı bir optimizasyon planı üretir ve geliştirici onayından sonra yeniden ölçer."
|
|
4
4
|
argument-hint: "(none - operates on current repo)"
|
|
5
5
|
---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with auto-sizing sections, full preview + explicit approval before create."
|
|
2
|
+
description: "Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with auto-sizing sections, full preview + explicit approval before create. Use when a Jira Task, Bug or Story has to be written to the project's own conventions."
|
|
3
3
|
description-tr: "Standartlara uygun Jira issue oluşturur (Task / Bug / Story): türü sorar, proje konvansiyonlarını çıkarır, otomatik boyutlanan bölümlerle standart şablondan taslak hazırlar, oluşturmadan önce tam önizleme + açık onay alır."
|
|
4
4
|
argument-hint: "[\"<free-text description>\"] [figma-url] [swagger-url] - all optional, asked interactively when missing"
|
|
5
5
|
---
|
|
@@ -28,7 +28,7 @@ The scope decides which **inventory targets** (Phase 0 step 5) the run must audi
|
|
|
28
28
|
| screen name | `boarding-pass` | Every target whose `screen` matches (case/separator-insensitive) |
|
|
29
29
|
| `screen@variant` | `boarding-pass@expired` | One target |
|
|
30
30
|
| target id | `scenario-case:boardingpassoutcome-expired` | One target, exactly |
|
|
31
|
-
| Figma URL(s) | `https://figma.com/design
|
|
31
|
+
| Figma URL(s) | `https://figma.com/design/...?node-id=1-2` | Only the frames those URLs name |
|
|
32
32
|
| `--resume` | `/multi-agent:design-check --resume` | The unaudited remainder of the most recent run for this repo + module |
|
|
33
33
|
| combinations | `seat-map summary@semi-success` | Union of the above, space- or newline-separated |
|
|
34
34
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Fast development mode: Init → Dev (Opus) → Test → Commit → Report. Analysis, planning, and review phases are skipped."
|
|
2
|
+
description: "Fast development mode: Init → Dev (Opus) → Test → Commit → Report. Analysis, planning, and review phases are skipped. Use when the work is already scoped and only development, test and commit are needed."
|
|
3
3
|
description-tr: "Hızlı geliştirme modu: Init → Dev (Opus) → Test → Commit → Report. Analiz, planlama ve review fazları atlanır."
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Fastest mode: Dev (Opus) plus Autopilot. Init → Dev → Commit → Report with zero confirmations."
|
|
2
|
+
description: "Fastest mode: Dev (Opus) plus Autopilot. Init → Dev → Commit → Report with zero confirmations. Use when a change is well understood and should go from start to commit with no questions asked."
|
|
3
3
|
description-tr: "En hızlı mod: Dev (Opus) + Autopilot. Init → Dev → Commit → Report, sıfır onay."
|
|
4
4
|
---
|
|
5
5
|
|