Use this skill whenever the user wants to turn a feature idea, requirement, or description into structured todo/task markdown files for process-todos. Trigger on any request to create, generate, or write todos/tasks (todo 만들어줘, 투두 생성, create todos, make todo tickets), break down or decompose a feature into work items (작업 분해해줘, 기능 정리해줘, break this into tasks, decompose this feature), plan implementation steps or build a task list (태스크 나눠줘, 작업 목록 만들어, plan this feature, set up work items), or convert a description into actionable tickets (이거 todo로 만들어줘, feature breakdown 해줘, turn this into tasks). Also trigger when the user describes a feature and implies they want it organized into implementable units, even without saying "todo" — if they say "이 기능 정리해서 나눠줘" or "help me plan how to build this", that counts. This skill creates todo files; it does NOT execute or process them.
Turns a natural language feature description into well-structured todo ticket files that the process-todos system can pick up and execute automatically.
The goal is to save the user from having to manually write todo markdown files. They describe what they want in plain language, and this skill produces ready-to-process todo tickets — each with a clear title, context, and a checklist of concrete implementation steps.
Read .process-todos.json from the project root. If it doesn't exist, use defaults:
todo_path: docs/todostype_check_command: null (no type checking unless configured)branch_prefix: todo/The user gives a natural language description of what they want built. This could be anything from a one-liner ("add dark mode") to a full product spec.
Before generating todos, invoke /superpowers:brainstorming to deeply explore the problem space. Brainstorming is valuable here because feature decomposition has many valid approaches, and exploring alternatives early leads to better-structured todos. The brainstorming session should cover:
Making decisions during brainstorming: When brainstorming presents multiple approaches and a choice needs to be made, spawn a todo-analyst agent (Agent(subagent_type="process-todos:todo-analyst", prompt=<decision question with options>)). The analyst examines the codebase — existing patterns, conventions, dependencies — and returns a grounded recommendation. The analyst's primary value is preventing bad technology assumptions based on codebase evidence. For example, it might discover that the project has no TypeScript runtime, making a suggested library physically impossible — an insight that saves the worker from hitting a dead end. Use the analyst's recommendation to move brainstorming forward without blocking on the user for every decision.
If brainstorming skill is unavailable (e.g., running in a subagent without installed skills): perform the decomposition analysis yourself. Cover the same ground — major components, dependencies, affected code, architectural decisions — by reading the codebase directly. The structure matters more than having the brainstorming skill specifically.
If todo-analyst agent is unavailable (e.g., outside the Claude Code plugin runtime): follow the analysis procedure in agents/todo-analyst.md directly. The 4-step procedure (parse decision → read project context → find existing patterns → assess) works identically whether run by the agent or performed manually.
After brainstorming, build further context:
CLAUDE.md (if it exists) to understand conventions, tech stack, and project structureUse the brainstorming output to decide how to split the work:
Splitting by concern, not by size:
Prefer finer layer separation for multi-concern features. When a feature spans data → API → UI, prefer 3 todos over 2. In particular:
For features outside the traditional data → API → UI pattern (config validation, tooling, documentation, CI/CD), apply the same principle with adapted layers: separate definition/schema from integration/wiring from user-facing polish. For example, a config validation feature splits into: (1) define the schema, (2) wire validation into the system, (3) polish error messages and edge cases.
Don't fear large todos. The worker agents support handoff (/dx:handoff) — when a worker approaches its context limit, it writes a HANDOFF.md documenting progress and decisions, and a fresh worker picks up where it left off. This means a todo with 10+ checklist items is perfectly fine if the items are logically cohesive. Splitting tightly coupled work across separate todos creates more problems (merge conflicts, duplicated context) than letting one worker handle it with handoffs.
When to split vs keep together:
Language convention: Write todo file content (titles, context paragraphs, checklist items) in English. When checklist items include user-facing text (error messages, UI copy, placeholder text), use the same language as the user's original request.
Create markdown files in {todo_path}/. Each file follows this format:
# <Clear, action-oriented title>
<1-2 sentences of context explaining WHY this work matters and HOW it fits into the bigger picture. This helps the worker agent make good decisions when implementation details aren't specified.>
- [ ] <Concrete, implementable step>
- [ ] <Another step>
- [ ] <...>
File naming convention:
add-user-auth.md01-create-db-schema.md, 02-add-api-endpoints.mdWriting good checklist items: Each item should be something a developer (or an AI agent) can pick up and implement without needing additional clarification. Think of them as mini-specifications.
Good: - [ ] Create POST /api/auth/login endpoint that accepts { email, password } and returns a JWT token
Bad: - [ ] Handle authentication
Good: - [ ] Add error boundary component in src/components/ErrorBoundary.tsx that catches render errors and shows a retry button
Bad: - [ ] Add error handling
Include file paths when you know where the code should go. The worker benefits enormously from knowing the target location upfront.
Beyond code — what else to include in checklist items:
- [ ] Write tests in src/lib/__tests__/reset-token.test.ts: (a) creates valid token, (b) returns null for expired token, (c) returns null for already-used token- [ ] Define WsServerEvent and WsClientEvent discriminated unions in src/lib/chat/ws-types.ts- [ ] AvatarUpload accepts { currentAvatarUrl: string | null, onSuccess: (newUrl: string) => void }- [ ] On 401, show "현재 비밀번호가 올바르지 않습니다." next to the current-password inputNon-code projects (plugins, config repos, documentation, infrastructure-as-code): Not every project has TypeScript files, API routes, or UI components. When the project's primary artifacts are markdown instructions, JSON/YAML configuration, or infrastructure definitions, reference the project's actual artifacts in checklist items (e.g., skills/process-todos/SKILL.md instead of src/lib/...), adapt "test specifications" to the project's testing reality (validation scripts, linting checks, or manual verification steps rather than unit tests), and don't default to TypeScript/React patterns.
After writing the files, show the user a summary:
## Created Todos
1. **01-create-db-schema.md** (4 items) — Set up the database tables for user auth
2. **02-add-api-endpoints.md** (5 items) — Implement login/signup/logout API routes
3. **03-add-auth-ui.md** (6 items) — Build the login form and auth state management
Files saved to: {todo_path}/
Run `/process-todos` to start processing.
If the user wants changes, edit the files accordingly. Once confirmed, they're ready to go.
User gives a very large request (e.g., "build me a full e-commerce platform"): Don't shy away from big plans. The worker's handoff mechanism handles context limits gracefully, so even ambitious features can be tackled. Focus on splitting by concern (data layer, API, UI, integrations) rather than artificially limiting scope. If the request is truly enormous (10+ todos), present the full plan but ask the user to confirm before writing all files.
User gives a tiny request (e.g., "fix the typo in the header"): Still create a todo file — the process-todos system expects markdown files. But keep it minimal: a title and 1-2 checklist items.
Existing todos in the directory:
Check for existing .md files in {todo_path}/. If there are any, mention them and ask whether the new todos should be added alongside or replace them. If using numbered prefixes, continue from the highest existing number.
Ambiguous requirements: Make a reasonable assumption, document it in the todo's context paragraph, and move on. For example: "Assuming JWT-based auth since the project already uses jsonwebtoken (see package.json)." The worker can adjust during implementation if needed.
The best todos share these qualities:
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer