ワンクリックで
voice
Analyse chat history to update voice and typing style guide (voice.md in auto memory)
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Analyse chat history to update voice and typing style guide (voice.md in auto memory)
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Register bot commands with Telegram so they appear in the command menu
Rebuild miniclaw and restart the background service
Interactive setup wizard for new miniclaw users who just forked the repo
Summarise recent conversations across all threads into auto memory (MEMORY.md + topic files)
Create a semver release with changelog, git tag, and GitHub release
Review git diff and suggest how to group and commit changes
SOC 職業分類に基づく
| name | voice |
| description | Analyse chat history to update voice and typing style guide (voice.md in auto memory) |
This skill delegates to a sub-agent to keep large transcript data out of the main context window.
Arguments: optional time window (e.g. 1d, 7d, 30d, all). Defaults to 7d.
Launch a sub-agent using the Agent tool with the prompt below. Substitute {{DAYS}} with the parsed time window:
all -> 014d -> 1430d -> 307When the agent completes, relay its response directly to the user without modification.
Go through all conversation transcripts, extract user messages, and update the voice and typing style guide.
## Step 1: Find transcripts
List all JSONL transcript files:
find ~/.claude/projects/ -name "*.jsonl" -type f
## Step 2: Extract user messages
For each transcript file, extract all user-typed messages within the time window. Run this script with DAYS={{DAYS}}:
python3 << 'PYEOF'
import json, glob, os
from datetime import datetime, timedelta, timezone
DAYS = {{DAYS}} # 0 means no cutoff (all time)
cutoff = datetime.now(timezone.utc) - timedelta(days=DAYS) if DAYS > 0 else None
label = "all time" if not cutoff else f"the last {DAYS}d"
files = glob.glob(os.path.expanduser("~/.claude/projects/**/*.jsonl"), recursive=True)
msgs = []
for fpath in files:
with open(fpath, "r") as f:
for line in f:
line = line.strip()
if not line:
continue
try:
obj = json.loads(line)
except:
continue
if obj.get("type") != "user":
continue
ts = obj.get("timestamp", "")
if cutoff and ts:
try:
dt = datetime.fromisoformat(ts)
if dt < cutoff:
continue
except:
pass
message = obj.get("message", {})
content = message.get("content", "")
texts = []
if isinstance(content, str):
texts.append(content)
elif isinstance(content, list):
for block in content:
if isinstance(block, dict) and block.get("type") == "text":
texts.append(block.get("text", ""))
for t in texts:
t = t.strip()
if len(t) > 5 and not t.startswith("<system") and not t.startswith("<command") and not t.startswith("<local-command") and not t.startswith("Base directory for this skill"):
msgs.append(t)
print(f"Found {len(msgs)} user messages from {label} across {len(files)} transcript(s)\n")
for i, m in enumerate(msgs):
print(f"=== [{i}] ===")
print(m[:800])
print()
PYEOF
Skim through all of the output focusing on HOW the user types, not WHAT they're saying. Life updates and personal context are handled by the /remember skill.
## Step 3: Read current voice guide
Read the voice.md file from the auto memory directory (the path is provided in your system prompt) to understand what's already captured.
## Step 4: Analyse and update
Compare the user's actual typing patterns against what's in the voice guide. Look for:
- New abbreviations or slang not yet captured
- Shifts in tone or formality
- New expressions or verbal tics
- Patterns that were wrong or overstated in the current guide
- Changes in emoji usage, punctuation habits, or sentence structure
Only document patterns that appear consistently across multiple messages. Do not over-index on one-off phrasing.
## Step 5: Apply changes
Edit the voice.md file in the auto memory directory with the updates. Keep it concise and well-organised. Do not duplicate existing entries.
## Step 6: Report
Start your response with "/voice summary" so the user knows which skill produced this output. Then tell the user what was added or changed, and why.