Built-in templates
Pipelines → New pipeline offers four templates under Or start from a template. Choosing one creates a new, fully editable pipeline and opens it in the editor. Templates are starting points: nothing links the pipeline back to the template afterwards.
When created inside a project, the pipeline uses the project’s workspace, and template variables the project already provides (for example testCommand from a Test command) are dropped.
| Template | Steps | Workspace | Harnesses | Human gate | Max concurrent runs |
|---|---|---|---|---|---|
| Demo (Simulator) | 8 | Empty folder | Simulator | yes | 0 (unlimited) |
| Feature: Plan → Build → Review → PR | 6 | Git worktree | Claude Code, Codex | yes | 2 |
| Bug fix (fast lane) | 4 | Git worktree | Claude API, Claude Code | no | 3 |
| Blank pipeline | 1 | Git worktree | Claude Code | no | 0 (unlimited) |
The Git worktree templates leave Local repository empty. Set it (or put the pipeline in a project with a workspace) before running; until then, runs can’t start.
Demo (Simulator)
Section titled “Demo (Simulator)”Full Jimothy flow with simulated agents: triage, plan, build, test, review loop, approval, ship. No setup needed.
Created as Demo: Issue to PR (simulated), and seeded automatically on first launch. Workspace: Empty folder, base branch main, branch template jimothy/{{issue.key | slug}}-{{run.number}}.
triage ─► plan ─► implement ─┬─► tests ─┬─► review ─► approve ─► ship └─► lint ─┘ │ ▲ │ loop back (max 2) └───────────┘| # | Step (id) | Type | Harness · model | Runs after | Options |
|---|---|---|---|---|---|
| 1 | Triage (triage) |
Agent | Simulator · fast |
— | |
| 2 | Plan (plan) |
Agent | Simulator · realistic |
triage | Plan prompt |
| 3 | Implement (implement) |
Agent | Simulator · realistic |
plan | Implement prompt, retries 1 |
| 4 | Unit tests (tests) |
Agent | Simulator · fast |
implement | |
| 5 | Lint & typecheck (lint) |
Shell | — | implement | echo Linting {{run.branch}} && sleep 1 && echo "0 problems" |
| 6 | Code review (review) |
Agent | Simulator · realistic |
tests, lint | Review prompt, pass VERDICT:\s*APPROVE, loop back to implement, max 2 |
| 7 | Human approval (approve) |
Approval | — | review | “Review the changes for {{issue.key}} and approve to open the pull request.” |
| 8 | Open pull request (ship) |
Shell | — | approve | echo Pushing {{run.branch}} && sleep 1 && echo https://github.com/acme/app/pull/$FACTORY_RUN_NUMBER |
The Simulator’s realistic reviewer requests changes on the first pass and approves on the second, so every demo run shows one feedback loop. The final step prints a fake GitHub PR URL, which Jimothy detects and shows as a PR link on the run.
The Triage prompt is:
Classify and scope issue {{issue.key}}: {{issue.title}}
{{issue.description}}The Unit tests prompt is Run the unit test suite and report results. Plan, Implement and Review use the shared prompts below.
Feature: Plan → Build → Review → PR
Section titled “Feature: Plan → Build → Review → PR”Claude Code plans with Opus and builds with Sonnet, your tests run, Codex reviews (looping back on requested changes), you approve, a PR is opened.
Pipeline description: “Multi-harness feature pipeline with cross-model review and a human gate.” Workspace: Git worktree, base branch main, branch template jimothy/{{issue.key | slug}}. Variables: testCommand = npm test.
plan ─► implement ─► test ─► review ─► approve ─► pr ▲ │ │ └─────────┴────────┘ loop back (max 2 each)| # | Step (id) | Type | Harness · model | Runs after | Options |
|---|---|---|---|---|---|
| 1 | Plan (plan) |
Agent | Claude Code · opus |
— | Plan prompt, timeout 20 min |
| 2 | Implement (implement) |
Agent | Claude Code · sonnet |
plan | Implement prompt, timeout 60 min, retries 1 |
| 3 | Run tests (test) |
Shell | — | implement | {{vars.testCommand | raw}}, timeout 20 min, loop back to implement, max 2 |
| 4 | Cross-model review (review) |
Agent | OpenAI Codex CLI · gpt-5-codex |
test | Review prompt, pass VERDICT:\s*APPROVE, loop back to implement, max 2, timeout 20 min |
| 5 | Human approval (approve) |
Approval | — | review | “Approve to push {{run.branch}} and open a pull request for {{issue.key}}.” |
| 6 | Open pull request (pr) |
Shell | — | approve | PR command (below), timeout 5 min |
Requirements: Claude Code and Codex installed and signed in (or switch the review to another harness), your test command, and an authenticated gh CLI with push access for the last step.
Bug fix (fast lane)
Section titled “Bug fix (fast lane)”Claude API triages the bug, Claude Code reproduces and fixes it with a regression test, tests run, PR opens automatically.
Pipeline description: “Reproduce, fix, test, ship. No human gate.” Workspace: Git worktree, base branch main, branch template fix/{{issue.key | slug}}. Variables: testCommand = npm test.
triage ─► fix ─► test ─► pr ▲ │ └──────┘ loop back (max 2)| # | Step (id) | Type | Harness · model | Runs after | Options |
|---|---|---|---|---|---|
| 1 | Triage (triage) |
Agent | Claude API · claude-opus-5 |
— | Triage prompt (below) |
| 2 | Reproduce & fix (fix) |
Agent | Claude Code · sonnet |
triage | Fix prompt (below), timeout 45 min |
| 3 | Run tests (test) |
Shell | — | fix | {{vars.testCommand | raw}}, loop back to fix, max 2 |
| 4 | Open pull request (pr) |
Shell | — | test | PR command (below) |
Triage prompt (runs on the API harness, so it has no file access and works from the issue text alone):
Bug report {{issue.key}}: {{issue.title}}
{{issue.description}}
Summarize the likely root cause areas, a reproduction strategy, and the regression test that should be written. Be concise.Fix prompt:
Fix bug {{issue.key}}: {{issue.title}}
{{issue.description}}
Triage notes:{{steps.triage.output}}{{#if steps.test.output}}The previous fix failed the test suite:{{steps.test.output | truncate:4000}}{{/if}}First write a failing regression test, then fix the bug, then commit referencing {{issue.key}}.There’s no approval step: when tests pass, the branch is pushed and a PR opened automatically. Add an approval step before pr if you want a gate.
Blank pipeline
Section titled “Blank pipeline”Start from scratch.
Created as New pipeline. Workspace: Git worktree, base branch main, branch template jimothy/{{issue.key | slug}}. One step:
| # | Step (id) | Type | Harness · model | Prompt |
|---|---|---|---|---|
| 1 | Build (build) |
Agent | Claude Code · sonnet |
Resolve {{issue.key}}: {{issue.title}} + blank line + {{issue.description}} |
Shared prompts
Section titled “Shared prompts”Plan prompt
Section titled “Plan prompt”You are the planning agent on Jimothy, an automated software delivery crew.
Issue {{issue.key}}: {{issue.title}}{{#if issue.url}}Link: {{issue.url}}{{/if}}
{{issue.description}}
Study the repository in the current working directory and write a concise, concrete implementation plan:1. Files to change or create, and why.2. Edge cases and risks.3. How the change will be verified (tests to add or run).
Do NOT modify any files. Output only the plan in Markdown.Implement prompt
Section titled “Implement prompt”You are the implementation agent on Jimothy, an automated software delivery crew.You are on git branch {{run.branch}}.
Issue {{issue.key}}: {{issue.title}}
{{issue.description}}
Implementation plan from the planning agent:{{steps.plan.output}}{{#if steps.review.output}}A reviewer requested changes on the previous attempt. Address every point:{{steps.review.output}}{{/if}}Implement the change completely, add or update tests, and make sure the project builds and tests pass.Commit your work with a descriptive message referencing {{issue.key}}.Finish with a short summary of what you changed.Review prompt
Section titled “Review prompt”You are a strict senior code reviewer on Jimothy, an automated software delivery crew.
Review the changes on the current branch against {{run.baseBranch}} (use `git diff {{run.baseBranch}}...HEAD`)for issue {{issue.key}}: {{issue.title}}
{{issue.description}}
Check correctness, tests, security and code quality. Do not modify files.End your answer with exactly one line:VERDICT: APPROVEorVERDICT: CHANGES_REQUESTEDfollowed by a numbered list of required changes if any.PR command
Section titled “PR command”git push -u origin HEAD && gh pr create --base {{run.baseBranch}} --head {{run.branch}} --title "$FACTORY_ISSUE_KEY: $FACTORY_ISSUE_TITLE" --body "Automated by Jimothy run #$FACTORY_RUN_NUMBER. $FACTORY_ISSUE_URL"{{run.baseBranch}} and {{run.branch}} are shell-quoted automatically; the title and body use environment variables inside double quotes. gh pr create prints the PR URL, which becomes the run’s PR link.