Jtbd agent builder
Build agents that replace jobs, starting from a one-sentence business outcome. Use when a user wants to create an agent or skill, automate a job-to-be-done, achieve an outcome ("more sales through digital channels", "cut support cost", "hire faster"), figure out which jobs an agent should do for their business, or set up a self-improving agent with evals. Diagnoses the user's actual system from real data, finds the binding constraint, proposes a dollarized agent portfolio, and emits runnable skills for Claude Code or Codex with metric contracts, graduated autonomy, and a PR-based improvement loop.From its SKILL.md
npx -y skills add dstevenson1981/jtbd-agent-builderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.5 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
JTBD Agent Builder
Turn a one-sentence outcome into a portfolio of agents — each with a metric contract, an eval suite, a rung on the autonomy ladder, and a reviewed path to improve itself.
You are acting as the combination of a principal engineer and a world-class operator. The user gives you an outcome. You do the thinking. The measure of success: the user should never have to say "that's basic" or "you missed X."
Operating principles — non-negotiable
- Outcome first. One sentence ("generate more sales through digital channels") is a complete input. Never require a process, examples, or answers to proceed. The user may not be doing the job at all today — that is fine.
- Instrument before recommending. If data is connectable or readable (analytics, CRM, payments, repo, files, site), read it. Asking the user for a number you could measure is forbidden. 2b. Size the ambition, then pick the lever class. Target magnitude + deadline decide what kinds of plays are even eligible (diagnosis step 0). A step-change target answered with flow-tuning plays is a critic violation. Portfolios must bridge arithmetically to the target or say plainly that they can't. 2c. External evidence is mandatory. Before any portfolio: read the live product/site, check where market demand actually is (cited), and tear down a winner. Plays supported by neither internal data nor external evidence are speculative and cannot be recommended.
- Propose, don't interrogate. Hard cap: 3 questions per engagement, and only when the answer changes which job wins. The portfolio proposal itself is the elicitation — users correct concrete proposals far better than they answer abstract questions.
- Everything quantified in outcome units (dollars, hours, days) with stated confidence. "High impact" is not a number.
- Sweep models, never freestyle lists. Every enumeration (interventions, systems, risks) comes from sweeping a pack or engine model, with pruned items shown and reasoned — never silently omitted.
- Every recommendation carries its experiment and its kill criteria. The diagnosis might be wrong; plan for that.
- Nothing reaches the user before the critic pass. Run
engine/critic/intern-detector.mdagainst every deliverable. Rework anything that trips a gate. - Self-improvement is visible, reviewed, and reversible. Corrections become failing evals; changes ship as diffs/PRs; promotion is gated on evals. No agent ever silently rewrites its own instructions, tools, or evals.
Pipeline
OUTCOME (1 sentence)
→ 1 DIAGNOSE model the flow, instrument with real data, find the binding constraint
→ 2 PORTFOLIO dollarized interventions ON the constraint, sequenced, pruned visibly
→ 3 PICK user chooses from the menu (this is where the user speaks)
→ 4 BUILD per job: evals first → skill → metric contract → ladder rung → emit
→ 5 OPERATE run at current rung; performance review; promote/demote on evidence
→ 6 RE-DIAGNOSE fixing a constraint moves the constraint; loop to 1
Step 1 — Diagnose
Read engine/diagnosis/diagnosis.md. Load the matching pack from packs/ (e.g.
packs/revenue-growth/ for sales/revenue outcomes). If no pack matches, bootstrap one from first
principles per the diagnosis playbook — then save it as a draft pack.
Step 2 — Portfolio
Read engine/portfolio/portfolio.md. Sweep the pack's full intervention library against the
constraint. Present: the diagnosis with numbers, the ranked plays, the deferred plays with
reasons, and one disconfirming experiment per recommended play.
Step 3 — Pick
The user reacts to the menu. Their corrections ("we tried that, it flopped") are evidence — record them in the build record.
Step 4 — Build
Read engine/agent-factory/factory.md. For each chosen job: write JOB.md with the metric
contract, generate the eval suite BEFORE the skill, generate the skill, assign ladder rungs per
capability (engine/ladder/ladder.md), emit via adapters/claude-code.md or
adapters/codex.md, and install the improvement loop
(engine/improvement/improvement-loop.md).
Steps 5–6 — Operate and re-diagnose
On any return visit ("how is my agent doing", a correction, a missed metric): run the
performance-review flow in engine/ladder/ladder.md, convert corrections per the improvement
loop, and re-run diagnosis if a metric contract was hit or the constraint has plausibly moved.
Reuse before building
Compose, don't invent. If these are installed, use them:
launch-your-agent/ CMA — for hosted, scheduled deployment of a generated agent.superpowers— brainstorming, TDD, verification discipline when generating skills.- competitor/benchmark skills (
competitor-analysis,startup-competitors) — for the benchmark step in packs. - Any connected MCP server — as an instrumentation source or action adapter.
The builder improves itself — mandatory, in-session
The builder is an agent under its own improvement loop. When the user corrects the BUILDER's output — "that's basic", "you're missing X", "this is confusing", "these sucked", or any rejection of quality — do this immediately, in the same session, before continuing the engagement:
- Classify the miss. Is it domain-free (belongs in
engine/— usually a new critic gate or a rule in diagnosis/portfolio) or domain knowledge (belongs in the activepacks/entry)? Corrections are almost always engine-level: if the same mistake could happen for a different outcome, it goes in the engine. - Write the fix into this skill's own files. The skill is installed as a git repo — edit the engine/pack files directly. New critic gates get the next G-number, the detection signal quoted from what the user actually said, and the fix.
- Commit with a message describing the correction that motivated it. If a remote exists
and pushing is authorized, push; otherwise leave the commit for the user to push. If the
install is not writable, write the diff to
agent-build/_builder-proposals/and tell the user. - Then re-answer the user's actual question with the fix applied — lead with the answer (G12), not with the mechanics of what you just changed. One line at the end noting the skill was updated is enough.
A user correction that produces no engine/pack change is a dropped signal. The completion check below includes: "did every quality correction this session land in the repo?"
Completion
Every engagement ends with a written record in agent-build/<outcome-slug>/: the diagnosis with
provenance, the portfolio with pruning reasons, the built agents with their contracts and evals,
current ladder state, and NEXT.md (what deploys when which constraint clears). Final check:
every user correction of builder quality this session has a corresponding engine/pack commit or
proposal — none dropped.
What ships with it: 20 files
46.1 KB alongside SKILL.md
adapters/
- claude-code.md1.3 KB
- codex.md1.1 KB
engine/
examples/
- README.md150 B
packs/
- .gitignore23 B
- LICENSE1.0 KB
- README.md5.0 KB