macOS

Session 管理技能包

適用 macOS + Claude Desktop Code。功能:/start /save /wrap-up。儲存在本機 SQLite。

↓ 下載 Markdown 原始檔

快速設定(3 分鐘)

1

建立目錄

打開 Terminal,貼上:

mkdir -p ~/.claude/skills/session-start
mkdir -p ~/.claude/skills/session-save
mkdir -p ~/.claude/skills/session-wrap-up
mkdir -p ~/.claude/job-memo
2

初始化 SQLite

python3 -c "
import sqlite3, os
db = os.path.expanduser('~/.claude/sessions.db')
conn = sqlite3.connect(db)
conn.execute('''CREATE TABLE IF NOT EXISTS sessions (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    created_at TEXT DEFAULT (datetime(\"now\", \"localtime\")),
    slug TEXT NOT NULL,
    type TEXT NOT NULL DEFAULT \"episode\",
    content TEXT NOT NULL,
    tags TEXT DEFAULT \"\"
)''')
conn.commit()
conn.close()
print(f'DB created: {db}')
"
3

放入 Skill 檔案

點開下面三張卡片,把每張的內容存成對應路徑的 SKILL.md 檔案。

/start ~/.claude/skills/session-start/SKILL.md

把以下完整內容存成 ~/.claude/skills/session-start/SKILL.md

# /start — Session 開場

Session 開始時,從本機 SQLite 拉最近的工作記錄,產出接續摘要。

## 流程

### Step 1:讀取最近 5 筆 session 記錄

```bash
python3 -c "
import sqlite3, os
db = os.path.expanduser('~/.claude/sessions.db')
conn = sqlite3.connect(db)
rows = conn.execute(
    'SELECT created_at, slug, type, content FROM sessions ORDER BY id DESC LIMIT 5'
).fetchall()
conn.close()
if not rows:
    print('(尚無歷史記錄,這是第一次使用)')
else:
    for r in rows:
        print(f'[{r[0]}] ({r[2]}) {r[1]}')
        for line in r[3].split(chr(10))[:5]:
            print(f'  {line}')
        print()
"
```

### Step 2:讀取最近的 job-memo
```bash
ls -t ~/.claude/job-memo/*.md 2>/dev/null | head -2
```
如果有檔案,用 Read 工具讀取最新的 1-2 份。

### Step 3:Git 狀態(如果在 repo 內)
```bash
git log --oneline -5 2>/dev/null
git status -sb 2>/dev/null | head -10
```

### Step 4:輸出摘要
```
## Session 開場 Summary
**上次進度**:{最新一筆 session 記錄的摘要}
**最近 sessions**:- [日期] slug — 第一行摘要
**最近 commits**:{git log 摘要}
---
要接續上次的工作嗎?還是新任務?
```
如果沒有任何歷史記錄,就說「這是第一個 session,請告訴我要做什麼」。
/save ~/.claude/skills/session-save/SKILL.md

把以下完整內容存成 ~/.claude/skills/session-save/SKILL.md

# /save — 中途存檔

把當前進度存入本機 SQLite,不中斷工作。

## 流程

### Step 1:整理當前進度
回顧本次 session 到目前為止:做了什麼、改了哪些檔案、關鍵決策、下一步。

### Step 2:產生 slug
從任務主題產生簡短 slug(英文小寫 + 連字號,如 fix-login-bug)。

### Step 3:寫入 SQLite
```bash
python3 -c "
import sqlite3, os
db = os.path.expanduser('~/.claude/sessions.db')
conn = sqlite3.connect(db)
conn.execute(
    'INSERT INTO sessions (slug, type, content, tags) VALUES (?, ?, ?, ?)',
    ('SLUG_HERE', 'checkpoint', '''CONTENT_HERE''', 'TAG1, TAG2, TAG3')
)
conn.commit()
conn.close()
print('checkpoint saved')
"
```
content 至少含:做了什麼、改了哪些檔案、下一步。tags 至少 3 個關鍵字。

### Step 4:簡短回報
告訴使用者「已存進度」,一句話說存了什麼。
/wrap-up ~/.claude/skills/session-wrap-up/SKILL.md

把以下完整內容存成 ~/.claude/skills/session-wrap-up/SKILL.md

# /wrap-up — 收工

Session 結束前的完整收尾流程。

## 觸發時機
使用者說「收工」「下班」「結束」「先這樣」「wrap-up」或明顯要離開時啟動。

## 流程

### Step 1:整理本次 session 完整內容
回顧整個 session:背景、完成什麼、關鍵決策、改了哪些檔案、下一步。

### Step 2:寫入 SQLite
```bash
python3 -c "
import sqlite3, os
db = os.path.expanduser('~/.claude/sessions.db')
conn = sqlite3.connect(db)
conn.execute(
    'INSERT INTO sessions (slug, type, content, tags) VALUES (?, ?, ?, ?)',
    ('SLUG_HERE', 'wrap-up', '''CONTENT_HERE''', 'TAG1, TAG2, TAG3, TAG4, TAG5')
)
conn.commit()
conn.close()
print('wrap-up saved')
"
```
content 必須 ≥ 200 字,tags ≥ 5 個關鍵字。

### Step 3:寫入 Job Memo
用 Write 工具寫入 ~/.claude/job-memo/YYYY-MM-DD-SLUG.md:
```
# TASK_NAME — DATE
## 今天做了什麼
## 改了哪些檔案
## 未完成 / 下次接續
## 注意事項
```

### Step 4:輸出 Session 摘要
```
## Session 摘要
- **完成**: ...
- **未完成**: ...
- **下一步**: ...
- **關鍵決策**: ...
- **寫入紀錄**: SQLite ✓ | job-memo ✓
```

## 禁止
- 使用者要走時不做 wrap-up 就結束 → 必須提醒
- 寫模糊內容(「更新了設定」「做了一些修改」)→ 不合格

使用方式

指令用途時機
/start開場,看上次做到哪每次開新 session
/save中途存檔完成一個里程碑
/wrap-up收工要離開時

查詢歷史記錄

在 Terminal 跑:

# 看最近 10 筆
sqlite3 ~/.claude/sessions.db \
  "SELECT created_at, type, slug FROM sessions ORDER BY id DESC LIMIT 10;"

# 搜尋關鍵字
sqlite3 ~/.claude/sessions.db \
  "SELECT created_at, slug, content FROM sessions \
   WHERE content LIKE '%關鍵字%' OR tags LIKE '%關鍵字%' \
   ORDER BY id DESC LIMIT 5;"