[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N7S9CS5WSE3XWHF3D62G6A":3,"skill-same:01M6N7S9CS5WSE3XWHF3D62G6A":68},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M6N7S9CS5WSE3XWHF3D62G6A","mh-cto-sdlc-prd-validate",null,"Imad-Oute\u002FMicroHard","Imad-Oute","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F139675528?v=4","01M6N68WHDQ53HQJQ5Y84AGMWX","imad outemgount","01M6N68WP1YPV15H5RTGQHM02G",2,"MIT","https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fdepartments\u002Fcto\u002Fsdlc\u002Fphase-2-product-definition\u002Fmh-cto-sdlc-prd-validate\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[23,24,25,26,27],"validate","prd","sdlc","cto","mh cto sdlc prd validate","2026-11-10 10:12:30",false,"---\nname: mh-cto-sdlc-prd-validate\ndescription: PRD Validation — audits the PRD for internal consistency, Phase 1 traceability, and readiness to begin epic mapping. Flags invented features, uncovered goals, and constraint blindspots. Run after prd-create. Trigger phrases: \"validate the PRD\", \"check the PRD\", \"is the PRD ready\", \"PRD review\", \"audit product requirements\".\nmetadata:\n  author: MicroHard\n  version: 1.0.0\n  phase: 2-product-definition\n  module: cto-sdlc\n---\n\n# PRD Validate\n\nValidation is adversarial. Your job is not to confirm the PRD looks good — it is to find what the PRD got wrong, invented without evidence, or failed to cover. Every finding must be specific: name the PRD section, name the Phase 1 artifact that contradicts or doesn't support it.\n\n## Step 1 — Load\n\nConfirm both artifacts are present:\n\n- PRD (`_mh-output\u002Fcto\u002Fsdlc\u002Fprd-create\u002F...prd.md`) ✓ \u002F ✗\n- All Phase 1 artifacts via `persistent_facts` ✓ \u002F ✗\n\nIf PRD is missing: \"Cannot validate. Run `\u002Fmh-cto-sdlc-prd-create` first.\"\n\n## Step 2 — Traceability Audit\n\nFor every Must-priority feature in the PRD Feature Catalogue:\n\n**Check 1 — Source exists**\nDoes the feature have a named source in Phase 1 (journey map pain point, research finding, or problem statement)? If the PRD lists a feature with no source: **INVENTED** — flag it.\n\n**Check 2 — Source supports priority**\nIs the named source actually high-pain (pain level 2-3 in journey map, or Tier 1 research finding)? A feature sourced from a minor observation should not be Must-priority. Downgrade recommendation → **PRIORITY MISMATCH**.\n\n**Check 3 — Domain model coverage**\nIs every feature's subject entity present in the domain model? If the feature references an entity not in the domain model: **DOMAIN GAP** — the domain model needs updating before epic mapping.\n\n## Step 3 — Goal Coverage Audit\n\nFor every Goal in the PRD:\n\n**Check 4 — Feature coverage**\nDoes at least one Must-priority feature directly serve this goal? A goal with no Must feature is aspirational noise — flag it.\n\n**Check 5 — Metric exists**\nDoes each goal have a named success metric? A goal without a metric cannot be validated at launch.\n\n**Check 6 — Persona coverage**\nDoes the goal serve at least one named persona? A goal that serves no one in the stakeholder map should not be in the PRD.\n\n## Step 4 — Non-Goals Audit\n\n**Check 7 — Hard constraints reflected**\nDoes every hard constraint from the constraint inventory appear in Non-Goals or Constraints Summary? If a hard constraint is not represented anywhere in the PRD: **CONSTRAINT BLINDSPOT** — the PRD is committing to something the constraint prohibits.\n\n**Check 8 — Journey map out-of-scope reflected**\nDoes the PRD's Non-Goals list match the journey map's out-of-scope definition? Things the journey map excluded that the PRD includes are scope creep.\n\n## Step 5 — Assumption Audit\n\n**Check 9 — Active Unverified assumptions visible**\nDoes the PRD's Active Assumptions section include all Unverified assumptions from the assumption list? Missing unverified assumptions means the PRD is hiding its own risk.\n\n**Check 10 — No Invalidated assumptions as foundation**\nDoes any PRD feature rest on an assumption that Phase 1 invalidated? This is a phase 0 re-entry flag passed forward.\n\n## Step 6 — Conditional Pass Requirements (if applicable)\n\nIf the Phase 1 gate verdict was Conditional Pass, check each named Phase 2 requirement from the gate verdict:\n\n**Check 11 — Every Conditional Pass requirement addressed**\nRead the gate verdict's Phase 2 requirements. Is each one addressed in the PRD? A PRD that ignores a gate requirement is not valid.\n\n## Step 7 — Build Validation Report\n\nAfter all checks, compile findings:\n\n**Finding tiers:**\n\n- **BLOCKING** — Must fix before epic mapping begins. (Invented Must features, constraint blindspots, missing gate requirements)\n- **REQUIRED** — Must fix before story-spec begins. (Priority mismatches, goal without metric, missing assumption)\n- **ADVISORY** — Improve now or note it. (Could-priority features without sources, minor wording mismatches)\n\nFor each BLOCKING or REQUIRED finding:\n\n- Name the finding type (from check list above)\n- Name the specific PRD section and line\n- Name the Phase 1 artifact that surfaces the conflict\n- State what must change\n\n## Step 8 — Resolve Findings\n\nFor each BLOCKING finding: ask the user to resolve it now. One at a time.\n\nFor each REQUIRED finding: present all at once and ask the user to address them before moving to story-spec.\n\nFor ADVISORY findings: list them and ask if the user wants to address them now or log them.\n\nAfter all BLOCKING and REQUIRED findings are resolved, update the PRD with the user's resolutions and save the updated version.\n\n## Step 9 — Write Validation Report\n\nSave to `_mh-output\u002Fcto\u002Fsdlc\u002Fprd-validate\u002F{YYYY-MM-DD}_{r###}_prd-validation.md`:\n\n```markdown\n# PRD Validation Report\n\n**Date:** {date}\n**PRD Version:** {from PRD header}\n**Result:** Clean | Requires Revision\n\n## Findings\n\n### BLOCKING\n\n{list or \"None\"}\n\n### REQUIRED\n\n{list or \"None\"}\n\n### ADVISORY\n\n{list or \"None\"}\n\n## Resolution Log\n\n| Finding   | Resolution     | Status              |\n| --------- | -------------- | ------------------- |\n| {finding} | {what changed} | Resolved \u002F Deferred |\n\n## Validation Result\n\n{Clean: \"PRD is traceable and consistent. Proceed to epic mapping.\"}\n{Requires Revision: \"PRD has [N] unresolved BLOCKING findings. Do not proceed.\"}\n```\n\n## Step 10 — Present Summary\n\n**PRD Validation: {Clean | Requires Revision}**\n\n**Checks passed:** {N}\u002F{11}\n\n**Findings:** {N} BLOCKING, {N} REQUIRED, {N} ADVISORY\n\n**Next step:** {If clean → Run `\u002Fmh-cto-sdlc-epic-map`} {If not → list what must be fixed}\n","# PRD Validate\n\nValidation is adversarial. Your job is not to confirm the PRD looks good — it is to find what the PRD got wrong, invented without evidence, or failed to cover. Every finding must be specific: name the PRD section, name the Phase 1 artifact that contradicts or doesn't support it.\n\n## Step 1 — Load\n\nConfirm both artifacts are present:\n\n- PRD (`_mh-output\u002Fcto\u002Fsdlc\u002Fprd-create\u002F...prd.md`) ✓ \u002F ✗\n- All Phase 1 artifacts via `persistent_facts` ✓ \u002F ✗\n\nIf PRD is missing: \"Cannot validate. Run `\u002Fmh-cto-sdlc-prd-create` first.\"\n\n## Step 2 — Traceability Audit\n\nFor every Must-priority feature in the PRD Feature Catalogue:\n\n**Check 1 — Source exists**\nDoes the feature have a named source in Phase 1 (journey map pain point, research finding, or problem statement)? If the PRD lists a feature with no source: **INVENTED** — flag it.\n\n**Check 2 — Source supports priority**\nIs the named source actually high-pain (pain level 2-3 in journey map, or Tier 1 research finding)? A feature sourced from a minor observation should not be Must-priority. Downgrade recommendation → **PRIORITY MISMATCH**.\n\n**Check 3 — Domain model coverage**\nIs every feature's subject entity present in the domain model? If the feature references an entity not in the domain model: **DOMAIN GAP** — the domain model needs updating before epic mapping.\n\n## Step 3 — Goal Coverage Audit\n\nFor every Goal in the PRD:\n\n**Check 4 — Feature coverage**\nDoes at least one Must-priority feature directly serve this goal? A goal with no Must feature is aspirational noise — flag it.\n\n**Check 5 — Metric exists**\nDoes each goal have a named success metric? A goal without a metric cannot be validated at launch.\n\n**Check 6 — Persona coverage**\nDoes the goal serve at least one named persona? A goal that serves no one in the stakeholder map should not be in the PRD.\n\n## Step 4 — Non-Goals Audit\n\n**Check 7 — Hard constraints reflected**\nDoes every hard constraint from the constraint inventory appear in Non-Goals or Constraints Summary? If a hard constraint is not represented anywhere in the PRD: **CONSTRAINT BLINDSPOT** — the PRD is committing to something the constraint prohibits.\n\n**Check 8 — Journey map out-of-scope reflected**\nDoes the PRD's Non-Goals list match the journey map's out-of-scope definition? Things the journey map excluded that the PRD includes are scope creep.\n\n## Step 5 — Assumption Audit\n\n**Check 9 — Active Unverified assumptions visible**\nDoes the PRD's Active Assumptions section include all Unverified assumptions from the assumption list? Missing unverified assumptions means the PRD is hiding its own risk.\n\n**Check 10 — No Invalidated assumptions as foundation**\nDoes any PRD feature rest on an assumption that Phase 1 invalidated? This is a phase 0 re-entry flag passed forward.\n\n## Step 6 — Conditional Pass Requirements (if applicable)\n\nIf the Phase 1 gate verdict was Conditional Pass, check each named Phase 2 requirement from the gate verdict:\n\n**Check 11 — Every Conditional Pass requirement addressed**\nRead the gate verdict's Phase 2 requirements. Is each one addressed in the PRD? A PRD that ignores a gate requirement is not valid.\n\n## Step 7 — Build Validation Report\n\nAfter all checks, compile findings:\n\n**Finding tiers:**\n\n- **BLOCKING** — Must fix before epic mapping begins. (Invented Must features, constraint blindspots, missing gate requirements)\n- **REQUIRED** — Must fix before story-spec begins. (Priority mismatches, goal without metric, missing assumption)\n- **ADVISORY** — Improve now or note it. (Could-priority features without sources, minor wording mismatches)\n\nFor each BLOCKING or REQUIRED finding:\n\n- Name the finding type (from check list above)\n- Name the specific PRD section and line\n- Name the Phase 1 artifact that surfaces the conflict\n- State what must change\n\n## Step 8 — Resolve Findings\n\nFor each BLOCKING finding: ask the user to resolve it now. One at a time.\n\nFor each REQUIRED finding: present all at once and ask the user to address them before moving to story-spec.\n\nFor ADVISORY findings: list them and ask if the user wants to address them now or log them.\n\nAfter all BLOCKING and REQUIRED findings are resolved, update the PRD with the user's resolutions and save the updated version.\n\n## Step 9 — Write Validation Report\n\nSave to `_mh-output\u002Fcto\u002Fsdlc\u002Fprd-validate\u002F{YYYY-MM-DD}_{r###}_prd-validation.md`:\n\n```markdown\n# PRD Validation Report\n\n**Date:** {date}\n**PRD Version:** {from PRD header}\n**Result:** Clean | Requires Revision\n\n## Findings\n\n### BLOCKING\n\n{list or \"None\"}\n\n### REQUIRED\n\n{list or \"None\"}\n\n### ADVISORY\n\n{list or \"None\"}\n\n## Resolution Log\n\n| Finding   | Resolution     | Status              |\n| --------- | -------------- | ------------------- |\n| {finding} | {what changed} | Resolved \u002F Deferred |\n\n## Validation Result\n\n{Clean: \"PRD is traceable and consistent. Proceed to epic mapping.\"}\n{Requires Revision: \"PRD has [N] unresolved BLOCKING findings. Do not proceed.\"}\n```\n\n## Step 10 — Present Summary\n\n**PRD Validation: {Clean | Requires Revision}**\n\n**Checks passed:** {N}\u002F{11}\n\n**Findings:** {N} BLOCKING, {N} REQUIRED, {N} ADVISORY\n\n**Next step:** {If clean → Run `\u002Fmh-cto-sdlc-epic-map`} {If not → list what must be fixed}\n",{},"main","2ec3bbf5ba353f3fdd2c6d842b791fd75d08a635","src\u002Fdepartments\u002Fcto\u002Fsdlc\u002Fphase-2-product-definition\u002Fmh-cto-sdlc-prd-validate",0,"https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard","https:\u002F\u002Fgithub.com\u002FImad-Oute","https:\u002F\u002Fimad369.vercel.app\u002F","I'm just starting my Journey.","2026-05-13 03:02:22",{"source":7,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add Imad-Oute\u002FMicroHard --skill mh-cto-sdlc-prd-validate",{"tool":48,"command":49},"bunx","bunx skills add Imad-Oute\u002FMicroHard --skill mh-cto-sdlc-prd-validate",{"tool":51,"command":52},"pnpm","pnpm dlx skills add Imad-Oute\u002FMicroHard --skill mh-cto-sdlc-prd-validate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fdepartments\u002Fcto\u002Fsdlc\u002Fphase-2-product-definition\u002Fmh-cto-sdlc-prd-validate\u002FSKILL.md",true,[56,62],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"customize.toml","OTHER","其他",809,"https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fdepartments\u002Fcto\u002Fsdlc\u002Fphase-2-product-definition\u002Fmh-cto-sdlc-prd-validate\u002Fcustomize.toml",{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"mh-skill-manifest.yaml","REFERENCE","参考文档",399,"https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fdepartments\u002Fcto\u002Fsdlc\u002Fphase-2-product-definition\u002Fmh-cto-sdlc-prd-validate\u002Fmh-skill-manifest.yaml",[69,96,113,127,144,161],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":28},"01M6N8JYRPSHVW4Y76X5SAGRDX","mh-vo-vault-brief","Weekly vault intelligence report — health score, pipeline status, OS alignment, and top issues. Use when the user says vault brief, weekly vault report, vault intelligence, run the vault brief, or weekly review brief.","https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fvo\u002F5-report\u002Fmh-vo-vault-brief\u002FSKILL.md",[],[76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],"mh vo vault brief","brief","vault","intelligence report","top","weekly","os","pipeline","health","issues","report","run","status","review","weekly review","user","use","pipeline status","alignment","intelligence",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":28},"01M6N8JCK7E7Y19940RBB51R96","mh-vo-output-bridge","Scan _mh-output\u002F for new artifacts and create or update corresponding vault entries. Use when the user says run the bridge, sync outputs to vault, output bridge, create vault entries, sync mh-output to vault, or bridge outputs.","https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fvo\u002F4-bridge\u002Fmh-vo-output-bridge\u002FSKILL.md",[],[103,104,105,78,106,107,87,108,109,110,91,111,112,92],"bridge","output","mh vo output bridge","artifacts","update","create","sync","for","entries","scan",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":28},"01M6N8HXW3ENQ939C93R59W371","mh-vo-moc-builder","Create or update Maps of Content for vault sections and ensure every note is reachable from a MOC. Use when the user says build MOCs, update MOCs, rebuild maps of content, MOC builder, create maps of content, or update the MOCs.","https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fvo\u002F3-connect\u002Fmh-vo-moc-builder\u002FSKILL.md",[],[120,121,110,122,123,124,125,108,92,78,126,107,91],"builder","mh vo moc builder","note","build","rebuild","maps","content",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":28},"01M6N8HHZ30706B2ZS33X3MR42","mh-vo-link-architect","Identify missing vault connections and generate precise link recommendations. Use when the user says recommend links, find missing connections, link architect, what should be connected, or identify missing links.","https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fvo\u002F3-connect\u002Fmh-vo-link-architect\u002FSKILL.md",[],[134,135,136,91,137,138,139,140,141,92,142,78,143],"mh vo link architect","link","architect","recommend","links","missing","recommendations","connections","find","generate",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":28},"01M6N8H6FKWGTNFWS5PTPPTEN0","mh-vo-base-builder","Generate Obsidian Bases (.base files) for live database views of vault data. Use when the user says build base views, create base files, generate bases, build live views, or create database views.","https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fvo\u002F3-connect\u002Fmh-vo-base-builder\u002FSKILL.md",[],[151,152,153,120,78,154,155,156,143,108,157,91,110,158,123,159,160,92],"mh vo base builder","base builder","base","obsidian bases","data","database","obsidian","live","files","bases",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":28},"01M6N8GSRETQW3B9C843F1S1CP","mh-vo-taxonomy-enforcer","Audit vault tags and frontmatter, find drift, and apply corrections. Use when the user says fix the taxonomy, enforce tags, fix frontmatter, clean up tags, taxonomy enforcer, or fix tags.","https:\u002F\u002Fgithub.com\u002FImad-Oute\u002FMicroHard\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fvo\u002F2-route\u002Fmh-vo-taxonomy-enforcer\u002FSKILL.md",[],[168,169,170,171,172,173,174,175,176,177,92,178,91,142,78,179],"mh vo taxonomy enforcer","taxonomy","enforce","apply","frontmatter","tags","drift","clean","vault tags","up","fix","audit"]