--- name: update-package-skill description: Updates an existing package Skill for a new release of its npm or local package by testing only what changed since the version the Skill names. Use when a maintainer asks to refresh a package Skill after a release, or when a SKILL.md names an older tested version than the package. --- # Update a package Skill Bring an existing package Skill to a new package version with the smallest correct edit. The current Skill was tested against an earlier version. Trust what the release did not touch. To write a Skill from nothing, use `generate-package-skill`. ## Inputs - The current Skill directory, and the package at the new version: a name and version, a directory, or prepared source. - The tested version is the version the Skill's first paragraph names. If it names none, stop and report that the Skill needs a full rewrite. - If the tested version equals the new version, change nothing and report that. ## 1. Copy, then diff 1. Copy the current Skill to the destination unchanged. Edit only the copy. 2. Diff the two published versions: `npm diff --diff=PACKAGE@OLD --diff=PACKAGE@NEW`. For a local package, diff the old tarball against the packed build. 3. Read the changelog or release notes between the two versions. 4. List what changed for a consumer: exports, types, options and their defaults, config keys, error messages, CLI flags, peer ranges, engines, and behaviour the notes describe. ## 2. Map changes to the Skill For each change, find the Skill lines it affects: a claim, an example, a trap, a version limit. A change is relevant when it affects a Skill line, or when it adds or breaks something an Agent would get wrong: a new trap, a renamed call, a new required setup step. Internals, refactors, and fixes the Skill never mentioned are not relevant. If no change is relevant, leave the copy byte-identical and stop. Report "no change needed" with a one-line diff summary. ## 3. Test the affected lines 1. Create one consumer fixture outside the package source, with its own `pnpm-workspace.yaml`. Install the new version and the documented peers. 2. Run each affected example and claim, and each example you add. Compare output with the claim: return values, type errors, build logs, exit codes. 3. Run each with one failure input as well, such as a bad option or an unreachable URL. 4. Do not re-run untouched examples. The earlier version's tests cover them. 5. Wrap every run in `timeout 120`. Start servers from your own script, record each process ID you start, and stop only those. Never kill by port or with `pkill -f`. 6. Spend about 20 tool calls on testing. Report an affected claim you could not test as untested; never claim it passed. ## 4. Edit - Change only affected lines, and add what the release needs: a new trap, an old call → new call row, a new common task. - Delete lines the release made false, and version limits it fixed. - Update the tested version in the first paragraph. Other version literals go stale; avoid them. - Keep the wording, order, and formatting of untouched lines exactly. The diff must show only what the release changed. - Update the description only when a trigger changed, such as a renamed export or a new config key. Keep the format rules: - The frontmatter contains only `name` and `description`. The name matches the directory. - The description is one plain YAML line without double quotes, backticks, or `%`. - `SKILL.md` stays under 500 lines. Write at most eight reference files, each linked from `SKILL.md`. ## 5. Report - The tested version, old → new, and the files you changed. - Each changed line with the diff hunk or release note behind it. - Each affected claim left untested. - Each mismatch between the new docs and observed behaviour: example, documented result, observed result. These are package bugs. For a direct run, show the Skill diff for review. A direct run has no Harness checks; never claim it passed them.