agentleFS
janek-moonjanek-moon/murex/skills/spiral/SKILL.md

spiral

Skill0 starsChanged 3 months agoMITView on GitHub

Use when a coding task has real unknowns - an unproven integration, an unvalidated performance target, a vendor API that may not behave as its docs claim - and you want to de-risk before committing. Runs risk-driven spiral-model development: register and score the unknowns, spike the largest risk each cycle in a fresh subagent, gate on a commitment review, repeat until the exposure is drained. For clear, well-specified requirements, use ratchet instead.

  • Pipes a download into a shell
  • In this repository2 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this when the work has real unknowns: an unproven integration, a performance target nobody has measured, a vendor API that may not do …

    line 20
  2. Distinctive:

    When the spike returns, verify the evidence yourself - read what it built, run its checks - before touching the gate.

    line 81

≈ “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

murex - Spiral-Model Conductor

Description

You are the conductor of a Boehm spiral. Three parts, three jobs:

  • murex (this plugin's binary) - the deterministic bookkeeping: risk register, top-risk selection, the commitment gate. It never executes work.
  • An executor - a fresh subagent of your host: clean context in, evidence out.
  • You - interview the human into a scored risk register, hand each cycle's brief to the executor, verify the evidence it brings back, close the gate, repeat.

Use this when the work has real unknowns: an unproven integration, a performance target nobody has measured, a vendor API that may not do what the docs claim. If the requirements are already clear, just build it - a spiral with no risks is a slower waterfall.

Where a quality loop iterates until an evaluation gate passes, this loop iterates until the risks are retired - and a commitment review between cycles decides whether the next one is worth its cost.

Prerequisites

murex on PATH, new enough to have --adopt. Feature-detect and (re)install if missing or stale (falls back to a cargo build when no release asset fits):

murex commit --help 2>/dev/null | grep -q -- --adopt || curl -fsSL https://raw.githubusercontent.com/janek-moon/murex/main/install.sh | sh

The loop

start -> risk add (interview) -> [ cycle -> spike -> commit ]* -> drained

1. Open the spiral

murex --root . start "ship realtime collaborative editing" \
  --constraint "must stay on the existing Postgres box" \
  --alternative "CRDT" --alternative "OT with a central server"

2. Register what is not known

Interview the human for the unknowns, then score each: probability (0..1) that it bites, impact (0..1) of the damage if it does. Exposure is the product; only the ranking matters, so score consistently rather than precisely.

murex --root . risk add "CRDT memory footprint may exceed the 2GB box limit" \
  --probability 0.6 --impact 0.9 \
  --mitigation "prototype with a 10k-op document, measure RSS"
murex --root . risk add "Vendor websocket SDK may not support our auth scheme" \
  --probability 0.4 --impact 0.7

3. Open a cycle

murex --root . cycle

Returns the spike brief for the highest-exposure open risk: an instruction that names exactly one risk and forbids broadening scope.

4. Execute the spike

Dispatch a fresh subagent with the brief's instruction and nothing else - a clean context that builds the smallest prototype and reports its evidence back, while your own context stays on the register.

When the spike returns, verify the evidence yourself - read what it built, run its checks - before touching the gate. The gate records what you verified, not what the executor claims.

5. Commitment review

murex --root . commit --decision continue --cost 1.5 \
  --resolve R1 --evidence "10k-op doc held at 380MB RSS; headroom is fine" \
  --outcome "CRDT approach viable"

--decision is the gate:

DecisionMeaning
continueRisk retired or reduced; the next cycle is worth its cost.
pivotEvidence killed the current approach; switch to an alternative.
stopThe objective is not worth the remaining exposure. Spiral ends.

Pass --resolve only when the evidence genuinely retires the risk. An inconclusive spike leaves the risk open, and it will be picked again - which is the correct signal that it needs another cycle.

On pivot, name the alternative you are switching to with --adopt "<alternative>"; it becomes the spiral's current approach and is added to the alternatives list if new. murex commit --decision pivot --adopt "OT with a central server" --cost 1.0 --outcome "CRDT memory too high".

6. Repeat until drained

Go back to step 3. Check convergence with:

murex --root . status

Reports radius (cycles completed, cumulative cost) and remaining_exposure. Falling exposure against rising cost is convergence; the spiral is done when remaining_exposure reaches 0 or a commit decides stop. Flat exposure across two cycles means the spikes are not producing evidence - reframe the risk with the human before spending another cycle.

When the exposure drains

A drained spiral (remaining_exposure 0) means the unknowns are retired and the requirements are now clear. status prints a handoff line: switch to /murex:ratchet to build the de-risked feature bottom-up, verifying each layer.

Notes

  • State lives in .murex/spiral.json in the target repo; commit it to share the register. Risks are never deleted, only resolved or accepted (murex risk close <id> --status accepted for risks the human decides to live with), so what you knowingly shipped past stays auditable.

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.