Wolftux/checklist

/checklist はカレントディレクトリにチェックリスト不足分をインストールし、専用チャットで表示します。既存のものは上書き・変更しません。

checklist とは?

このスキルは、任意のプロジェクト用にチャットベースの進捗チェックリストを設定する Claude Code 用のツールです。`/checklist` コマンドを実行すると、必要な構成ファイル(`documenti/lavori.yaml` レジストリ、`strumenti-locali/avanzamento/stato.mjs` スクリプト、`CLAUDE.md` 内のルール、`.git/info/exclude` の除外行)が不足している場合にのみインストールされ、既存のファイルは決して上書きされません。セットアップ後、専用の「Checklist: プロジェクト名」チャットセッションが開き、そこですべての進捗を確認・管理できます。このスキルは特に、Claude Code (CLI) と Codex (MCP セッション管理) の両方の環境で動作するように設計されています。仕組みとしては、まず Node.js の存在確認、Git ワークツリーの確認、ホームディレクトリでの実行を防ぐための事前チェックを行い、次に各構成要素の有無を検査し、足りないものだけをテンプレートから作成します。最後に `start_session` と `detach_session` 機能を使用してチェックリストチャットを開くか、デスクトップ環境向けに代替表示を行います。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Wolftux/checklist/tree/HEAD/plugins/checklist/checklist

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

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

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

ドキュメント

/checklist: プロジェクトの進捗チェックリスト

/checklist はカレントディレクトリにチェックリスト不足分をインストールし、専用チャットで表示します。既存のものは上書き・変更しません。

作業の流れ:

  • プロジェクトフォルダはカレントディレクトリです。すべてのコマンドはそこから実行します。
  • <base> はこのスキルの上部に表示される「ベースディレクトリ」です。テンプレートは <base>/modelli/ にあります。
  • 各パスは引用符で囲みます: ベースとプロジェクトフォルダにはスペースが含まれる可能性があります。
  • 手順は確認なしで順番に実行します。ただし、手順内で明示的に指示がある場合を除きます。
  • 各 grep は -a を使用します: Claude Code では、grep が非UTF-8ファイルをバイナリとして扱い、存在する行を見つけられない可能性があります。

ステップ 1: 事前確認

  1. command -v node を実行します。何も出力されなければ、「Node.js 18以降が必要です: インストールしてから /checklist を再実行してください」と一行書き、停止します。
  2. git rev-parse --path-format=absolute --git-dir と git rev-parse --path-format=absolute --git-common-dir を実行します。二つの結果が異なる場合は、セカンダリワークツリー内です: 「セカンダリワークツリー内です: レジストリはワークツリーとともに消えます。プロジェクトのメインフォルダから /checklist を実行してください」と一行書き、停止します。両方のコマンドが失敗した場合は、Git がありません: 先に進みます。
  3. pwd -P と (cd ~ && pwd -P) を実行します。同じ結果が得られた場合は、ホームディレクトリ内です: 「ホームディレクトリ内です: CLAUDE.md のブロックがすべてのプロジェクトに適用されます。プロジェクトフォルダから /checklist を実行してください」と一行書き、停止します。

Node が存在し、カレントディレクトリがセカンダリワークツリーでもホームディレクトリでもない場合、このステップは完了です。

ステップ 2: 4つの構成要素の確認

何も書き込みません。各要素について、存在するか不足しているかを記録します:

  • レジストリ: documenti/lavori.yaml が存在するか
  • スクリプト: strumenti-locali/avanzamento/stato.mjs が存在するか
  • ブロック: grep -aqx '## 進捗チェックリスト' CLAUDE.md が成功するか(CLAUDE.md が存在しない場合はブロックなし)
  • 除外行 (Git がある場合のみ、git rev-parse --is-inside-work-tree が true を出力): git rev-parse --git-path info/exclude が出力するファイルに、**/documenti/lavori.yaml と **/strumenti-locali/avanzamento/ の行が正確に含まれているか。各行を grep -aqxF '**/documenti/lavori.yaml' "<exclude_file>" と grep -aqxF '**/strumenti-locali/avanzamento/' "<exclude_file>" で確認します。ファイルが存在しない場合は両方とも不足しています。

どの要素が不足しているかがわかった時点で、このステップは完了です。

ステップ 3: プロジェクト名

  1. ブロックが CLAUDE.md に存在する場合、名前は「進捗チェックリストを更新: 」の後に続く、最初の引用符 » までの部分です。コマンド: grep -ao '進捗チェックリストを更新: [^»]*' CLAUDE.md | head -1、プレフィックスなし。名前があれば質問はしません。コマンドが何も出力しないか、名前が空の場合(ユーザーが編集した行)、ポイント2に進みます。
  2. それ以外の場合は、AskUserQuestion で質問します。最初の選択肢(推奨): フォルダ名。2番目の選択肢: バリエーション、つまり README の # タイトルが存在しフォルダ名と異なる場合はそのタイトル、そうでなければ大文字/スペースが異なるフォルダ名。ユーザーは常に別の名前を入力できます。
  3. 質問ができない場合(非対話モードなど)、フォルダ名を使用し、その旨を一行書き込みます。

