@mmerterden/multi-agent-pipeline 20.2.1 → 20.3.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 +912 -1
- package/README.md +104 -81
- package/README.tr.md +103 -62
- package/docs/FIGMA_PIPELINE.md +35 -35
- package/docs/adr/0006-skills-core-external-split.md +1 -1
- package/docs/adr/0007-multi-tool-adapter-framework.md +6 -0
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +7 -0
- package/docs/architecture.md +50 -14
- package/docs/best-practices.md +1 -1
- package/docs/ecosystem.md +56 -32
- package/docs/facts.json +10 -10
- package/docs/features.md +97 -5
- package/docs/recovery-guide.md +7 -14
- package/docs/server-readiness.md +31 -24
- package/index.js +1 -1
- package/install/_common.mjs +3 -5
- package/install/_platform-filter.mjs +23 -1
- package/install/_unattended-profile.mjs +321 -75
- package/install/claude.mjs +51 -10
- package/install/codex.mjs +2 -0
- package/install/copilot.mjs +2 -0
- package/install/index.mjs +30 -17
- package/install/templates/claude-hooks.json +16 -5
- package/install/templates/copilot-instructions.md +1 -1
- package/install/templates/multi-agent-autopilot-awake.plist.template +48 -0
- package/install/templates/multi-agent-autopilot.plist.template +12 -5
- package/install/unattended-profile-legacy.json +80 -0
- package/manifest.json +616 -483
- package/package.json +8 -3
- package/pipeline/agents/code-reviewer.md +10 -0
- package/pipeline/agents/plan-critic.md +98 -0
- package/pipeline/agents/security-auditor.md +10 -0
- package/pipeline/agents/task-clarifier.md +10 -0
- package/pipeline/commands/multi-agent/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/analysis/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +12 -1
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/autopilot-off/SKILL.md +36 -6
- package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +77 -12
- package/pipeline/commands/multi-agent/autopilot-status/SKILL.md +29 -8
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/channels/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/design-check/SKILL.md +16 -11
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/doctor/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/feedback/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/forget/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/graph/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/help/SKILL.md +37 -39
- package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/issue/SKILL.md +7 -1
- package/pipeline/commands/multi-agent/jira/SKILL.md +7 -1
- package/pipeline/commands/multi-agent/kill/SKILL.md +9 -3
- package/pipeline/commands/multi-agent/language/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/log/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +5 -0
- package/pipeline/commands/multi-agent/model/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/prune-prompts/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/purge/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/refactor/SKILL.md +5 -0
- package/pipeline/commands/multi-agent/research/SKILL.md +49 -0
- package/pipeline/commands/multi-agent/resume/SKILL.md +29 -6
- package/pipeline/commands/multi-agent/review/SKILL.md +28 -9
- package/pipeline/commands/multi-agent/review-analysis/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/review-issue/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/review-jira/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-off/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-on/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-status/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/routines/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/save/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/scaffold/SKILL.md +47 -0
- package/pipeline/commands/multi-agent/scan/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/search/SKILL.md +12 -8
- package/pipeline/commands/multi-agent/security-review/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/serve/SKILL.md +62 -0
- package/pipeline/commands/multi-agent/setup/SKILL.md +27 -36
- package/pipeline/commands/multi-agent/stack/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/status/SKILL.md +10 -9
- package/pipeline/commands/multi-agent/steer/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/store-ready/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/sync/SKILL.md +13 -13
- package/pipeline/commands/multi-agent/test/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-accessibility/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-dark-mode/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-dynamic-type/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-screenshots/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/uninstall/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/update/SKILL.md +4 -0
- package/pipeline/contract/CHANGELOG.md +74 -0
- package/pipeline/contract/README.md +126 -0
- package/pipeline/contract/build.mjs +427 -0
- package/pipeline/contract/fixtures/answer-result.json +11 -0
- package/pipeline/contract/fixtures/error-invalid-request.json +8 -0
- package/pipeline/contract/fixtures/error-unauthorized.json +5 -0
- package/pipeline/contract/fixtures/error-unsigned.json +5 -0
- package/pipeline/contract/fixtures/issues-empty.json +18 -0
- package/pipeline/contract/fixtures/launch-plan.json +31 -0
- package/pipeline/contract/fixtures/runs-awaiting-question.json +70 -0
- package/pipeline/contract/fixtures/runs-empty.json +6 -0
- package/pipeline/contract/fixtures/runs-failed.json +84 -0
- package/pipeline/contract/fixtures/runs-old-schema.json +70 -0
- package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +101 -0
- package/pipeline/contract/fixtures/runs-pr-opened.json +106 -0
- package/pipeline/contract/fixtures/runs-running.json +84 -0
- package/pipeline/contract/fixtures/worktrees-empty.json +4 -0
- package/pipeline/contract/frozen/toolbox.json +107 -0
- package/pipeline/contract/manifest.json +263 -0
- package/pipeline/contract/types/index.d.ts +343 -0
- package/pipeline/lib/_jira-auth.sh +6 -2
- package/pipeline/lib/account-resolver.sh +1 -1
- package/pipeline/lib/autopilot-state.sh +19 -0
- package/pipeline/lib/context-link-extractor.sh +12 -5
- package/pipeline/lib/credential-inventory.sh +12 -5
- package/pipeline/lib/credential-store.sh +116 -185
- package/pipeline/lib/fetch-confluence.sh +44 -3
- package/pipeline/lib/fetch-document.sh +3 -4
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/figma-mcp-refresh.sh +2 -2
- package/pipeline/lib/figma-token.sh +5 -1
- package/pipeline/lib/issue-fetcher.sh +233 -16
- package/pipeline/lib/json-file-lock.mjs +172 -0
- package/pipeline/lib/model-dispatch.sh +21 -12
- package/pipeline/lib/model-rung.sh +6 -1
- package/pipeline/lib/multi-repo-pipeline.sh +1 -1
- package/pipeline/lib/outbound-gate.mjs +46 -16
- package/pipeline/lib/parse-complaints.sh +14 -7
- package/pipeline/lib/plan-todos.sh +3 -3
- package/pipeline/lib/post-pr-review.sh +9 -9
- package/pipeline/lib/pr-request-location.mjs +85 -0
- package/pipeline/lib/regular-file.mjs +153 -0
- package/pipeline/lib/repo-hygiene.sh +17 -0
- package/pipeline/lib/route-state.sh +5 -1
- package/pipeline/lib/run-paths.sh +3 -2
- package/pipeline/lib/stack-detect.sh +19 -1
- package/pipeline/lib/unattended-profile-check.mjs +178 -0
- package/pipeline/lib/unattended-settings-location.mjs +28 -0
- package/pipeline/lib/unattended.mjs +76 -0
- package/pipeline/lib/unattended.sh +32 -0
- package/pipeline/lib/untrusted.mjs +76 -0
- package/pipeline/lib/user-facing.mjs +82 -0
- package/pipeline/lib/user-facing.sh +58 -0
- package/pipeline/multi-agent-refs/_dev-context.md +1 -1
- package/pipeline/multi-agent-refs/analysis/evidence.md +4 -0
- package/pipeline/multi-agent-refs/analysis/locked.md +2 -2
- package/pipeline/multi-agent-refs/analysis/render.md +4 -3
- package/pipeline/multi-agent-refs/analysis/resolve.md +3 -1
- package/pipeline/multi-agent-refs/analysis/synthesis.md +4 -5
- package/pipeline/multi-agent-refs/analysis-template.md +10 -17
- package/pipeline/multi-agent-refs/channels/jira.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +3 -3
- package/pipeline/multi-agent-refs/conventions-defaults.md +32 -32
- package/pipeline/multi-agent-refs/cross-cli-contract.md +10 -17
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +37 -9
- package/pipeline/multi-agent-refs/features/autopilot-operations.md +277 -0
- package/pipeline/multi-agent-refs/features/constitution.md +196 -0
- package/pipeline/multi-agent-refs/features/doctor.md +6 -3
- package/pipeline/multi-agent-refs/features/external-context-injection.md +6 -1
- package/pipeline/multi-agent-refs/features/jira-context.md +1 -1
- package/pipeline/multi-agent-refs/features/maturity-followup.md +43 -23
- package/pipeline/multi-agent-refs/features/model-fallback.md +9 -0
- package/pipeline/multi-agent-refs/features/phone-api.md +306 -0
- package/pipeline/multi-agent-refs/features/plan-critic.md +159 -0
- package/pipeline/multi-agent-refs/features/research.md +150 -0
- package/pipeline/multi-agent-refs/features/review-decision.md +185 -0
- package/pipeline/multi-agent-refs/features/scaffold.md +160 -0
- package/pipeline/multi-agent-refs/features/security-audit.md +6 -2
- package/pipeline/multi-agent-refs/features/skill-conformance.md +4 -1
- package/pipeline/multi-agent-refs/features/stack-adapters.md +116 -0
- package/pipeline/multi-agent-refs/features/unattended-gates.md +316 -0
- package/pipeline/multi-agent-refs/features/unattended-security.md +731 -0
- package/pipeline/multi-agent-refs/features/url-enrichment.md +2 -2
- package/pipeline/multi-agent-refs/features/usage-reporting.md +127 -35
- package/pipeline/multi-agent-refs/features/verify-by-test.md +1 -1
- package/pipeline/multi-agent-refs/features/visual-evidence.md +7 -7
- package/pipeline/multi-agent-refs/keychain.md +6 -11
- package/pipeline/multi-agent-refs/payload-contracts.md +2 -2
- package/pipeline/multi-agent-refs/phases/log-format.md +2 -3
- package/pipeline/multi-agent-refs/phases/modes.md +10 -12
- package/pipeline/multi-agent-refs/phases/operations.md +11 -5
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +73 -81
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +22 -22
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +42 -66
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +45 -79
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +28 -38
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +27 -25
- package/pipeline/multi-agent-refs/phases.md +1 -1
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/progress-contract.md +13 -16
- package/pipeline/multi-agent-refs/readiness-review.md +1 -1
- package/pipeline/multi-agent-refs/research/engine.md +91 -0
- package/pipeline/multi-agent-refs/rules.md +6 -4
- package/pipeline/multi-agent-refs/setup/repo-discovery.md +2 -2
- package/pipeline/multi-agent-refs/tracker-contract.md +2 -2
- package/pipeline/multi-agent-refs/unattended-contract.md +68 -16
- package/pipeline/rules/figma-pipeline.md +12 -12
- package/pipeline/schemas/agent-state.schema.json +480 -18
- package/pipeline/schemas/analysis-spec.schema.json +4 -4
- package/pipeline/schemas/answer-request.schema.json +24 -0
- package/pipeline/schemas/answer-result.schema.json +28 -0
- package/pipeline/schemas/autopilot-config.schema.json +111 -13
- package/pipeline/schemas/command-parameters.schema.json +99 -0
- package/pipeline/schemas/constitution.schema.json +56 -0
- package/pipeline/schemas/contract-error.schema.json +52 -0
- package/pipeline/schemas/design-check-config.schema.json +5 -1
- package/pipeline/schemas/issues.schema.json +61 -0
- package/pipeline/schemas/launch-plan.schema.json +46 -0
- package/pipeline/schemas/launch-request.schema.json +45 -0
- package/pipeline/schemas/launch.json +61 -0
- package/pipeline/schemas/launch.schema.json +84 -0
- package/pipeline/schemas/phases.json +2 -2
- package/pipeline/schemas/phases.schema.json +68 -0
- package/pipeline/schemas/phone-devices.schema.json +61 -0
- package/pipeline/schemas/phone-signed-request.schema.json +67 -0
- package/pipeline/schemas/plan-critique.schema.json +99 -0
- package/pipeline/schemas/plan-todos.schema.json +7 -7
- package/pipeline/schemas/planning-output.schema.json +5 -0
- package/pipeline/schemas/pr-request.schema.json +46 -0
- package/pipeline/schemas/prefs.schema.json +79 -8
- package/pipeline/schemas/research-output.schema.json +118 -0
- package/pipeline/schemas/review-file-exclusions.schema.json +25 -0
- package/pipeline/schemas/reviewer-output.schema.json +40 -4
- package/pipeline/schemas/run-questions.json +392 -0
- package/pipeline/schemas/run-questions.schema.json +118 -0
- package/pipeline/schemas/runs-index.schema.json +189 -0
- package/pipeline/schemas/scaffold-manifest.schema.json +43 -0
- package/pipeline/schemas/secret-patterns.schema.json +28 -0
- package/pipeline/schemas/stack-adapters.json +527 -0
- package/pipeline/schemas/stack-adapters.schema.json +184 -0
- package/pipeline/schemas/token-budget.json +1 -1
- package/pipeline/schemas/token-budget.schema.json +26 -0
- package/pipeline/schemas/triage-output.schema.json +64 -3
- package/pipeline/schemas/unattended-policy.json +139 -0
- package/pipeline/schemas/unattended-policy.schema.json +73 -0
- package/pipeline/schemas/unattended-profile.json +248 -0
- package/pipeline/schemas/unattended-profile.schema.json +198 -0
- package/pipeline/schemas/worktrees.schema.json +51 -0
- package/pipeline/scripts/README.md +1 -0
- package/pipeline/scripts/_autopilot-config.mjs +130 -0
- package/pipeline/scripts/_autopilot-ops.mjs +567 -0
- package/pipeline/scripts/_autopilot-outcomes.mjs +174 -0
- package/pipeline/scripts/_command-contract.mjs +384 -0
- package/pipeline/scripts/_cost.mjs +40 -0
- package/pipeline/scripts/_notices.mjs +160 -0
- package/pipeline/scripts/_phone-auth.mjs +485 -0
- package/pipeline/scripts/_pre-existing.mjs +294 -0
- package/pipeline/scripts/_redact.mjs +77 -0
- package/pipeline/scripts/_run-paths.mjs +4 -2
- package/pipeline/scripts/_stack-adapter.mjs +678 -0
- package/pipeline/scripts/_stack-routing.mjs +1 -1
- package/pipeline/scripts/agent-guard.py +348 -37
- package/pipeline/scripts/agent-guard.sh +41 -13
- package/pipeline/scripts/analysis-story-tree.mjs +79 -3
- package/pipeline/scripts/answer-question.mjs +181 -0
- package/pipeline/scripts/audit-log-rotate.sh +1 -4
- package/pipeline/scripts/audit-log.sh +4 -4
- package/pipeline/scripts/autopilot-arming.mjs +389 -21
- package/pipeline/scripts/autopilot-awake.mjs +255 -0
- package/pipeline/scripts/autopilot-intake.mjs +137 -36
- package/pipeline/scripts/autopilot-menubar.swift +156 -44
- package/pipeline/scripts/autopilot-publish.mjs +1625 -0
- package/pipeline/scripts/autopilot-runner.mjs +1678 -222
- package/pipeline/scripts/autopilot-status.sh +198 -33
- package/pipeline/scripts/build-lock.sh +120 -0
- package/pipeline/scripts/build-references.mjs +4 -1
- package/pipeline/scripts/build-stack-plugins.mjs +59 -22
- package/pipeline/scripts/capture-flush.sh +1 -1
- package/pipeline/scripts/capture-resume.sh +13 -9
- package/pipeline/scripts/check-derived-drift.mjs +52 -11
- package/pipeline/scripts/commands.mjs +88 -0
- package/pipeline/scripts/constitution.mjs +362 -0
- package/pipeline/scripts/contract-server.mjs +776 -0
- package/pipeline/scripts/cost-analyze.mjs +89 -39
- package/pipeline/scripts/diff-explain.mjs +12 -1
- package/pipeline/scripts/doctor.mjs +77 -28
- package/pipeline/scripts/evidence-gate.mjs +192 -12
- package/pipeline/scripts/feedback-send.mjs +4 -2
- package/pipeline/scripts/gate-ledger.mjs +449 -0
- package/pipeline/scripts/gc-abandoned.sh +132 -13
- package/pipeline/scripts/gen-facts.mjs +31 -15
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/github-ssh-setup.sh +140 -29
- package/pipeline/scripts/graph-mermaid.mjs +4 -1
- package/pipeline/scripts/issues.mjs +236 -0
- package/pipeline/scripts/jira-attach.sh +6 -2
- package/pipeline/scripts/jira-search.sh +4 -3
- package/pipeline/scripts/keychain-save.sh +125 -24
- package/pipeline/scripts/keychain.py +63 -93
- package/pipeline/scripts/launch-request.mjs +747 -0
- package/pipeline/scripts/localize-commands.mjs +4 -10
- package/pipeline/scripts/log-metric.sh +6 -5
- package/pipeline/scripts/maturity-followup.mjs +13 -4
- package/pipeline/scripts/memory-save.sh +25 -0
- package/pipeline/scripts/migrate-prefs.mjs +4 -3
- package/pipeline/scripts/open-questions-gate.mjs +276 -0
- package/pipeline/scripts/phase-tracker.sh +41 -27
- package/pipeline/scripts/phase0-exit-gate.mjs +22 -4
- package/pipeline/scripts/phone-devices.mjs +224 -0
- package/pipeline/scripts/plan-coverage-gate.mjs +200 -66
- package/pipeline/scripts/plan-critique-gate.mjs +591 -0
- package/pipeline/scripts/pr-request.mjs +188 -0
- package/pipeline/scripts/pre-commit-check.sh +115 -4
- package/pipeline/scripts/probe-evidence-capability.sh +44 -5
- package/pipeline/scripts/record-phase.mjs +71 -0
- package/pipeline/scripts/render-agent-log-cost.sh +17 -2
- package/pipeline/scripts/render-cost-summary.sh +1 -1
- package/pipeline/scripts/render-work-summary.sh +1 -1
- package/pipeline/scripts/require-supported-version.sh +4 -1
- package/pipeline/scripts/research-gate.mjs +704 -0
- package/pipeline/scripts/review-decision-gate.mjs +403 -0
- package/pipeline/scripts/routine-registry.mjs +5 -2
- package/pipeline/scripts/runs-index.mjs +135 -27
- package/pipeline/scripts/scaffold-gate.mjs +393 -0
- package/pipeline/scripts/skill-conformance.mjs +25 -8
- package/pipeline/scripts/skill-siblings.mjs +2 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +32 -6
- package/pipeline/scripts/smoke-schema-validation.sh +6 -2
- package/pipeline/scripts/spec-consistency-gate.mjs +469 -0
- package/pipeline/scripts/symbol-existence-gate.mjs +450 -0
- package/pipeline/scripts/test-gap-scan.mjs +40 -2
- package/pipeline/scripts/test-integrity-gate.mjs +20 -4
- package/pipeline/scripts/test-strength.mjs +484 -0
- package/pipeline/scripts/test-summary.mjs +651 -0
- package/pipeline/scripts/triage-memory.mjs +49 -9
- package/pipeline/scripts/unattended_policy.py +2786 -0
- package/pipeline/scripts/uninstall.mjs +10 -10
- package/pipeline/scripts/update-issue-progress.sh +1 -1
- package/pipeline/scripts/usage-identity.mjs +288 -0
- package/pipeline/scripts/usage-register.mjs +185 -65
- package/pipeline/scripts/usage-report.mjs +230 -66
- package/pipeline/scripts/validate-complaint-doc.mjs +28 -10
- package/pipeline/scripts/validate-planning.mjs +6 -0
- package/pipeline/scripts/verify-citations.mjs +151 -38
- package/pipeline/scripts/verify.mjs +58 -18
- package/pipeline/scripts/worktree-prepare.sh +126 -0
- package/pipeline/scripts/worktrees.mjs +124 -0
- package/pipeline/scripts/write-state.mjs +48 -17
- package/pipeline/skills/.skill-manifest.json +222 -226
- package/pipeline/skills/.skills-index.json +77 -88
- package/pipeline/skills/shared/README.md +44 -45
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +3 -2
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +10 -9
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +6 -5
- package/pipeline/skills/shared/core/multi-agent-analysis-jira/SKILL.md +11 -3
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +4 -3
- package/pipeline/skills/shared/core/multi-agent-autopilot-off/SKILL.md +32 -6
- package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +66 -8
- package/pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md +27 -9
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +7 -4
- package/pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +7 -5
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-doctor/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-feedback/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +7 -4
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-prune-prompts/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-research/SKILL.md +35 -0
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +7 -3
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +7 -5
- package/pipeline/skills/shared/core/multi-agent-review-analysis/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-scaffold/SKILL.md +30 -0
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +4 -3
- package/pipeline/skills/shared/core/multi-agent-security-review/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-serve/SKILL.md +60 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +7 -8
- package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +10 -10
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-accessibility/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-dark-mode/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-dynamic-type/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-screenshots/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +2 -1
- package/pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md +46 -0
- package/pipeline/skills/shared/external/NOTICE-dimillian-skills.md +9 -3
- package/pipeline/skills/shared/external/NOTICE-paul-hudson-skills.md +54 -0
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +9 -11
- package/pipeline/skills/shared/external/NOTICE-vibeship-spawner-skills.md +203 -0
- package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +10 -3
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +131 -25
- package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -3
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/android-architecture/SKILL.md +85 -76
- package/pipeline/skills/shared/external/android-build-quality-gates/SKILL.md +51 -3
- package/pipeline/skills/shared/external/android-build-quality-gates/references/patterns.md +9 -0
- package/pipeline/skills/shared/external/android-datastore/SKILL.md +4 -3
- package/pipeline/skills/shared/external/android-design-tokens-codegen/SKILL.md +4 -3
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +106 -181
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/references/patterns.md +147 -0
- package/pipeline/skills/shared/external/android-mvi-viewmodel/SKILL.md +45 -4
- package/pipeline/skills/shared/external/android-performance/SKILL.md +27 -2
- package/pipeline/skills/shared/external/android-performance/references/patterns.md +37 -37
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +111 -67
- package/pipeline/skills/shared/external/api-patterns/references/contract-details.md +128 -0
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +136 -186
- package/pipeline/skills/shared/external/api-security-best-practices/references/abuse-controls.md +140 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/identity-and-access.md +207 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/operations.md +66 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/request-handling.md +175 -0
- package/pipeline/skills/shared/external/app-clips/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +4 -3
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +2 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +2 -0
- package/pipeline/skills/shared/external/architecture/SKILL.md +106 -39
- package/pipeline/skills/shared/external/architecture/references/adr-and-review.md +76 -0
- package/pipeline/skills/shared/external/authentication/SKILL.md +2 -0
- package/pipeline/skills/shared/external/avkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +2 -1
- package/pipeline/skills/shared/external/backlog/SKILL.md +3 -2
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +2 -0
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +3 -2
- package/pipeline/skills/shared/external/clean-code/SKILL.md +192 -90
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +2 -1
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/compose-components/SKILL.md +4 -4
- package/pipeline/skills/shared/external/compose-navigation/SKILL.md +22 -22
- package/pipeline/skills/shared/external/compose-navigation/references/patterns.md +10 -10
- package/pipeline/skills/shared/external/compose-testing/SKILL.md +13 -6
- package/pipeline/skills/shared/external/compose-testing/references/patterns.md +59 -59
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +2 -0
- package/pipeline/skills/shared/external/context-compression/SKILL.md +118 -250
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-data/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +2 -0
- package/pipeline/skills/shared/external/coreml/SKILL.md +2 -1
- package/pipeline/skills/shared/external/council/SKILL.md +2 -1
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +2 -0
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +130 -20
- package/pipeline/skills/shared/external/debugging-strategies/references/hard-cases.md +54 -0
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +2 -0
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +137 -381
- package/pipeline/skills/shared/external/docker-expert/references/patterns.md +98 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +3 -1
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +116 -185
- package/pipeline/skills/shared/external/fastapi-pro/references/app-structure.md +235 -0
- package/pipeline/skills/shared/external/fastapi-pro/references/testing-and-deployment.md +69 -0
- package/pipeline/skills/shared/external/firebase/SKILL.md +4 -3
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +151 -293
- package/pipeline/skills/shared/external/github-actions-templates/references/patterns.md +96 -0
- package/pipeline/skills/shared/external/healthkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +69 -72
- package/pipeline/skills/shared/external/hig-components-content/references/content-views.md +111 -0
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +77 -86
- package/pipeline/skills/shared/external/hig-components-layout/references/containers.md +98 -0
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +150 -78
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +76 -97
- package/pipeline/skills/shared/external/hig-components-system/references/surfaces.md +98 -0
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +48 -76
- package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +132 -0
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +147 -106
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +61 -77
- package/pipeline/skills/shared/external/hig-patterns/references/patterns.md +92 -0
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +147 -77
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +61 -121
- package/pipeline/skills/shared/external/hig-technologies/references/technologies.md +108 -0
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +2 -0
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +3 -2
- package/pipeline/skills/shared/external/humanizer/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +2 -0
- package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-coding-standard/references/STANDARD.md +14 -2
- package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +2 -2
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +4 -3
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +8 -6
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +11 -11
- package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +2 -0
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +2 -0
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +102 -193
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/references/patterns.md +103 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +4 -2
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +7 -9
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +3 -3
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +2 -2
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +4 -3
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +5 -3
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +2 -0
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +2 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +149 -46
- package/pipeline/skills/shared/external/monorepo-architect/references/patterns.md +70 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +2 -0
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/natural-language/SKILL.md +2 -0
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +3 -2
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +91 -21
- package/pipeline/skills/shared/external/nodejs-backend-patterns/references/runtime-patterns.md +247 -0
- package/pipeline/skills/shared/external/nodejs-backend-patterns/references/testing-and-frameworks.md +57 -0
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +155 -232
- package/pipeline/skills/shared/external/observability-engineer/references/patterns.md +75 -0
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +2 -0
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +18 -18
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +2 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +2 -1
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +2 -0
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +3 -2
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +2 -2
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +3 -2
- package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +7 -7
- package/pipeline/skills/shared/external/retrofit-networking/references/patterns.md +69 -69
- package/pipeline/skills/shared/external/room-database/references/patterns.md +126 -126
- package/pipeline/skills/shared/external/search-first/SKILL.md +2 -1
- package/pipeline/skills/shared/external/security-review/SKILL.md +4 -3
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +2 -2
- package/pipeline/skills/shared/external/signal-community/SKILL.md +1 -1
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +2 -1
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +2 -1
- package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +2 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swift-security/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +10 -0
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +4 -3
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +3 -2
- package/pipeline/skills/shared/external/tipkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +2 -0
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +3 -2
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +3 -2
- package/pipeline/skills/shared/external/web-performance/SKILL.md +3 -2
- package/pipeline/skills/shared/external/web-testing/SKILL.md +3 -2
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +1 -1
- package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +2 -0
- package/pipeline/skills/skills-index.md +40 -41
- package/docs/token-budget-history.md +0 -24
- package/pipeline/skills/shared/external/agentflow/SKILL.md +0 -199
- package/pipeline/skills/shared/external/android-ui-verification/SKILL.md +0 -66
- package/pipeline/skills/shared/external/api-security-best-practices/references/auth.md +0 -299
- package/pipeline/skills/shared/external/api-security-best-practices/references/input-validation.md +0 -255
- package/pipeline/skills/shared/external/api-security-best-practices/references/rate-limiting.md +0 -167
- package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +0 -116
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +0 -216
package/docs/architecture.md
CHANGED
|
@@ -34,12 +34,12 @@ graph LR
|
|
|
34
34
|
N0[Init] --> N1[Plan] --> N2[Dev] --> N3[Review] --> N4[Commit] --> N5[Report]
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
subgraph
|
|
38
|
-
|
|
37
|
+
subgraph Autopilot ["Autopilot (skip confirmations, quality gates on)"]
|
|
38
|
+
A0[Init] --> A1[Plan] --> A2[Dev] --> A3[Review] --> A4[Commit] --> A5[Report]
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
subgraph
|
|
42
|
-
|
|
41
|
+
subgraph Unattended ["Continuous mode (MULTI_AGENT_UNATTENDED=1)"]
|
|
42
|
+
U0[Init] --> U1[Plan] --> U2[Dev] --> U3[Review] --> U4[Commit<br/>PR request] --> UR[Runner verifies<br/>and opens a draft PR]
|
|
43
43
|
end
|
|
44
44
|
```
|
|
45
45
|
|
|
@@ -113,16 +113,16 @@ graph TB
|
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
subgraph "Pipeline Specs"
|
|
116
|
-
CMD[commands/<br/>
|
|
117
|
-
AGT[agents/<br/>
|
|
118
|
-
RUL[rules/<br/>
|
|
116
|
+
CMD[commands/<br/>61 command files]
|
|
117
|
+
AGT[agents/<br/>10 agent personas]
|
|
118
|
+
RUL[rules/<br/>13 domain rules]
|
|
119
119
|
PHS[multi-agent-refs/phases/<br/>phase specs + contracts]
|
|
120
120
|
CMP[skills/shared/core/<br/>orchestration skills<br/>incl. compliance]
|
|
121
121
|
EXT["skills/shared/external/<br/>151 curated skills<br/>(authoring source for the<br/>multi-agent-plugins marketplace)"]
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
subgraph "Quality Gates"
|
|
125
|
-
SCH[schemas/<br/>
|
|
125
|
+
SCH[schemas/<br/>JSON schemas + validated data]
|
|
126
126
|
EVL[eval/triage/<br/>11 regression fixtures]
|
|
127
127
|
SMK[scripts/smoke-*<br/>100+ smoke suites]
|
|
128
128
|
end
|
|
@@ -159,20 +159,56 @@ User Input → Phase 0 (Init)
|
|
|
159
159
|
agent-log.md + agent-state.json (final)
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
+
## Unattended Autopilot (continuous mode)
|
|
163
|
+
|
|
164
|
+
```mermaid
|
|
165
|
+
graph TD
|
|
166
|
+
TICK["launchd tick<br/>autopilot-runner.mjs"]
|
|
167
|
+
ARM["Arm: cost ceiling · circuit breaker ·<br/>credential probe · parallel cap"]
|
|
168
|
+
TAKE["Take the head of the queue<br/>(one run per repo)"]
|
|
169
|
+
RUN["claude --bg child in a worktree<br/>MULTI_AGENT_UNATTENDED=1 · agent-guard fail-closed"]
|
|
170
|
+
GATES["Gate ledger: symbol existence · open questions ·<br/>plan critique · spec consistency · evidence ·<br/>test strength · citations · review decision · plan coverage"]
|
|
171
|
+
PARK{"Parked on maturity<br/>or open questions?"}
|
|
172
|
+
RESEARCH["/multi-agent:research --autonomous<br/>research-gate.mjs decides"]
|
|
173
|
+
REQ["Phase 4: commit + pr-request.json<br/>(no push from the session)"]
|
|
174
|
+
PUB["autopilot-publish.mjs: re-run build + tests,<br/>re-check ledger, secrets, outbound gate"]
|
|
175
|
+
PR["Push from a clean staging repo<br/>gh pr create --draft"]
|
|
176
|
+
HUMAN["A person reviews and merges"]
|
|
177
|
+
VF["verification-failed<br/>(verdict on disk)"]
|
|
178
|
+
|
|
179
|
+
TICK --> ARM --> TAKE --> RUN
|
|
180
|
+
RUN --> PARK
|
|
181
|
+
PARK -->|yes| RESEARCH
|
|
182
|
+
RESEARCH -->|proceed| RUN
|
|
183
|
+
RESEARCH -->|gaps left| WAIT["Parked for a person"]
|
|
184
|
+
PARK -->|no| GATES --> REQ --> PUB
|
|
185
|
+
PUB -->|pass| PR --> HUMAN
|
|
186
|
+
PUB -->|fail| VF
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
The session can build, test and commit inside its worktree; everything that
|
|
190
|
+
leaves the machine goes through the runner, after the runner checked it again
|
|
191
|
+
outside the session. With the variable unset none of this runs, and an attended
|
|
192
|
+
run behaves as before. Detail:
|
|
193
|
+
[`unattended-contract.md`](../pipeline/multi-agent-refs/unattended-contract.md),
|
|
194
|
+
[`unattended-security.md`](../pipeline/multi-agent-refs/features/unattended-security.md),
|
|
195
|
+
[`unattended-gates.md`](../pipeline/multi-agent-refs/features/unattended-gates.md),
|
|
196
|
+
[`autopilot-operations.md`](../pipeline/multi-agent-refs/features/autopilot-operations.md).
|
|
197
|
+
|
|
162
198
|
## Ecosystem Sync Targets
|
|
163
199
|
|
|
164
|
-
`/multi-agent:sync`
|
|
165
|
-
|
|
166
|
-
(`multi-agent-plugins`, `multi-agent-toolkit-mcp`)
|
|
200
|
+
`/multi-agent:sync` walks **six** targets: Copilot CLI, Codex CLI, the pipeline
|
|
201
|
+
repo and the website, plus the two independently shipped repos
|
|
202
|
+
(`multi-agent-plugins`, `multi-agent-toolkit-mcp`):
|
|
167
203
|
|
|
168
204
|
```mermaid
|
|
169
205
|
graph TD
|
|
170
206
|
CC["Claude Code<br/>(source of truth)"]
|
|
171
|
-
COP["Copilot CLI<br/>(instructions +
|
|
172
|
-
COD["Codex CLI<br/>(1 router skill +
|
|
207
|
+
COP["Copilot CLI<br/>(instructions + 61 sub-command skills)"]
|
|
208
|
+
COD["Codex CLI<br/>(1 router skill + 61 refs)"]
|
|
173
209
|
REPO["Pipeline Repo<br/>(npm package)"]
|
|
174
210
|
WEB["Website"]
|
|
175
|
-
PLUGREPO["multi-agent-plugins<br/>(
|
|
211
|
+
PLUGREPO["multi-agent-plugins<br/>(6 plugins, own repo)"]
|
|
176
212
|
DTK["multi-agent-toolkit-mcp<br/>(own repo, own release cadence)"]
|
|
177
213
|
|
|
178
214
|
CC -->|copy + reformat| COP
|
package/docs/best-practices.md
CHANGED
|
@@ -17,7 +17,7 @@ npx @mmerterden/multi-agent-pipeline install --link
|
|
|
17
17
|
|
|
18
18
|
**Rule**: When a bug or test failure is discovered during development, fix it immediately before continuing with the current task. Never defer fixes to "later".
|
|
19
19
|
|
|
20
|
-
Applied in Phase
|
|
20
|
+
Applied in Phase 2 (Dev):
|
|
21
21
|
|
|
22
22
|
- If a test fails → fix the failing test before writing new code
|
|
23
23
|
- If lint errors appear → fix them before the next TDD cycle
|
package/docs/ecosystem.md
CHANGED
|
@@ -5,9 +5,9 @@ separately, wired together at install time and at run time:
|
|
|
5
5
|
|
|
6
6
|
| Repo | What it owns | Ships as |
|
|
7
7
|
|---|---|---|
|
|
8
|
-
| **`multi-agent-pipeline`** (this repo) | Orchestration: the 6-phase flow, the
|
|
9
|
-
| **`multi-agent-plugins`** | Stack knowledge: per-platform component/lifecycle skills (iOS, Android, Frontend, Backend) + shared knowledge | Claude Code marketplace,
|
|
10
|
-
| **`multi-agent-toolkit-mcp`** | The pipeline's hands on devices and browsers:
|
|
8
|
+
| **`multi-agent-pipeline`** (this repo) | Orchestration: the 6-phase flow, the 61 slash commands, quality gates, review/triage, cross-CLI parity | npm package (`@mmerterden/multi-agent-pipeline`), installs itself onto Claude Code / Copilot CLI / Codex CLI |
|
|
9
|
+
| **`multi-agent-plugins`** | Stack knowledge: per-platform component/lifecycle skills (iOS, Android, Frontend, Backend) + shared knowledge | Claude Code marketplace, 6 independently-versioned plugins |
|
|
10
|
+
| **`multi-agent-toolkit-mcp`** | The pipeline's hands on devices and browsers: 118 MCP tools across 14 categories (simulator/emulator control, memory, crash diagnostics, accessibility audit, store compliance, web automation, Figma-vs-mock design audit, code intelligence, wallet passes, an agent-DSL batch runner, a full-text context index, provider-backed research, video key frames, offline security scoring) | npm package, registered as a standard stdio MCP server on every host |
|
|
11
11
|
|
|
12
12
|
None of the three depends on the others at the code level. They compose through two
|
|
13
13
|
narrow contracts: the **Skill tool** (pipeline → plugin, at Phase 2) and the **MCP
|
|
@@ -18,7 +18,7 @@ Either can be swapped or removed without touching the other two's source.
|
|
|
18
18
|
graph LR
|
|
19
19
|
subgraph PIPE ["multi-agent-pipeline (orchestrator)"]
|
|
20
20
|
direction TB
|
|
21
|
-
PHASES["6 phases ·
|
|
21
|
+
PHASES["6 phases · 61 commands"]
|
|
22
22
|
GATES["deterministic gates + review triage"]
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -39,8 +39,8 @@ graph LR
|
|
|
39
39
|
CRASH["Crash Diagnostics (2)"]
|
|
40
40
|
A11Y["Accessibility Audit (3)"]
|
|
41
41
|
STORE["Store Compliance (5)"]
|
|
42
|
-
WEB["Web Automation (
|
|
43
|
-
DESIGN["Design Audit (
|
|
42
|
+
WEB["Web Automation (18)"]
|
|
43
|
+
DESIGN["Design Audit (7)"]
|
|
44
44
|
CODE["Code Intelligence (8)"]
|
|
45
45
|
PASS["Wallet Passes (4)"]
|
|
46
46
|
AGENTDSL["Agent DSL (2)"]
|
|
@@ -57,23 +57,23 @@ graph LR
|
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
60
|
-
## 1. Authoring flow: one source of truth,
|
|
60
|
+
## 1. Authoring flow: one source of truth, six sync targets
|
|
61
61
|
|
|
62
62
|
`~/.claude/` on the maintainer's machine is authoritative. Everything else is a
|
|
63
63
|
derived, synced, or independently-shipped artifact. `/multi-agent:sync` is the one
|
|
64
|
-
command that walks all
|
|
64
|
+
command that walks all six targets in order, detects which are stale, and updates
|
|
65
65
|
only those:
|
|
66
66
|
|
|
67
67
|
```mermaid
|
|
68
68
|
graph TD
|
|
69
69
|
CC["Claude Code<br/>~/.claude/commands/multi-agent/<br/>(source of truth)"]
|
|
70
70
|
|
|
71
|
-
CC -->|"Step 2: copy + reformat<br/>
|
|
72
|
-
CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill +
|
|
71
|
+
CC -->|"Step 2: copy + reformat<br/>61 sub-command skills"| COP["Copilot CLI<br/>~/.copilot/skills/"]
|
|
72
|
+
CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill + 61 refs<br/>+ 10 agent TOML"]
|
|
73
73
|
CC -->|"Step 3: genericize<br/>(strip personal data)"| REPO["multi-agent-pipeline repo<br/>pipeline/"]
|
|
74
74
|
CC -->|"Step 4: version + feature sync"| WEB["Website<br/>projects.ts / i18n.tsx"]
|
|
75
75
|
|
|
76
|
-
REPO -->|"Step 3c: build-stack-plugins.mjs<br/>rebuilds knowledge/ from<br/>shared/external"| PLUGREPO["multi-agent-plugins repo<br/>(
|
|
76
|
+
REPO -->|"Step 3c: build-stack-plugins.mjs<br/>rebuilds knowledge/ from<br/>shared/external"| PLUGREPO["multi-agent-plugins repo<br/>(6 plugins)"]
|
|
77
77
|
|
|
78
78
|
DTK2["multi-agent-toolkit-mcp repo<br/>(own codebase, own gates,<br/>NOT generated from Claude)"]
|
|
79
79
|
SYNC3D["Step 3d: detect movement →<br/>gate → commit → publish"]
|
|
@@ -89,7 +89,7 @@ graph TD
|
|
|
89
89
|
style DTK2 fill:#dff,stroke:#333,stroke-dasharray: 5 5
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
**Why `multi-agent-toolkit-mcp` is drawn differently.** The other
|
|
92
|
+
**Why `multi-agent-toolkit-mcp` is drawn differently.** The other five targets are *derived*
|
|
93
93
|
from the Claude Code source - sync writes their content. `multi-agent-toolkit-mcp` is not:
|
|
94
94
|
it's a separate codebase developed on its own schedule. Sync's Step 3d only
|
|
95
95
|
*detects* whether it moved (dirty tree, unpushed commits, untagged version), runs
|
|
@@ -106,18 +106,18 @@ hand-authored *inside* `multi-agent-plugins` and are never touched by sync.
|
|
|
106
106
|
|
|
107
107
|
---
|
|
108
108
|
|
|
109
|
-
## 2. Plugin marketplace build: one authoring source,
|
|
109
|
+
## 2. Plugin marketplace build: one authoring source, six versioned artifacts
|
|
110
110
|
|
|
111
111
|
```mermaid
|
|
112
112
|
graph TD
|
|
113
|
-
EXT["pipeline/skills/shared/external/<br/>
|
|
113
|
+
EXT["pipeline/skills/shared/external/<br/>154 skills - single authoring source<br/>(the pipeline's own phases read these too)"]
|
|
114
114
|
|
|
115
|
-
EXT -->|"cross-stack skills"| COMMONP["ai-common-toolkit<br/>
|
|
116
|
-
EXT -->|"outside facts for analysis"| ANAP["ai-analyst-toolkit<br/>5 skills · v0.1.
|
|
117
|
-
EXT -->|"Apple/Xcode-only"| IOSP["ai-ios-toolkit<br/>
|
|
118
|
-
EXT -->|"Android/Kotlin-only"| ANDP["ai-android-toolkit<br/>
|
|
119
|
-
EXT -->|"backend-only"| BEP["ai-backend-toolkit<br/>
|
|
120
|
-
EXT -->|"web/frontend-only"| FEP["ai-frontend-toolkit<br/>
|
|
115
|
+
EXT -->|"cross-stack skills"| COMMONP["ai-common-toolkit<br/>12 skills · v0.3.6"]
|
|
116
|
+
EXT -->|"outside facts for analysis"| ANAP["ai-analyst-toolkit<br/>5 skills · v0.1.8"]
|
|
117
|
+
EXT -->|"Apple/Xcode-only"| IOSP["ai-ios-toolkit<br/>136 skills · v0.16.0"]
|
|
118
|
+
EXT -->|"Android/Kotlin-only"| ANDP["ai-android-toolkit<br/>36 skills · v0.3.0"]
|
|
119
|
+
EXT -->|"backend-only"| BEP["ai-backend-toolkit<br/>34 skills · v0.2.3"]
|
|
120
|
+
EXT -->|"web/frontend-only"| FEP["ai-frontend-toolkit<br/>26 skills · v0.2.2"]
|
|
121
121
|
|
|
122
122
|
COMMONP --> BUMP{"skill set<br/>changed?"}
|
|
123
123
|
ANAP --> BUMP
|
|
@@ -133,12 +133,16 @@ graph TD
|
|
|
133
133
|
style EXT fill:#ffd,stroke:#333
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
136
|
+
The plugins' skill counts sum to more than the 154-skill source because each
|
|
137
|
+
plugin also carries its own authored `reference/`, `workflow/` and `tools/`
|
|
138
|
+
skills and an `index` router. A vendored knowledge skill ships in exactly one
|
|
139
|
+
plugin: cross-stack skills go to `ai-common-toolkit` rather than into every
|
|
140
|
+
stack plugin, and the marketplace's `tools/validate.py` fails a skill that
|
|
141
|
+
appears in two. Each vendored skill's `NOTICE-*.md` ships beside it, listing the
|
|
142
|
+
skills it covers, and the builder refuses to write when a NOTICE and the skills'
|
|
143
|
+
`metadata.source` disagree. Versioning is per-plugin and patch-only from this
|
|
144
|
+
generator - a repo enabling only `ai-ios-toolkit` never pulls an Android-only
|
|
145
|
+
change.
|
|
142
146
|
|
|
143
147
|
**Consumption is pull, not push.** A consumer repo enables a stack plugin once
|
|
144
148
|
(`/multi-agent:stack ios`, writing the enabled-plugins list into
|
|
@@ -157,7 +161,7 @@ measurements behind this table):
|
|
|
157
161
|
|
|
158
162
|
| | Claude Code | Copilot CLI | Codex CLI |
|
|
159
163
|
|---|---|---|---|
|
|
160
|
-
| **Pipeline commands** |
|
|
164
|
+
| **Pipeline commands** | 61 slash-command skills, native | 61 sub-command skills, `multi-agent-{cmd}` naming, copied in | 1 router skill (`multi-agent`) + 61 command specs as reference files - Codex silently truncates its skills block past a few dozen entries, so sub-commands are not peer skills here |
|
|
161
165
|
| **Stack plugins** | Marketplace plugin, loaded natively, resolved by `.claude/settings.json` enabled-list | Enabled plugin's authored skills copied flat into `~/.copilot/skills/`; `knowledge/` **not** re-copied (already delivered via `shared/external`) | Copied as reference files under `~/.codex/multi-agent-refs/skills/`, plugin-prefixed on name clash (e.g. `architecture` → `ai-ios-toolkit-architecture`) |
|
|
162
166
|
| **Component dispatch (Phase 3)** | Marketplace plugin's `create-component`/`create-screen` skill via the Skill tool | No plugin loader - the enabled stack plugin's authored skills (incl. `create-component`) are copied flat into `~/.copilot/skills/` at install time (the old frozen `figma-*` copies are pruned, they were never a fallback) | Not part of the enforced parity axis; classification + state-shape must match, skill *inventory* does not |
|
|
163
167
|
| **multi-agent-toolkit-mcp** | `claude mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` | `copilot mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` | `codex mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` (skipped with a warning if `codex` isn't on `PATH`) |
|
|
@@ -199,6 +203,11 @@ lifecycle (test → code → build → wiki) and reports back a coarse
|
|
|
199
203
|
a plugin failure counts against the pipeline's own retry cap (`retryCount === 3` →
|
|
200
204
|
hard stop, per `component-dispatch.md`).
|
|
201
205
|
|
|
206
|
+
**`/multi-agent:scaffold` → plugin** uses the same seam for a new project: the
|
|
207
|
+
enabled toolkit's `scaffold` skill writes the skeleton and a `.scaffold.json`
|
|
208
|
+
manifest, and the pipeline judges the result with the stack adapter's build,
|
|
209
|
+
test and lint commands before the first commit.
|
|
210
|
+
|
|
202
211
|
**Phase 3 (and design-check / store-ready) → multi-agent-toolkit** is a long-lived MCP
|
|
203
212
|
session, not a one-shot call: the same stdio server process answers many tool
|
|
204
213
|
calls across a phase (boot simulator once, then screenshot/tap/screenshot/tap...).
|
|
@@ -209,16 +218,30 @@ e.g. `apple-archive-compliance` requires `ios_app_store_audit` from
|
|
|
209
218
|
that drops or renames a tool a pipeline skill depends on is a **major** bump, by
|
|
210
219
|
that step's own contract).
|
|
211
220
|
|
|
221
|
+
### Unattended runs and the toolkit
|
|
222
|
+
|
|
223
|
+
An autopilot run nobody watches uses the same MCP contract, narrowed by the
|
|
224
|
+
runner before it launches the session. The child gets
|
|
225
|
+
`MCP_TOOLKIT_URL_POLICY=strict` and `MCP_TOOLKIT_INDEX_DENY` (the runner refuses to launch without the guard
|
|
226
|
+
registered, and `launch.json` carries both). Under `strict` the toolkit's web
|
|
227
|
+
tools refuse loopback, private, link-local and metadata addresses on every
|
|
228
|
+
request the browser makes, and `context_*` will not index or return the denied
|
|
229
|
+
paths. On top of that the pipeline's guard holds `WebFetch` and the `web_*`
|
|
230
|
+
tools to its own network allowlist and refuses `web_eval`; the unattended
|
|
231
|
+
permission profile denies the `research_*` tools.
|
|
232
|
+
|
|
233
|
+
Detail: [`unattended-security.md`](../pipeline/multi-agent-refs/features/unattended-security.md).
|
|
234
|
+
|
|
212
235
|
### multi-agent-toolkit-mcp's tools, by category
|
|
213
236
|
|
|
214
|
-
|
|
215
|
-
at toolkit 3.
|
|
237
|
+
118 tools in 14 categories, counted from the server's own `tools/list` response
|
|
238
|
+
at toolkit 3.14.0 rather than from a README. Three families are defined in
|
|
216
239
|
modules the main file only spreads in, so a count taken from the source reads
|
|
217
240
|
low; the response is the only place the whole surface appears at once.
|
|
218
241
|
|
|
219
242
|
The families can be narrowed per host: `MCP_TOOLKIT_CAPS` serves only the named
|
|
220
|
-
ones, and unset serves all
|
|
221
|
-
sees 29 tools instead of
|
|
243
|
+
ones, and unset serves all 118. A frontend repo that sets `web,code,context`
|
|
244
|
+
sees 29 tools instead of 118, which matters because every registered server's
|
|
222
245
|
tool list is charged against the context window on every turn.
|
|
223
246
|
|
|
224
247
|
| Category | Tools | Primary pipeline consumers |
|
|
@@ -229,13 +252,14 @@ tool list is charged against the context window on every turn.
|
|
|
229
252
|
| Accessibility Audit | 3 (`ios_accessibility_audit`, `android_accessibility_audit`, `ios_accessibility_audit_deep`) | `/multi-agent:test` accessibility scenario, `test-accessibility` |
|
|
230
253
|
| Store Compliance | 5 | `store-ready`, `testflight-validation`, `apple-archive-compliance` skill, Phase 3 Security Auditor |
|
|
231
254
|
| Web Automation | 18 | frontend-stack UI testing (via `test`); snapshot `ref` targeting, console/network capture, readable extraction and a bounded same-origin crawl |
|
|
232
|
-
| Design Audit |
|
|
255
|
+
| Design Audit | 7 | `design-check` (mock-mode vs Figma conformance, component variants) |
|
|
233
256
|
| Autonomous Agent DSL | 2 (`agent_run_steps`, `agent_query_output`) | any skill that needs a scripted multi-step device flow in one round trip |
|
|
234
257
|
| Code Intelligence | 8 (`code_definition`, `code_references`, `code_hover`, `code_diagnostics`, `code_document_symbols`, `code_workspace_symbols`, `code_index_status`, `code_server_reset`) | `/multi-agent:refactor`, Phase 3 reviewers needing a real symbol graph rather than grep |
|
|
235
258
|
| Wallet Passes | 4 (`pass_build`, `pass_validate`, `pass_inspect`, `pass_certificates`) | pass-kit work outside the pipeline; no pipeline phase consumes them |
|
|
236
259
|
| Context Index | 3 (`context_index`, `context_search`, `context_get`) | any skill holding an offloaded payload too large to read; ranks passages instead of grepping lines |
|
|
237
260
|
| Research | 2 (`research_search`, `research_ask`) | closes the parity exemption that had web search outside the MCP channel |
|
|
238
261
|
| Media | 1 (`media_frames`) | Phase 2 visual evidence: turns a screen recording into frames a reviewer and a model can both look at |
|
|
262
|
+
| Security | 2 (`security_cvss_score`, `security_dep_inventory`) | the Phase 3 Step 2.7 security audit (`security-auditor`) and `/multi-agent:security-review`; offline, no egress |
|
|
239
263
|
|
|
240
264
|
---
|
|
241
265
|
|
package/docs/facts.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "Generated by pipeline/scripts/gen-facts.mjs. Do not hand-edit: the site reads this, and a number edited here instead of at its source is the drift this file removes.",
|
|
3
|
-
"generatedAt": "2026-09-
|
|
4
|
-
"version": "20.
|
|
3
|
+
"generatedAt": "2026-09-25",
|
|
4
|
+
"version": "20.3.0",
|
|
5
5
|
"phaseSchema": 2,
|
|
6
6
|
"phases": [
|
|
7
7
|
{
|
|
@@ -35,18 +35,18 @@
|
|
|
35
35
|
"autopilot": [0, 1, 2, 3, 4, 5],
|
|
36
36
|
"analysis": [0, 1, 3, 4, 5]
|
|
37
37
|
},
|
|
38
|
-
"commandCount":
|
|
39
|
-
"skillCount":
|
|
40
|
-
"skillCountAll":
|
|
41
|
-
"agentCount":
|
|
38
|
+
"commandCount": 61,
|
|
39
|
+
"skillCount": 154,
|
|
40
|
+
"skillCountAll": 218,
|
|
41
|
+
"agentCount": 10,
|
|
42
42
|
"hosts": ["Claude Code", "Codex CLI", "Copilot CLI"],
|
|
43
|
-
"toolCount":
|
|
43
|
+
"toolCount": 118,
|
|
44
44
|
"toolCategories": {
|
|
45
45
|
"ios": 40,
|
|
46
46
|
"android": 31,
|
|
47
47
|
"web": 18,
|
|
48
48
|
"code": 8,
|
|
49
|
-
"design":
|
|
49
|
+
"design": 7,
|
|
50
50
|
"pass": 4,
|
|
51
51
|
"context": 3,
|
|
52
52
|
"agent": 2,
|
|
@@ -54,6 +54,6 @@
|
|
|
54
54
|
"security": 2,
|
|
55
55
|
"media": 1
|
|
56
56
|
},
|
|
57
|
-
"pluginSkillCount":
|
|
58
|
-
"toolkitVersion": "3.
|
|
57
|
+
"pluginSkillCount": 245,
|
|
58
|
+
"toolkitVersion": "3.15.0"
|
|
59
59
|
}
|
package/docs/features.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
Comprehensive list of every feature the pipeline ships. The top-level `README.md` only highlights the 5-7 most important; this file is the complete catalog.
|
|
4
4
|
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [Core Pipeline](#core-pipeline)
|
|
8
|
+
- [PR & Review Flow](#pr--review-flow)
|
|
9
|
+
- [Review Quality](#review-quality)
|
|
10
|
+
- [Autopilot (unattended)](#autopilot-unattended)
|
|
11
|
+
- [Safety & Hygiene](#safety--hygiene)
|
|
12
|
+
- [Testing & Quality](#testing--quality)
|
|
13
|
+
- [Telemetry & Observability](#telemetry--observability)
|
|
14
|
+
- [Learning](#learning)
|
|
15
|
+
- [User-Defined Routines](#user-defined-routines)
|
|
16
|
+
- [Integrations](#integrations)
|
|
17
|
+
- [Schemas & Validation](#schemas--validation)
|
|
18
|
+
- [File Layout](#file-layout)
|
|
19
|
+
|
|
5
20
|
## Core Pipeline
|
|
6
21
|
|
|
7
22
|
### 6-Phase Orchestration (0-5)
|
|
@@ -14,7 +29,8 @@ Phase 2: Dev TDD cycle: test → code → build (Sonnet), then the Verify
|
|
|
14
29
|
gate: build · lint · tests · secrets, run once
|
|
15
30
|
Phase 3: Review Parallel AI review + Fable triage against Dev's logs, then the
|
|
16
31
|
optional user test + on-demand device audits
|
|
17
|
-
(Claude Code: Fable + Opus + Sonnet
|
|
32
|
+
(Claude Code: Fable + Opus + Sonnet, or Opus + Sonnet with the
|
|
33
|
+
fable rung off · Copilot CLI: GPT-5.4 + Opus + Sonnet)
|
|
18
34
|
Phase 4: Commit Git commit, push, PR with default reviewers + draft/ready prompt
|
|
19
35
|
Phase 5: Report External: Jira comment · Wiki + Figma screenshots · Confluence
|
|
20
36
|
Internal: agent-log.md + Quality & Metrics + knowledge + memory
|
|
@@ -26,7 +42,7 @@ Each phase reads its own spec file under `pipeline/multi-agent-refs/phases/phase
|
|
|
26
42
|
|
|
27
43
|
| Flag | Effect |
|
|
28
44
|
| ----------- | ----------------------------------------------------------------------------------- |
|
|
29
|
-
| `autopilot` | Skip all confirmation prompts; still fails safe on review blockers + build retries. Also resolves the workspace to a worktree without asking. |
|
|
45
|
+
| `autopilot` | Skip all confirmation prompts; still fails safe on review blockers + build retries. Also resolves the workspace to a worktree without asking, and turns on the verification gates described under [Autopilot (unattended)](#autopilot-unattended). |
|
|
30
46
|
|
|
31
47
|
The workspace is not a flag. **Where the branch lives** is asked at Phase 0 Step 5b - worktree (`.worktrees/{id}/`, your checkout untouched) or local (the project root, which drops the user-test offer because that gate checks the change out of a worktree and there is none). There is no `:local` command and no `--local` switch: an answer given in the run is visible in the run, where a flag is visible only in how the run was typed. Every autopilot entry resolves it to a worktree and never asks, because an unattended run commits and pushes from wherever it stands and doing that in the user's own checkout is what worktrees exist to prevent. `state.workspaceSource` records who decided - `localMode: false` alone is both "the user chose a worktree" and "nothing asked".
|
|
32
48
|
|
|
@@ -38,7 +54,7 @@ The install is not only useful while `/multi-agent` is running. `rules/outside-t
|
|
|
38
54
|
|
|
39
55
|
- **Onboarded service credentials.** Resolve the logical name through `credential-store.sh` and read the issue, page or log. Writes route through the pipeline commands, which carry the rules that make them safe - issues are never auto-closed, PR bodies use `Ref:`, outward prose goes through the humanizer.
|
|
40
56
|
- **The stack skills enabled for this repo.** Each toolkit's own `index` skill routes. The pipeline reads the effective `enabledPlugins` rather than keeping a stack table, so a seventh toolkit needs no code change.
|
|
41
|
-
- **The `multi-agent-toolkit` MCP.**
|
|
57
|
+
- **The `multi-agent-toolkit` MCP.** 118 tools for a running app.
|
|
42
58
|
|
|
43
59
|
Uninstall preserves the whole layer - tokens, the reader that opens them, the mapping that names them, the MCP registration. It is 1.5 kB of always-loaded text; the detail lives in a ref that loads on demand, and a gate keeps both under a ceiling because every byte there is paid by every session.
|
|
44
60
|
|
|
@@ -78,6 +94,10 @@ Stack skill sets ship as versioned plugins in the `multi-agent-plugins` marketpl
|
|
|
78
94
|
/multi-agent:stack all # every stack plugin
|
|
79
95
|
```
|
|
80
96
|
|
|
97
|
+
### Project Scaffold (`/multi-agent:scaffold <stack> <name>`)
|
|
98
|
+
|
|
99
|
+
A new project starts green by the same commands every later change is judged by. The command resolves the enabled toolkit's `ai-<stack>-toolkit:scaffold` skill (ios, android, web, backend), dispatches it through the Skill tool, and then only verifies: `scaffold-gate.mjs --phase skeleton` requires a valid `.scaffold.json`, no commit and no remote yet, and the stack adapter's build, test and lint commands to pass, with build and test judged by `evidence-gate.mjs --stack` and a test count. The first commit follows a pass; creating the hosted repository is a separate question asked afterwards, and refused unattended. For a scaffolded repo, Phase 2 runs `--phase story` at entry and exit: build, test, lint and the manifest's demo command must pass, or the next story does not start. Detail: [`scaffold.md`](../pipeline/multi-agent-refs/features/scaffold.md).
|
|
100
|
+
|
|
81
101
|
### Package Manager Resolution (Phase 2, node-shaped stacks)
|
|
82
102
|
|
|
83
103
|
Phase 2's web test arm and its build step used to type `npm`. A repo on pnpm, yarn or bun then failed in Phase 2 - with a worktree and a branch already created - or, worse, npm resolved against a lock file it does not own and the run continued on a tree the repo's own tooling would never have produced.
|
|
@@ -141,7 +161,7 @@ When a specialized skill takes over a main pipeline phase, progress is reported
|
|
|
141
161
|
|
|
142
162
|
### Draft vs Ready Prompt
|
|
143
163
|
|
|
144
|
-
Phase 4 asks `DRAFT or READY?` before creating the PR and persists the choice in `prefs.projects[].defaultPrMode`.
|
|
164
|
+
Phase 4 asks `DRAFT or READY?` before creating the PR and persists the choice in `prefs.projects[].defaultPrMode`. An unattended run does not ask: the autopilot runner always opens a draft.
|
|
145
165
|
|
|
146
166
|
- Bitbucket: `draft: true` flag (DC 8.x+) with `[DRAFT]` title fallback for older servers.
|
|
147
167
|
- GitHub: `gh pr create --draft` + `gh pr ready` for promotion.
|
|
@@ -258,12 +278,84 @@ Pure code analysis - no simulator needed. Device-level audits run in Phase 5 whe
|
|
|
258
278
|
|
|
259
279
|
Phase 2 treats the issue-tracker status update as a required step with a post-mutation verify step that re-reads the field and retries once on silent `VALIDATION` failures (e.g. stale Projects V2 option IDs after a board rebuild).
|
|
260
280
|
|
|
281
|
+
## Autopilot (unattended)
|
|
282
|
+
|
|
283
|
+
Continuous mode (`/multi-agent:autopilot-on`) runs the pipeline with nobody watching. The runner is a launchd tick: it takes the head of the queue, runs the whole pipeline on it in a worktree with `MULTI_AGENT_UNATTENDED=1` set on the child, and ends at a draft pull request that a person reviews and merges. Every behaviour in this section keys on that variable or on autopilot mode; an attended run is unchanged. Contract, entry point by entry point: [`unattended-contract.md`](../pipeline/multi-agent-refs/unattended-contract.md).
|
|
284
|
+
|
|
285
|
+
### Research Before Asking
|
|
286
|
+
|
|
287
|
+
A run that parks on a maturity blocker or on open analysis questions gets a research pass before it waits for a person. `/multi-agent:research <id> --autonomous` reads the tracker thread, issue links, similar closed items, linked documents and the repository; `research-gate.mjs` decides what closed. `inference` alone never closes a gap, `evidence` must be quoted from a fetched source, `repo` must resolve at `file:line` or in a commit, and acceptance criteria and business rules only ever yield candidates. The maturity check or the open-questions gate then re-runs on the result: `proceed` resumes the run, anything else parks it with the gaps left. `maxAskRounds` bounds the rounds per item. Detail: [`research.md`](../pipeline/multi-agent-refs/features/research.md).
|
|
288
|
+
|
|
289
|
+
### The Runner Publishes
|
|
290
|
+
|
|
291
|
+
The session commits and stops. Phase 4 writes a PR request through `pr-request.mjs`, and `autopilot-publish.mjs`, in the runner process, decides whether it leaves the machine: the repository comes from the runner's config, the branch must be the one the run recorded and must be unprotected, the stack adapter's build and test commands are re-run in the worktree with token-shaped variables removed, the gate ledger, the secret detectors over the commit range and the outbound gate are re-checked, and the push goes from a fresh bare staging repository that carries none of the worktree's git config. GitHub gets `gh pr create --draft` with the body from a file; Bitbucket gets the branch and a summary (`pushed-awaiting-pr`). Any failed check is `verification-failed`, with the verdict in `pr-requests/<session>.verdict.json`. Post-PR reports (`reportChannels`, `reportIssueUpdates`) run once, after the PR opened, and are off by default.
|
|
292
|
+
|
|
293
|
+
### Operations Around a Run
|
|
294
|
+
|
|
295
|
+
| Operation | Default | What it does |
|
|
296
|
+
|---|---|---|
|
|
297
|
+
| Awake agent | on | `com.multi-agent.autopilot-awake` runs `caffeinate -s -i` from `autopilot-on` to `autopilot-off`; `awake.display` adds `-d` |
|
|
298
|
+
| Sleep lock | on | `caffeinate -s -w <runner pid>` from the launch to the end of the tick |
|
|
299
|
+
| Credential probe | on | `autopilot-arming.mjs probe` before the schedule is offered, `check --probe` on every tick; `credential-store.sh probe` answers `readable`, `missing` or `locked` without reading a value |
|
|
300
|
+
| Circuit breaker | on | stops launching after consecutive attempts that produced nothing, and lets one attempt through per cooldown |
|
|
301
|
+
| Cost ceiling | on | `costCeilingUsd` over a rolling 24 hours, each run counted once at its largest recorded spend |
|
|
302
|
+
| Parallel cap | unlimited | `maxParallelAgents` caps runner-launched sessions working at once |
|
|
303
|
+
| Cleanup report | dry run | `gc-report-<date>.json` / `.md` over the worktrees the runner created; `gc.autoDelete` removes |
|
|
304
|
+
| Daily digest | off | items, outcomes, PRs, parked items and cost, through `reportChannels` after the outbound gate |
|
|
305
|
+
|
|
306
|
+
Detail: [`autopilot-operations.md`](../pipeline/multi-agent-refs/features/autopilot-operations.md), [`autopilot-circuit-breaker.md`](../pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md).
|
|
307
|
+
|
|
308
|
+
### Security Base
|
|
309
|
+
|
|
310
|
+
- **Fail-closed guard.** `agent-guard.sh` is the PreToolUse hook on `Bash`, `Edit|Write|NotebookEdit` and `WebFetch|mcp__multi-agent-toolkit__.*`. Under the variable a Bash command is judged only when it reduces to simple commands joined by `;`, `&&`, `||` and plain pipes between non-interpreter commands; a subshell, group, nested substitution, unquoted heredoc, background job, shell keyword, interpreter reading stdin, shell `-c`, inline interpreter program (`node -e`, `perl -e`, `php -r`, ...), program file the run wrote or modified, or runtime-built command name is refused unparsed. On what it parses: no push, PR, issue or tracker write, no Keychain read, no package install or manifest edit, no write into a protected path. The guard arms its own 5-second deadline and answers "block" on expiry when unattended.
|
|
311
|
+
- **Network allowlist.** `curl`, `wget`, `WebFetch` and the toolkit's `web_*` tools reach only hosts in the allowlist (`network.staticHosts` plus the configured service hosts); a URL built at run time, a proxy flag or a request body is refused, and `web_eval` is refused outright. The runner starts the toolkit with `MCP_TOOLKIT_URL_POLICY=strict` and `MCP_TOOLKIT_INDEX_DENY`.
|
|
312
|
+
- **No package installs.** A restore from the committed lockfile is allowed; adding a package is not.
|
|
313
|
+
- **Untrusted data.** Fetched bodies, ticket text, comments and PR text enter prompts inside `<untrusted-data>` delimiters that defuse a forged closing tag.
|
|
314
|
+
- **Permission profile.** `install --unattended` writes a `dontAsk` profile with a narrow allow list and deny rules into `~/.claude/multi-agent-unattended.settings.json`, printed in full before anything is written; the runner passes it with `claude --settings`, so `~/.claude/settings.json` and attended sessions are unchanged. A default install writes no permissions.
|
|
315
|
+
- **Machine setup, applied by the operator.** A separate non-admin macOS user for the runner, per-repo GitHub credentials limited to contents and pull requests, a Jira token that can only read and comment, and GitHub rulesets on every default and release branch (no force-push, no deletion, PR and code-owner review required, the bot in no bypass list).
|
|
316
|
+
|
|
317
|
+
Detail: [`unattended-security.md`](../pipeline/multi-agent-refs/features/unattended-security.md).
|
|
318
|
+
|
|
319
|
+
### Verification Gates
|
|
320
|
+
|
|
321
|
+
While the quality gates are active (`MULTI_AGENT_UNATTENDED=1`, or `state.autopilot` for a terminal autopilot run), each gate appends its verdict to `state.gates[]` through `gate-ledger.mjs`, and under the variable the commit hook refuses a commit unless every mandatory gate passed or was not applicable for HEAD.
|
|
322
|
+
|
|
323
|
+
| Gate | What it checks |
|
|
324
|
+
|---|---|
|
|
325
|
+
| `symbol-existence` | every localization key and endpoint the added lines reference exists in the repository's truth sources |
|
|
326
|
+
| `open-questions` | open analysis questions are answered, assumed or park the run |
|
|
327
|
+
| `verify-citations` | a triage citation quotes the line it cites (at least 8 non-space characters, or the whole line) |
|
|
328
|
+
| pre-existing claims | a "pre-existing" finding cites a line the diff from the base does not add or change |
|
|
329
|
+
| `plan-coverage` | every plan step is accounted for; a planned run with no todos is a gap |
|
|
330
|
+
| `evidence-gate`, `test-summary` | build and test claims read with the stack's own markers and a positive executed test count |
|
|
331
|
+
| `test-strength` | a new test goes red without the change it claims to cover |
|
|
332
|
+
| `review-decision` | a `blocking` finding carries two independent reviewers or a failing test |
|
|
333
|
+
| `spec-consistency`, `plan-critique` | recorded, not mandatory at commit (see below) |
|
|
334
|
+
|
|
335
|
+
Stack adapters cover 8 stacks: `ios`, `android`, `web`, `backend-node`, `python`, `go`, `rust`, `jvm`, plus `unknown`. Detail: [`unattended-gates.md`](../pipeline/multi-agent-refs/features/unattended-gates.md), [`stack-adapters.md`](../pipeline/multi-agent-refs/features/stack-adapters.md).
|
|
336
|
+
|
|
337
|
+
### Constitution and Spec Consistency
|
|
338
|
+
|
|
339
|
+
`/multi-agent:analysis` writes the project's invariant rules (security, accessibility, architecture, licensing) to `constitution.md` and `constitution.json` under the project's knowledge directory. Each rule cites one labelled source: `repo` (a file and line), `evidence` (a standards document or tracker item) or `inference`, which is always `proposed` and never binding. `spec-consistency-gate.mjs` checks by id, with no model call, that every requirement has a task and a Test Plan row, every task cites a defined requirement, and no row or task waives a binding rule. Attended it prints an advisory report and writes nothing. Detail: [`constitution.md`](../pipeline/multi-agent-refs/features/constitution.md).
|
|
340
|
+
|
|
341
|
+
### Plan Critic
|
|
342
|
+
|
|
343
|
+
With the gates active, Phase 1 ends with one adversarial critic (`agents/plan-critic.md`) under four lenses: scope, feasibility, security and a cheaper alternative. Each objection carries evidence anchors; the planner answers each once, accepting and revising or rebutting with evidence, and `plan-critique-gate.mjs` judges with no model call. An objection citing a binding constitution rule blocks unless its reply resolves it with an anchor that holds; the rest is advisory and appears in the plan render and the PR summary. One round, because further rounds move agents toward each other rather than toward the right answer. The critic follows the fable switch. Detail: [`plan-critic.md`](../pipeline/multi-agent-refs/features/plan-critic.md).
|
|
344
|
+
|
|
345
|
+
### Review Decision Rule
|
|
346
|
+
|
|
347
|
+
Every reviewer on Claude Code is a Claude model, so with the gates active a `blocking` finding keeps its severity only when two independent reviewer outputs carry the same finding, a confirmed verify-by-test log shows a failing test, or the test-integrity gate produced it. Anything else is lowered to `important` in place, never dropped, with the reason in the report and the ledger. The rebuttal round does not run under the gates. Attended review is unchanged. Detail: [`review-decision.md`](../pipeline/multi-agent-refs/features/review-decision.md).
|
|
348
|
+
|
|
349
|
+
### Client Contract and Phone API
|
|
350
|
+
|
|
351
|
+
Commands (`commands.mjs --json`) and run questions (`launch-request.mjs questions`) are declared as data, and every surface is reachable two ways that print the same bytes: the CLI scripts, and `contract-server.mjs`, started with `/multi-agent:serve` on 127.0.0.1 behind a bearer token. `pipeline/contract/` ships the manifest, generated TypeScript types and fixtures ([kit README](../pipeline/contract/README.md)). A launch request's input is a reference, not a prompt: a Jira key, an issue URL, `repo#N` or `#N`, or desktop free text passed as one quoted argument; op and mode words are refused. Four phone routes under `/v1/phone/` (runs, one run, answer, launch) accept only Ed25519-signed requests from devices enrolled with `phone-devices.mjs`, always return the redacted view, and keep launch off until `phone-devices.mjs launch on`. The phone app is a separate project. Detail: [`phone-api.md`](../pipeline/multi-agent-refs/features/phone-api.md).
|
|
352
|
+
|
|
261
353
|
## Safety & Hygiene
|
|
262
354
|
|
|
263
355
|
- **Pre-Commit Secret Detection** (12 patterns): `PreToolUse` hook scans staged files for API keys/tokens, AWS access keys, private keys, `.env` files, service account JSON. Commit **blocked** if found.
|
|
264
356
|
- **Read-Size Gate** (opt-in, `prefs.global.bulkRead.mode`): a `PreToolUse` hook inspects `Read` and the shell commands that read a file whole. In `observe` it only logs what it would have caught - the baseline you measure before routing anything. In `enforce` a file over `minLines` (default 350) is blocked and delegated to a haiku-rung worker (`bulk-read.sh`), which returns a line-numbered summary so the follow-up is a bounded `Read(offset:limit:)` instead of the whole file; the full text is parked under `.multi-agent/refs/`. The development phase and any file the run has already touched are exempt, because Claude Code's `Edit` requires its own `Read` first.
|
|
265
357
|
- **Capture Hooks** (`SessionEnd`, `PreCompact`, `SessionStart`): every durable write used to live in Phase 5, the phase a run is least likely to reach. `SessionEnd` flushes a run that never got there; `PreCompact` flushes before an auto-compaction summarizes a long phase mid-flight, which is the same loss one level down; `SessionStart` prints at most two lines about an unfinished run. None calls a model, none reads a payload, and all exit 0 on every path - a hook that fails a session over bookkeeping is worse than the bookkeeping.
|
|
266
|
-
- **Operational Reporting** (`prefs.global.usageLog`): coarse run metadata - task id, phase, status, durations, token counts - and never prompts, code, diffs or absolute paths. The per-machine token is REQUESTED from the endpoint by `usage-register.mjs` (setup, update, and the Phase 0 exit gate as a backstop), is write-only, and lives in the OS credential store; prefs hold only the entry name and the switch. `usageLog.optOut: true` blocks registration permanently and is checked before the network call. An unreachable endpoint leaves reporting off with one line and exit 0 - a run is never failed over bookkeeping.
|
|
358
|
+
- **Operational Reporting** (`prefs.global.usageLog`): coarse run metadata - task id and type, current phase, run status (in progress, completed, halted, parked), phase durations, whether a PR opened, token counts - sent at every phase transition and at completion, halt and park, and never prompts, code, diffs or absolute paths (task title and PR URL only when `includeTitle` / `includePrUrl` are set). Runs are reported under the logged-in GitHub account that can read the pipeline repository (`usage-identity.mjs`, cached in `usageLog.login`, `--refresh` to re-check); with no such account nothing is sent. The per-machine token is REQUESTED from the endpoint by `usage-register.mjs` (setup, update, and the Phase 0 exit gate as a backstop), is write-only, and lives in the OS credential store; prefs hold only the entry name and the switch. `usageLog.optOut: true` blocks registration permanently and is checked before the network call. The server issues a token only to the repository owner or a collaborator, pins the login to it, and shows only those accounts' records on the panel. An unreachable endpoint leaves reporting off with one line and exit 0 - a run is never failed over bookkeeping.
|
|
267
359
|
- **Build Queue**: All `xcodebuild` calls acquire a lock. Each worktree uses own `-derivedDataPath`. Stale locks auto-clean after 15 min. Non-Xcode builds don't need the lock.
|
|
268
360
|
- **Context Management**: `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=65` - compaction at 65% usage (prevents degradation in 6-phase sessions).
|
|
269
361
|
- **3-Iteration Hard Kill**: Any retry loop stops after 3 attempts, then pauses for user. No infinite loops.
|
package/docs/recovery-guide.md
CHANGED
|
@@ -344,20 +344,13 @@ though earlier phases worked.
|
|
|
344
344
|
Fix:
|
|
345
345
|
|
|
346
346
|
```bash
|
|
347
|
-
# 1. Update the
|
|
348
|
-
#
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
# macOS:
|
|
355
|
-
security delete-generic-password -s "$LABEL" -a "$ACCOUNT" 2>/dev/null
|
|
356
|
-
security add-generic-password -s "$LABEL" -a "$ACCOUNT" -w "$NEW_TOKEN"
|
|
357
|
-
|
|
358
|
-
# Linux:
|
|
359
|
-
secret-tool clear account "$ACCOUNT" service "$LABEL"
|
|
360
|
-
echo "$NEW_TOKEN" | secret-tool store --label="$LABEL" account "$ACCOUNT" service "$LABEL"
|
|
347
|
+
# 1. Update the credential-store entry for the rotated provider. The item
|
|
348
|
+
# name lives in prefs.global.keychainMapping.<provider>. Copy the new token,
|
|
349
|
+
# then stream it over stdin so it never reaches argv.
|
|
350
|
+
KEY=$(jq -r '.global.keychainMapping.<provider>' \
|
|
351
|
+
$HOME/.claude/multi-agent-preferences.json)
|
|
352
|
+
pbpaste | ~/.claude/lib/credential-store.sh set "$KEY" -
|
|
353
|
+
pbcopy < /dev/null
|
|
361
354
|
|
|
362
355
|
# 2. Sanity-check the doctor reports the new token's prefix
|
|
363
356
|
bash pipeline/lib/credential-store.sh doctor
|