[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PVQJJX18F4Q362TSBF4HW":3,"skill-same:01M71PVQJJX18F4Q362TSBF4HW":61},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":14,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M71PVQJJX18F4Q362TSBF4HW","bmad-shard-doc",null,"Splits large markdown documents into smaller, organized files based on level 2 (default) sections. Use if the user says perform shard document","jsacko\u002FOpenDFIR","jsacko","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F63580474?v=4","01M71PG17HH9PJ0ME3103K2MF5","Julien Sacko","01M71PG188SHJ0DBAYX85237WG",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.continue\u002Fskills\u002Fbmad-shard-doc\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35],"bmad","shard","doc","bmad shard doc","default","files","use","document","documents","splits","markdown","user","2026-11-10 13:02:02",false,"---\nname: bmad-shard-doc\ndescription: 'Splits large markdown documents into smaller, organized files based on level 2 (default) sections. Use if the user says perform shard document'\n---\n\n# Shard Document\n\n**Goal:** Split large markdown documents into smaller, organized files based on level 2 sections using `npx @kayvan\u002Fmarkdown-tree-parser`.\n\n## CRITICAL RULES\n\n- MANDATORY: Execute ALL steps in the EXECUTION section IN EXACT ORDER\n- DO NOT skip steps or change the sequence\n- HALT immediately when halt-conditions are met\n- Each action within a step is a REQUIRED action to complete that step\n\n## EXECUTION\n\n### Step 1: Get Source Document\n\n- Ask user for the source document path if not provided already\n- Verify file exists and is accessible\n- Verify file is markdown format (.md extension)\n- If file not found or not markdown: HALT with error message\n\n### Step 2: Get Destination Folder\n\n- Determine default destination: same location as source file, folder named after source file without .md extension\n  - Example: `\u002Fpath\u002Fto\u002Farchitecture.md` --> `\u002Fpath\u002Fto\u002Farchitecture\u002F`\n- Ask user for the destination folder path (`[y]` to confirm use of default: `[suggested-path]`, else enter a new path)\n- If user accepts default: use the suggested destination path\n- If user provides custom path: use the custom destination path\n- Verify destination folder exists or can be created\n- Check write permissions for destination\n- If permission denied: HALT with error message\n\n### Step 3: Execute Sharding\n\n- Inform user that sharding is beginning\n- Execute command: `npx @kayvan\u002Fmarkdown-tree-parser explode [source-document] [destination-folder]`\n- Capture command output and any errors\n- If command fails: HALT and display error to user\n\n### Step 4: Verify Output\n\n- Check that destination folder contains sharded files\n- Verify index.md was created in destination folder\n- Count the number of files created\n- If no files created: HALT with error message\n\n### Step 5: Report Completion\n\n- Display completion report to user including:\n  - Source document path and name\n  - Destination folder path\n  - Number of section files created\n  - Confirmation that index.md was created\n  - Any tool output or warnings\n- Inform user that sharding completed successfully\n\n### Step 6: Handle Original Document\n\n> **Critical:** Keeping both the original and sharded versions defeats the purpose of sharding and can cause confusion.\n\nPresent user with options for the original document:\n\n> What would you like to do with the original document `[source-document-name]`?\n>\n> Options:\n> - `[d]` Delete - Remove the original (recommended - shards can always be recombined)\n> - `[m]` Move to archive - Move original to a backup\u002Farchive location\n> - `[k]` Keep - Leave original in place (NOT recommended - defeats sharding purpose)\n>\n> Your choice (d\u002Fm\u002Fk):\n\n#### If user selects `d` (delete)\n\n- Delete the original source document file\n- Confirm deletion to user: \"Original document deleted: [source-document-path]\"\n- Note: The document can be reconstructed from shards by concatenating all section files in order\n\n#### If user selects `m` (move)\n\n- Determine default archive location: same directory as source, in an `archive` subfolder\n  - Example: `\u002Fpath\u002Fto\u002Farchitecture.md` --> `\u002Fpath\u002Fto\u002Farchive\u002Farchitecture.md`\n- Ask: Archive location (`[y]` to use default: `[default-archive-path]`, or provide custom path)\n- If user accepts default: use default archive path\n- If user provides custom path: use custom archive path\n- Create archive directory if it does not exist\n- Move original document to archive location\n- Confirm move to user: \"Original document moved to: [archive-path]\"\n\n#### If user selects `k` (keep)\n\n- Display warning to user:\n  - Keeping both original and sharded versions is NOT recommended\n  - The discover_inputs protocol may load the wrong version\n  - Updates to one will not reflect in the other\n  - Duplicate content taking up space\n  - Consider deleting or archiving the original document\n- Confirm user choice: \"Original document kept at: [source-document-path]\"\n\n## HALT CONDITIONS\n\n- HALT if npx command fails or produces no output files\n","# Shard Document\n\n**Goal:** Split large markdown documents into smaller, organized files based on level 2 sections using `npx @kayvan\u002Fmarkdown-tree-parser`.\n\n## CRITICAL RULES\n\n- MANDATORY: Execute ALL steps in the EXECUTION section IN EXACT ORDER\n- DO NOT skip steps or change the sequence\n- HALT immediately when halt-conditions are met\n- Each action within a step is a REQUIRED action to complete that step\n\n## EXECUTION\n\n### Step 1: Get Source Document\n\n- Ask user for the source document path if not provided already\n- Verify file exists and is accessible\n- Verify file is markdown format (.md extension)\n- If file not found or not markdown: HALT with error message\n\n### Step 2: Get Destination Folder\n\n- Determine default destination: same location as source file, folder named after source file without .md extension\n  - Example: `\u002Fpath\u002Fto\u002Farchitecture.md` --> `\u002Fpath\u002Fto\u002Farchitecture\u002F`\n- Ask user for the destination folder path (`[y]` to confirm use of default: `[suggested-path]`, else enter a new path)\n- If user accepts default: use the suggested destination path\n- If user provides custom path: use the custom destination path\n- Verify destination folder exists or can be created\n- Check write permissions for destination\n- If permission denied: HALT with error message\n\n### Step 3: Execute Sharding\n\n- Inform user that sharding is beginning\n- Execute command: `npx @kayvan\u002Fmarkdown-tree-parser explode [source-document] [destination-folder]`\n- Capture command output and any errors\n- If command fails: HALT and display error to user\n\n### Step 4: Verify Output\n\n- Check that destination folder contains sharded files\n- Verify index.md was created in destination folder\n- Count the number of files created\n- If no files created: HALT with error message\n\n### Step 5: Report Completion\n\n- Display completion report to user including:\n  - Source document path and name\n  - Destination folder path\n  - Number of section files created\n  - Confirmation that index.md was created\n  - Any tool output or warnings\n- Inform user that sharding completed successfully\n\n### Step 6: Handle Original Document\n\n> **Critical:** Keeping both the original and sharded versions defeats the purpose of sharding and can cause confusion.\n\nPresent user with options for the original document:\n\n> What would you like to do with the original document `[source-document-name]`?\n>\n> Options:\n> - `[d]` Delete - Remove the original (recommended - shards can always be recombined)\n> - `[m]` Move to archive - Move original to a backup\u002Farchive location\n> - `[k]` Keep - Leave original in place (NOT recommended - defeats sharding purpose)\n>\n> Your choice (d\u002Fm\u002Fk):\n\n#### If user selects `d` (delete)\n\n- Delete the original source document file\n- Confirm deletion to user: \"Original document deleted: [source-document-path]\"\n- Note: The document can be reconstructed from shards by concatenating all section files in order\n\n#### If user selects `m` (move)\n\n- Determine default archive location: same directory as source, in an `archive` subfolder\n  - Example: `\u002Fpath\u002Fto\u002Farchitecture.md` --> `\u002Fpath\u002Fto\u002Farchive\u002Farchitecture.md`\n- Ask: Archive location (`[y]` to use default: `[default-archive-path]`, or provide custom path)\n- If user accepts default: use default archive path\n- If user provides custom path: use custom archive path\n- Create archive directory if it does not exist\n- Move original document to archive location\n- Confirm move to user: \"Original document moved to: [archive-path]\"\n\n#### If user selects `k` (keep)\n\n- Display warning to user:\n  - Keeping both original and sharded versions is NOT recommended\n  - The discover_inputs protocol may load the wrong version\n  - Updates to one will not reflect in the other\n  - Duplicate content taking up space\n  - Consider deleting or archiving the original document\n- Confirm user choice: \"Original document kept at: [source-document-path]\"\n\n## HALT CONDITIONS\n\n- HALT if npx command fails or produces no output files\n",{"name":5,"description":7},"main","6a38430d5c23377d52d12343bfc156063f577e1d",".continue\u002Fskills\u002Fbmad-shard-doc","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR","https:\u002F\u002Fgithub.com\u002Fjsacko","2026-06-22 14:57:27",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add jsacko\u002FOpenDFIR --skill bmad-shard-doc",{"tool":53,"command":54},"bunx","bunx skills add jsacko\u002FOpenDFIR --skill bmad-shard-doc",{"tool":56,"command":57},"pnpm","pnpm dlx skills add jsacko\u002FOpenDFIR --skill bmad-shard-doc","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.continue\u002Fskills\u002Fbmad-shard-doc\u002FSKILL.md",true,[],[62,91,112,131,152,165],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":71,"publishedAt":36},"01M71PW68SHKJ6357YZJH4ES0E","agent-tonin","Pressure-tests incident response product design against real SOC and DFIR constraints. Use when the user asks to talk to Tonin, requests the Incident Response Strategist, or needs a senior security design partner to challenge incident response automation ideas.","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002Fskills\u002Fagent-tonin\u002FSKILL.md",[68],{"categoryNo":69,"categoryName":70,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[72,73,74,75,76,77,78,79,30,80,81,82,83,84,85,86,87,88,89,90],"agent tonin","ideas","senior security","dfir","incident","challenge","tests","design","when","product design","automation","incident response","soc","design partner","requests","product","senior","strategist","security",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":98,"publishedAt":36},"01M71PW3BV6P3JK7MFN31TA61D","bmad-workflow-builder","Builds, converts, and analyzes workflows and skills. Use when the user requests to \"build a workflow\", \"modify a workflow\", \"quality check workflow\", \"analyze skill\", or \"convert a skill\".","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.continue\u002Fskills\u002Fbmad-workflow-builder\u002FSKILL.md",[97],{"categoryNo":69,"categoryName":70,"taxonomyType":21,"taxonomyTypeDesc":22},[99,100,101,24,102,86,35,103,104,105,106,107,108,80,109,30,110,111],"builder","workflow","workflow builder","bmad workflow builder","a skill","quality","build","analyze","check","convert","workflows","quality check","modify",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":36},"01M71PW0ETTF8DA2C6HB77FPNX","bmad-validate-prd","Validate a PRD against standards. Use when the user says \"validate this PRD\" or \"run PRD validation\"","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.continue\u002Fskills\u002Fbmad-validate-prd\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[124,125,24,126,127,128,30,80,129,130,35],"validate","bmad validate prd","prd","validate prd","standards","run","validation",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":140,"publishedAt":36},"01M71PVY254CKN2PNAEX41CRR9","bmad-technical-research","Conduct technical research on technologies and architecture. Use when the user says they would like to do or produce a technical research report","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.continue\u002Fskills\u002Fbmad-technical-research\u002FSKILL.md",[137],{"categoryNo":138,"categoryName":139,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[141,142,143,24,144,145,146,147,30,80,148,149,150,151,35],"technical research","bmad technical research","technical","research","conduct","do","produce","architecture","to do","research report","report",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":36},"01M71PVWCA63WBH08JHVV6WV75","bmad-sprint-status","Summarize sprint status and surface risks. Use when the user says \"check sprint status\" or \"show sprint status\"","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.continue\u002Fskills\u002Fbmad-sprint-status\u002FSKILL.md",[],[159,24,160,161,162,35,107,163,80,30,164],"status","bmad sprint status","sprint","sprint status","summarize","show",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":36},"01M71PVT03ZW4PQVV5TZDNPBXH","bmad-sprint-planning","Generate sprint status tracking from epics. Use when the user says \"run sprint planning\" or \"generate sprint plan\"","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.continue\u002Fskills\u002Fbmad-sprint-planning\u002FSKILL.md",[],[161,172,173,24,174,159,35,175,176,129,177,162,178,80,30],"bmad sprint planning","planning","sprint planning","sprint plan","tracking","generate","plan"]