
writing-dev-diary
by syou6162
Claude Code用カスタムスラッシュコマンド集 - PR作成・レビュー・コミット管理を効率化するコマンドセット
SKILL.md
name: writing-dev-diary description: 「開発日誌更新」「開発日誌作って」の言及時に使用。esa-llm-scoped-guardで開発日誌を新規作成・更新します。 allowed-tools: Bash, Write, Edit, Read model: sonnet context: fork
esa開発日誌の作成・更新
esaに開発日誌を投稿・更新するスキルです。esa-llm-scoped-guard CLIを使用して、許可されたカテゴリ配下の記事のみを安全に編集します。
禁止事項
- JSONファイルは必ず
.claude_work/dev_diary.jsonに作成すること(ファイル名固定) - esa MCPの書き込み系ツール(
create_esa_post,update_esa_post)は使用禁止。このスキルではesa-llm-scoped-guardCLIのみ使用 - JSONスキーマは必ず
esa-llm-scoped-guard -helpで確認してから生成すること
使用タイミング
以下のトリガーワードで発動します:
- 「開発日誌を作って」: 検索なしで直接新規作成
- 「開発日誌を更新」+ esaのURL: 指定されたURLの記事を更新
- 「開発日誌を更新」(URLなし): 検索して関連記事を更新、なければ新規作成
実行手順
手順1: JSONスキーマを確認
最初に必ず最新のJSONスキーマを確認してください:
esa-llm-scoped-guard -help
手順2: トリガーによる条件分岐
| トリガー | 既存記事取得 | 次の手順 |
|---|---|---|
| 「開発日誌を作って」 | なし | 手順4 |
| 「開発日誌を更新」+ URL | あり(URL指定) | 手順3(共通サブルーチン) |
| 「開発日誌を更新」(URLなし) | あり(検索) | 手順3(記事あり)/ 手順4(記事なし) |
パターンA: 「開発日誌を作って」の場合
検索・取得をスキップして、手順4(JSON生成)へ直行してください。
パターンB: 「開発日誌を更新」+ URLの場合
-
ユーザーが提示したesaのURLから
post_numberを抽出(例:https://yasuhisa.esa.io/posts/123→123) -
mcp__esa-mcp-server__read_esa_postで既存記事を取得:postNumber: 123 -
既存記事の内容を確認し、手順3(共通サブルーチン)へ進む
パターンC: 「開発日誌を更新」(URLなし)の場合
-
mcp__esa-mcp-server__search_esa_postsで関連記事を検索:query: "in:Claude Code/開発日誌" sort: "updated" order: "desc" perPage: 10 -
会話コンテキストから現在のタスクを特定し、検索結果から最も関連性の高い記事を判断
-
記事あり:
mcp__esa-mcp-server__read_esa_postで取得 → 更新モードで手順3(共通サブルーチン)へ -
記事なし: 新規作成モードで手順4へ
手順3: 既存記事内のGitHub URL状態を確認(共通サブルーチン)
既存記事を取得した後、記事内のタスクに含まれるGitHub URL(PR/Issue)の現在の状態と内容を確認します。
-
body.tasksからgithub_urlsを抽出(URLがなければ手順4へ) -
各URLの状態と内容をgh CLIで確認
PRの場合:
gh pr view <URL> --json state,isDraft,title,body
Issueの場合:
gh issue view <URL> --json state,title,body
-
に従ってGitHub状態を判定
-
に従ってタスクstatusへのマッピングを記録
-
タスクdescriptionの更新要否を判定し、必要なら更新内容を記録
以下のいずれかに該当する場合、タスクdescriptionを更新:
| 判定条件 | 説明 |
|---|---|
| タイトル差分 | GitHubタイトルがタスクdescriptionと実質的に異なる(スコープの追加・削除) |
| 本文の追加スコープ | bodyに、タスクdescriptionにない追加機能・領域が記載されている |
| 前提/実装変更 | bodyに前提や実装アプローチの変更が記載されている |
更新内容の形式:
- 基本: GitHubタイトルをそのまま使用
- スコープ拡大がある場合: タイトル + "(+ 追加スコープ: ...)"のように本文の要点を短く追記
手順4: JSON生成
-
Writeツールで.claude_work/dev_diary.jsonを作成(ファイル名固定、常に上書き) -
JSONの構成内容:
- 新規作成の場合:
create_new: trueを指定、post_numberは含めない - 更新の場合:
post_numberを指定、create_newは含めない - category:
Claude Code/開発日誌/yyyy/mm/dd形式(新規作成時は今日の日付、更新時は既存記事の日付を維持) - body:
esa-llm-scoped-guard -helpで確認したスキーマに従って構造化形式で作成
- 新規作成の場合:
-
会話コンテキストからタスク情報を抽出し、適切な内容を生成
-
タスクstatusの更新(手順3を実行した場合):
- 既存タスクの
github_urlsに含まれるPR/Issueの状態を確認した結果に基づいて、タスクのstatusを更新 - で定義したマッピングに従って、GitHub状態からタスクstatusへ変換
- 例: PRがマージ済みの場合は
status: "completed"に更新
- 既存タスクの
-
タスクdescriptionの更新(手順3のステップ5で更新が必要と判定された場合):
- の判定基準に基づいて、タスクの
descriptionを更新 - GitHubタイトルを軸に、本文の要点を短く統合して記述
- 例: "ログイン機能のバグ修正(+ 追加スコープ: セッション管理の改善)"
- の判定基準に基づいて、タスクの
手順5: CLI実行
esa-llm-scoped-guard -json .claude_work/dev_diary.json
手順6: 結果報告
- 成功時: 記事URLをユーザーに報告
- 失敗時: エラー内容を確認し、JSONを修正して再実行
参照データ
| リソース | 条件 | 判定結果 |
|---|---|---|
| PR | state=MERGED | マージ済み |
| PR | state=OPEN, isDraft=true | ドラフト(WIP) |
| PR | state=OPEN, isDraft=false | レビュー中 |
| PR | state=CLOSED | クローズ |
| Issue | state=OPEN | オープン |
| Issue | state=CLOSED | クローズ済み |
| GitHub状態 | タスクstatus |
|---|---|
| PRがマージ済み | completed |
| PRがドラフト(WIP) | in_progress |
| PRがレビュー中 | in_review |
| PRがクローズ(マージなし) | (変更なし) |
| Issueがクローズ | completed |
| Issueがオープン | (変更なし) |
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon