{"slug":"pm","title":"pm","summary":"When you want to manage projects across your businesses using a kanban + Eisenhower methodology. One kanban per business (whatever portfolio of businesses, projects, or initiatives you run). Tool-agnostic — connects via API/MCP to whatever PM tool each business uses (Notion, GitH","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-05T10:18:15.296409Z","repo":{"url":"https://github.com/coreyhaines31/makerskills","stars":834,"forks":69,"license":"MIT","updatedAt":"2026-09-04T23:29:09Z"},"bodyHtml":"<hr>\n<h2>name: pm\ndescription: When you want to manage projects across your businesses using a kanban + Eisenhower methodology. One kanban per business (whatever portfolio of businesses, projects, or initiatives you run). Tool-agnostic — connects via API/MCP to whatever PM tool each business uses (Notion, GitHub Projects, Plane, Linear, Obsidian file-based, or manual mode). Async-first output. Six modes — setup (scaffold a new board for a business), triage (Eisenhower-sort the backlog), next (pick the next thing to work on, single board or across all), status (paste-ready async snapshot), unblock (diagnose Review/Blocked column), weekly (Friday pulse + week planning). Triggers on \"/pm,\" \"/pm setup,\" \"/pm triage,\" \"/pm next,\" \"/pm status,\" \"/pm unblock,\" \"/pm weekly,\" \"what should I work on next,\" \"kanban status,\" \"Eisenhower this,\" \"triage my backlog,\" \"what's blocked.\"\nmetadata:\nversion: 0.1.1</h2>\n<h1>/pm — Project management across the portfolio</h1>\n<p>Methodology-first project management. Kanban + Eisenhower + async. One board per business. Tool-agnostic via adapters.</p>\n<h2>Mental model</h2>\n<p>Each business gets its own kanban with 5 columns:</p>\n<pre><code>Backlog  →  Ready  →  In Progress  →  Review/Blocked  →  Done/Archived\n</code></pre>\n<ul>\n<li><strong>Backlog</strong>: everything that <em>might</em> matter — not yet committed</li>\n<li><strong>Ready</strong>: triaged, well-defined, can be picked up</li>\n<li><strong>In Progress</strong>: actively being worked</li>\n<li><strong>Review/Blocked</strong>: waiting on someone else, review, or external dependency</li>\n<li><strong>Done/Archived</strong>: shipped or killed</li>\n</ul>\n<p><strong>Eisenhower</strong> 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).</p>\n<pre><code>                Urgent          Not Urgent\nImportant       Q1: Do          Q2: Schedule    ← Q2 is the high-leverage zone\nNot Important   Q3: Delegate    Q4: Delete\n</code></pre>\n<p><strong>Async-first</strong>: every status snapshot should read like a Loom you didn't have to record. Make work visible without requiring a meeting.</p>\n<h2>Step 1 — Detect mode and target</h2>\n<p>Parse the invocation:</p>\n<table>\n<thead>\n<tr>\n<th>Invocation</th>\n<th>Mode</th>\n<th>Target</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>/pm setup [business]</code></td>\n<td>setup</td>\n<td>the named business</td>\n</tr>\n<tr>\n<td><code>/pm triage [business]</code></td>\n<td>triage</td>\n<td>the named business (or ask)</td>\n</tr>\n<tr>\n<td><code>/pm next [business]</code></td>\n<td>next</td>\n<td>the named business</td>\n</tr>\n<tr>\n<td><code>/pm next</code></td>\n<td>next</td>\n<td><strong>across all boards</strong> (cross-portfolio)</td>\n</tr>\n<tr>\n<td><code>/pm status [business]</code></td>\n<td>status</td>\n<td>the named business (or ask)</td>\n</tr>\n<tr>\n<td><code>/pm unblock [business]</code></td>\n<td>unblock</td>\n<td>the named business (or ask)</td>\n</tr>\n<tr>\n<td><code>/pm weekly</code></td>\n<td>weekly</td>\n<td>all boards (Friday pulse)</td>\n</tr>\n<tr>\n<td><code>/pm weekly [business]</code></td>\n<td>weekly</td>\n<td>the named business</td>\n</tr>\n</tbody>\n</table>\n<h2>Step 2 — Load board config + personal overlay</h2>\n<p>Read <code>${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/pm/boards.md</code> (personal — real business list + tool mapping per business). Falls back to <code>references/boards.md</code> in the repo if the local file doesn't exist yet — that's a template.</p>\n<p>Also try to load <code>${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/pm/team.local.md</code> if present — this is where the user lists partners, active clients, and typical blocker phrasings. Use it to make status output specific (\"Waiting on </p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>business</td>\n<td><code>&lt;slug&gt;</code></td>\n</tr>\n<tr>\n<td>tool</td>\n<td><code>notion</code> / <code>github</code> / <code>plane</code> / <code>linear</code> / <code>obsidian</code> / <code>manual</code></td>\n</tr>\n<tr>\n<td>board_id or URL</td>\n<td>tool-specific</td>\n</tr>\n<tr>\n<td>column overrides</td>\n<td>only if this board doesn't use the default 5 columns</td>\n</tr>\n</tbody>\n</table>\n<p>If the business has no mapping yet, jump to <strong>setup</strong> automatically — ask which tool, save the mapping, return to the requested mode.</p>\n<h2>Step 3 — Load the adapter</h2>\n<p>Read the relevant section of <code>references/adapters.md</code> for the tool. Each adapter section explains how to:</p>\n<ul>\n<li>List cards / issues / pages by column</li>\n<li>Read a single card's full content</li>\n<li>Create a card</li>\n<li>Move a card between columns</li>\n<li>Add a comment / note</li>\n</ul>\n<p>Adapters use:</p>\n<ul>\n<li><strong>Notion</strong> → <code>$NOTION_API_KEY</code> (already in zshenv). Database with <code>Status</code> select property.</li>\n<li><strong>GitHub Projects</strong> → <code>gh</code> CLI (already authed). <code>gh project item-list</code>, <code>gh project item-edit</code>.</li>\n<li><strong>Plane</strong> → Plane API (needs <code>$PLANE_API_KEY</code> and workspace slug).</li>\n<li><strong>Linear</strong> → Linear MCP or API key.</li>\n<li><strong>Obsidian</strong> → local kanban markdown files in the vault. Read/write directly.</li>\n<li><strong>Manual</strong> → ask the user to paste the current board state; offer to write back to a local markdown file.</li>\n</ul>\n<h2>Step 4 — Run the mode</h2>\n<h3>setup</h3>\n<ul>\n<li>Ask which tool the business uses</li>\n<li>Walk through column setup (default 5 columns; offer custom)</li>\n<li>Save mapping to <code>${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/pm/boards.md</code> (NOT to <code>references/boards.md</code> in the repo — that's a template only). Create the parent directory if it doesn't exist yet.</li>\n<li>Optionally seed the board with starter cards from a conversation about what's on the user's mind for that business</li>\n</ul>\n<h3>triage</h3>\n<ul>\n<li>Pull the Backlog column</li>\n<li>Apply Eisenhower (Q1/Q2/Q3/Q4) — show the user the matrix view</li>\n<li>Recommend moves:\n<ul>\n<li>Q1 (urgent + important) → move to Ready or In Progress now</li>\n<li>Q2 (important, not urgent) → move to Ready, schedule when</li>\n<li>Q3 (urgent, not important) → delegate (to whom?) or move to Ready if no one</li>\n<li>Q4 (neither) → archive</li>\n</ul>\n</li>\n<li>Apply moves via the adapter (or output text the user applies manually)</li>\n</ul>\n<h3>next</h3>\n<ul>\n<li><strong>Single board</strong>: pull Ready, then In Progress. If WIP exceeded, surface what to finish first. If WIP available, recommend top Ready item by Eisenhower priority.</li>\n<li><strong>Cross-portfolio</strong> (<code>/pm next</code> with no business): pull Ready from every board, Eisenhower-rank, recommend top 1–3 across all businesses. Bias toward Q1 then Q2.</li>\n</ul>\n<h3>status</h3>\n<p>Generate an async-shareable snapshot:</p>\n<pre><code># [Business] — Status as of YYYY-MM-DD\n\n**Shipped this week:** N cards\n- &lt;card title&gt;\n- &lt;card title&gt;\n\n**In progress:** N cards\n- &lt;card title&gt; — &lt;who/what&gt;\n\n**Review/Blocked:** N cards\n- &lt;card title&gt; — blocked on &lt;reason&gt;\n\n**Up next:** top 2–3 from Ready\n- &lt;card title&gt;\n- &lt;card title&gt;\n\n**Open question:** &lt;one thing that would unblock progress if answered&gt;\n</code></pre>\n<p>Output is paste-ready for Slack, Notion, email, partner DM.</p>\n<h3>unblock</h3>\n<ul>\n<li>Read everything in Review/Blocked</li>\n<li>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)</li>\n<li>Output a short list of moves</li>\n</ul>\n<h3>weekly</h3>\n<p><strong>Friday pulse + planning</strong>:</p>\n<ol>\n<li>For each board: shipped this week, in progress, blocked</li>\n<li>Cross-portfolio: where's momentum? where's drift?</li>\n<li>Plan next week: 3–5 Q2 items to pull from Ready into In Progress on Monday</li>\n<li>Output the combined snapshot — pasteable into Notion weekly log, partner update, or personal journal</li>\n</ol>\n<h2>WIP limits</h2>\n<p>Default WIP per column (override in your local <code>boards.md</code> per business):</p>\n<table>\n<thead>\n<tr>\n<th>Column</th>\n<th>Default WIP</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>In Progress</td>\n<td>3</td>\n</tr>\n<tr>\n<td>Review/Blocked</td>\n<td>(no limit — but flag if &gt;5)</td>\n</tr>\n</tbody>\n</table>\n<p>If WIP exceeded in <code>next</code> mode, <strong>don't pull more</strong> — recommend finishing or moving something to Review/Blocked first.</p>\n<h2>Async-first writing rules</h2>\n<p>When generating status / weekly outputs:</p>\n<ul>\n<li><strong>Lead with the headline</strong> — what shipped this week, or what's at risk</li>\n<li><strong>Be specific</strong> — \"shipped X\" not \"made progress on Y\"</li>\n<li><strong>No verbs without subjects</strong> — write so the reader can pick up cold</li>\n<li><strong>Blockers name the blocker</strong> — \"waiting on designer's review\" not \"blocked\"</li>\n<li><strong>Open questions are explicit</strong> — one bolded line per status that asks for what would unblock momentum</li>\n</ul>\n<h2>Composes with</h2>\n<ul>\n<li><code>decide</code> — when a project hits a real decision, route to <code>/decide</code></li>\n<li><code>deep-research</code> — when a card needs research before it's actionable</li>\n<li><code>business-brainstorm</code> — when an idea on the Backlog deserves pressure-testing before triage</li>\n<li><code>jab-hook</code> — when status / shipped items become BIP-post material</li>\n<li>Memory (<code>project_*.md</code>) — for portfolio context per business</li>\n</ul>\n<h2>Notes on quality</h2>\n<ul>\n<li><strong>Limit WIP.</strong> Multitasking is the most reliable way to ship nothing. Cap In Progress at 3 (override in your local <code>boards.md</code> per business if truly needed). If the cap is hit, don't pull more — recommend finishing or moving something to Review/Blocked.</li>\n<li><strong>Lead with the headline</strong> in every status output — what shipped this week, or what's at risk. Not \"made progress on X\" — that's noise.</li>\n<li><strong>Be specific.</strong> \"Shipped the primary logo variant\" beats \"made progress on branding.\" Specificity signals real motion; vagueness signals none.</li>\n<li><strong>No verbs without subjects.</strong> Write status so the reader can pick up cold — 3 weeks later or forwarded to a partner who missed the last update.</li>\n<li><strong>Blockers name the blocker.</strong> \"Waiting on designer's review of the homepage draft\" — not \"blocked.\" Blockers without names create no urgency.</li>\n<li><strong>Open questions are explicit</strong> — one bolded line per status that asks for what would unblock momentum. Async momentum lives or dies on how well open questions are surfaced.</li>\n<li><strong>Tool-agnostic by design.</strong> pm speaks Kanban + Eisenhower; the adapters (Notion / GitHub / Plane / Linear / Obsidian / manual) translate. Adding a new tool = one adapter file, not a rewrite.</li>\n</ul>\n","files":[{"path":"references/adapters.md","sizeBytes":5991,"isText":true},{"path":"references/boards.md","sizeBytes":1091,"isText":true},{"path":"references/methodology.md","sizeBytes":5170,"isText":true},{"path":"SKILL.md","sizeBytes":9047,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-05T10:18:36.036348Z","sha256":"B8269A42B69A13F45C8490B6FADAEF7003C118033AC3FC7E020B63C5DEDF8AC2","sizeBytes":9943},"review":null,"source":{"repositoryUrl":"https://github.com/coreyhaines31/makerskills","path":"skills/pm","license":"MIT","commit":"1868b816090246ced9be9ef3556726c4dc94877c","subtreeSha":"9E0EE75E0CC3810318F2074F5BF0D6982661EC19598FB04D46483F2B91BE189B","lastSyncedAt":"2026-09-27T20:56:59.539883Z"},"reviewedAt":"2026-09-05T10:19:32.81566Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/coreyhaines31/makerskills/tree/main/skills/pm"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install coreyhaines31-makerskills@llmmart"},{"target":"git","command":"git clone https://github.com/coreyhaines31/makerskills.git"}]}