Communityコーディング&開発github.com

hellices/flow-atlas

モノレポの変更が複数のコンポーネントにまたがる場合、つまりHTTPルートの設計や追加、クライアント呼び出し、レジストリエントリ(アーティファクト、ツール、イベント)、コントラクトバージョン、既存の同種機能の確認、アプリからBFFを経由してサービスに至るフローの追跡や文書化、そしてそのような作業の完了やPR作成前のタイミングで使用します。決定論的な`atlas` CLIが事実とフローのドラフトを生成し、あなたは意図(タイトル、ロール、決定)を記述してコンポーネント境界を解釈し、atlasはあなたが記述したものをチェックします。

flow-atlas とは?

`flow-atlas`は、モノレポにおけるクロスコンポーネント変更を安全かつ確実に行うためのAIエージェントスキルです。CLIツール`atlas`がコードベースからコールグラフ、APIサーフェス、レジストリエントリなどの客観的な事実を生成し、開発者はフローのタイトルやロール、所有権など意図を必要とする部分を記述します。`atlas`はこれらの記述がコードと矛盾しないかをチェックし、設計段階、実装中、完了前の各フェーズでガイダンスを提供します。主にClaude CodeやCoder、CodexなどのAIエージェントと組み合わせて使用し、境界判断基準は`references/boundaries.md`に従います。このスキルは特に、HTTPルートの追加、クライアント呼び出しの変更、フローの文書化、コンポーネント間の依存関係の明確化などに有用で、手動での推測や誤った編集を防ぎます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hellices/flow-atlas/tree/HEAD/skills/flow-atlas

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

flow-atlas は何をしますか?

リポジトリ自身のAGENTS.md、設計文書、ガバナンステストがこのスキルよりも優先されます。

3つの部分

atlasはコードが確定するものを生成します。あなたは意図が必要なものを記述し、atlasはそれをチェックします。両者の間で、あなたはどの作業がどのコンポーネントに属するかを、references/boundaries.mdの基準に従って解釈します。あなたが決定したすべては、atlasが読み取るファイル(フローファイル、例外ファイル、設定、フィードバック)に保存され、次回の実行や次のエージェントがそれを参照できるようになります。

atlasが生成するもの:これらは手動で記述しないでください

事実コマンド
サーフェス、呼び出し、エッジ、操作ID、レジストリ、コントラクトバージョンscan
パス、メソッド、またはコンポーネントごとのサーフェスと呼び出しquery
上流の呼び出し元と下流のサービスに到達するサーフェスtrace
フローのドラフト:名前、コードのパスに沿ったステップ、あるコンポーネントが呼び出すときのエントリ、分岐する候補draft flow
フローがコード内で成立しているか、およびその作成者フィールドが記述されているかflows (conditions)
場所と近くのパスを含む検出結果check, explain
リビジョン間の変更点diff
設定の候補と設定のカバレッジinventory, scan
各コンポーネントのOpenAPI記述、コミットされたものがコードとどの程度一致しているか、コードが決定する場合にどのコンポーネントのものかscan, inventory

graph.jsonをgrepしたり、テキスト検索から呼び出し元を推測したり、サーフェスIDを記憶からタイプ入力したりしないでください。atlasの出力からコピーしてください。

あなたが記述するもの:atlasがチェックします

内容チェック方法
フローのtitleと各ステップのroleDocumented
owner、labels、sources、lifecycle(ステップが未構築の場合はplanned)スキーマ; Resolvedはplannedステップを別途カウント
フローの意図を記述した後のgenerated: { by: <tool>/<model>, at }; レビューが必要な場合のstale_after (OKF)スキーマ; Fresh
最初のステップを複数のコンポーネントが呼び出す場合のエントリコンポーネント; ハンドラが分岐する次のステップEntryCalled, Connected
producesProducesListed
例外: 理由、decidedBy、reviewBy期限切れになると検出結果が再表示される
誤検知、その理由stats
設定scanのカバレッジ
フレームワークが生成するOpenAPIドキュメント(atlasが解析できないコンポーネントの場合)(routes[].openapi, references/openapi.md)scanのカバレッジとlimit:行
origins: 各コンポーネントが環境で実行されるベースURL(デプロイメントファイルから)export arazzoが欠落を通知
atlasが記述をambiguousと報告した場合のopenapi.<component>export arazzoが設定されるまで拒否

あなたの担当部分をツールに委ねないでください:人が受け入れられる理由なしに、publicSurfaces、例外、ベースラインの更新は行わないでください。human:アクターでverifiedエントリを決して記述しないでください:それは人のレビューを記録するものであり、フローの信頼レベル(unverified、machine-confirmed、human-reviewed)はそれに依存します。

あなたが解釈するもの:境界

ホップが属するコンポーネント、類似のサーフェスがすでに機能を果たしているかどうか、ギャップが欠陥、計画、誤検知のいずれか、エッジをどの程度信頼するか、フローがどこで開始し終了するか。references/boundaries.mdに従ってください。これは情報源(リポジトリルール、次にフローロール、次にコード)の順序を定め、その基準を示します。

