Add committed, browsable dist/ download shelf

Make the library easy and educational to access for non-technical PMs:
browse to /dist on GitHub, read a plain-language README, scan CATALOG.md,
and download a skill or a pack directly — no terminal, no Releases tab.

- dist/README.md + dist/CATALOG.md generated from skills/ (never drift)
- dist/<skill>.zip: 56 individual upload-ready skill ZIPs (flat)
- dist/packages/: curated bundles + Codex package
- scripts/build-dist.sh: regenerates the shelf from skills/ (repeatable)
- .gitignore: commit the curated shelf, ignore intermediate build scratch
  (fixed pattern so press-release.zip is not caught by the master-artifact rule)
- docs/RELEASE-PACKAGING.md: record the intentional committed-dist policy

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dean Peters
2026-07-08 11:56:32 -04:00
parent 9c6b7a3fe6
commit c146d2a784
68 changed files with 329 additions and 3 deletions
+9 -1
View File
@@ -10,7 +10,15 @@ __pycache__/
.Python
build/
develop-eggs/
dist/
# NOTE: dist/ is an INTENTIONALLY COMMITTED, browsable distribution folder
# (dist/README.md, dist/CATALOG.md, individual skill .zips, and dist/packages/).
# See docs/RELEASE-PACKAGING.md. We ignore only the intermediate build scratch
# that scripts/build-dist.sh regenerates and then curates into the tracked layout:
dist/release/
dist/skill-zips/
dist/claude-desktop/
dist/codex/
dist/Product-Manager-Skills-*-release.zip
downloads/
eggs/
.eggs/
+82
View File
@@ -0,0 +1,82 @@
# Skill Catalog
All **56 skills** in this library. Each links to its individual download ZIP in this folder — click, download, unzip, and upload the `SKILL.md` to Claude. No terminal required.
> New here? Read [`README.md`](README.md) first — it explains how to pick a pack and install.
## Component Skills (23)
_Self-contained artifacts and templates._
| Skill | What it does |
|---|---|
| [`altitude-horizon-framework`](altitude-horizon-framework.zip) | Understand the PM-to-Director transition through altitude and horizon thinking. Use when diagnosing scope, time-horizon, or leadership-level gaps. |
| [`company-research`](company-research.zip) | Create a company research brief with executive quotes, product strategy, and org context. Use when preparing for interviews, competitive analysis, partnerships, or market-entry work. |
| [`customer-journey-map`](customer-journey-map.zip) | Create a customer journey map across stages, touchpoints, actions, emotions, and metrics. Use when diagnosing a broken experience or aligning a team on the full customer flow. |
| [`eol-message`](eol-message.zip) | Write a clear, empathetic EOL announcement with rationale, customer impact, and next steps. Use when retiring a product, feature, or plan without creating avoidable confusion. |
| [`epic-hypothesis`](epic-hypothesis.zip) | Frame an epic as a testable hypothesis with target user, expected outcome, and validation method. Use when defining a major initiative before roadmap, discovery, or delivery planning. |
| [`finance-metrics-quickref`](finance-metrics-quickref.zip) | Look up SaaS finance metrics, formulas, and benchmarks fast. Use when you need a quick metric definition, formula, or benchmark during analysis. |
| [`jobs-to-be-done`](jobs-to-be-done.zip) | Uncover customer jobs, pains, and gains in a structured JTBD format. Use when clarifying unmet needs, repositioning a product, or improving discovery and messaging. |
| [`pestel-analysis`](pestel-analysis.zip) | Analyze political, economic, social, technological, environmental, and legal forces. Use when external market shifts could materially affect a product, roadmap, or strategy. |
| [`pol-probe`](pol-probe.zip) | Define a Proof of Life probe to test a risky hypothesis cheaply. Use when you need harsh truth before building real product. |
| [`positioning-statement`](positioning-statement.zip) | Create a Geoffrey Moore-style positioning statement. Use when clarifying who you serve, what problem you solve, your category, and why you're different from alternatives. |
| [`press-release`](press-release.zip) | Write an Amazon-style press release that defines customer value before building. Use when aligning stakeholders on a new product, feature, or strategic bet. |
| [`problem-statement`](problem-statement.zip) | Write a user-centered problem statement with who is blocked, what they are trying to do, why it matters, and how it feels. Use when framing discovery, prioritization, or a PRD. |
| [`product-sense-interview-answer`](product-sense-interview-answer.zip) | Structure a spoken PM product-sense answer with assumptions, segmentation, pain-point prioritization, and MVP tradeoffs. Use when practicing design, improve, or build-next interview questions. |
| [`proto-persona`](proto-persona.zip) | Create a proto-persona from current research, market signals, and team knowledge. Use when you need a working customer profile before deeper validation. |
| [`recommendation-canvas`](recommendation-canvas.zip) | Evaluate an AI product idea across outcomes, hypotheses, risks, and positioning. Use when deciding whether an AI solution deserves investment or recommendation. |
| [`saas-economics-efficiency-metrics`](saas-economics-efficiency-metrics.zip) | Evaluate SaaS unit economics and capital efficiency. Use when deciding whether the business can scale efficiently or needs correction. |
| [`saas-revenue-growth-metrics`](saas-revenue-growth-metrics.zip) | Calculate SaaS revenue, retention, and growth metrics. Use when diagnosing momentum, churn, expansion, or product-market-fit signals. |
| [`stakeholder-identification`](stakeholder-identification.zip) | Map every stakeholder before engaging anyone. Use when launching an initiative, scoping discovery, or building an engagement plan from scratch. |
| [`stakeholder-mapping`](stakeholder-mapping.zip) | Prioritize stakeholders using two complementary grids. Use when setting engagement strategy and surfacing whose voice needs elevating after stakeholder identification. |
| [`storyboard`](storyboard.zip) | Create a six-frame storyboard that shows a user's journey from problem to solution. Use when you need a fast narrative for alignment, concept reviews, or demos. |
| [`user-story`](user-story.zip) | Create user stories with Mike Cohn format and Gherkin acceptance criteria. Use when turning user needs into development-ready work with clear outcomes and testable conditions. |
| [`user-story-mapping`](user-story-mapping.zip) | Create a user story map that lays out activities, steps, tasks, and release slices. Use when planning a workflow, backlog, or MVP around the user journey. |
| [`user-story-splitting`](user-story-splitting.zip) | Break a large story or epic into smaller deliverable stories using proven split patterns. Use when backlog items are too big for estimation, sequencing, or independent release. |
## Interactive Skills (26)
_Guided, multi-turn advisors that ask then recommend._
| Skill | What it does |
|---|---|
| [`acquisition-channel-advisor`](acquisition-channel-advisor.zip) | Evaluate acquisition channels using unit economics, customer quality, and scalability. Use when deciding whether to scale, test, or kill a growth channel. |
| [`agent-orchestration-advisor`](agent-orchestration-advisor.zip) | Design multi-agent AI workflows with clear boundaries, handoffs, and monitoring. Use when a complex PM task should run as parallel specialized agents instead of one linear process. |
| [`ai-shaped-readiness-advisor`](ai-shaped-readiness-advisor.zip) | Assess whether your product work is AI-first or AI-shaped. Use when evaluating AI maturity and choosing the next team capability to build. |
| [`business-health-diagnostic`](business-health-diagnostic.zip) | Diagnose SaaS business health across growth, retention, efficiency, and capital. Use when preparing a business review or prioritizing urgent fixes. |
| [`context-engineering-advisor`](context-engineering-advisor.zip) | Diagnose context stuffing vs. context engineering. Use when an AI workflow feels bloated, brittle, or hard to steer reliably. |
| [`customer-journey-mapping-workshop`](customer-journey-mapping-workshop.zip) | Run a customer journey mapping workshop with adaptive questions and outputs. Use when you need to map stages, actions, emotions, pain points, and opportunities for a persona and scenario. |
| [`derisk-measurement-advisor`](derisk-measurement-advisor.zip) | Identify what to measure, test, or track to de-risk a product or AI idea. Use when stress-testing an idea across internal (DUFV) and external (PESTEL) dimensions. |
| [`director-readiness-advisor`](director-readiness-advisor.zip) | Guide the PM-to-Director transition across preparing, interviewing, landing, and recalibrating. Use when leadership scope is changing and you need practical coaching. |
| [`discovery-interview-prep`](discovery-interview-prep.zip) | Plan customer discovery interviews with the right goal, segment, constraints, and method. Use when preparing interviews for problem validation, churn research, or new product ideas. |
| [`epic-breakdown-advisor`](epic-breakdown-advisor.zip) | Break down epics into user stories with Humanizing Work split patterns. Use when a backlog item is too large to estimate, sequence, or deliver safely. |
| [`feature-investment-advisor`](feature-investment-advisor.zip) | Evaluate feature investments using revenue impact, cost structure, ROI, and strategy. Use when deciding whether a feature deserves investment. |
| [`finance-based-pricing-advisor`](finance-based-pricing-advisor.zip) | Evaluate pricing changes using ARPU, conversion, churn risk, NRR, and payback. Use when deciding whether a pricing move should ship. |
| [`incoming-request-advisor`](incoming-request-advisor.zip) | Decode an incoming message into a structured breakdown that separates the literal ask from the job-to-be-done. Use before replying to a loaded Slack ping, email, mandate, or escalation. |
| [`lean-ux-canvas`](lean-ux-canvas.zip) | Guide teams through Lean UX Canvas v2. Use when framing a business problem, surfacing assumptions, and defining what to learn next. |
| [`opportunity-solution-tree`](opportunity-solution-tree.zip) | Build an Opportunity Solution Tree from outcomes to opportunities, solutions, and tests. Use when a stakeholder request needs problem framing before you decide what to build. |
| [`organic-growth-advisor`](organic-growth-advisor.zip) | Identify which organic growth path to pursue — new segments, geographies, channels, or products. Use when diagnosing where a growth constraint lives and which McKinsey growth level to act on next. |
| [`pm-skill-creator`](pm-skill-creator.zip) | Design a new PM skill through guided conversation. Use when you have raw content or an idea and want to shape it into a compliant skill. |
| [`pol-probe-advisor`](pol-probe-advisor.zip) | Select the right Proof of Life (PoL) probe based on hypothesis, risk, and resources. Use this to match the validation method to the real learning goal, not tooling comfort. |
| [`positioning-workshop`](positioning-workshop.zip) | Run a positioning workshop that surfaces target customer, unmet need, category, benefits, and differentiation. Use when your product messaging feels fuzzy, generic, or misaligned. |
| [`prioritization-advisor`](prioritization-advisor.zip) | Choose a prioritization framework based on stage, team context, and stakeholder needs. Use when deciding between RICE, ICE, value/effort, or another scoring approach. |
| [`problem-framing-canvas`](problem-framing-canvas.zip) | Guide teams through MITRE's Problem Framing Canvas. Use when you need a clearer problem statement before jumping to solutions. |
| [`stakeholder-engagement-advisor`](stakeholder-engagement-advisor.zip) | Plan engagement for a specific stakeholder. Use when preparing an outreach, navigating resistance, or aligning a critical relationship before a key milestone. |
| [`tam-sam-som-calculator`](tam-sam-som-calculator.zip) | Calculate TAM, SAM, and SOM with explicit assumptions, methods, and caveats. Use when sizing a market for a product idea, business case, or executive review. |
| [`user-story-mapping-workshop`](user-story-mapping-workshop.zip) | Run a user story mapping workshop with adaptive questions and a structured map output. Use when you need backbone activities, tasks, and release slices for a workflow. |
| [`vp-cpo-readiness-advisor`](vp-cpo-readiness-advisor.zip) | Guide the transition to VP or CPO across preparing, interviewing, landing, and recalibrating. Use when executive product scope is changing fast. |
| [`workshop-facilitation`](workshop-facilitation.zip) | Facilitate workshop sessions in a one-step, multi-turn flow. Use when an interactive skill needs consistent pacing, options, and progress tracking. |
## Workflow Skills (7)
_End-to-end processes that orchestrate other skills._
| Skill | What it does |
|---|---|
| [`company-intel`](company-intel.zip) | Research a company, industry, or competitor set using web search and seven analytical lenses. Use when you need structured intel that feeds downstream PM skills. |
| [`discovery-process`](discovery-process.zip) | Run a full discovery cycle from problem hypothesis to validated solution. Use when a team needs a structured path through framing, interviews, synthesis, and experiments. |
| [`executive-onboarding-playbook`](executive-onboarding-playbook.zip) | Plan a VP or CPO 30-60-90 day diagnostic onboarding path. Use when entering a new executive product role and avoiding premature change. |
| [`prd-development`](prd-development.zip) | Build a structured PRD that connects problem, users, solution, and success criteria. Use when turning discovery notes into an engineering-ready document for a major initiative. |
| [`product-strategy-session`](product-strategy-session.zip) | Run an end-to-end product strategy session across positioning, discovery, and roadmap planning. Use when a team needs validated direction before committing to execution. |
| [`roadmap-planning`](roadmap-planning.zip) | Plan a strategic roadmap across prioritization, epic definition, stakeholder alignment, and sequencing. Use when turning strategy into a release plan that teams can execute. |
| [`skill-authoring-workflow`](skill-authoring-workflow.zip) | Turn raw PM content into a compliant, publish-ready skill. Use when creating or updating a repo skill without breaking standards. |
+41
View File
@@ -0,0 +1,41 @@
# Product Manager Skills — Downloads
Welcome. This folder is the **easy download shelf** for the library — no code, no
terminal. Grab what you want, unzip it, and upload the skills to Claude.
There are **56 skills** in total. Two ways to get them:
## 1. Grab a bundle (recommended)
Bundles live in [`packages/`](packages/). Download one ZIP, unzip it, and you'll
find upload-ready skill ZIPs inside.
| Bundle | Best for |
|---|---|
| [`pm-skills-starter-pack.zip`](packages/pm-skills-starter-pack.zip) | Most PMs — a small, practical starter set |
| [`02-discovery-pack.zip`](packages/02-discovery-pack.zip) | Understanding customers, problems, and opportunities |
| [`03-strategy-pack.zip`](packages/03-strategy-pack.zip) | Positioning, market thinking, product direction |
| [`04-delivery-pack.zip`](packages/04-delivery-pack.zip) | Stories, epics, PRDs, roadmap execution |
| [`05-ai-pm-pack.zip`](packages/05-ai-pm-pack.zip) | AI product work |
| [`99-all-skills-pack.zip`](packages/99-all-skills-pack.zip) | Everything — all 56 skills |
| [`pm-skills-codex.zip`](packages/pm-skills-codex.zip) | OpenAI Codex users (`.agents/skills` + `AGENTS.md`) |
## 2. Grab one skill at a time
Every skill has its own ZIP right here in this folder. Browse them in
[`CATALOG.md`](CATALOG.md), then click the one you want.
## How to install (Claude Desktop / Web)
1. Download a bundle (or an individual skill ZIP).
2. If it's a bundle, unzip it to reveal the individual skill ZIPs.
3. In Claude, open **Skills** and upload the skill ZIP(s).
4. Start asking better product questions.
Full step-by-step guides live in [`../docs/`](../docs): `INSTALL-CLAUDE-DESKTOP.md`,
`INSTALL-CLAUDE-CODE.md`, and `INSTALL-CODEX.md`.
---
_This folder is generated by `scripts/build-dist.sh` from the canonical `skills/`
source. Don't edit files here by hand — re-run the script to refresh them._
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+38 -2
View File
@@ -8,6 +8,42 @@ The release experience should feel simple:
Download one pack. Unzip it. Upload the skill ZIPs inside. Start asking better product questions.
```
## `dist/` Is a Committed, Browsable Download Shelf
**Policy (intentional):** `dist/` is checked into the repo so anyone — including
non-technical PMs who never touch a terminal — can browse to
`https://github.com/deanpeters/Product-Manager-Skills/tree/main/dist`, read a
plain-language `README.md`, scan the `CATALOG.md`, and download a skill or a pack
directly. Making the library easy and educational to access is the point; hiding
the ZIPs behind the Releases tab worked against that.
The **tracked** layout (produced by `scripts/build-dist.sh`):
```text
dist/
README.md # plain-language landing page (renders on GitHub)
CATALOG.md # browsable catalog of every skill, by category
<skill-name>.zip # individual, upload-ready skill ZIPs (flat)
packages/
pm-skills-starter-pack.zip
02-discovery-pack.zip
03-strategy-pack.zip
04-delivery-pack.zip
05-ai-pm-pack.zip
99-all-skills-pack.zip
pm-skills-codex.zip
```
`README.md` and `CATALOG.md` are **generated from `skills/`**, so they never drift
from the source. Re-run `scripts/build-dist.sh` after adding or changing skills.
The intermediate build directories (`dist/claude-desktop/`, `dist/codex/`,
`dist/skill-zips/`, `dist/release/`, and the master `dist/*-release.zip`) remain
**git-ignored** — only the curated shelf above is committed.
GitHub Releases still exist and are still produced on `v*` tags; the committed
`dist/` shelf is a complement to them, not a replacement.
## Maintainer Flow
From the repo root:
@@ -84,8 +120,8 @@ Build everything:
## Important Rules
- Do not edit files under `dist/` directly.
- Do not commit generated ZIP files unless the repo intentionally changes that policy.
- Do not edit files under `dist/` by hand — they are generated. Re-run `scripts/build-dist.sh` to refresh the committed shelf.
- The committed `dist/` shelf (README, CATALOG, skill ZIPs, `packages/`) **is** intentionally version-controlled; the intermediate build dirs are git-ignored. This is the "intentional policy change" the older rule referred to.
- Claude Desktop/Web packs are ZIPs of individual upload-ready skill ZIPs. Users unzip the pack first, then upload the skill ZIPs inside to Claude.
- Codex packages are expanded `.agents/skills` folders inside a ZIP, not ZIPs of ZIPs.
- Do not remove `.claude-plugin/marketplace.json`; Claude Code users rely on the marketplace path.
+159
View File
@@ -0,0 +1,159 @@
#!/usr/bin/env bash
#
# build-dist.sh - Assemble the committed, browsable dist/ distribution folder.
#
# This is the folder users can navigate to at:
# https://github.com/deanpeters/Product-Manager-Skills/tree/main/dist
#
# Layout produced (all tracked in git):
# dist/README.md plain-language landing page (renders on GitHub)
# dist/CATALOG.md browsable catalog of every skill, by category
# dist/<skill>.zip individual, upload-ready skill ZIPs (flat)
# dist/packages/<pack>.zip curated bundles + the Codex package
#
# It runs the existing build-release.sh (which validates + builds every
# artifact), then curates the tracked layout and regenerates the two docs.
# Nothing under dist/ is hand-maintained; re-run this to refresh it.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
DIST="$ROOT/dist"
echo "[1/4] Building all release artifacts (validate + packs + codex + skill zips)"
bash "$SCRIPT_DIR/build-release.sh" >/dev/null
echo " done"
echo "[2/4] Curating tracked layout"
# Clear the tracked parts (leave the ignored build scratch dirs in place)
find "$DIST" -maxdepth 1 -type f -name '*.zip' -delete 2>/dev/null || true
rm -rf "$DIST/packages"
mkdir -p "$DIST/packages"
# Individual skill ZIPs -> dist/ root (flat)
cp "$DIST"/skill-zips/*.zip "$DIST"/
skill_zip_count="$(find "$DIST" -maxdepth 1 -type f -name '*.zip' | wc -l | tr -d ' ')"
# Curated bundles + codex -> dist/packages/
for p in pm-skills-starter-pack 02-discovery-pack 03-strategy-pack \
04-delivery-pack 05-ai-pm-pack 99-all-skills-pack; do
cp "$DIST/claude-desktop/$p.zip" "$DIST/packages/"
done
cp "$DIST/codex/pm-skills-codex.zip" "$DIST/packages/"
echo " $skill_zip_count individual skill ZIPs, $(find "$DIST/packages" -name '*.zip' | wc -l | tr -d ' ') packages"
echo "[3/4] Generating CATALOG.md and README.md"
python3 - "$ROOT" <<'PY'
import os, sys, glob
try:
import yaml
except ImportError:
sys.exit("PyYAML required (used elsewhere in this repo)")
root = sys.argv[1]
dist = os.path.join(root, "dist")
skills_dir = os.path.join(root, "skills")
def frontmatter(path):
text = open(path, encoding="utf-8").read()
if not text.startswith("---"):
return {}
end = text.find("\n---", 3)
return yaml.safe_load(text[3:end]) or {}
skills = []
for p in sorted(glob.glob(os.path.join(skills_dir, "*", "SKILL.md"))):
fm = frontmatter(p)
name = fm.get("name") or os.path.basename(os.path.dirname(p))
skills.append({
"name": name,
"type": (fm.get("type") or "other").lower(),
"desc": (fm.get("description") or "").strip().strip('"'),
})
TYPES = [
("component", "Component Skills", "Self-contained artifacts and templates."),
("interactive", "Interactive Skills", "Guided, multi-turn advisors that ask then recommend."),
("workflow", "Workflow Skills", "End-to-end processes that orchestrate other skills."),
]
by_type = {t: [s for s in skills if s["type"] == t] for t, _, _ in TYPES}
total = len(skills)
# ---- CATALOG.md ----
lines = [
"# Skill Catalog",
"",
f"All **{total} skills** in this library. Each links to its individual "
"download ZIP in this folder — click, download, unzip, and upload the "
"`SKILL.md` to Claude. No terminal required.",
"",
"> New here? Read [`README.md`](README.md) first — it explains how to pick "
"a pack and install.",
"",
]
for key, title, blurb in TYPES:
rows = sorted(by_type[key], key=lambda s: s["name"])
if not rows:
continue
lines += [f"## {title} ({len(rows)})", "", f"_{blurb}_", "",
"| Skill | What it does |", "|---|---|"]
for s in rows:
lines.append(f"| [`{s['name']}`]({s['name']}.zip) | {s['desc']} |")
lines.append("")
open(os.path.join(dist, "CATALOG.md"), "w", encoding="utf-8").write("\n".join(lines))
# ---- README.md ----
readme = f"""# Product Manager Skills — Downloads
Welcome. This folder is the **easy download shelf** for the library — no code, no
terminal. Grab what you want, unzip it, and upload the skills to Claude.
There are **{total} skills** in total. Two ways to get them:
## 1. Grab a bundle (recommended)
Bundles live in [`packages/`](packages/). Download one ZIP, unzip it, and you'll
find upload-ready skill ZIPs inside.
| Bundle | Best for |
|---|---|
| [`pm-skills-starter-pack.zip`](packages/pm-skills-starter-pack.zip) | Most PMs — a small, practical starter set |
| [`02-discovery-pack.zip`](packages/02-discovery-pack.zip) | Understanding customers, problems, and opportunities |
| [`03-strategy-pack.zip`](packages/03-strategy-pack.zip) | Positioning, market thinking, product direction |
| [`04-delivery-pack.zip`](packages/04-delivery-pack.zip) | Stories, epics, PRDs, roadmap execution |
| [`05-ai-pm-pack.zip`](packages/05-ai-pm-pack.zip) | AI product work |
| [`99-all-skills-pack.zip`](packages/99-all-skills-pack.zip) | Everything — all {total} skills |
| [`pm-skills-codex.zip`](packages/pm-skills-codex.zip) | OpenAI Codex users (`.agents/skills` + `AGENTS.md`) |
## 2. Grab one skill at a time
Every skill has its own ZIP right here in this folder. Browse them in
[`CATALOG.md`](CATALOG.md), then click the one you want.
## How to install (Claude Desktop / Web)
1. Download a bundle (or an individual skill ZIP).
2. If it's a bundle, unzip it to reveal the individual skill ZIPs.
3. In Claude, open **Skills** and upload the skill ZIP(s).
4. Start asking better product questions.
Full step-by-step guides live in [`../docs/`](../docs): `INSTALL-CLAUDE-DESKTOP.md`,
`INSTALL-CLAUDE-CODE.md`, and `INSTALL-CODEX.md`.
---
_This folder is generated by `scripts/build-dist.sh` from the canonical `skills/`
source. Don't edit files here by hand — re-run the script to refresh them._
"""
open(os.path.join(dist, "README.md"), "w", encoding="utf-8").write(readme)
print(f" catalog + readme written ({total} skills)")
PY
echo "[4/4] dist/ assembled and ready to commit"
echo
echo "Tracked layout:"
echo " dist/README.md"
echo " dist/CATALOG.md"
echo " dist/*.zip ($skill_zip_count individual skills)"
echo " dist/packages/*.zip (bundles + codex)"