{"id":50950000,"url":"https://github.com/scottconverse/agent-pipeline-claude","last_synced_at":"2026-06-18T00:31:00.347Z","repository":{"id":356822898,"uuid":"1234205990","full_name":"scottconverse/agent-pipeline-claude","owner":"scottconverse","description":"Multi-stage agent pipeline runner for Claude Code. Three human-approval gates, automated policy stage, independent verifier, resumable run log. Built from real agent failures.","archived":false,"fork":false,"pushed_at":"2026-05-29T12:38:04.000Z","size":1098,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T13:07:41.381Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://scottconverse.github.io/agent-pipeline-claude/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scottconverse.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-09T22:08:21.000Z","updated_at":"2026-05-29T12:38:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/scottconverse/agent-pipeline-claude","commit_stats":null,"previous_names":["scottconverse/agentic-pipeline","scottconverse/agent-pipeline-claude"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/scottconverse/agent-pipeline-claude","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fagent-pipeline-claude","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fagent-pipeline-claude/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fagent-pipeline-claude/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fagent-pipeline-claude/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scottconverse","download_url":"https://codeload.github.com/scottconverse/agent-pipeline-claude/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottconverse%2Fagent-pipeline-claude/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34471638,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-18T00:30:59.664Z","updated_at":"2026-06-18T00:31:00.336Z","avatar_url":"https://github.com/scottconverse.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# agent-pipeline-claude\n\n**Ship multi-step Claude Code work that doesn't drift.**\n\nThe plugin reads your project's spec, drafts a per-run scope contract from it, and shows it to you in chat with a fast keyword gate: reply `APPROVE` to start, `REVISE` to send back, `VIEW` to print the full YAML. Then it runs research → plan → execute → verify → critique end-to-end with three chat-based human gates (deterministic first-token keyword parsing), an opt-in real-time judge, and machine-checkable auto-promote. Modal `AskUserQuestion` infrastructure is denied during active runs — the chat keeps full context visible at gate-decision time.\n\n**Status:** Stable · v3.0.1 · Opus 4.8-native\n\n\u003e **Note on skills:** the plugin registers six skills — you do not hand-author any YAML. See [The skills](#the-skills) below.\n\n**Current release: v3.0.1** — an audit-hardening release on top of the Opus-4.8-native v3.0.0. A full five-role audit of v3.0.0 (zero blockers) drove fixes across secret-redaction coverage, the destructive-command/secret trust boundary, manifest input-integrity, and release-doc hygiene. No behavior change for a healthy run. The full list is in the [CHANGELOG](CHANGELOG.md). [User Manual](USER-MANUAL.md) · [Architecture](ARCHITECTURE.md) · [Landing page](https://scottconverse.github.io/agent-pipeline-claude/) · [Discussions](https://github.com/scottconverse/agent-pipeline-claude/discussions)\n\n## What it does (and doesn't)\n\n**It does:**\n- Draft a per-run scope contract from your project's existing spec/release-plan/design docs and gate it on a one-word chat `APPROVE`.\n- Run a fixed multi-stage pipeline (research → plan → execute → policy → verify → drift-detect → critique → auto-promote → manager) with three human gates.\n- Enforce the pipeline at runtime via eleven Cowork lifecycle hooks — deny destructive commands, block out-of-scope writes during a run, refuse invalid stops.\n- Persist run state to disk (`.agent-runs/\u003crun-id\u003e/memory/`) so it survives context compaction, with an optional Mem0 layer for cross-session recall.\n- Optionally supervise risky executor actions in real time with a context-isolated judge subagent.\n\n**It doesn't:**\n- Run fully autonomously. The three human gates are the minimum-viable structure by design; there is no grant-based autonomous mode (removed in v1.3.0).\n- Auto-detect your Python launcher. Hooks invoke `python`; on macOS/most Linux you must provide a `python` shim or the hooks silently no-op (see [Troubleshooting](#troubleshooting)).\n- Eliminate single-model-family blind spots. Context isolation between executor and judge reduces correlated errors; it does not remove them.\n- Replace your tests, linter, or CI. It orchestrates around them.\n\n## What's new in v3.0.1 (audit hardening)\n\nA full five-role audit of v3.0.0 returned zero blockers; this release closes its findings. Highlights — see the [CHANGELOG](CHANGELOG.md) for the complete list:\n\n- **Secret-redaction coverage (security).** The redaction layer now catches GitHub (`ghp_`/`github_pat_`), Slack, GitLab, Google, Stripe, npm, JWT, URL-embedded, and bare-credential secrets before they can reach the Mem0 layer. The prior pattern required a hyphen where GitHub uses an underscore and silently missed an entire class of tokens; the command-scanning hook and the config template move in lockstep.\n- **Trust-boundary hardening.** The destructive-command and secret denylists normalize commands and route pipe-to-interpreter / `dd` / `mkfs` / `find -delete` / fork-bombs to the judge by default; the PreToolUse hook fails *closed* on an internal error.\n- **Input integrity.** Manifest/scope-lock reads use a real YAML parser (a clear parse error instead of silent shape-coercion); `CLAUDE_PROJECT_DIR` is validated and the resolved root is surfaced in gate output.\n- **Release hygiene.** Every doc surface, the manifest descriptions, and all script `--version` strings are synced to one version and guarded by a version-parity test. The two long-deprecated `*-autonomous` skills are removed.\n\n## What's new in v3.0.0 (Opus 4.8-native)\n\n- **Per-stage model/effort/speed binding.** Optional `model`/`effort`/`speed` hints on pipeline stages; quality-critical stages (verify/drift-detect/critique/manager + the manifest-drafter) bias to `effort: max`, and every model stage escalates to ≥ `effort: extra` under manifest `risk: high`. No model id is hardcoded.\n- **Window-gated lean run-context.** On a 1M-context model, the orchestrator injects the manifest plus a read-on-demand artifact index instead of pasting every prior artifact inline. The critic always gets the full block (its hostile cold read must not be starved).\n- **Parallel independent stages.** The independent verify/drift-detect/critique trio fans out concurrently.\n- **Context-exhaustion early warning.** Non-blocking nudge at 60/70/80% of the detected context window.\n- **SHA-256 per-run memory integrity.** Memory files carry a SHA-256 sidecar verified on reload; a tampered/corrupted file is detected, not silently trusted.\n- **Inbound Mem0 scrub + framing.** Mem0 search results are scrubbed and framed on the read path; body-less records are dropped.\n- **`allowed_paths` traversal hardening (security).** Write targets are lexically resolved (`os.path.normpath`, TOCTOU-safe), rejecting `..`-escapes above the repo root. The prior string-prefix check let `src/../../etc/passwd` through.\n\n(WS-5, mid-conversation `role:system` messages, is deferred to a later release; the judge layer was WS-9, shipped in v2.3.0.)\n\n## What's new in v2.3.0 (judge layer reincorporation)\n\nBrings back the v0.4 judge layer as a platform-executable design: opt-in, real-time, context-isolated supervision of the executor's risky actions. Active only when `.pipelines/action-classification.yaml` exists; with no such file the executor stage runs exactly as before. The judge evaluates risky actions *before* they execute, in isolation from the executor's reasoning, realized at the orchestrator's altitude across subagent spawns. See `ARCHITECTURE.md` §7 for the trust-boundary model.\n\n## What's new in v2.2.x (chat-gate restoration + auto-update awareness)\n\nv2.2.1 reversed the v1.3.0 → v2.1.0 modal-gate experiment: Cowork's modal overlay hid the chat context the operator needed at gate-decision time. Gates are now chat-based with deterministic first-token keyword parsing, and the modal-budget hook **denies every `AskUserQuestion` during an active non-drafting run**. v2.2.2 added the SessionStart marketplace-update warning (see [Upgrading](#upgrading-from-a-prior-version)).\n\n\u003e Full version history — including the v2.0 eleven-hook enforcement layer, persistent memory, directive contracts, and Mem0 — is in the [CHANGELOG](CHANGELOG.md).\n\n---\n\n## What a typical run looks like\n\nYou're in your project. The plugin is installed. You type:\n\n```\n/agent-pipeline-claude:run \"close QA-005 conflict-409 race\"\n```\n\n\u003e **Why the namespace prefix?** Per the [official Claude Code plugin docs](https://code.claude.com/docs/en/plugins), plugin skills are always invoked as `/\u003cplugin-name\u003e:\u003cskill-name\u003e` to prevent collisions across plugins. The bare `/run` form is reserved for standalone `.claude/commands/` files, not marketplace plugins.\n\nClaude reads your project's spec / release plan / scope-lock / design notes, drafts a manifest, and pastes it in chat with a one-line provenance summary, then prints the manifest gate:\n\n```\nDrafted from docs/releases/v0.4-scope-lock.md §1 + docs/research/v04-slice1-design.md.\n8/11 fields auto-derived, 3 need your confirmation.\n\n=== Manifest gate ===\nManifest drafted at .agent-runs/\u003crun_id\u003e/manifest.yaml.\n\nReply with one word (case-insensitive):\n  APPROVE  — start the run; spawn the researcher next\n  REVISE   — stop; you'll describe what to change in the next message\n  VIEW     — print the complete manifest.yaml to chat, then re-ask\n```\n\nYou reply `APPROVE` (or `REVISE`, or `VIEW`). The pipeline runs. Three human gates along the way (manifest, plan, manager-decision), each a chat prompt with the keyword grammar. The last one auto-fires when the six machine-checkable conditions pass — no chat prompt at all. Final result lands in `.agent-runs/\u003crun-id\u003e/` as a structured paper trail.\n\n## The skills\n\nSix skills, all namespaced `/agent-pipeline-claude:\u003cskill\u003e`:\n\n| Invocation | Purpose |\n| :--- | :--- |\n| `/agent-pipeline-claude:run \"\u003cshort description\u003e\"` | Start a new run. Drafts the manifest, gates on `APPROVE`, orchestrates end-to-end. Also accepts `resume \u003crun-id\u003e` and `status`. |\n| `/agent-pipeline-claude:pipeline-init` | Onboard a project. Inspects what's there, scaffolds `.pipelines/`, `scripts/policy/`, and a starter `CLAUDE.md`. |\n| `/agent-pipeline-claude:audit-init` | Scaffold dual-AI audit-handoff infrastructure for projects where one AI implements and another audits. |\n| `/agent-pipeline-claude:intake` | Capture a plain-English description and draft starter artifacts (`intake.md`, `manifest.yaml`, `scope-lock.yaml`) without starting the pipeline. Soft onboarding for ideas without a manifest. |\n| `/agent-pipeline-claude:mem0 \u003csubcommand\u003e` | Manage the Mem0 cross-session memory layer (`init` / `up` / `down` / `whoami` / `test` / `sync` / `prune`). OSS-default; Platform mode behind explicit consent. |\n| `/agent-pipeline-claude:show-run-status` | Read-only summary of a run's `.agent-runs/\u003crun-id\u003e/` state without resuming or mutating it. |\n\n\u003e The `run-autonomous` and `grant-autonomous` skills were deprecated in v1.3.0 and **removed in v3.0.1** — there is no separate autonomous mode; `/agent-pipeline-claude:run` is the single entry point.\n\n## Why this plugin exists\n\nAgentic work fails in predictable ways:\n\n- The agent doesn't understand the project's conventions, so it improvises and the work silently diverges from the spec.\n- The agent claims tests pass without running them against a fresh dependency set.\n- The agent merges in-flight work while a scope question is open.\n- The agent picks architectural decisions silently rather than surfacing them.\n- The manifest the agent's working from doesn't match what the human actually wanted.\n\nThe plugin enforces a structural pattern that catches every one of those:\n\n1. **Drafted scope contract.** The manifest is drafted from your project's existing docs and presented for chat `APPROVE`. You review what the agent thinks the run is; you don't author it from blank.\n2. **Plan gate.** The planner produces a plan; you approve or send back.\n3. **Policy stage.** Automated checks block the run if the manifest fails schema validation, any change falls outside `allowed_paths`, the diff contains TODO/FIXME/HACK markers, or an existing ADR was modified.\n4. **Verifier stage.** Independent fresh-context check against every manifest exit criterion.\n5. **Drift-detector + critic stages.** Adversarial cold-read of every artifact across six lenses; comparison of assembled state against the manifest contract.\n6. **Judge layer (opt-in).** Real-time action-level supervision inside the executor stage. Risky tool calls spawn an independent judge subagent that allows / blocks / revises / escalates.\n7. **Auto-promote.** Six conditions checked from the artifact stack: verifier-clean, critic-clean, drift-clean, policy-passed, judge-clean, tests-passed. When all six pass, the manager gate auto-fires; otherwise the human gate remains.\n\n## Install\n\nThe plugin works in **Cowork** (the chat-first Claude Code surface) and in **Claude Code CLI**.\n\n### Recommended: marketplace install\n\n```\n/plugin marketplace add scottconverse/agent-pipeline-claude\n/plugin install agent-pipeline-claude@agent-pipeline-claude\n```\n\nThen restart your Cowork session (fully Quit and reopen — plugin metadata loads at app startup) or run `/reload-plugins` in the CLI.\n\n### Alternative: file-level install (Cowork without marketplace UI)\n\nPaste this prompt into any Claude session:\n\n```\nInstall the agent-pipeline-claude plugin for me.\n\nMethod: clone https://github.com/scottconverse/agent-pipeline-claude\ninto ~/.claude/plugins/marketplaces/agent-pipeline-claude. Add an\nagent-pipeline-claude marketplace entry to ~/.claude/plugins/known_marketplaces.json\npointing at that path. Add agent-pipeline-claude@agent-pipeline-claude to\n~/.claude/plugins/installed_plugins.json with the cloned commit SHA.\nIn ~/.claude/settings.json, set\nenabledPlugins[\"agent-pipeline-claude@agent-pipeline-claude\"] = true and add\nthe marketplace to extraKnownMarketplaces.\n\nBack up settings.json + known_marketplaces.json + installed_plugins.json\nbefore patching. After install, fully quit Cowork (or restart your CLI session)\nto load the new skills.\n```\n\n**Then fully restart Cowork.** After restart, `/agent-pipeline-claude:pipeline-init` and `/agent-pipeline-claude:run` are available.\n\n### Local development / testing\n\n```\nclaude --plugin-dir /path/to/agent-pipeline-claude\n```\n\nLoads the plugin for one session without installing.\n\n**Requirements:** the Python enforcement gates and Cowork hooks need **PyYAML** on **Python ≥ 3.10**; install with `pip install -r requirements.txt`. Everything else is the standard library. The optional Mem0 layer is installed separately (`pip install mem0ai`).\n\n## First use in a new project\n\nDrop into the project root and run:\n\n```\n/agent-pipeline-claude:pipeline-init\n```\n\nThe plugin inspects what your project has — spec, release plan, CLAUDE.md, tests, CI workflows — produces a one-message orientation summary, and asks you to `APPROVE` before scaffolding `.pipelines/`, `scripts/policy/`, role files, and a starter `CLAUDE.md` (only if you don't already have one). Edit the `## Pipeline drafter notes` section of that `CLAUDE.md` before your first `/agent-pipeline-claude:run` for best results.\n\n## Running a pipeline\n\n```\n/agent-pipeline-claude:run \"short description of the work\"\n```\n\nReply `APPROVE` (one word, case-insensitive) to start, `REVISE` followed by changes to send back to the drafter, or `VIEW` to print the full manifest first.\n\n### Other shapes\n\n```\n/agent-pipeline-claude:run resume 2026-05-12-my-task-slug   # pick up a halted run\n/agent-pipeline-claude:run status                            # list runs in this project\n/agent-pipeline-claude:run                                   # same as `status`\n```\n\n## The three human gates\n\nEach fires as a chat prompt with a deterministic keyword grammar. The orchestrator parses the first non-whitespace token of your next message, case-insensitive: `APPROVE` to accept, `REVISE`/`REPLAN` to send back, `BLOCK` to halt, `VIEW` to print the underlying artifact and re-ask. Anything else re-prints the prompt with a no-parse note.\n\n1. **Manifest gate.** Review the drafted scope contract; `APPROVE` to start, `REVISE` to send back (max 5 cycles), `VIEW` to print first.\n2. **Plan gate.** After research → plan; `APPROVE` to execute, `REPLAN` with revisions, `BLOCK` to halt, `VIEW` to print.\n3. **Manager gate.** After everything else; the manager produces a PROMOTE/BLOCK/REPLAN recommendation citing verifier, drift-detector, and critic findings verbatim. `APPROVE`, `BLOCK`, `REPLAN`, or `VIEW`.\n\nWhen auto-promote's six conditions all pass, the manager gate skips entirely (no chat prompt) and the run reports DONE-PROMOTED.\n\n\u003e **The `pipeline-init` orientation gate uses a different keyword set.** It is a *setup* gate, not a pipeline-run gate: reply `APPROVE` to scaffold, `WAIT` to hold, or `CANCEL` to abort. The five-keyword grammar above applies to the three pipeline-run gates, which are a distinct gate type.\n\n## What about specs and release plans?\n\nThe drafter reads these patterns at the project root (or under `docs/`):\n\n| Category | Filename patterns it walks |\n| :--- | :--- |\n| Project spec | `*UnifiedSpec*.md`, `SPEC.md`, `PRD.md`, `REQUIREMENTS.md`, `docs/spec/*.md` |\n| Release ladder | `*ReleasePlan*.md`, `RELEASE-PLAN.md`, `ROADMAP.md`, `docs/spec/release-plan.md` |\n| Per-rung scope contract | `docs/releases/v*-scope-lock.md`, `docs/releases/\u003crung\u003e-scope.md` |\n| Design notes | `docs/research/\u003cversion\u003e-\u003cfeature\u003e-design.md`, `docs/design/*.md` |\n| ADRs | `docs/adr/*.md` (closed architectural decisions) |\n| Conventions | `CLAUDE.md` at root |\n| Findings | `audit-*/`, `findings/*.md`, `next-cleanup.md` |\n\nIf your project has none of these, the drafter falls back to greenfield mode: it asks you to paste a 1–3 paragraph description and synthesizes a minimal spec + draft from it. You can also point the drafter at your layout in `CLAUDE.md` under a `## Pipeline drafter notes` section (the `pipeline-init` scaffolder writes that section for you).\n\n## Plugin layout\n\n```\n.claude-plugin/\n├── plugin.json              # plugin manifest\n└── marketplace.json         # marketplace manifest (validates with `claude plugin validate .`)\nskills/                      # six skills, each self-contained in its own folder\n├── run/                     #   SKILL.md (thin shim) + references/run.md (canonical procedure)\n├── pipeline-init/\n├── audit-init/\n├── intake/\n├── mem0/\n└── show-run-status/\nhooks/                       # hook_runner.py + hook_utils.py + hooks.json (11 lifecycle events)\nmemory/                      # Mem0 layer: config, redaction, identity, policy, adapter\npipelines/                   # shared pipeline definitions copied into projects by pipeline-init\nscripts/                     # policy/enforcement gates + check_skill_packaging.py\nschemas/                     # JSON schemas (mem0 config, etc.)\ntests/                       # check_plugin_structure.py + unit/cleanroom tests + fixtures\n```\n\nEach skill is **self-contained** in its own folder — SKILL.md only references files inside `references/`, never repo-root files. This is enforced by `scripts/check_skill_packaging.py`, which simulates the plugin loader copying just `skills/\u003cname\u003e/` into a temp directory and verifies every backtick-quoted `references/...` path resolves.\n\n## Where a run's artifacts live\n\n```\n.agent-runs/\u003crun-id\u003e/\n├── manifest.yaml              # the run's scope contract (drafted, then APPROVE'd)\n├── draft-provenance.md        # which manifest fields came from which sources\n├── research.md · plan.md      # researcher findings · planner plan (after human APPROVE)\n├── implementation-report.md   # executor's output\n├── policy-report.md           # auto-policy checks results\n├── verifier-report.md · drift-report.md · critic-report.md\n├── auto-promote-report.md     # six-condition check (only when NOT_ELIGIBLE)\n├── manager-decision.md        # final PROMOTE/BLOCK/REPLAN\n├── judge-log.yaml · judge-metrics.yaml · judge-decisions/\u003caction_id\u003e.yaml  # when judge active\n├── memory/                    # durable run memory (survives compaction); SHA-256 integrity-checked\n└── run.log                    # chronological STAGE_DONE / STAGE_FAILED entries\n```\n\n## Other pipelines\n\n- **Module release** — for work whose end-state is a published artifact, `/agent-pipeline-claude:run \"v1.2.0 release\"` selects the six-phase `module-release` pipeline (Phase 0 preflight → scoped product work → local rehearsal → remote release → verifier → manager). See `docs/module-release-handbook.md`.\n- **Dual-AI audit-handoff** — for projects where one AI implements and another audits, `/agent-pipeline-claude:audit-init` scaffolds the shared discipline (in-repo 5-lens self-audit + out-of-repo audit gate + protocol). See `docs/audit-handoff-handbook.md`.\n\n## Troubleshooting\n\n**Problem:** `/agent-pipeline-claude:run` returns \"Unknown command.\"\n**Likely cause:** plugin not loaded, or client not restarted after install.\n**Fix:** `claude plugin list` should show `✔ enabled`. Fully quit and reopen Cowork (a new conversation is not enough). Confirm `installed_plugins.json` points at the clone you have.\n\n**Problem:** Skills don't appear in the palette.\n**Fix (in order):** (1) fully quit/restart the client; (2) check `enabledPlugins[\"agent-pipeline-claude@agent-pipeline-claude\"]: true` in `settings.json`; (3) confirm the clone exists and contains `skills/run/SKILL.md`; (4) run `claude plugin validate ~/.claude/plugins/marketplaces/agent-pipeline-claude`; (5) use the namespaced form `/agent-pipeline-claude:run`, never bare `/run`.\n\n**Problem:** Hooks silently fail on macOS/Linux.\n**Likely cause:** `hooks/hooks.json` invokes `python`, but your system only has `python3`.\n**Fix:** create a `python` shim on PATH (`ln -s \"$(which python3)\" ~/.local/bin/python`), or on Debian/Ubuntu `apt install python-is-python3`.\n\n**Problem:** `auto-promote` reports NOT_ELIGIBLE.\n**Fix:** read `.agent-runs/\u003crun-id\u003e/auto-promote-report.md`; it cites the failing condition (critic findings \u003e 0, verifier open items \u003e 0, tests didn't run, judge blocked an action). Address it and re-run.\n\n## Upgrading from a prior version\n\n**Third-party Claude Code marketplaces have auto-update OFF by default.** Per the [official docs](https://code.claude.com/docs/en/discover-plugins#configure-auto-updates):\n\n\u003e Official Anthropic marketplaces have auto-update enabled by default. **Third-party and local development marketplaces have auto-update disabled by default.**\n\nThe `agent-pipeline-claude` marketplace is third-party. After each release, do ONE of these to actually receive the new version:\n\n**Option 1 — explicit install (recommended for a one-time upgrade):**\n\n```bash\n# Refresh the marketplace clone:\ncd ~/.claude/plugins/marketplaces/agent-pipeline-claude\ngit pull\ngit checkout v3.0.1\n\n# Install the new version into the cache:\nclaude plugin install agent-pipeline-claude@agent-pipeline-claude\n```\n\nThen `/reload-plugins` in any Cowork session (or restart Cowork) to load the new hooks.\n\n**Option 2 — enable auto-update once, ride future releases hands-free:**\n\nRun `/plugin` in Cowork → **Marketplaces** tab → select `agent-pipeline-claude` → **Enable auto-update**. Then restart Cowork.\n\n**Why this matters:** since v2.2.2 the SessionStart hook detects when the marketplace clone is ahead of the installed `gitCommitSha` and emits a loud warning at the top of the session context with the exact `claude plugin install` command — so even if you forget, you get an in-session reminder instead of silently running a stale version. If you're coming from a pre-v1.0 line, the two-step `/new-run` + `/run-pipeline` flow is long gone — use `/agent-pipeline-claude:run`. See [CHANGELOG.md](CHANGELOG.md) for full migration notes.\n\n## Documentation\n\n- [User Manual](USER-MANUAL.md) — operator-facing step-by-step reference\n- [Architecture](ARCHITECTURE.md) — diagrams + design rationale\n- [Changelog](CHANGELOG.md)\n- [Contributing](CONTRIBUTING.md)\n- [Module Release Handbook](docs/module-release-handbook.md) · [Audit-Handoff Handbook](docs/audit-handoff-handbook.md)\n\n## License\n\nApache-2.0. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottconverse%2Fagent-pipeline-claude","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscottconverse%2Fagent-pipeline-claude","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottconverse%2Fagent-pipeline-claude/lists"}