[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PJ4CYVMP4VN791H4PB7MD":3,"skill-same:01M71PJ4CYVMP4VN791H4PB7MD":90},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":14,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M71PJ4CYVMP4VN791H4PB7MD","bmad-edit-prd",null,"Edit an existing PRD. Use when the user says \"edit this PRD\".","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.agents\u002Fskills\u002Fbmad-edit-prd\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32],"prd","bmad edit prd","edit","bmad","edit prd","user","use","Existing","when","2026-11-10 13:02:02",false,"---\nname: bmad-edit-prd\ndescription: 'Edit an existing PRD. Use when the user says \"edit this PRD\".'\n---\n\n# PRD Edit Workflow\n\n**Goal:** Edit and improve existing PRDs through structured enhancement workflow.\n\n**Your Role:** PRD improvement specialist.\n\nYou will continue to operate with your given name, identity, and communication_style, merged with the details of this role description.\n\n## Conventions\n\n- Bare paths (e.g. `steps-e\u002Fstep-e-01-discovery.md`) resolve from the skill root.\n- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).\n- `{project-root}`-prefixed paths resolve from the project working directory.\n- `{skill-name}` resolves to the skill directory's basename.\n\n## WORKFLOW ARCHITECTURE\n\nThis uses **step-file architecture** for disciplined execution:\n\n### Core Principles\n\n- **Micro-file Design**: Each step is a self-contained instruction file that is a part of an overall workflow that must be followed exactly\n- **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so\n- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed\n- **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document\n- **Append-Only Building**: Build documents by appending content as directed to the output file\n\n### Step Processing Rules\n\n1. **READ COMPLETELY**: Always read the entire step file before taking any action\n2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate\n3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection\n4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)\n5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step\n6. **LOAD NEXT**: When directed, read fully and follow the next step file\n\n### Critical Rules (NO EXCEPTIONS)\n\n- 🛑 **NEVER** load multiple step files simultaneously\n- 📖 **ALWAYS** read entire step file before execution\n- 🚫 **NEVER** skip steps or optimize the sequence\n- 💾 **ALWAYS** update frontmatter of output files when writing the final output for a specific step\n- 🎯 **ALWAYS** follow the exact instructions in the step file\n- ⏸️ **ALWAYS** halt at menus and wait for user input\n- 📋 **NEVER** create mental todo lists from future steps\n\n## On Activation\n\n### Step 1: Resolve the Workflow Block\n\nRun: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow`\n\n**If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:\n\n1. `{skill-root}\u002Fcustomize.toml` — defaults\n2. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.toml` — team overrides\n3. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.user.toml` — personal overrides\n\nAny missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.\n\n### Step 2: Execute Prepend Steps\n\nExecute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.\n\n### Step 3: Load Persistent Facts\n\nTreat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.\n\n### Step 4: Load Config\n\nLoad config from `{project-root}\u002F_bmad\u002Fbmm\u002Fconfig.yaml` and resolve:\n- Use `{user_name}` for greeting\n- Use `{communication_language}` for all communications\n- Use `{document_output_language}` for output documents\n- Use `{planning_artifacts}` for output location and artifact scanning\n- Use `{project_knowledge}` for additional context scanning\n\n### Step 5: Greet the User\n\nGreet `{user_name}`, speaking in `{communication_language}`.\n\n### Step 6: Execute Append Steps\n\nExecute each entry in `{workflow.activation_steps_append}` in order.\n\nActivation is complete. Begin the workflow below.\n\n## Execution\n\n✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`.\n✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`.\n\n**Edit Mode: Improving an existing PRD.**\n\nPrompt for PRD path: \"Which PRD would you like to edit? Please provide the path to the PRD.md file.\"\n\nThen read fully and follow: `.\u002Fsteps-e\u002Fstep-e-01-discovery.md`\n","# PRD Edit Workflow\n\n**Goal:** Edit and improve existing PRDs through structured enhancement workflow.\n\n**Your Role:** PRD improvement specialist.\n\nYou will continue to operate with your given name, identity, and communication_style, merged with the details of this role description.\n\n## Conventions\n\n- Bare paths (e.g. `steps-e\u002Fstep-e-01-discovery.md`) resolve from the skill root.\n- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).\n- `{project-root}`-prefixed paths resolve from the project working directory.\n- `{skill-name}` resolves to the skill directory's basename.\n\n## WORKFLOW ARCHITECTURE\n\nThis uses **step-file architecture** for disciplined execution:\n\n### Core Principles\n\n- **Micro-file Design**: Each step is a self-contained instruction file that is a part of an overall workflow that must be followed exactly\n- **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so\n- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed\n- **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document\n- **Append-Only Building**: Build documents by appending content as directed to the output file\n\n### Step Processing Rules\n\n1. **READ COMPLETELY**: Always read the entire step file before taking any action\n2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate\n3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection\n4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)\n5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step\n6. **LOAD NEXT**: When directed, read fully and follow the next step file\n\n### Critical Rules (NO EXCEPTIONS)\n\n- 🛑 **NEVER** load multiple step files simultaneously\n- 📖 **ALWAYS** read entire step file before execution\n- 🚫 **NEVER** skip steps or optimize the sequence\n- 💾 **ALWAYS** update frontmatter of output files when writing the final output for a specific step\n- 🎯 **ALWAYS** follow the exact instructions in the step file\n- ⏸️ **ALWAYS** halt at menus and wait for user input\n- 📋 **NEVER** create mental todo lists from future steps\n\n## On Activation\n\n### Step 1: Resolve the Workflow Block\n\nRun: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow`\n\n**If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:\n\n1. `{skill-root}\u002Fcustomize.toml` — defaults\n2. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.toml` — team overrides\n3. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.user.toml` — personal overrides\n\nAny missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.\n\n### Step 2: Execute Prepend Steps\n\nExecute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.\n\n### Step 3: Load Persistent Facts\n\nTreat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.\n\n### Step 4: Load Config\n\nLoad config from `{project-root}\u002F_bmad\u002Fbmm\u002Fconfig.yaml` and resolve:\n- Use `{user_name}` for greeting\n- Use `{communication_language}` for all communications\n- Use `{document_output_language}` for output documents\n- Use `{planning_artifacts}` for output location and artifact scanning\n- Use `{project_knowledge}` for additional context scanning\n\n### Step 5: Greet the User\n\nGreet `{user_name}`, speaking in `{communication_language}`.\n\n### Step 6: Execute Append Steps\n\nExecute each entry in `{workflow.activation_steps_append}` in order.\n\nActivation is complete. Begin the workflow below.\n\n## Execution\n\n✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`.\n✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`.\n\n**Edit Mode: Improving an existing PRD.**\n\nPrompt for PRD path: \"Which PRD would you like to edit? Please provide the path to the PRD.md file.\"\n\nThen read fully and follow: `.\u002Fsteps-e\u002Fstep-e-01-discovery.md`\n",{"name":5,"description":7},"main","6a38430d5c23377d52d12343bfc156063f577e1d",".agents\u002Fskills\u002Fbmad-edit-prd","https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR","https:\u002F\u002Fgithub.com\u002Fjsacko","2026-06-22 14:57:27",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add jsacko\u002FOpenDFIR --skill bmad-edit-prd",{"tool":50,"command":51},"bunx","bunx skills add jsacko\u002FOpenDFIR --skill bmad-edit-prd",{"tool":53,"command":54},"pnpm","pnpm dlx skills add jsacko\u002FOpenDFIR --skill bmad-edit-prd","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbmad-edit-prd\u002FSKILL.md",true,[58,64,70,74,78,82,86],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"customize.toml","OTHER","其他",1701,"https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbmad-edit-prd\u002Fcustomize.toml",{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"data\u002Fprd-purpose.md","REFERENCE","参考文档",7246,"https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbmad-edit-prd\u002Fdata\u002Fprd-purpose.md",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"steps-e\u002Fstep-e-01-discovery.md",7907,"https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-01-discovery.md",{"path":75,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":76,"sourceHtmlUrl":77},"steps-e\u002Fstep-e-01b-legacy-conversion.md",6529,"https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-01b-legacy-conversion.md",{"path":79,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":80,"sourceHtmlUrl":81},"steps-e\u002Fstep-e-02-review.md",7661,"https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-02-review.md",{"path":83,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":84,"sourceHtmlUrl":85},"steps-e\u002Fstep-e-03-edit.md",7290,"https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-03-edit.md",{"path":87,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":88,"sourceHtmlUrl":89},"steps-e\u002Fstep-e-04-complete.md",5335,"https:\u002F\u002Fgithub.com\u002Fjsacko\u002FOpenDFIR\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-04-complete.md",[91,121,142,156,177,190],{"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":102,"publishedAt":33},"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",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[103,104,105,106,107,108,109,110,30,32,111,112,113,114,115,116,117,118,119,120],"agent tonin","ideas","senior security","dfir","incident","challenge","tests","design","product design","automation","incident response","soc","design partner","requests","product","senior","strategist","security",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":128,"publishedAt":33},"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",[127],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},[129,130,131,27,132,116,29,133,134,135,136,137,138,32,139,30,140,141],"builder","workflow","workflow builder","bmad workflow builder","a skill","quality","build","analyze","check","convert","workflows","quality check","modify",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":149,"publishedAt":33},"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",[148],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[150,151,27,24,152,153,30,32,154,155,29],"validate","bmad validate prd","validate prd","standards","run","validation",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":165,"publishedAt":33},"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",[162],{"categoryNo":163,"categoryName":164,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000021","资料检索与研究",[166,167,168,27,169,170,171,172,30,32,173,174,175,176,29],"technical research","bmad technical research","technical","research","conduct","do","produce","architecture","to do","research report","report",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":33},"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",[],[184,27,185,186,187,29,137,188,32,30,189],"status","bmad sprint status","sprint","sprint status","summarize","show",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":196,"publishedAt":33},"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",[],[186,197,198,27,199,184,29,200,201,154,202,187,203,32,30],"bmad sprint planning","planning","sprint planning","sprint plan","tracking","generate","plan"]