agentleFS
dc143cDevdc143cDev/claude-chariot/skills/extend/SKILL.md

extend

Skill0 starsChanged 7 months agoMITView on GitHub

Add new goals to a completed, paused, or running Chariot mission. Extends the taskplan with new phases or modifies existing scope without losing progress. As of v0.4 this is also the canonical mid-mission scope-change command (the old /pivot is removed).

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. TserenTserenov/FMT-exocortex-template★ 63same name
    2. iwesys/IWE★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository4 other files it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 10 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    No state / "idle" → "No mission found.

    line 29
  2. Distinctive:

    If runner_pid exists, check if alive:

    line 31
  3. Distinctive:

    If ALIVE → "Runner is active.

    line 35
  4. Distinctive:

    Before asking about new goals, summarize what exists:

    line 41
  5. Distinctive:

    Read CLAUDE.md CHARIOT block → current mission, scope, tech stack

    line 43
  6. Very specific:

    Read .chariot/taskplan.md → show completed vs remaining tasks

    line 44
  7. Very specific:

    Read .chariot/review-log.md (last 5 entries) → recent work quality

    line 45
  8. Distinctive:

    Keep it shorter than set-mission — the foundation already exists

    line 82
  9. Distinctive:

    Add new scope items to the Scope section:

    line 91
  10. Distinctive:

    Add any new out-of-scope items.

    line 99
  11. Distinctive:

    Update Success Criteria if new goals add new criteria.

    line 101
  12. Distinctive:

    Do NOT modify completed tasks' status

    line 125
  13. Distinctive:

    Do NOT renumber existing tasks

    line 126
  14. Very specific:

    Use the dedicated launcher (bin/chariot-spawn.js).

    line 168

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/extend

Extend an existing mission with new goals, or change mission scope mid-flight. Adds new phases/tasks to the taskplan while preserving all completed work.

As of v0.4, /extend is the only scope-change command. The old /pivot skill was removed because it duplicated extend's functionality without adding value. /extend now handles both:

  • Adding new goals to a completed mission ("v0.2 features after v0.1 ships")
  • Modifying/extending scope mid-mission (the old /pivot use case)

Phase 0: Validate Mission State

Read .chariot/state.json.

  • status: "completed" → Ideal. Reactivate and extend.
  • status: "paused" → Good. Extend and resume.
  • status: "running" → A runner is active. Tell the user to run /chariot:halt first, then /chariot:extend. (We can't safely modify taskplan.md while the runner is iterating over it.) STOP.
  • status: "escalated" → OK. Extend with awareness of the escalated task.
  • No state / "idle" → "No mission found. Run /chariot:set-mission first." STOP.

If runner_pid exists, check if alive:

kill -0 {runner_pid} 2>/dev/null && echo "ALIVE" || echo "DEAD"

If ALIVE → "Runner is active. Run /chariot:halt first." STOP.


Phase A: Context Review

Before asking about new goals, summarize what exists:

  1. Read CLAUDE.md CHARIOT block → current mission, scope, tech stack
  2. Read .chariot/taskplan.md → show completed vs remaining tasks
  3. Read .chariot/review-log.md (last 5 entries) → recent work quality

Present to the user:

=== Current Mission ===
{mission overview}

Completed: {N}/{total} tasks
  Phase 1: {title} — {status}
  Phase 2: {title} — {status}
  ...

Tech Stack: {list}
Scope: {current scope items}
Out of Scope: {current exclusions}

What would you like to add?

Phase B: Extension Q&A

Similar to set-mission Q&A but focused on additions only. Do NOT re-ask about existing scope.

Questions to ask:

  1. "What new features or goals do you want to add?"
  2. "Do these new goals require any new tech stack additions?" (e.g., new API, new library)
  3. "Any new out-of-scope boundaries for the extension?"
  4. "Should any existing completed work be modified?" (careful — this means rework)
  5. "Time limit for the extension? (default: inherit from original mission)"

Q&A Rules

  • NEVER end Q&A until user explicitly approves ("start", "go", "enough", etc.)
  • Keep it shorter than set-mission — the foundation already exists
  • Record exchanges to .chariot/qna_history.md (append, don't overwrite)

Phase C: Generate Extension

1. Update CLAUDE.md CHARIOT block

Add new scope items to the Scope section:

## Scope
{existing items}
- [EXT] {new item 1}
- [EXT] {new item 2}

Add any new out-of-scope items. Do NOT remove existing scope or out-of-scope items.

Update Success Criteria if new goals add new criteria.

2. Append to taskplan.md

Find the last phase number and continue from there:

## Phase {N+1}: {Extension title}

### Task {N+1}.1: {title}
- **Work**: {specific items}
- **Verify**: {automatable criteria}
- **Status**: [ ]

### Task {N+1}.2: {title}
- **Work**: {specific items}
- **Verify**: {criteria}
- **Depends**: {N+1}.1
- **Status**: [ ]

Rules:

  • Same task sizing as set-mission (20-60 min per task)
  • New tasks can depend on previously completed tasks
  • Do NOT modify completed tasks' status
  • Do NOT renumber existing tasks

3. Update state.json

node -e "
const fs = require('fs');
const state = JSON.parse(fs.readFileSync('.chariot/state.json', 'utf-8'));

// Reactivate if completed
state.status = 'running';
state.fail_count = 0;
state.consecutive_fails = 0;

// Update task count
state.total_tasks = {new total};

// Set current task to first new task (or first incomplete task)
state.current_task = '{first new task id}';
state.current_phase = '{new phase id}';
state.current_task_started_at = new Date().toISOString();
state.updated_at = new Date().toISOString();

// Reset circuit breaker
state.circuit_breaker = { state: 'CLOSED', consecutive_no_change: 0, total_trips: 0 };

fs.writeFileSync('.chariot/state.json', JSON.stringify(state, null, 2) + '\n');
console.log('State updated for extension');
"

4. Commit extension

git add CLAUDE.md .chariot/taskplan.md .chariot/state.json .chariot/qna_history.md
git commit -m "chore(chariot): extend mission — {extension summary}"

Phase D: Launch Runner

Use the dedicated launcher (bin/chariot-spawn.js). It handles the state transition (status → running, plugin_root refresh, env cleanup) and the detached spawn in one call. Do NOT inline node -e blobs — zsh history expansion mangles ! characters and the spawn fails.

PLUGIN_ROOT=$(node -p "JSON.parse(require('fs').readFileSync('.chariot/state.json','utf-8')).plugin_root")
node "$PLUGIN_ROOT/bin/chariot-spawn.js"

Display:

══════════════════════════════════════════════════════════
 CHARIOT EXTENSION STARTED
══════════════════════════════════════════════════════════

 Extended with: {N} new tasks across {M} new phases
 Total progress: {completed}/{new total}
 Starting from: Task {first new task}
 Runner PID: {pid}
 Log: .chariot/runner.log

 Commands:
   /chariot:status     — Check progress
   /chariot:halt       — Pause execution
   tail -f .chariot/runner.log  — Live log

 You can close this session safely.
══════════════════════════════════════════════════════════

Step 5: Done

STOP. Do not start any implementation work. The runner handles everything.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.