名前が決まった時点でこのステップは完了です。以下、この名前を <プロジェクト> と呼びます。

ステップ 4: 不足分のインストール

ステップ2で不足していると判明したもののみ実行します。既存のものを上書きしたり変更したりしてはいけません。

  1. レジストリ。 不足している場合: mkdir -p documenti と [ -e documenti/lavori.yaml ] || sed "s/<今日>/$(date +%F)/g" "<base>/modelli/lavori.yaml" > documenti/lavori.yaml (ガードにより、ステップ2が間違っていても既存のレジストリを保護します)。 ただし、スクリプトが既に存在する場合、プロジェクトは別のレジストリ(例: lavori.json)を読み取る独自のチェックリストを持っている可能性があります: まず AskUserQuestion で documenti/lavori.yaml を作成するかどうかを尋ねます。最初の選択肢(推奨): 作成しない。回答が「いいえ」の場合、または質問ができない場合、作成せず、その旨を一行書き込み、除外行(ポイント4)もスキップします(除外行はプロジェクトのチェックリストファイルを Git から隠してしまうため)。
  2. スクリプト。 不足している場合: mkdir -p strumenti-locali/avanzamento と cp -n "<base>/modelli/stato.mjs" strumenti-locali/avanzamento/stato.mjs。
  3. CLAUDE.md のブロック。 不足している場合:
    • <base>/modelli/claude-md.md を読み込み、<プロジェクト> をすべて名前に置き換えます。
    • mktemp -d を実行し、置き換え済みのブロックを、ファイル書き込みツールを使用して <tmp>/blocco.md に書き込みます(<tmp> は出力されたフォルダです)。
    • CLAUDE.md が存在し空でない場合、次の2つのコマンドで末尾を準備します(ファイルを読み書きしない): if [ -s CLAUDE.md ] && [ -n "$(tail -c1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi (末尾の改行がない場合追加) if [ -s CLAUDE.md ] && [ -n "$(tail -n1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi (最終行が空でない場合空行を追加)
    • ブロックを追加: cat "<tmp>/blocco.md" >> CLAUDE.md (ファイルがなければ作成します)。ユーザーのテキストは決して書き換えません。
    • sed は使用しないでください: 名前に / や & が含まれる可能性があります。
  4. Git がある場合の除外行。 <exclude> を git rev-parse --git-path info/exclude が出力するパスとします。
    • mkdir -p "$(dirname "<exclude>")"。
    • 末尾の改行がない場合追加: if [ -s "<exclude>" ] && [ -n "$(tail -c1 "<exclude>")" ]; then printf '\n' >> "<exclude>"; fi。
    • 不足している各行 (**/documenti/lavori.yaml と **/strumenti-locali/avanzamento/) について: printf '%s\n' '**/documenti/lavori.yaml' >> "<exclude>" (または '**/strumenti-locali/avanzamento/')。
  5. Git がない場合、「Git がありません: ウィジェットのリポジトリ行は空のままになります」と警告の行を書き込みます。

不足しているすべての要素が作成された時点で、このステップは完了です。不足がない場合、すぐに完了します。

ステップ 5: チェックリストチャットを開く

インストール後、または既にすべて揃っている場合の両方で実行します。

  1. mcp__ccd_session__start_session と mcp__ccd_session_mgmt__detach_session が遅延ツールの中にある場合、ToolSearch で読み込みます。
  2. start_session を以下のパラメータで呼び出します:
    • initiation: user_asked
    • context: fresh
    • use_worktree: false
    • effort: low (チャットはスクリプトを実行しウィジェットを構成するだけなので、元のセッションの労力は不要)
    • title: 「Checklist: <プロジェクト>」
    • prompt: 「node strumenti-locali/avanzamento/stato.mjs を実行し、CLAUDE.md に従ってチェックリストを表示してください」
    • background: 「プロジェクト <プロジェクト> の進捗チェックリスト: スクリプトは strumenti-locali/avanzamento/stato.mjs です。プロジェクトの CLAUDE.md には、レジストリ、チェックリストの表示方法、レジストリを更新するタイミングが記載されています。」
  3. すぐに、返された ID を使用して detach_session を呼び出します: これはメインチャットであり、サブチャットではありません。
  4. start_session がない場合(CLI)または拒否された場合: node strumenti-locali/avanzamento/stato.mjs を実行し、<base>/modelli/claude-md.md に従ってチェックリストをこのチャットに表示します: show_widget を使用するか、show_widget がない場合は Markdown テーブルで表示します。
  5. start_session は成功したがデタッチが失敗または拒否された場合、「サイドバーから「最上位にデタッチ」でデタッチしてください」と一行書き込みます。
  6. 毎回新しいチャットを開きます: 以前のチャットを探さないでください。

チャットが開いてデタッチされたか、チェックリストがこのチャットに表示された時点で、このステップは完了です。

ステップ 6: 最終メッセージ

2~3行書き込みます:

  • 追加した内容、または「すべて既に存在していました」
  • 警告があればその内容
  • チェックリストチャットの場所

また、作業の追加や終了についてはチャットで伝えるだけでよいことも書き添えます: CLAUDE.md のルールによりレジストリが更新されます。

メッセージが書き込まれた時点で、このステップは完了です。

関連スキル