証跡こそ、雰囲気より。

見せかけの完了 は、ゲートを通らない。

使い慣れたコーディングエージェントを包む、ゲート付きハーネス。flowが握るのはゲートと証跡——ランタイムには決して触れない。ゲートで弱いアイデアを潰すことも、正当な結果である。

ゲートが開くのは、両者が合意したときだけ。

npx @manhquy/flow-skill@latestインストールと初回実行

お使いのコーディングエージェントに対応

Claude CodeCodex CLIGemini CLICursorAiderClineContinueZed

ビルドの前に越える6つのゲート

各ステージはリポジトリに実ファイルとして残る。/flow next は、ランナーとスキルの両者が合意しない限り次のステージを開けない。これらのファイルはゲートを越えた後に生まれる——インストール直後には存在しない。

  1. FAIL · ゲートで潰された

    Idea

    flow/00-idea.md

    コードが生まれる前に、ダメなアイデアを潰せ。

    flow/00-idea.mdHALT
    # Problem statement
    [FILL: describe user problem]
    # Proposed solution
    <empty>
    FAIL · ゲートで潰された

    通過できないもの

    空っぽ、残った [FILL]、完了の証拠としての「tests pass」——いずれも通らない。 弱いアイデアはゲートで潰される。

    • 空のファイル。
    • ファイルに残った [FILL]。
    • 完了の証拠として提出された「Tests pass」。

    $/flow nextrefusing: flow/00-idea.md is empty (line 1)ゲートで潰すことも正当な結果だ。

  2. 証跡 · 一次情報

    Research

    flow/01-research.md

    本物の出典を示せ。なければここで止まれ。

    flow/01-research.md3/3 CITED
    ## Primary sources
    • [RFC-9110] §4.2 Idempotent methods
    • github.com/owner/repo#412 (repro)
    ## Competitive diff & failure modes
    02証跡 · 一次情報

    アーキテクチャより先にグラウンドトゥルース

    競合比較、検証済みドキュメントの引用、実際の障害モードをリポジトリのファイルに記録する。

    $/flow check 01-research一次情報3件を引用(URL検証済み)競合比較と障害モードを確定

  3. 境界 · 対象外

    Scope

    flow/02-scope.md

    境界を引け。残りは捨てろ。

    flow/02-scope.mdFROZEN
    IN-SCOPE S-01 CLI harness gate loop
    IN-SCOPE S-02 Receipt schema validator
    NON-GOAL Telemetry / analytics tracking
    NON-GOAL Custom cloud daemon runtime
    03境界 · 対象外

    対象外リストを明示して凍結

    境界を定めた納品単位。スコープクリープはコード生成の前に捕まえる。

    $/flow check 02-scope納品単位3件を確定対象外を明示して凍結(スコープクリープを阻止)

  4. 契約 · 受け入れ基準

    PRD

    flow/03-prd.md

    コードを書く前に、テストを定義しろ。

    flow/03-prd.mdCRITERIA
    INV-01: exit 1 on empty spec file
    INV-02: refusal line emitted to stderr
    INV-03: receipt JSON conforms to schema
    INV-04: degraded mode creates debt entry
    04契約 · 受け入れ基準

    観測可能な基準のみ

    テスト可能な不変条件を持つユーザーストーリー。エージェントは途中で成功の定義を書き換えられない。

    $/flow check 03-prd観測可能な受け入れ基準を定義エラー状態と縮退パスを定義

  5. 決定 · トレードオフ

    ADR

    flow/04-adr.md

    コミットする前に、トレードオフを記録しろ。

    flow/04-adr.mdACCEPTED
    Status: Accepted (2026-10-11)
    Context: File state vs SQLite daemon
    Decision: Git-tracked Markdown files
    Consequence: Portable; zero background server
    05決定 · トレードオフ

    アーキテクチャ決定記録

    実装開始前に背景・決定・結果を記録する。

    $/flow check 04-adr背景・決定・結果を記録可逆性と異常系テストを整理

  6. PASS · 準備完了

    Contract

    flow/05-contract.md

    両者が合意しなければ、何も進まない。

    flow/05-contract.mdUNLOCKED
    [✓] human-signoff: approved by @dev
    [✓] harness-attest: sha256:7f3a..9e1b
    [✓] doctor-check: READY (skills verified)
    [✓] dual-agreement: UNLOCKED -> advance
    PASS · 準備完了

    インストール後

    スキルはディスク上にある。/flow と入力する(Codexでは $flow)。flow doctor は READY と出力する。空のideaファイルに対する /flow next は行番号付きで拒否される。

    • スキルファイルがエージェントのホームに配置される。
    • /flow と入力する(Codexでは $flow)。
    • doctor が READY と出力できる。
    • 空のideaファイルに対する /flow next は、行番号付きで拒否される。

    $flow doctordoctor: READY (skills/flow/SKILL.md verified)ゲートが開くのは、両者が合意したときだけ。

次は /flow card。完了とは現実世界の証拠である:デプロイ済みURL、インストールして動くCLI、公開API、実際に動いたスキル。

証跡と出典

以下の数値はすべてビルド時にリポジトリから読み取るか、明示した出典から数えたものだ。各数値に出典を記す。

  • 0.34.4スキルバージョンskills/flow/SKILL.md · ビルド時読み取り
  • 0.7.11npm インストーラnpm-wrapper/package.json · ビルド時読み取り
  • 72レジストリのテストスイートtests/manifest.txt
  • 6ビルド前のゲートskills/flow/references/stage-state-machine.md

85秒で実行の様子を見る

85秒

弱いアイデアはゲート01で潰され、出典のあるアイデアは6つのゲートを越えて合格の受領を得る。

AIコーディングエージェントではない。その周りのハーネスだ。

flowはコードを書かない。書くのはエージェントのまま——ハーネスが、その仕事を先に進めてよいかを決める。