Agent skill

Utility Pm Skill Iterate

by product-on-purpose in product-on-purpose/pm-skills

Applies targeted improvements to an existing pm-skills skill based on feedback, validation reports, or convention changes.

Apache-2.0Auto-check passed

Install Utility Pm Skill Iterate

skills CLI
$ npx skills add product-on-purpose/pm-skills --skill utility-pm-skill-iterate -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install product-on-purpose/pm-skills utility-pm-skill-iterate --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/product-on-purpose/pm-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/utility-pm-skill-iterate .claude/skills/utility-pm-skill-iterate && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
utility-pm-skill-iterate
GitHub stars
716
Token cost
~3.1k tokens
SKILL.md length
1,535 words
Files
4 (incl. references)
Skills in repo
68
Repo updated
First seen
Licence
Apache-2.0

At a glance

Applies targeted improvements to an existing pm-skills skill based on feedback, validation reports, or convention changes.

  • Works in 8 steps: Identify the Target Skill → Read Current Skill Files → Normalize Input into Intended Changes → …
  • Improving a skill after validation
  • SKILL.md covers When to Use, When NOT to Use, Instructions and Degraded Mode, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Utility Pm Skill Iterate is an agent skill from product-on-purpose/pm-skills. Applies targeted improvements to an existing pm-skills skill based on feedback, validation reports, or convention changes. Reads current files, previews proposed changes, writes on confirmation, and suggests a version bump. Use when improving a skill after validation or feedback.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `evals/trigger-fixtures.json`, `references/EXAMPLE.md` and `references/TEMPLATE.md`).

The repository describes itself as: 68 plug-and-play, best-practice product management skills for AI agents: 30 Triple Diamond phase + 11 foundation + 12 utility + 15 tool (Foundation Sprint + Design Sprint). Plus… The licence is Apache-2.0.

When your agent uses it

  • Improving a skill after validation

Example prompts

  • “Use the utility-pm-skill-iterate skill to apply targeted improvements to an existing pm-skills skill based on feedback, validation reports, or…”
  • “/utility-pm-skill-iterate”

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Identify the Target Skill
  2. Read Current Skill Files
  3. Normalize Input into Intended Changes
  4. Preview Proposed Changes
  5. Apply Changes (with Stale-Preview Guard)
  6. Suggest Version Bump
  7. Offer HISTORY.md Update
  8. Report Summary

What it can do on your machine

Read from SKILL.md and the folder at commit 1cef1a9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Utility Pm Skill Iterate loads about 3.1k tokens when it runs, and up to ~4.8k if it reads all its reference files. Until then it costs about 76 tokens; SKILL.md has 1,535 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~76
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from product-on-purpose/pm-skills at commit 1cef1a9, republished under its Apache-2.0 licence (© product-on-purpose). 1,535 words, ~3,096 tokens.

Download SKILL.mdSave it as .claude/skills/utility-pm-skill-iterate/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
utility-pm-skill-iterate
description
Applies targeted improvements to an existing pm-skills skill based on feedback, validation reports, or convention changes. Reads current files, previews proposed changes, writes on confirmation, and suggests a version bump. Use when improving a skill after validation or feedback.
license
Apache-2.0
metadata.classification
utility
metadata.version
1.0.0
metadata.updated
2026-04-03
metadata.category
coordination
metadata.frameworks
triple-diamond
metadata.author
product-on-purpose

PM Skill Iterate

This skill improves an existing pm-skills skill by applying targeted changes based on input you provide. It reads the current skill files, proposes changes as before/after previews grouped by file, and writes them on your confirmation. After applying changes, it suggests a version bump class and offers to update HISTORY.md.

The iterator accepts any of these as input:

  • A validation report from utility-pm-skill-validate
  • Direct feedback ("the template is missing section X")
  • A convention change ("all skills now need a Limitations section")
  • A general improvement request ("make the example more realistic")

