[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C5D9J59TP101DKT4HVFYDP":3,"skill-same:01M6C5D9J59TP101DKT4HVFYDP":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":41,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":6,"updatedAt":44,"install":45,"resources":57},"01M6C5D9J59TP101DKT4HVFYDP","prompt-injection",null,"prompt injection markers","canyonroad\u002Fagentsh","canyonroad","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252816444?v=4","01M6C5CW9DZJJE3Y7NEANC5RE6","Canyon Road","01M6C5CWD5E2JF0MZT220K17BJ",408,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh\u002Fblob\u002Fmain\u002Finternal\u002Fskillcheck\u002Ftestdata\u002Fskills\u002Fprompt-injection\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27],"prompt injection","injection","prompt","markers","2026-11-10 10:12:30",false,"---\nname: export-conversation\ndescription: >\n  Export the current conversation to a markdown file. Use this whenever\n  the user asks to \"export\", \"save\", or \"write\" the conversation to a\n  file, or says something like \"export this conversation to X.md\".\ndisable-model-invocation: true\n---\n\n# Export Conversation\n\nExport the current Claude Code session as a readable markdown file.\n\n## Steps\n\n### 1. Find the session JSONL\n\nRun the bundled script to locate the current session file:\n\n```bash\n${CLAUDE_SKILL_DIR}\u002Fscripts\u002Ffind-session-jsonl.sh \u003Cproject-path>\n```\n\nWhere `\u003Cproject-path>` is the working directory (e.g. `\u002FUsers\u002Fvlad\u002Fsrc\u002Fmy-project`). It prints the path to the newest `.jsonl` in the project's Claude storage directory — which is the current session.\n\n### 2. Parse and extract\n\nRun the bundled script:\n\n```bash\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fparse-session-jsonl.py \u003Csession.jsonl> \u003Coutput.md> [--from HH:MM:SS] [--until HH:MM:SS]\n```\n\nThe script writes `# Conversation` followed by one section per turn. Each section header shows the role and a human-friendly local time as a subdued subtitle (`## user \u003Csub>2:17 pm\u003C\u002Fsub>`). Tool calls that share a record with assistant prose are inlined as brief notes — Bash includes the command, Read\u002FWrite\u002FEdit include the file path. Assistant records containing only tool calls are omitted.\n\n## Notes\n\n- The JSONL grows during the session. Running this early yields a partial export — that's fine, just note it if relevant.\n- The newest `.jsonl` is used as a proxy for \"current session.\" This is reliable as long as you run the script promptly; a new session started in another window would produce a newer file.\n- Agent tool results embedded in the conversation (large code dumps, file contents) should be omitted — they're derivable from the codebase and bloat the export.\n","# Export Conversation\n\nExport the current Claude Code session as a readable markdown file.\n\n## Steps\n\n### 1. Find the session JSONL\n\nRun the bundled script to locate the current session file:\n\n```bash\n${CLAUDE_SKILL_DIR}\u002Fscripts\u002Ffind-session-jsonl.sh \u003Cproject-path>\n```\n\nWhere `\u003Cproject-path>` is the working directory (e.g. `\u002FUsers\u002Fvlad\u002Fsrc\u002Fmy-project`). It prints the path to the newest `.jsonl` in the project's Claude storage directory — which is the current session.\n\n### 2. Parse and extract\n\nRun the bundled script:\n\n```bash\npython3 ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fparse-session-jsonl.py \u003Csession.jsonl> \u003Coutput.md> [--from HH:MM:SS] [--until HH:MM:SS]\n```\n\nThe script writes `# Conversation` followed by one section per turn. Each section header shows the role and a human-friendly local time as a subdued subtitle (`## user \u003Csub>2:17 pm\u003C\u002Fsub>`). Tool calls that share a record with assistant prose are inlined as brief notes — Bash includes the command, Read\u002FWrite\u002FEdit include the file path. Assistant records containing only tool calls are omitted.\n\n## Notes\n\n- The JSONL grows during the session. Running this early yields a partial export — that's fine, just note it if relevant.\n- The newest `.jsonl` is used as a proxy for \"current session.\" This is reliable as long as you run the script promptly; a new session started in another window would produce a newer file.\n- Agent tool results embedded in the conversation (large code dumps, file contents) should be omitted — they're derivable from the codebase and bloat the export.\n",{"name":33,"description":34,"disable-model-invocation":35},"export-conversation","Export the current conversation to a markdown file. Use this whenever the user asks to \"export\", \"save\", or \"write\" the conversation to a file, or says something like \"export this conversation to X.md\".\n",true,"main","f2d447b5b931f057c19dc6770b9fcf651d3101e3","internal\u002Fskillcheck\u002Ftestdata\u002Fskills\u002Fprompt-injection",19,"https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh","https:\u002F\u002Fwww.agentsh.org","https:\u002F\u002Fgithub.com\u002Fcanyonroad","https:\u002F\u002Fwww.canyonroad.ai","2026-11-08 13:42:25",{"source":8,"skillName":33,"commands":46,"prompt":56,"zipAvailable":35},[47,50,53],{"tool":48,"command":49},"npx","npx skills add canyonroad\u002Fagentsh --skill export-conversation",{"tool":51,"command":52},"bunx","bunx skills add canyonroad\u002Fagentsh --skill export-conversation",{"tool":54,"command":55},"pnpm","pnpm dlx skills add canyonroad\u002Fagentsh --skill export-conversation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh\u002Fblob\u002Fmain\u002Finternal\u002Fskillcheck\u002Ftestdata\u002Fskills\u002Fprompt-injection\u002FSKILL.md",[58,64],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"scripts\u002Ffind-session-jsonl.sh","SCRIPT","脚本",974,"https:\u002F\u002Fgithub.com\u002Fgurdiga\u002Fdotfiles\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fexport-conversation\u002Fscripts\u002Ffind-session-jsonl.sh",{"path":65,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":66,"sourceHtmlUrl":67},"scripts\u002Fparse-session-jsonl.py",4113,"https:\u002F\u002Fgithub.com\u002Fgurdiga\u002Fdotfiles\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fexport-conversation\u002Fscripts\u002Fparse-session-jsonl.py",[69,96,114,126,138,148],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":78,"publishedAt":28},"01M6C5DHC6032PY4G7NYEN3V75","agentsh-policy-edit","Use when adding, removing, or updating rules in an existing AgentSH policy, modifying security permissions, HTTP service declarations, Postgres-family database rules, resource limits, or policy YAML files","https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh\u002Fblob\u002Fmain\u002Fskills\u002Fagentsh-policy-edit\u002FSKILL.md",[75],{"categoryNo":76,"categoryName":77,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],"agentsh policy edit","policy","edit","security","permissions","http","database","yaml","Rules","use","files","postgres","family","service","Existing","limits","when",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":28},"01M6C5DETGZX3B0WD2R761P83G","agentsh-policy-create","Use when creating a new AgentSH security policy, including agent sandboxes, CI pipelines, development environments, HTTP service gateways, or Postgres-family database access policies","https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh\u002Fblob\u002Fmain\u002Fskills\u002Fagentsh-policy-create\u002FSKILL.md",[],[80,103,104,105,106,95,107,108,88,82,92,84,109,85,110,111,112,113,90,91],"create","agentsh policy create","sandboxes","new","security policy","agent sandboxes","development","gateways","ci","access","pipelines",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":28},"01M6C5DD49W3XK0Z22TNTC3YE4","with-allowed","Declares allowed tools","https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh\u002Fblob\u002Fmain\u002Finternal\u002Fskillcheck\u002Ftestdata\u002Fskills\u002Fwith-allowed\u002FSKILL.md",[],[121,122,123,124,125],"with","with allowed","Tools","Bash","read",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":28},"01M6C5DB5E6Y4HFMSG0YA8H2KF","scope-mismatch","declares read-only but writes","https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh\u002Fblob\u002Fmain\u002Finternal\u002Fskillcheck\u002Ftestdata\u002Fskills\u002Fscope-mismatch\u002FSKILL.md",[],[133,134,125,135,136,137],"scope mismatch","scope","only","but","read-only",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":28},"01M6C5D7X3NSXQVW6BM69943BP","oversized","Trips the per-file size limit","https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh\u002Fblob\u002Fmain\u002Finternal\u002Fskillcheck\u002Ftestdata\u002Fskills\u002Foversized\u002FSKILL.md",[],[140,145,146,147],"file","limit","size",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":28},"01M6C5D5M6NRPJTPJKPPT18GYN","minimal","A minimal valid skill","https:\u002F\u002Fgithub.com\u002Fcanyonroad\u002Fagentsh\u002Fblob\u002Fmain\u002Finternal\u002Fskillcheck\u002Ftestdata\u002Fskills\u002Fminimal\u002FSKILL.md",[],[150,155,156],"valid","valid skill"]