<p align="center">
  <a href="https://nobrainer.tech">
    <img src="assets/nobrainer-tech-logo.svg" width="80" alt="NoBrainer Tech logo">
  </a>
</p>

<h1 align="center">nobrainer-tech-flow</h1>

<p align="center">
  <strong>From task to done. See what was delivered.</strong><br>
  For developers whose coding agent just said "Done."
</p>

<p align="center">
  <a href="https://youtu.be/OflTMvq_Pww"><img src="assets/prove-it-video-poster.jpg" width="720" alt="Play PROVE IT, a song for every AI agent that says done: Flo and MC P, Episode 1, on YouTube"></a><br>
  <sub>▶ <a href="https://youtu.be/OflTMvq_Pww"><strong>PROVE IT</strong></a>: a song for every AI agent that says done. Flo &amp; MC P, Episode 1 (2 min, YouTube).</sub>
</p>

<p align="center">
  One workflow with 18 modules. Your coding agent does the work and checks it.
  Then it hands over the evidence: what was delivered, what was checked and what was not.
</p>

<p align="center">
  <a href="https://github.com/nobrainer-tech/nobrainer-tech-flow/actions/workflows/validate.yml"><img alt="Validation" src="https://github.com/nobrainer-tech/nobrainer-tech-flow/actions/workflows/validate.yml/badge.svg"></a>
  <a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-27d8cf.svg"></a>
  <a href="https://github.com/nobrainer-tech/nobrainer-tech-flow/releases/latest"><img alt="Latest release" src="https://img.shields.io/github/v/release/nobrainer-tech/nobrainer-tech-flow"></a>
</p>

<p align="center">
  <a href="#install-safely"><strong>Install</strong></a> ·
  <a href="https://nobrainer.tech/flow/?nb_from=github-readme">Launch page</a> ·
  <a href="https://nobrainer.tech/flow/compare/?nb_from=github-readme">Compare 50+ tools</a> ·
  <a href="https://nobrainer.tech/flow/changelog/?nb_from=github-readme">Public verification notes</a> ·
  <a href="https://www.producthunt.com/products/nobrainer-tech-flow">Product Hunt</a>
</p>

## Where it runs

<p align="center"><sub><strong>Coding agents</strong>: all 18 modules</sub><br>
  <a href="docs/INSTALL.md#claude-code"><img alt="Claude Code" src="https://img.shields.io/badge/Claude_Code-3B65F0?logo=claude&style=for-the-badge&logoColor=white"></a>
  <a href="docs/INSTALL.md#codex"><img alt="Codex" src="https://img.shields.io/badge/Codex-3B65F0?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI%2BPHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIuNiA0LjYgOS45IDEybC03LjMgNy40TC45IDE3LjcgNi42IDEyIC45IDYuM3pNMTEgMTcuMmgxMnYyLjRIMTF6Ii8%2BPC9zdmc%2B&style=for-the-badge&logoColor=white"></a>
  <a href="docs/INSTALL.md#cursor"><img alt="Cursor" src="https://img.shields.io/badge/Cursor-3B65F0?logo=cursor&style=for-the-badge&logoColor=white"></a>
  <a href="docs/INSTALL.md#github-copilot-cli-and-shared-agent-skills"><img alt="GitHub Copilot CLI" src="https://img.shields.io/badge/GitHub_Copilot_CLI-3B65F0?logo=githubcopilot&style=for-the-badge&logoColor=white"></a>
  <br>
  <a href="docs/INSTALL.md#gemini-cli"><img alt="Gemini CLI" src="https://img.shields.io/badge/Gemini_CLI-3B65F0?logo=googlegemini&style=for-the-badge&logoColor=white"></a>
  <a href="docs/INSTALL.md#opencode"><img alt="OpenCode" src="https://img.shields.io/badge/OpenCode-3B65F0?logo=opencode&style=for-the-badge&logoColor=white"></a>
  <a href="docs/INSTALL.md#kimi-code"><img alt="Kimi Code" src="https://img.shields.io/badge/Kimi_Code-3B65F0?logo=kimi&style=for-the-badge&logoColor=white"></a>
  <a href="docs/INSTALL.md#pi"><img alt="Pi" src="https://img.shields.io/badge/Pi-3B65F0?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI%2BPHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIuNiA0LjYgOS45IDEybC03LjMgNy40TC45IDE3LjcgNi42IDEyIC45IDYuM3pNMTEgMTcuMmgxMnYyLjRIMTF6Ii8%2BPC9zdmc%2B&style=for-the-badge&logoColor=white"></a>
