utility-update-pm-skills-57a19f — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited utility-update-pm-skills-57a19f (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 -->
This skill updates a local pm-skills installation to the latest public release. It validates connectivity, compares versions, detects local modifications, gives the user control over conflict resolution, and produces a structured update report documenting every change.
The updater operates in three phases:
conflict-aware overwrite-or-skip logic.
what was skipped, and what new capabilities are available.
/pm-skill-builder or /pm-skill-iterate/pm-skill-validateWhen asked to update pm-skills, follow these steps:
Before attempting any remote operations, confirm connectivity to GitHub.
How to validate:
https://github.com/product-on-purpose/pm-skills
curl, wget, fetch, GitHub CLI (gh),or the GitHub MCP tools.
If connectivity fails:
or firewall rules.
If connectivity succeeds:
Read the local version from these sources (in priority order):
.claude-plugin/plugin.json -- version fieldmarketplace.json -- plugins[0].version fieldCHANGELOG.md -- most recent version headerv* tagRecord:
2.8.2)If no version can be determined, warn the user and default to 0.0.0 (treat as a fresh install requiring full update).
Query the public repository for the latest release:
Methods (try in order):
GET /repos/product-on-purpose/pm-skills/releases/latestgh release list --repo product-on-purpose/pm-skills --limit 1git ls-remote --tags https://github.com/product-on-purpose/pm-skills.gitRecord:
Compare the local version against the latest public version.
If local version >= latest version:
no changes to report).
If local version < latest version:
Local version: v{local}
Latest version: v{latest}
Update type: {major | minor | patch}"This is a major version update. It may include breaking changes to skill contracts. Review the release notes before proceeding."
Before fetching new files, scan the local installation for user modifications. This protects customizations from being silently overwritten.
How to detect modifications:
git status --porcelain to find uncommitted changes.git diff HEAD to see the actual modifications.this limitation in the report.
Record a list of locally modified files with their modification type:
modified -- content differs from the installed versionadded -- file exists locally but not in the original releasedeleted -- file was removed locallyPresent the findings:
Locally modified files detected: {n}
- {status} | {file-path}
- {status} | {file-path}
...If no modifications are detected, report: "No local modifications detected. Safe to update all files."
Fetch the latest release content and apply updates file by file.
Update method (try in order):
git fetch origingit merge origin/main (or the tagged release)rules below.
.tar.gz or .zip).File-by-file application rules:
For each file in the update:
| Local status | Action | User prompt |
|---|---|---|
| Unmodified | Overwrite silently | None |
| Locally modified | Prompt user | "File {path} has local changes. [overwrite / skip / diff]" |
| New file (not in local) | Add silently | None |
| Deleted locally | Prompt user | "File {path} was deleted locally but exists in the update. [restore / skip]" |
Conflict resolution options:
The original is backed up to {path}.local-backup before overwriting.
version, then re-prompt with [overwrite / skip].
further prompting.
prompting.
After applying updates, run a quick health check:
.claude-plugin/plugin.json,marketplace.json, and CHANGELOG.md all reflect the new version.
AGENTS.mdskills/ directory with expected skill countcommands/ directory_workflows/ directorythe update. Report any additions or removals.
If validation fails, warn the user with specific details about what looks wrong. Do not roll back automatically -- the user may want to investigate.
Produce the update report using the template in references/TEMPLATE.md. This is the primary output artifact.
The report includes:
summary of what changed.
modifications, with the reason.
new one.
deltas), workflows added, and any breaking changes -- derived from release notes and file diff analysis.
any files that were skipped.
Report delivery:
updates/update-{from}-to-{to}-{date}.md(e.g., updates/update-v2.8.2-to-v2.9.0-2026-04-09.md).
After the update completes, suggest next steps:
## Next Steps
- Review the update report for any skipped files
- Run `/pm-skill-validate --all` to verify skill integrity
- Run local CI: `bash scripts/lint-skills-frontmatter.sh`
- Check the release notes for any migration steps: {release-url}
- If you skipped files with local changes, consider merging manuallyIf running in an environment without direct file system or network access (e.g., MCP or embedded environment):
limitation and provide the user with manual update instructions:
write updated files. Provide:
skipped and why in the report.
The updater MUST produce an update report following the format in references/TEMPLATE.md.
The report:
The updater MUST:
The updater MUST NOT:
Before delivering the update report, verify:
See references/EXAMPLE.md for a completed update report demonstrating a minor version update with local modifications, conflict resolution, and new capability discovery.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.