By Joe-Withers
Simple, repeatable AI workflows. Define named flows that chain commands, agents, and bash steps.
List available .thenn flows (project + personal) and any in-progress journaled runs
Scaffold a new .thenn workflow file
Resume a journaled .thenn flow, or start a new journaled run
Run a named .thenn flow
Edit an existing .thenn workflow file
Use this skill when scaffolding or updating a .thenn workflow file. Teaches Claude how to generate and modify flows, apply the input injection rules, and write the file to .thenn/. Loaded automatically by the /thenn.new and /thenn.update commands.
Use this skill when executing a .thenn workflow file. Teaches Claude how to discover, parse, and execute each step in a thenn flow using claude, bash, human, and loop step types. Loaded automatically by the /thenn.run command.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Simple, repeatable AI workflows. Define named flows that chain AI commands, agents, and bash steps — then just run them.
/plugin marketplace add Joe-Withers/thenn
/plugin install thenn@thenn
/thenn.run <name> [input...] Run a named flow
/thenn.resume [ts] Run a flow with journaling; resume a crashed run, or start a new journaled one
/thenn.new <name> [description] Scaffold a new flow
/thenn.update <name> [change...] Edit an existing flow
/thenn.list List available flows and any in-progress journaled runs
Flows are .thenn files — simple YAML that sequences commands, agents, bash steps, and human gates into a named, repeatable workflow.
name: bugfix
description: Reproduce, plan, implement, lint, review, commit
input: "Describe the bug"
steps:
- id: reproduce
type: agent
input: true
prompt: "Write a failing test that reproduces the bug. Do not fix it yet."
- id: plan
type: agent
input: true
prompt: "Read the failing test. Plan the fix and save it to spec/<branch>/plan.md"
- id: review-plan
type: human
message: "Review spec/<branch>/plan.md, then press Continue"
- id: implement
type: agent
input: false
prompt: "Implement the fix from spec/<branch>/plan.md. Run the test to confirm it passes."
- id: lint
type: bash
run: ruff check . && ruff format --check .
on_failure: human
- id: commit
type: bash
run: git add -A && git commit -m "fix: resolve bug"
on_failure: stop
Run it with:
/thenn.run bugfix the login button throws a TypeError on Safari
Scaffold a new flow from a description:
/thenn.new bugfix reproduce bug -> plan fix -> human review -> implement -> lint -> commit
Resume crashed runs. Use /thenn.resume (instead of /thenn.run) to record step start/end/status in .thenn-state/runs/<ts>/. If the flow dies mid-run — network drop, Ctrl-C, session timeout — /thenn.resume picks up at the next step after the last completed one. No re-runs of git commit, no re-prompts at human gates. See docs/v0.3/journal.md for the full protocol.
The thenn file is the wiring. The intelligence lives in your commands, agents, and prompts.
| Type | What it does |
|---|---|
type: agent | Runs a slash command, named agent, or inline prompt in a fresh subagent context |
type: coordinator | Same as type: agent, but the runner processes the step in the main conversation — required for steps that spawn subagents, fan out, or interact with the user mid-flow (see Context-light coordinators below) |
type: bash | Runs a shell command. on_failure: stop | continue | human |
type: human | Pauses and waits for the user to press Continue |
type: loop | Repeats sub-steps until a bash exit condition is met, up to max_iterations |
type: agent options- id: specify
type: agent
input: true # inject user's run-time description into this step
command: speckit.specify # call a slash command (colon for subdirs: gsd:plan-phase)
# agent: implementer # or spawn a named agent
# prompt: "..." # or use an inline prompt
# prompt: "..." # combined with command/agent: appended as additional context
input: true or input: false is required on every type: agent and type: coordinator step. Set input: true on any step that needs the user's original description — not just the first step.
type: loop- id: review-fix-loop
type: loop
max_iterations: 3
until:
type: bash
run: grep -q "^status: pass" docs/review.md
steps:
- id: review
type: agent
input: false
prompt: "Review the code. Write docs/review.md: 'status: pass' or 'status: fail' + issues."
- id: fix
type: agent
input: false
prompt: "Read docs/review.md. Fix every issue listed."
Six example flows are bundled in flows/ as starting points. Copy any into your project's .thenn/ directory and adapt:
| Flow | What it does |
|---|---|
example-make-feature | Implement → review-fix loop → commit |
example-review-loop | Implement → fix until review passes (max 4 iterations) → commit |
example-bug-fix | Reproduce → diagnose → human gate → fix → verify → commit |
example-coordinator | Coordinator fan-out: gather context, three parallel investigations, synthesize, review |
example-spec-kit | Specify → clarify → plan → tasks → commit (requires github/spec-kit) |
example-gsd | Spec → plan → review → execute (requires gsd-build/get-shit-done) |
By default a type: agent step spawns a fresh subagent. That is the right model for the vast majority of steps. But three things are awkward for a subagent:
npx claudepluginhub joe-withers/thenn --plugin thennHarness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses
Tools to maintain and improve CLAUDE.md files - audit quality, capture session learnings, and keep project memory current.
Persistent file-based planning for AI coding agents. Crash-proof markdown plans (task_plan.md, findings.md, progress.md) that survive context loss and /clear, with an opt-in completion gate and multi-agent shared state. Manus-style. Works with Claude Code, Codex CLI, Cursor, Kiro, OpenCode and 60+ agents via the SKILL.md standard. Includes Arabic, German, Spanish, and Chinese (Simplified and Traditional).
v9.44.1 — Patch release for Gemini environment/version detection and qwen auth gating. Run /octo:setup.
Superpowers Plus core skills library for Claude Code: planning, execution routing, TDD, debugging, and collaboration workflows
Unity Development Toolkit - Expert agents for scripting/refactoring/optimization, script templates, and Agent Skills for Unity C# development