Install
openclaw skills install @dennisrongo/backlog-plannerTurn a feature idea, conversation context, or rough notes into researched, detailed, dependency-ordered checkbox tasks appended to the project's roadmap/backlog file — exactly the format goal-runner consumes, so a fresh unattended session can execute them. Grounds every task in the actual codebase before writing it (grep/read or Explore scouts; think-like-fable rigor if installed), puts what + done-when on the checkbox line with verified files, acceptance criteria, and a verification command in plain sub-bullets, and labels assumptions. Appends to the existing ROADMAP.md/BACKLOG.md/TODO.md; when none exists it asks once and defaults to ROADMAP.md. Use this skill whenever the user says "add this to the backlog", "add it to the roadmap", "plan these tasks", "break this down into tasks", "capture this as roadmap tasks", "turn these notes into a task list", or "/backlog-planner" — even if they don't name the skill. Not for executing tasks (goal-runner, task-executor, autopilot) — this writes the plan only.
openclaw skills install @dennisrongo/backlog-plannerThe intake side of goal-runner: take an idea, a conversation, or rough notes, research them against the real codebase, and turn them into detailed, self-contained checkbox tasks in the roadmap/backlog file. The quality bar: a fresh session with zero memory of this conversation could execute any task from its text alone.
Do not auto-trigger when the user wants tasks executed (goal-runner, task-executor, autopilot) or wants a full interactive feature design session — this skill plans the backlog, then stops.
ROADMAP.md, roadmap.md, BACKLOG.md, backlog.md, TODO.md, todo.md.AskUserQuestion): ROADMAP.md (Recommended) — goal-runner's auto-discovery finds it without naming it in the goal text — vs. BACKLOG.md vs. TODO.md. Running unattended with no way to ask → create ROADMAP.md and log the choice as an assumption in the report.Apply the think-like-fable skill if installed; either way these rules hold:
___ so that ___". If the second blank won't fill, ask — a backlog built on a guessed goal is detailed garbage.- [ ] Add caching to UserService.getProfile() — written from the conversation; no UserService exists in this repo.- [ ] Add response caching to profile lookup in src/services/profile.ts:42 (getProfile) — or, if nothing matched, a task that says "locate the profile lookup path" instead of naming one.Explore sub-agents, one question each, file:line-cited findings only. "Looked for and did not find" is a finding.clearLayers() in task 3 and clearFullLayers() in task 7 is a bug the executor will discover the hard way. Same identifiers, same signatures, same paths everywhere.- [ ] line per task: what + done-when. Never nest checkboxes — every - [ ] line is a separate queue item to goal-runner, so a checkbox sub-bullet becomes a phantom task.Assumes: for anything unconfirmed.Produces: <exact function/type/endpoint name, params, return>, B gets Consumes: <the same, verbatim>. Exact names and signatures, not "the helper from the previous task".❌ Vague line, detail nowhere:
- [ ] Improve webhook handling
✅ Detailed line + grounded sub-bullets:
- [ ] Add HMAC signature validation to POST /api/webhooks — done when an invalid signature returns 401 and a valid payload still enqueues (both covered by integration tests)
- Entry point: src/routes/webhooks.ts:18 (handler currently trusts the payload)
- Follow the existing middleware pattern in src/middleware/auth.ts
- Secret comes from env WEBHOOK_SECRET; add to .env.example
- Verify: npm test -- webhooks
- Produces: `verifyWebhookSignature(rawBody: Buffer, header: string): boolean` in src/middleware/webhookAuth.ts
- Assumes: single shared secret is acceptable (no per-tenant secrets found in schema)
___ so that ___") and inventory the source material (idea, notes, conversation decisions). If .claude/design-briefs/ holds an APPROVED brief for this feature, it is the primary source: its Interfaces become the tasks' Produces:/Consumes: lines verbatim and its Constraints become the global-constraints block./goal "work on the roadmap tasks til completion...").User: "Great discussion — add all that to the roadmap."
Claude: restates the goal, finds ROADMAP.md, greps the three modules the discussion named (one doesn't exist → rewrites that task as a locate-first spike), appends 4 dependency-ordered tasks each with entry points, done-when, verify command, and one Assumes: line, then quotes the appended block and the assumption.
User: "Break this feature idea into tasks for later."
Claude: globs and finds no roadmap/backlog file → asks once (ROADMAP.md recommended, BACKLOG.md, TODO.md) → creates the chosen file with a ## Backlog section, researches the idea against the codebase, appends the tasks.
- [ ] sub-bullets under a task — goal-runner will execute them as separate queue items./goal run may be mid-file; append-only.goal-runner (consumes the file), think-like-fable (research rigor), and task-executor (when the user wants to execute now instead of banking tasks). An idea that still needs a design conversation goes to design-brief first if installed — otherwise hold it here (goal, constraints, boundaries, interfaces) before any task is written.ROADMAP.md is the default because goal-runner auto-discovers ROADMAP.md/TODO.md; a BACKLOG.md works too but must be named explicitly in the /goal text.