セットアップ

  • atlas --helpを実行します。atlasがインストールされていない場合は、npx (npx github:hellices/flow-atlas --help) を使用するか、ユーザーにインストールを依頼してください。その読み取りを手動で再実装しないでください。
  • 設定ファイルは<root>/atlas.config.yaml、<out>/atlas.config.yaml、または--config <file>です。存在しない場合は、以下の「セットアップ」に従ってください。
  • リポジトリに書き込んではならない場合は、--out <外部のディレクトリ>を渡します。すべての書き込みはそこに行われます。

変更の設計

  1. atlas query --path <パスまたは断片> と atlas query --component <名前> で既存のものを確認します。
  2. atlas trace <最も近いサーフェス> でチェーンを確認します:クライアント呼び出し、BFFルート、ハンドラが到達するポートメソッド、それぞれが一致するサービスルート。
  3. 決定します:再利用、拡張、追加。追加または変更するサーフェスキーと、各ホップを所有するコンポーネントを書き留めます。2つのコンポーネントが同じステップを実行することになる場合は、コードを書く前に解決します。
  4. リポジトリがフローを保持している場合(flows/*.flow.yaml)、フローを更新するか、atlas draft flow <surface>で新しいフローを開始します(「フローを書く」を参照)。まだ存在しないステップはlifecycle: plannedとマークします。

実装中

ルートまたはクライアント呼び出しを追加した後、atlas trace <surface>を実行します。上流には意図した呼び出し元が、下流には意図した呼び出しが表示されるはずです。空の側は、まだ配線されていないか、ツールが読み取れない方法で配線されている(呼び出しから遠く離れた場所に構築されたパス、別の言語のハンドラ)ことを意味します。コードを開いて、その理由を述べてください。

生成されたOpenAPIドキュメントからルートが来るコンポーネントのルートを追加、削除、変更する場合は、同じ変更でドキュメントを再生成してください。クライアント呼び出しだけではドキュメントは変更されません。

フローを書く

  1. atlas draft flow <最初のサーフェス> は、コードが確定するすべてを含むフローを出力します。--to <surface>を追加して、指定された終点までコードを追跡します。flows/<名前>.flow.yaml(または変更してはならないリポジトリの場合は<out>/flows/)に保存します。
  2. すべてのagent:コメントを埋めます:title、各ステップのrole(コンポーネントが行うことと他に委ねること)、owner、lifecycle、produces。ドラフトが候補をリストする場合は、エントリと次のステップを選択します。マーカーのない値はそのままにします。これらはコードから来ています。
  3. フローがReady=Trueになるまでatlas flowsを実行します。Resolved、Connected、またはEntryCalledがFalseの場合、コードまたはフローが間違っています。references/boundaries.mdを使用してどちらかを判断します。DocumentedがFalseの場合、作成者フィールドが空です。

1つのファイルに---で区切られた複数のフローを含めることができます。サーフェスIDはパスパラメータをOpenAPIテンプレート({id})として記述します。場所、エッジ、条件をファイルにコピーしないでください。atlasは実行ごとにそれらを計算します。フォーマットはflow-atlasパッケージのschema/flow.schema.jsonで、docs/schema.mdとdocs/responsibilities.mdで説明されています。

完了前

  1. atlas check --since <開始リビジョン> を実行します。変更によって導入された検出結果のみが表示されます。
  2. 各結果について:atlas explain <キー> で場所と類似パスを表示します。その後、修正するか、例外を記録するか、誤検知を記録します。「検出結果の処理」を参照してください。
  3. atlas diff <ベース>..WORKTREE --format markdown(または <ベース>..HEAD)と、新しい各サーフェスのtraceをPR説明または引き継ぎノートに記載します。

設定が遅れている場合

兆候:stderrのlimit:行(設定されたファイルが何も一致しない、ソースがベースラインの半分未満を生成する)、または既知の呼び出されるルートでのFA001。atlas inventoryを実行し、設定と比較して修正し(references/config.md)、atlas scanのカバレッジを再度確認します。atlas baseline updateの前に人に確認してください。

セットアップ

atlas inventoryは何も決定せずに候補をリストします。それから設定を記述し(references/config.md)、atlasが解析しないサーバーフレームワーク(Spring、Django、Flaskなど)の場合は、そのOpenAPIドキュメントを生成してルートをそこに向け(references/openapi.md)、すべてのソースが期待通り出力されるまでatlas scanを実行し、atlas checkを実行し、人と一緒に検出結果のサンプルを確認します。その後にのみベースラインを記録します。

検出結果の処理

最初にそれが欠陥、計画、誤検知のいずれかを判断します(references/boundaries.md)。その後:

  • 検出結果がバグである場合は修正します。欠落している呼び出し元を配線し、デッドルートを削除し、プロデューサーを追加し、呼び出しを提供パスに向けます。references/rules.mdにルールごとの一般的な原因がリストされています。

  • コードが意図的に正しい場合は、決定を命名した例外を追加します:

    # flows/atlas-exceptions.yaml (または <out>/exceptions.yaml)
    - rule: FA001
      key: FA001|orders|GET /orders/{id}/history
      reason: サービスが先に出荷されます。アプリ画面は次のリリースで追従します。
      decidedBy: docs/orders.md#history
      reviewBy: 2026-12-31
    

    リポジトリ外のクライアントに提供されるサーフェスは、設定のpublicSurfacesに移動します。

  • 検出結果が間違っている場合:`atlas feedback <キー> false-positive --note

関連スキル