---
name: pain-log
description: >
  日常の不満・不便・観察を30秒〜3分でマイクロログ記録する。
  「問題発見筋」のトレーニング装置。一次情報（自分の目・耳）のみを対象とし、
  ネット情報は扱わない。「ペインログ」「不便メモ」「観察記録」「pain log」などで自動適用。
user-invocable: true
allowed-tools: Bash, Read, Write, Glob
---

# Pain Log スキル

## Authority
あなたは Life Repository の観察記録アシスタントとして振る舞う。
ユーザーが日常で感じた不満・不便・気づきを構造化して記録する。

### /seed-hunt との棲み分け

| | /pain-log | /seed-hunt |
|--|-----------|------------|
| ソース | 自分の目・耳（一次情報）| ネット採掘（二次情報）|
| 所要時間 | 30秒〜3分 | 5-10分（自動）|
| 頻度 | 1日複数回OK | 1日1回 |
| モード | クイック/対話 | 完全自動 |
| WebSearch | **使わない** | 使う |
| 保存先 | ideas/pain-log/（デフォルト） | ideas/app-seeds/（デフォルト） |

### 自律レベル
| 行動 | レベル | 備考 |
|------|--------|------|
| 観察の構造化 | Level 4（自律） | カテゴリ・頻度・ソフトウェア解決可能性を自動推定 |
| ファイル作成/追記 | Level 4（自律） | テンプレートに従い自動 |
| git commit | Level 4（自律） | 自動コミット |
| フォローアップ質問 | Level 4（自律） | 対話モードで自動的に質問 |

## Target
1日1件以上の観察記録。月30件を目標とし、ゲーミフィケーションで可視化する。

## Limit
- 出力は本スキルの管轄ディレクトリに限定する（デフォルト: `ideas/pain-log/`）
- **WebSearch / WebFetch は使用禁止**（一次観察のみに限定するため）
- 既存エントリの内容を変更しない（append のみ）
- ユーザーの観察を否定・評価しない（記録に徹する）

### 出力先の決定

本スキルは以下のデフォルトパスに出力する。ホストリポのディレクトリ構造が異なる場合は、
既存の構造に合わせて適切なディレクトリに配置すること。

| 出力 | デフォルトパス | ファイル命名 |
|------|-------------|------------|
| 観察ログ | `ideas/pain-log/` | `YYYY-MM-DD.md` |

**配置ルール:**
- ホストリポに `ideas/` ディレクトリが存在すればその配下に配置
- 存在しない場合はリポルートの構造を確認し、類似のディレクトリ（`data/`, `output/`, `docs/` 等）に配置
- どちらもなければデフォルトパスでディレクトリを作成
- 過去の出力ファイルが既に別のパスに存在する場合はそのパスに従う

## Action

### 使い方

**クイックモード（引数付き・30秒）:**
```
/pain-log "電車で隣の人がスマホの家計簿に手動入力していて面倒そうだった"
```

**対話モード（引数なし・2-3分）:**
```
/pain-log
```

### 処理手順

#### 共通: ステータス算出

1. **今月のエントリ数をカウント**
   - 出力ディレクトリ（デフォルト: `ideas/pain-log/`）から今月（YYYY-MM-*）のファイルを Glob で検索
   - 各ファイルの `entries` フロントマター値を合計

2. **連続日数を算出**
   - 今日から遡って、連続して pain-log ファイルが存在する日数をカウント
   - 今日のファイルがまだなければ昨日から起算

3. **累計件数を算出**
   - 全 pain-log ファイルの entries を合計

#### クイックモード（引数あり）

1. 引数テキストから以下を AI で自動推定:
   - **1行サマリー**: 簡潔な要約
   - **Context**: 観察した状況の補足
   - **Who**: self | family | colleague | stranger | online
   - **Category**: personal | observed | work | online
   - **Frequency**: daily | weekly | monthly | rare
   - **Softwareable?**: yes | maybe | no（ソフトウェアで解決できるか）
   - **カテゴリ絵文字**: 内容に合った絵文字1つ

2. 今日の pain-log ファイルを確認:
   - 出力ディレクトリの `YYYY-MM-DD.md`（デフォルト: `ideas/pain-log/YYYY-MM-DD.md`）が存在する → append モード
   - 存在しない → テンプレート `templates/pain-log.md` から新規作成

3. エントリを追記（フォーマットは下記参照）

4. フロントマターの `entries` を +1 更新

5. ゲーミフィケーション表示:
   ```
   今月: {count}/30 | 連続: {streak}日 | 累計: {total}件
   ```

6. git add + commit:
   - 新規: `git add {output_dir}/YYYY-MM-DD.md && git commit -m "ideas: Pain Log YYYY-MM-DD"`
   - 追記: `git add {output_dir}/YYYY-MM-DD.md && git commit -m "ideas: Pain Log YYYY-MM-DD (+{entry_number - 1})"`

#### 対話モード（引数なし）

1. ゲーミフィケーション表示（現在のステータス）

2. 「何が面倒/不便でしたか？」と質問

3. ユーザーの回答に対してフォローアップ:
   - 「それはどんな状況で起きましたか？」
   - 「どのくらいの頻度で起きますか？」
   - 「ソフトウェアで解決できそうですか？」

4. 回答をもとに構造化エントリを作成

5. クイックモードの手順 2-6 と同じ

### エントリフォーマット

```markdown
### {N}. [{HH:MM}] {カテゴリ絵文字} {1行サマリー}
- **Context**: {観察した状況}
- **Who**: {self|family|colleague|stranger|online}
- **Category**: {personal|observed|work|online}
- **Frequency**: {daily|weekly|monthly|rare}
- **Softwareable?**: {yes|maybe|no}
```

## Signal
### 完了条件
- [ ] 出力ディレクトリの YYYY-MM-DD.md（デフォルト: `ideas/pain-log/YYYY-MM-DD.md`）にエントリが追記されている
- [ ] フロントマターの entries が正しく更新されている
- [ ] ゲーミフィケーション表示が出力されている
- [ ] git commit が完了している

### 異常シグナル
| シグナル | 条件 | アクション |
|---------|------|-----------|
| INFO | 今日初めての記録 | 新規ファイル作成 |
| INFO | 連続記録が 7 日以上 | 「素晴らしい連続記録です！」と表示 |
| WARN | 今月の記録が 0 件（月半ば以降） | 「今月まだ記録がありません」と軽くリマインド |
| WARN | git commit が失敗 | エラーを表示して手動コミットを案内 |
