Issues
個人タスクとプロジェクトISSUEを一元管理するスキルです。ISSUEは .claude/skills/issues/issues/ に保存されます。
使用タイミング
ユーザーからの指示
- •「ISSUEを作って」「タスクを作って」
- •「やることリストを見せて」「未完了のISSUEは?」
- •「このバグをISSUEにして」
- •「優先度が高いタスクは?」
プロアクティブ(積極的な使用)
以下の場合は、ユーザーにISSUE作成を提案してください:
- •複雑な作業を開始する前(複数ステップ必要)
- •重要なバグや問題を発見した時
- •将来の作業が必要と判明した時
- •依存関係やブロッカーを発見した時
- •コード内にTODOコメントを発見した時
ディレクトリ構造
code
issues/
├── 001-setup-dev-environment.md
├── 002-fix-login-bug.md
├── 003-implement-dark-mode.md
└── .archive/ # 完了ISSUEのアーカイブ(月別)
└── 2025-01/
└── 000-completed-issue.md
ポイント:
- •フラットな構造(すべてのISSUEを
issues/ディレクトリに配置) - •
projectフィールドやtagsで分類 - •連番付きのkebab-case命名
ISSUEの作成
1. 連番を決定
bash
LAST_NUM=$(find issues -name "*.md" -type f 2>/dev/null | \
sed 's/.*\/\([0-9]\+\)-.*/\1/' | sort -n | tail -1)
NEXT_NUM=$(printf "%03d" $((10#${LAST_NUM:-0} + 1)))
2. ファイル作成
必須front matterを含むファイルを作成:
markdown
--- title: "ISSUEのタイトル" created: 2025-01-09 status: todo --- # ISSUEのタイトル ## 説明 詳細な説明をここに... ## タスク - [ ] ステップ1 - [ ] ステップ2
オプションのfront matterフィールド
- •
type: task/bug/feature/question/enhancement/chore - •
priority: low/medium/high/urgent - •
due: 期限(YYYY-MM-DD) - •
updated: 最終更新日 - •
tags: 検索用タグの配列 - •
project: プロジェクト識別(personal, dotfiles, web-app など) - •
related: 関連ファイル・リンクの配列 - •
blocked_by: ブロック関係 - •
estimate: 見積もり時間
3. ファイル例
個人タスク例
markdown
--- title: "Neovimのプラグイン設定を整理" created: 2025-01-09 status: in-progress type: chore priority: medium tags: [neovim, dotfiles, setup] project: personal estimate: 3h --- # Neovimのプラグイン設定を整理 ## 背景 プラグインが増えすぎて管理が煩雑になっている。lazy.nvimへの移行を検討。 ## タスク - [ ] 現在のプラグイン一覧を棚卸し - [ ] 不要なプラグインを削除 - [ ] lazy.nvimのドキュメントを読む - [ ] 段階的に移行 ## メモ - packer.nvimから移行予定 - 参考: https://github.com/folke/lazy.nvim
プロジェクトISSUE例
markdown
--- title: "ユーザー認証のセッション切れ時にリダイレクトしない" created: 2025-01-09 status: todo type: bug priority: high project: web-app tags: [auth, frontend, bug] related: - src/middleware/auth.ts - src/components/LoginForm.tsx due: 2025-01-15 --- # セッション切れ時のリダイレクト不具合 ## 症状 ユーザーのセッションが切れた際、ログイン画面にリダイレクトされず、エラー画面が表示される。 ## 再現手順 1. ログイン 2. 1時間待機(セッションタイムアウト) 3. 任意のページにアクセス 4. エラー画面が表示される(期待: ログイン画面へリダイレクト) ## 調査メモ - auth.tsのmiddlewareでエラーハンドリングが不足 - 401エラーをキャッチしていない ## 解決策候補 - axios interceptorで401エラーをグローバルに処理 - リダイレクトロジックをauth middlewareに追加
ISSUEの検索・一覧(Summary-First アプローチ)
1. すべてのISSUE一覧
bash
rg --no-ignore --hidden '^title:' issues/
--no-ignore --hidden フラグは必須(issues ディレクトリは .gitignore 対象のため)
2. ステータスでフィルタリング
bash
# TODO状態のISSUE rg --no-ignore --hidden '^status: todo$' issues/ -l | \ xargs rg --no-ignore --hidden '^title:' # 作業中のISSUE rg --no-ignore --hidden '^status: in-progress$' issues/ -l | \ xargs rg --no-ignore --hidden '^title:' # 完了したISSUE rg --no-ignore --hidden '^status: done$' issues/ -l | \ xargs rg --no-ignore --hidden '^title:'
3. 優先度でフィルタリング
bash
# 高優先度ISSUE rg --no-ignore --hidden '^priority: high$' issues/ -l | \ xargs rg --no-ignore --hidden '^title:' # 緊急ISSUE rg --no-ignore --hidden '^priority: urgent$' issues/ -l | \ xargs rg --no-ignore --hidden '^title:'
4. プロジェクトでフィルタリング
bash
# 特定プロジェクトのISSUE rg --no-ignore --hidden '^project: dotfiles$' issues/ -l | \ xargs rg --no-ignore --hidden '^(title|status|priority):' # 個人タスク rg --no-ignore --hidden '^project: personal$' issues/ -l | \ xargs rg --no-ignore --hidden '^title:'
5. タグで検索
bash
rg --no-ignore --hidden '^tags:.*\[.*react.*\]' issues/ -i -l | \ xargs rg --no-ignore --hidden '^title:'
6. 期限が近いISSUE
bash
# 今日から7日以内 TODAY=$(date +%Y-%m-%d) rg --no-ignore --hidden "^due: " issues/ | \ awk -v today="$TODAY" '$2 >= today && $2 <= today+7'
7. 全文検索(必要な場合のみ)
bash
rg --no-ignore --hidden '<キーワード>' issues/ -i
8. ファイルを読み込み
タイトルから該当ファイルを特定したら、Read toolで内容を確認。
ISSUEの更新
ステータス変更
- •ファイルを読み込み
- •Editツールでstatusフィールドを変更
- •updatedフィールドを追加・更新
完了とアーカイブ
bash
# アーカイブディレクトリを作成 mkdir -p issues/.archive/$(date +%Y-%m) # 完了ISSUEを移動 mv issues/001-issue.md issues/.archive/2025-01/
コード内TODOコメントの処理
1. TODOコメントを検出
bash
rg 'TODO|FIXME|XXX|HACK' --type-add 'code:*.{ts,tsx,js,jsx,py,go,rs}' \
--type code -n -C 1
2. ユーザーに提案
「コード内にN件のTODOコメントを発見しました。ISSUEとして記録しますか?」
3. ISSUE作成
- •
issues/ディレクトリに作成 - •
type: choreまたはtype: bug - •
relatedにファイルパスと行番号を記録 - •
projectフィールドで該当プロジェクトを指定
ベストプラクティス
ISSUEの粒度
- •適切な粒度: 1-3時間で完了できる単位
- •大きすぎる場合: サブタスクに分割(チェックリスト使用)
- •小さすぎる場合: 関連ISSUEをまとめる
優先度の付け方
- •
urgent: 今すぐ対応が必要(本番障害など) - •
high: 重要で早めに対応 - •
medium: 通常の優先度(デフォルト) - •
low: 時間がある時に
タグの使い方
- •技術スタック:
[react, typescript, nodejs] - •機能領域:
[auth, api, frontend] - •作業種別:
[refactoring, testing, documentation]
projectフィールドの使い方
- •個人タスク:
personal - •プロジェクト別: プロジェクト名(
dotfiles,web-app,blogなど) - •これにより、プロジェクトごとにISSUEをフィルタリング可能
ブロック関係の記録
依存関係がある場合はblocked_byに記録:
yaml
blocked_by: - "003-setup-database.md" - "#external-api-access"
保存する内容
✅ 個人の学習タスク・設定作業 ✅ プロジェクトのバグ・機能開発 ✅ 調査・質問事項 ✅ 将来の改善アイデア ✅ コード内TODOの正式記録
保存しない内容
❌ すでにGitHub ISSUEで管理されている内容(重複) ❌ 5分以内で終わるような些細なタスク ❌ 機密情報(パスワード、APIキーなど)
注意事項
- •
issues/ディレクトリは.gitignoreで除外される(個人用のため) - •ファイル名は連番付きkebab-case形式
- •ripgrep検索時は必ず
--no-ignore --hiddenフラグを使用 - •Summary-Firstアプローチで効率的に検索
- •完了ISSUEは定期的にアーカイブ
status値の定義
- •
todo: 未着手(デフォルト) - •
in-progress: 作業中 - •
done: 完了 - •
blocked: ブロック中(依存関係待ちなど) - •
cancelled: キャンセル(不要になった)
type値の定義
- •
task: 一般的なタスク(デフォルト) - •
bug: バグ修正 - •
feature: 新機能開発 - •
enhancement: 既存機能の改善 - •
question: 調査・質問 - •
chore: 雑務(設定変更、依存更新など)