Agent skill

Warren Dogfood Pipeline

by jayminwest in jayminwest/warren

Full prioritize → dispatch → shepherd → track pipeline against the live warren instance.

MITAuto-check passedAgent Workflows

Install Warren Dogfood Pipeline

skills CLI
$ npx skills add jayminwest/warren --skill warren-dogfood-pipeline -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jayminwest/warren warren-dogfood-pipeline --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jayminwest/warren.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/warren-dogfood-pipeline .claude/skills/warren-dogfood-pipeline && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
warren-dogfood-pipeline
GitHub stars
481
Token cost
~2.9k tokens
SKILL.md length
1,597 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

Full prioritize → dispatch → shepherd → track pipeline against the live warren instance.

  • Works in 7 steps: Inputs (ask if not given) → Phase 1 — Audit & prioritize (subagent) → Phase 2 — Dispatch plumbing → …
  • Agent Workflows work in your project
  • SKILL.md covers 0. Inputs (ask if not given), 1. Phase 1 — Audit &…, 2. Phase 2 — Dispatch plumbing and 3. Phase 3 — Sequential loop…, plus 3 more sections
  • Calls bun, git and gh; needs WARREN_API_TOKEN

What it does

Warren Dogfood Pipeline is an agent skill from jayminwest/warren. Full prioritize → dispatch → shepherd → track pipeline against the live warren instance. Audits the seeds backlog around a focus theme, dispatches the surviving issues to warren agents one at a time, babysits the resulting PRs to merge (update-branch, conflict-repair runs, auto-merge), and closes the loop in the tracker. Activate for prompts like "run the dogfood pipeline", "dispatch the P1 <theme issues to warren", "audit and dispatch", "work the backlog through warren agents".

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows. The repository describes itself as: Run coding agents like infrastructure, not terminal sessions. Warren manages isolation, lifecycle, spend, recovery, and Git delivery on compute you control. The licence is MIT.

When your agent uses it

  • Agent Workflows work in your project

Example prompts

  • “run the dogfood pipeline”
  • “dispatch the P1 <theme issues to warren”
  • “audit and dispatch”
  • “/warren-dogfood-pipeline”

Requirements

  • A credential in WARREN_API_TOKEN

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Inputs (ask if not given)
  2. Phase 1 — Audit & prioritize (subagent)
  3. Phase 2 — Dispatch plumbing
  4. Phase 3 — Sequential loop with merge gates
  5. PR shepherding (expect to do this for EVERY PR)
  6. Known failure modes (all observed live)
  7. Wrap-up (all steps, in order)

What it can do on your machine

Read from SKILL.md and the folder at commit 9595340. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bun
    • git
    • gh
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • WARREN_API_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Warren Dogfood Pipeline loads about 2.9k tokens when it runs. Until then it costs about 127 tokens; SKILL.md has 1,597 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~127
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jayminwest/warren at commit 9595340, republished under its MIT licence (© jayminwest). 1,597 words, ~2,933 tokens.

