[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C1K65C168CFQJ22YMTKMMG":3,"skill-same:01M6C1K65C168CFQJ22YMTKMMG":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":13,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":34,"install":35,"resources":48},"01M6C1K65C168CFQJ22YMTKMMG","collab-proof",null,"Use when you want to understand what Claude contributed vs what you drove in a session. Triggers on: \u002Fcollab-proof, session retrospective, ai contribution analysis, collaboration evidence, what did claude do.","mne20114-hash\u002Fgest35bi","mne20114-hash","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F224168109?v=4","01M6C0JCR7334CZ39YWTZXX2NG","01M6C0JCWN0NBWMQTW1CPG2Z4G",0,"MIT","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fengineering\u002Fcollab-proof\u002Fskills\u002Fcollab-proof\u002FSKILL.md",[],[18,19,20,21,22,23],"collab proof","collaboration","retrospective","analysis","session","use","2026-11-10 10:12:30",false,"---\nname: \"collab-proof\"\ndescription: \"Use when you want to understand what Claude contributed vs what you drove in a session. Triggers on: \u002Fcollab-proof, session retrospective, ai contribution analysis, collaboration evidence, what did claude do.\"\nlicense: MIT\n---\n\n# collab-proof\n\nSurfaces AI collaboration evidence the developer didn't consciously record.\nVela 3-layer pipeline × ADHD 4-frame reasoning — prompt-native, zero dependencies.\n\n---\n\n## Layer 01 — Signal detection\n\nRun `git log --oneline -10` and `git diff --stat HEAD~3..HEAD` first.\n\nClassify signal level using this rubric (pick the highest that matches):\n\n**HIGH** → full artifacts (DECISIONS.md + session-history + WORKLOG + HTML)\n- New file created, OR\n- 4+ files modified, OR\n- Explicit option comparison in conversation (\"vs\", \"instead of\", \"chose X over Y\"), OR\n- Design discussion lasted 15+ exchanges, OR\n- **Bug with root cause diagnosis** — conversation contains WHY the bug happened\n  (not just \"fixed X\" but \"the bug was caused by Y because Z\")\n\n**BUG_FIXING special rule** — override file count:\nEven if only 1 file changed, classify as HIGH if the conversation contains:\n- Root cause explanation (\"the bug was...\", \"this happened because...\", \"the issue is...\")\n- Diagnosis process (\"I checked...\", \"turned out...\", \"the problem was...\")\n- Fix rationale (\"chose this approach because...\", \"instead of X, used Y because...\")\nFile count doesn't matter for bugs — a well-diagnosed single-file fix is more valuable\nthan a 10-file feature with no discussion.\n\n**MEDIUM** → WORKLOG only\n- 1–3 files modified with no root cause discussion, OR\n- Minor feature added, no tradeoffs discussed\n\n**LOW** → silence, tell user \"Routine session — nothing recorded.\"\n- No code changes, only planning\u002Fdiscussion, OR\n- Single trivial change with no context (\"change this text\", \"fix typo\", \"rename variable\")\n\nShow the user: `Signal: HIGH \u002F MEDIUM \u002F LOW — [one-line reason]`\n\n---\n\n## Layer 02 — WorkIntentClassifier\n\nRun all four frames simultaneously against conversation context + git diff.\nScore each frame 0.0–1.0 using the rubric below. Then apply pruning and classification rules.\n\n### Frame scoring rubric\n\n**Frame A — Technical** (code churn complexity)\n- `1.0` New module\u002Ffile created, complex logic added (state machine, Lua script, novel algorithm)\n- `0.5` Existing function logic modified, simple API endpoint added\n- `0.1` Typo fix, comment change, plain text edit\n\n**Frame B — Uncertainty** (developer doubt signals)\n- `1.0` Code written then fully rolled back, explicit doubt expressed (\"이게 맞나?\", \"동작 안 하네\"), `git revert`\n- `0.5` Advice sought from Claude mid-implementation, 2+ revision requests on same area\n- `0.0` Uninterrupted directive execution — developer knew exactly what to build\n\n**Frame C — Fork** (decision branch presence)\n- `1.0` Two or more alternatives explicitly compared in conversation (A vs B)\n- `0.5` No explicit comparison but tradeoff mentioned (performance vs readability)\n- `0.0` Single standard approach applied, no alternatives considered\n\n**Frame D — AI contribution** (Claude's actual impact)\n- `1.0` Claude identified a bug\u002Fedge case the developer hadn't noticed and proposed the fix\n- `0.6` Claude generated structural boilerplate\u002Fskeleton that significantly accelerated execution\n- `0.2` Claude reformatted or transcribed developer-directed code without independent contribution\n\n---\n\n### Pruning rule\n\nPrune any frame scoring \u003C 0.4.\n\n**Exception — High-Speed Execution Guard:**\nIf `Frame A >= 0.8` AND `Frame D >= 0.6`, do NOT prune and do NOT silence the session,\neven if Frame B = 0.0 and Frame C = 0.0.\nThis is a boilerplate-heavy FEATURE_BUILDING session. Classify immediately as `FEATURE_BUILDING` with `HIGH` signal.\nRationale: zero uncertainty in a fast-moving session is a feature, not a reason to discard it.\n\n---\n\n### Intent classification\n\n| Surviving frames | Dominant intent | Meaning |\n|---|---|---|\n| A high + D mid-high (B, C low) | `FEATURE_BUILDING` | High-velocity feature generation, Claude scaffolding |\n| B high + A\u002FD high | `BUG_FIXING` or `STUCK` | Active debugging or unresolved looping |\n| C high + A high | `REFACTORING` or `EXPLORING` | Architecture exploration, weighing alternatives |\n| All frames \u003C 0.4 | `FLOW_STATE` or LOW | Routine typing, silence unless Layer 01 was HIGH |\n\nIf multiple intents tie, pick the one with the highest combined frame score.\nRecord the runner-up — it belongs in the session narrative.\n\n---\n\n### Internal output format\n\nBefore proceeding to Layer 03, resolve to this structure (show it to the user):\n\n```json\n{\n  \"frames\": {\n    \"technical\": 0.0,\n    \"uncertainty\": 0.0,\n    \"fork\": 0.0,\n    \"ai_contribution\": 0.0\n  },\n  \"pruned\": [\"list of pruned frame names\"],\n  \"intent\": \"FEATURE_BUILDING\",\n  \"signal\": \"HIGH\",\n  \"calibration_note\": \"one sentence explaining any exception rule applied\"\n}\n```\n\n---\n\n## Layer 03 — Output\n\n### If HIGH signal\n\n**Append to `DECISIONS.md`** — one entry per real fork (Frame C must confirm alternatives existed):\n\n```markdown\n## [YYYY-MM-DD] \u003Ctitle>\n\n**Context**: [Frame A — what forced this choice]\n**Decision**: what was chosen\n**Alternatives considered**: [Frame C — road not taken]\n**Reasoning**: why — prefix \"inferred:\" if reconstructed from context\n**AI contribution**:\n  - Identified: [Frame D — something developer missed]\n  - Suggested: [Frame D — approach or alternative]\n  - Developer-driven: [what the developer decided independently]\n**Intent class**: [from Layer 02]\n**Signal score**: HIGH\n**Outcome**: implemented | pending | reversed\n```\n\nIf no real fork existed → write nothing. Never fabricate decisions.\n\n**BUG_FIXING intent: use this format instead:**\n\n```markdown\n## [YYYY-MM-DD] \u003Cbug title>\n\n**Root cause**: what actually caused the bug — the WHY, not just the what\n**Symptom**: what the developer observed\n**Fix**: what was changed\n**Why this fix**: rationale — inferred if not stated explicitly\n**Alternative fixes considered**: other approaches discussed (if any)\n**AI contribution**:\n  - Identified: [Frame D — did Claude spot the root cause?]\n  - Suggested: [Frame D — fix approach or diagnostic step]\n  - Developer-driven: [what the developer diagnosed\u002Fdecided independently]\n**Intent class**: BUG_FIXING\n**Signal score**: HIGH\n**Outcome**: fixed | workaround | deferred\n```\n\n**Create `session-history\u002FYYYY-MM-DD-HHMM.md`**:\n\n```markdown\n# Session [YYYY-MM-DD HH:MM]\n\n**Intent**: [class] (runner-up: [class if any])\n**Signal**: HIGH\n**Frames active**: A ([score]) \u002F B ([score]) \u002F C ([score]) \u002F D ([score])\n\n## What shipped\n[grounded in git log]\n\n## What was figured out\n[Frame B + C — the reasoning, tradeoffs, debugging — what developers forget]\n\n## Decisions made this session\n[refs to DECISIONS.md entries]\n\n## Where it got hard\n[Frame B findings — uncertainty, reverts, EXPLORING\u002FSTUCK signals]\n\n## AI contribution summary\n[Frame D synthesis — one honest paragraph, calibrated]\n\n## Next steps inferred\n[what's obviously incomplete]\n```\n\n**Append to `WORKLOG.md`**:\n```\nYYYY-MM-DD HH:MM | [intent] | HIGH | D:[score] | cache:[hit%]% | tok:[total] | \u003Cverb phrase> — \u003Cwhy it mattered>\n```\n\nFields:\n- `D:[score]` — Frame D AI contribution score (0.0–1.0)\n- `cache:[hit%]%` — cache hit rate from token analysis (or `cache:n\u002Fa` if no data)\n- `tok:[total]` — total tokens this session (input + cache_read + cache_create + output, in K e.g. `45K`)\n- verb phrase — what shipped, grounded in git log\n\n**Collect token usage** (bash — run this and capture output):\n```bash\npython3 -c \"\nimport json, sys\nfrom pathlib import Path\n\nprojects = Path.home() \u002F '.claude\u002Fprojects'\nfiles = sorted(projects.rglob('*.jsonl'), key=lambda f: f.stat().st_mtime, reverse=True)\nif not files:\n    print('no_data'); sys.exit()\n\nwith open(files[0]) as fp:\n    lines = [json.loads(l) for l in fp if l.strip()]\n\nti = to = cr = cc = 0\nturns = []\nfor i, line in enumerate(lines):\n    if line.get('type') == 'assistant':\n        u = line.get('message', {}).get('usage', {})\n        if not u: continue\n        inp = u.get('input_tokens', 0)\n        ti += inp; to += u.get('output_tokens', 0)\n        cr += u.get('cache_read_input_tokens', 0)\n        cc += u.get('cache_creation_input_tokens', 0)\n        prompt = ''\n        for j in range(i-1, -1, -1):\n            if lines[j].get('type') == 'user':\n                c = lines[j].get('message', {}).get('content', '')\n                prompt = (c if isinstance(c, str) else next((x.get('text','') for x in c if isinstance(x,dict) and x.get('type')=='text'), ''))[:80]\n                break\n        turns.append((inp, prompt))\n\ntotal = ti + cr + cc\nhit = cr \u002F total * 100 if total else 0\nprint(f'input={ti} output={to} cache_read={cr} cache_create={cc} hit={hit:.0f} turns={len(turns)}')\nturns.sort(reverse=True)\nfor idx, (tok, p) in enumerate(turns[:3]):\n    print(f'top{idx+1}={tok}|{p}')\n\"\n```\n\nParse the output and include token stats in the session narrative. Then:\n\n**Generate `session-history\u002FYYYY-MM-DD-HHMM-proof.html`** — write a self-contained HTML file. Structure and class names are fixed — do not rename or reorder sections.\n\n**Fixed CSS tokens (use exactly):**\n- Background: `#0d1117`, Card: `#161b22`, Border: `#30363d`\n- Font: `font-family: 'Courier New', monospace`\n- Frame score colors: `high` → `#3fb950`, `low` → `#f85149`, pruned → `#8b949e`\n- AI line colors: `ai-identified` → `#a371f7`, `ai-suggested` → `#d29922`, `ai-developer` → `#3fb950`\n\n**Fixed HTML structure (class names must match exactly):**\n```\n\u003Cdiv class=\"header\">\n  \u003Cdiv class=\"header-top\">\n    \u003Cdiv class=\"project-name\">\n    \u003Cspan class=\"badge\">                    \u003C!-- intent class -->\n  \u003Cdiv class=\"meta-row\">                    \u003C!-- date, branch, signal level text -->\n  \u003Cdiv class=\"signal-container\">\n    \u003Cdiv class=\"signal-label\">\n    \u003Cdiv class=\"signal-track\">\n      \u003Cdiv class=\"signal-fill\">             \u003C!-- width % driven by signal score -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- frames -->\n  \u003Cdiv class=\"section-title\"> ... \u003Cspan class=\"count\">Layer 02 · ADHD tree-of-thought\u003C\u002Fspan>\n  \u003Cdiv class=\"frames-grid\">\n    \u003Cdiv class=\"frame-card\">               \u003C!-- pruned: class=\"frame-card pruned\" -->\n      \u003Cdiv class=\"frame-label\">            \u003C!-- Frame A \u002F B \u002F C \u002F D -->\n      \u003Cdiv class=\"frame-name\">\n      \u003Cdiv class=\"frame-score high|low\">   \u003C!-- score value -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- decisions — skip section if none -->\n  \u003Cdiv class=\"section-title\"> ... \u003Cspan class=\"count\">N recorded\u003C\u002Fspan>\n  \u003Cdiv class=\"decision-card\">              \u003C!-- one per DECISIONS.md entry -->\n    \u003Cdiv class=\"decision-header\">\n      \u003Cdiv class=\"decision-title\">\n      \u003Cdiv class=\"decision-date\">\n    \u003Cdiv class=\"decision-fields\">\n      \u003Cdiv class=\"field-row\">\n        \u003Cdiv class=\"field-label\">          \u003C!-- Context \u002F Decision \u002F Alternatives \u002F Reasoning -->\n        \u003Cdiv class=\"field-value\">\n      \u003Cdiv class=\"field-row\">              \u003C!-- AI contribution row -->\n        \u003Cdiv class=\"field-label\">AI contribution\u003C\u002Fdiv>\n        \u003Cdiv class=\"field-value\">\n          \u003Cdiv class=\"ai-block\">\n            \u003Cdiv class=\"ai-line ai-identified|ai-suggested|ai-developer\">\n              \u003Cspan class=\"tag\">IDENTIFIED|SUGGESTED|DEV-DRIVEN\u003C\u002Fspan>\n      \u003Cdiv class=\"field-row\">              \u003C!-- Outcome row -->\n        \u003Cdiv class=\"field-label\">Outcome\u003C\u002Fdiv>\n        \u003Cdiv class=\"field-value\">\n          \u003Cspan class=\"outcome-badge outcome-implemented|outcome-pending|outcome-reversed\">\n\n\u003Cdiv class=\"section\">                       \u003C!-- session narrative -->\n  \u003Cdiv class=\"section-title\">Session narrative\u003C\u002Fdiv>\n  \u003Cdiv class=\"narrative-grid\">\n    \u003Cdiv class=\"narrative-card\">           \u003C!-- What shipped -->\n    \u003Cdiv class=\"narrative-card\">           \u003C!-- What was figured out -->\n    \u003Cdiv class=\"narrative-card\">           \u003C!-- Where it got hard -->\n    \u003Cdiv class=\"narrative-card\">           \u003C!-- Next steps inferred -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- AI contribution summary -->\n  \u003Cdiv class=\"section-title\">AI contribution summary\u003C\u002Fdiv>\n  \u003Cdiv class=\"narrative-card\">             \u003C!-- Frame D synthesis paragraph -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- token usage -->\n  \u003Cdiv class=\"section-title\">Token usage\u003C\u002Fdiv>\n  \u003Cdiv class=\"narrative-card\">             \u003C!-- cache hit rate bar + top turns + optimization note -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- worklog tail -->\n  \u003Cdiv class=\"section-title\"> ... \u003Cspan class=\"count\">last N entries\u003C\u002Fspan>\n  \u003Cdiv class=\"worklog-entry\">              \u003C!-- one per recent WORKLOG line -->\n\n\u003Cdiv class=\"footer\">                        \u003C!-- last commit hash · \"Generated by collab-proof · timestamp\" -->\n```\n\nWrite the HTML using bash:\n```bash\ncat > session-history\u002FYYYY-MM-DD-HHMM-proof.html \u003C\u003C 'HTMLEOF'\n\u003C!DOCTYPE html>\n... (full HTML with inline CSS, no external resources)\nHTMLEOF\n```\n\nAfter writing, show: `open session-history\u002FYYYY-MM-DD-HHMM-proof.html`\n\n---\n\n### If MEDIUM signal\n\nAppend one line to `WORKLOG.md` only:\n```\nYYYY-MM-DD HH:MM | [intent] | MEDIUM | D:[score] | cache:[hit%]% | tok:[total] | \u003Cverb phrase>\n```\n\n---\n\n### If LOW signal\n\nTell user: \"Signal: LOW — Routine session, nothing recorded.\"\n\n---\n\n## Honesty rules\n\n- Never invent decisions not in the conversation or implied by the diff\n- \"inferred:\" prefix when reasoning is reconstructed\n- Frame D must be calibrated — neither overclaim nor dismiss\n- If all frames score \u003C 0.4 → write nothing\n\n---\n\n## PreCompact snapshot (context compaction defence)\n\nWhen context compaction is about to happen (triggered by the PreCompact hook),\nrun a lightweight mid-session checkpoint before context is lost:\n\n1. Compute current Layer 01 signal level from available context\n2. Score all four frames against what's visible now\n3. Write a snapshot to `session-history\u002F.tmp-TIMESTAMP.json`:\n\n```json\n{\n  \"timestamp\": \"YYYY-MM-DD HH:MM:SS\",\n  \"trigger\": \"pre-compact\",\n  \"signal\": \"HIGH \u002F MEDIUM \u002F LOW\",\n  \"frames\": { \"technical\": 0.0, \"uncertainty\": 0.0, \"fork\": 0.0, \"ai_contribution\": 0.0 },\n  \"intent\": \"FEATURE_BUILDING\",\n  \"key_moments\": [\n    \"one-line description of the most important decision or finding so far\"\n  ]\n}\n```\n\nWhen `\u002Fcollab-proof` runs at session end:\n- Read all `session-history\u002F.tmp-*.json` files\n- Merge frame scores (take max per frame across all snapshots)\n- Combine `key_moments` arrays — these preserve tradeoff discussions that were compacted away\n- Delete `.tmp-*.json` files after merging\n","# collab-proof\n\nSurfaces AI collaboration evidence the developer didn't consciously record.\nVela 3-layer pipeline × ADHD 4-frame reasoning — prompt-native, zero dependencies.\n\n---\n\n## Layer 01 — Signal detection\n\nRun `git log --oneline -10` and `git diff --stat HEAD~3..HEAD` first.\n\nClassify signal level using this rubric (pick the highest that matches):\n\n**HIGH** → full artifacts (DECISIONS.md + session-history + WORKLOG + HTML)\n- New file created, OR\n- 4+ files modified, OR\n- Explicit option comparison in conversation (\"vs\", \"instead of\", \"chose X over Y\"), OR\n- Design discussion lasted 15+ exchanges, OR\n- **Bug with root cause diagnosis** — conversation contains WHY the bug happened\n  (not just \"fixed X\" but \"the bug was caused by Y because Z\")\n\n**BUG_FIXING special rule** — override file count:\nEven if only 1 file changed, classify as HIGH if the conversation contains:\n- Root cause explanation (\"the bug was...\", \"this happened because...\", \"the issue is...\")\n- Diagnosis process (\"I checked...\", \"turned out...\", \"the problem was...\")\n- Fix rationale (\"chose this approach because...\", \"instead of X, used Y because...\")\nFile count doesn't matter for bugs — a well-diagnosed single-file fix is more valuable\nthan a 10-file feature with no discussion.\n\n**MEDIUM** → WORKLOG only\n- 1–3 files modified with no root cause discussion, OR\n- Minor feature added, no tradeoffs discussed\n\n**LOW** → silence, tell user \"Routine session — nothing recorded.\"\n- No code changes, only planning\u002Fdiscussion, OR\n- Single trivial change with no context (\"change this text\", \"fix typo\", \"rename variable\")\n\nShow the user: `Signal: HIGH \u002F MEDIUM \u002F LOW — [one-line reason]`\n\n---\n\n## Layer 02 — WorkIntentClassifier\n\nRun all four frames simultaneously against conversation context + git diff.\nScore each frame 0.0–1.0 using the rubric below. Then apply pruning and classification rules.\n\n### Frame scoring rubric\n\n**Frame A — Technical** (code churn complexity)\n- `1.0` New module\u002Ffile created, complex logic added (state machine, Lua script, novel algorithm)\n- `0.5` Existing function logic modified, simple API endpoint added\n- `0.1` Typo fix, comment change, plain text edit\n\n**Frame B — Uncertainty** (developer doubt signals)\n- `1.0` Code written then fully rolled back, explicit doubt expressed (\"이게 맞나?\", \"동작 안 하네\"), `git revert`\n- `0.5` Advice sought from Claude mid-implementation, 2+ revision requests on same area\n- `0.0` Uninterrupted directive execution — developer knew exactly what to build\n\n**Frame C — Fork** (decision branch presence)\n- `1.0` Two or more alternatives explicitly compared in conversation (A vs B)\n- `0.5` No explicit comparison but tradeoff mentioned (performance vs readability)\n- `0.0` Single standard approach applied, no alternatives considered\n\n**Frame D — AI contribution** (Claude's actual impact)\n- `1.0` Claude identified a bug\u002Fedge case the developer hadn't noticed and proposed the fix\n- `0.6` Claude generated structural boilerplate\u002Fskeleton that significantly accelerated execution\n- `0.2` Claude reformatted or transcribed developer-directed code without independent contribution\n\n---\n\n### Pruning rule\n\nPrune any frame scoring \u003C 0.4.\n\n**Exception — High-Speed Execution Guard:**\nIf `Frame A >= 0.8` AND `Frame D >= 0.6`, do NOT prune and do NOT silence the session,\neven if Frame B = 0.0 and Frame C = 0.0.\nThis is a boilerplate-heavy FEATURE_BUILDING session. Classify immediately as `FEATURE_BUILDING` with `HIGH` signal.\nRationale: zero uncertainty in a fast-moving session is a feature, not a reason to discard it.\n\n---\n\n### Intent classification\n\n| Surviving frames | Dominant intent | Meaning |\n|---|---|---|\n| A high + D mid-high (B, C low) | `FEATURE_BUILDING` | High-velocity feature generation, Claude scaffolding |\n| B high + A\u002FD high | `BUG_FIXING` or `STUCK` | Active debugging or unresolved looping |\n| C high + A high | `REFACTORING` or `EXPLORING` | Architecture exploration, weighing alternatives |\n| All frames \u003C 0.4 | `FLOW_STATE` or LOW | Routine typing, silence unless Layer 01 was HIGH |\n\nIf multiple intents tie, pick the one with the highest combined frame score.\nRecord the runner-up — it belongs in the session narrative.\n\n---\n\n### Internal output format\n\nBefore proceeding to Layer 03, resolve to this structure (show it to the user):\n\n```json\n{\n  \"frames\": {\n    \"technical\": 0.0,\n    \"uncertainty\": 0.0,\n    \"fork\": 0.0,\n    \"ai_contribution\": 0.0\n  },\n  \"pruned\": [\"list of pruned frame names\"],\n  \"intent\": \"FEATURE_BUILDING\",\n  \"signal\": \"HIGH\",\n  \"calibration_note\": \"one sentence explaining any exception rule applied\"\n}\n```\n\n---\n\n## Layer 03 — Output\n\n### If HIGH signal\n\n**Append to `DECISIONS.md`** — one entry per real fork (Frame C must confirm alternatives existed):\n\n```markdown\n## [YYYY-MM-DD] \u003Ctitle>\n\n**Context**: [Frame A — what forced this choice]\n**Decision**: what was chosen\n**Alternatives considered**: [Frame C — road not taken]\n**Reasoning**: why — prefix \"inferred:\" if reconstructed from context\n**AI contribution**:\n  - Identified: [Frame D — something developer missed]\n  - Suggested: [Frame D — approach or alternative]\n  - Developer-driven: [what the developer decided independently]\n**Intent class**: [from Layer 02]\n**Signal score**: HIGH\n**Outcome**: implemented | pending | reversed\n```\n\nIf no real fork existed → write nothing. Never fabricate decisions.\n\n**BUG_FIXING intent: use this format instead:**\n\n```markdown\n## [YYYY-MM-DD] \u003Cbug title>\n\n**Root cause**: what actually caused the bug — the WHY, not just the what\n**Symptom**: what the developer observed\n**Fix**: what was changed\n**Why this fix**: rationale — inferred if not stated explicitly\n**Alternative fixes considered**: other approaches discussed (if any)\n**AI contribution**:\n  - Identified: [Frame D — did Claude spot the root cause?]\n  - Suggested: [Frame D — fix approach or diagnostic step]\n  - Developer-driven: [what the developer diagnosed\u002Fdecided independently]\n**Intent class**: BUG_FIXING\n**Signal score**: HIGH\n**Outcome**: fixed | workaround | deferred\n```\n\n**Create `session-history\u002FYYYY-MM-DD-HHMM.md`**:\n\n```markdown\n# Session [YYYY-MM-DD HH:MM]\n\n**Intent**: [class] (runner-up: [class if any])\n**Signal**: HIGH\n**Frames active**: A ([score]) \u002F B ([score]) \u002F C ([score]) \u002F D ([score])\n\n## What shipped\n[grounded in git log]\n\n## What was figured out\n[Frame B + C — the reasoning, tradeoffs, debugging — what developers forget]\n\n## Decisions made this session\n[refs to DECISIONS.md entries]\n\n## Where it got hard\n[Frame B findings — uncertainty, reverts, EXPLORING\u002FSTUCK signals]\n\n## AI contribution summary\n[Frame D synthesis — one honest paragraph, calibrated]\n\n## Next steps inferred\n[what's obviously incomplete]\n```\n\n**Append to `WORKLOG.md`**:\n```\nYYYY-MM-DD HH:MM | [intent] | HIGH | D:[score] | cache:[hit%]% | tok:[total] | \u003Cverb phrase> — \u003Cwhy it mattered>\n```\n\nFields:\n- `D:[score]` — Frame D AI contribution score (0.0–1.0)\n- `cache:[hit%]%` — cache hit rate from token analysis (or `cache:n\u002Fa` if no data)\n- `tok:[total]` — total tokens this session (input + cache_read + cache_create + output, in K e.g. `45K`)\n- verb phrase — what shipped, grounded in git log\n\n**Collect token usage** (bash — run this and capture output):\n```bash\npython3 -c \"\nimport json, sys\nfrom pathlib import Path\n\nprojects = Path.home() \u002F '.claude\u002Fprojects'\nfiles = sorted(projects.rglob('*.jsonl'), key=lambda f: f.stat().st_mtime, reverse=True)\nif not files:\n    print('no_data'); sys.exit()\n\nwith open(files[0]) as fp:\n    lines = [json.loads(l) for l in fp if l.strip()]\n\nti = to = cr = cc = 0\nturns = []\nfor i, line in enumerate(lines):\n    if line.get('type') == 'assistant':\n        u = line.get('message', {}).get('usage', {})\n        if not u: continue\n        inp = u.get('input_tokens', 0)\n        ti += inp; to += u.get('output_tokens', 0)\n        cr += u.get('cache_read_input_tokens', 0)\n        cc += u.get('cache_creation_input_tokens', 0)\n        prompt = ''\n        for j in range(i-1, -1, -1):\n            if lines[j].get('type') == 'user':\n                c = lines[j].get('message', {}).get('content', '')\n                prompt = (c if isinstance(c, str) else next((x.get('text','') for x in c if isinstance(x,dict) and x.get('type')=='text'), ''))[:80]\n                break\n        turns.append((inp, prompt))\n\ntotal = ti + cr + cc\nhit = cr \u002F total * 100 if total else 0\nprint(f'input={ti} output={to} cache_read={cr} cache_create={cc} hit={hit:.0f} turns={len(turns)}')\nturns.sort(reverse=True)\nfor idx, (tok, p) in enumerate(turns[:3]):\n    print(f'top{idx+1}={tok}|{p}')\n\"\n```\n\nParse the output and include token stats in the session narrative. Then:\n\n**Generate `session-history\u002FYYYY-MM-DD-HHMM-proof.html`** — write a self-contained HTML file. Structure and class names are fixed — do not rename or reorder sections.\n\n**Fixed CSS tokens (use exactly):**\n- Background: `#0d1117`, Card: `#161b22`, Border: `#30363d`\n- Font: `font-family: 'Courier New', monospace`\n- Frame score colors: `high` → `#3fb950`, `low` → `#f85149`, pruned → `#8b949e`\n- AI line colors: `ai-identified` → `#a371f7`, `ai-suggested` → `#d29922`, `ai-developer` → `#3fb950`\n\n**Fixed HTML structure (class names must match exactly):**\n```\n\u003Cdiv class=\"header\">\n  \u003Cdiv class=\"header-top\">\n    \u003Cdiv class=\"project-name\">\n    \u003Cspan class=\"badge\">                    \u003C!-- intent class -->\n  \u003Cdiv class=\"meta-row\">                    \u003C!-- date, branch, signal level text -->\n  \u003Cdiv class=\"signal-container\">\n    \u003Cdiv class=\"signal-label\">\n    \u003Cdiv class=\"signal-track\">\n      \u003Cdiv class=\"signal-fill\">             \u003C!-- width % driven by signal score -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- frames -->\n  \u003Cdiv class=\"section-title\"> ... \u003Cspan class=\"count\">Layer 02 · ADHD tree-of-thought\u003C\u002Fspan>\n  \u003Cdiv class=\"frames-grid\">\n    \u003Cdiv class=\"frame-card\">               \u003C!-- pruned: class=\"frame-card pruned\" -->\n      \u003Cdiv class=\"frame-label\">            \u003C!-- Frame A \u002F B \u002F C \u002F D -->\n      \u003Cdiv class=\"frame-name\">\n      \u003Cdiv class=\"frame-score high|low\">   \u003C!-- score value -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- decisions — skip section if none -->\n  \u003Cdiv class=\"section-title\"> ... \u003Cspan class=\"count\">N recorded\u003C\u002Fspan>\n  \u003Cdiv class=\"decision-card\">              \u003C!-- one per DECISIONS.md entry -->\n    \u003Cdiv class=\"decision-header\">\n      \u003Cdiv class=\"decision-title\">\n      \u003Cdiv class=\"decision-date\">\n    \u003Cdiv class=\"decision-fields\">\n      \u003Cdiv class=\"field-row\">\n        \u003Cdiv class=\"field-label\">          \u003C!-- Context \u002F Decision \u002F Alternatives \u002F Reasoning -->\n        \u003Cdiv class=\"field-value\">\n      \u003Cdiv class=\"field-row\">              \u003C!-- AI contribution row -->\n        \u003Cdiv class=\"field-label\">AI contribution\u003C\u002Fdiv>\n        \u003Cdiv class=\"field-value\">\n          \u003Cdiv class=\"ai-block\">\n            \u003Cdiv class=\"ai-line ai-identified|ai-suggested|ai-developer\">\n              \u003Cspan class=\"tag\">IDENTIFIED|SUGGESTED|DEV-DRIVEN\u003C\u002Fspan>\n      \u003Cdiv class=\"field-row\">              \u003C!-- Outcome row -->\n        \u003Cdiv class=\"field-label\">Outcome\u003C\u002Fdiv>\n        \u003Cdiv class=\"field-value\">\n          \u003Cspan class=\"outcome-badge outcome-implemented|outcome-pending|outcome-reversed\">\n\n\u003Cdiv class=\"section\">                       \u003C!-- session narrative -->\n  \u003Cdiv class=\"section-title\">Session narrative\u003C\u002Fdiv>\n  \u003Cdiv class=\"narrative-grid\">\n    \u003Cdiv class=\"narrative-card\">           \u003C!-- What shipped -->\n    \u003Cdiv class=\"narrative-card\">           \u003C!-- What was figured out -->\n    \u003Cdiv class=\"narrative-card\">           \u003C!-- Where it got hard -->\n    \u003Cdiv class=\"narrative-card\">           \u003C!-- Next steps inferred -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- AI contribution summary -->\n  \u003Cdiv class=\"section-title\">AI contribution summary\u003C\u002Fdiv>\n  \u003Cdiv class=\"narrative-card\">             \u003C!-- Frame D synthesis paragraph -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- token usage -->\n  \u003Cdiv class=\"section-title\">Token usage\u003C\u002Fdiv>\n  \u003Cdiv class=\"narrative-card\">             \u003C!-- cache hit rate bar + top turns + optimization note -->\n\n\u003Cdiv class=\"section\">                       \u003C!-- worklog tail -->\n  \u003Cdiv class=\"section-title\"> ... \u003Cspan class=\"count\">last N entries\u003C\u002Fspan>\n  \u003Cdiv class=\"worklog-entry\">              \u003C!-- one per recent WORKLOG line -->\n\n\u003Cdiv class=\"footer\">                        \u003C!-- last commit hash · \"Generated by collab-proof · timestamp\" -->\n```\n\nWrite the HTML using bash:\n```bash\ncat > session-history\u002FYYYY-MM-DD-HHMM-proof.html \u003C\u003C 'HTMLEOF'\n\u003C!DOCTYPE html>\n... (full HTML with inline CSS, no external resources)\nHTMLEOF\n```\n\nAfter writing, show: `open session-history\u002FYYYY-MM-DD-HHMM-proof.html`\n\n---\n\n### If MEDIUM signal\n\nAppend one line to `WORKLOG.md` only:\n```\nYYYY-MM-DD HH:MM | [intent] | MEDIUM | D:[score] | cache:[hit%]% | tok:[total] | \u003Cverb phrase>\n```\n\n---\n\n### If LOW signal\n\nTell user: \"Signal: LOW — Routine session, nothing recorded.\"\n\n---\n\n## Honesty rules\n\n- Never invent decisions not in the conversation or implied by the diff\n- \"inferred:\" prefix when reasoning is reconstructed\n- Frame D must be calibrated — neither overclaim nor dismiss\n- If all frames score \u003C 0.4 → write nothing\n\n---\n\n## PreCompact snapshot (context compaction defence)\n\nWhen context compaction is about to happen (triggered by the PreCompact hook),\nrun a lightweight mid-session checkpoint before context is lost:\n\n1. Compute current Layer 01 signal level from available context\n2. Score all four frames against what's visible now\n3. Write a snapshot to `session-history\u002F.tmp-TIMESTAMP.json`:\n\n```json\n{\n  \"timestamp\": \"YYYY-MM-DD HH:MM:SS\",\n  \"trigger\": \"pre-compact\",\n  \"signal\": \"HIGH \u002F MEDIUM \u002F LOW\",\n  \"frames\": { \"technical\": 0.0, \"uncertainty\": 0.0, \"fork\": 0.0, \"ai_contribution\": 0.0 },\n  \"intent\": \"FEATURE_BUILDING\",\n  \"key_moments\": [\n    \"one-line description of the most important decision or finding so far\"\n  ]\n}\n```\n\nWhen `\u002Fcollab-proof` runs at session end:\n- Read all `session-history\u002F.tmp-*.json` files\n- Merge frame scores (take max per frame across all snapshots)\n- Combine `key_moments` arrays — these preserve tradeoff discussions that were compacted away\n- Delete `.tmp-*.json` files after merging\n",{"name":5,"license":14,"description":7},"main","510dd2917e051cc953dc55f56fd6ef442aa01b38","claude-skills\u002Fengineering\u002Fcollab-proof\u002Fskills\u002Fcollab-proof","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi","https:\u002F\u002Fgithub.com\u002Fmne20114-hash","2026-10-28 07:50:31",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add mne20114-hash\u002Fgest35bi --skill collab-proof",{"tool":41,"command":42},"bunx","bunx skills add mne20114-hash\u002Fgest35bi --skill collab-proof",{"tool":44,"command":45},"pnpm","pnpm dlx skills add mne20114-hash\u002Fgest35bi --skill collab-proof","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fengineering\u002Fcollab-proof\u002Fskills\u002Fcollab-proof\u002FSKILL.md",true,[49,55,59,63],{"path":50,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":53,"sourceHtmlUrl":54},"references\u002Fai-collaboration-evidence.md","REFERENCE","参考文档",2990,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fengineering\u002Fcollab-proof\u002Fskills\u002Fcollab-proof\u002Freferences\u002Fai-collaboration-evidence.md",{"path":56,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Fdeveloper-portfolio-proof.md",3311,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fengineering\u002Fcollab-proof\u002Fskills\u002Fcollab-proof\u002Freferences\u002Fdeveloper-portfolio-proof.md",{"path":60,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":61,"sourceHtmlUrl":62},"references\u002Fsession-documentation-patterns.md",3732,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fengineering\u002Fcollab-proof\u002Fskills\u002Fcollab-proof\u002Freferences\u002Fsession-documentation-patterns.md",{"path":64,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Ftamper-evident-proof.md",3407,"https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fengineering\u002Fcollab-proof\u002Fskills\u002Fcollab-proof\u002Freferences\u002Ftamper-evident-proof.md",[68,106,127,150,175,195],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":87,"publishedAt":24},"01M6C27N3H0F9RGG2KASPASH04","syllabus","Generates a curated supplementary reading list from any course syllabus using Consensus academic search. Grill-me intake (syllabus input format + course audience + year range) plus a grouping forcing-options checkpoint before any search runs — so the reading list matches the course's level and recency need. Parses the syllabus to extract topics and learning outcomes, searches Consensus for recent peer-reviewed papers per topic, and produces a professionally formatted .docx with clickable Consensus links, plain-language summaries calibrated to audience level, and Bloom-higher-order discussion questions tied to course learning goals. Use when the user uploads a syllabus, course outline, or curriculum document and wants supplementary readings (e.g., 'create a reading list from this syllabus', 'find recent papers for my course') — even casual mentions with a syllabus attached should trigger this skill.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002FSKILL.md",[74,79,82],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":80,"categoryName":81,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[70,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,23,105],"docx","pr","create","intake","search","audit","integrity","checkpoint","learning","js","format","direct","Rules","find","consensus","list","extract","outcomes",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":116,"publishedAt":24},"01M6C27DMGZ4D6ERNHSVA8H8RJ","pulse","Multi-source recency research skill that takes the pulse of any topic across Reddit, Hacker News, the open web, and optionally X\u002FTwitter within a configurable recent window (default 30 days). Forcing intake clarifies topic specificity, angle (trend\u002Fsentiment\u002Fproblems\u002Fopportunities\u002Fcomparison), time window, and platform scope before searching. Returns a synthesized briefing with citations, engagement metrics, and cross-platform pattern analysis. Use when the user requests multi-source recency intelligence on a topic (e.g., 'pulse on [topic]', 'what's happening with [topic]', 'what are people saying about [topic]', 'current conversation about [topic]', 'take the pulse of [topic]', 'trending: [topic]', 'find me info on [topic]'), and for competitor research, trend discovery, tool comparisons, and audience sentiment analysis.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fpulse\u002Fskills\u002Fpulse\u002FSKILL.md",[112,115],{"categoryNo":113,"categoryName":114,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":80,"categoryName":81,"taxonomyType":77,"taxonomyTypeDesc":78},[108,117,118,89,119,91,93,120,121,94,21,122,123,124,99,100,125,101,126,23],"research","web","sentiment analysis","sentiment","Citations","discovery","open","tool","twitter","user",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":138,"publishedAt":24},"01M6C279M59X635VPD6Y9R616J","patent","Patent prior-art and landscape intelligence skill — not generic patent help. Commits to one of five sub-use-cases via forcing intake (novelty search \u002F freedom-to-operate \u002F competitive landscape \u002F acquisition diligence \u002F litigation prior-art) before any search runs. Searches Google Patents, Espacenet, USPTO, and optionally Lens.org for citation-graph signals. Output is an editable Word document (.docx) with verdict, ranked closest art (claim-text extracted), CPC-class-aware landscape, family-resolved hits, geographic coverage, FTO flags where applicable, strategy recommendations, and full audit log. Use when the user asks for patent searching or analysis (e.g., 'prior art search for [invention]', 'freedom to operate analysis for [product]'). Produces search signal, not legal advice — always recommends consulting a patent attorney before filing or licensing decisions. Trademark, copyright, and trade-secret questions are out of scope.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fpatent\u002Fskills\u002Fpatent\u002FSKILL.md",[133,134,135],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},{"categoryNo":80,"categoryName":81,"taxonomyType":77,"taxonomyTypeDesc":78},{"categoryNo":136,"categoryName":137,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000037","律师与法务",[129,88,89,139,140,141,91,92,93,21,142,143,144,100,145,146,147,148,23,149],"competitive landscape","routing","product","commits","Word","text","acquisition","decisions","strategy","coverage","advice",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":160,"publishedAt":24},"01M6C275RZWNRB3CCB14QQM7ES","notebooklm","Browser automation skill for controlling Google's NotebookLM. Use when the user wants anything done in NotebookLM (e.g., 'open NotebookLM', 'check my [name] notebook', 'ask my notebook about X', 'add [source] to NotebookLM', 'generate a Video Overview from my notebook', 'use NotebookLM Studio'). Handles reading and querying notebooks, adding sources (URLs, text, files, YouTube links, synthesized content), generating Studio outputs (Audio\u002FVideo Overviews, Mind Maps, Reports incl. Briefing Doc\u002FStudy Guide\u002FFAQ, Flashcards, Quiz, slide decks, infographics — discover the exact set from the live Studio panel; the UI evolves fast), and creating new notebooks. Requires browser automation environment — fails gracefully when unavailable.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fnotebooklm\u002Fskills\u002Fnotebooklm\u002FSKILL.md",[156,159],{"categoryNo":157,"categoryName":158,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":80,"categoryName":81,"taxonomyType":77,"taxonomyTypeDesc":78},[152,161,162,117,163,164,165,166,167,168,169,170,123,144,99,171,172,173,174,23],"google","browser automation","automation","generate","browser","fast","SET","doc","Video","Audio","check","ask","environment","overview",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":185,"publishedAt":24},"01M6C2717B0QDJ3Y4PJP77BMW5","litreview","Academic literature orientation skill that searches papers via free keyless APIs (PubMed E-utilities + OpenAlex) by default — with the Consensus MCP as an optional enhancement lane when connected — builds a strategic search plan using PICO (default) or SPIDER \u002F Decomposition \u002F hybrid as fallbacks, and synthesizes findings into a formatted Word (.docx) research guide. Grill-me intake (research question specificity + framework hint + tentative depth) before the recon search; a second forcing checkpoint after Phase 2 confirms framework + sub-areas + depth before searches consume budget. Configurable depth (5\u002F10\u002F20 queries) controls coverage vs. speed. Output is a 'launching pad' — an orientation guide that lets a researcher dive in confidently, not a finished review. Use when the user starts literature-oriented research (e.g., 'litreview on [topic]', 'literature review on [topic]', 'I'm starting a literature review on X', 'I'm writing a paper on X', 'help me research X', 'I'm doing research on X', 'can you help me research X'). Do NOT use for single one-off paper searches wanting a quick list — that's a plain PubMed\u002FOpenAlex (or Consensus) query.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Flitreview\u002Fskills\u002Flitreview\u002FSKILL.md",[181,182,183,184],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},{"categoryNo":113,"categoryName":114,"taxonomyType":77,"taxonomyTypeDesc":78},{"categoryNo":80,"categoryName":81,"taxonomyType":77,"taxonomyTypeDesc":78},{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[177,88,186,187,188,89,91,92,189,190,191,95,192,143,193,100,102,194,148,23],"MCP","writing","review","lane","keyless","literature review","plan","researcher","question",{"skillNo":196,"name":197,"nameZh":6,"description":198,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":199,"categories":200,"keywords":205,"publishedAt":24},"01M6C26X5G3WDVWQ40Y16ZS19F","grants","NIH grant research skill for clinical researchers. Grill-me intake (research idea + career stage + preliminary data + environment + submission posture + known institute targets) locks down the funding strategy before any search runs. Runs a 5-facet Consensus positioning analysis (with draft Significance\u002FInnovation language), maps the research to the right NIH institutes and study sections via RePORTER, finds NOSIs and funded overlap, and produces an editable Word document (.docx) with budget\u002Fscope-aware mechanism recommendations, submission timelines, and a mandatory program officer recommendation. Use when the user asks about research funding or makes any grant-related request (e.g., 'grants for [topic]', 'find grants for my research idea', 'what grants match my research', 'help me find NIH funding', 'grant opportunities for my research'). NIH-only scope — non-NIH funders (PCORI, DOD CDMRP, VA, foundations) are out of scope and flagged at intake.","https:\u002F\u002Fgithub.com\u002Fmne20114-hash\u002Fgest35bi\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fresearch\u002Fgrants\u002Fskills\u002Fgrants\u002FSKILL.md",[201,202,203,204],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},{"categoryNo":113,"categoryName":114,"taxonomyType":77,"taxonomyTypeDesc":78},{"categoryNo":80,"categoryName":81,"taxonomyType":77,"taxonomyTypeDesc":78},{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[197,88,117,89,206,91,92,93,207,208,94,21,143,100,101,102,147,173,23,209],"help","data","Budget","innovation"]