[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DNE6SSTX1B47RVGD21XCD1":3,"skill-same:01M6DNE6SSTX1B47RVGD21XCD1":87},{"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":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6DNE6SSTX1B47RVGD21XCD1","aac-edit-prd",null,"Edit an existing PRD. Use when the user says \"edit this PRD\".","msayedshokry\u002FAgileAgentCanvasExt","msayedshokry","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35009459?v=4","01M6DN5RZZ297CGWTNJ6ERZQ8W","Mohamed Sayed","01M6DN5S4XS7SVCSXZRW2XR0XF",3,"MIT","https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[24,25,26,27,28],"prd","edit","aac edit prd","user","use","2026-11-10 10:12:30",false,"---\nname: aac-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","473351382920a74eb8f353f979a06f6f05bb5f59","resources\u002F_aac\u002Fskills\u002Faac-edit-prd",0,"https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt","https:\u002F\u002Fgithub.com\u002Fmsayedshokry","2026-08-29 02:00:07",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add msayedshokry\u002FAgileAgentCanvasExt --skill aac-edit-prd",{"tool":47,"command":48},"bunx","bunx skills add msayedshokry\u002FAgileAgentCanvasExt --skill aac-edit-prd",{"tool":50,"command":51},"pnpm","pnpm dlx skills add msayedshokry\u002FAgileAgentCanvasExt --skill aac-edit-prd","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002FSKILL.md",true,[55,61,67,71,75,79,83],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"customize.toml","OTHER","其他",1699,"https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002Fcustomize.toml",{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"data\u002Fprd-purpose.md","REFERENCE","参考文档",7246,"https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002Fdata\u002Fprd-purpose.md",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"steps-e\u002Fstep-e-01-discovery.md",7907,"https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002Fsteps-e\u002Fstep-e-01-discovery.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"steps-e\u002Fstep-e-01b-legacy-conversion.md",6529,"https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002Fsteps-e\u002Fstep-e-01b-legacy-conversion.md",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"steps-e\u002Fstep-e-02-review.md",7659,"https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002Fsteps-e\u002Fstep-e-02-review.md",{"path":80,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":81,"sourceHtmlUrl":82},"steps-e\u002Fstep-e-03-edit.md",7290,"https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002Fsteps-e\u002Fstep-e-03-edit.md",{"path":84,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":85,"sourceHtmlUrl":86},"steps-e\u002Fstep-e-04-complete.md",5334,"https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Fskills\u002Faac-edit-prd\u002Fsteps-e\u002Fstep-e-04-complete.md",[88,114,133,146,169,185],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":102,"publishedAt":29},"01M6DNRTHE3M1XG3KDJTEF6BG6","bmad-teach-me-testing","Teach testing progressively through structured sessions. Use when user says \"lets learn testing\" or \"I want to study test practices\"","https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Ftea\u002Fworkflows\u002Ftestarch\u002Fbmad-teach-me-testing\u002FSKILL.md",[94,99],{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":100,"categoryName":101,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000039","教师与教育",[103,104,105,106,107,108,109,110,111,27,28,112,113],"bmad","me","bmad teach me testing","teach me","teach","testing","test","sessions","learn","study","structured",{"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":121,"publishedAt":29},"01M6DNRG27V77JEGMPMJVRY0Q5","aac-testarch-trace","Generate traceability matrix and quality gate decision. Use when the user says \"lets create traceability matrix\" or \"I want to analyze test coverage\"","https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Ftea\u002Fworkflows\u002Ftestarch\u002Faac-testarch-trace\u002FSKILL.md",[120],{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},[122,123,109,124,125,126,127,128,129,27,130,28,131,132],"aac testarch trace","trace","quality gate","create","generate","analyze","quality","decision","coverage","test coverage","gate",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":140,"publishedAt":29},"01M6DNR70G1S0DGDSHRWT1S1DD","aac-testarch-test-review","Review test quality using best practices validation. Use when user says \"lets review tests\" or \"I want to evaluate test quality\"","https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Ftea\u002Fworkflows\u002Ftestarch\u002Faac-testarch-test-review\u002FSKILL.md",[139],{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},[141,142,109,143,144,128,27,28,145],"review","aac testarch test review","best practices","validation","tests",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":159,"publishedAt":29},"01M6DNQXV8F40EE78ZMWGWRPJM","aac-testarch-test-design","Create system-level or epic-level test plans. Use when the user says \"lets design test plan\" or \"I want to create test strategy\"","https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Ftea\u002Fworkflows\u002Ftestarch\u002Faac-testarch-test-design\u002FSKILL.md",[152,153,156],{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},{"categoryNo":154,"categoryName":155,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":157,"categoryName":158,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000032","设计师",[160,161,109,162,27,125,163,164,165,166,28,167,168],"aac testarch test design","test design","design","test plan","plan","system","strategy","test strategy","plans",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":29},"01M6DNQNG0T7Q5DKV3C03RY35D","aac-testarch-nfr","Audit NFR evidence for performance, security, reliability, and scalability. Use when implementation evidence exists and the user says \"audit NFR evidence\", \"audit NFRs\", or \"evaluate non-functional requirements\"","https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Ftea\u002Fworkflows\u002Ftestarch\u002Faac-testarch-nfr\u002FSKILL.md",[],[176,177,178,179,180,181,27,182,183,28,184],"aac testarch nfr","reliability","evidence","implementation","scalability","requirements","audit","performance","security",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":192,"publishedAt":29},"01M6DNQDPTGB49D8AAJV4GN2H8","aac-testarch-framework","Initialize test framework with Playwright or Cypress. Use when the user says \"lets setup test framework\" or \"I want to initialize testing framework\"","https:\u002F\u002Fgithub.com\u002Fmsayedshokry\u002FAgileAgentCanvasExt\u002Fblob\u002Fmain\u002Fresources\u002F_aac\u002Ftea\u002Fworkflows\u002Ftestarch\u002Faac-testarch-framework\u002FSKILL.md",[191],{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},[193,194,195,27,28,196,197,198,109,199,108,200],"aac testarch framework","framework","initialize","testing framework","setup","test framework","playwright","cypress"]