Download SKILL.mdSave it as .claude/skills/warren-dogfood-pipeline/SKILL.md (or your agent's skills folder).
name
warren-dogfood-pipeline
description
Full prioritize → dispatch → shepherd → track pipeline against the live warren instance. Audits the seeds backlog around a focus theme, dispatches the surviving issues to warren agents one at a time, babysits the resulting PRs to merge (update-branch, conflict-repair runs, auto-merge), and closes the loop in the tracker. Activate for prompts like "run the dogfood pipeline", "dispatch the P1 <theme> issues to warren", "audit and dispatch", "work the backlog through warren agents".

Protocol: Warren Dogfood Dispatch Pipeline

You run a themed slice of the seeds backlog end-to-end through the live warren instance: audit → ordered dispatch list → sequential runs → PR shepherding → tracker closure. Every run on the public instance is also demo content, so prefer dispatching warren runs over doing the work locally — including for repairs. The pipeline was proven 2026-07-28 (deletion pass: 9 issues, 15 runs, PRs #650–#658, plan pl-3a79 closed).

0. Inputs (ask if not given)

  • Focus theme + priority band — e.g. "P0/P1 deletion-focused", "security leaks", "docs drift". This drives the audit lens.
  • Agent + model/provider — ALWAYS stop and ask the operator (AskUserQuestion) which model + provider to use for all tasks in the session, even when every other input was given. Recommended default: provider openrouter, model moonshotai/kimi-k3, on the pi harness (the only harness that can reach OpenRouter; it is also the project defaultRole). Offer the anthropic tiers (src/registry/builtins/model-tiers.ts) as alternatives — for hard or large refactors use claude-opus-5 (Opus 5; pass it as an explicit modelOverride — do NOT rely on the opus tier's default, which still pins the older claude-opus-4-8). Dispatch with explicit providerOverride + modelOverride matching the answer.
  • Dispatch mode — sequential one-at-a-time (default, what the operator chose last time) vs parallel. Sequential means: next issue run dispatches only after the previous run is TERMINAL; repair runs are exempt and may overlap.
  • Blocked issues — skip them, or dispatch their blockers first (last time: blockers first).

Report your understanding and the candidate list BEFORE dispatching anything. Dispatching costs real money and opens real PRs.

1. Phase 1 — Audit & prioritize (subagent)

Spawn a subagent that invokes the seeds-issue-audit skill, with an extra deliverable bolted on: a DELETION-DISPATCH-LIST-style section for the focus theme — every still-open, in-theme issue with LIVE blocker resolution (a closed blocker doesn't count; re-check each edge) and a serial dispatch order, blockers first, sequenced so each run can build on the previous merge. Require the exact line format <order>. <id> — <title> — <UNBLOCKED | blocked-by: ids> so you can dispatch straight off it.

Babysit the subagent: if it stops claiming to "wait for a worker notification" while it has no live children, resume it and tell it to finish the batch inline.

2. Phase 2 — Dispatch plumbing

  • Instance: hostname lives only in the gitignored deploy/k8s/overlays/gke-live/kustomization.yaml (Ingress host patch). Token: kubectl get secret warren-secrets -n warren -o jsonpath='{.data.warren-api-token}' | base64 -d (key is warren-api-token, not WARREN_API_TOKEN).
  • Project id: GET /projects, match the gitUrl.
  • Dispatch: POST /runs with {agent, project, prompt, modelOverride, seedId}. Always pass seedId — it links the run to the tracker. BOTH POST /runs and GET /runs/:id WRAP the run as {run: {...}} — since warren-7d84 the detail GETs wrap to match the POST and the plan-runs family, so no route needs per-envelope knowledge. Parse .run.state, never .state. A bare parse reads all-null, which a polling loop silently reads as "not terminal yet" and spins to its iteration cap instead of failing loudly. Terminal states are succeeded|failed|cancelled.
  • Repair dispatch onto an existing PR branch: same POST with ref = targetBranch = the PR's head branch. Warren pushes back to that branch in place; the agent must NOT open a new PR or branch.

Prompt template per issue run (adapt, keep all five elements):

  1. "Work seeds issue <id>. First run sd show <id> --json from the repo root" — the issue body is the spec; your summary is a digest.
  2. Context of what already merged on main that this run builds on.
  3. Scope guidance (what to delete/change; repo-specific gotchas like bun run check:bundle-size --update for UI work).
  4. "Quality gates are terminal: bun run check:all must be green before you commit and report done."
  5. "Close the issue with sd close <id> --reason ..., then commit everything."

Polling: background loop, ~55s interval, ≤10 iterations per loop (re-launch on expiry). Pipe curl straight into the JSON parser — never round-trip response bodies through a shell variable + echo (zsh echo expands \n inside the JSON and corrupts it). On terminal, capture state, failureReason, prUrl, costUsd.

3. Phase 3 — Sequential loop with merge gates

  • Next independent issue dispatches when the previous run is terminal.
  • A dependent issue dispatches only when every blocker's PR is MERGED on main (re-verify with gh pr view <n> --json state immediately before dispatch) — a terminal run is not enough; the next clone needs the code.
  • Interleave: put independent issues between a blocker and its dependents so PRs have time to merge while other work runs.

4. PR shepherding (expect to do this for EVERY PR)

Themed slices touch overlapping files (CLAUDE.md, budgets, .seeds/issues.jsonl), so almost every PR that outlives another merge goes stale. Diagnose with gh pr view <n> --json mergeable,mergeStateStatus,autoMergeRequest,statusCheckRollup:

StateFix
BEHIND, auto-merge armedgh pr update-branch <n> (re-run after every upstream merge — serial auto-merge is a chase)
DIRTY (conflicts)FIRST verify the conflict is real: git merge-tree --write-tree origin/main <head-ref>. Clean (tree hash only) has TWO possible meanings — check whether the PR touches .seeds/*.jsonl before concluding: (a) PR does NOT touch .seeds → GitHub's cached mergeability is stale, push a merge commit to force a recompute, do NOT spend a repair run (warren-fb6e). (b) PR touches .seeds → the conflict is REAL for GitHub: the local merge=seeds-jsonl driver resolved an id-keyed row rewrite that GitHub's server-side merge genuinely cannot (it runs no custom drivers), so merge-tree-clean is NOT proof of a stale cache (warren-b34b). The seeds-merge-autoheal workflow pushes the driver-aware merge automatically; if it has not (or failed), do it manually: checkout the PR branch, git merge origin/main --no-edit (driver registered by bun install), verify bun run check:seeds-integrity + no duplicate ids, push. Genuinely conflicted even with the driver → dispatch a repair run on the PR branch (below)
CLEAN/green but auto-merge offArticle IX gate declined to arm it; gh pr merge <n> --auto --squash — only with operator authorization to unblock merges (ask once, then treat as standing for the session)
CI FAILUREread the failing gate log; bundle-size overshoot after a merge → repair run that runs the bounded check:bundle-size --update and commits ONLY the budget diff

Repair-run prompt essentials: name the PR and its issue; name what merged on main since the branch was cut; git fetch origin && git merge origin/main; preserve BOTH sides (deletions on main win over incidental touches; this branch's feature always stays); .seeds/issues.jsonl needs explicit attention even when git reports NO conflict — .gitattributes routes it through the merge=seeds-jsonl driver (a 3-way id-keyed merge registered by bun install), which is correct ONLY in a clone where the driver is registered; verify bun run check:seeds-integrity after any merge, and remember closing one issue rewrites blockedBy on every plan sibling (warren-9c90 / warren-db8c / warren-b34b). Always run jq -r .id .seeds/issues.jsonl | sort | uniq -d after the merge. Resolve by taking closed where either side closed and INTERSECTING blockedBy — each side only ever removes a blocker, so taking either row alone resurrects one the other side satisfied. Then confirm with bun run check:seeds-integrity; budgets take main's numbers unless this branch changed the UI; stay on the branch, no new PR, gate green, commit, no push.

Show full SKILL.md (443 more words)Show less

5. Known failure modes (all observed live)

  • Stale host clone on ref-dispatch (warren-b94b): a repair run's workspace can miss a recent push to the same branch → reap push rejected non-fast-forward → finalize_failed, work discarded. Recovery: re-dispatch immediately (dispatch re-fetches), or fix locally in a throwaway git worktree and push.
  • noChanges seed auto-close (warren-0395): a run that commits nothing can still close its seedId at reap. After any run that declined or no-op'd, verify the seed's status ON ORIGIN (git show origin/main:.seeds/issues.jsonl) and reopen if needed.
  • Lost closes in conflict-repair merges: every .seeds conflict resolution risks dropping a close from one side. At wrap-up, verify EVERY dispatched seed's final status and re-close with evidence.
  • Sandboxed pre-commit hook: warren's git-fixture tests escape their temp dirs under Claude Code's sandbox — they can commit fixture debris into the working tree and flip core.bare=true on the repo. Never let the check:all hook run sandboxed: commit data/docs-only changes with --no-verify (CI arbitrates), and run suspect git-fixture tests with the sandbox disabled. Repair: git config core.bare false.
  • Agent declines the issue: an agent refusing work because the issue contradicts a shipped contract is SIGNAL, not failure. Read its reasoning from the run events, surface the design decision to the operator (AskUserQuestion with a recommended re-scope), then re-dispatch with the approved scope in the prompt — and have the run sd update the issue description first so the tracker matches.

6. Wrap-up (all steps, in order)

  1. Verify every dispatched seed is closed on origin with an evidence-citing reason; restore lost closes. Record sd plan outcome <pl> --result ... if a plan completed.
  2. File follow-up issues for every product bug the session surfaced (sd create) — dogfood yield is half the point.
  3. ml record the failures/patterns worth keeping (with --resolution on failures).
  4. sd sync && ml sync; if the hook blocks sandboxed, commit the .seeds/.mulch diff with --no-verify.
  5. Rebase onto origin (main moved under you all session) and push; git status must end "up to date with origin". Do NOT trust push output alone — remote: N of N required status checks are expected appears on a SUCCESSFUL push and is easy to misread as a rejection (warren-53c0). After any push that touched .seeds/, verify the remote tip is clean: git fetch origin && bun run check:seeds-integrity against git show origin/main:.seeds/issues.jsonl (or the branch you pushed), and confirm jq -r .id <(git show origin/<ref>:.seeds/issues.jsonl) | sort | uniq -d is empty. The pre-push hook refuses a corrupt tip locally, but a misread of push output has still left a bad file on origin once.
  6. Final report: table of issue → PR → merge state → cost, total spend, borderline items left for the operator, and the filed follow-ups.

© jayminwest, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/warren-dogfood-pipeline of jayminwest/warren.

Open the folder on GitHubat commit 9595340

Compare with similar skills

Warren Dogfood Pipeline next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Warren Dogfood Pipeline compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Warren Dogfood Pipeline this skilljayminwest/warren481—~2.9kAutomated safety check: PassMIT
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
Hook Development for Claude Code Pluginsanthropics/claude-plugins-official38k10 repos~4.1kAutomated safety check: NotesApache-2.0
Using Superpowersfarm-fe/farm5.6k36 repos~1.4kAutomated safety check: PassMIT
Executing Plans Inlineobra/superpowers297k2 repos~5.1kAutomated safety check: PassMIT
Skill CreatorAzure/azqr79689 repos~8.2kAutomated safety check: PassApache-2.0

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • Hook Development for Claude Code Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.

    38k GitHub starsUsed in 10 repos~4.1k tokens
    Agent WorkflowsAuto-check: notes
  • Using Superpowers

    farm-fe/farm

    A skill your agent uses when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions

    5.6k GitHub starsUsed in 36 repos~1.4k tokens
    Agent WorkflowsAuto-check passed
  • Executing Plans Inline

    obra/superpowers

    Has the agent carry out an implementation plan itself, task by task in the current session, keeping a ledger, proving each step with a test and ending with one whole-branch review.

    297k GitHub starsUsed in 2 repos~5.1k tokens
    Agent WorkflowsAuto-check passed
  • Skill Creator

    Azure/azqr

    Official

    Create new skills, modify and improve existing skills, and measure skill performance.

    796 GitHub starsUsed in 89 repos~8.2k tokens
    Agent WorkflowsAuto-check passed
  • Claude Code Agent Development

    anthropics/claude-plugins-official

    Official

    Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.

    38k GitHub starsUsed in 7 repos~2.8k tokens
    Agent WorkflowsAuto-check passed

More from jayminwest/warren

  • Os Eco Dep Sync

    jayminwest/warren

    Bump warren onto the latest published @os-eco/ versions across package.json + bun.lock and the Dockerfile CLI pins, then run the gates and open a PR.

    481 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Good First Issue Batch

    jayminwest/warren

    File a batch of contributor-ready GitHub issues from the seeds backlog, re-verifying every candidate against HEAD first so no dead issue reaches a contributor.

    481 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Release

    jayminwest/warren

    Prepare, cut, and verify a warren release — tracker audits, version bump, CHANGELOG curation, ROADMAP update, push, then watch the pipeline through to published artifacts.

    481 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Seeds Issue Audit

    jayminwest/warren

    Audit and triage open Seeds (sd) issues — find which can be closed, auto-close high-confidence completed ones, and report borderline cases.

    481 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed
  • UI Design Review

    jayminwest/warren

    Independent design review of a warren web-UI change. An agent skill from jayminwest/warren.

    481 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Warren Dogfood Pipeline

What does Warren Dogfood Pipeline do?

Full prioritize → dispatch → shepherd → track pipeline against the live warren instance. Warren Dogfood Pipeline is an agent skill from jayminwest/warren. Full prioritize → dispatch → shepherd → track pipeline against the live warren instance.

When should I use Warren Dogfood Pipeline?

Warren Dogfood Pipeline fits situations like: agent Workflows work in your project.

How do I install Warren Dogfood Pipeline in Claude Code?

Run `npx skills add jayminwest/warren --skill warren-dogfood-pipeline -a claude-code`. Or copy the skill folder (.agents/skills/warren-dogfood-pipeline in jayminwest/warren) into .claude/skills/warren-dogfood-pipeline in your project. Claude Code loads it when a task matches its description.

How do I install Warren Dogfood Pipeline in Codex?

Run `npx skills add jayminwest/warren --skill warren-dogfood-pipeline -a codex`. Or copy the skill folder (.agents/skills/warren-dogfood-pipeline in jayminwest/warren) into .agents/skills/warren-dogfood-pipeline in your project. Codex loads it when a task matches its description.

Can I use Warren Dogfood Pipeline in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jayminwest/warren --skill warren-dogfood-pipeline -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/warren-dogfood-pipeline, .gemini/skills/warren-dogfood-pipeline, .github/skills/warren-dogfood-pipeline and .opencode/skills/warren-dogfood-pipeline in your project.

What does Warren Dogfood Pipeline need to run?

Going by SKILL.md and its folder, Warren Dogfood Pipeline needs the command-line tools its instructions call (bun, git, gh and jq) and credentials named WARREN_API_TOKEN. Our summary lists: A credential in WARREN_API_TOKEN.

Does Warren Dogfood Pipeline access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Warren Dogfood Pipeline safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Warren Dogfood Pipeline use?

Warren Dogfood Pipeline is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Warren Dogfood Pipeline use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Warren Dogfood Pipeline?

Skills that share tags, products or a category with Warren Dogfood Pipeline: MCP Server Builder (anthropics/skills, 180k stars), Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Using Superpowers (farm-fe/farm, 5.6k stars) and Executing Plans Inline (obra/superpowers, 297k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Warren Dogfood Pipeline?

jayminwest (a GitHub user) maintains it in jayminwest/warren, which has 481 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 9, 2026.

Source: jayminwest/warren on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.