[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PDJBW46JDAGQ86PX5D7B1E":3,"skill-same:01M6PDJBW46JDAGQ86PX5D7B1E":172},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":16,"publishedAt":17,"linkOnly":18,"markdownContent":19,"markdownBody":20,"frontMatter":21,"refName":22,"commitSha":23,"skillDirectory":24,"forksCount":12,"repositoryHtmlUrl":25,"repositoryHomepageUrl":6,"ownerHtmlUrl":26,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":27,"install":28,"resources":41},"01M6PDJBW46JDAGQ86PX5D7B1E","plate",null,"matkatmusic\u002Fjot","matkatmusic","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2929847?v=4","01M6PDHPZ3787BAQSJKNRW3KH1","01M6PDHQ2ZK8RTMZ4NVG5MJKM7",0,"GPL-3.0","https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002FSKILL.md",[],[5],"2026-11-10 10:12:30",false,"---\nname: plate\ndescription: Stack-of-plates WIP tracker — handles parent selection (\u002Fplate) and finalization (\u002Fplate --done).\nargument-hint: [\u003Cempty>] [--done] [--drop] [--next] [--show]\n---\n\n# Plate — Skill Body\n\nYou are the foreground claude that received a `\u002Fplate` prompt. The hook passed this prompt through because it requires your interaction capabilities (AskUserQuestion, tool use).\n\n## Variant Detection\n\nCheck the user's prompt:\n- If `\u002Fplate --done` → follow the **Done** section below\n- If `\u002Fplate` (no flag) → follow the **Parent Selection** section below\n\n---\n\n# Done\n\nThe user wants to finalize their plate stack — replay all stacked plates as sequential commits.\n\n## Step 1 — Load command context\n\nRead the command context file the hook dropped:\n\n```\n.plate\u002Fpending-command.json\n```\n\nIt contains:\n- `session_id` — your current session ID (`$SID`)\n- `plate_scripts_dir` — absolute path to the plate scripts directory (`$SCRIPTS`)\n- `python_dir` — absolute path to the plate python directory (`$PYDIR`)\n- `plate_plugin_root` — absolute path to the plugin root (`$PLUGIN_ROOT`)\n\nIf the file is missing, reply: `plate: no command context — rerun \u002Fplate --done` and stop.\n\n## Step 2 — Check for open children\n\nRun:\n```\nINSTANCE_FILE=\".plate\u002Finstances\u002F\u003Csession_id>.json\" python3 \u003Cpython_dir>\u002Fcheck_live_children.py\n```\n\nIf the output is `yes`, delegated children are still open. Call `AskUserQuestion`:\n- question: `Delegated children are still open. How do you want to proceed?`\n- options: `[\"Cancel — do not finalize\", \"Orphan children — finalize anyway\", \"Keep links — finalize and preserve child references\"]`\n\nIf the user picks Cancel, reply `plate --done cancelled` and stop. Otherwise proceed.\n\n## Step 3 — Run done.sh\n\nExport the plugin environment, then run the done script:\n\n```bash\nexport CLAUDE_PLUGIN_ROOT=\u003Cplate_plugin_root>\nexport CLAUDE_PLUGIN_DATA=~\u002F.claude\u002Fplugins\u002Fdata\u002Fplate-jot-dev\nbash \u003Cplate_scripts_dir>\u002Fdone.sh \u003Csession_id>\n```\n\n## Step 4 — Relay output\n\nThe script prints a commit summary and resume pointer. Relay this output to the user verbatim.\n\n## Step 5 — Cleanup\n\nDelete `.plate\u002Fpending-command.json`.\n\n---\n\n# Parent Selection\n\nYou are the foreground claude that received a `\u002Fplate` prompt. The hook has determined this is a new session in a repo where other plate instances already exist (\"path 3\" in the design). You must present a parent-selection dropdown before pushing.\n\n## Step 1 — Load registration context\n\nRead the pending registration file the hook dropped for you:\n\n```\n.plate\u002Fpending-registration.json\n```\n\nIt contains:\n- `session_id` — your current session ID (call this `$SID`)\n- `transcript_path` — path to your conversation transcript (`$TP`)\n- `cwd` — absolute working directory (`$CWD`)\n- `plate_scripts_dir` — absolute path to the plate plugin's `scripts\u002F` directory (`$SCRIPTS`)\n\n**Do NOT use `$CLAUDE_PLUGIN_ROOT` or any bash env variable to locate plate scripts.** The user may have other plugins loaded that set that variable to a different plugin's path. Always use `plate_scripts_dir` from the registration JSON.\n\n## Step 2 — Enumerate candidate parents\n\nRun this bash command (substituting the actual path from the registration JSON):\n\n```\nbash \u003Cplate_scripts_dir>\u002Flist-paused-plates.sh\n```\n\nEach output row is pipe-delimited: `convoID|plateID|label|synopsis|pushed_at`.\n\n## Step 3 — Branch on output\n\n**If output is EMPTY** (no paused plates anywhere):\n1. Register as top-level:\n   `bash \u003Cplate_scripts_dir>\u002Fregister-parent.sh \u003Csession_id> none`\n2. Push:\n   `bash \u003Cplate_scripts_dir>\u002Fpush.sh \u003Csession_id> \u003Ctranscript_path> \u003Ccwd>`\n3. Delete `.plate\u002Fpending-registration.json`\n4. Reply: `plate registered + pushed (top-level)`\n\n**If output has 1+ rows**:\n1. Build options for `AskUserQuestion`:\n   - For each row, format as: `\u003Clabel> → \"\u003Csynopsis>\" (paused at \u003Cpushed_at>)`\n   - Prepend `Top-level (no parent)` as the first option\n2. Call `AskUserQuestion` with:\n   - header: `Parent`\n   - question: `Pick a parent plate (or top-level)`\n   - multiSelect: false\n3. Parse the user's selection. Extract the `convoID` and `plateID` from the row they picked (or pass `none \"\"` for top-level).\n4. Register:\n   `bash \u003Cplate_scripts_dir>\u002Fregister-parent.sh \u003Csession_id> \u003Cparent_convo> \u003Cparent_plate>`\n5. Push:\n   `bash \u003Cplate_scripts_dir>\u002Fpush.sh \u003Csession_id> \u003Ctranscript_path> \u003Ccwd>`\n6. Delete `.plate\u002Fpending-registration.json`\n7. Reply in one line: `plate registered + pushed: \u003Csynopsis>`\n\n## Rules\n\n- NEVER push before registration completes — parent_ref must be set first.\n- NEVER skip the `AskUserQuestion` step when paused plates exist — the user must explicitly choose.\n- If the pending-registration file is missing, reply: `plate: no registration context — rerun \u002Fplate` and stop.\n- Always resolve script paths via `plate_scripts_dir` from the registration JSON. Do not trust `$CLAUDE_PLUGIN_ROOT` in the shell env — it may point at a different plugin.\n- When running push.sh, you MUST export `CLAUDE_PLUGIN_ROOT=\u003Cplate_plugin_root>` and `CLAUDE_PLUGIN_DATA=~\u002F.claude\u002Fplugins\u002Fdata\u002Fplate-jot-dev` (or the appropriate plate data dir) so the script can find its lib + python helpers. Use `plate_plugin_root` from the registration JSON.\n","# Plate — Skill Body\n\nYou are the foreground claude that received a `\u002Fplate` prompt. The hook passed this prompt through because it requires your interaction capabilities (AskUserQuestion, tool use).\n\n## Variant Detection\n\nCheck the user's prompt:\n- If `\u002Fplate --done` → follow the **Done** section below\n- If `\u002Fplate` (no flag) → follow the **Parent Selection** section below\n\n---\n\n# Done\n\nThe user wants to finalize their plate stack — replay all stacked plates as sequential commits.\n\n## Step 1 — Load command context\n\nRead the command context file the hook dropped:\n\n```\n.plate\u002Fpending-command.json\n```\n\nIt contains:\n- `session_id` — your current session ID (`$SID`)\n- `plate_scripts_dir` — absolute path to the plate scripts directory (`$SCRIPTS`)\n- `python_dir` — absolute path to the plate python directory (`$PYDIR`)\n- `plate_plugin_root` — absolute path to the plugin root (`$PLUGIN_ROOT`)\n\nIf the file is missing, reply: `plate: no command context — rerun \u002Fplate --done` and stop.\n\n## Step 2 — Check for open children\n\nRun:\n```\nINSTANCE_FILE=\".plate\u002Finstances\u002F\u003Csession_id>.json\" python3 \u003Cpython_dir>\u002Fcheck_live_children.py\n```\n\nIf the output is `yes`, delegated children are still open. Call `AskUserQuestion`:\n- question: `Delegated children are still open. How do you want to proceed?`\n- options: `[\"Cancel — do not finalize\", \"Orphan children — finalize anyway\", \"Keep links — finalize and preserve child references\"]`\n\nIf the user picks Cancel, reply `plate --done cancelled` and stop. Otherwise proceed.\n\n## Step 3 — Run done.sh\n\nExport the plugin environment, then run the done script:\n\n```bash\nexport CLAUDE_PLUGIN_ROOT=\u003Cplate_plugin_root>\nexport CLAUDE_PLUGIN_DATA=~\u002F.claude\u002Fplugins\u002Fdata\u002Fplate-jot-dev\nbash \u003Cplate_scripts_dir>\u002Fdone.sh \u003Csession_id>\n```\n\n## Step 4 — Relay output\n\nThe script prints a commit summary and resume pointer. Relay this output to the user verbatim.\n\n## Step 5 — Cleanup\n\nDelete `.plate\u002Fpending-command.json`.\n\n---\n\n# Parent Selection\n\nYou are the foreground claude that received a `\u002Fplate` prompt. The hook has determined this is a new session in a repo where other plate instances already exist (\"path 3\" in the design). You must present a parent-selection dropdown before pushing.\n\n## Step 1 — Load registration context\n\nRead the pending registration file the hook dropped for you:\n\n```\n.plate\u002Fpending-registration.json\n```\n\nIt contains:\n- `session_id` — your current session ID (call this `$SID`)\n- `transcript_path` — path to your conversation transcript (`$TP`)\n- `cwd` — absolute working directory (`$CWD`)\n- `plate_scripts_dir` — absolute path to the plate plugin's `scripts\u002F` directory (`$SCRIPTS`)\n\n**Do NOT use `$CLAUDE_PLUGIN_ROOT` or any bash env variable to locate plate scripts.** The user may have other plugins loaded that set that variable to a different plugin's path. Always use `plate_scripts_dir` from the registration JSON.\n\n## Step 2 — Enumerate candidate parents\n\nRun this bash command (substituting the actual path from the registration JSON):\n\n```\nbash \u003Cplate_scripts_dir>\u002Flist-paused-plates.sh\n```\n\nEach output row is pipe-delimited: `convoID|plateID|label|synopsis|pushed_at`.\n\n## Step 3 — Branch on output\n\n**If output is EMPTY** (no paused plates anywhere):\n1. Register as top-level:\n   `bash \u003Cplate_scripts_dir>\u002Fregister-parent.sh \u003Csession_id> none`\n2. Push:\n   `bash \u003Cplate_scripts_dir>\u002Fpush.sh \u003Csession_id> \u003Ctranscript_path> \u003Ccwd>`\n3. Delete `.plate\u002Fpending-registration.json`\n4. Reply: `plate registered + pushed (top-level)`\n\n**If output has 1+ rows**:\n1. Build options for `AskUserQuestion`:\n   - For each row, format as: `\u003Clabel> → \"\u003Csynopsis>\" (paused at \u003Cpushed_at>)`\n   - Prepend `Top-level (no parent)` as the first option\n2. Call `AskUserQuestion` with:\n   - header: `Parent`\n   - question: `Pick a parent plate (or top-level)`\n   - multiSelect: false\n3. Parse the user's selection. Extract the `convoID` and `plateID` from the row they picked (or pass `none \"\"` for top-level).\n4. Register:\n   `bash \u003Cplate_scripts_dir>\u002Fregister-parent.sh \u003Csession_id> \u003Cparent_convo> \u003Cparent_plate>`\n5. Push:\n   `bash \u003Cplate_scripts_dir>\u002Fpush.sh \u003Csession_id> \u003Ctranscript_path> \u003Ccwd>`\n6. Delete `.plate\u002Fpending-registration.json`\n7. Reply in one line: `plate registered + pushed: \u003Csynopsis>`\n\n## Rules\n\n- NEVER push before registration completes — parent_ref must be set first.\n- NEVER skip the `AskUserQuestion` step when paused plates exist — the user must explicitly choose.\n- If the pending-registration file is missing, reply: `plate: no registration context — rerun \u002Fplate` and stop.\n- Always resolve script paths via `plate_scripts_dir` from the registration JSON. Do not trust `$CLAUDE_PLUGIN_ROOT` in the shell env — it may point at a different plugin.\n- When running push.sh, you MUST export `CLAUDE_PLUGIN_ROOT=\u003Cplate_plugin_root>` and `CLAUDE_PLUGIN_DATA=~\u002F.claude\u002Fplugins\u002Fdata\u002Fplate-jot-dev` (or the appropriate plate data dir) so the script can find its lib + python helpers. Use `plate_plugin_root` from the registration JSON.\n",{},"main","718bac2d21f3c302c7110110624b4064d6245708","skills\u002Fplate","https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot","https:\u002F\u002Fgithub.com\u002Fmatkatmusic","2026-05-23 07:33:18",{"source":7,"skillName":5,"commands":29,"prompt":39,"zipAvailable":40},[30,33,36],{"tool":31,"command":32},"npx","npx skills add matkatmusic\u002Fjot --skill plate",{"tool":34,"command":35},"bunx","bunx skills add matkatmusic\u002Fjot --skill plate",{"tool":37,"command":38},"pnpm","pnpm dlx skills add matkatmusic\u002Fjot --skill plate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002FSKILL.md",true,[42,48,52,56,62,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,152,156,160,164,168],{"path":43,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":46,"sourceHtmlUrl":47},"DESIGN.md","REFERENCE","参考文档",35818,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002FDESIGN.md",{"path":49,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":50,"sourceHtmlUrl":51},"IMPLEMENTATION.md",66513,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002FIMPLEMENTATION.md",{"path":53,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":54,"sourceHtmlUrl":55},"README.md",4494,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002FREADME.md",{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"scripts\u002Fassets\u002Fpermissions.default.json","SCRIPT","脚本",1108,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fassets\u002Fpermissions.default.json",{"path":63,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":64,"sourceHtmlUrl":65},"scripts\u002Fassets\u002Fpermissions.default.json.sha256",91,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fassets\u002Fpermissions.default.json.sha256",{"path":67,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":68,"sourceHtmlUrl":69},"scripts\u002Fbranch-snapshot.sh",4144,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fbranch-snapshot.sh",{"path":71,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":72,"sourceHtmlUrl":73},"scripts\u002Fbranch-snapshot.v2.sh",4365,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fbranch-snapshot.v2.sh",{"path":75,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":76,"sourceHtmlUrl":77},"scripts\u002Fdone.sh",5757,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fdone.sh",{"path":79,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":80,"sourceHtmlUrl":81},"scripts\u002Fdrop.sh",2825,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fdrop.sh",{"path":83,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":84,"sourceHtmlUrl":85},"scripts\u002Flist-paused-plates.sh",723,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Flist-paused-plates.sh",{"path":87,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":88,"sourceHtmlUrl":89},"scripts\u002Fnext.sh",472,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fnext.sh",{"path":91,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":92,"sourceHtmlUrl":93},"scripts\u002Fpaths.sh",686,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fpaths.sh",{"path":95,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":96,"sourceHtmlUrl":97},"scripts\u002Fplate-orchestrator.sh",294,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fplate-orchestrator.sh",{"path":99,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Fplate-session-start.sh",1981,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fplate-session-start.sh",{"path":103,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Fplate-worker-end.sh",224,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fplate-worker-end.sh",{"path":107,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Fplate-worker-start.sh",1464,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fplate-worker-start.sh",{"path":111,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Fplate-worker-stop.sh",867,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fplate-worker-stop.sh",{"path":115,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Fplate.sh",5638,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fplate.sh",{"path":119,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Fprompts\u002Fbg-agent.md",2755,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fprompts\u002Fbg-agent.md",{"path":123,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":124,"sourceHtmlUrl":125},"scripts\u002Fprompts\u002Fdrift-judge.md",530,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fprompts\u002Fdrift-judge.md",{"path":127,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":128,"sourceHtmlUrl":129},"scripts\u002Fpush.sh",8473,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fpush.sh",{"path":131,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":132,"sourceHtmlUrl":133},"scripts\u002Fregister-parent.sh",1067,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fregister-parent.sh",{"path":135,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":136,"sourceHtmlUrl":137},"scripts\u002Frender-tree.sh",439,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Frender-tree.sh",{"path":139,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":140,"sourceHtmlUrl":141},"scripts\u002Fshow.sh",238,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fshow.sh",{"path":143,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":144,"sourceHtmlUrl":145},"scripts\u002Fsnapshot-stash.sh",1019,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Fscripts\u002Fsnapshot-stash.sh",{"path":147,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":150,"sourceHtmlUrl":151},"tests\u002Ffixtures\u002Fsample-transcript.jsonl","OTHER","其他",2070,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Ftests\u002Ffixtures\u002Fsample-transcript.jsonl",{"path":153,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":154,"sourceHtmlUrl":155},"tests\u002Fplate-claude-e2e.sh",12532,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Ftests\u002Fplate-claude-e2e.sh",{"path":157,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":158,"sourceHtmlUrl":159},"tests\u002Fplate-e2e-live.sh",10245,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Ftests\u002Fplate-e2e-live.sh",{"path":161,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":162,"sourceHtmlUrl":163},"tests\u002Ftest-done-smoke.sh",9204,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Ftests\u002Ftest-done-smoke.sh",{"path":165,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":166,"sourceHtmlUrl":167},"tests\u002Ftest-drop-smoke.sh",3957,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Ftests\u002Ftest-drop-smoke.sh",{"path":169,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":170,"sourceHtmlUrl":171},"tests\u002Ftest-push-smoke.sh",5300,"https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fplate\u002Ftests\u002Ftest-push-smoke.sh",[173,199,217,235,250,265],{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":17},"01M6PDJTRBQA3EEZSXGKQCCX96","todo","Capture a mid-development TODO via \"\u002Ftodo \u003Cidea>\". Reads a pending-context JSON file left by the UserPromptSubmit hook, asks clarifying questions if the idea is vague, then spawns a background Claude worker in tmux that scans git context and writes the final numbered TODO file. Use when user says \"\u002Ftodo\", \"park this idea\", \"save this for later\", or \"add a todo\".","https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Ftodo\u002FSKILL.md",[],[175,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198],"git","park","background","pending","vague","for","hook","questions","add","via","worker","later","use","user","context","capture","json","file","development",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":203,"categories":204,"keywords":205,"publishedAt":17},"01M6PDJPPGMP9GC4C6AVX6SXMK","todo-list","Show all open TODOs from the project's Todos\u002F folder with ID, title, date, and branch. Use when user says \"\u002Ftodo-list\", \"show my todos\", \"what todos are open\", or \"list todos\".","https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Ftodo-list\u002FSKILL.md",[],[206,175,207,193,208,209,210,211,212,192,213,214,215,216],"todo list","list","folder","with","id","project","show","branch","open","my","title",{"skillNo":218,"name":219,"nameZh":6,"description":220,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":221,"categories":222,"keywords":223,"publishedAt":17},"01M6PDJH2HCQH9K21YQKK1V6YF","todo-clean","Clean up stale TODOs by comparing each open TODO against git history since its creation timestamp. Asks before marking each as done. Use when user says \"\u002Ftodo-clean\", \"clean up todos\", \"check for resolved todos\", or \"prune stale todos\".","https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Ftodo-clean\u002FSKILL.md",[],[224,225,175,226,227,228,185,192,229,193,230,231,232,233,214,180,234],"clean","todo clean","as","done","creation","up","timestamp","check","history","prune","stale",{"skillNo":236,"name":237,"nameZh":6,"description":238,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":239,"categories":240,"keywords":241,"publishedAt":17},"01M6PDJ5WRVQAPYCKBDFV1795H","jot","Capture a mid-development idea via \"\u002Fjot \u003Cidea>\" without losing focus. Writes idea + git state, open TODOs, and recent conversation context to Todos\u002F{timestamp}_input.txt; a background Claude (persistent per project in tmux) converts it into a proper TODO file — all without interrupting your current conversation.","https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fjot\u002FSKILL.md",[],[237,230,195,214,197,242,180,198,243,194,182,244,189,245,246,211,247,175,248,249],"state","tmux","it","input","git state","focus","conversation","idea",{"skillNo":251,"name":252,"nameZh":6,"description":253,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":254,"categories":255,"keywords":256,"publishedAt":17},"01M6PDJ036J58VFP104G4HBC58","debate","Multi-agent debate (Claude + Gemini + Codex) in tmux. Agents independently analyze, cross-critique, then synthesize. Use when user types \"\u002Fdebate \u003Ctopic>\".","https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fdebate\u002FSKILL.md",[],[252,257,258,259,192,193,260,261,262,263,243,264],"synthesize","types","multi","multi-agent","analyze","critique","codex","gemini",{"skillNo":266,"name":267,"nameZh":6,"description":268,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":269,"categories":270,"keywords":271,"publishedAt":17},"01M6PDHVMCRCGKN84J6MV5MJAF","debate-retry","Resume the most recent incomplete debate invoked from this conversation.","https:\u002F\u002Fgithub.com\u002Fmatkatmusic\u002Fjot\u002Fblob\u002Fmain\u002Fskills\u002Fdebate-retry\u002FSKILL.md",[],[272,273,252,248,274],"debate retry","retry","resume"]