When to Use

  • After running utility-pm-skill-validate and getting a report with findings
  • When you have specific feedback on a skill and want to apply it
  • When a repo convention changes and a skill needs to conform
  • When a skill's example, template, or instructions need improvement
  • When iterating on a skill before a release

When NOT to Use

  • To create a new skill from scratch -> use utility-pm-skill-builder
  • To audit a skill before making changes -> use utility-pm-skill-validate first
  • To make bulk convention changes across many skills -> run utility-pm-skill-validate --all first to triage, then iterate one skill at a time

Instructions

When asked to iterate on a skill, follow these steps:

Step 1: Identify the Target Skill

Accept the skill name in any form:

  • Directory name: deliver-prd
  • Full path: skills/deliver-prd/SKILL.md
  • Slash command: deliver-prd

Resolve to the canonical directory path: skills/{name}/.

If the skill directory does not exist, stop and report: "Skill directory skills/{name}/ does not exist. Use utility-pm-skill-builder to create it."

Step 2: Read Current Skill Files

Read all files in the skill directory:

FileRequiredPurpose
SKILL.mdyesFrontmatter + instructions (the primary edit target)
references/TEMPLATE.mdyesOutput template
references/EXAMPLE.mdyesWorked example
HISTORY.mdnoVersion history (needed for Step 7)

Record the exact content of each file at this point. You will compare against this content before writing in Step 5 (stale-preview guard).

If reading files is not possible (MCP/embedded environment), ask the user to paste the relevant file contents before proceeding (see Degraded Mode).

Step 3: Normalize Input into Intended Changes

Regardless of input type, extract a structured list of intended changes before generating any edits. This normalization step is what makes the unified flow work consistently across all input types.

If the input is a validation report (from utility-pm-skill-validate):

  • Check for Report schema: v1 in the header. If absent or a different schema version, warn: "This report uses an unrecognized schema. I'll do my best but may miss structured fields."
  • Parse the ## Recommendations section.
  • Split each recommendation line on | to extract:
    • Position 1: severity (FAIL, WARN, INFO)
    • Position 2: check ID
    • After Target:: file path
    • After Action: (next line): what to change
  • Build the intended changes list from these fields.

If the input is free text (feedback, convention change, improvement request):

  • Read the input and identify what needs to change.
  • Map each change to a specific target file and section.
  • If the input is vague, ask ONE clarifying question before proceeding.

Present the normalized list for user confirmation:

Intended changes:
1. Target: skills/{name}/SKILL.md -> {section}
   Change: {what will change}
   Source: {validation report check ID | user feedback | convention change}
2. Target: skills/{name}/references/EXAMPLE.md -> {section}
   Change: {what will change}
   Source: {source}

If the user wants to modify the list (add, remove, or change items), adjust and re-present before proceeding.

Step 4: Preview Proposed Changes

For each intended change, generate the proposed edit and present it as a before/after block grouped by file:

### skills/{name}/SKILL.md

**{Section name} -- before:**
> {exact current content of the section being changed}

**{Section name} -- after:**
> {proposed new content for this section}

### skills/{name}/references/EXAMPLE.md

**{Section name} -- before:**
> {exact current content}

**{Section name} -- after:**
> {proposed new content}

Preview rules:

  • Group all changes by file. Show each file once, with all its changes.
  • Show enough surrounding context for the user to understand the change.
  • For small edits (a few lines), show the full section before and after.
  • For large edits (rewriting most of a section), show the section header and the first/last few lines of before, then the full after.
  • Do NOT show files that are not being changed.

Ask: "Apply these changes? [yes / no]"

If the user says no, ask what to adjust and return to Step 3 or Step 4.

Step 5: Apply Changes (with Stale-Preview Guard)

Before writing any file, re-read each target file and compare its content to what you recorded in Step 2.

If any target file has changed since Step 2:

  • Do NOT write any files.
  • Report: "File {path} has changed since the preview was generated. Regenerating preview with current content."
  • Return to Step 2 with the same intended changes list.

