/endurance
Set or clear the long-running goal for this John session. Pinned into the system prompt by the SessionStart hook so it survives context compaction and stays visible across long ralph-loop runs. Use this command when the user says "let's run this in endurance mode", "set the
$ npx -y skills add kitchen-engineer42/joharnessburg --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/endurance
Context preview
What this command does when you run it.
Set or clear the long-running goal for this John session. Pinned into the system prompt by the SessionStart hook so it survives context compaction and stays visible across long ralph-loop runs. Use this command when the user says "let's run this in endurance mode", "set the
Command definition
endurance.mddescription: Set or clear the long-running goal for this John session. Pinned into the system prompt by the SessionStart hook so it survives context compaction and stays visible across long ralph-loop runs. Use this command when the user says "let's run this in endurance mode", "set the endurance goal to ...", "/john:endurance ...", or starts any long-running shakedown / pipeline / build that should hold a finish line across many compactions.
argument-hint: "[goal-text] [--clear]"
When this command fires:
1. Parse the user's argument. Everything after `/john:endurance` (joined into one string) is the endurance goal — a short, concrete statement of what the long run is trying to produce. The `--clear` flag (if present, alone) clears the active endurance goal.
2. Invoke the script via Bash:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/set_endurance.py" <user-args>Pass the goal text as a single argument (quote it). For `--clear`, pass only `--clear`.
3. The script returns JSON with `action: "set" | "clear" | "show"`. Show the user:
- For `set`: confirm the goal is now written to `<cwd>/.john/workspace.json` under `session_metadata.endurance_goal`. Tell them the SessionStart hook will inject it into the system prompt at the top of every session in this directory from now on — so the goal survives context compaction and fresh-terminal restarts.
- For `clear`: confirm the goal is removed. SessionStart will fall back to the "no endurance goal set" message.
- For `show` (no args and no `--clear`): print the currently-set goal, or note that none is set.
4. After a successful `set`, gently remind the user that this is best used for *real* long runs — not every John session needs an endurance goal. A short Q&A session or a one-phase iteration is fine with just the project intent at the top of PLAN.md. Endurance mode is for runs that span hours, multiple compactions, or many ralph-loop iterations.
5. On `success: false` with "No .john/workspace.json found", tell the user to run `/john:init` first — endurance goals attach to a John workspace.
Endurance mode pairs with the `ralph-loop` and `context-management` skills — the goal is what survives compaction and what you re-align to after each iteration.
One behavioral consequence (see `vertical-workflows`): with an endurance goal set, John **assumes the session is workflow-configured** (`/effort ultracode`, dynamic workflows available) and will not pause a long run to ask the user to confirm config. If the Workflow tool is genuinely absent, John falls back to inline dispatch and notes it in PLAN.md rather than stopping. Users starting an endurance run should set up the session per the README's "Running John with dynamic workflows" recipe first.
Read more
description: Set or clear the long-running goal for this John session. Pinned into the system prompt by the SessionStart hook so it survives context compaction and stays visible across long ralph-loop runs. Use this command when the user says "let's run this in endurance mode", "set the endurance goal to ...", "/john:endurance ...", or starts any long-running shakedown / pipeline / build that should hold a finish line across many compactions. argument-hint: "[goal-text] [--clear]"
When this command fires:
1. Parse the user's argument. Everything after `/john:endurance` (joined into one string) is the endurance goal — a short, concrete statement of what the long run is trying to produce. The `--clear` flag (if present, alone) clears the active endurance goal.
2. Invoke the script via Bash:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/set_endurance.py" <user-args>Pass the goal text as a single argument (quote it). For `--clear`, pass only `--clear`.
3. The script returns JSON with `action: "set" | "clear" | "show"`. Show the user:
- For `set`: confirm the goal is now written to `<cwd>/.john/workspace.json` under `session_metadata.endurance_goal`. Tell them the SessionStart hook will inject it into the system prompt at the top of every session in this directory from now on — so the goal survives context compaction and fresh-terminal restarts.
- For `clear`: confirm the goal is removed. SessionStart will fall back to the "no endurance goal set" message.
- For `show` (no args and no `--clear`): print the currently-set goal, or note that none is set.
4. After a successful `set`, gently remind the user that this is best used for *real* long runs — not every John session needs an endurance goal. A short Q&A session or a one-phase iteration is fine with just the project intent at the top of PLAN.md. Endurance mode is for runs that span hours, multiple compactions, or many ralph-loop iterations.
5. On `success: false` with "No .john/workspace.json found", tell the user to run `/john:init` first — endurance goals attach to a John workspace.
Endurance mode pairs with the `ralph-loop` and `context-management` skills — the goal is what survives compaction and what you re-align to after each iteration.
One behavioral consequence (see `vertical-workflows`): with an endurance goal set, John **assumes the session is workflow-configured** (`/effort ultracode`, dynamic workflows available) and will not pause a long run to ask the user to confirm config. If the Workflow tool is genuinely absent, John falls back to inline dispatch and notes it in PLAN.md rather than stopping. Users starting an endurance run should set up the session per the README's "Running John with dynamic workflows" recipe first.
中文版: README_ZH.md John turns unstructured source material into a working knowledge-dense app. It keeps knowledge engineering and app building in one durable run, coordinates large per-entry fan-outs, and leaves auditable events and checkpoints on disk.
Other commands on joharnessburg.
- /archive
Bundle the finished John workspace (PLAN.md, CLAUDE.md, AGENTS.md, .john/, .claude/skills/, .agents/skills/) into a release zip. Use when the user says "archive this project", "package it up", "we're done", or you've completed an end-to-end run and want a portable bundle.
Open command - /init
Scaffold the John workspace in the current project. Creates .john/ working state, a starter PLAN.md, and (if missing) a starter CLAUDE.md. Optionally copies an input path into .john/input/. ALWAYS run this first when starting a new John project — every other John command depends
Open command - /report
Assemble a run report — the shareable postmortem of this John run (process scorecard + manifest + outcome summary + candidate lessons), privacy-scrubbed. Use when a run wraps or a milestone ships, when the user asks "how did this run go?", "make a run report", or wants evidence
Open command - /status
Print John workspace status — active template, current phase, inventory of inputs/parsed/chunks/knowledge/events/checkpoints/produced-skills. Use whenever the user asks "where are we?", "what's done?", "what's next?", or you need to verify state before advancing a phase. Cheap;
Open command

