{"id":"1f86ce0e-8750-491b-b8a0-eae86220503c","shortId":"pXLzN3","kind":"skill","title":"utility-update-pm-skills","tagline":"Checks for newer pm-skills releases, compares local vs. latest version, previews what would change, and updates local files after user confirmation. Generates a structured update report documenting changed files, new capabilities, and the value delta between versions. Use when yo","description":"<!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 -->\n\n# PM Skills Updater\n\nThis skill updates a local pm-skills installation to the latest public\nrelease. It validates connectivity, compares versions, previews changes,\nand produces a structured report documenting what was updated and what\nnew capabilities are available.\n\n## When to Use\n\n- When you want to update local pm-skills to the latest release\n- When you want to check if a newer version is available\n- After a new pm-skills release is announced\n- When onboarding and you want to confirm you have the latest version\n\n## When NOT to Use\n\n- To create or edit individual skills -> use `/pm-skill-builder` or `/pm-skill-iterate`\n- To validate skills against conventions -> use `/pm-skill-validate`\n- If you are a maintainer working directly on the pm-skills repo (use git)\n- To pin a specific older version (this skill always targets the latest release)\n\n## Flags\n\n| Flag | Behavior |\n|------|----------|\n| *(none)* | Full update flow: pre-flight → preview → confirm → update → report |\n| `--report-only` | Pre-flight → preview → report (no files written) |\n| `--status` | Lightweight version check . prints current and latest version, then stops |\n\n### --status behavior\n\nWhen `--status` is provided, run only the pre-flight checks and display:\n\n```\npm-skills v{local} (installed, from {source})\npm-skills v{latest} (latest, released {date})\n{Status: up to date | update available ({type})}\n\nRun /update-pm-skills for details, or /update-pm-skills --report-only for a preview.\n```\n\nNo report file is generated. No files are written.\n\n## Instructions\n\nWhen asked to update pm-skills (without `--status`), follow these steps:\n\n### Step 1: Pre-Flight\n\nRun three checks before proceeding:\n\n1. **Network access**: Reach the GitHub API or repository URL\n   (`https://github.com/product-on-purpose/pm-skills`). Use any\n   available method: `curl`, `wget`, GitHub CLI (`gh`), or MCP tools.\n\n2. **Latest version**: Query the latest release using this fallback chain\n   (try each in order, use the first that succeeds):\n   1. GitHub API: `GET /repos/product-on-purpose/pm-skills/releases/latest`\n   2. GitHub CLI: `gh release list --repo product-on-purpose/pm-skills --limit 1`\n   3. Git: `git ls-remote --tags https://github.com/product-on-purpose/pm-skills.git`\n\n   If all three fail (rate limiting, 404, malformed response, no network),\n   enter degraded mode (see below).\n\n   Record: version string, release date, release notes URL, release notes body.\n\n3. **Local version**: Read from the first available source:\n   - `.claude-plugin/plugin.json` → `version` field\n   - `marketplace.json` → `plugins[0].version` field\n   - `CHANGELOG.md` → most recent version header\n   - Git tags → most recent `v*` tag\n\n   **Version parsing:** Normalize by stripping an optional `v` prefix and\n   trimming whitespace. If a source is present but yields an empty,\n   non-semver, or malformed string (invalid JSON, missing field), skip it\n   with a warning and try the next source. Only fall back to `0.0.0`\n   after all four sources fail.\n\n**If network access fails** (degraded mode):\n- Report the failure with error details.\n- Provide manual update instructions:\n  > Visit https://github.com/product-on-purpose/pm-skills/releases to\n  > download the latest release. Extract the archive and copy the\n  > `skills/`, `commands/`, `_workflows/`, and other content directories\n  > to your local pm-skills installation.\n- Stop execution.\n\n### Step 2: Version Comparison\n\nCompare the local version against the latest release using semver.\n\n**If local version >= latest version:**\n- Report: \"Your pm-skills installation is up to date (v{local}).\"\n- Offer to generate a report-only anyway.\n- Stop execution.\n\n**If local version < latest version:**\n- Show the version delta:\n  ```\n  Local version:  v{local}\n  Latest version: v{latest}\n  Update type:    {major | minor | patch}\n  ```\n- **Major version warning**: If the update is a major bump (e.g., v2.x\n  to v3.x), show a prominent warning:\n  > This is a major version update. It may include breaking changes to\n  > skill contracts. Review the release notes before proceeding.\n- Continue to Step 3.\n\n### Step 3: Preview\n\nShow the user what the update includes:\n\n1. **Version delta**: local version, latest version, update type.\n\n2. **Value summary**: Derive from CHANGELOG entries between the two\n   versions, GitHub release notes, and directory diffs (new skills/,\n   new _workflows/ files):\n   - New skills and what they enable\n   - Updated skills and what improved\n   - New workflows and what they connect\n   - Other notable changes\n\n3. **File manifest**: List of files and folders that will be written,\n   grouped by directory with counts:\n   ```\n   Files to be written:\n     skills/       31 files (2 new, 29 updated)\n     commands/     38 files (2 new, 36 updated)\n     _workflows/    9 files (1 new, 8 updated)\n     other          7 files\n     Total:        85 files\n   ```\n\n**If `--report-only`:** Generate the report using `references/TEMPLATE.md`\nwith the banner \"Report only . update was not applied.\" Save to\n`_pm-skills/updates/update-report_v{latest}_report-only_{YYYY-MM-DD_HHMMSS}.md`. Stop\nexecution.\n\n### Step 4: Confirmation\n\nPrompt the user for two decisions:\n\n1. **Update confirmation**:\n   \"These files will be overwritten. Proceed? [yes / no]\"\n   - If major version bump: require typing \"yes\" explicitly.\n   - If the user declines: save a report-only and stop.\n\n2. **Backup offer**:\n   \"Create a backup of current files before updating?\n   [yes (recommended) / no]\"\n   - If yes: copy all in-scope files to\n     `_pm-skills/backups/v{current}_{YYYY-MM-DD_HHMMSS}/`\n   - Create the `_pm-skills/` directory if it doesn't exist.\n\n### Step 5: Update\n\nExecute the update using validated-before-copy with backup:\n\n1. **Download**: Fetch the release ZIP asset (`pm-skills-vX.Y.Z.zip`)\n   from the GitHub Release page to a temporary directory. This is the\n   curated build artifact produced by `build-release.sh` . it includes\n   only user-facing content and excludes `docs/internal/`.\n\n2. **Validate**: Confirm the extracted archive contains `skills/`,\n   `commands/`, `AGENTS.md`, and `.claude-plugin/plugin.json`. If\n   validation fails, report the error and stop without writing any files.\n\n3. **Copy**: Overwrite in-scope files from the extracted archive to the\n   install root. Show progress per directory:\n   ```\n   Updating pm-skills v2.9.0 -> v2.10.0...\n     skills/       31/31 ████████████████████  done\n     commands/     38/38 ████████████████████  done\n     _workflows/    9/9  ████████████████████  done\n     other files    7/7  ████████████████████  done\n   ```\n\n4. **Clean up**: Remove the temporary directory.\n\n### Step 6: Post-Update\n\n1. **Smoke test**:\n   - Version consistency: `plugin.json`, `marketplace.json`, and\n     `CHANGELOG.md` all reflect the new version. (Note: version detection\n     in Step 1 uses first-match; the smoke test verifies all sources\n     agree. A mismatch here suggests a release packaging issue.)\n   - File integrity: `AGENTS.md`, `skills/`, `commands/`, `_workflows/`\n     all exist.\n   - Skill count delta: count skills before and after, report the change.\n   - If any check fails: warn the user with specific details. Do NOT\n     auto-rollback. Provide recovery guidance:\n     - **Version mismatch**: \"Run the update again, or manually edit\n       {file} to set the version to {expected}.\"\n     - **Missing files**: \"Re-run `/update-pm-skills` to re-download,\n       or restore from backup: `cp -r _pm-skills/backups/{dir}/* .`\"\n     - **If backup exists**: Always remind the user of the backup\n       location and restore command.\n\n2. **Summary line**: Show a single scannable confirmation:\n   ```\n   Updated v{old} -> v{new} | +{n} skills, +{n} workflows | Report: _pm-skills/updates/{file}\n   ```\n\n3. **Completion report**: Generate using `references/TEMPLATE.md` and\n   save to `_pm-skills/updates/update-report_v{from}-to-v{to}_{YYYY-MM-DD_HHMMSS}.md`\n\n4. **MCP advisory**: If `../pm-skills-mcp/` exists, try to read\n   `pm-skills-source.json`. If the file is missing or malformed, show:\n   \"pm-skills-mcp detected but pm-skills-source.json not found or\n   unreadable. Check the MCP repo manually.\" If readable, show:\n   ```\n   pm-skills-mcp detected at ../pm-skills-mcp/\n     Embedded skills version: v{embedded}\n     Updated pm-skills version: v{new}\n\n     To update the MCP server's embedded skills:\n       cd ../pm-skills-mcp && npm run embed-skills && npm run build\n   ```\n\n5. **Next steps**:\n   ```\n   Next Steps:\n   - Review the update report at _pm-skills/updates/{report-file}\n   - Run /pm-skill-validate --all to verify skill integrity\n   - Run local CI: bash scripts/lint-skills-frontmatter.sh\n   - Check release notes: {release-url}\n   ```\n\n## File Scope\n\nThe updater writes only files present in the release ZIP asset\n(`pm-skills-vX.Y.Z.zip`), which is the curated build produced by\n`build-release.sh`. The ZIP excludes `docs/internal/` and other\nnon-user-facing content . no exclusion logic is needed at copy time.\n\n**Files included in the release ZIP (updated):**\n\n| Path | Rationale |\n|------|-----------|\n| `skills/` | Core skill files |\n| `commands/` | Slash command definitions |\n| `_workflows/` | Workflow chains |\n| `library/` | Sample library and skill output samples (note: user-added samples may be overwritten) |\n| `AGENTS.md` | Skill discovery for IDEs |\n| `.claude-plugin/plugin.json` | Version + plugin metadata |\n| `marketplace.json` | Marketplace metadata |\n| `CHANGELOG.md` | Release history |\n| `README.md` | Public docs |\n| `docs/` (public guides, reference, workflows) | User-facing documentation |\n| `scripts/` | CI/validation scripts |\n| `mkdocs.yml` | Docs site config |\n\n**Files NOT in the release ZIP (never overwritten):**\n\n| Path | Rationale |\n|------|-----------|\n| `docs/internal/` | Excluded from ZIP by `build-release.sh` |\n| `_NOTES/` | Local-only, gitignored, not in ZIP |\n| `_pm-skills/` | Local state (reports, backups), not in ZIP |\n| `.github/` | CI workflows, not in ZIP |\n| `CONTRIBUTING.md`, `LICENSE` | Not in ZIP (repo-level files) |\n\n## Output Contract\n\nThe skill MUST:\n- Validate network access before any remote operations\n- Show a preview before writing any files\n- Require explicit user confirmation before overwriting\n- Offer a backup before overwriting\n- Use validated-before-copy (download to temp, validate, then copy; backup is the recovery path for mid-copy failures)\n- Generate a report in both modes (report-only and completion)\n- Run the post-update smoke test\n- Show MCP advisory if sibling repo is detected\n\nThe skill MUST NOT:\n- Write files without user confirmation\n- Proceed without network access confirmation\n- Modify files outside the pm-skills directory\n- Modify `docs/internal/`, `_NOTES/`, or `_pm-skills/` with upstream content\n- Auto-rollback on smoke test failure (inform the user instead)\n- Delete local files that don't exist in the upstream release\n\n## Quality Checklist\n\nBefore marking the update complete, verify:\n\n- [ ] Pre-flight passed: network, versions detected\n- [ ] User was shown preview before any files were written\n- [ ] User explicitly confirmed before update proceeded\n- [ ] Backup was offered (and created if accepted)\n- [ ] Archive was downloaded to temp and validated before copying\n- [ ] All in-scope files were written successfully\n- [ ] Version consistency: plugin.json, marketplace.json, CHANGELOG match\n- [ ] File integrity: AGENTS.md, skills/, commands/, _workflows/ exist\n- [ ] Skill count delta is reported (before -> after)\n- [ ] Report was generated and saved to `_pm-skills/updates/`\n- [ ] MCP advisory was shown if sibling repo detected\n- [ ] Next steps were presented\n- [ ] Summary line displayed\n\n## FAQ\n\n**I'm a contributor who cloned the repo. Should I use this skill?**\nNo. Use `git pull` or `git fetch && git merge` instead. This skill is\nfor end users who installed pm-skills as a plugin or downloaded a release.\n\n**Can I update to a specific version instead of the latest?**\nNot in v1. This skill always targets the latest release. To install a\nspecific version, download it manually from the releases page.\n\n**What happens to my local notes and planning docs?**\nThey are never touched. The skill explicitly excludes `docs/internal/`,\n`_NOTES/`, and `_pm-skills/` from updates. See the File Scope table.\n\n**What happens to files I added that aren't in the upstream release?**\nThey are left untouched. The skill only overwrites files that exist in\nthe new release . it never deletes local files.\n\n**How do I undo an update?**\nIf you created a backup (the default offer), restore it:\n`cp -r _pm-skills/backups/v{version}_{timestamp}/* .`\nIf you didn't create a backup but have git, use `git checkout .` to\nrestore tracked files to their last committed state.\n\n**The update failed partway through. What do I do?**\nThe skill validates before copying (download to temp, check, then write),\nso partial failures are rare. If it does happen: restore from backup if\navailable, or re-run `/update-pm-skills` to retry.\n\n## Further Reading\n\nFor a visual walkthrough and additional context, see the\n[Updating PM Skills Guide](../../docs/guides/updating-pm-skills.md).","tags":["utility","update","skills","product-on-purpose","agent-skills","ai-skills","claude-code","claude-desktop","openskills","product-management","skill-families","triple-diamond"],"capabilities":["skill","source-product-on-purpose","skill-utility-update-pm-skills","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-update-pm-skills","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 (13,256 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.744Z","embedding":null,"createdAt":"2026-04-18T22:09:34.103Z","updatedAt":"2026-05-02T12:54:13.744Z","lastSeenAt":"2026-05-02T12:54:13.744Z","tsv":"'/../docs/guides/updating-pm-skills.md':1906 '/backups':1102 '/backups/v':847,1825 '/plugin.json':415,928,1358 '/pm-skill-builder':146 '/pm-skill-iterate':148 '/pm-skill-validate':155,1257 '/pm-skills':363 '/pm-skills-mcp':1169,1208,1230 '/product-on-purpose/pm-skills':314 '/product-on-purpose/pm-skills.git':375 '/product-on-purpose/pm-skills/releases':504 '/repos/product-on-purpose/pm-skills/releases/latest':351 '/update-pm-skills':259,263,1088,1888 '/updates':1139,1252,1650 '/updates/update-report_v':769,1153 '0':420 '0.0.0':479 '1':293,302,347,365,647,736,791,878,991,1010 '2':327,352,533,656,722,729,821,914,1118 '29':724 '3':366,403,636,638,698,941,1141 '31':720 '31/31':967 '36':731 '38':727 '38/38':970 '4':783,979,1165 '404':382 '5':866,1239 '6':987 '7':741 '7/7':977 '8':738 '85':744 '9':734 '9/9':973 'accept':1603 'access':304,487,1443,1525 'ad':1345,1776 'addit':1898 'advisori':1167,1507,1652 'agents.md':923,1032,1350,1629 'agre':1021 'alway':179,1107,1724 'announc':122 'anyway':570 'api':308,349 'appli':763 'archiv':512,919,951,1604 'aren':1778 'artifact':900 'ask':281 'asset':884,1286 'auto':1062,1546 'auto-rollback':1061,1545 'avail':86,113,256,317,410,1883 'back':477 'backup':822,826,877,1096,1105,1113,1417,1463,1477,1597,1814,1834,1881 'banner':757 'bash':1266 'behavior':186,221 'bodi':402 'break':622 'build':899,1238,1292 'build-release.sh':903,1295,1402 'bump':604,805 'capabl':38,84 'cd':1229 'chain':337,1334 'chang':21,35,71,623,697,1048 'changelog':661,1625 'changelog.md':423,999,1365 'check':6,107,212,232,299,1051,1194,1268,1867 'checklist':1568 'checkout':1840 'ci':1265,1422 'ci/validation':1381 'claud':413,926,1356 'claude-plugin':412,925,1355 'clean':980 'cli':322,354 'clone':1672 'command':517,726,922,969,1034,1117,1328,1330,1631 'commit':1848 'compar':13,68,536 'comparison':535 'complet':1142,1497,1573 'config':1386 'confirm':28,129,195,784,793,916,1125,1458,1521,1526,1593 'connect':67,694 'consist':995,1622 'contain':920 'content':521,910,1306,1544 'context':1899 'continu':633 'contract':626,1437 'contributing.md':1427 'contributor':1670 'convent':153 'copi':514,837,875,942,1313,1470,1476,1485,1612,1863 'core':1325 'count':714,1039,1041,1635 'cp':1097,1820 'creat':140,824,854,1601,1812,1832 'curat':898,1291 'curl':319 'current':214,828,848 'date':250,254,396,560 'dd':777,852,1162 'decis':790 'declin':813 'default':1816 'definit':1331 'degrad':388,489 'delet':1556,1801 'delta':42,581,649,1040,1636 'deriv':659 'detail':261,496,1058 'detect':1007,1187,1206,1512,1581,1658 'didn':1830 'diff':672 'dir':1103 'direct':162 'directori':522,671,712,859,894,959,985,1534 'discoveri':1352 'display':234,1665 'doc':1370,1371,1384,1749 'docs/internal':913,1299,1397,1536,1758 'document':34,77,1379 'doesn':862 'done':968,971,974,978 'download':506,879,1092,1471,1606,1705,1734,1864 'e.g':605 'edit':142,1075 'emb':1234 'embed':1209,1213,1227 'embed-skil':1233 'empti':454 'enabl':683 'end':1694 'enter':387 'entri':662 'error':495,934 'exclud':912,1298,1398,1757 'exclus':1308 'execut':531,572,781,868 'exist':864,1037,1106,1170,1562,1633,1794 'expect':1082 'explicit':809,1456,1592,1756 'extract':510,918,950 'face':909,1305,1378 'fail':379,484,488,931,1052,1852 'failur':493,1486,1551,1872 'fall':476 'fallback':336 'faq':1666 'fetch':880,1686 'field':417,422,464 'file':25,36,207,272,276,677,699,703,715,721,728,735,742,745,795,829,842,940,947,976,1030,1076,1084,1140,1177,1255,1274,1280,1315,1327,1387,1435,1454,1518,1528,1558,1588,1617,1627,1768,1774,1792,1803,1844 'first':344,409,1013 'first-match':1012 'flag':184,185 'flight':193,203,231,296,1577 'flow':190 'folder':705 'follow':289 'found':1191 'four':482 'full':188 'generat':29,274,565,750,1144,1487,1643 'get':350 'gh':323,355 'git':170,367,368,428,1682,1685,1687,1837,1839 'github':307,321,348,353,667,888,1421 'github.com':313,374,503 'github.com/product-on-purpose/pm-skills':312 'github.com/product-on-purpose/pm-skills.git':373 'github.com/product-on-purpose/pm-skills/releases':502 'gitignor':1407 'group':710 'guid':1373,1905 'guidanc':1066 'happen':1742,1772,1878 'header':427 'hhmmss':778,853,1163 'histori':1367 'ide':1354 'improv':688 'in-scop':839,944,1614 'includ':621,646,905,1316 'individu':143 'inform':1552 'instal':59,240,529,556,954,1697,1730 'instead':1555,1689,1715 'instruct':279,500 'integr':1031,1262,1628 'invalid':461 'issu':1029 'json':462 'last':1847 'latest':16,62,101,133,182,216,247,248,328,332,508,542,549,576,586,589,652,770,1718,1727 'left':1786 'level':1434 'librari':1335,1337 'licens':1428 'lightweight':210 'limit':364,381 'line':1120,1664 'list':357,701 'local':14,24,55,95,239,404,525,538,547,562,574,582,585,650,1264,1405,1414,1557,1745,1802 'local-on':1404 'locat':1114 'logic':1309 'ls':370 'ls-remot':369 'm':1668 'maintain':160 'major':592,595,603,616,803 'malform':383,459,1181 'manifest':700 'manual':498,1074,1198,1736 'mark':1570 'marketplac':1363 'marketplace.json':418,997,1362,1624 'match':1014,1626 'may':620,1347 'mcp':325,1166,1186,1196,1205,1224,1506,1651 'md':779,1164 'merg':1688 'metadata':1361,1364 'method':318 'mid':1484 'mid-copi':1483 'minor':593 'mismatch':1023,1068 'miss':463,1083,1179 'mkdocs.yml':1383 'mm':776,851,1161 'mode':389,490,1492 'modifi':1527,1535 'must':1440,1515 'n':1131,1133 'need':1311 'network':303,386,486,1442,1524,1579 'never':1393,1752,1800 'new':37,83,116,673,675,678,689,723,730,737,1003,1130,1220,1797 'newer':8,110 'next':473,1240,1242,1659 'non':456,1303 'non-semv':455 'non-user-fac':1302 'none':187 'normal':436 'notabl':696 'note':398,401,630,669,1005,1270,1342,1403,1537,1746,1759 'npm':1231,1236 'offer':563,823,1461,1599,1817 'old':1128 'older':175 'onboard':124 'oper':1447 'option':440 'order':341 'output':1340,1436 'outsid':1529 'overwrit':943,1460,1465,1791 'overwritten':798,1349,1394 'packag':1028 'page':890,1740 'pars':435 'partial':1871 'partway':1853 'pass':1578 'patch':594 'path':1322,1395,1481 'per':958 'pin':172 'plan':1748 'plugin':414,419,927,1357,1360,1703 'plugin.json':996,1623 'pm':4,10,48,57,97,118,166,236,244,285,527,554,767,845,857,962,1100,1137,1151,1184,1203,1216,1250,1412,1532,1540,1648,1699,1762,1823,1903 'pm-skill':9,56,96,117,165,235,243,284,526,553,766,844,856,961,1099,1136,1150,1215,1249,1411,1531,1539,1647,1698,1761,1822 'pm-skills-mcp':1183,1202 'pm-skills-source.json':1174,1189 'pm-skills-vx.y.z.zip':885,1287 'post':989,1501 'post-upd':988,1500 'pre':192,202,230,295,1576 'pre-flight':191,201,229,294,1575 'prefix':442 'present':450,1281,1662 'preview':18,70,194,204,269,639,1450,1585 'print':213 'proceed':301,632,799,1522,1596 'produc':73,901,1293 'product':360 'product-on-purpos':359 'progress':957 'promin':611 'prompt':785 'provid':225,497,1064 'public':63,1369,1372 'pull':1683 'purpos':362 'qualiti':1567 'queri':330 'r':1098,1821 'rare':1874 'rate':380 'rational':1323,1396 're':1086,1091,1886 're-download':1090 're-run':1085,1885 'reach':305 'read':406,1173,1892 'readabl':1200 'readme.md':1368 'recent':425,431 'recommend':833 'record':392 'recoveri':1065,1480 'refer':1374 'references/template.md':754,1146 'reflect':1001 'releas':12,64,102,120,183,249,333,356,395,397,400,509,543,629,668,882,889,1027,1269,1272,1284,1319,1366,1391,1566,1707,1728,1739,1783,1798 'release-url':1271 'remind':1108 'remot':371,1446 'remov':982 'repo':168,358,1197,1433,1510,1657,1674 'repo-level':1432 'report':33,76,197,199,205,265,271,491,551,568,748,752,758,772,817,932,1046,1135,1143,1247,1254,1416,1489,1494,1638,1641 'report-fil':1253 'report-on':198,264,567,747,771,816,1493 'repositori':310 'requir':806,1455 'respons':384 'restor':1094,1116,1818,1842,1879 'retri':1890 'review':627,1244 'rollback':1063,1547 'root':955 'run':226,258,297,1069,1087,1232,1237,1256,1263,1498,1887 'sampl':1336,1341,1346 'save':764,814,1148,1645 'scannabl':1124 'scope':841,946,1275,1616,1769 'script':1380,1382 'scripts/lint-skills-frontmatter.sh':1267 'see':390,1766,1900 'semver':457,545 'server':1225 'set':1078 'show':578,609,640,956,1121,1182,1201,1448,1505 'shown':1584,1654 'sibl':1509,1656 'singl':1123 'site':1385 'skill':5,11,49,52,58,98,119,144,151,167,178,237,245,286,516,528,555,625,674,679,685,719,768,846,858,921,963,966,1033,1038,1042,1101,1132,1138,1152,1185,1204,1210,1217,1228,1235,1251,1261,1324,1326,1339,1351,1413,1439,1514,1533,1541,1630,1634,1649,1679,1691,1700,1723,1755,1763,1789,1824,1860,1904 'skill-utility-update-pm-skills' 'skip':465 'slash':1329 'smoke':992,1016,1503,1549 'sourc':242,411,448,474,483,1020 'source-product-on-purpose' 'specif':174,1057,1713,1732 'state':1415,1849 'status':209,220,223,251,288 'step':291,292,532,635,637,782,865,986,1009,1241,1243,1660 'stop':219,530,571,780,820,936 'string':394,460 'strip':438 'structur':31,75 'succeed':346 'success':1620 'suggest':1025 'summari':658,1119,1663 'tabl':1770 'tag':372,429,433 'target':180,1725 'temp':1473,1608,1866 'temporari':893,984 'test':993,1017,1504,1550 'three':298,378 'time':1314 'timestamp':1827 'to-v':1155 'tool':326 'topic-agent-skills' 'topic-ai-skills' 'topic-claude-code' 'topic-claude-desktop' 'topic-openskills' 'topic-product-management' 'topic-skill-families' 'topic-triple-diamond' 'total':743 'touch':1753 'track':1843 'tri':338,471,1171 'trim':444 'two':665,789 'type':257,591,655,807 'undo':1807 'unread':1193 'untouch':1787 'updat':3,23,32,50,53,80,94,189,196,255,283,499,590,600,618,645,654,684,725,732,739,760,792,831,867,870,960,990,1071,1126,1214,1222,1246,1277,1321,1502,1572,1595,1710,1765,1809,1851,1902 'upstream':1543,1565,1782 'url':311,399,1273 'use':45,89,138,145,154,169,315,334,342,544,753,871,1011,1145,1466,1677,1681,1838 'user':27,642,787,812,908,1055,1110,1304,1344,1377,1457,1520,1554,1582,1591,1695 'user-ad':1343 'user-fac':907,1376 'util':2 'utility-update-pm-skil':1 'v':238,246,432,441,561,584,588,1127,1129,1157,1212,1219 'v1':1721 'v2.10.0':965 'v2.9.0':964 'v2.x':606 'v3.x':608 'valid':66,150,873,915,930,1441,1468,1474,1610,1861 'validated-before-copi':872,1467 'valu':41,657 'verifi':1018,1260,1574 'version':17,44,69,111,134,176,211,217,329,393,405,416,421,426,434,534,539,548,550,575,577,580,583,587,596,617,648,651,653,666,804,994,1004,1006,1067,1080,1211,1218,1359,1580,1621,1714,1733,1826 'visit':501 'visual':1895 'vs':15 'walkthrough':1896 'want':92,105,127 'warn':469,597,612,1053 'wget':320 'whitespac':445 'without':287,937,1519,1523 'work':161 'workflow':518,676,690,733,972,1035,1134,1332,1333,1375,1423,1632 'would':20 'write':938,1278,1452,1517,1869 'written':208,278,709,718,1590,1619 'yes':800,808,832,836 'yield':452 'yo':47 'yyyi':775,850,1160 'yyyy-mm-dd':774,849,1159 'zip':883,1285,1297,1320,1392,1400,1410,1420,1426,1431","prices":[{"id":"a067a75b-b0e3-401c-bbdc-dde7ff4d5a36","listingId":"1f86ce0e-8750-491b-b8a0-eae86220503c","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:34.103Z"}],"sources":[{"listingId":"1f86ce0e-8750-491b-b8a0-eae86220503c","source":"github","sourceId":"product-on-purpose/pm-skills/utility-update-pm-skills","sourceUrl":"https://github.com/product-on-purpose/pm-skills/tree/main/skills/utility-update-pm-skills","isPrimary":false,"firstSeenAt":"2026-04-18T22:09:34.103Z","lastSeenAt":"2026-05-02T12:54:13.744Z"}],"details":{"listingId":"1f86ce0e-8750-491b-b8a0-eae86220503c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"product-on-purpose","slug":"utility-update-pm-skills","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":"6eb223da4b2a900c4cc342726c156a72b86dbb1d","skill_md_path":"skills/utility-update-pm-skills/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/product-on-purpose/pm-skills/tree/main/skills/utility-update-pm-skills"},"layout":"multi","source":"github","category":"pm-skills","frontmatter":{"name":"utility-update-pm-skills","license":"Apache-2.0","description":"Checks for newer pm-skills releases, compares local vs. latest version, previews what would change, and updates local files after user confirmation. Generates a structured update report documenting changed files, new capabilities, and the value delta between versions. Use when you want to bring a local pm-skills installation up to date."},"skills_sh_url":"https://skills.sh/product-on-purpose/pm-skills/utility-update-pm-skills"},"updatedAt":"2026-05-02T12:54:13.744Z"}}