{"id":"pm","name":"pm","summary":"カンバン+アイゼンハワー手法を使ってビジネス全体のプロジェクトを管理したい場合。ビジネスごとにカンバンを1つ(あなたが運営するビジネス、プロジェクト、イニシアチブのポートフォリオに関わらず)1つ。","body":"# /pm — Project management across the portfolio\n\nMethodology-first project management. Kanban + Eisenhower + async. One board per business. Tool-agnostic via adapters.\n\n## Mental model\n\nEach business gets its own kanban with 5 columns:\n\n```\nBacklog  →  Ready  →  In Progress  →  Review/Blocked  →  Done/Archived\n```\n\n- **Backlog**: everything that *might* matter — not yet committed\n- **Ready**: triaged, well-defined, can be picked up\n- **In Progress**: actively being worked\n- **Review/Blocked**: waiting on someone else, review, or external dependency\n- **Done/Archived**: shipped or killed\n\n**Eisenhower** sits on top of the board — used to triage Backlog → Ready (which items make the cut) and to pick next from Ready (which Ready item to pull).\n\n```\n                Urgent          Not Urgent\nImportant       Q1: Do          Q2: Schedule    ← Q2 is the high-leverage zone\nNot Important   Q3: Delegate    Q4: Delete\n```\n\n**Async-first**: every status snapshot should read like a Loom you didn't have to record. Make work visible without requiring a meeting.\n\n## Step 1 — Detect mode and target\n\nParse the invocation:\n\n| Invocation | Mode | Target |\n|---|---|---|\n| `/pm setup [business]` | setup | the named business |\n| `/pm triage [business]` | triage | the named business (or ask) |\n| `/pm next [business]` | next | the named business |\n| `/pm next` | next | **across all boards** (cross-portfolio) |\n| `/pm status [business]` | status | the named business (or ask) |\n| `/pm unblock [business]` | unblock | the named business (or ask) |\n| `/pm weekly` | weekly | all boards (Friday pulse) |\n| `/pm weekly [business]` | weekly | the named business |\n\n## Step 2 — Load board config + personal overlay\n\nRead `${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/pm/boards.md` (personal — real business list + tool mapping per business). Falls back to `references/boards.md` in the repo if the local file doesn't exist yet — that's a template.\n\nAlso try to load `${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/pm/team.local.md` if present — this is where the user lists partners, active clients, and typical blocker phrasings. Use it to make status output specific (\"Waiting on <partner>'s review\") instead of generic.\n\n| Field | Example |\n|---|---|\n| business | `<slug>` |\n| tool | `notion` / `github` / `plane` / `linear` / `obsidian` / `manual` |\n| board_id or URL | tool-specific |\n| column overrides | only if this board doesn't use the default 5 columns |\n\nIf the business has no mapping yet, jump to **setup** automatically — ask which tool, save the mapping, return to the requested mode.\n\n## Step 3 — Load the adapter\n\nRead the relevant section of `references/adapters.md` for the tool. Each adapter section explains how to:\n- List cards / issues / pages by column\n- Read a single card's full content\n- Create a card\n- Move a card between columns\n- Add a comment / note\n\nAdapters use:\n- **Notion** → `$NOTION_API_KEY` (already in zshenv). Database with `Status` select property.\n- **GitHub Projects** → `gh` CLI (already authed). `gh project item-list`, `gh project item-edit`.\n- **Plane** → Plane API (needs `$PLANE_API_KEY` and workspace slug).\n- **Linear** → Linear MCP or API key.\n- **Obsidian** → local kanban markdown files in the vault. Read/write directly.\n- **Manual** → ask the user to paste the current board state; offer to write back to a local markdown file.\n\n## Step 4 — Run the mode\n\n### setup\n- Ask which tool the business uses\n- Walk through column setup (default 5 columns; offer custom)\n- Save mapping to `${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/pm/boards.md` (NOT to `references/boards.md` in the repo — that's a template only). Create the parent directory if it doesn't exist yet.\n- Optionally seed the board with starter cards from a conversation about what's on the user's mind for that business\n\n### triage\n- Pull the Backlog column\n- Apply Eisenhower (Q1/Q2/Q3/Q4) — show the user the matrix view\n- Recommend moves:\n  - Q1 (urgent + important) → move to Ready or In Progress now\n  - Q2 (important, not urgent) → move to Ready, schedule when\n  - Q3 (urgent, not important) → delegate (to whom?) or move to Ready if no one\n  - Q4 (neither) → archive\n- Apply moves via the adapter (or output text the user applies manually)\n\n### next\n- **Single board**: pull Ready, then In Progress. If WIP exceeded, surface what to finish first. If WIP available, recommend top Ready item by Eisenhower priority.\n- **Cross-portfolio** (`/pm next` with no business): pull Ready from every board, Eisenhower-rank, recommend top 1–3 across all businesses. Bias toward Q1 then Q2.\n\n### status\nGenerate an async-shareable snapshot:\n\n```markdown\n# [Business] — Status as of YYYY-MM-DD\n\n**Shipped this week:** N cards\n- <card title>\n- <card title>\n\n**In progress:** N cards\n- <card title> — <who/what>\n\n**Review/Blocked:** N cards\n- <card title> — blocked on <reason>\n\n**Up next:** top 2–3 from Ready\n- <card title>\n- <card title>\n\n**Open question:** <one thing that would unblock progress if answered>\n```\n\nOutput is paste-ready for Slack, Notion, email, partner DM.\n\n### unblock\n- Read everything in Review/Blocked\n- For each card: surface the blocker, suggest an action (nudge X, escalate to Y, descope, kill, move back to In Progress if blocker is gone)\n- Output a short list of moves\n\n### weekly\n**Friday pulse + planning**:\n1. For each board: shipped this week, in progress, blocked\n2. Cross-portfolio: where's momentum? where's drift?\n3. Plan next week: 3–5 Q2 items to pull from Ready into In Progress on Monday\n4. Output the combined snapshot — pasteable into Notion weekly log, partner update, or personal journal\n\n## WIP limits\n\nDefault WIP per column (override in your local `boards.md` per business):\n\n| Column | Default WIP |\n|---|---|\n| In Progress | 3 |\n| Review/Blocked | (no limit — but flag if >5) |\n\nIf WIP exceeded in `next` mode, **don't pull more** — recommend finishing or moving something to Review/Blocked first.\n\n## Async-first writing rules\n\nWhen generating status / weekly outputs:\n\n- **Lead with the headline** — what shipped this week, or what's at risk\n- **Be specific** — \"shipped X\" not \"made progress on Y\"\n- **No verbs without subjects** — write so the reader can pick up cold\n- **Blockers name the blocker** — \"waiting on designer's review\" not \"blocked\"\n- **Open questions are explicit** — one bolded line per status that asks for what would unblock momentum\n\n## Composes with\n\n- `decide` — when a project hits a real decision, route to `/decide`\n- `deep-research` — when a card needs research before it's actionable\n- `business-brainstorm` — when an idea on the Backlog deserves pressure-testing before triage\n- `jab-hook` — when status / shipped items become BIP-post material\n- Memory (`project_*.md`) — for portfolio context per business\n\n## Notes on quality\n\n- **Limit WIP.** Multitasking is the most reliable way to ship nothing. Cap In Progress at 3 (override in your local `boards.md` per business if truly needed). If the cap is hit, don't pull more — recommend finishing or moving something to Review/Blocked.\n- **Lead with the headline** in every status output — what shipped this week, or what's at risk. Not \"made progress on X\" — that's noise.\n- **Be specific.** \"Shipped the primary logo variant\" beats \"made progress on branding.\" Specificity signals real motion; vagueness signals none.\n- **No verbs without subjects.** Write status so the reader can pick up cold — 3 weeks later or forwarded to a partner who missed the last update.\n- **Blockers name the blocker.** \"Waiting on designer's review of the homepage draft\" — not \"blocked.\" Blockers without names create no urgency.\n- **Open questions are explicit** — one bolded line per status that asks for what would unblock momentum. Async momentum lives or dies on how well open questions are surfaced.\n- **Tool-agnostic by design.** pm speaks Kanban + Eisenhower; the adapters (Notion / GitHub / Plane / Linear / Obsidian / manual) translate. Adding a new tool = one adapter file, not a rewrite.","author":"@coreyhaines31","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/coreyhaines31/makerskills/tree/main/skills/pm","license":"MIT","category":"review","lang":"en","tokens":2046,"stars":0,"calls30d":1,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"references/adapters.md","size":5991,"sha256":"6bb4a5bc70d4943342097b0c51b4d80c715c337ddfda9bd35626792a014b24cd"},{"path":"references/boards.md","size":1091,"sha256":"d72d1796dd1065f8c57e6e736463f5e38a2a5a9b864818661577df2956aaf524"},{"path":"references/methodology.md","size":5170,"sha256":"01fe5194d05025ffd4fc2eee4faf45de545c07025766e10429b69d7782c95dbc"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":["api.linear.app","api.notion.com","api.plane.so"]}}