{"id":"c02c7bae-2994-4ff5-acb5-47accb1f6871","shortId":"3dHwbN","kind":"skill","title":"utility-pm-skill-validate","tagline":"Audits an existing pm-skills skill against structural conventions and quality criteria. Produces a structured validation report with pass/fail checks, severity-graded findings, and actionable recommendations. Use when checking whether a skill meets repo standards before shipping ","description":"# PM Skill Validate\n\nThis skill audits an existing pm-skills skill against the repo's structural\nconventions and quality criteria. It produces a validation report that a\nhuman can scan and that `/pm-skill-iterate` can consume as input.\n\nThe validator checks two tiers:\n- **Tier 1 (Structural)** . deterministic checks that mirror CI: frontmatter,\n  naming, file presence, description word count.\n- **Tier 2 (Quality)** . LLM-assessed coherence checks: does the output\n  contract reference the template? Is the example complete? Are checklist\n  items testable?\n\n## When to Use\n\n- After creating a skill with `/pm-skill-builder`, before shipping\n- After manually editing a skill, to confirm it still passes conventions\n- Before running `/pm-skill-iterate`, to identify what needs improvement\n- When a convention changes, to audit which skills need updating (batch mode)\n- When reviewing a contributed skill for quality and completeness\n\n## When NOT to Use\n\n- To create a new skill from scratch -> use `/pm-skill-builder`\n- To fix or improve a skill -> use `/pm-skill-iterate` (feed it this report)\n- To run CI checks in a pipeline -> use `scripts/lint-skills-frontmatter.sh`\n  (this skill is for interactive, deeper-than-CI validation)\n\n## Instructions\n\nWhen asked to validate a skill, follow these steps:\n\n### Step 1: Identify the Target\n\nAccept the skill name in any form:\n- Directory name: `deliver-prd`\n- Full path: `skills/deliver-prd/SKILL.md`\n- Slash command: `/prd`\n\nResolve to the canonical directory path: `skills/{name}/`.\n\nIf the skill directory does not exist, report immediately:\n\n```\n# Validation Report: {input}\nResult: FAIL\nSkill directory `skills/{input}/` does not exist.\n```\n\n**Batch mode:** If the input is `--all`, run Tier 1 structural checks\nacross all skills and produce a summary table (see Step 5). Do not run\nTier 2 in batch mode.\n\n### Step 2: Read Skill Files\n\nRead all files in the skill directory:\n\n| File | Required | Purpose |\n|------|----------|---------|\n| `SKILL.md` | yes | Frontmatter + instructions |\n| `references/TEMPLATE.md` | yes | Output template |\n| `references/EXAMPLE.md` | yes | Worked example |\n| `HISTORY.md` | no | Version history (if present) |\n\nAlso read:\n- The corresponding command file: `commands/{command-name}.md`\n- The AGENTS.md entry for this skill\n\nIf reading files is not possible (MCP/embedded environment), ask the user\nto paste the content of each file before proceeding (see Degraded Mode).\n\n### Step 3: Run Tier 1 . Structural Checks\n\nRun these deterministic checks. Each produces a `PASS` or `FAIL` line.\n\n| Check ID | What to check | Pass condition |\n|----------|--------------|----------------|\n| `name-match` | Frontmatter `name` matches directory name | Exact string match |\n| `description-present` | Frontmatter `description` exists | Non-empty value |\n| `description-length` | Description word count | 20-100 words |\n| `version-present` | Frontmatter `version` exists | Non-empty, valid SemVer |\n| `updated-present` | Frontmatter `updated` exists | Non-empty, ISO date |\n| `license-present` | Frontmatter `license` exists | Non-empty value |\n| `phase-classification` | Phase/classification consistency | Domain has `phase:`, foundation/utility has `classification:`, not both |\n| `template-exists` | `references/TEMPLATE.md` exists | File present |\n| `template-sections` | TEMPLATE.md has sufficient structure | ≥3 `##` level-2 headers |\n| `example-exists` | `references/EXAMPLE.md` exists | File present |\n| `command-exists` | Command file exists in `commands/` | File present and references correct skill path |\n| `agents-entry` | AGENTS.md has an entry for this skill | Entry exists with matching `**Path:**` |\n\n### Step 4: Run Tier 2 . Quality Checks\n\nRun these LLM-assessed checks. Each produces a `PASS`, `WARN`, or `INFO`\nline. Tier 2 findings are capped at `WARN` unless objectively grounded\n(placeholder leakage is the exception . it can `FAIL`).\n\n| Check ID | What to assess | How to assess | Max severity |\n|----------|---------------|---------------|-------------|\n| `output-contract-coverage` | SKILL.md references the template | Check for explicit reference to `references/TEMPLATE.md` or \"use the template\" in an Output section. Accept either pattern as valid. WARN only if template is not referenced at all. | WARN |\n| `checklist-verifiability` | Quality checklist items are testable | Read each checklist item. Flag items that are vague (\"is good quality\") vs. specific (\"metrics are measurable\"). WARN if ≥2 items are vague. | WARN |\n| `example-completeness` | EXAMPLE.md fills all template sections | Compare `##` headers in TEMPLATE.md against `##` headers in EXAMPLE.md. WARN if EXAMPLE.md is missing sections that appear in the template. Also check for unresolved placeholders. Line count is informational only . report it but do not gate on it. | WARN |\n| `template-example-alignment` | EXAMPLE.md follows TEMPLATE.md structure | Compare section header ordering. WARN if EXAMPLE.md has sections in a different order or uses different header names than TEMPLATE.md. | WARN |\n| `description-actionability` | Description tells *when* to use the skill | Check for a trigger phrase like \"Use when...\" or \"Use for...\" in the frontmatter description. WARN if the description only says *what* the skill does without indicating *when* to use it. | WARN |\n| `instruction-clarity` | Instructions are numbered and imperative | Check for `### Step` headings or a numbered list pattern in the Instructions section. WARN if instructions are prose paragraphs without clear step structure. | WARN |\n| `placeholder-leakage` | No leftover scaffolding in any shipped file | Scan SKILL.md, TEMPLATE.md, and EXAMPLE.md for: `[Placeholder]` or `[Feature Name]` patterns, `<!-- ... -->` HTML comments (except the license header), template guidance blockquotes that should have been removed, and authoring notes like \"TODO\" or \"FIXME\". FAIL if any are found . this is objectively grounded. | FAIL |\n| `when-not-to-use` | \"When NOT to Use\" section present in SKILL.md | Check for a section with \"When NOT to Use\" or similar heading. INFO only . this is present in 1/27 shipped skills and is not yet a convention. | INFO |\n\n**Quality standard framing:** These checks validate against current library\nconventions . what the shipped library actually does today. Findings graded\nWARN or INFO represent the v2.8 quality standard that newer skills (built\nwith `/pm-skill-builder`) meet. Older skills may legitimately receive these\nfindings until iterated through the lifecycle.\n\n### Step 5: Produce the Validation Report\n\nAssemble the report using this exact structure. F-11 (`/pm-skill-iterate`)\nparses this report by section headings and pipe-delimited fields.\n\n```\n# Validation Report: {skill-name}\nDate: {YYYY-MM-DD}\nSkill version: {version from frontmatter}\nValidator version: 1.0.0\nReport schema: v1\nResult: {PASS | WARN | FAIL}\n\n## Summary\n{1-2 sentence overall assessment.}\nErrors: {n} | Warnings: {n} | Info: {n}\n\n> Tier 2 findings are heuristic quality assessments and may require human review.\n\n## Structural Checks\n- {STATUS} | structural | {check-id} | {message}\n- {STATUS} | structural | {check-id} | {message}\n...\n\n## Quality Checks\n- {STATUS} | quality | {check-id} | {message}\n- {STATUS} | quality | {check-id} | {message}\n...\n\n## Recommendations\n1. {STATUS} | {check-id} | Target: {file-path}\n   Action: {what to do}\n2. {STATUS} | {check-id} | Target: {file-path}\n   Action: {what to do}\n...\n```\n\n**Report rules:**\n\n- **Result** = worst severity found: any FAIL → `FAIL`, else any WARN → `WARN`, else `PASS`.\n- **Structural Checks**: one line per Tier 1 check. STATUS is `PASS` or `FAIL`.\n- **Quality Checks**: one line per Tier 2 check. STATUS is `PASS`, `WARN`, or `INFO`.\n- **Recommendations**: only include checks that did NOT pass. Each recommendation\n  includes the check ID, the target file path, and a specific action.\n- If all checks pass, the Recommendations section should say: \"No issues found.\"\n- Omit passing checks from Recommendations . only list findings that need action.\n\n**Batch mode output** (when input is `--all`):\n\nRun Tier 1 structural checks only across all skills. Produce a summary table:\n\n```\n# Batch Validation Summary\nDate: {YYYY-MM-DD}\nValidator version: 1.0.0\nReport schema: v1\nSkills checked: {n}\n\n| Skill | Result | Errors | Warnings |\n|-------|--------|--------|----------|\n| deliver-prd | PASS | 0 | 0 |\n| define-hypothesis | WARN | 0 | 1 |\n| foundation-persona | FAIL | 1 | 0 |\n...\n\nSkills passing: {n}/{total}\nRun `/pm-skill-validate {skill}` for a detailed report.\n```\n\n## Degraded Mode\n\nIf you cannot read skill files directly (e.g., running via MCP or in an\nembedded environment without file system access):\n\n1. Ask the user to provide the content of each required file:\n   - `skills/{name}/SKILL.md`\n   - `skills/{name}/references/TEMPLATE.md`\n   - `skills/{name}/references/EXAMPLE.md`\n2. Run all checks against the provided content.\n3. Note in the report: \"Validated from user-provided content (file system not available).\"\n4. Batch mode is not available in degraded mode . single skill only.\n\n## Output Contract\n\nThe validator MUST produce a validation report following the format in Step 5.\n\nThe report:\n- Uses the exact section headings: `## Summary`, `## Structural Checks`,\n  `## Quality Checks`, `## Recommendations`\n- Uses pipe-delimited check lines: `STATUS | TIER | CHECK-ID | message`\n- Uses pipe-delimited recommendations: `STATUS | CHECK-ID | Target: path`\n  followed by `Action: description` on the next line\n- Includes `Report schema: v1` in the header for F-11 compatibility\n- Includes the Tier 2 caveat line in the Summary section\n\n## Quality Checklist\n\nBefore delivering the report, verify:\n\n- [ ] All Tier 1 structural checks were run (not skipped)\n- [ ] All Tier 2 quality checks were run (not skipped) . single skill mode only\n- [ ] Report follows the exact section and line format from Step 5\n- [ ] Every non-passing check appears in Recommendations with a target file path\n- [ ] Result field reflects the worst severity found\n- [ ] Tier 2 findings are capped at WARN (except placeholder-leakage which can FAIL)\n- [ ] No Tier 2 check was marked FAIL unless objectively grounded\n\n## Examples\n\nSee `references/EXAMPLE.md` for a completed validation report demonstrating\nboth Tier 1 and Tier 2 checks against a real shipped skill.","tags":["utility","skill","validate","skills","product-on-purpose","agent-skills","ai-skills","claude-code","claude-desktop","openskills","product-management","skill-families"],"capabilities":["skill","source-product-on-purpose","skill-utility-pm-skill-validate","topic-agent-skills","topic-ai-skills","topic-claude-code","topic-claude-desktop","topic-openskills","topic-product-management","topic-skill-families","topic-triple-diamond"],"categories":["pm-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/product-on-purpose/pm-skills/utility-pm-skill-validate","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add product-on-purpose/pm-skills","source_repo":"https://github.com/product-on-purpose/pm-skills","install_from":"skills.sh"}},"qualityScore":"0.538","qualityRationale":"deterministic score 0.54 from registry signals: · indexed on github topic:agent-skills · 176 github stars · SKILL.md body (10,374 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T12:54:13.568Z","embedding":null,"createdAt":"2026-04-18T22:09:32.538Z","updatedAt":"2026-05-02T12:54:13.568Z","lastSeenAt":"2026-05-02T12:54:13.568Z","tsv":"'-100':440 '-11':962,1382 '-2':503,1002 '/pm-skill-builder':134,189,934 '/pm-skill-iterate':78,150,197,963 '/pm-skill-validate':1230 '/prd':253 '/references/example.md':1278 '/references/template.md':1275 '/skill.md':1272 '0':1211,1212,1217,1224 '1':89,232,292,391,1001,1053,1100,1175,1218,1223,1258,1403,1489 '1.0.0':992,1196 '1/27':892 '2':104,310,315,546,564,655,1013,1066,1113,1279,1387,1412,1455,1470,1492 '20':439 '3':388,501,1287 '4':543,1302 '5':305,949,1328,1433 'accept':236,613 'access':1257 'across':295,1179 'action':32,737,1062,1075,1142,1165,1367 'actual':916 'agent':528 'agents-entri':527 'agents.md':359,530 'align':709 'also':347,687 'appear':683,1439 'ask':223,372,1259 'assembl':954 'assess':108,553,585,588,1005,1018 'audit':6,50,161 'author':845 'avail':1301,1307 'batch':166,283,312,1166,1186,1303 'blockquot':838 'built':932 'cannot':1240 'canon':257 'cap':567,1458 'caveat':1388 'chang':159 'check':26,36,85,92,110,205,294,393,397,405,409,548,554,581,599,688,745,785,874,906,1025,1029,1035,1039,1043,1049,1056,1069,1095,1101,1108,1114,1124,1133,1145,1157,1177,1201,1282,1338,1340,1346,1351,1361,1405,1414,1438,1471,1493 'check-id':1028,1034,1042,1048,1055,1068,1350,1360 'checklist':123,629,632,638,1395 'checklist-verifi':628 'ci':95,204,219 'clariti':779 'classif':476,484 'clear':805 'coher':109 'command':252,351,353,355,513,515,519 'command-exist':512 'command-nam':354 'comment':831 'compar':668,714 'compat':1383 'complet':121,176,662,1483 'condit':411 'confirm':143 'consist':478 'consum':80 'content':378,1265,1286,1297 'contract':114,593,1315 'contribut':171 'convent':15,62,147,158,900,911 'correct':524 'correspond':350 'count':102,438,693 'coverag':594 'creat':130,182 'criteria':18,65 'current':909 'date':463,980,1189 'dd':984,1193 'deeper':217 'deeper-than-ci':216 'defin':1214 'define-hypothesi':1213 'degrad':385,1236,1309 'delimit':973,1345,1357 'deliv':246,1208,1397 'deliver-prd':245,1207 'demonstr':1486 'descript':100,424,427,434,436,736,738,759,763,1368 'description-action':735 'description-length':433 'description-pres':423 'detail':1234 'determinist':91,396 'differ':725,729 'direct':1244 'directori':243,258,265,277,325,418 'domain':479 'e.g':1245 'edit':139 'either':614 'els':1088,1092 'embed':1252 'empti':431,450,461,472 'entri':360,529,533,537 'environ':371,1253 'error':1006,1205 'everi':1434 'exact':420,959,1333,1426 'exampl':120,340,506,661,708,1478 'example-complet':660 'example-exist':505 'example.md':663,675,678,710,720,823 'except':577,832,1461 'exist':8,52,268,282,428,447,458,469,489,491,507,509,514,517,538 'explicit':601 'f':961,1381 'fail':275,403,580,851,860,999,1086,1087,1106,1222,1467,1474 'featur':827 'feed':198 'field':974,1448 'file':98,318,321,326,352,366,381,492,510,516,520,818,1060,1073,1137,1243,1255,1269,1298,1445 'file-path':1059,1072 'fill':664 'find':30,565,919,942,1014,1162,1456 'fix':191 'fixm':850 'flag':640 'follow':228,711,1323,1365,1424 'form':242 'format':1325,1430 'found':855,1084,1154,1453 'foundat':1220 'foundation-persona':1219 'foundation/utility':482 'frame':904 'frontmatt':96,331,415,426,445,456,467,758,989 'full':248 'gate':702 'good':646 'grade':29,920 'ground':572,859,1477 'guidanc':837 'head':788,885,969,1335 'header':504,669,673,716,730,835,1379 'heurist':1016 'histori':344 'history.md':341 'html':830 'human':73,1022 'hypothesi':1215 'id':406,582,1030,1036,1044,1050,1057,1070,1134,1352,1362 'identifi':152,233 'immedi':270 'imper':784 'improv':155,193 'includ':1123,1131,1373,1384 'indic':771 'info':561,886,901,923,1010,1120 'inform':695 'input':82,273,279,287,1170 'instruct':221,332,778,780,796,800 'instruction-clar':777 'interact':215 'iso':462 'issu':1153 'item':124,633,639,641,656 'iter':944 'leakag':574,811,1464 'leftov':813 'legitim':939 'length':435 'level':502 'librari':910,915 'licens':465,468,834 'license-pres':464 'lifecycl':947 'like':750,847 'line':404,562,692,1097,1110,1347,1372,1389,1429 'list':792,1161 'llm':107,552 'llm-assess':106,551 'manual':138 'mark':1473 'match':414,417,422,540 'max':589 'may':938,1020 'mcp':1248 'mcp/embedded':370 'md':357 'measur':652 'meet':40,935 'messag':1031,1037,1045,1051,1353 'metric':650 'mirror':94 'miss':680 'mm':983,1192 'mode':167,284,313,386,1167,1237,1304,1310,1421 'must':1318 'n':1007,1009,1011,1202,1227 'name':97,239,244,261,356,413,416,419,731,828,979,1271,1274,1277 'name-match':412 'need':154,164,1164 'new':184 'newer':930 'next':1371 'non':430,449,460,471,1436 'non-empti':429,448,459,470 'non-pass':1435 'note':846,1288 'number':782,791 'object':571,858,1476 'older':936 'omit':1155 'one':1096,1109 'order':717,726 'output':113,335,592,611,1168,1314 'output-contract-coverag':591 'overal':1004 'paragraph':803 'pars':964 'pass':146,401,410,558,997,1093,1104,1117,1128,1146,1156,1210,1226,1437 'pass/fail':25 'past':376 'path':249,259,526,541,1061,1074,1138,1364,1446 'pattern':615,793,829 'per':1098,1111 'persona':1221 'phase':475,481 'phase-classif':474 'phase/classification':477 'phrase':749 'pipe':972,1344,1356 'pipe-delimit':971,1343,1355 'pipelin':208 'placehold':573,691,810,825,1463 'placeholder-leakag':809,1462 'pm':3,10,45,54 'pm-skill':9,53 'possibl':369 'prd':247,1209 'presenc':99 'present':346,425,444,455,466,493,511,521,871,890 'proceed':383 'produc':19,67,299,399,556,950,1182,1319 'prose':802 'provid':1263,1285,1296 'purpos':328 'qualiti':17,64,105,174,547,631,647,902,927,1017,1038,1041,1047,1107,1339,1394,1413 'read':316,319,348,365,636,1241 'real':1496 'receiv':940 'recommend':33,1052,1121,1130,1148,1159,1341,1358,1441 'refer':115,523,596,602 'referenc':624 'references/example.md':337,508,1480 'references/template.md':333,490,604 'reflect':1449 'remov':843 'repo':41,59 'report':23,70,201,269,272,697,953,956,966,976,993,1079,1197,1235,1291,1322,1330,1374,1399,1423,1485 'repres':924 'requir':327,1021,1268 'resolv':254 'result':274,996,1081,1204,1447 'review':169,1023 'rule':1080 'run':149,203,290,308,389,394,544,549,1173,1229,1246,1280,1407,1416 'say':765,1151 'scaffold':814 'scan':75,819 'schema':994,1198,1375 'scratch':187 'scripts/lint-skills-frontmatter.sh':210 'section':496,612,667,681,715,722,797,870,877,968,1149,1334,1393,1427 'see':303,384,1479 'semver':452 'sentenc':1003 'sever':28,590,1083,1452 'severity-grad':27 'ship':44,136,817,893,914,1497 'similar':884 'singl':1311,1419 'skill':4,11,12,39,46,49,55,56,132,141,163,172,185,195,212,227,238,260,264,276,278,297,317,324,363,525,536,744,768,894,931,937,978,985,1181,1200,1203,1225,1231,1242,1270,1273,1276,1312,1420,1498 'skill-nam':977 'skill-utility-pm-skill-validate' 'skill.md':329,595,820,873 'skills/deliver-prd/skill.md':250 'skip':1409,1418 'slash':251 'source-product-on-purpose' 'specif':649,1141 'standard':42,903,928 'status':1026,1032,1040,1046,1054,1067,1102,1115,1348,1359 'step':230,231,304,314,387,542,787,806,948,1327,1432 'still':145 'string':421 'structur':14,21,61,90,293,392,500,713,807,960,1024,1027,1033,1094,1176,1337,1404 'suffici':499 'summari':301,1000,1184,1188,1336,1392 'system':1256,1299 'tabl':302,1185 'target':235,1058,1071,1136,1363,1444 'tell':739 'templat':117,336,488,495,598,608,621,666,686,707,836 'template-example-align':706 'template-exist':487 'template-sect':494 'template.md':497,671,712,733,821 'testabl':125,635 'tier':87,88,103,291,309,390,545,563,1012,1099,1112,1174,1349,1386,1402,1411,1454,1469,1488,1491 'today':918 'todo':848 'topic-agent-skills' 'topic-ai-skills' 'topic-claude-code' 'topic-claude-desktop' 'topic-openskills' 'topic-product-management' 'topic-skill-families' 'topic-triple-diamond' 'total':1228 'trigger':748 'two':86 'unless':570,1475 'unresolv':690 'updat':165,454,457 'updated-pres':453 'use':34,128,180,188,196,209,606,728,742,751,754,774,865,869,882,957,1331,1342,1354 'user':374,1261,1295 'user-provid':1294 'util':2 'utility-pm-skill-valid':1 'v1':995,1199,1376 'v2.8':926 'vagu':644,658 'valid':5,22,47,69,84,220,225,271,451,617,907,952,975,990,1187,1194,1292,1317,1321,1484 'valu':432,473 'verifi':630,1400 'version':343,443,446,986,987,991,1195 'version-pres':442 'via':1247 'vs':648 'warn':559,569,618,627,653,659,676,705,718,734,760,776,798,808,921,998,1008,1090,1091,1118,1206,1216,1460 'when-not-to-us':861 'whether':37 'without':770,804,1254 'word':101,437,441 'work':339 'worst':1082,1451 'yes':330,334,338 'yet':898 'yyyi':982,1191 'yyyy-mm-dd':981,1190","prices":[{"id":"e5164b89-6233-4058-b6f9-1e762b4a16c3","listingId":"c02c7bae-2994-4ff5-acb5-47accb1f6871","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"product-on-purpose","category":"pm-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:09:32.538Z"}],"sources":[{"listingId":"c02c7bae-2994-4ff5-acb5-47accb1f6871","source":"github","sourceId":"product-on-purpose/pm-skills/utility-pm-skill-validate","sourceUrl":"https://github.com/product-on-purpose/pm-skills/tree/main/skills/utility-pm-skill-validate","isPrimary":false,"firstSeenAt":"2026-04-18T22:09:32.538Z","lastSeenAt":"2026-05-02T12:54:13.568Z"}],"details":{"listingId":"c02c7bae-2994-4ff5-acb5-47accb1f6871","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"product-on-purpose","slug":"utility-pm-skill-validate","github":{"repo":"product-on-purpose/pm-skills","stars":176,"topics":["agent-skills","ai-skills","claude-code","claude-desktop","openskills","product-management","skill-families","triple-diamond"],"license":"apache-2.0","html_url":"https://github.com/product-on-purpose/pm-skills","pushed_at":"2026-04-24T22:54:13Z","description":"Curated, plug-and-play product management skills for AI agents. 38 skills across Triple Diamond phases plus foundation (lean canvas, persona, meeting lifecycle family) and utility (create, validate, iterate). Templates, workflows, thread-aligned samples, CI-enforced skill-family contracts. Apache 2.0.","skill_md_sha":"22d735dc7d35084c56ba34373babe9719b56dd9c","skill_md_path":"skills/utility-pm-skill-validate/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/product-on-purpose/pm-skills/tree/main/skills/utility-pm-skill-validate"},"layout":"multi","source":"github","category":"pm-skills","frontmatter":{"name":"utility-pm-skill-validate","license":"Apache-2.0","description":"Audits an existing pm-skills skill against structural conventions and quality criteria. Produces a structured validation report with pass/fail checks, severity-graded findings, and actionable recommendations. Use when checking whether a skill meets repo standards before shipping or after making changes."},"skills_sh_url":"https://skills.sh/product-on-purpose/pm-skills/utility-pm-skill-validate"},"updatedAt":"2026-05-02T12:54:13.568Z"}}