If all target files match:

  • Write the changes to each target file.
  • Update the updated field in SKILL.md frontmatter to today's date. (The updated field tracks when the file was last modified, regardless of whether a version bump is accepted.)
  • Byte-0 preservation: verify each rewritten file still has --- at byte 0 of the file (no preceding content). If the previous content violated byte-0 placement (e.g., HTML attribution comment on line 1), surface this defensively before applying other changes and offer to fix the placement as part of the same write. Reference: library/skill-output-samples/SAMPLE_CREATION.md Section 5.
  • Report what was written: list each file and a one-line summary of what changed.
Step 6: Suggest Version Bump

After changes are applied, classify the overall change and suggest a version bump class. Do NOT auto-write the version number.

Classification rules (from docs/internal/skill-versioning.md):

Change typeBump classExamples
Wording clarified, examples improved, typos fixedpatchReworded checklist item, better example scenario, description expanded
New optional capability or section addedminorNew optional output section, handles more scenarios, new quality check
Required contract changed, interaction pattern breaksmajorCommand renamed, required section removed, "done" definition narrowed

Tie-breaker: If a user must do something new to stay compliant with the skill's required contract, classify as major. If the new behavior is additive or optional, classify as minor. If the required behavior is unchanged and only clarified, classify as patch.

Present the suggestion:

Suggested bump: {class} ({reason}).
Current version: {current}.
Bump to {suggested}? [yes / override / skip]
  • yes: Write the new version to SKILL.md frontmatter.
  • override: Ask for the desired version, validate it's valid SemVer and higher than current, then write it.
  • skip: Leave the version unchanged. The user may bump it later during release prep.
Show full SKILL.md (561 more words)Show less
Step 7: Offer HISTORY.md Update

After the version decision, produce a change summary and handle HISTORY.md based on the current state:

If HISTORY.md exists and version was bumped:

  1. Read HISTORY.md and validate its format:
    • Has a summary table with | Version | Date | Release | ... header
    • Versions are newest-first in the table
    • Each table version has a corresponding ## X.Y.Z section below
  2. If format is valid: offer to append. "Would you like me to add this version to HISTORY.md? [yes / no]" On yes: add a new row to the summary table (newest-first) and a new ## X.Y.Z section with the change summary.
  3. If format is invalid: warn and show the proposed content without writing. "HISTORY.md doesn't follow the expected format. Here's what I would add -- you can paste it manually:" Then show the proposed table row and version section.

If HISTORY.md does not exist and this is the skill's second version: Offer to create it. "This is the second version of this skill. Would you like me to create HISTORY.md with entries for both versions? [yes / no]" On yes: create HISTORY.md with the format from docs/internal/skill-versioning.md, including entries for both the original version (from release history or effort brief) and the new version.

If HISTORY.md does not exist and version was not bumped: No offer. HISTORY.md is premature until the skill has shipped a second version.

If HISTORY.md exists but version was not bumped (skip): No offer. The change summary is available in the conversation for the user to use at their discretion.

Step 8: Report Summary

Present a final summary:

## Iteration Complete: {skill-name}

**Files changed:**
- skills/{name}/SKILL.md -- {summary}
- skills/{name}/references/EXAMPLE.md -- {summary}

**Version:** {current} -> {new} ({class}) | or: unchanged (skipped)
**HISTORY.md:** updated | created | skipped | not applicable

**Next steps:**
- Run `utility-pm-skill-validate {name}` to verify the changes pass
- Run local CI: `bash scripts/lint-skills-frontmatter.sh`
- If satisfied, commit the changes

Degraded Mode

If you cannot read skill files directly (e.g., running via MCP or in an embedded environment without file system access):

  1. Validation-report-driven iteration is preferred in this mode. The report carries the context (check IDs, target paths, actions).
  2. For free-text iteration, ask the user to paste the content of each relevant file before proposing changes.
  3. The stale-preview guard (Step 5) cannot run -- note in the summary: "Applied without stale-preview check (file system not available)."
  4. HISTORY.md operations require the user to paste the current file content or confirm it does not exist.

Output Contract

