pm-project-plan
Decompose a project (a Linear Project / GitHub Milestone) into milestones and draft its constituent issues. Bridges the project tier to the issue tier — each drafted issue is filed THROUGH pm-issues (so issue templates, type/exec-mode labels, and the pm-issue.js create-gate all still apply). Linear creates native milestones via linear milestone create; GitHub records phases as a checklist in the milestone description (documented degradation — no sub-milestones). Operates on a project, not an individual issue. Trigger phrases — "plan this project", "break down the project", "decompose the project into issues", "what issues does this project need", "/pm-project-plan".
What this skill does
# PM Project Plan
The bridge from project tier to issue tier. Proposes a milestone breakdown for a project, then drafts each constituent issue and files it through `pm-issues`.
## Usage
```
/pm-project-plan <project> [--milestone <name>]
```
- `<project>` *(project slug/name/id, required)* — the project (Linear Project / GitHub Milestone) to decompose into milestones and constituent issues. May be omitted when `.claude/pm/project.json` has `linear_project_name` set (the create-gate falls back to the config value).
- `--milestone <name>` *(optional)* — link drafted issues to a milestone other than the project's default; passed through to the `pm-issue.js create` create-gate.
Operates on a PROJECT (not an individual issue). Each drafted child issue is filed THROUGH `pm-issues` (`pm-issue.js create`), so issue templates, type/exec-mode labels, and the create-gate still apply.
## Flow
1. **Load the project** (cache-first, falls back to a live read via the adapter).
2. **Read the description's `## Milestones` section** as the seed for the breakdown. If it's empty or aspirational, propose a breakdown based on the type template's expected shape.
3. **Confirm the milestone list with the user** — count, ordering, target dates. Allow edit.
4. **Create the milestones:**
- Linear: `linear milestone create --project <id> --name "<m>" --target-date <date> --json` per milestone (adapter: `createMilestone`).
- GitHub: a checklist in the project description's `## Milestones` section is the substitute (degradation — Milestones have no sub-milestones). The plan skill rewrites the description with the checklist via `updateGithubMilestone`.
5. **For each milestone, propose constituent issues.** Draft each issue with the right issue template, type tag, and labels — drawn from the project's template + context.
6. **Hand each draft to `pm-issues create`** — that skill applies its own templates, type/exec-mode labels, and `pm-issue.js` create-gate. Filed issues link to the project and milestone via the create-verb's `--project` and `--milestone` flags (NTH-541), so the documented chain stays inside the gate:
```bash
node "$CLAUDE_PLUGIN_ROOT/hooks/bin/pm-issue.js" create \
--tag <tag> --title "<t>" --draft-file "$DRAFT" \
--exec-mode <hitl|afk> --priority <1-4> \
--project "<project_name>" \
--milestone "<milestone_name>"
```
When the project's `.claude/pm/project.json` already has `linear_project_name` set, `--project` may be omitted — the create-gate falls back to the config value. When linking to a milestone that isn't the project's default, pass `--milestone` explicitly. On GitHub, `--milestone <name>` passes through to `gh issue create`.
7. **Update the cache** — re-sync issues to capture the new links.
## GitHub degradation
GitHub Milestones cannot contain sub-milestones. The plan skill records phases as a markdown checklist in the milestone description (within the `## Milestones` section), and child issues are linked to the GitHub milestone (the only tracker tier below it). Reports treat the checklist phases as the equivalent of Linear native milestones for the `project-health` profile.
## Conventions
Honors `## Project titles` and any `## Issue titles` conventions when drafting issue titles.
## Related
- `pm-issues` — drafts are filed *through* this skill, never bypassing.
- `pm-projects` — the upstream (`create` produces the shell; `plan` decomposes).
- `pm-report --profile project-health` — consumes milestone completion to label projects.
- `pm-project-templates` — provides the type's expected milestone shape.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.