@mmerterden/multi-agent-pipeline 20.33.0 → 20.35.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 +98 -1
- package/README.md +3 -1
- package/README.tr.md +2 -1
- package/docs/adr/0018-cross-repo-links-not-a-global-graph.md +43 -0
- package/docs/adr/README.md +2 -1
- package/docs/facts.json +5 -4
- package/docs/features.md +1 -1
- package/install/_dev-only-files.mjs +1 -0
- package/install/catalog-history.json +1 -1
- package/install/claude.mjs +24 -2
- package/install/templates/claude-hooks.json +34 -1
- package/manifest.json +393 -339
- package/package.json +3 -1
- package/pipeline/agents/bulk-reader.md +3 -0
- package/pipeline/agents/code-reviewer.md +9 -0
- package/pipeline/agents/explorer.md +4 -0
- package/pipeline/agents/plan-critic.md +4 -2
- package/pipeline/commands/multi-agent/SKILL.md +17 -136
- package/pipeline/commands/multi-agent/channels/SKILL.md +16 -298
- package/pipeline/commands/multi-agent/graph/SKILL.md +5 -2
- package/pipeline/commands/multi-agent/language/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/office-on/SKILL.md +7 -3
- package/pipeline/commands/multi-agent/office-status/SKILL.md +3 -2
- package/pipeline/commands/multi-agent/resume/SKILL.md +8 -22
- package/pipeline/commands/multi-agent/review/SKILL.md +7 -131
- package/pipeline/commands/multi-agent/setup/SKILL.md +19 -224
- package/pipeline/contract/CHANGELOG.md +9 -0
- package/pipeline/contract/README.md +6 -2
- package/pipeline/contract/fixtures/error-invalid-request.json +1 -1
- package/pipeline/contract/fixtures/error-unauthorized.json +1 -1
- package/pipeline/contract/fixtures/error-unsigned.json +1 -1
- package/pipeline/contract/manifest.json +14 -1
- package/pipeline/contract/types/index.d.ts +24 -2
- package/pipeline/lib/json-file-lock.mjs +61 -15
- package/pipeline/lib/office-remote.mjs +228 -0
- package/pipeline/lib/qr-code.mjs +360 -0
- package/pipeline/lib/repo-hygiene.sh +1 -0
- package/pipeline/lib/run-completion.mjs +17 -0
- package/pipeline/multi-agent-refs/channels/generator.md +146 -0
- package/pipeline/multi-agent-refs/channels/issue-comment.md +1 -1
- package/pipeline/multi-agent-refs/channels/menu.md +55 -0
- package/pipeline/multi-agent-refs/channels/multi-repo.md +6 -0
- package/pipeline/multi-agent-refs/channels/preview.md +25 -0
- package/pipeline/multi-agent-refs/channels/reference.md +98 -0
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +1 -1
- package/pipeline/multi-agent-refs/features/code-graph.md +27 -0
- package/pipeline/multi-agent-refs/features/office-remote-protocol.md +166 -0
- package/pipeline/multi-agent-refs/features/office-threat-model.md +2 -2
- package/pipeline/multi-agent-refs/features/plan-critic.md +5 -2
- package/pipeline/multi-agent-refs/features/review-delta.md +4 -1
- package/pipeline/multi-agent-refs/features/scope-check.md +25 -1
- package/pipeline/multi-agent-refs/features/verify-by-test.md +10 -0
- package/pipeline/multi-agent-refs/keychain.md +7 -0
- package/pipeline/multi-agent-refs/knowledge.md +9 -0
- package/pipeline/multi-agent-refs/orchestrator/dispatcher.md +163 -0
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +6 -2
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +8 -10
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +18 -20
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +20 -14
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +8 -7
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +6 -3
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/resume/details.md +35 -0
- package/pipeline/multi-agent-refs/review/inputs.md +87 -0
- package/pipeline/multi-agent-refs/review/module-guides.md +25 -0
- package/pipeline/multi-agent-refs/review/valven.md +42 -0
- package/pipeline/multi-agent-refs/rules.md +3 -2
- package/pipeline/multi-agent-refs/setup/accounts.md +27 -0
- package/pipeline/multi-agent-refs/setup/app-store-connect.md +5 -0
- package/pipeline/multi-agent-refs/setup/firebase.md +5 -0
- package/pipeline/multi-agent-refs/setup/google-play.md +4 -0
- package/pipeline/multi-agent-refs/setup/hooks-and-plugins.md +21 -0
- package/pipeline/multi-agent-refs/setup/language.md +46 -0
- package/pipeline/multi-agent-refs/setup/multi-repo-group.md +51 -0
- package/pipeline/multi-agent-refs/setup/summaries.md +63 -0
- package/pipeline/multi-agent-refs/setup/token-save-flow.md +51 -0
- package/pipeline/multi-agent-refs/tracker-contract.md +1 -1
- package/pipeline/office/NOTICE.md +4 -1
- package/pipeline/office/assets/char_12.png +0 -0
- package/pipeline/office/assets/char_13.png +0 -0
- package/pipeline/office/assets/char_14.png +0 -0
- package/pipeline/office/assets/char_15.png +0 -0
- package/pipeline/office/assets/char_16.png +0 -0
- package/pipeline/office/assets/char_17.png +0 -0
- package/pipeline/office/assets/char_18.png +0 -0
- package/pipeline/office/assets/char_19.png +0 -0
- package/pipeline/office/assets/char_20.png +0 -0
- package/pipeline/office/assets/char_21.png +0 -0
- package/pipeline/office/assets/char_22.png +0 -0
- package/pipeline/office/assets/char_23.png +0 -0
- package/pipeline/office/assets/char_24.png +0 -0
- package/pipeline/office/assets/char_25.png +0 -0
- package/pipeline/office/assets/char_26.png +0 -0
- package/pipeline/office/assets/char_27.png +0 -0
- package/pipeline/office/assets/char_28.png +0 -0
- package/pipeline/office/assets/char_29.png +0 -0
- package/pipeline/office/assets/char_30.png +0 -0
- package/pipeline/office/index.html +304 -55
- package/pipeline/office/toolkit.json +1 -1
- package/pipeline/rules/response-shape.md +6 -7
- package/pipeline/schemas/agent-state.schema.json +36 -0
- package/pipeline/schemas/phases.json +4 -4
- package/pipeline/schemas/plan-critique.schema.json +9 -2
- package/pipeline/schemas/planning-output.schema.json +43 -2
- package/pipeline/schemas/pr-reach.schema.json +55 -0
- package/pipeline/schemas/prefs.schema.json +37 -8
- package/pipeline/schemas/reviewer-output.schema.json +20 -2
- package/pipeline/schemas/token-budget.json +4 -4
- package/pipeline/schemas/triage-output.schema.json +32 -3
- package/pipeline/schemas/unattended-policy.json +2 -1
- package/pipeline/scripts/_graph-analysis.mjs +270 -0
- package/pipeline/scripts/_guard_rules.py +449 -1
- package/pipeline/scripts/_memory-policy.mjs +165 -0
- package/pipeline/scripts/_secret-scan.mjs +105 -0
- package/pipeline/scripts/_test-gaming.mjs +36 -0
- package/pipeline/scripts/_unified-diff.mjs +2 -2
- package/pipeline/scripts/agent-guard.py +79 -19
- package/pipeline/scripts/anonymize-findings.mjs +99 -0
- package/pipeline/scripts/answer-check.mjs +113 -0
- package/pipeline/scripts/answer-check.sh +20 -0
- package/pipeline/scripts/autopilot-publish.mjs +9 -2
- package/pipeline/scripts/capture-flush.sh +12 -2
- package/pipeline/scripts/check-read-size.sh +9 -0
- package/pipeline/scripts/code-graph-rules/android.json +8 -3
- package/pipeline/scripts/contract-server.mjs +71 -16
- package/pipeline/scripts/debt-ledger.mjs +323 -0
- package/pipeline/scripts/file-context.mjs +261 -0
- package/pipeline/scripts/file-context.sh +20 -0
- package/pipeline/scripts/gate-ledger.mjs +144 -21
- package/pipeline/scripts/graph-links.mjs +230 -0
- package/pipeline/scripts/graph-query.mjs +133 -1
- package/pipeline/scripts/graph-report.mjs +65 -0
- package/pipeline/scripts/learn-from-transcripts.mjs +12 -48
- package/pipeline/scripts/learnings-ledger.mjs +143 -24
- package/pipeline/scripts/office-build.mjs +276 -5
- package/pipeline/scripts/office-control.mjs +70 -10
- package/pipeline/scripts/office-pair.mjs +407 -0
- package/pipeline/scripts/office-remote-client.mjs +463 -0
- package/pipeline/scripts/phase-tracker.sh +8 -0
- package/pipeline/scripts/phase0-exit-gate.mjs +40 -37
- package/pipeline/scripts/phone-devices.mjs +9 -1
- package/pipeline/scripts/plan-critique-gate.mjs +11 -2
- package/pipeline/scripts/pre-commit-check.sh +28 -2
- package/pipeline/scripts/pre-push-check.sh +6 -12
- package/pipeline/scripts/rework-base.mjs +87 -0
- package/pipeline/scripts/rework-rulings.mjs +106 -0
- package/pipeline/scripts/run-commit-check.mjs +104 -0
- package/pipeline/scripts/run-scope-guard.mjs +58 -3
- package/pipeline/scripts/run-scope-guard.sh +13 -1
- package/pipeline/scripts/scope-check-gate.mjs +213 -2
- package/pipeline/scripts/task-mirror.mjs +106 -15
- package/pipeline/scripts/task-mirror.sh +3 -2
- package/pipeline/scripts/test-stability-gate.mjs +112 -0
- package/pipeline/scripts/triage-memory.mjs +64 -37
- package/pipeline/scripts/update-check.sh +7 -1
- package/pipeline/scripts/update-issue-progress.sh +73 -8
- package/pipeline/scripts/validate-planning.mjs +172 -4
- package/pipeline/scripts/validate-reviewer.mjs +20 -0
- package/pipeline/scripts/validate-triage.mjs +149 -4
- package/pipeline/scripts/work-items.mjs +119 -1
- package/pipeline/scripts/worktree-prepare-all.mjs +200 -0
- package/pipeline/scripts/worktree-prepare.sh +40 -4
- package/pipeline/scripts/write-state.mjs +67 -24
- package/pipeline/skills/.skill-manifest.json +9 -9
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +5 -5
- package/pipeline/skills/shared/core/google-play-compliance/references/rules.yml +1 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +5 -2
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +4 -4
- package/pipeline/skills/shared/core/multi-agent-office-status/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +2 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +4 -4
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +14 -0
- package/pipeline/skills/shared/external/android-architecture/references/patterns.md +6 -0
- package/pipeline/skills/shared/external/android-build-quality-gates/references/patterns.md +10 -0
- package/pipeline/skills/shared/external/android-datastore/references/patterns.md +11 -0
- package/pipeline/skills/shared/external/android-design-tokens-codegen/references/patterns.md +8 -0
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/references/patterns.md +6 -0
- package/pipeline/skills/shared/external/android-mvi-viewmodel/references/patterns.md +10 -0
- package/pipeline/skills/shared/external/android-performance/references/patterns.md +13 -0
- package/pipeline/skills/shared/external/android-security/references/patterns.md +16 -0
- package/pipeline/skills/shared/external/api-patterns/references/contract-details.md +9 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/abuse-controls.md +12 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/identity-and-access.md +13 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/request-handling.md +12 -0
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +9 -0
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +8 -0
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +10 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +21 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +9 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +7 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +2 -2
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +10 -0
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +10 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +22 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +17 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +22 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +17 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +9 -0
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +11 -0
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +13 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +9 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +10 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +15 -0
- package/pipeline/skills/shared/external/compose-components/references/patterns.md +7 -0
- package/pipeline/skills/shared/external/compose-navigation/references/patterns.md +7 -0
- package/pipeline/skills/shared/external/compose-testing/references/patterns.md +15 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +9 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +11 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +10 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +13 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +20 -0
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +16 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +16 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +14 -0
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +13 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +10 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +10 -0
- package/pipeline/skills/shared/external/fastapi-pro/references/app-structure.md +10 -0
- package/pipeline/skills/shared/external/gradle-kotlin-dsl/references/patterns.md +17 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +12 -0
- package/pipeline/skills/shared/external/hig-app-icons/references/icon-workflow.md +10 -0
- package/pipeline/skills/shared/external/hig-components-content/references/content-views.md +10 -0
- package/pipeline/skills/shared/external/hig-components-layout/references/bars-and-tabs.md +11 -0
- package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +13 -0
- package/pipeline/skills/shared/external/hig-foundations/references/type-color-spacing.md +13 -0
- package/pipeline/skills/shared/external/hig-patterns/references/onboarding-and-states.md +11 -0
- package/pipeline/skills/shared/external/hig-platforms/references/ipad-layout.md +12 -0
- package/pipeline/skills/shared/external/hig-technologies/references/technologies.md +16 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +9 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +18 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/large-content-and-appearance.md +9 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +9 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +7 -0
- package/pipeline/skills/shared/external/ios-coding-standard/references/STANDARD.md +13 -0
- package/pipeline/skills/shared/external/ios-design-review/references/appearance-matrix.md +9 -0
- package/pipeline/skills/shared/external/ios-design-review/references/checklist.md +15 -0
- package/pipeline/skills/shared/external/ios-haptics/references/core-haptics.md +11 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/api-map.md +11 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/fixed-assumptions.md +15 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/poses-and-panes.md +11 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +18 -0
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +19 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +15 -0
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +7 -0
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +8 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +12 -0
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +17 -0
- package/pipeline/skills/shared/external/ios-security/references/app-review-guidelines.md +8 -0
- package/pipeline/skills/shared/external/ios-security/references/cryptokit-advanced.md +14 -0
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +8 -0
- package/pipeline/skills/shared/external/ios-security/references/privacy-manifest.md +9 -0
- package/pipeline/skills/shared/external/ios-sf-symbols/references/effects-and-custom-symbols.md +9 -0
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +13 -0
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/references/patterns.md +8 -0
- package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +21 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +9 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +12 -0
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +16 -0
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +21 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +10 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +9 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +12 -0
- package/pipeline/skills/shared/external/nodejs-backend-patterns/references/runtime-patterns.md +11 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +11 -0
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +18 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +11 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +11 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +15 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +14 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +14 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +14 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +14 -0
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +10 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +12 -0
- package/pipeline/skills/shared/external/retrofit-networking/references/patterns.md +14 -0
- package/pipeline/skills/shared/external/room-database/references/patterns.md +16 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +10 -0
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +10 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/build-optimization-sources.md +14 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/spm-analysis-checks.md +19 -0
- package/pipeline/skills/shared/external/storekit/references/core-patterns.md +13 -0
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +31 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +8 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +9 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +10 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +8 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +24 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +8 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +14 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +12 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +10 -0
- package/pipeline/skills/shared/external/swift-concurrency-expert/references/swift-6-2-concurrency.md +8 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +10 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +7 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +10 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +11 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +9 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +13 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +7 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +14 -0
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +16 -0
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +17 -0
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +19 -0
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +16 -0
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +19 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +18 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +16 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +17 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +17 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +17 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +18 -0
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +21 -0
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +16 -0
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +16 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +9 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +24 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +9 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +11 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +13 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +8 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +17 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +12 -0
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +11 -0
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +7 -0
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +13 -0
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +24 -0
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +12 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +15 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +15 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/scroll-effects.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/accessibility-patterns.md +11 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-advanced.md +7 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-basics.md +13 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-transitions.md +9 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +9 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +17 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +9 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +10 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +13 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/performance-patterns.md +7 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/scroll-patterns.md +9 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/sheet-navigation-patterns.md +10 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +18 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +16 -0
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +11 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +8 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +14 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +9 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +22 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/uikit-glass.md +14 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +10 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +10 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +13 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +10 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +14 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +30 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +16 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +11 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +11 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +10 -0
- package/pipeline/skills/shared/external/swiftui-performance-audit/references/code-smells.md +8 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/app-wiring.md +12 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/menu-bar.md +10 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/navigationstack.md +11 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/scroll-reveal.md +12 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/sheets.md +14 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/tabview.md +10 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +10 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +13 -0
- package/pipeline/skills/shared/external/swiftui-view-refactor/references/mv-patterns.md +12 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +8 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +8 -0
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +14 -0
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +17 -0
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +11 -0
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +11 -0
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +27 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/build-settings-best-practices.md +9 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/fix-patterns.md +7 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/build-settings-best-practices.md +9 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/build-optimization-sources.md +14 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/code-compilation-checks.md +8 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-optimization-sources.md +14 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-settings-best-practices.md +9 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/project-audit-checks.md +13 -0
|
@@ -77,77 +77,11 @@ When `provider=github` and the diff is fetched in Step 2, also persist `agent-st
|
|
|
77
77
|
|
|
78
78
|
Reached when `kind=pick` (empty input). Skipped entirely in autopilot: autopilot with no ref goes straight to branch mode (`kind=branch; provider=local; ref=$(git rev-parse --abbrev-ref HEAD)`) so nothing prompts.
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
# GitHub: current repo's open PRs + the user's own/requested open PRs across repos.
|
|
84
|
-
gh pr list --state open --json number,title,url,headRefName,author,updatedAt 2>/dev/null # current repo
|
|
85
|
-
gh search prs --state open --review-requested=@me --json number,title,url,repository,updatedAt 2>/dev/null
|
|
86
|
-
gh search prs --state open --author=@me --json number,title,url,repository,updatedAt 2>/dev/null
|
|
87
|
-
|
|
88
|
-
# Bitbucket Server: for each configured bitbucket repo (prefs recentRepos / dev-context),
|
|
89
|
-
# resolve creds via credential-store (see Step 2 bitbucket block) then:
|
|
90
|
-
# GET https://$host/rest/api/1.0/projects/$KEY/repos/$slug/pull-requests?state=OPEN&role=REVIEWER
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Merge into one deduped list, each row labeled with its provider and PR URL; sort by `updatedAt` desc. If the merged list is EMPTY -> tell the user "no open PRs found", fall back to branch mode, and continue.
|
|
94
|
-
|
|
95
|
-
**Select** - follow `$HOME/.claude/multi-agent-refs/picker-contract.md` (breadcrumb narrator line before the prompt), then `AskUserQuestion` `multiSelect: true`:
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
question (outputLanguage): "Hangi PR('lar)ı review edeyim?"
|
|
99
|
-
header (English): "Review PRs"
|
|
100
|
-
options: one per open PR -> label "#<N> <short title>", description (outputLanguage): "<repo> · <provider> · <headRef>"
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Each selected option maps back to a full `agent-state.review.input` descriptor (provider + orgRepo / bb coordinates + prNumber + raw URL), exactly as Step 1 would have parsed an explicit URL. Then **loop Steps 2-7 once per selected PR** (independent review + post each). If the user selects none, fall back to branch mode.
|
|
80
|
+
List open PRs from both providers (a provider whose token or CLI is absent contributes nothing - never hard-fail on one provider), merge, dedupe and sort by `updatedAt` desc; an empty list falls back to branch mode. Ask with `AskUserQuestion` `multiSelect: true` per `$HOME/.claude/multi-agent-refs/picker-contract.md`, then **loop Steps 2-7 once per selected PR**; selecting none falls back to branch mode. Read `$HOME/.claude/multi-agent-refs/review/inputs.md` before Step 1a: the list commands, the picker fields and the descriptor mapping.
|
|
104
81
|
|
|
105
82
|
### 2. Fetch the diff - kind-aware
|
|
106
83
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
git diff origin/develop...{ref}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**pr mode - github:**
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
gh pr diff "$pr_number" --repo "$org_repo" > /tmp/multi-agent-review-${TASK_ID}-diff.patch
|
|
117
|
-
# Also capture the head commit SHA for GitHub inline-comment anchors
|
|
118
|
-
# (POST .../pulls/{n}/comments requires commit_id):
|
|
119
|
-
HEAD_SHA=$(gh api "/repos/$org_repo/pulls/$pr_number" --jq .head.sha)
|
|
120
|
-
printf '%s\n' "$HEAD_SHA" > /tmp/multi-agent-review-${TASK_ID}-head.sha
|
|
121
|
-
# Persist into agent-state - post-pr-review.sh reads it from there.
|
|
122
|
-
tmp_state=$(mktemp)
|
|
123
|
-
jq --arg sha "$HEAD_SHA" '.review.headCommitSha = $sha' "$AGENT_STATE" > "$tmp_state" \
|
|
124
|
-
&& mv "$tmp_state" "$AGENT_STATE"
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**pr mode - bitbucket-server:**
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
# Resolve credentials via prefs.global.keychainMapping (never hardcode key names).
|
|
131
|
-
. "$HOME/.claude/lib/credential-store-resolver.sh" \
|
|
132
|
-
|| . "$HOME/.copilot/lib/credential-store-resolver.sh"
|
|
133
|
-
resolve_credential_store
|
|
134
|
-
USER_KEY=$(jq -r '.global.keychainMapping.bitbucket_user' "$HOME/.claude/multi-agent-preferences.json")
|
|
135
|
-
TOKEN_KEY=$(jq -r '.global.keychainMapping.bitbucket_token' "$HOME/.claude/multi-agent-preferences.json")
|
|
136
|
-
BB_USER=$("$CRED_STORE" get "$USER_KEY")
|
|
137
|
-
BB_TOKEN=$("$CRED_STORE" get "$TOKEN_KEY")
|
|
138
|
-
|
|
139
|
-
DIFF_FILE="/tmp/multi-agent-review-${TASK_ID}-diff.patch"
|
|
140
|
-
http=$(curl -sS -m 60 --config <(printf 'user = "%s:%s"\n' "$BB_USER" "$BB_TOKEN") -H "Accept: text/plain" \
|
|
141
|
-
"https://$bb_server_host/rest/api/1.0/projects/$bb_project_key/repos/$bb_repo_slug/pull-requests/$pr_number/diff?contextLines=10" \
|
|
142
|
-
-o "$DIFF_FILE" -w '%{http_code}')
|
|
143
|
-
if [ "$http" != "200" ]; then
|
|
144
|
-
echo "review: Bitbucket diff fetch failed (HTTP $http) - error body in $DIFF_FILE" >&2
|
|
145
|
-
rm -f "$DIFF_FILE"
|
|
146
|
-
exit 1
|
|
147
|
-
fi
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
The `credential-store.sh` wrapper reads the macOS Keychain (`security`).
|
|
84
|
+
Branch mode: `git diff origin/develop...{ref}`. PR mode fetches through the provider: `gh pr diff` for `github`, which also persists `agent-state.review.headCommitSha`; the Bitbucket Server REST diff endpoint for `bitbucket-server`, with credentials resolved through `prefs.global.keychainMapping` (never hardcoded key names) and any non-200 response a hard failure. Read `$HOME/.claude/multi-agent-refs/review/inputs.md` "Step 2" before fetching: the exact commands per provider.
|
|
151
85
|
|
|
152
86
|
Save the diff to `/tmp/multi-agent-review-${TASK_ID}-diff.patch` so reviewers can re-read it.
|
|
153
87
|
|
|
@@ -155,27 +89,7 @@ Save the diff to `/tmp/multi-agent-review-${TASK_ID}-diff.patch` so reviewers ca
|
|
|
155
89
|
|
|
156
90
|
A module in the repo may carry its own CLAUDE guide - a convention/checklist file living somewhere in the module's directory tree that the host CLI never auto-loads. When a changed file's module has such a guide, the review must consult it. Discovery is deterministic, from the diff's changed paths:
|
|
157
91
|
|
|
158
|
-
|
|
159
|
-
# Changed file paths from the patch:
|
|
160
|
-
grep -E '^\+\+\+ b/' "$DIFF_FILE" | sed 's|^+++ b/||' | sort -u > /tmp/multi-agent-review-${TASK_ID}-paths.txt
|
|
161
|
-
|
|
162
|
-
# For each changed path, walk its directory chain up to the repo root and
|
|
163
|
-
# collect guide files matching: CLAUDE.md, *-CLAUDE.md, AGENTS.md.
|
|
164
|
-
# Root-level CLAUDE.md/AGENTS.md are excluded - the host CLI already loads those.
|
|
165
|
-
guides=()
|
|
166
|
-
while IFS= read -r p; do
|
|
167
|
-
d=$(dirname "$p")
|
|
168
|
-
while [ "$d" != "." ] && [ "$d" != "/" ]; do
|
|
169
|
-
for g in "$d"/CLAUDE.md "$d"/*-CLAUDE.md "$d"/AGENTS.md; do
|
|
170
|
-
[ -e "$g" ] && guides+=("$g")
|
|
171
|
-
done
|
|
172
|
-
d=$(dirname "$d")
|
|
173
|
-
done
|
|
174
|
-
done < /tmp/multi-agent-review-${TASK_ID}-paths.txt
|
|
175
|
-
# dedupe, cap at 5 (log any dropped so truncation is never silent)
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
Existence checks are resolved against the local checkout when the cwd is the target repo. In PR mode without a local checkout, probe the candidate paths via the provider API instead (`gh api /repos/{o}/{r}/contents/{path}?ref={headSha}` / Bitbucket `GET /projects/{KEY}/repos/{slug}/browse/{path}?at={headSha}`) and fetch the matching files' raw content the same way. No hit → step is a silent no-op.
|
|
92
|
+
Read `$HOME/.claude/multi-agent-refs/review/module-guides.md` before Step 2b: the discovery walk (guide file names, the root-level exclusion, the cap of 5 with dropped guides logged) and the provider-API probe for PR mode without a local checkout. No hit: the step is a silent no-op.
|
|
179
93
|
|
|
180
94
|
Persist `agent-state.review.moduleGuides = [<repo-relative paths>]` and inject into every reviewer prompt (Step 3):
|
|
181
95
|
|
|
@@ -187,44 +101,10 @@ Scope note: a guide governs only files under its own directory - a guide found
|
|
|
187
101
|
|
|
188
102
|
The `valven-rules` registry (`ai-common-toolkit`) is applied to every review, in `review` mode. Collect what the gate needs, then run it:
|
|
189
103
|
|
|
190
|
-
|
|
191
|
-
VG_FILE="/tmp/multi-agent-review-${TASK_ID}-valven.json"
|
|
192
|
-
VG_ARGS=(--mode review --out "$VG_FILE")
|
|
193
|
-
case "$kind/$provider" in
|
|
194
|
-
branch/local)
|
|
195
|
-
VG_ARGS+=(--repo . --base origin/develop --head "$ref") ;;
|
|
196
|
-
pr/github)
|
|
197
|
-
node "$HOME/.claude/scripts/pr-timeline.mjs" --repo "$org_repo" --pr "$pr_number" \
|
|
198
|
-
--out "/tmp/multi-agent-review-${TASK_ID}-pr.json" # gh pr view + ready time + bot-typed reviews
|
|
199
|
-
jq -r '.body // ""' "/tmp/multi-agent-review-${TASK_ID}-pr.json" > "/tmp/multi-agent-review-${TASK_ID}-body.md"
|
|
200
|
-
jq -r '.commits[] | "\(.authoredDate)\t\(.messageHeadline)"' "/tmp/multi-agent-review-${TASK_ID}-pr.json" > "/tmp/multi-agent-review-${TASK_ID}-commits.txt"
|
|
201
|
-
VG_ARGS+=(--branch "$(jq -r .headRefName "/tmp/multi-agent-review-${TASK_ID}-pr.json")"
|
|
202
|
-
--pr-body-file "/tmp/multi-agent-review-${TASK_ID}-body.md"
|
|
203
|
-
--commits-file "/tmp/multi-agent-review-${TASK_ID}-commits.txt"
|
|
204
|
-
--pr-meta-file "/tmp/multi-agent-review-${TASK_ID}-pr.json") ;;
|
|
205
|
-
pr/bitbucket-server)
|
|
206
|
-
# Same credentials as Step 2. PR: fromRef.displayId + description; commits: values[].message.
|
|
207
|
-
# Write the description to ...-body.md, one "<ISO authorTimestamp>\t<first message line>" per commit to ...-commits.txt,
|
|
208
|
-
# and the timeline to ...-meta.json (features/valven.md, "Development Behaviors"). Then:
|
|
209
|
-
VG_ARGS+=(--branch "$BB_FROM_REF" --pr-body-file "/tmp/multi-agent-review-${TASK_ID}-body.md"
|
|
210
|
-
--commits-file "/tmp/multi-agent-review-${TASK_ID}-commits.txt"
|
|
211
|
-
--pr-meta-file "/tmp/multi-agent-review-${TASK_ID}-meta.json") ;;
|
|
212
|
-
esac
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
For PR input: when the cwd is a checkout of the same repo, `git fetch origin "<headRef>"` (this moves no HEAD) and add `--repo . --base "origin/<baseRef>" --head FETCH_HEAD`, so sizes and the rework ratio come from history. Otherwise add `--diff-file "$DIFF_FILE"`; the rework rule then reports `not-measured`, which is stated in the summary rather than read as a pass.
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
node "$HOME/.claude/scripts/valven-gate.mjs" "${VG_ARGS[@]}" >/dev/null
|
|
219
|
-
VG_RC=$? # 0 clean, 1 findings, 2 could not run
|
|
220
|
-
```
|
|
104
|
+
Read `$HOME/.claude/multi-agent-refs/review/valven.md` before Step 2c: the per-input gate arguments, the checkout-vs-diff-file choice, and the handling of the split, old-work, judgement (`VLV-SCOPE-02`, `VLV-PRDESC-02`, injected into every Step 3 reviewer prompt), cycle and pickup rules. Two rules hold on every input:
|
|
221
105
|
|
|
222
106
|
- Exit 2: print the stderr line and continue the review with `Valven: not measured (<reason>)` in the Step 6 summary. Never print it as passed.
|
|
223
107
|
- The gate's `findings[]` join the reviewer findings at Step 5 with `tag: valven`. They are measurements, so triage accepts them unless the task is exempt; an accepted `important` or `blocking` one makes the Step 7 decision NEEDS WORK.
|
|
224
|
-
- When `splitRequired` is true, run `node "$HOME/.claude/scripts/valven-split.mjs" --repo . --base "origin/<baseRef>" --head <head>` (plan only, no `--apply`) where a checkout exists, and append the slice table (branch, lines, files) to the `VLV-SIZE-01` finding's `fix`.
|
|
225
|
-
- When `VLV-AGE-01`, `VLV-BEHIND-01` or `VLV-TRACE-03` fires and a checkout exists, put the `valven-port.mjs` plan (same base and head, no `--apply`) in the finding's `fix` as `$HOME/.claude/multi-agent-refs/features/valven.md`, "Old work", lists it.
|
|
226
|
-
- The registry's judgement rules (`rules:` block: `VLV-SCOPE-02`, `VLV-PRDESC-02`) go into every reviewer prompt in Step 3, with the PR body when one exists. Each reviewer returns a verdict per ID.
|
|
227
|
-
- `VLV-CYCLE-01..03` are `suggestion` findings with a Valven score and never set NEEDS WORK alone; `VLV-PICKUP-01` is `important` for no reviewer, a `suggestion` for an old draft. Branch input reports them `not-measured`.
|
|
228
108
|
|
|
229
109
|
Step 6 adds one line under the table: `Valven: <n> finding(s) · <changedLines> lines / <fileCount> files · split: <yes N slices|no>`, plus for a PR `Valven scores: churn · coding · pickup · review` from `scores` (`-` when absent).
|
|
230
110
|
|
|
@@ -313,6 +193,8 @@ Classify findings into:
|
|
|
313
193
|
|
|
314
194
|
Triage also marks each finding as `accepted` (real issue), `deferred` (real but out of scope), or `rejected` (false positive). Only `accepted` findings appear in the body of the PR comment; `deferred` items go in the Triage notes section.
|
|
315
195
|
|
|
196
|
+
Triage settles every reviewer `cannotVerify` row the way Phase 3 does (`phase-3-review.md` 3.2): `verified` with the file:line read, `finding` with the file:line of the accepted or deferred finding, or `out-of-scope`. Rows left unsettled are listed in the chat summary and in the Triage notes section.
|
|
197
|
+
|
|
316
198
|
### 6. Print the chat summary (always)
|
|
317
199
|
|
|
318
200
|
```
|
|
@@ -387,12 +269,6 @@ bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <input_count> <output_cou
|
|
|
387
269
|
|
|
388
270
|
## Input matrix
|
|
389
271
|
|
|
390
|
-
|
|
391
|
-
|---|---|---|
|
|
392
|
-
| no args (interactive) | PR picker (open GitHub + Bitbucket PRs, multi-select) | inline comments + approve/needs-work, per selected PR |
|
|
393
|
-
| no args (autopilot / no PRs) | branch (current) | none - chat only |
|
|
394
|
-
| `feature/foo` | branch (named) | none - chat only |
|
|
395
|
-
| `#N`, `repo#N`, GitHub PR URL | pr (github) | inline comments + approve/needs-work |
|
|
396
|
-
| Bitbucket Server PR URL | pr (bitbucket-server) | inline comments + approve/needs-work |
|
|
272
|
+
The input table at the top, by mode and PR action: `$HOME/.claude/multi-agent-refs/review/inputs.md` "Input matrix".
|
|
397
273
|
|
|
398
274
|
PR-mode body language honors `prefs.global.outputLanguage`. The orchestrator entry point is `lib/post-pr-review.sh "$TASK_ID"` - it reads `agent-state.review` and handles diff fetch, finding render, comment posts, and review state end-to-end.
|
|
@@ -34,51 +34,13 @@ Uses `$HOME/.claude/lib/credential-store.sh` to read/write secrets in the macOS
|
|
|
34
34
|
|
|
35
35
|
Run `~/.claude/lib/credential-store.sh doctor` first - it prints the platform and whether the backend is usable.
|
|
36
36
|
|
|
37
|
-
The shell driver
|
|
37
|
+
The shell driver delegates to the Python helper `$HOME/.claude/scripts/keychain.py`; what it writes and the `KEYCHAIN_DELEGATE=0` override: `$HOME/.claude/multi-agent-refs/setup/token-save-flow.md` "Inline Token Save Pattern".
|
|
38
38
|
|
|
39
39
|
### Step 0 - Language Selection
|
|
40
40
|
|
|
41
|
-
Ask BEFORE anything else,
|
|
41
|
+
Ask BEFORE anything else: one question, `outputLanguage` (`en` / `tr`). `promptLanguage` is fixed to `"en"` and never offered to the user. Commits, branch names and agent prompts stay English; PR, Jira and wiki bodies follow `outputLanguage`. Already set in prefs: skip silently. From this point forward `question`, `label` and `description` render in `outputLanguage`; `header` stays English.
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|---|---|---|
|
|
45
|
-
| `promptLanguage` | Picker chrome only: the `AskUserQuestion` `header` chip, host error UI, internal contract identifiers | **No - fixed to `en`.** The chip is capped at 12 chars, which most Turkish equivalents overflow. |
|
|
46
|
-
| `outputLanguage` | The assistant's non-interactive explanations, status updates, error messages, and pipeline-generated reports rendered to the user | Yes - set here and changeable later via `/multi-agent:language <en\|tr>` |
|
|
47
|
-
|
|
48
|
-
`promptLanguage` is seeded as `"en"` and never offered to the user. **External payloads always stay English** (commits, PR titles/bodies, Jira comments, wiki content, reviewer/triage prompts, agent-log.md).
|
|
49
|
-
|
|
50
|
-
#### Step 0 prompt - `outputLanguage`
|
|
51
|
-
|
|
52
|
-
The setup wizard asks one question (English UI per skill-prompt rules):
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
Which language should the assistant use for ITS OWN explanations,
|
|
56
|
-
status updates, and pipeline-generated reports?
|
|
57
|
-
|
|
58
|
-
1) English
|
|
59
|
-
2) Türkçe
|
|
60
|
-
|
|
61
|
-
Select (1-2):
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Rules:**
|
|
65
|
-
|
|
66
|
-
- **Already set in prefs** → skip silently. User can change later with `/multi-agent:language <en|tr>` or `/multi-agent:language output <en|tr>`.
|
|
67
|
-
- **New value** → validate against the schema enum (`en`, `tr`), write `prefs.global.outputLanguage` via atomic rename, force `prefs.global.promptLanguage = "en"`, then echo a confirmation in the just-chosen `outputLanguage`:
|
|
68
|
-
- `en`: `outputLanguage=<Y>. promptLanguage stays "en". External payloads (PR bodies, Jira comments, reviewer prompts) stay English regardless.`
|
|
69
|
-
- `tr`: `outputLanguage=<Y>. promptLanguage "en" sabit. Dış çıktılar (PR açıklamaları, Jira yorumları, review istemleri) her durumda İngilizce kalır.`
|
|
70
|
-
- **Unknown input** → re-ask once, then abort setup with a hint pointing to `/multi-agent:language`.
|
|
71
|
-
|
|
72
|
-
From this point forward, every prompt in Steps 1-6 below follows the canonical
|
|
73
|
-
per-field matrix in `$HOME/.claude/multi-agent-refs/rules.md` ("Language Application"):
|
|
74
|
-
`question`, `label` and `description` render in `outputLanguage`; `header` stays
|
|
75
|
-
English. Wizard status and the post-setup summary follow `outputLanguage`. External
|
|
76
|
-
payloads remain English.
|
|
77
|
-
|
|
78
|
-
> `promptLanguage` governs only the button and chip chrome, never the question a
|
|
79
|
-
> user reads. Rendering a whole prompt in English "per the fixed
|
|
80
|
-
> `promptLanguage`" contradicts the matrix above and produces half-English
|
|
81
|
-
> pickers on Turkish runs.
|
|
43
|
+
Read `$HOME/.claude/multi-agent-refs/setup/language.md` before Step 0: the two language axes, the exact prompt, validation, the confirmation lines and the unknown-input rule.
|
|
82
44
|
|
|
83
45
|
### Step 0.5 - Dependency check
|
|
84
46
|
|
|
@@ -104,22 +66,7 @@ Full procedure: `$HOME/.claude/multi-agent-refs/setup/discovery.md`. Read it for
|
|
|
104
66
|
|
|
105
67
|
### Step 2 - Show Discovery Summary + Save Mapping
|
|
106
68
|
|
|
107
|
-
Show results grouped by status:
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
Keychain Token Discovery (${USER}):
|
|
111
|
-
|
|
112
|
-
Jira -> ${USER}_Jira_Access_Token
|
|
113
|
-
GitHub -> ${USER}_Github
|
|
114
|
-
Figma -> ${USER}_Figma_Access_Token
|
|
115
|
-
Firebase -> ${USER}_Firebase_Access_Json
|
|
116
|
-
Confluence -> MISSING
|
|
117
|
-
Jenkins -> MISSING
|
|
118
|
-
---
|
|
119
|
-
Git identities: check preferences file (see Step 3)
|
|
120
|
-
|
|
121
|
-
Mapped: 8 | Missing: 4
|
|
122
|
-
```
|
|
69
|
+
Show results grouped by status: one line per service with its mapped key or `MISSING`, then the mapped / missing counts. Layout: `$HOME/.claude/multi-agent-refs/setup/summaries.md` "Step 2 discovery summary".
|
|
123
70
|
|
|
124
71
|
Non-standard key names are perfectly valid - the mapping handles resolution. No rename or migration is offered.
|
|
125
72
|
|
|
@@ -169,31 +116,11 @@ never runs update still reports. What is sent, what never is, and
|
|
|
169
116
|
|
|
170
117
|
### Auto-learned fields (no setup step needed)
|
|
171
118
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
**Git Identity**: auto-learned from token onboarding. Each token saved in Step 3 triggers an identity prompt (see Token Save Flow Step C). No separate identity setup step.
|
|
119
|
+
The Jira project key and the git identity are learned from use, never asked here. How each is captured: `$HOME/.claude/multi-agent-refs/setup/accounts.md` "Auto-learned fields".
|
|
175
120
|
|
|
176
121
|
### Step 3 - Interactive token onboarding (for missing tokens)
|
|
177
122
|
|
|
178
|
-
Git identities are NOT asked as a separate step. They are learned when tokens are added via the Token Save Flow
|
|
179
|
-
|
|
180
|
-
```
|
|
181
|
-
Token saved. Which git identity uses this token?
|
|
182
|
-
|
|
183
|
-
Existing identities:
|
|
184
|
-
1. Ada Lovelace <ada@example.com>
|
|
185
|
-
2. Ada Lovelace <ada@personal.com>
|
|
186
|
-
n. Create new identity
|
|
187
|
-
|
|
188
|
-
Select:
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
- First token ever → no existing identities → asks name + email → creates identity → maps token
|
|
192
|
-
- Subsequent tokens → pick existing or create new → maps token to that identity's `servicePatMap`
|
|
193
|
-
- Multiple accounts per platform supported (e.g. two GitHub tokens, each mapped to a different identity)
|
|
194
|
-
- Identity is stored in `prefs.global.identities[]`, token-to-identity binding in `identity.servicePatMap`
|
|
195
|
-
|
|
196
|
-
**Legacy compatibility**: If `prefs.global.gitIdentities` (deprecated) is present, `migrate-prefs.mjs` renames it to `identities` automatically.
|
|
123
|
+
Git identities are NOT asked as a separate step. They are learned when tokens are added via the Token Save Flow: each token save triggers an identity prompt (Step C), the identity is stored in `prefs.global.identities[]` and the token binding in `identity.servicePatMap`. Multiple accounts per platform are supported. The prompt, the binding rules and the legacy `gitIdentities` migration: `$HOME/.claude/multi-agent-refs/setup/token-save-flow.md` "Identity learning (Step 3)".
|
|
197
124
|
|
|
198
125
|
For each MISSING service, run the **Token Save Flow** below. When creating new tokens, use the **standard key name** from Step 1b table.
|
|
199
126
|
|
|
@@ -231,15 +158,15 @@ Full procedure: `$HOME/.claude/multi-agent-refs/setup/token-save-flow.md`. Read
|
|
|
231
158
|
|
|
232
159
|
### Step 3b - App Store Connect onboarding (iOS only, optional)
|
|
233
160
|
|
|
234
|
-
Runs inside Step 3. Every part of the API key
|
|
161
|
+
Runs inside Step 3, iOS target only. Every part of the API key, the `.p8` included, lives in the Keychain, and the key is validated BEFORE it is saved. Read `$HOME/.claude/multi-agent-refs/setup/app-store-connect.md` before Step 3b. On Skip, nothing is written.
|
|
235
162
|
|
|
236
163
|
### Step 3c - Firebase / Crashlytics onboarding (optional)
|
|
237
164
|
|
|
238
|
-
Runs inside Step 3. Measure first
|
|
165
|
+
Runs inside Step 3. Measure first with `bash "$HOME/.claude/lib/fetch-crashlytics.sh" --probe`, then ask by that answer, never blind; store the JSON as issued, never base64 it. Read `$HOME/.claude/multi-agent-refs/setup/firebase.md` before Step 3c. Skip writes nothing.
|
|
239
166
|
|
|
240
167
|
### Step 3d - Google Play onboarding (Android only, optional)
|
|
241
168
|
|
|
242
|
-
Runs inside Step 3, only when the target repo is Android
|
|
169
|
+
Runs inside Step 3, only when the target repo is Android: one entry, `google_play`, validated BEFORE saving. Read `$HOME/.claude/multi-agent-refs/setup/google-play.md` before Step 3d. Skip writes nothing.
|
|
243
170
|
|
|
244
171
|
### Step 3.5 - Host Prompt (embedded in Token Save Flow)
|
|
245
172
|
|
|
@@ -249,44 +176,13 @@ Full procedure: `$HOME/.claude/multi-agent-refs/setup/token-save-flow.md`. Read
|
|
|
249
176
|
|
|
250
177
|
**Runs only when** `~/.claude/lib/account-resolver.sh` returns **more than one** account AND at least one account has Jira or Bitbucket tokens.
|
|
251
178
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
For each non-default account, ask once:
|
|
255
|
-
|
|
256
|
-
```
|
|
257
|
-
Account {label} has Jira/Bitbucket tokens but no host override yet.
|
|
258
|
-
Use the global default ({hosts.jira}) or set a per-account host?
|
|
259
|
-
|
|
260
|
-
1) Use global default
|
|
261
|
-
2) Set per-account host
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
If `2`, prompt for `jiraHost` / `bitbucketHost` / `confluenceHost` (each optional). Save to `prefs.global.accounts[]` as `{ \"id\": \"client-x\", \"jiraHost\": \"client-x.atlassian.net\", \"bitbucketHost\": \"bitbucket.client-x.com\" }`.
|
|
265
|
-
|
|
266
|
-
`account-resolver.sh` reads this on every invocation; per-account override wins over `global.hosts.*`. Skip this step on autopilot - `accounts[]` stays empty until the user opts in via `/multi-agent:setup accounts`.
|
|
179
|
+
For each non-default account, ask once whether to keep the global default host or set per-account hosts; read `$HOME/.claude/multi-agent-refs/setup/accounts.md` "Per-account host overrides (Step 3.6)" before Step 3.6 for the prompt, the saved `prefs.global.accounts[]` shape and the precedence. Skip this step on autopilot - `accounts[]` stays empty until the user opts in via `/multi-agent:setup accounts`.
|
|
267
180
|
|
|
268
181
|
---
|
|
269
182
|
|
|
270
183
|
### Step 4 - Verify all
|
|
271
184
|
|
|
272
|
-
Re-run scan from Step 1.
|
|
273
|
-
```
|
|
274
|
-
All tokens present. Pipeline ready to use.
|
|
275
|
-
|
|
276
|
-
Optional per-project features (configured on first use, nothing to do now):
|
|
277
|
-
• Phase 5 Report Step 2 Wiki - auto-generates component wiki pages + Figma
|
|
278
|
-
screenshots. Activates when (a) task is a component AND (b) a Figma token
|
|
279
|
-
is in Keychain. Four adapters supported: submodule / in-repo / github-wiki
|
|
280
|
-
/ separate-repo. First run asks: use auto-detected path, use a custom
|
|
281
|
-
path, skip once, or disable for this project (persisted).
|
|
282
|
-
• channels - post-hoc multi-channel reporter (Jira/Confluence/Wiki/PR), works on any branch with an open PR.
|
|
283
|
-
• Default reviewers - auto-fetched from Bitbucket default-reviewers endpoint
|
|
284
|
-
or GitHub CODEOWNERS on first PR.
|
|
285
|
-
|
|
286
|
-
Next step:
|
|
287
|
-
/multi-agent "PROJ-12345" -> start your first task
|
|
288
|
-
/multi-agent help -> full usage guide
|
|
289
|
-
```
|
|
185
|
+
Re-run scan from Step 1 and show the final status: tokens present, the optional per-project features, the next-step commands. Layout: `$HOME/.claude/multi-agent-refs/setup/summaries.md` "Step 4 final status".
|
|
290
186
|
|
|
291
187
|
If still missing, show which ones and let user skip (pipeline will re-ask for any needed token at Phase 0).
|
|
292
188
|
|
|
@@ -294,66 +190,13 @@ If still missing, show which ones and let user skip (pipeline will re-ask for an
|
|
|
294
190
|
|
|
295
191
|
Pre-populates the Phase 0 project picker with repos the user is active in. Three independent sources merge into one flat list: local `$HOME` scan (depth 3, repo markers), Bitbucket (last 90 days, token-gated), GitHub (owner + collaborator, push in last 90 days, token-gated). Any source failing skips that source only, is reported (never swallowed), and discovery is never destructive and idempotent.
|
|
296
192
|
|
|
297
|
-
```
|
|
298
|
-
Step 5 - Repo Discovery (optional)
|
|
299
|
-
Scan for recent repos now to pre-populate the Phase 0 picker?
|
|
300
|
-
|
|
301
|
-
y - all three (local + Bitbucket + GitHub, ~10-30s)
|
|
302
|
-
l - local scan only (fastest, no network)
|
|
303
|
-
n - skip (Phase 0 will prompt for repo path manually)
|
|
304
|
-
```
|
|
305
|
-
|
|
306
193
|
The scan commands, merge-by-origin dedup, the multi-select picker, the `recentProjects` / `serviceStatus` prefs shapes and the skip / degrade rules live in `$HOME/.claude/multi-agent-refs/setup/repo-discovery.md` - read that file when the user opts in.
|
|
307
194
|
|
|
308
195
|
### Step 6 - Remember as Multi-Repo Group (optional)
|
|
309
196
|
|
|
310
|
-
After Step 5, if the user picked **2 or more** repos, offer to remember the combination as a named group. Phase 0's project picker surfaces
|
|
311
|
-
|
|
312
|
-
Auto-skipped if Step 5 was skipped or fewer than 2 repos were selected.
|
|
313
|
-
|
|
314
|
-
**Prompt:**
|
|
315
|
-
```
|
|
316
|
-
Step 6 - Remember as a multi-repo group (optional)
|
|
317
|
-
You picked 2 repos: Checkout, UIComponents.
|
|
318
|
-
|
|
319
|
-
Save this combo for one-tap selection in Phase 0?
|
|
320
|
-
Group name (Enter for auto): [Checkout + UIComponents]
|
|
321
|
-
Skip with 'n'.
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
**Auto-name heuristic** (suggested but editable):
|
|
325
|
-
- 2 repos → `"<repoA> + <repoB>"`
|
|
326
|
-
- 3-4 repos → `"<repoA>, <repoB>, <repoC>(+1)"`
|
|
327
|
-
- 5+ repos → `"<repoA> + <count-1> more"`
|
|
328
|
-
|
|
329
|
-
Repo identifiers in the label are the human label from `recentProjects` (basename of the path, not the full path), so groups stay readable.
|
|
330
|
-
|
|
331
|
-
**Save** (matches schema `global.recentGroups[]` shape - `repos` required, `label` / `count` / `lastUsed` optional):
|
|
332
|
-
|
|
333
|
-
```json
|
|
334
|
-
{
|
|
335
|
-
"global": {
|
|
336
|
-
"recentGroups": [
|
|
337
|
-
{
|
|
338
|
-
"label": "Checkout + UIComponents",
|
|
339
|
-
"repos": ["~/dev/Checkout", "~/dev/UIComponents"],
|
|
340
|
-
"count": 1,
|
|
341
|
-
"lastUsed": "2026-04-15T21:08:00Z"
|
|
342
|
-
}
|
|
343
|
-
]
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
**LRU + dedup rules:**
|
|
349
|
-
- New group → unshift to front of `recentGroups`.
|
|
350
|
-
- Same set of `repos` already exists (order-independent compare) → bump existing entry to front, increment its `count`, update `lastUsed`. Do NOT create a duplicate.
|
|
351
|
-
- Schema cap is 10 entries; oldest LRU entries past the cap are dropped.
|
|
197
|
+
After Step 5, if the user picked **2 or more** repos, offer to remember the combination as a named group in `global.recentGroups[]`, so Phase 0's project picker surfaces it at the top. Auto-skipped if Step 5 was skipped or fewer than 2 repos were selected.
|
|
352
198
|
|
|
353
|
-
|
|
354
|
-
- Single-repo selection → step is a no-op (no group needed for one repo).
|
|
355
|
-
- User answers `n` → not saved; the picker still works for one-time use, and a future Phase 0 selection of the same combo will re-prompt.
|
|
356
|
-
- Step 5 skipped → Step 6 is also skipped (no selection to remember).
|
|
199
|
+
Read `$HOME/.claude/multi-agent-refs/setup/multi-repo-group.md` before Step 6: the prompt, the auto-name heuristic, the saved shape, the LRU + dedup rules and the skip rules.
|
|
357
200
|
|
|
358
201
|
### Step 7 - Platform Identity Routing (optional)
|
|
359
202
|
|
|
@@ -369,28 +212,7 @@ Standard key names are a convention for NEW tokens; discovery may find existing
|
|
|
369
212
|
|
|
370
213
|
### Inline Token Save Pattern
|
|
371
214
|
|
|
372
|
-
All tokens go through `~/.claude/lib/credential-store.sh`
|
|
373
|
-
|
|
374
|
-
```bash
|
|
375
|
-
# PAT / API Key / JSON contents (from clipboard)
|
|
376
|
-
pbpaste | ~/.claude/lib/credential-store.sh set "<SERVICE_NAME>" -
|
|
377
|
-
pbcopy < /dev/null # clear clipboard
|
|
378
|
-
|
|
379
|
-
# Non-secret value typed inline (a secret on argv is visible to ps and lands in shell history)
|
|
380
|
-
~/.claude/lib/credential-store.sh set "<SERVICE_NAME>" "<VALUE>"
|
|
381
|
-
|
|
382
|
-
# Key file from disk (the .p8, the Google Play JSON; or when the clipboard is unavailable)
|
|
383
|
-
~/.claude/lib/credential-store.sh set "<SERVICE_NAME>" - < /path/to/file.json
|
|
384
|
-
|
|
385
|
-
# Read - a JSON value comes back exactly as it was stored, newlines included
|
|
386
|
-
~/.claude/lib/credential-store.sh get "<SERVICE_NAME>"
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
For maximum stdin hygiene (the secret never lands on argv / shell history), use the Python helper directly with the `-` sentinel:
|
|
390
|
-
|
|
391
|
-
```bash
|
|
392
|
-
pbpaste | ~/.claude/scripts/keychain.py set "<SERVICE_NAME>" -
|
|
393
|
-
```
|
|
215
|
+
All tokens go through `~/.claude/lib/credential-store.sh`: a secret from the clipboard via `pbpaste | ~/.claude/lib/credential-store.sh set "<SERVICE_NAME>" -` followed by `pbcopy < /dev/null`, a key file via `- < /path/to/file`, never a secret on argv. Every form, and the Python helper: `$HOME/.claude/multi-agent-refs/setup/token-save-flow.md` "Inline Token Save Pattern".
|
|
394
216
|
|
|
395
217
|
### Figma MCP Setup (Remote / Local question)
|
|
396
218
|
|
|
@@ -406,37 +228,15 @@ Full procedure: `$HOME/.claude/multi-agent-refs/setup/figma.md`. Read it for the
|
|
|
406
228
|
|
|
407
229
|
### Setup from Scratch Summary
|
|
408
230
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
```
|
|
412
|
-
1. Install the toolkit:
|
|
413
|
-
npx @{npm-scope}/multi-agent-pipeline install
|
|
414
|
-
|
|
415
|
-
2. Start setup:
|
|
416
|
-
/multi-agent setup
|
|
417
|
-
|
|
418
|
-
3. Interactive flow:
|
|
419
|
-
-> Token scan (shows what is missing)
|
|
420
|
-
-> Git Identity creation (name + email)
|
|
421
|
-
-> Inline commands for missing tokens
|
|
422
|
-
-> Final verification
|
|
423
|
-
|
|
424
|
-
4. Ready:
|
|
425
|
-
/multi-agent "PROJ-12345"
|
|
426
|
-
/multi-agent "https://github.com/.../issues/42"
|
|
427
|
-
/multi-agent "bug description"
|
|
428
|
-
```
|
|
231
|
+
Install the toolkit (`npx @{npm-scope}/multi-agent-pipeline install`), run `/multi-agent setup`, follow the interactive flow, then start a task. Walkthrough: `$HOME/.claude/multi-agent-refs/setup/summaries.md` "Setup from scratch".
|
|
429
232
|
|
|
430
233
|
All tokens are optional in the sense that every service can be answered with Skip - but the ASKING is not optional: the Step 3 sequential loop still walks every missing service one by one (token → author → host). Phase 0 re-asks at runtime only for tokens the user skipped here.
|
|
431
234
|
|
|
432
235
|
### Step 8 - Enforcement hooks (optional)
|
|
433
236
|
|
|
434
|
-
On Claude Code, offer to merge `$HOME/.claude/templates/claude-hooks.json`: three blocking `PreToolUse` gates (secret scan, agent-guard, read-size) plus
|
|
237
|
+
On Claude Code, offer to merge `$HOME/.claude/templates/claude-hooks.json`: three blocking `PreToolUse` gates (secret scan, agent-guard, read-size) plus non-blocking hooks on `PreCompact`, `SessionEnd`, `SessionStart` and `PostToolUse`, and a `Stop` hook (`run-stop-guard.sh`) that holds a session from stopping mid-run. What each does: `$HOME/.claude/multi-agent-refs/picker-contract.md`.
|
|
435
238
|
|
|
436
|
-
|
|
437
|
-
- On Yes, deep-merge EVERY event in the template's `hooks` object (merging `PreToolUse` alone drops the capture hooks); keep existing hooks, never duplicate a matcher calling the same script.
|
|
438
|
-
- Say only the three gates are hookable (no run-specific arguments); the rest are phase-enforced.
|
|
439
|
-
- Say the read-size gate stays inert until `prefs.global.bulkRead.mode` is set; recommend `observe` first (why, and the Phase 3 exemption: `picker-contract.md`).
|
|
239
|
+
Ask (picker) whether to install the hooks into `~/.claude/settings.json`, default Yes. On Yes, deep-merge EVERY event in the template's `hooks` object and never duplicate a matcher calling the same script. Read `$HOME/.claude/multi-agent-refs/setup/hooks-and-plugins.md` before Step 8: the merge rules and what to tell the user about the gates.
|
|
440
240
|
|
|
441
241
|
Codex: offer only the syntax gate, then run `node "$HOME/.codex/scripts/host-hooks.mjs" install --host codex`. Copilot CLI: offer no hook (it discards `postToolUse` output as of 1.0.45).
|
|
442
242
|
|
|
@@ -448,9 +248,7 @@ Stack skills ship as versioned plugins in the `{owner}/multi-agent-plugins` mark
|
|
|
448
248
|
```bash
|
|
449
249
|
bash "$HOME/.claude/scripts/plugin-refresh.sh" {owner} --add-only
|
|
450
250
|
```
|
|
451
|
-
2. Ask the detector, then derive
|
|
452
|
-
answer, and this one defaulted to `ai-ios-toolkit` when nothing matched - how
|
|
453
|
-
a Next.js site and several Node CLIs ended up with the iOS toolkit.
|
|
251
|
+
2. Ask the detector, then derive (no marker list in this file):
|
|
454
252
|
|
|
455
253
|
```bash
|
|
456
254
|
eval "$(bash $HOME/.claude/lib/stack-detect.sh "$PROJECT_ROOT")" # MA_STACKS, MA_STACK_WHY
|
|
@@ -459,10 +257,7 @@ Stack skills ship as versioned plugins in the `{owner}/multi-agent-plugins` mark
|
|
|
459
257
|
```
|
|
460
258
|
|
|
461
259
|
Report `MA_STACK_WHY` with the result. `ai-common-toolkit` and
|
|
462
|
-
`ai-analyst-toolkit` are in every answer, the empty one included:
|
|
463
|
-
stack-specific. **No marker matched is an answer** - those two, not a guess.
|
|
464
|
-
A name the marketplace does not carry is dropped with `dropped[]` naming it,
|
|
465
|
-
so a toolkit that was never shipped is caught before it fails to load.
|
|
260
|
+
`ai-analyst-toolkit` are in every answer, the empty one included. How the answer is read (empty answers, `dropped[]`): `$HOME/.claude/multi-agent-refs/setup/hooks-and-plugins.md` "Step 9".
|
|
466
261
|
3. Report the enabled set. To change later, run `/multi-agent:stack <ios|android|web|backend|...>` in the repo. Pipeline Phase 1 auto-detects the stack for its own routing regardless of enablement.
|
|
467
262
|
|
|
468
263
|
The marketplace repo name (`multi-agent-plugins`) is generic; a different org points `{owner}` at its own fork - nothing in the pipeline is coupled to a specific account.
|
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
Versions of the client contract (`manifest.json` `contractVersion`), separate
|
|
4
4
|
from the package version. See `README.md` for what counts as minor and major.
|
|
5
5
|
|
|
6
|
+
## 1.7.0
|
|
7
|
+
|
|
8
|
+
Added. Nothing existing changes shape.
|
|
9
|
+
|
|
10
|
+
- `GET /v1/prs/reach` (`work-items.mjs reach`, local-only): for each open GitHub
|
|
11
|
+
pull request (at most 20), how many files in the repository's own code graph
|
|
12
|
+
depend on what it changes, widest first, with a reason when it cannot be
|
|
13
|
+
measured. Changed paths are never returned, only counts.
|
|
14
|
+
|
|
6
15
|
## 1.6.0
|
|
7
16
|
|
|
8
17
|
Added. Nothing existing changes shape.
|
|
@@ -71,6 +71,7 @@ same bytes (`test/contract-parity.test.mjs`):
|
|
|
71
71
|
| Post a review verdict (two steps) | `work-items.mjs verdict ID [--post]` | `POST /v1/runs/{id}/review-verdict` |
|
|
72
72
|
| An issue's maturity | `work-items.mjs maturity KEY` | `GET /v1/issues/{key}/maturity` |
|
|
73
73
|
| Open pull requests | `work-items.mjs prs` | `GET /v1/prs` |
|
|
74
|
+
| How far each open pull request reaches in its repository's graph | `work-items.mjs reach` | `GET /v1/prs/reach` |
|
|
74
75
|
| Toolkit MCP tools | `toolkit-tools.mjs list` | `GET /v1/tools` |
|
|
75
76
|
| Call an allowed toolkit tool (read-only, no location argument) | `toolkit-tools.mjs call NAME JSON` | `POST /v1/tools/{name}/call` |
|
|
76
77
|
| A Confluence page, a Crashlytics issue, a Figma frame | `service-read.mjs confluence\|crashlytics\|figma ...` | `GET /v1/services/{confluence,crashlytics,figma}` |
|
|
@@ -176,8 +177,11 @@ answer to the old one.
|
|
|
176
177
|
- Errors follow `contract-error.schema.json`; switch on `error`, never on
|
|
177
178
|
`message`.
|
|
178
179
|
- Service reads, the work list, the review verdict and autopilot control run
|
|
179
|
-
in child processes and never block other routes
|
|
180
|
-
|
|
180
|
+
in child processes and never block other routes. A second write, or a
|
|
181
|
+
second service read, while the same one runs is 429 `busy`; a read whose
|
|
182
|
+
answer is the same for every caller (`GET /v1/prs`, `GET /v1/autopilot`,
|
|
183
|
+
`GET /v1/issues/{key}/maturity`) is answered from the run already in
|
|
184
|
+
flight instead.
|
|
181
185
|
- The server exits after 15 idle minutes (`--idle-minutes`), after 8 hours in
|
|
182
186
|
any case (`--max-hours`, an open event stream does not extend it) or on
|
|
183
187
|
SIGTERM. It is never a service; start it when you need it.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.7.0",
|
|
3
3
|
"supportedMajors": [1],
|
|
4
4
|
"description": "The pipeline's client contract: every surface a client reads or writes, the CLI invocation and the HTTP route that carry it, and the schema its JSON follows. Schemas are not copied here; schemasDir points at the one tree the producers validate against. Paths in cli are relative to the pipeline directory (installed: ~/.claude).",
|
|
5
5
|
"schemasDir": "../schemas",
|
|
@@ -100,6 +100,7 @@
|
|
|
100
100
|
"run-evidence.schema.json",
|
|
101
101
|
"issue-maturity.schema.json",
|
|
102
102
|
"prs.schema.json",
|
|
103
|
+
"pr-reach.schema.json",
|
|
103
104
|
"review-verdict-request.schema.json",
|
|
104
105
|
"review-verdict.schema.json",
|
|
105
106
|
"tools.schema.json",
|
|
@@ -745,6 +746,18 @@
|
|
|
745
746
|
"remote": "read",
|
|
746
747
|
"risk": "read"
|
|
747
748
|
},
|
|
749
|
+
{
|
|
750
|
+
"id": "prs-reach",
|
|
751
|
+
"method": "GET",
|
|
752
|
+
"path": "/v1/prs/reach",
|
|
753
|
+
"query": [],
|
|
754
|
+
"cli": ["node", "scripts/work-items.mjs", "reach"],
|
|
755
|
+
"schema": "pr-reach.schema.json",
|
|
756
|
+
"version": "1.1.0",
|
|
757
|
+
"note": "Run as a child process so parsing a large graph never holds up other routes. At most 20 GitHub pull requests, three gh calls at a time, each with its account's token in GH_TOKEN. A repository with no graph under ~/.claude/knowledge/<repo name>/ is listed with its reason and costs no gh call.",
|
|
758
|
+
"remote": "local-only",
|
|
759
|
+
"risk": "read"
|
|
760
|
+
},
|
|
748
761
|
{
|
|
749
762
|
"id": "tools",
|
|
750
763
|
"method": "GET",
|