The iterator MUST:

  • Normalize input into a structured intended-changes list before editing
  • Present all proposed changes as before/after previews grouped by file
  • Require explicit user confirmation before writing any file
  • Re-read target files before writing to guard against stale previews
  • Update the updated frontmatter field on every apply
  • Suggest a version bump class without auto-writing the version number
  • Handle HISTORY.md according to the rules in Step 7

The iterator MUST NOT:

  • Write files without showing a preview first
  • Write files without user confirmation
  • Auto-increment the version number without explicit confirmation
  • Create HISTORY.md for a skill still on its first version
  • Append to HISTORY.md without validating its format first

Quality Checklist

Before completing the iteration, verify:

  • Input was normalized into an intended-changes list before editing
  • All proposed changes were shown as before/after previews
  • User confirmed before any files were written
  • Stale-preview guard ran before writing (or noted as unavailable)
  • updated date was set to today in SKILL.md frontmatter
  • Version bump class was suggested with correct reasoning
  • Version was only written after explicit user confirmation
  • HISTORY.md was handled correctly per Step 7 rules
  • Final summary was presented with next steps

Examples

See references/EXAMPLE.md for a completed iteration demonstrating a validation-report-driven improvement to a real shipped skill.

© product-on-purpose, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in skills/utility-pm-skill-iterate of product-on-purpose/pm-skills.

  • SKILL.md
  • evals/trigger-fixtures.json
  • references/EXAMPLE.md
  • references/TEMPLATE.md

Open the folder on GitHubat commit 1cef1a9

Compare with similar skills

Utility Pm Skill Iterate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Utility Pm Skill Iterate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Utility Pm Skill Iterate this skillproduct-on-purpose/pm-skills716—~3.1kAutomated safety check: PassApache-2.0
Feedbackcodewhale-hq/Codewhale41k—~272Automated safety check: PassMIT
Skill Improversickn33/agentic-awesome-skills47k2 repos~1.5kAutomated safety check: PassMIT
Feedbacknexu-io/nexu3.3k—~660Automated safety check: WarnMIT
Touch Targetsthedaviddias/Front-End-Checklist74k—~938Automated safety check: PassMIT
Feedbacktinyfish-io/tinyfish-cookbook2.2k—~600Automated safety check: PassMIT

Similar skills

  • Feedback

    codewhale-hq/Codewhale

    Report a Codewhale bug or idea as a GitHub issue. An agent skill from codewhale-hq/Codewhale.

    41k GitHub stars~272 tokensUpdated today
    Auto-check passed
  • Skill Improver

    sickn33/agentic-awesome-skills

    Iteratively improve a Claude Code skill using the skill-reviewer agent until it meets quality standards.

    47k GitHub starsUsed in 2 repos~1.5k tokens
    Agent WorkflowsAuto-check passed
  • Feedback

    nexu-io/nexu

    Send feedback to the Nexu team. An agent skill from nexu-io/nexu.

    3.3k GitHub stars~660 tokensUpdated 5 mo ago
    Productivity & AutomationAuto-check: warnings
  • Touch Targets

    thedaviddias/Front-End-Checklist

    A skill your agent uses when applies to all interactive elements on touchscreen interfaces: buttons, links, checkboxes, radio buttons, form inputs, icon buttons, and menu items.

    74k GitHub stars~938 tokensUpdated 4 days ago
    MobileAuto-check passed
  • Feedback

    tinyfish-io/tinyfish-cookbook

    File structured feedback about TinyFish — bug reports, confusing setup steps, missing features, or a doctor diagnostic report.

    2.2k GitHub stars~600 tokensUpdated 2 days ago
    Testing & QAAuto-check passed
  • Pattern for progressively refining context retrieval to solve the subagent context problem.

    277k GitHub starsUsed in 7 repos~1.6k tokens
    Agent WorkflowsAuto-check passed

More from product-on-purpose/pm-skills

