mcpField
P
publish

publish

github.com/q00開発6.3k55 回インストール1 日前に更新
リポジトリ

publish について

Seed を `gh` コマンドラインで GitHub の Epic と関連する Task issue に変換する Ouroboros スキルです。Seed から作業を計画するチーム向けで、新規 issue のみを作成し、既存の issue は変更しません。

主な機能

  1. 01YAML と JSON の Seed を公開
  2. 02受け入れ条件を Task issue に分割
  3. 03過去の公開を確認
  4. 04ラベル作成と Epic の関連付け

活用シーン

  1. 01プロジェクトの Seed を GitHub の作業項目に変換
  2. 02公開前にタスク分割案を確認

MCP 対応

このスキルは `gh` コマンドラインを使用し、MCP は使用しません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/q00/ouroboros --skill publish

インストール後、Claude Code で/publishを入力して読み込まれたか確認します。

詳細

/ouroboros:publish

Seed を GitHub の Epic issue と Task issue に変換します。gh CLI のみを使って処理し(MCP は使用しません)、新しい issue のみを作成し、既存の issue は変更しません。

ooo publish [seed_path]
/ouroboros:publish [seed_path]

手順

アクティブなランタイムの run_shell 機能でコマンドを実行し、質問はすべてアクティブなランタイムの ask_user 機能で行います。

Step 1: 前提条件

command -v gh を実行します。見つからない場合は、https://cli.github.com/ からインストールするようユーザーに伝えて終了します。gh auth status を実行します。認証されていない場合は、gh auth login を実行するようユーザーに伝えて終了します。

Step 2: Seed の場所を特定する

Seed は ~/.ouroboros/seeds/ に保存されています。インタビュー用 Seed は {seed_id}.yaml、PM Seed は pm_seed_{id}.json です。次の優先順位で確認します。

  1. 明示的に指定された .yaml または .json のパス引数。
  2. ls -t ~/.ouroboros/seeds/*.yaml ~/.ouroboros/seeds/*.json 2>/dev/null | head -5 で取得した最新のファイル。複数ある場合は、ユーザーに選択してもらいます。
  3. この会話の前半で ooo seed または ooo pm が報告した Seed のパス。

見つからない場合は、先に ooo seed または ooo pm を実行するようユーザーに伝えて終了します。

Step 3: Seed を解析する

拡張子で形式を判定します。フィールドがない、または空の場合、そのセクションは省略し、エラーにはしません。

YAML Seed(ooo interview + ooo seed):

フィールド用途
goalEpic のタイトルと Goal セクション
constraintsConstraints セクション
acceptance_criteriaEpic のチェックリスト。Task issue に割り当てます
ontology_schemaOntology テーブル(フィールド、型、説明)
evaluation_principlesEvaluation Principles テーブル(名前、重み、説明)
exit_conditionsExit Conditions(Definition of Done)
metadata.ambiguity_score信頼度の指標
metadata.seed_id重複検出

JSON PM Seed(ooo pm、PMSeed スキーマ):

フィールド用途
pm_id重複検出
product_nameEpic タイトルの接頭辞
goalGoal セクション
constraintsConstraints セクション
success_criteriaAcceptance Criteria のチェックリスト
user_stories各項目を「As a {persona}, I want to {action}, so that {benefit}.」として記載する User Stories
deferred_itemsDeferred Items セクション
decide_later_itemsOpen Questions セクション
assumptionsAssumptions セクション
Step 4: 対象リポジトリ

gh repo view --json nameWithOwner -q '.nameWithOwner' 2>/dev/null を実行します。リポジトリが返された場合は、そこに公開するか、別の owner/repo にするかをユーザーに尋ねます。返されない場合は、owner/repo を尋ねます。回答を TARGET_REPO として保存します。以降の gh コマンドにはすべて -R <TARGET_REPO> を含める必要があります。

Step 5: 重複チェック
gh issue list -R <TARGET_REPO> --label "ouroboros" --state all --search "<seed_id or pm_id>" --limit 5 --json number,title,state

Epic の本文に Seed ID が記録されるため(Step 7)、この処理で過去の公開を検出できます。一致するものがある場合は一覧を表示し、作成を続行するかキャンセルするかを尋ねます。キャンセルの場合は終了します。

Step 6: issue の計画

受け入れ条件を、実装単位(機能領域、レイヤー、依存関係の順序など)ごとに論理的にまとめます。各単位が 1 つの Task になります。計画(Epic の目標の概要、続いて各 Task のタイトルと簡単な範囲)を提示し、issue を作成するか、計画を変更するかを尋ねます。変更する場合は、何を変更するか尋ねて調整し、再度提示します。

ステップ 7:Issue を作成する

gh issue create は Issue の URL を出力します。末尾の数字から番号を取得します(grep -o '[0-9]*$')。本文は引用符で囲んだヒアドキュメント(--body "$(cat <<'BODY' ... BODY)")で渡します。

  1. ラベルを作成します。「already exists」は無視してください。
    gh label create "ouroboros" -R <TARGET_REPO> --description "Created by Ouroboros publish" --color "6f42c1" 2>/dev/null || true
    gh label create "epic" -R <TARGET_REPO> --description "Epic / parent issue" --color "0075ca" 2>/dev/null || true
    gh label create "task" -R <TARGET_REPO> --description "Implementation task" --color "008672" 2>/dev/null || true
    
  2. エピック:タイトルは [Epic] <goal summary>、ラベルは ouroboros,epic です。本文には、ステップ 3 の各セクション(Goal、Constraints、Acceptance Criteria を - [ ] 項目として、Ontology、Evaluation Principles、Exit Conditions、および PM 専用セクション)を順番に記載し、続けて次のフッターを記載します。
    ---
    
    **Seed ID**: `<seed_id or pm_id>` | **Ambiguity Score**: <score> | **Seed**: `<seed_file_path>`
    *Generated by [Ouroboros](https://github.com/Q00/ouroboros) via `ooo publish`*
    
  3. 各タスク:タイトルは [Task] <task title>、ラベルは ouroboros,task です。本文には Parent: #<epic> に続けて、Scope、Acceptance Criteria(この単位の項目を - [ ] で記載)、Test Checklist、Pass Criteria(測定可能な完了条件)を記載し、続けて次のフッターを記載します。
    ---
    
    *Part of [Epic] #<epic> | Generated by [Ouroboros](https://github.com/Q00/ouroboros) via `ooo publish`*
    
  4. エピックにコメント(gh issue comment <epic> -R <TARGET_REPO>)し、- [ ] #<task>: <title> の行で構成する「Implementation Tasks」チェックリストを記載します。Issue がクローズされるとタスクにチェックを付けて進捗を追跡することも明記してください。
ステップ 8:概要

Published to <TARGET_REPO>: と表示し、エピックとそのタスクをツリー(#<n> [Epic|Task] <title>)で示して、リンク https://github.com/<TARGET_REPO>/issues/<epic> を記載します。次のステップとして、タスクの割り当て、GitHub Projects ボードでの追跡、個々のタスクの AI 支援による実装のための ooo run の実行を提案してください。

RFC #1392 状態のパンくずフッター

最終回答の末尾は、◆ <current state> → next: <recommended action> の形式の行を正確に 1 行だけ記載します。利用できる場合は ouroboros_session_status でライブセッションの状態を取得し、利用できない場合はこのスキルの実際の結果から状態を判断します。「Step N of M」のような直線的なフッターは使用しないでください。次のステップが実際の選択肢である場合は、2~3 個の選択肢を列挙してください。

コメント