utility-pm-skill-builder
Guides contributors from a PM skill idea to a complete Skill Implementation Packet aligned with pm-skills conventions. Runs gap analysis, validates through a Why Gate, classifies by type and phase, generates draft files, and writes to a staging area for review before promotion.
By product-on-purpose · 615 installs
npx skills add product-on-purpose/pm-skills --skill utility-pm-skill-builder
Source repository · Upstream listing
<! PM Skills https://github.com/product on purpose/pm skills Apache 2.0
PM Skill Builder
This skill creates new PM skills for the pm skills library. It produces a
Skill Implementation Packet a complete design document with draft files
in a staging area for review before promotion to canonical locations.
When to Use
When you have an idea for a new PM skill
When you want to add a domain skill (phase specific), foundation skill
(cross cutting), or utility skill (meta/tooling) to the pm skills library
When a contributor needs guided skill creation that follows repo conventions
When NOT to Use
To modify or improve an existing skill → use utility pm skill iterate
To audit an existing skill against conventions → use utility pm skill validate
To create a skill for a non pm skills context → use a general agent skill builder
To create a workflow → workflows are authored directly, not via this builder
Instructions
When asked to create a new PM skill, follow these steps:
Step 1: Understand the Idea
Accept the idea in either form:
Problem first : "What PM problem does this skill solve? Who runs into
this problem, and what do they currently produce (or fail to produce)?"
Skill first : "Describe the skill you want to create. What artifact
does it produce? What PM activity does it support?"
Both entry points produce the same downstream flow. If the user provides
one form, do not ask for the other extract what you need and proceed.
If the idea is vague, ask ONE follow up question to clarify the artifact
type and target audience before proceeding.
Step 2: Gap Analysis
Check ALL existing skills for overlap. Use the Current Library Reference
below (derive the live inventory from skill manifest.json or AGENTS.md )
AND scan the skills/ directory for the latest inventory. Include all four
families domain, foundation, utility, and tool the tool family is easy
to miss since it has no phase prefix pattern in common conversation.
Present findings with specificity:
Name each overlapping skill and explain what it covers
Identify the specific gap this new skill would fill
If overlap is high, trigger the Why Gate (see below)
Why Gate (triggers when overlap is found):
Ask the user: "Name 2 3 specific prompts or scenarios where the existing
skills fail to produce what you need."
Kill Gate : If the user cannot articulate convincing gaps, recommend
an alternative:
"Revise [existing skill] to cover this case"
"Create a workflow combining [skill A] + [skill B]"
"Add a command variant, not a new skill"
"This is a documentation improvement, not a new skill"
Do not proceed past the kill gate without either convincing evidence of
a gap or explicit user override.
Step 3: Scope Check
Evaluate whether the idea should be ONE skill or MULTIPLE skills.
Splitting signals:
The idea produces multiple distinct artifact types
The idea crosses Triple Diamond phases (e.g., Discover + Deliver)
The description naturally contains "and" connecting two activities
If splitting is warranted, present the recommendation:
"This seems to cover two distinct PM activities:
1. [Activity A] → produces [Artifact A]
2. [Activity B] → produces [Artifact B]
These work better as separate skills that can be chained via a workflow.
Want to proceed with just [Activity A] for now?"
Step 4: Classification + Repo Fit
Determine the skill's classification and naming:
Domain skills (phase specific PM activities):
Phase: discover define develop deliver measure iterate
Directory: {phase} {skill name}
Frontmatter: phase: {phase} (required), no classification field
Foundation skills (cross cutting, used across phases):
No phase
Directory: foundation {skill name}
Frontmatter: classification: foundation (required), no phase field
Use when: the skill applies to multiple phases equally
Utility skills (meta skills, repo tooling):
No phase
Directory: utility {skill name}
Frontmatter: classification: utility (required), no phase field
Use when: the skill operates on the repo, workflow, or other skills
Dialect and exemplar selection:
First, pick the skill's dialect from [Skeleton Canon: The Three Sanctioned
Dialects](../../site/src/content/docs/guides/creating pm skills.md skeleton canon the three sanctioned dialects)
(classic, contract shaped, or tool family) this fixes the required heading
skeleton before any exemplar is chosen. Do not default to "mirror the closest
exemplar": an exemplar can itself carry drift (a case variant, an extra or
missing section), and a straight mirror copies that drift forward into the
new skill.
Then identify 1 2 existing skills in the SAME dialect that are the closest
structural match:
Same phase same category similar artifact type
Read their SKILL.md to confirm instruction style, output contract wording,
and quality checklist pattern (the canon fixes the required headings; the
exemplar informs everything else tone, step granularity, and any
skill specific extra sections)
Name the exemplars explicitly: "Modeled after [skill] same phase,
[category] category, [dialect] dialect"
Present the classification, dialect, and exemplar selection for user confirmation.
Step 4.5: Eval Readiness (the eval contract)
A new skill must ship eval ready so coverage never falls behind: routing health
and output quality are both measurable from day one. Decide the eval contract here,
then emit its assets in Step 5. Four parts:
A. Nearest neighbors (C 2). Name the new skill's 1 3 nearest neighbors the
existing skills whose triggers most overlap. Derive them from the Step 2 gap analysis
plus same phase / same category siblings. These neighbors drive the boundary pointers
(below), the near miss trigger fixtures (Step 5), and the collision probe (Step 7).
B. Reciprocal boundary pointers (C 3). The draft SKILL.md MUST include a
When NOT to Use section that names each neighbor and says when to use that
neighbor instead. For every neighbor, also add the reciprocal pointer back: a
"When NOT to Use" bullet in the neighbor's SKILL.md pointing to the new skill. If the
overlap is strong enough to be a measured collision pair, add the pair to
COLLISION PAIRS in scripts/check trigger fixtures.mjs so the reciprocity gate
( check reciprocal boundary pointers.mjs ) and the collision probe both cover it.
Reciprocal pointers are what kept the v2.26.0 rewrites collision clean.
C. Output eval family (C 4). Map the skill to an output eval family rubric so its
artifact quality is measurable. Pick by phase/category:
Family rubric Covers (phase / kind)
framing define problem/hypothesis/jtbd/opportunity/prioritization + foundation okr writer/persona/lean canvas
specification deliver prd/acceptance criteria/user stories/edge cases/launch checklist
discovery discover interview synthesis/competitive/market sizing/journey/stakeholder
technical develop adr/design rationale/solution brief/spike summary
measurement measure experiment design/results/okr grader/dashboard/instrumentation/survey
learning iterate retrospective/lessons log/pivot decision/refinement notes
communication audience facing: deliver release notes, foundation stakeholder update
Family rubrics live at docs/internal/eval rubrics/{family}.md . If the skill fits a
family that has a rubric, use that family value in the scenario frontmatter. If it
opens a NEW family (meeting/tool skills have none yet), note "no family rubric yet
author one before the skill enters the output eval roster" and skip the family value.
D. Fixture + scenario plan (C 1, C 4). Plan the two eval asset files emitted in
Step 5: a trigger fixtures.json (routing) and an output scenarios/<id .md (output
quality). Their shapes are specified in Step 5 items 13 14.
Present the neighbors + family + reciprocal pointer plan for user confirmation before
generating the packet.
Step 5: Generate Skill Implementation Packet
Produce the complete packet using references/TEMPLATE.md as the format.
The packet includes:
1. Decision recommendation + Why Gate evidence (if applicable)
2. Classification type, phase (if domain), category, directory name
3. Overlap Analysis what was found, why this skill is still needed
4. Exemplar Skills which existing skills modeled, why
5. Draft Frontmatter complete, valid YAML block. The frontmatter MUST begin with at byte 0 of the file (no preceding content of any kind, including HTML comments, BOM, or whitespace). Place any attribution comment AFTER the closing fence, never before. Reference: library/skill output samples/SAMPLE CREATION.md Section 5.
6. Draft SKILL.md full content (not an outline), following the Step 4
dialect's canon heading skeleton and the chosen exemplars' instruction style
7. Draft TEMPLATE.md section headers with guidance comments
8. Draft EXAMPLE.md complete, realistic example (150 300 lines) with a
specific PM scenario, every section filled, optional sections demonstrated
both filled and skipped
9. Draft Command command frontmatter
10. AGENTS.md Entry exact text to add
11. Validation Checklist all CI rules checked against the draft
12. Next Steps local CI, testing, contribution workflow
13. Draft trigger fixtures.json (C 1, routing eval) evals/trigger fixtures.json :
a JSON object { "schema": 1, "skill": "{name}", "runs per query": 3,
"trigger threshold": 0.5, "queries": [...] } . The queries array needs = 16
total , = 8 with "expect": "trigger" (drawn from the skill's real intents,
NOT just artifact keywords include intent only asks) and = 8 with
"expect": "no trigger" , of which = 2 are near misses aimed at the Step 4.5
neighbors (mark them "near miss of": "{neighbor}" ). Split each class ~60/40 across
"split": "train" / "split": "validation" . This is the B 4 fixture contract
( scripts/check trigger fixtures.mjs ).
14. Draft output scenario (C 4, output quality eval) evals/output scenarios/{id}.md :
frontmatter scenario: {id} / skill: {name} / family: {family from Step 4.5} /
created: {date} , then a realistic input brief ( = 100 chars of body) that gives the
skill arm and a freehand control the same raw material. This is the B 7 asset contract
( scripts/check output eval assets.mjs ). Omit family only if Step 4.5 found no
rubric yet.
Step 6: Write to Staging Area
Write all generated files to the staging area:
Note : staging/ is gitignored draft artifacts never ship in releases.
The staging folder is discarded after promotion.
Report what was written and where.
Step 7: Promote (on confirmation)
Ask: "Review the packet above. When ready, I'll promote the files to
their canonical locations. Proceed? [yes/no]"
If yes, promote by copying each file from staging to its canonical path:
Staging file Canonical location
staging/pm skill builder/{skill name}/SKILL.md skills/{dir name}/SKILL.md
staging/pm skill builder/{skill name}/references/TEMPLATE.md skills/{dir name}/references/TEMPLATE.md
staging/pm skill builder/{skill name}/references/EXAMPLE.md skills/{dir name}/references/EXAMPLE.md
staging/pm skill builder/{skill name}/evals/trigger fixtures.json skills/{dir name}/evals/trigger fixtures.json
staging/pm skill builder/{skill name}/evals/output scenarios/{id}.md skills/{dir name}/evals/output scenarios/{id}.md
staging/pm skill builder/{skill name}/command.md commands/{command name}.md
Where {dir name} is the classification prefixed directory (e.g., deliver change communication ).
Then:
1. Create the target directories: skills/{dir name}/references/ and skills/{dir name}/evals/output scenarios/
2. Copy each file to its canonical location
3. Append