Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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, s
.claude/skills/coreyhaines31-pm/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 209% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-18 | ✓→✗ | ▼ Worse | 154% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 101% | 0% |
Methodology-first project management. Kanban + Eisenhower + async. One board per business. Tool-agnostic via adapters.
Each business gets its own kanban with 5 columns:
Backlog → Ready → In Progress → Review/Blocked → Done/ArchivedEisenhower 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).
Urgent Not Urgent
Important Q1: Do Q2: Schedule ← Q2 is the high-leverage zone
Not Important Q3: Delegate Q4: DeleteAsync-first: every status snapshot should read like a Loom you didn't have to record. Make work visible without requiring a meeting.
Parse the invocation:
| Invocation | Mode | Target | |---|---|---| | /pm setup [business] | setup | the named business | | /pm triage [business] | triage | the named business (or ask) | | /pm next [business] | next | the named business | | /pm next | next | across all boards (cross-portfolio) | | /pm status [business] | status | the named business (or ask) | | /pm unblock [business] | unblock | the named business (or ask) | | /pm weekly | weekly | all boards (Friday pulse) | | /pm weekly [business] | weekly | the named business |
Read ${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.
Also 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.
| Field | Example | |---|---| | business | <slug> | | tool | notion / github / plane / linear / obsidian / manual | | board_id or URL | tool-specific | | column overrides | only if this board doesn't use the default 5 columns |
If the business has no mapping yet, jump to setup automatically — ask which tool, save the mapping, return to the requested mode.
Read the relevant section of references/adapters.md for the tool. Each adapter section explains how to:
Adapters use:
$NOTION_API_KEY (already in zshenv). Database with Status select property.gh CLI (already authed). gh project item-list, gh project item-edit.$PLANE_API_KEY and workspace slug).${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./pm next with no business): pull Ready from every board, Eisenhower-rank, recommend top 1–3 across all businesses. Bias toward Q1 then Q2.Generate an async-shareable snapshot:
markdown# [Business] — Status as of YYYY-MM-DD **Shipped this week:** N cards - <card title> - <card title> **In progress:** N cards - <card title> — <who/what> **Review/Blocked:** N cards - <card title> — blocked on <reason> **Up next:** top 2–3 from Ready - <card title> - <card title> **Open question:** <one thing that would unblock progress if answered>
Output is paste-ready for Slack, Notion, email, partner DM.
Friday pulse + planning:
Default WIP per column (override in your local boards.md per business):
| Column | Default WIP | |---|---| | In Progress | 3 | | Review/Blocked | (no limit — but flag if >5) |
If WIP exceeded in next mode, don't pull more — recommend finishing or moving something to Review/Blocked first.
When generating status / weekly outputs:
decide — when a project hits a real decision, route to /decidedeep-research — when a card needs research before it's actionablebusiness-brainstorm — when an idea on the Backlog deserves pressure-testing before triagejab-hook — when status / shipped items become BIP-post materialproject_*.md) — for portfolio context per businessboards.md per business if truly needed). If the cap is hit, don't pull more — recommend finishing or moving something to Review/Blocked.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,486 | 8,120 | +48% | 1 | 1 | 0% | 460 | 2,361 | +413% | 0 | 0 | — |
case-02 | fail→fail | 10,436 | 7,856 | -25% | 1 | 1 | 0% | 1,588 | 3,237 | +104% | 0 | 0 | — |
case-03 | fail→fail | 4,555 | 15,518 | +241% | 1 | 1 | 0% | 607 | 3,880 | +539% | 0 | 0 | — |
case-04 | fail→pass | 6,125 | 4,474 | -27% | 1 | 1 | 0% | 951 | 2,939 | +209% | 0 | 0 | — |
case-05 | pass→pass | 10,207 | 6,534 | -36% | 1 | 1 | 0% | 1,527 | 3,068 | +101% | 0 | 0 | — |
case-06 | pass→pass | 10,404 | 8,194 | -21% | 1 | 1 | 0% | 1,708 | 3,551 | +108% | 0 | 0 | — |
case-07 | pass→pass | 6,062 | 3,101 | -49% | 1 | 1 | 0% | 993 | 2,597 | +162% | 0 | 0 | — |
case-17 | pass→pass | 6,025 | 2,527 | -58% | 1 | 1 | 0% | 986 | 2,459 | +149% | 0 | 0 | — |
case-08 | pass→pass | 7,268 | 5,132 | -29% | 1 | 1 | 0% | 1,109 | 2,845 | +157% | 0 | 0 | — |
case-09 | pass→pass | 13,493 | 9,515 | -29% | 1 | 1 | 0% | 2,030 | 3,586 | +77% | 0 | 0 | — |
case-10 | fail→pass | 13,860 | 8,957 | -35% | 1 | 1 | 0% | 2,010 | 3,474 | +73% | 0 | 0 | — |
case-11 | pass→pass | 11,975 | 8,982 | -25% | 1 | 1 | 0% | 1,775 | 3,360 | +89% | 0 | 0 | — |
case-12 | fail→pass | 13,675 | 4,644 | -66% | 1 | 1 | 0% | 2,083 | 2,876 | +38% | 0 | 0 | — |
case-13 | pass→pass | 9,847 | 2,463 | -75% | 1 | 1 | 0% | 1,592 | 2,493 | +57% | 0 | 0 | — |
case-14 | pass→pass | 10,252 | 5,369 | -48% | 1 | 1 | 0% | 1,681 | 2,936 | +75% | 0 | 0 | — |
case-15 | pass→pass | 6,086 | 1,556 | -74% | 1 | 1 | 0% | 908 | 2,252 | +148% | 0 | 0 | — |
case-16 | pass→pass | 16,281 | 10,038 | -38% | 1 | 1 | 0% | 2,516 | 3,501 | +39% | 0 | 0 | — |
case-18 | pass→fail | 9,001 | 8,451 | -6% | 1 | 1 | 0% | 1,342 | 3,404 | +154% | 0 | 0 | — |
case-19 | fail→fail | 7,695 | 7,985 | +4% | 1 | 1 | 0% | 1,156 | 3,189 | +176% | 0 | 0 | — |
case-20 | fail→fail | 16,122 | 15,129 | -6% | 1 | 1 | 0% | 2,965 | 5,047 | +70% | 0 | 0 | — |
case-21 | fail→fail | 26,464 | 27,105 | +2% | 1 | 1 | 0% | 5,745 | 7,937 | +38% | 0 | 0 | — |
case-22 | fail→fail | 17,587 | 6,303 | -64% | 1 | 1 | 0% | 2,889 | 3,149 | +9% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.