</p>
<p align="center"><sub><strong>Packages</strong></sub><br>
  <a href="https://www.npmjs.com/package/nobrainer-tech-flow"><img alt="npm: npx nobrainer-tech-flow" src="https://img.shields.io/badge/npx_nobrainer--tech--flow-F04A14?logo=npm&style=for-the-badge&logoColor=white"></a>
  <a href="docs/CHAT_PLUGINS.md"><img alt="Claude and ChatGPT plugin ZIP" src="https://img.shields.io/badge/Claude_%26_ChatGPT_plugin-F04A14?logo=claude&style=for-the-badge&logoColor=white"></a>
  <a href="#install-safely"><img alt="Git install with preview and undo" src="https://img.shields.io/badge/Git_install-F04A14?logo=git&style=for-the-badge&logoColor=white"></a>
</p>
<p align="center"><sub><strong>No install</strong>: free remote MCP server, any MCP client</sub><br>
  <a href="mcp/README.md#install"><img alt="MCP server mcp.nobrainer.tech" src="https://img.shields.io/badge/MCP-mcp.nobrainer.tech%2Fmcp-151515?logo=modelcontextprotocol&style=for-the-badge&logoColor=white&labelColor=3B65F0"></a>
</p>

The MCP server is verified in Claude Code, Codex CLI and OpenCode. The
[MCP server README](mcp/README.md#install) has setup steps for Claude.ai, ChatGPT, Cursor,
VS Code / Copilot, Gemini CLI, Cline, Windsurf and Zed. These are not verified yet. What has been loaded
and tested in each coding agent is in the [compatibility evidence](docs/COMPATIBILITY.md).

## What it does

- **A handoff you can check.** Each finished task ends with `Delivered`, `Checked`
  (command and result) and `Not checked` (gap and reason). An optional evidence receipt marks a check `STALE` once
  its input files change.
- **Small tasks stay small.** A quick answer stays a quick answer; larger work gets one
  focused question round, a short TODO, execution and verification.
- **One main loop, workers only where they pay.** A part goes to a native worker only for
  parallel work, context isolation, independent review or specialization.
- **A pause before risky commands.** Optional Claude Code guards ask before
  `git push --force`, `git reset --hard`, a production deploy or a publish.
- **Ideas and plans to delivery.** [SDD](skills/nobrainer-tech-flow/references/idea-to-delivery.md)
  turns an idea into checkable acceptance criteria;
  [autopilot](skills/nobrainer-tech-flow/references/autopilot.md) carries an approved plan
  through to the whole goal.

Free, MIT. The Git install previews every change and has undo. Your coding client's usage
costs still apply.

## Install safely

Pick one channel. The first four install the same 18 modules.

**Claude Code** (plugin):

```sh
claude plugin marketplace add nobrainer-tech/nobrainer-tech-flow
claude plugin install nobrainer-tech-flow@nobrainer-tech
```

Then start with `/nobrainer-tech-flow:nobrainer-tech-flow` or say "Use nobrainer-tech-flow".

**Codex** (plugin):

```sh
codex plugin marketplace add nobrainer-tech/nobrainer-tech-flow
codex plugin add nobrainer-tech-flow@nobrainer-tech
```

Then start with `$nobrainer-tech-flow:nobrainer-tech-flow` or say "Use nobrainer-tech-flow".

**npm** (Node 18+ and Python 3.11+); `--client` is `codex`, `claude`, `opencode` or `copilot`:

```sh
npx nobrainer-tech-flow@2.9.3 --client codex            # preview: changes nothing
npx nobrainer-tech-flow@2.9.3 --client codex --apply    # install
npx nobrainer-tech-flow@2.9.3 --client codex --undo --apply
```

**Any coding agent** (Git install with preview and undo; macOS, Linux and Windows, no
Python needed). Paste this prompt into your agent; the same prompt installs and updates:

```text
Install nobrainer-tech-flow from https://github.com/nobrainer-tech/nobrainer-tech-flow
for the coding agent you are, or update it if it is already installed.

1. Keep a copy in ~/.nobrainer-tech-flow: clone the repository there, or run
   git pull there if it already exists. Do not delete that folder later; the
   skills link to it.
2. Read the install section of its README and follow the method it gives for
   your client and operating system (docs/INSTALL.md has the details).
3. Preview first and show me what will change. Apply only after I agree, and
   do not edit my files beyond what that method does.
4. Tell me the undo command, and whether I need to restart you.
```

Or run it yourself (on Windows, in Git Bash):

```sh
git clone https://github.com/nobrainer-tech/nobrainer-tech-flow ~/.nobrainer-tech-flow
sh ~/.nobrainer-tech-flow/scripts/install.sh --client claude           # preview: changes nothing
sh ~/.nobrainer-tech-flow/scripts/install.sh --client claude --apply   # link the skills, add the block
```

`--client` is `claude`, `codex`, `opencode` or `copilot`; undo with `--undo --apply`.
Cursor, Gemini CLI, Pi and Kimi Code use a plugin or extension:
[client channels](docs/INSTALL.md#client-channels). The installer adds one instruction
block that lets Flow update itself to verified stable releases once a day;
`install_personalization.py --no-auto-update` makes that a notification only. To pin a
reviewed commit, see [Safe default](docs/INSTALL.md#safe-default).

**MCP server, no install**: add `https://mcp.nobrainer.tech/mcp` (no sign-in, stateless).
In Claude Code:

```sh
claude mcp add --transport http nobrainer-tech-flow https://mcp.nobrainer.tech/mcp
```

Its six read-only tools give the agent a task contract, an evidence check, a done gate and
a model advisor. It does not install the 18 modules. Other clients:
[MCP server README](mcp/README.md#install).

**First task.** In a fresh session, give it one small task with a checkable result:

> Use nobrainer-tech-flow. Fix one bug in this project. Reproduce it first, make the
> smallest correction and run the relevant check. Tell me what changed and
> what remains unverified.

More first tasks: [docs/TRY_IT.md](docs/TRY_IT.md).

## How it works

![nobrainer-tech-flow: direct work for clear small tasks; focused clarification, bounded execution and verification when needed](assets/nobrainer-workflow.svg)

Small, clear tasks take the quick path. Larger work is scoped, carried through and
verified, with bounded corrective attempts, and the handoff says what is left for you to
decide. The full guide is in [How it works](docs/HOW_IT_WORKS.md).

<details>
<summary><strong>Workflow chart</strong></summary>

```mermaid
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#161B23', 'primaryTextColor': '#F3EEE6', 'primaryBorderColor': '#7F9BFF', 'lineColor': '#D94724', 'secondaryColor': '#0F1319', 'tertiaryColor': '#0F1319', 'fontFamily': 'Inter, system-ui, sans-serif'}}}%%
flowchart TD
    A[Task or idea; check nobrainer-tech-flow release once today] --> B{Material ambiguity?}
    B -->|yes| C[BUDDY: one focused question round]
    B -->|no| D{Small and clear?}
    C --> D
    D -->|yes| E[Direct answer or edit; check the result]
    D -->|no| F[SCOPE + PLAN: outcome, authority, proof; concise TODO]
    F --> S[Short-term goal from long-term direction]
    F -. SDD requested or justified .-> U[Reviewed spec; acceptance IDs; keep approval gates]
    U --> G
    S --> G[AUTOPILOT: execute the authorized scope; select ready work and check]
    G --> H[Verify; independent REVIEW when useful]
    H -->|verified defect; attempt budget remains| G
    H -->|acceptance met| I[Audit delegated artifacts and stop owned workers]
    H -->|blocked| J[Checkpoint; report one unblock action]
    E --> K[Deliver evidence and stop; use the requested language]
    I -->|whole-goal DoD met| K
    I -. accepted milestone; goal incomplete .-> P[Update TODO; select next ready milestone]
    P --> G
    J -. independent authorized work remains .-> P
    F -. optional .-> L[Markdown goal for resume]
    G -. only units that gain from parallel work, isolated context, review or specialization .-> M[Bounded native subagents; model and effort you approved]
    M -->|Plain technical English reports| H
    H -. audited unit; dispatch the next qualifying unit .-> M
    F -. first project use .-> R[Inspect layers and relevant wiki]
    R --> G
    M -. recurring workload .-> T[Auto Fine Tune: measured worker route]
    T --> M
    L -. context pressure; transfer supported .-> N[Fresh session: same task + started DD-MM]
    N -->|takeover verified; archive old if authorized| G
    G -. entry and milestones .-> O[Date at startup; assess context health]
    O -. safe transfer qualifies .-> N
    L -. unavailable native goals or telemetry .-> G
```

</details>

**Modules:** [`nobrainer-tech-flow`](skills/nobrainer-tech-flow/) (entrypoint) ·
[`nobrainer-auto-fine-tune`](skills/nobrainer-auto-fine-tune/) ·
[`nobrainer-context`](skills/nobrainer-context/) ·
[`nobrainer-skill-doctor`](skills/nobrainer-skill-doctor/) ·
[`nobrainer-team`](skills/nobrainer-team/) ·
[`nobrainer-dispatcher`](skills/nobrainer-dispatcher/) ·
[`nobrainer-research`](skills/nobrainer-research/) ·
[`nobrainer-writing`](skills/nobrainer-writing/) ·
[`nobrainer-build`](skills/nobrainer-build/) ·
[`nobrainer-security`](skills/nobrainer-security/) ·
[`nobrainer-sessions`](skills/nobrainer-sessions/) ·
[`nobrainer-spec-driven-development`](skills/nobrainer-spec-driven-development/) ·
[`nobrainer-wiki`](skills/nobrainer-wiki/) ·
[`nobrainer-browser`](skills/nobrainer-browser/) ·
[`nobrainer-autoimprove`](skills/nobrainer-autoimprove/) ·
[`nobrainer-decide`](skills/nobrainer-decide/) ·
[`nobrainer-rca`](skills/nobrainer-rca/) ·
[`nobrainer-review`](skills/nobrainer-review/).
What each one owns and its trigger aliases:
[skill table](docs/HOW_IT_WORKS.md#eighteen-skills-distinct-ownership).

## What's new in 2.9.3

The MCP done gate no longer counts Python unittest expected failures as passing tests.

## What's new in 2.9.2

The MCP done gate no longer treats shared-network IP addresses or reserved
`.invalid`, `.test` and `.example` names as production evidence.

## What's new in 2.9.1

The MCP done gate now reopens a test when a re-run fails without output. A later
passing result can mark the item done again.

## What's new in 2.9.0

Flow now carries a short work-to-done contract in its entry skill. A request to do
something is done, not answered with a plan; a question gets an answer and no unrequested
edits. The agent keeps every requirement you add mid-task, decides routine reversible
details itself, reuses permission you already gave, keeps working on independent parts
while one item waits, and prepares everything allowed before it asks for an approval.
Before it hands over, a finish check makes it perform any action its reply would only
promise, and forbids calling a partial result done. See the
[2.9.0 verification record](docs/releases/v2.9.0.md).

## What's new in 2.8.0

Every finished task now ends with the same three-part handoff: `Delivered`, `Checked`
(each command with its result) and `Not checked` (each gap with its reason). A validator
keeps that block in the skill. The done gate also asks the agent to list each place where
docs and code disagree. Each module description now starts with the situation it handles,
so you can find the right module by what you need. See the
[2.8.0 verification record](docs/releases/v2.8.0.md).

## What's new in 2.7.0

Before substantial work the agent shows what done means and sets it as the host's native
goal where one exists. Flow delegates only where it pays, records each of your requests in the
goal file as it arrives so compaction cannot drop it, and a security review needs a second
independent pass before it can report a clean result. Full notes:
[RELEASE-NOTES.md](RELEASE-NOTES.md) and the [2.7.0 verification record](docs/releases/v2.7.0.md).

## Documentation

| | |
|---|---|
| [Installation](docs/INSTALL.md) | Every channel, reviewed-commit install, guards, rollback |
| [Compatibility](docs/COMPATIBILITY.md) | What has been loaded and tested in each client |
| [Testing](docs/TESTING.md) | Acceptance evidence and how to run the checks |
| [How it works](docs/HOW_IT_WORKS.md) | Workflow, skills, learning loop, quality rules |
| [Release notes](RELEASE-NOTES.md) and [verification records](docs/releases/) | What changed and how each release was checked |
| [MCP server](mcp/README.md) | Remote server tools and per-client setup |
| [Chat plugins](docs/CHAT_PLUGINS.md) | Plugin ZIP for Claude and ChatGPT |
| [Migration](docs/MIGRATION_TO_FLOW.md) and [naming](docs/NAMING.md) | Moving from the previous `nobrainer-tech-skills` ID |

## Community

- [Run this as a ready workflow](https://nobrainer.tech/paths/ai-engineering/?nb_from=github-readme):
  from requirement to CI with a ready AI engineering workflow built on nobrainer-tech-flow.
- [New to AI? Start the free course](https://nobrainer.tech/edu/ai-basics/?nb_from=github-readme).
- If this workflow helps with a real task, star the repository and follow
  [@nobrainer_tech](https://x.com/nobrainer_tech) for build notes and practical examples.

Contributions: read [CONTRIBUTING.md](CONTRIBUTING.md) and [SECURITY.md](SECURITY.md).
`nobrainer-autoimprove` and `nobrainer-wiki` adapt Andrej Karpathy's
[autoresearch](https://github.com/karpathy/autoresearch) loop and
[LLM wiki concept](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f).

NoBrainer.Tech builds practical agentic workflows for teams that want speed without
surrendering control. Learn more at [nobrainer.tech](https://nobrainer.tech) or browse
ready-to-use workflow products on [Gumroad](https://nobrainertech.gumroad.com).