All 68 skills in this repo
  • Define Hypothesis

    product-on-purpose/pm-skills

    Defines a testable hypothesis with clear success metrics and a validation approach.

    716 GitHub stars~966 tokensUpdated 2 days ago
    Auto-check passed
  • Define Jtbd Canvas

    product-on-purpose/pm-skills

    Creates a Jobs to be Done canvas capturing the functional, emotional, and social dimensions of a customer job.

    716 GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check passed
  • Define Opportunity Tree

    product-on-purpose/pm-skills

    Creates an opportunity solution tree connecting a desired outcome to customer opportunities and candidate solutions, preventing solution-first jumps in continuous discovery.

    716 GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check passed
  • Define Problem Statement

    product-on-purpose/pm-skills

    Creates a clear problem framing document with user impact, business context, and success criteria.

    716 GitHub stars~932 tokensUpdated 2 days ago
    Auto-check passed
  • Deliver Acceptance Criteria

    product-on-purpose/pm-skills

    Generates structured Given/When/Then acceptance criteria for a user story or feature slice, covering the happy path, key failure scenarios, and non-functional expectations in testable form.

    716 GitHub stars~1k tokensUpdated 2 days ago
    Auto-check passed
  • Deliver Launch Checklist

    product-on-purpose/pm-skills

    Creates a cross-functional pre-launch checklist covering engineering, design, marketing, support, legal, and operations readiness, with owners, dates, and go/no-go criteria so nothing is missed…

    716 GitHub stars~970 tokensUpdated 2 days ago
    Auto-check passed

Questions about Utility Pm Skill Iterate

What does Utility Pm Skill Iterate do?

Applies targeted improvements to an existing pm-skills skill based on feedback, validation reports, or convention changes. Utility Pm Skill Iterate is an agent skill from product-on-purpose/pm-skills. Applies targeted improvements to an existing pm-skills skill based on feedback, validation reports, or convention changes.

When should I use Utility Pm Skill Iterate?

Utility Pm Skill Iterate fits situations like: improving a skill after validation.

How do I install Utility Pm Skill Iterate in Claude Code?

Run `npx skills add product-on-purpose/pm-skills --skill utility-pm-skill-iterate -a claude-code`. Or copy the skill folder (skills/utility-pm-skill-iterate in product-on-purpose/pm-skills) into .claude/skills/utility-pm-skill-iterate in your project. Claude Code loads it when a task matches its description.

How do I install Utility Pm Skill Iterate in Codex?

Run `npx skills add product-on-purpose/pm-skills --skill utility-pm-skill-iterate -a codex`. Or copy the skill folder (skills/utility-pm-skill-iterate in product-on-purpose/pm-skills) into .agents/skills/utility-pm-skill-iterate in your project. Codex loads it when a task matches its description.

Can I use Utility Pm Skill Iterate in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add product-on-purpose/pm-skills --skill utility-pm-skill-iterate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/utility-pm-skill-iterate, .gemini/skills/utility-pm-skill-iterate, .github/skills/utility-pm-skill-iterate and .opencode/skills/utility-pm-skill-iterate in your project.

What does Utility Pm Skill Iterate need to run?

SKILL.md names no scripts, command-line tools or credentials: Utility Pm Skill Iterate is instructions for the agent only.

Does Utility Pm Skill Iterate access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Utility Pm Skill Iterate safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Utility Pm Skill Iterate use?

Utility Pm Skill Iterate is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Utility Pm Skill Iterate use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.

What are the alternatives to Utility Pm Skill Iterate?

Skills that share tags, products or a category with Utility Pm Skill Iterate: Feedback (codewhale-hq/Codewhale, 41k stars), Skill Improver (sickn33/agentic-awesome-skills, 47k stars), Feedback (nexu-io/nexu, 3.3k stars) and Touch Targets (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Utility Pm Skill Iterate?

product-on-purpose (a GitHub organization) maintains it in product-on-purpose/pm-skills, which has 716 GitHub stars. The repository holds 68 skills in this directory. The repository was last updated on October 8, 2026.

Source: product-on-purpose/pm-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.