skills/roadmap-task-adder/SKILL.md
{{ 𝛀𝛀𝛀 }} Add a task to a project roadmap with correct ID, dependency wiring, and graph integrity. Use this skill whenever the user wants to add a task, feature, or work item to a roadmap — even if they just say 'add this to the roadmap', 'put this in the plan', or 'track this as a task'. Handles task ID assignment, section placement, dependency edges in both directions, and ensures no task is left as an unconnected island.
npx skillsauth add jasonwarrenuk/goblin-mode roadmap-task-adderInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Adds a well-formed task to an existing project roadmap. The job is not just appending a line — it's placing the task correctly in the dependency graph, wiring its relationships, and leaving the roadmap in a coherent state.
Check in this order:
.claude/roadmaps.json — parse if present. One entry: use it. Multiple: list and ask.docs/roadmaps/ directory — list .md files. One file: use it. Multiple: ask.Grep for classDef.*mile to find roadmap files elsewhere.Read the full roadmap file before proceeding. You need to understand the existing task graph before you can add to it.
Extract from the user's description:
If any of these are ambiguous, ask before proceeding. A badly placed task is worse than a delayed one.
Read the existing tasks in the target milestone and category. Find the highest sequence number used for that category, then assign next = highest + 1.
Format: {Milestone}{Category}.{Seq} — e.g. 2TI.15, 1WA.4
Sub-tasks use alpha suffix: 2TI.15a, 2TI.15b
Never reuse an ID, even if a task was removed.
Scan existing tasks for ones that this new task logically requires. Candidates:
:::open that this task logically extendsIf the task has incoming dependencies, it goes in the Blocked section (or To Do if all its dependencies are already completed).
Scan existing tasks for ones that would be unblocked or directly enabled by this new task. Ask yourself: does completing this task change the status of any existing task in the Blocked section?
If yes, you'll need to add this task as a dependency to those tasks' descriptions and add the corresponding edges to the Mermaid diagram.
Before writing anything, verify:
A task is orphaned if it has no dependency edges at all — nothing flows into it, nothing flows out of it. This is a warning, not a blocker. Some tasks genuinely stand alone (e.g. a one-off spike, an independent refactor).
If the new task would be orphaned:
A task is "childless" if nothing depends on it — it's a leaf node with no known successors. This is fine for near-future work, but for tasks that clearly enable further work, it's worth capturing that potential.
If the new task is childless and its nature suggests it unlocks future work:
- [ ] {NewID}. {Unlocked capability} *(placeholder — depends on {NewTaskID})*Don't create placeholders for tasks that are obviously terminal (e.g. "deploy to production", "write final release notes").
| Condition | Section |
|-----------|---------|
| All dependencies completed ([x]) | To Do |
| Has incomplete dependencies | Blocked |
| User says work has started | In Progress |
| Work is already done | Completed |
Default to Blocked if uncertain — it's easy to move up.
Do not edit the file yet. Present the proposal:
New task: {ID}. {Description}
Milestone: {N} — {Milestone Name}
Section: {Blocked / To Do / In Progress}
Dependencies (in): {list of task IDs, or "none"}
Dependencies (out): {list of task IDs this enables, or "none"}
Placeholder child: {ID and description, or "none"}
Graph changes:
+ node: {ID}["`*{ID}*<br/>**{Category}**<br/>{short desc}`"]:::{open|blocked}
+ edges: {list of new edges}
~ modified: {any existing task descriptions updated with new dependency clause}
Then ask: "Does this look right? I'll write to the roadmap on your say-so."
Once approved:
Add the task line in the correct section under the correct milestone anchor
- [ ] {ID}. {Description} — **depends on {IDs}**
Omit the depends clause if there are no incoming dependencies.
Update any existing tasks whose descriptions now need — **depends on {NewID}** added
Update the Mermaid Progress Map (at <a name="map">):
:::open; otherwise omit (defaults to :::blocked):::open to itAdd any placeholder child task in the appropriate section and Mermaid diagram
Report:
These match the existing roadmap format — never deviate:
- [ ] {ID}. {Description} — **depends on {ID}, {ID}**- [x] {ID}. {Description}{ID}["{ID}<br/>{Category}<br/>{short desc}"]:::open (no blockers), default/:::blocked (has blockers), :::mile (milestone node){A} --> {B} (A must complete before B can start)development
Writing style guide for Jason Warren. Use this skill whenever writing prose, reports, documentation, or any substantive text for Jason — including drafting sections, editing existing content, or rewriting passages. Also use when Jason asks you to review or improve writing. Trigger on any request involving writing, drafting, editing, or composing text that isn't purely code. This includes github Pull Requests & Linear tasks
testing
{{ 𝚫𝚫𝚫 }} Check all version number props and update them
tools
{{ 𝛀𝛀𝛀 }} Map out project status, direction, and next steps
development
{{ 𝛀𝛀𝛀 }} Review code changes on the current branch against its open PR