English · 日本語
ロードマップのワークフロー:着想から実装まで¶
大まかなアイデアが、出荷されゲートを通過したコードになるまでの道のりです。
ideationスキルが ロードマップ項目(BE 項目)を 起草 し、implement-beスキルがそれを 出荷 します。この 2 つは 意図的に対をなしていて、片方がロードマップを満たし、もう片方がそれを 消化します。両者が合わさって、Bajutsu への自明でない変更がすべて通る循環を形づくります。このページは その循環を説明します。前提となる BE ID の仕組みは ai-development が規定します。貢献が初めての方は、コントリビューターワークフローチュートリアルから 始めてください。 一つのアイデアをこの循環全体に通す、手を動かしながらの段階的な walkthrough です (
propose-and-buildで畳むときも示します)。このページは、その背後にある考え方の概観です。
Bajutsu のロードマップは、ざっと眺めて通り過ぎるバックログではありません。テストにとってシナリオ YAML が
共有ハブであるのと同じように、ロードマップは計画の 共有ハブ です。機能はまず BE(Bajutsu Evolution)
項目として roadmaps/ の下に書き留められ、提案として議論され洗練されてから、
ようやく作られます。この道のりの両半分にはそれぞれ専用のスキルがあるので、歩くのが人間でもエージェントでも
道筋は同じです。
循環の全体像¶
Mermaid ソース
flowchart TB
idea(["大まかなアイデア"])
ideation["/ideation<br/>起草と思考<br/>判定はしない"]
proposal[["roadmaps/BE-NNNN-<slug>/<br/>Status: Proposal"]]
implement["/implement-be<br/>実装<br/>ゲートが判定"]
implemented[["roadmaps/BE-NNNN-<slug>/<br/>Status: Implemented"]]
idea --> ideation
ideation -->|"BE-XXXX 提案を起草<br/>(両言語)"| proposal
proposal -.->|"CI が正式 ID を採番<br/>(scripts/allocate_…)"| ideation
proposal -->|"提案が仕様になる"| implement
implement -->|"計画 → 実装 → テスト<br/>レビュー → ゲート;<br/>Status だけを変え、パスは動かさない"| implemented
2 つのスキルは同じ 3 つの 絶対指針(CLAUDE.md)を共有します。AI は起草と調査を担い
判定はしないこと、決定性を最優先すること、アプリ非依存であること、の 3 つです。両者は無関係な 2 つの道具では
なく、1 本のパイプラインの両端だからです。指針の枠内で作れないアイデアはよい提案ではないので、ideation は
それを捨てるのではなく枠に収まる形に作り直します。implement-be も、作りかけの項目が指針に反すると判明した
ときに、黙って迂回することを拒みます。
起草:ideation スキル¶
/ideation で起動します。Bajutsu が次に何をできるかを考えたいとき、または大まかなアイデアを BE 項目に
仕立てたいときに使います。これは白紙ではなく 相談相手 です。どの提案も、すでに計画済み、進行中、あるいは
意図的に採用しないと決めたものに結びつけられます。
- 既存のロードマップに足場を置く:ロードマップ索引、
architecture.md#実装状況(出荷済みのものを「提案」しないため)、トピックに 近い BE 項目を読みます。 - 一緒に着想する:具体的で範囲の定まったアイデアを示し、範囲を絞る問い(誰のためか、どの Tier か、 機械チェック可能 な成果は何か)を投げかけ、隣接する項目を参照点として引き込みます。
- 残ったアイデアを分類する:3 つの行き先のどれかに振り分け、どれを選んだかを伝えます。既存の項目と 重なる(重複を作らずその項目を補強する)、新規で範囲が定まっている(新しい項目を起草する)、まだ 形になっていない(両索引 README の 未整理のアイデア に箇条書きで残し、後で昇格する)の 3 つです。
- プレースホルダー ID で新項目を起草する:
make new-roadmap-item SLUG=… TITLE="…"がroadmaps/BE-XXXX-<slug>/を、両言語のファイルとともに正規の Swift Evolution 形式で生成します。 スキルはTBDの節を埋め、日本語側を自然な日本語に書き直します。BE-XXXXというプレースホルダーは意図的 です。ID を人手で当て推量することはありません。 - 検証し、依頼されたときだけ PR を開く:ドキュメントだけの変更でも
make checkでゲートを緑に保ちます。 PR 本文には、正式 ID を CI が採番することを書き添えます。
プレースホルダーを使うのは、ID が永続で単調増加であり、同時に多数のブランチが進行しているからです。
番号を人手で選ぶと競合します。2 つの PR が同じ番号をつかんでしまうからです。
roadmap-id ワークフローが PR 時に
scripts/allocate_roadmap_ids.py を走らせ、次に空いている ID を
アトミックに確保し、BE-XXXX を BE-NNNN にすべて書き換えて、結果をブランチに押し戻します。こうして起草は
競合と無縁でいられます。詳しい仕組みは ai-development に
あります。
出荷:implement-be スキル¶
/implement-be BE-0066(完全な ID、数字だけ、あるいは slug の一部)で起動します。既存の提案を出荷済みの
コードに変えたいときに使います。提案の Detailed design(詳細設計)が仕様であり、判定するのは決定的な
ゲート(make check)であって、LLM ではありません。
- 項目を特定する:両方 の言語ファイルを読みます。
Proposalを実装することは、それを 受理 する ことを意味し、この PR が状態をImplementedに切り替えます。スキルはそれを最初に伝えます。すでにImplementedの項目やProposal (deferred)(保留中の提案)の項目では、いったん止まって本当に何を望むかを 確認します。 - 仕様とコードに足場を置く:Detailed design と Alternatives considered(検討した代替案)を読みます。 後者は却下済みの道筋(多くは指針上の理由による)を記録しているので、蒸し返しません。提案がリンクする ファイルをすべて開き、実装状況を確認し、前提となる BE 項目がそれ自体まだ提案の ままでないかを検証します。
- 集中したブランチを用意する:最新の
origin/mainからclaude/be-NNNN-<slug>を切り、この項目に必要な ファイルだけに手を入れます。 - 計画し、コードを書く前に合意を得る:ロードマップ項目を丸ごと実装するのは大きく、後戻りが難しい作業 なので、まず具体的な計画への同意を得ます。手を入れるファイル、動くことを証明する 機械チェック可能 な成果 (と、AI に任せてよい箇所とよくない箇所)、テスト、両言語で動かすべきドキュメント、絶対指針との緊張、を 計画に挙げます。
- 実装する:設計どおりに、コードベースの流儀(既存のスタイル)に合わせて作ります。厳格な
mypy、設定済みのruff、sleepではなく条件待ち、新しいつまみはtargets.<name>設定へ、回帰の網としてのテスト、文書化された 挙動には両言語のドキュメント、を守ります。 - 差分をレビューして洗練する:組み込みの
simplifyとcode-reviewスキル、そして自明でない変更では pr-review-toolkit のエージェント を使います。これらは 起草の補助 です。著者に助言するだけで判定はしないので、指針 1 が保たれ、run/CI の 経路に LLM が触れることはありません。 - 項目を Implemented に切り替える:両言語のファイルで
Status: Implementedにし、Implementing PRの行を 加えます。あとはmake roadmap-indexが表を再生成します。ディレクトリは移動しません(BE-0159)。変わるのはStatusとその index バケットだけです。コミット済みインデックスがズレるとmake testが失敗します。 - 検証(ゲート):
make checkは緑でなければなりません。赤のまま push しません。正しさが本当に Simulator やブラウザでの実行に依存する場合は、未検証で動くと主張せず、verifyスキルがそれを実行します。 - PR は依頼されたときだけ:ブランチに push します。PR は通常、人間が開きます。タイトルには
[BE-NNNN]接頭辞を付け、Implementing PRの行に実際の番号を埋めます。
なぜ 1 つではなく 2 つのスキルなのか¶
起草と出荷を分けることは、Bajutsu 自身の中核的な境界を映しています。ideation は 著者 の役割にいて、
考え、提案し、作り直します。その出力である提案は、けっして判定ではありません。implement-be は 作り手 の
役割にいて、仕様を、決定的なゲートが合否を下すコードに変えます。Bajutsu がテスト実行の合否判定から AI を
締め出すのと同じように、このワークフローは計画の 開かれた 部分(何を作るべきか、このアイデアは健全か)を、
出荷の 閉じた 部分(このコードは仕様を満たしゲートを通るか)からはっきり切り離します。議論を重ねて形になった
提案は、一行のチケットよりはるかによい仕様です。そしてその仕様に枠づけられた実装は、行き当たりばったりの変更
よりはるかにレビューしやすいものです。
関連項目¶
- ai-development:並行作業の規則、ゲート、そして両スキルが依存する BE ID の厳格な
ライフサイクル(
Statusが index バケットを決める、1 ディレクトリのフラット構成、永続 ID)。 - roadmaps/README:すべての BE 項目の索引と、項目ごとの提案形式。
- concepts:絶対指針が体現する、決定性と AI の境界の原則。
CLAUDE.md:絶対指針の出どころである working agreement。