Skip to content
cccskills
FreePublished on GitHub

work-discovery

open Issue を triage して「次の仕事候補(N 件 + 推奨 1 件)」を窓口が人間へ提示する。候補はオペレーターが書いたゴール台帳(registry/goals/)の条項に当たるものだけで、条項順に並ぶ。

tools/work_discovery_scan.py を 1 回実行し、その候補 JSON を 設計書 §5.2 / §12 の人間可読フォーマットでレンダリングするところで停止する(propose-only)。起動主体は窓口に限定。手動 / イベント起動のみ(常駐 /loop なし)。

「次の仕事候補出して」「triage して」「次なにやる?」や PR マージ後の proactive next-dispatch で窓口が手動起動する。

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md28.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

work-discovery: 次の仕事候補の triage 提示(提案のみ)

open Issue を triage し、依存解決済みの候補を「N 件 + 推奨 1 件」の形で窓口が人間へ提示する。 並べる基準はオペレーターが書いたゴール台帳の条項(registry/goals/README.md): 各候補がどの条項の「未達」を解消する仕事かを scan 内の判定段(claude -p、ツール無し)が当てはめ、 条項の順(G1 が先)に scan が並べる(設計 §12)。本スキルはその出力を人間可読に整形して見せるだけ。 候補を出したら停止する。着手判断は人間が行う。

  • ゴール台帳の無い repo からは候補が出ない(ユーザー決定)。代わりに「ゴール未設定」の案内を 1 行出す。台帳の作成・修復は /goal-setup で人間と対話して行う。

  • 設計一次参照: docs/design/work-discovery-triage.md (§5.2 人間可読レンダリング / §6.2 案 B ローカル skill / §7 不変条件 INV-1〜5)。

  • 計算層ツール: tools/work_discovery_scan.py(ソース・git・GitHub に対して read-only。副作用は .state/work_discovery/ への書き込みと判定段 claude -p 1 回だけ。設計 §7 INV-1 / INV-3 例外 2)と、ゴール段の tools/work_discovery_goals.py(台帳・判定段・見送り台帳)。

  • repo セット解決ツール: tools/work_discovery_repos.py(read-only。registry/projects.md の triage 列(既定 include / 明示 opt-out)と registry/org-config.md の triage_home(既定 off)から scan に渡す --repo owner/repo セットを決定的に導出。設計 §10.4)。

  • 本スキルは案 B(手動エントリ)。

起動主体とトリガ

  • 起動できるのは窓口だけ(設計 §6.2)。委譲済みワーカーは本スキルを起動しない。 ワーカーが自タスク外の「次の仕事」探索を起動すると「1 worker = 1 task = 1 scope」を崩すため (CLAUDE.md の役割境界)。
  • 常駐 /loop を付けない(設計 §6.2 留意 1)。手動起動、または PR マージ後の proactive next-dispatch のようなイベント起点でのみ走らせる。時間ベースの定常起動は 変化の無い日に提示を汚すため避ける。
  • worker クローズ時の scan はディスパッチャーが行う(.dispatcher/references/pane-close.md Step 6、--trigger worker_close)。本スキルの責務ではない。ディスパッチャーが転送する WORK_DISCOVERY_CANDIDATES を窓口が人間へ提示するときも、Step 2.5 の目標との突き合わせを通す。

不変条件(設計 §7)

  • INV-1 propose-only: 本スキルの出力は「候補リスト + 提示」のみ。生成後に停止する。 scan の副作用は .state/work_discovery/(判定キャッシュ・失敗記録・費用台帳・見送り台帳)への書き込みと、 goal モードでの判定段 claude -p 1 回(ツール無し・費用上限とタイムアウト付き)だけ(設計 §7 / §12.4)。 spawn / delegate / ブランチ作成 / commit / PR / Issue・PR への書き込みをしない (allowed-tools の絞り込みは正路の明示で、機械的な強制ではない)。
  • INV-2 着手判断は人間ゲート必須: 候補の選択は人間のみ。選ばれた候補は 既存の /org-delegate の Step 0 から通常委譲フローに入る。 本スキルが org-delegate を自分で呼ぶことは禁止。推奨(rank 1)の自動着手も禁止。
  • INV-3 自動 commit / 自動 PR をしない: ソースツリー・Issue・PR・git(commit / branch / push)を 一切変更しない。triage 結果をソースに残す運用にする場合も、それは別途人間判断による別タスクであり、本スキルが自動で行わない。
  • INV-4 窓口経由: 提示は窓口セッションの会話内で人間へ行う。GitHub 等の人間可視面へ直接書かない。
  • INV-5 秘書は調査しない: scan は決定的ツール実行であって「調査」ではない。候補の実現性深掘り・ 設計が要るなら、それは人間ゲートを通った後の委譲ワーカータスク。本スキル内で候補の中身を自前調査・実装しない。

