/readme-skill
生成一份对外可分享、脱敏的 AI-Native 开发者 README。 量化展示我对 Claude Code + Codex CLI + Kiro (AWS) + Trae (ByteDance) + Gemini Antigravity (Google) + Cursor 的使用深度、AI 协作风格、 项目与领域分布、兴趣主题,以及与 GitHub 提交的产出关联。 Trigger when the user says: "生成我的 AI 档案" / "做一份 AI-native README" / "分析我的 Claude / Codex /
$ npx -y skills add study8677/Readme.skill --skill readme-skill --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/readme-skill
Context preview
The summary Claude sees to decide when to auto-load this skill.
生成一份对外可分享、脱敏的 AI-Native 开发者 README。 量化展示我对 Claude Code + Codex CLI + Kiro (AWS) + Trae (ByteDance) + Gemini Antigravity (Google) + Cursor 的使用深度、AI 协作风格、 项目与领域分布、兴趣主题,以及与 GitHub 提交的产出关联。 Trigger when the user says: "生成我的 AI 档案" / "做一份 AI-native README" / "分析我的 Claude / Codex /
SKILL.md
readme-skill.SKILL.mdname: readme-skill
description: >
生成一份对外可分享、脱敏的 AI-Native 开发者 README。
量化展示我对 Claude Code + Codex CLI + Kiro (AWS) + Trae (ByteDance) +
Gemini Antigravity (Google) + Cursor 的使用深度、AI 协作风格、
项目与领域分布、兴趣主题,以及与 GitHub 提交的产出关联。
Trigger when the user says: "生成我的 AI 档案" / "做一份 AI-native README" /
"分析我的 Claude / Codex / Kiro / Trae / Antigravity / Cursor 使用情况" /
"总结我的 AI 使用" / "生成 AI 月度报告" / "按月份分析我的 AI 编码" /
"分析 2026-05 的 AI 使用" / "build my AI usage profile" /
"build my monthly AI coding report" / "analyze my AI usage for May 2026" /
"summarize my Claude / Codex / Kiro / Trae / Antigravity / Cursor history" /
"生成开发者画像".
全程本地、只读、默认匿名、不上传任何数据。
license: MIT
Readme.skill — AI-Native 开发者档案生成器
You (the AI agent invoking this skill) will read local Claude Code + Codex CLI
- Kiro (AWS) + Trae (ByteDance) + Gemini Antigravity (Google) + Cursor data,
compute a fixed set of dimensions, and render both a Markdown profile and a validated SVG poster under `./output/` in the user's requested language (Chinese by default; English when the user asks in English or explicitly requests English). The profile and poster can cover the default history view or an explicit month / date range. **You do all of the work** — read the files with `Read`, query sqlite via `Bash`, synthesize the prose yourself, then write and validate the SVG. Do **not** write helper scripts; the skill is the recipe.
> 支持的 6 个 AI 编程工具(任一缺失都自动降级跳过): > 1. **Claude Code** (`~/.claude/`) — Step 2 > 2. **Codex CLI** (`~/.codex/`) — Step 3 > 3. **Kiro CLI / IDE** (`~/.kiro/` + `~/.local/share/kiro-cli/`) — Step 3b > 4. **Trae IDE** (`~/Library/Application Support/Trae/` + 项目 `.trae/`) — Step 3c > 5. **Gemini Antigravity** (`~/.gemini/antigravity/brain/`) — Step 3d > 6. **Cursor** (`~/Library/Application Support/Cursor/` + 项目 `.cursor/`) — Step 3e
> 默认行为:**对外分享版** —— 项目名匿名、敏感信息脱敏。 > 如果用户明确说"私人版 / 不要脱敏 / show real names",跳过匿名步骤。
---
Step 1 — 准备
cd <repo-with-this-skill> # e.g. ~/Projects/Readme.skill
mkdir -p output
DATE=$(date +%Y%m%d)
Decide anonymization mode (default = on). Build an in-memory mapping `real_path → "项目 A/B/C"` as you encounter project paths in later steps. Use the same mapping consistently across all sections.
1.1 时间窗口 / 月度报告模式
If the user asks for a month, quarter, stage, date range, "月度报告", "按月份分析", "time range", "monthly report", or similar, set a report window before reading any data. The window is a half-open local-date interval: `[REPORT_START, REPORT_END_EXCL)`.
Supported phrases:
- Single month: `2026-05`, `2026年5月`, `May 2026` → `REPORT_START=2026-05-01`,
`REPORT_END_EXCL=2026-06-01`, `REPORT_LABEL=2026-05`, `REPORT_SLUG=202605`, `REPORT_MODE=monthly`
- Month range: `2026-04 到 2026-05`, `Apr-May 2026` → start at the first day of
the first month, end at the first day after the last month, `REPORT_MODE=range`
- Explicit dates: `2026-05-03 到 2026-05-19` / `2026-05-03..2026-05-19` →
include both named dates by setting `REPORT_END_EXCL` to the day after the final date, `REPORT_MODE=range`
- Relative range: `最近30天` / `last 30 days` → compute from today's local date,
`REPORT_MODE=range`
If no explicit time window is requested, keep the existing default profile behavior: AI tool totals may use all available local history, while GitHub and local git use their existing 365-day windows. Set `WINDOW_REQUESTED=0`.
If a window is requested, set:
WINDOW_REQUESTED=1
REPORT_START=<YYYY-MM-DD>
REPORT_END_EXCL=<YYYY-MM-DD> # exclusive
REPORT_LABEL=<human-readable label, e.g. "2026-05" or "2026-04..2026-05">
REPORT_SLUG=<filesystem-safe slug, e.g. "202605" or "202604-202605">
For every source below, include only records whose timestamp is `>= REPORT_START 00:00:00` and `< REPORT_END_EXCL 00:00:00` in local time. Never mix all-time counts into a windowed report unless the metric is explicitly labeled "all-time context" or "fallback, not window-filtered".
For windowed reports, also compute a previous comparison window of the same length when possible:
# macOS date syntax. Use equivalent date math on other systems.
window_start_ts=$(date -j -f "%Y-%m-%d" "$REPORT_START" +%s)
window_end_ts=$(date -j -f "%Y-%m-%d" "$REPORT_END_EXCL" +%s)
WINDOW_DAYS=$(( (window_end_ts - window_start_ts) / 86400 ))
PREV_END_EXCL="$REPORT_START"
PREV_START=$(date -j -v-"${WINDOW_DAYS}"d -f "%Y-%m-%d" "$REPORT_START" +%Y-%m-%d)---
Step 2 — 读取 Claude Code 数据 (`~/.claude/` + 项目 `.claude/`)
2.1 预聚合统计(最权威,先看这个)
Read `~/.claude/stats-cache.json`. Extract:
| 字段 | 含义 | | --- | --- | | `totalSessions` | session 总数 | | `totalMessages` | 消息总数 | | `firstSessionDate` | 首个 session ISO 时间 | | `longestSession.{duration,messageCount,timestamp}` | 最长 session | | `hourCounts` | `{hour: count}` 24h 热力 | | `modelUsage[model].{inputTokens,outputTokens,cacheReadInputTokens,cacheCreationInputTokens}` | 每模型 token 细分 | | `dailyActivity[].{date,messageCount,sessionCount,toolCallCount}` | 每日活跃 | | `dailyModelTokens[].{date,tokensByModel}` | 每日按模型 token |
**派生量(你来算)**:
- `claude_tokens_spent = Σ (inputTokens + outputTokens + cacheCreationInputTokens)` —— 真实新付费 token
- `claude_cache_read = Σ cacheReadInputTokens` —— 缓存复用,反映 prompt-caching 熟练度
- `cache_to_spent_ratio = claude_cache_read / claude_tokens_spent` —— 比值越大越熟
**时间窗口模式**:如果 `WINDOW_REQUESTED=1`,优先从 `dailyActivity` 与 `dailyModelTokens` 中按 `REPORT_START <= date < REPORT_END_EXCL` 过滤后汇总 Claude sessions / messages / tokens / cache。`modelUsage` 是全局聚合;只有默认 profile 模式才能直接当总量使用。若某个 Claude 字段只有全局聚合、无法按日期切分, 在月度报告里写 `—` 或标注「仅有 all-time 聚合,未纳入窗口统计」,不要把全局值混进 月度值。
2.2 Slash-command 热度
`~/.claude/history.jsonl` —— 每行 `{display, timestamp, project, sessionId}`。
# Top 15 slash commands
jq -r 'select(.display | startswith("/")) | (.display | split(" ")[0])' \
~/.claude/history.jsonl | sort | uniq -c | sort -rn | head -15
# 总条数 vs 命令条数 vs 直接 prompt 条数
total=$(wc -l < ~/.claude/history.jsonl)
cmd=$(jq -r 'select(.dispRead more
name: readme-skill description: > 生成一份对外可分享、脱敏的 AI-Native 开发者 README。 量化展示我对 Claude Code + Codex CLI + Kiro (AWS) + Trae (ByteDance) + Gemini Antigravity (Google) + Cursor 的使用深度、AI 协作风格、 项目与领域分布、兴趣主题,以及与 GitHub 提交的产出关联。 Trigger when the user says: "生成我的 AI 档案" / "做一份 AI-native README" / "分析我的 Claude / Codex / Kiro / Trae / Antigravity / Cursor 使用情况" / "总结我的 AI 使用" / "生成 AI 月度报告" / "按月份分析我的 AI 编码" / "分析 2026-05 的 AI 使用" / "build my AI usage profile" / "build my monthly AI coding report" / "analyze my AI usage for May 2026" / "summarize my Claude / Codex / Kiro / Trae / Antigravity / Cursor history" / "生成开发者画像". 全程本地、只读、默认匿名、不上传任何数据。 license: MIT
Readme.skill — AI-Native 开发者档案生成器
You (the AI agent invoking this skill) will read local Claude Code + Codex CLI
- Kiro (AWS) + Trae (ByteDance) + Gemini Antigravity (Google) + Cursor data,
compute a fixed set of dimensions, and render both a Markdown profile and a validated SVG poster under `./output/` in the user's requested language (Chinese by default; English when the user asks in English or explicitly requests English). The profile and poster can cover the default history view or an explicit month / date range. **You do all of the work** — read the files with `Read`, query sqlite via `Bash`, synthesize the prose yourself, then write and validate the SVG. Do **not** write helper scripts; the skill is the recipe.
> 支持的 6 个 AI 编程工具(任一缺失都自动降级跳过): > 1. **Claude Code** (`~/.claude/`) — Step 2 > 2. **Codex CLI** (`~/.codex/`) — Step 3 > 3. **Kiro CLI / IDE** (`~/.kiro/` + `~/.local/share/kiro-cli/`) — Step 3b > 4. **Trae IDE** (`~/Library/Application Support/Trae/` + 项目 `.trae/`) — Step 3c > 5. **Gemini Antigravity** (`~/.gemini/antigravity/brain/`) — Step 3d > 6. **Cursor** (`~/Library/Application Support/Cursor/` + 项目 `.cursor/`) — Step 3e
> 默认行为:**对外分享版** —— 项目名匿名、敏感信息脱敏。 > 如果用户明确说"私人版 / 不要脱敏 / show real names",跳过匿名步骤。
---
Step 1 — 准备
cd <repo-with-this-skill> # e.g. ~/Projects/Readme.skill mkdir -p output DATE=$(date +%Y%m%d)
Decide anonymization mode (default = on). Build an in-memory mapping `real_path → "项目 A/B/C"` as you encounter project paths in later steps. Use the same mapping consistently across all sections.
1.1 时间窗口 / 月度报告模式
If the user asks for a month, quarter, stage, date range, "月度报告", "按月份分析", "time range", "monthly report", or similar, set a report window before reading any data. The window is a half-open local-date interval: `[REPORT_START, REPORT_END_EXCL)`.
Supported phrases:
- Single month: `2026-05`, `2026年5月`, `May 2026` → `REPORT_START=2026-05-01`,
`REPORT_END_EXCL=2026-06-01`, `REPORT_LABEL=2026-05`, `REPORT_SLUG=202605`, `REPORT_MODE=monthly`
- Month range: `2026-04 到 2026-05`, `Apr-May 2026` → start at the first day of
the first month, end at the first day after the last month, `REPORT_MODE=range`
- Explicit dates: `2026-05-03 到 2026-05-19` / `2026-05-03..2026-05-19` →
include both named dates by setting `REPORT_END_EXCL` to the day after the final date, `REPORT_MODE=range`
- Relative range: `最近30天` / `last 30 days` → compute from today's local date,
`REPORT_MODE=range`
If no explicit time window is requested, keep the existing default profile behavior: AI tool totals may use all available local history, while GitHub and local git use their existing 365-day windows. Set `WINDOW_REQUESTED=0`.
If a window is requested, set:
WINDOW_REQUESTED=1 REPORT_START=<YYYY-MM-DD> REPORT_END_EXCL=<YYYY-MM-DD> # exclusive REPORT_LABEL=<human-readable label, e.g. "2026-05" or "2026-04..2026-05"> REPORT_SLUG=<filesystem-safe slug, e.g. "202605" or "202604-202605">
For every source below, include only records whose timestamp is `>= REPORT_START 00:00:00` and `< REPORT_END_EXCL 00:00:00` in local time. Never mix all-time counts into a windowed report unless the metric is explicitly labeled "all-time context" or "fallback, not window-filtered".
For windowed reports, also compute a previous comparison window of the same length when possible:
# macOS date syntax. Use equivalent date math on other systems.
window_start_ts=$(date -j -f "%Y-%m-%d" "$REPORT_START" +%s)
window_end_ts=$(date -j -f "%Y-%m-%d" "$REPORT_END_EXCL" +%s)
WINDOW_DAYS=$(( (window_end_ts - window_start_ts) / 86400 ))
PREV_END_EXCL="$REPORT_START"
PREV_START=$(date -j -v-"${WINDOW_DAYS}"d -f "%Y-%m-%d" "$REPORT_START" +%Y-%m-%d)---
Step 2 — 读取 Claude Code 数据 (`~/.claude/` + 项目 `.claude/`)
2.1 预聚合统计(最权威,先看这个)
Read `~/.claude/stats-cache.json`. Extract:
| 字段 | 含义 | | --- | --- | | `totalSessions` | session 总数 | | `totalMessages` | 消息总数 | | `firstSessionDate` | 首个 session ISO 时间 | | `longestSession.{duration,messageCount,timestamp}` | 最长 session | | `hourCounts` | `{hour: count}` 24h 热力 | | `modelUsage[model].{inputTokens,outputTokens,cacheReadInputTokens,cacheCreationInputTokens}` | 每模型 token 细分 | | `dailyActivity[].{date,messageCount,sessionCount,toolCallCount}` | 每日活跃 | | `dailyModelTokens[].{date,tokensByModel}` | 每日按模型 token |
**派生量(你来算)**:
- `claude_tokens_spent = Σ (inputTokens + outputTokens + cacheCreationInputTokens)` —— 真实新付费 token
- `claude_cache_read = Σ cacheReadInputTokens` —— 缓存复用,反映 prompt-caching 熟练度
- `cache_to_spent_ratio = claude_cache_read / claude_tokens_spent` —— 比值越大越熟
**时间窗口模式**:如果 `WINDOW_REQUESTED=1`,优先从 `dailyActivity` 与 `dailyModelTokens` 中按 `REPORT_START <= date < REPORT_END_EXCL` 过滤后汇总 Claude sessions / messages / tokens / cache。`modelUsage` 是全局聚合;只有默认 profile 模式才能直接当总量使用。若某个 Claude 字段只有全局聚合、无法按日期切分, 在月度报告里写 `—` 或标注「仅有 all-time 聚合,未纳入窗口统计」,不要把全局值混进 月度值。
2.2 Slash-command 热度
`~/.claude/history.jsonl` —— 每行 `{display, timestamp, project, sessionId}`。
# Top 15 slash commands
jq -r 'select(.display | startswith("/")) | (.display | split(" ")[0])' \
~/.claude/history.jsonl | sort | uniq -c | sort -rn | head -15
# 总条数 vs 命令条数 vs 直接 prompt 条数
total=$(wc -l < ~/.claude/history.jsonl)
cmd=$(jq -r 'select(.dispTurn your local Claude Code / Codex CLI history into a shareable, anonymized AI-Native developer profile + viral SVG poster. A skill, not a script — 100% local & read-only.

