[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6K5ZAD4PR4CB51T8MNP1J1W":3,"skill-same:01M6K5ZAD4PR4CB51T8MNP1J1W":61},{"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":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M6K5ZAD4PR4CB51T8MNP1J1W","conversation-compiler",null,"VCC (View-oriented Conversation Compiler) documentation. Compile Claude Code JSONL logs into adaptive views.","lllyasviel\u002FVCC","lllyasviel","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19834515?v=4","01M6K5Z8H1NZMPBVPC0CXV7Z1E","01M6K5Z8N6FEK4PQYX9GVKYC10",446,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flllyasviel\u002FVCC\u002Fblob\u002Fmain\u002Fskills\u002Fconversation-compiler\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27],"compiler","conversation","conversation compiler","documentation","code","compile","logs","view","jsonl","adaptive","2026-11-10 10:12:30",false,"---\nname: conversation-compiler\ndescription: \"VCC (View-oriented Conversation Compiler) documentation. Compile Claude Code JSONL logs into adaptive views.\"\n---\n\n# VCC — View-oriented Conversation Compiler\n\nCompile Claude Code JSONL logs into adaptive views for reading, searching, and context recovery.\n\n## Usage\n\n```bash\npython \"path\u002Fto\u002FVCC.py\" \u003Cinput.jsonl ...> [options]\n```\n\n| Option | Description |\n|--------|-------------|\n| `-o \u003Cdir>` | Output directory (default: same as input) |\n| `-t \u003CN>` | Token truncation limit (default 128) |\n| `-tu \u003CN>` | User message token limit (default 256) |\n| `--grep \u003Cpattern>` | Regex search pattern (Python `re` — use `a|b`, NOT `a\\|b`) |\n\nThis tool also supports multi-file processing:\n\n```bash\ncd \"\u002Fpath\u002Fto\u002Ftarget\u002Ffolder\" && python \"path\u002Fto\u002FVCC.py\" *.jsonl --grep \"keyword\"\n```\n\n## Output Files\n\n| File | When | Description |\n|------|------|-------------|\n| `.txt` | Always | Full transcript, lossless |\n| `.min.txt` | Always | Brief overview |\n| `.view.txt` | `--grep` only | Search-focused view |\n| stdout | `--grep` only | Search results with block-level line range references |\n\n## Rules\n\n- **Forward slashes only in bash commands.** Backslashes in double quotes are escape characters — `\\U`, `\\l`, `\\.` get silently mangled. Use `\"C:\u002FUsers\u002F...\"` not `\"C:\\Users\\...\"`. This applies to ALL bash commands (not just this skill), on ALL platforms (Windows and Linux alike).\n- Do NOT use `-o` unless the user explicitly requests an output directory. By default, compiled files are written next to the input JSONL — this is the intended behavior.\n- Do NOT clean up compiled output files after use. Leave them in place unless the user explicitly asks to clean up.\n\n## Workflow\n\n**1. Compile**\n\n```bash\npython \"path\u002Fto\u002FVCC.py\" \"path\u002Fto\u002Fconversation.jsonl\"\n```\n\nProduces `.txt` + `.min.txt` next to the input file. Long conversations are automatically split into numbered chunks. The console output lists every produced file with line\u002Fword counts — read it to understand the conversation's size and structure before proceeding:\n\n```\nconversation_1.txt  (2808 lines, 34545 words)\nconversation_2.txt  (9622 lines, 116015 words)\nconversation_3.txt  (3242 lines, 37946 words)\nconversation_1.min.txt  (101 lines, 1572 words)\nconversation_2.min.txt  (811 lines, 9504 words)\nconversation_3.min.txt  (205 lines, 3340 words)\n```\n\nChunks are numbered chronologically — higher numbers are more recent. (During `\u002Frecall`, the last chunk is the current conversation; the second-to-last is likely where the previous session's context ends.) Use this to gauge how many chunks exist and how large each is, so you can target your `.min.txt` reads and `--grep` searches to the right chunks.\n\n**2. Read `.min.txt`**\n\nThe `.min.txt` is a scannable outline: user\u002Fassistant text is kept (truncated), tool calls collapse to one-line summaries with line references back to `.txt`.\n\n```\n[user]\n\nTake a look!\n\n[assistant]\n\nLet me take a look.\n\n* Read \"code.py\" (a_1.txt:19-21,24-34)\n```\n\nEach `*` line shows the tool name, key parameter, and two `.txt` line ranges: the call (19-21) and the result (24-34). Read these ranges in `.txt` for full details.\n\n**3. Search with `--grep`**\n\nAlways use `--grep`, never system grep nor your embedded Grep tool. This script's `--grep` returns important block-level line RANGES that no other grep tools can provide. The output paths are relative to CWD, so `cd` close to the target first to keep outputs short and save tokens.\n\n```bash\ncd \"\u002Fpath\u002Fto\u002Ftarget\u002Ffolder\" && python \"path\u002Fto\u002FVCC.py\" \"path\u002Fto\u002Fconversation.jsonl\" --grep \"keyword\"\n```\n\nStdout example (`#` prefix = shortened filename)：\n\n```\n(#752a87.txt:L67-L81) [assistant]      →  .txt lines 67-81\n  77: one matched line ...             →  .txt line 77\n```\n\nOptionally read `.view.txt` for focused search view.\n\n**4. Jump to `.txt`**\n\nAll line references point to `.txt`. Read the referenced range for full context. Remember to read a bit more lines before and after the referenced range to get more context.\n\n# SKILLs\n\n## \u002Freadchat — Read a specific conversation log\n\n**Trigger**: The user wants to read a specific JSONL conversation log.\n\n**Action**: Follow the Workflow above with the user-specified filenames or requests.\n\n## \u002Fsearchchat — Search across conversation logs\n\n**Trigger**: The user wants to search across conversation logs in `~\u002F.claude\u002Fprojects\u002F`.\n\n**Action**:\n\n1. `ls ~\u002F.claude\u002Fprojects\u002F` — browse project directories, narrow the search area.\n2. `cd ~\u002F.claude\u002Fprojects\u002F\u003Cproject> && python \"absolute\u002Fpath\u002Fto\u002FVCC.py\" *.jsonl --grep \"keyword\"` — search top-level conversations first.\n3. If no results: `cd ~\u002F.claude\u002Fprojects\u002F\u003Cproject> && python \"absolute\u002Fpath\u002Fto\u002FVCC.py\" **\u002F*.jsonl --grep \"keyword\"` — expand to subagents.\n\n**Critical**: Always `cd` into the target directory first, then use VCC globs — a single `cd && python VCC.py \u003Cglob> --grep` is the correct pattern. Without `cd`, grep output contains full absolute paths instead of short relative paths, wasting tokens. All content search on JSONL must use VCC's `--grep`, never system grep or the embedded Grep tool — VCC's `--grep` returns block-level line ranges with role tags that no other grep can provide.\n\n## \u002Frecall — Recover context from a previous conversation\n\n**Trigger**: The conversation opens with a context-continuation summary (\"This session is being continued from a previous conversation...\"), or the user says `\u002Frecall`.\n\n**Action**:\n\n1. **Find JSONL filename** — The continuation message ends with `read the full transcript at: \u003Cpath>.jsonl`. Find that JSONL filename. If no JSONL path is present (e.g. the user invoked `\u002Frecall` manually without a continuation header), use the `\u002Fsearchchat` method to locate the JSONL before proceeding to steps 2–3.\n\n2. **Follow VCC Workflow** — Follow the full Workflow above (compile → read `.min.txt` → `--grep` → jump to `.txt`) with the JSONL file found in step 1. The summary is lossy — only the original JSONL is authoritative.\n\n3. **Verify against current state** — After recovering the conversation, cross-check with reality:\n   - **REALLY read files** — Read all files referenced in the conversation with your Read tool. Pre-loaded content from system-reminders or prior conversation turns does NOT count — it may be truncated, stale, or lossy. You must issue a fresh Read call for each file, even if you believe you already have its content. 99.97% of the time, the user has externally modified nearly every file between sessions. If you skip reading and miss their external changes, your failure rate is effectively 100%.\n   - **Key details** — Identify specific values, paths, configs, and logic mentioned in the conversation. Compare against the actual files to catch drift or errors.\n   - **Understand the journey** — Trace the user's intent, decision sequence, and direction changes. Understand not just what was done, but how and why they got there.\n","# VCC — View-oriented Conversation Compiler\n\nCompile Claude Code JSONL logs into adaptive views for reading, searching, and context recovery.\n\n## Usage\n\n```bash\npython \"path\u002Fto\u002FVCC.py\" \u003Cinput.jsonl ...> [options]\n```\n\n| Option | Description |\n|--------|-------------|\n| `-o \u003Cdir>` | Output directory (default: same as input) |\n| `-t \u003CN>` | Token truncation limit (default 128) |\n| `-tu \u003CN>` | User message token limit (default 256) |\n| `--grep \u003Cpattern>` | Regex search pattern (Python `re` — use `a|b`, NOT `a\\|b`) |\n\nThis tool also supports multi-file processing:\n\n```bash\ncd \"\u002Fpath\u002Fto\u002Ftarget\u002Ffolder\" && python \"path\u002Fto\u002FVCC.py\" *.jsonl --grep \"keyword\"\n```\n\n## Output Files\n\n| File | When | Description |\n|------|------|-------------|\n| `.txt` | Always | Full transcript, lossless |\n| `.min.txt` | Always | Brief overview |\n| `.view.txt` | `--grep` only | Search-focused view |\n| stdout | `--grep` only | Search results with block-level line range references |\n\n## Rules\n\n- **Forward slashes only in bash commands.** Backslashes in double quotes are escape characters — `\\U`, `\\l`, `\\.` get silently mangled. Use `\"C:\u002FUsers\u002F...\"` not `\"C:\\Users\\...\"`. This applies to ALL bash commands (not just this skill), on ALL platforms (Windows and Linux alike).\n- Do NOT use `-o` unless the user explicitly requests an output directory. By default, compiled files are written next to the input JSONL — this is the intended behavior.\n- Do NOT clean up compiled output files after use. Leave them in place unless the user explicitly asks to clean up.\n\n## Workflow\n\n**1. Compile**\n\n```bash\npython \"path\u002Fto\u002FVCC.py\" \"path\u002Fto\u002Fconversation.jsonl\"\n```\n\nProduces `.txt` + `.min.txt` next to the input file. Long conversations are automatically split into numbered chunks. The console output lists every produced file with line\u002Fword counts — read it to understand the conversation's size and structure before proceeding:\n\n```\nconversation_1.txt  (2808 lines, 34545 words)\nconversation_2.txt  (9622 lines, 116015 words)\nconversation_3.txt  (3242 lines, 37946 words)\nconversation_1.min.txt  (101 lines, 1572 words)\nconversation_2.min.txt  (811 lines, 9504 words)\nconversation_3.min.txt  (205 lines, 3340 words)\n```\n\nChunks are numbered chronologically — higher numbers are more recent. (During `\u002Frecall`, the last chunk is the current conversation; the second-to-last is likely where the previous session's context ends.) Use this to gauge how many chunks exist and how large each is, so you can target your `.min.txt` reads and `--grep` searches to the right chunks.\n\n**2. Read `.min.txt`**\n\nThe `.min.txt` is a scannable outline: user\u002Fassistant text is kept (truncated), tool calls collapse to one-line summaries with line references back to `.txt`.\n\n```\n[user]\n\nTake a look!\n\n[assistant]\n\nLet me take a look.\n\n* Read \"code.py\" (a_1.txt:19-21,24-34)\n```\n\nEach `*` line shows the tool name, key parameter, and two `.txt` line ranges: the call (19-21) and the result (24-34). Read these ranges in `.txt` for full details.\n\n**3. Search with `--grep`**\n\nAlways use `--grep`, never system grep nor your embedded Grep tool. This script's `--grep` returns important block-level line RANGES that no other grep tools can provide. The output paths are relative to CWD, so `cd` close to the target first to keep outputs short and save tokens.\n\n```bash\ncd \"\u002Fpath\u002Fto\u002Ftarget\u002Ffolder\" && python \"path\u002Fto\u002FVCC.py\" \"path\u002Fto\u002Fconversation.jsonl\" --grep \"keyword\"\n```\n\nStdout example (`#` prefix = shortened filename)：\n\n```\n(#752a87.txt:L67-L81) [assistant]      →  .txt lines 67-81\n  77: one matched line ...             →  .txt line 77\n```\n\nOptionally read `.view.txt` for focused search view.\n\n**4. Jump to `.txt`**\n\nAll line references point to `.txt`. Read the referenced range for full context. Remember to read a bit more lines before and after the referenced range to get more context.\n\n# SKILLs\n\n## \u002Freadchat — Read a specific conversation log\n\n**Trigger**: The user wants to read a specific JSONL conversation log.\n\n**Action**: Follow the Workflow above with the user-specified filenames or requests.\n\n## \u002Fsearchchat — Search across conversation logs\n\n**Trigger**: The user wants to search across conversation logs in `~\u002F.claude\u002Fprojects\u002F`.\n\n**Action**:\n\n1. `ls ~\u002F.claude\u002Fprojects\u002F` — browse project directories, narrow the search area.\n2. `cd ~\u002F.claude\u002Fprojects\u002F\u003Cproject> && python \"absolute\u002Fpath\u002Fto\u002FVCC.py\" *.jsonl --grep \"keyword\"` — search top-level conversations first.\n3. If no results: `cd ~\u002F.claude\u002Fprojects\u002F\u003Cproject> && python \"absolute\u002Fpath\u002Fto\u002FVCC.py\" **\u002F*.jsonl --grep \"keyword\"` — expand to subagents.\n\n**Critical**: Always `cd` into the target directory first, then use VCC globs — a single `cd && python VCC.py \u003Cglob> --grep` is the correct pattern. Without `cd`, grep output contains full absolute paths instead of short relative paths, wasting tokens. All content search on JSONL must use VCC's `--grep`, never system grep or the embedded Grep tool — VCC's `--grep` returns block-level line ranges with role tags that no other grep can provide.\n\n## \u002Frecall — Recover context from a previous conversation\n\n**Trigger**: The conversation opens with a context-continuation summary (\"This session is being continued from a previous conversation...\"), or the user says `\u002Frecall`.\n\n**Action**:\n\n1. **Find JSONL filename** — The continuation message ends with `read the full transcript at: \u003Cpath>.jsonl`. Find that JSONL filename. If no JSONL path is present (e.g. the user invoked `\u002Frecall` manually without a continuation header), use the `\u002Fsearchchat` method to locate the JSONL before proceeding to steps 2–3.\n\n2. **Follow VCC Workflow** — Follow the full Workflow above (compile → read `.min.txt` → `--grep` → jump to `.txt`) with the JSONL file found in step 1. The summary is lossy — only the original JSONL is authoritative.\n\n3. **Verify against current state** — After recovering the conversation, cross-check with reality:\n   - **REALLY read files** — Read all files referenced in the conversation with your Read tool. Pre-loaded content from system-reminders or prior conversation turns does NOT count — it may be truncated, stale, or lossy. You must issue a fresh Read call for each file, even if you believe you already have its content. 99.97% of the time, the user has externally modified nearly every file between sessions. If you skip reading and miss their external changes, your failure rate is effectively 100%.\n   - **Key details** — Identify specific values, paths, configs, and logic mentioned in the conversation. Compare against the actual files to catch drift or errors.\n   - **Understand the journey** — Trace the user's intent, decision sequence, and direction changes. Understand not just what was done, but how and why they got there.\n",{"name":5,"description":7},"main","b962af2d6644882486d74ee8bd4e18a299602445","skills\u002Fconversation-compiler",32,"https:\u002F\u002Fgithub.com\u002Flllyasviel\u002FVCC","https:\u002F\u002Fgithub.com\u002Flllyasviel","Lvmin Zhang (Lyumin Zhang)\r\n\r\n","2026-05-03 09:12:26",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add lllyasviel\u002FVCC --skill conversation-compiler",{"tool":47,"command":48},"bunx","bunx skills add lllyasviel\u002FVCC --skill conversation-compiler",{"tool":50,"command":51},"pnpm","pnpm dlx skills add lllyasviel\u002FVCC --skill conversation-compiler","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flllyasviel\u002FVCC\u002Fblob\u002Fmain\u002Fskills\u002Fconversation-compiler\u002FSKILL.md",true,[55],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"scripts\u002FVCC.py","SCRIPT","脚本",38949,"https:\u002F\u002Fgithub.com\u002Flllyasviel\u002FVCC\u002Fblob\u002Fmain\u002Fskills\u002Fconversation-compiler\u002Fscripts\u002FVCC.py",[62,78,88],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":28},"01M6K5ZM9P93WZFJ9FHR4SR17B","searchchat","Search across conversation logs in ~\u002F.claude\u002Fprojects\u002F. Use when: the user says \u002Fsearchchat, wants to search chat history, or explore the ~\u002F.claude\u002Fprojects\u002F directory.","https:\u002F\u002Fgithub.com\u002Flllyasviel\u002FVCC\u002Fblob\u002Fmain\u002Fskills\u002Fsearchchat\u002FSKILL.md",[],[64,69,70,24,71,72,73,74,75,19,76,77],"directory","search","explore","projects","history","user","use","chat","across",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":28},"01M6K5ZH3ATHGWMB3PYXGCZKY9","recall","Recover context from a previous conversation that ran out of context. Use when: (1) the user says \u002Frecall; (2) the conversation starts with 'this session is being continued from a previous conversation that ran out of context'.","https:\u002F\u002Fgithub.com\u002Flllyasviel\u002FVCC\u002Fblob\u002Fmain\u002Fskills\u002Frecall\u002FSKILL.md",[],[80,19,85,86,75,74,87],"session","with","context",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":28},"01M6K5ZDNDWF7KYTEW9BB6JH7C","readchat","Compile and read a specific JSONL conversation log. Use when: the user says \u002Freadchat, mentions .jsonl conversation files, or asks to review past Claude sessions.","https:\u002F\u002Fgithub.com\u002Flllyasviel\u002FVCC\u002Fblob\u002Fmain\u002Fskills\u002Freadchat\u002FSKILL.md",[],[90,95,96,26,97,19,98,99,75,74,100,23,101],"review","past","claude sessions","files","log","read","sessions"]