手順

Step 1 — scan を 1 回実行する(1 コマンド)

本スキルは Claude がコマンドを 1 つ実行する。POSIX は python3、Windows は py -3。

python3 tools/work_discovery_scan.py --trigger manual --all-registry-repos
  • Bash の timeout は 300000(ms)を指定する。判定段(既定タイムアウト 90 秒)と gh の取得を足すと Bash 既定の 120 秒に収まらないことがあり、途中で殺されると失敗の記録(クールダウン)も残らないため(設計 §12.4)。

  • 判定段は api.anthropic.com に出る。窓口・ディスパッチャーの sandbox.network.allowedDomains への許可は /org-setup(.claude/skills/org-setup/SKILL.md)が役割テンプレートから配る(.claude/skills/org-setup/references/permissions.md。 配布漏れは tools/check_role_configs.py --include-local が検出する)。拒否されると判定段は タイムアウトし exit 2(goal_rank.judge.status = failed)になり、以後 1 時間は cooldown で即 exit 2 になる。

  • 既定は --rank-mode goal。--rank-mode legacy(旧来の Issue メタデータ順・判定段なし)は人間が明示的に指示したときだけ使う (ゴール台帳が無い・判定段が使えない間の退避。黙って legacy に切り替えない)。

  • --all-registry-repos を付けると、scan が repo セット解決ツール tools/work_discovery_repos.py をプロセス内で呼んで --repo セットを 決定的に導出する(registry/projects.md の triage 列(既定 include / 明示 opt-out)と registry/org-config.md の triage_home(既定 off)から。設計 §10.4)。既定状態では registry の GitHub URL 行が全て scan 対象に並ぶ (home repo は triage_home: on のときだけ先頭に付く)。単一 repo scan になるのは scan 対象が 1 件のときだけ。

  • resolver を別コマンドで走らせてフラグ文字列を貼らない(zsh で 1 引数に潰れる。理由は tools/work_discovery_scan.py 冒頭の docstring)。

  • 解決の監査情報は scan 出力の repo_resolution に載る(repos / home_repo / triage_home / included / opted_out / skipped / signals)。Step 3 の監査提示はここから読む(resolver を二度目に走らせる必要はない)。 --all-registry-repos を付けなかった場合は null。

  • repo セット解決の失敗は scan の exit 2(Step 2 の error 行)になる。--repo 無しの gh カレントリポジトリ暗黙 scan へ無言フォールバックしないので、解決失敗が候補ゼロに化けることはない。 この場合 error に理由が、repo_resolution.signals / skipped に詳細が入る。

  • 特定 repo だけを狙って scan したい場合のみ --all-registry-repos の代わりに --repo owner/repo を明示する (両者は排他。同時指定は exit 2)。既定の起動経路は --all-registry-repos。

  • --trigger は文脈ラベル。手動起動は manual、PR マージ後の proactive next-dispatch から呼ぶ場合は --trigger post_merge を付け、可能なら --free-panes <空き worker slot 数> も渡す(空き枠があると parallelizable 候補のランクが上がる)。

  • --free-panes の意味は 空き worker slot 数(= dispatch 可能な空き capacity の単位)であり、物理的な空き ターミナルペイン数ではない(runtime 0.1.31 / #104、backend-aware worker capacity 以降の読み替え)。broker 面 (ORG_TRANSPORT=broker / コード既定)では max_concurrent_workers(既定 8, registry/org-config.md)から アクティブ worker 数を引いた残り、renga 面(opt-in)では rect ベース balanced split が受け入れ可能な空き split 枠 (renga 面の overflow 時の扱いは下記の注記を参照。現行 ja は当該フラグを渡していない)。scan の計算ロジックは この読み替えで変わらない(数を受け取るだけ。free_panes は _sort_key のランキング項に使われるだけで、tools/work_discovery_scan.py 自身は list_panes / list_peers を 一切呼ばない)ので、窓口 / dispatcher が現行の輸送層に応じて空き slot 数を算出して渡す。

  • アクティブ worker 数の数え方は caller タブ限定ではない(runtime 0.1.39 / renga 2.0 以降): renga 2.0 の list_panes は caller のタブにスコープされるため、別タブに置かれたワーカーは pane スナップショットに現れない。 別タブ配置を使う場合、アクティブ worker 数は list_panes(caller タブ限定)ではなく list_peers(全タブを跨ぐ) から数える。定義は runtime の count_worker_population(panes と peers を name で union する。peers 未指定の fallback は panes だけを数え scope="caller_tab" になる)に合わせる。数え落とすと空き slot を過大申告し、 parallelizable 候補のランクを不当に押し上げる。

  • renga overflow を配線したら手計算をやめて plan.capacity.free_worker_slots を使う: overflow 時の空き slot は 「max_concurrent_workers − peers ∪ panes の union」では求まらない。理由は 2 つあり、どちらも手計算では 再現しにくい — (1) fleet ceiling が binding になるのは overflow が armed なときではなく、choose_split が caller タブに候補を 見つけられず実際に新規タブへ overflow するときだけ(overflow はあくまで fallback で、caller タブに空きがあれば そちらが優先される)。armed だけを条件に slot を数えると、まだ使える in-tab 容量を過小申告する。 (2) runtime が上限に突き合わせるのは アクティブ worker 数 + 未 bind の予約数(count_unbound_reservations。 新規タブへ spawn した直後の worker は自分のタブに居て list_panes に出ず、まだ peer にも bind していないため どちらのスナップショットにも現れない)。union だけを数えると bind 待ちの間だけ容量を過大申告する。 したがって overflow を配線する時点で、窓口 / dispatcher の手計算ではなく delegate-plan が返す plan.capacity.free_worker_slots をそのまま --free-panes に渡す(runtime の ActionPlan.capacity の doc が 本スキルの --free-panes をその消費者として名指ししている、runtime 側の一次的な free-capacity 報告)。

  • 既定の候補上限は --top-n 3。scan 対象は --all-registry-repos が導出する(cross-repo scan が既定であり、 登録 URL 行が複数あれば自然に複数 repo の cross-repo triage になる。設計 §10 / §10.4)。

  • ツールは stdout に単一 JSON オブジェクトを出し、exit code で分岐する(JSON パース成否ではなく exit code を見る)。

Step 2 — exit code で分岐する

exitstatus窓口の対応
0no_candidates候補ゼロ。「いま着手可能な(依存解決済みの)候補はありません」と人間に伝える。次の枠は非空なら Step 3 と同じ形で見せる。goal モードのゴール未設定(goal_rank.goal_unset_repos[])・台帳エラー(goal_rank.goal_errors[])・ゴール除外(excluded_goal[])(ゴール台帳が 1 つも無いうちは、候補ゼロの理由はほぼ「ゴール未設定」であり、それを伝えないと何も出ないのが普通だと誤解される)。excluded_blocked[] / excluded_merged[] の「除外(依存未解決): …」「除外(マージ済み): …」(「何を見た結果ゼロなのか」を人間が監査できるように。設計 §5.2 / §5.1)。input_truncated.open_issues / open_prs / base_merges が true(取得上限到達)のときの注記(非網羅な scan を「網羅した結果ゼロ」と誤読させないため)。ここで停止。
10candidates_foundStep 3 で §5.2 形式にレンダリングして提示。
2errorJSON の error フィールドの内容をそのまま人間へ伝え、「triage を実行できませんでした」と報告。goal_rank.judge.status が failed / cooldown / budget_exhausted なら判定段の失敗として状態と理由を伝える(fail-closed: 判定できないときは推奨を出さない。旧ランクで代わりに出さない。cooldown は同じ失敗を 1 時間繰り返さないための待機、budget_exhausted は 1 日の費用上限到達)。候補を捏造しない。候補ゼロと言い換えない(失敗を silent skip にすると「候補が出ないのが普通」と受け取られ、次タスク提案の仕組みが事実上死ぬ)。repo セット解決の失敗もここに来るので、repo_resolution.signals / skipped があれば理由(registry 行が無い / triage_home off / パスが GitHub URL でない等)も併せて伝える。ここで停止。

exit 1 には意味を割り当てない(Python 未捕捉例外の既定 exit と衝突し、クラッシュが「候補なし」に誤読されるのを防ぐため)。0/10/2 以外が返ったら error 扱いで人間に上げる。

Step 2.5 — セッション目標と突き合わせる(exit 10 のとき、レンダリング前)

scan は全 repo をまとめて条項番号順に並べる(tools/work_discovery_goals.py)ため、目標の repo の候補が他 repo の G1 / G2 の後ろに沈み、上位に出ないことがある。並べ方は変えず、提示の前に次を確認する(設計 §12 の条項順は維持する)。

  1. tools.state_db.queries.get_org_state_summary の session.objective を読む。空・None なら何もせず Step 3 へ。
  2. 目標が指すプロジェクト(registry/projects.md で通称から repo を特定)の候補が、提示する上位 --top-n 件に 1 件も無ければ、そのプロジェクトだけを --repo owner/repo 付き(--all-registry-repos の代わり)で引き直す。目標側の候補を並べて提示し、全体の上位も残す。
  3. 目標と関係の無い候補には「目標外」と書き添える。
  4. 目標側の仕事が excluded_goal[] の no_clause で外れていたら、ゴール台帳への条項追加を提案する(/goal-setup)。提案までで、台帳は人間と対話して書く。

提示の骨格・推奨 1 件・propose-only は変わらない。

Step 3 — §5.2 形式で人間へ提示する(exit 10 のとき)

JSON を SoT として、設計 §5.2 / §12 の人間可読フォーマットへ整形する。proactive next-dispatch の現行慣行 (候補 2〜4 件 + 推奨 1、番号で即決)と互換に保ち、人間の操作を変えない。

goal モード(rank_mode == "goal"、既定)の形:

次の仕事候補(ゴール台帳の条項順・提案のみ / 着手はあなたの判断です):

1. [推奨] aainc/foo#42 Add retry to uploader
   └ 条項 G1「アップロードが落ちない」に当たる(判定): 失敗時に再送が無く G1 の未達条件そのもの
   └ 依頼の下書き: アップロード失敗時に指数バックオフで 3 回まで再送する
   └ 論点: 再送回数の上限 → 推奨「3 回」(選択肢: 3 回 / 5 回)
   └ 事実: 優先度 high / 工数 S(推定) / 依存解決済み / 並列可(推定)
2. aainc/foo#57 Refactor config loader
   └ 条項 G2「設定ミスで起動失敗しない」に当たる(判定): ...

ゴール未設定: aainc/bar(候補 5 件が対象外。/goal-setup bar で registry/goals/aainc/bar.md を書くと候補が出ます)
ゴール台帳エラー: aainc/baz(G2 に unmet if がない。/goal-setup baz で直せます)
除外(条項に当たらない): aainc/foo#60, #61
除外(見送り中): aainc/foo#33
除外(判定上限超過・未判定): aainc/foo#70
除外(依存未解決): #540(#537 が open のため)

着手するものを番号で指定してください。「今はやらない」ものがあれば番号で教えてください(記録して、その Issue に動きがあるまで出しません)。

goal モードのレンダリング規則(legacy と共通の規則は下の legacy 例の後に続く):

  • 候補行は <issue-ref> <title>。直下に └ 条項 <goal_clause.id>「<goal_clause.heading>」に当たる(判定): <goal_why> を必ず出す (当てはめはモデル判定なので「(判定)」を付け、条項の引用と理由で人間が 1 目で覆せるようにする。設計 §12.6)。
  • goal_request があれば └ 依頼の下書き: …、open_points[] があれば 1 件 1 行で └ 論点: <point> → 推奨「<recommend>」(選択肢: …)。 どちらも信頼できない Issue 本文から作られたモデルの下書き。表示はするが、着手時の /org-delegate の brief にそのまま写さない(設計 §12.4)。
  • 既存の軸(優先度 / 工数 / 依存 / 並列可 / 直近マージ起点)は └ 事実: … の 1 行に、legacy と同じ (推定) 規則で出す(ランクでは同じ条項の中の並び順にだけ使う)。
  • 推奨は recommendation の (repo, issue) に一致する候補 1 件に [推奨]。recommendation.reason は G<n>「見出し」: 理由 の形。
  • ゴール未設定(goal_rank.goal_unset_repos[])は repo ごとに 1 行、candidate_count と台帳のパス(registry/goals/<owner>/<repo>.md)を添え、/goal-setup <通称> で書けることを案内する。
  • ゴール台帳エラー(goal_rank.goal_errors[])は repo と error をそのまま出し、/goal-setup <通称> で直せることを添える(repo が null なら「repo 名不明の scan。--all-registry-repos か --repo で起動し直す」)。
  • excluded_goal[] は reason ごとに別行: no_clause(条項に当たらない)/ put_aside(見送り中)/ not_judged(判定上限超過で未判定)。空なら行を省く。
  • goal_rank.signals[] が非空なら「scan 対象の解決メモ:」に添える。goal_rank.judge.cost_usd が数値なら末尾に「判定費用: $<cost>(キャッシュ <cache_hits> 件)」を 1 行添える。

legacy モード(rank_mode == "legacy")の形(人間が legacy を指示したときだけ):

次の仕事候補(triage 結果・提案のみ / 着手はあなたの判断です):

1. [推奨] #531 Add retry to uploader(優先度 high / 工数 S(推定) / 依存解決済み / 並列可(推定) / 直近マージ起点(推定))
   └ 直近マージ #528 の follow-up・並列可(空き pane を埋められる)・工数 S(推定)・依存解決済み
2. #533 Refactor config loader(優先度 medium / 工数 M / 依存解決済み / 並列可(推定))

除外(依存未解決): #540(#537 が open のため)
除外(マージ済み): aainc/kura-data-aggregator-trial#231(#232 が develop にマージ済み・GitHub の自動クローズ未発火)

着手するものを番号で指定してください。着手判断後に /org-delegate を回します。

(上例の #531 は effort_estimated: true なので 工数 S(推定)、#533 は size:M ラベル由来で effort_estimated: false のため 工数 M((推定) なし)。直近マージ起点(推定) は unblocked_by_recent_merge == true の #531 にだけ出ている。)

レンダリング規則(JSON フィールド → 表示):

  • candidates[] を rank 昇順に番号付きで並べる。各行の骨格: <issue-ref> <title>(優先度 <priority> / 工数 <effort>[(推定)] / 依存解決済み[ / 並列可(推定)][ / 直近マージ起点(推定)])。[...] で囲んだトークンは条件付き(下記)。
  • <issue-ref> の repo 修飾(cross-repo scan、設計 §5.2 / §10.4): 候補の repo が null でない(複数 repo を横断した cross-repo scan = resolver が複数 repo を返した場合、登録 URL 行が複数ある既定状態を含む)なら、#<issue> の代わりに <repo>#<issue>(例 aainc/token-tracking#42)で表示し、出自 repo の曖昧さを無くす。単一 repo scan(repo: null)では従来どおり #<issue>。除外枠(下記)・推奨も同じ規則で修飾する。同じ規則は blocking_refs の表示にも適用される(単一 repo scan で畳まれた repo(= resolver の repos[0])宛の参照は素の #N、それ以外は owner/repo#N。cross-repo scan では home 宛の参照も owner/repo#N になる。設計 §5.1)。
  • 推奨は 1 件だけ。recommendation の (repo, issue) の組に一致する候補の先頭に [推奨] を付け、直下に └ <recommendation.reason> を添える(cross-repo では issue 番号だけでは ja#60 と runtime#60 が衝突しうるので、repo も併せて突き合わせる)。
  • 推定軸には (推定) を付す(「機械が断定した」と人間が誤読して着手判断を機構へ明け渡すこと(設計 §4.4)を防ぐため)。軸ごとにフラグを見て条件付きで付ける:
    • 工数: effort_estimated == true(ヒューリスティック推定)なら 工数 <effort>(推定)。false(size:S/M/L 等のラベル由来)なら (推定) を付けず 工数 <effort>。
    • 並列可 / 直近マージ起点: フラグ parallelizable / unblocked_by_recent_merge が true のときだけ該当トークン(並列可 / 直近マージ起点)を出す(false なら表記自体を出さない)。これらは対応する *_estimated が常に推定(true)なので、出すときは常に (推定) 付き。直近マージ起点は recommendation.reason 内(例:「直近マージ #N の follow-up」)にも自然に現れる。
  • 除外枠を必ず見せる: excluded_blocked[] を「除外(依存未解決): #<issue>(<note>)」の形で列挙する(監査性 + 全部見たうえで N 件、の安心)。空なら除外行を省く。
  • マージ済み除外は別行で見せる(設計 §10.5): excluded_merged[] を「除外(マージ済み): #<issue>(<note>)」の形で、依存未解決の除外行とは別の行に列挙する。base_branch=develop 等の二系統運用リポジトリでは、develop にマージ済みでも GitHub の自動クローズが発火せず Issue が open のまま残るため triage が「未着手」と誤読していた枠で、note が閉じた PR 番号と base ブランチを名指しする。「まだ着手できない」(依存未解決)と「もう終わっている」(マージ済み)は人間の次の一手が真逆なので混ぜない。空なら行を省く。
  • サイレント truncation をしない: truncated_count が 1 以上なら 「(他に依存解決済みだが順位外の候補が <truncated_count> 件あります)」の 1 行を添える。 input_truncated の open_issues / open_prs が true(取得上限到達)なら「Issue/PR の取得が上限到達のため候補が網羅的でない可能性があります」も添える。base_merges が true なら「base ブランチのマージ履歴が上限到達のため、完了済み Issue を取りこぼしている可能性があります」を添える。
  • base_branch まわりの読み取り異常を添える: base_branch_signals[] が非空なら(registry 不在で完了判定をスキップした / 別ブランチ宛 PR が混じっていた / closing link を無視した等)、「scan 対象の解決メモ:」の並びに 1〜数行で添える。「除外対象ゼロ」と「そもそも見ていない」を人間が区別できるようにするため、空でない限り省略しない。
  • resolver の skip / opt-out / signal を監査のため添える(cross-repo): scan 出力の repo_resolution の skipped[](scan 対象なのに パス が GitHub URL でなく owner/repo を導けず scan 対象から外れた行)や signals[](triage_home 由来の org-config 不在 / 不正値、home repo 解決が fallback / 失敗した等)が非空なら、候補提示の末尾に「scan 対象の解決メモ:」として 1〜数行で添える(例「登録行『<通称>』はパスが GitHub URL でないため scan 対象外(skip)」)。opted_out[] が非空なら「opt-out 中の repo」も 1 行添える(例「opt-out 中: aainc/token-tracking(明示 no)」)。どの repo を意図的に見ていないか・どの repo を見た結果の候補なのかを人間が監査できるようにするため。空なら省略。
  • 毎回必ず「提案のみ / 着手はあなたの判断です」を出す(INV-1 の運用上の現れ)と、末尾に「番号で指定 → 着手判断後に /org-delegate」を出す。

Step 4 — 停止する

候補を提示したらそこで終わる。番号選択は人間が行う。

見送りの記録: 人間が候補を「今はやらない」「見送り」と言ったら、その候補ごとに次の 1 コマンドで記録する (人間の指示を記帳するだけ。窓口が自分の判断で見送りを記録しない):

python3 tools/work_discovery_goals.py put-aside --ref owner/repo#N --note "<人間の言葉の要約>"

ref は必ず owner/repo#N(単一 repo 表示で #N だけ見えている場合も、scan 出力の repo_resolution.repos[0] などから owner/repo を補う)。記録した候補は、その Issue が更新されるまで excluded_goal(put_aside) に回る(設計 §12.5)。 人間が番号を選んだら、その着手は本スキルの外で /org-delegate の Step 0 から始まる(INV-2)。本スキルが org-delegate を呼ばない・spawn しない・commit / PR しない。

パス解決

  • 本スキル中の tools/... / docs/... 表記はリポジトリルート相対。窓口セッションの CWD は リポジトリルート(git rev-parse --show-toplevel)なのでそのまま実行できる。別 CWD から呼ぶ場合はルート相対に読み替える。
  • Windows では python3 を py -3 に読み替える(allowed-tools に両形を登録済み)。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

ディスパッチャーのコンテキストを圧迫したまま session を続けるのを避けるため、 monitoring 状態(active workers / 直近 polling cursor / pending escalations)を handover ファイルに書き出し、secretary の指示で /clear → /dispatcher-resume の 流れで新しいディスパッチャー session を開始する準備をする。 Secretary から DISPATCHER_HANDOVER peer message を受領したとき、または ディスパッチャー自身が context が長くなったと判断したときに使う。 context-handover watcher が `/dispatcher-handover auto op=<OP>` を打鍵したときも使う。

The English summary is being prepared. Showing the original description.

suisya-systems/claude-org-ja5Updated Oct 20, 2026

/dispatcher-handover で書き出した handover ファイルを読み込み、 ディスパッチャーを新しい session で復帰させる。/clear 直後の最初のターンで使う。 state.db の dispatcher_pane_id / dispatcher_peer_id を atomic に更新し、 worker monitoring の /loop 3m を再開する。 secretary が /clear の後にディスパッチャーペインへ /dispatcher-resume を打鍵したときに使う。 context-handover watcher が `/dispatcher-resume auto op=<OP>` を打鍵したときも使う。 /org-start ではない(ワーカー・窓口は生きている前提。キュレーターは常駐しない)。

The English summary is being prepared. Showing the original description.

suisya-systems/claude-org-ja5Updated Oct 20, 2026

プロジェクトのゴール台帳(registry/goals/<owner>/<repo>.md)を人間と対話して新規作成・改訂する。 README と open Issue からゴール候補を推定して提示し、「何を目指すか」「何が起きていたら未達か」を 短く質問して条項を固め、書式検証(tools/work_discovery_goals.py validate)を通してから保存する。 「ゴール台帳を書きたい」「ゴールを設定して」「ゴール未設定と出た」「台帳エラーを直して」 「このプロジェクトの目標を決めたい」等や、/work-discovery の「ゴール未設定」「ゴール台帳エラー」案内を 受けて窓口が起動する。候補の提示そのものは /work-discovery の役目で本スキルではない。

The English summary is being prepared. Showing the original description.

suisya-systems/claude-org-ja5Updated Oct 20, 2026

組織の生きているペイン(secretary / dispatcher / worker)へ tmux で**直接入る** ための **コマンドを出力するだけ** の read-only スキル。`mcp__org-broker__list_panes`(論理ペイン) と `/usr/bin/tmux -L claude-org-broker list-panes -a`(pane_id ↔ session マッピング)を pane_id(%N)で突き合わせ、各ペインに role + name(task_id) ラベル付きの attach コマンドを 生成する(既定は読取書込 = `-r` 無し / 読取専用 `-r` はオプション / デタッチは `Ctrl-b d`)。 外側が tmux のときに今の tmux を分割してワーカー(と dispatcher)を並べる `split-window` コマンドも出す。 特定のペインの画面を直接見たい・入りたい・並べて見たい、attach コマンドを知りたいという依頼で発動。 自分で attach / split はせず・ペインも一切変更しない(コマンド文字列とペイン一覧表を表示するのみ)。 作業委譲(org-delegate)・ダッシュボードで状況一覧(org-dashboard)・watcher 停止(org-attention-stop) には発動しない。

The English summary is being prepared. Showing the original description.

suisya-systems/claude-org-ja5Updated Oct 20, 2026

attention notification watcher(承認待ち / 判断待ち / CI 失敗等を OS 通知 + 音で能動通知)を dispatcher ペインの右側に split で常駐起動する。`.state/attention.json` が未配置なら ja 既定テンプレートを `tools/templates/attention.example.json` から自動コピーする。 起動後のペイン id は `.state/attention_pane.json` に記録し、`/org-attention-stop` から参照する。 「attention 起動」「通知監視を始めて」「watcher を立てて」等で発動。 `/org-start` からの auto-start はしない(明示起動推奨ポリシー)。

The English summary is being prepared. Showing the original description.

suisya-systems/claude-org-ja5Updated Oct 20, 2026

`/org-attention-start` で起動した attention watcher ペインを停止する。 `.state/attention_pane.json` に記録された pane_id を `list_panes` の name/role で identity 確認し、いまも attention watcher を指している場合だけ `close_pane`(pane 破棄)で 破棄する(pane_id が別ペインへ再割当て済みなら close せず stale sidecar として削除)。 「attention 止めて」「通知監視を停止」「watcher 落として」等で発動。

The English summary is being prepared. Showing the original description.

suisya-systems/claude-org-ja5Updated Oct 20, 2026

See all skills by suisya-systems

Report a problem with this skill