Plan and create new issues for the task tracking system. Use this skill when the user wants to plan new features, create issues, add tasks to the queue, or break down work into trackable issues.
Plan and create new issues for the task tracking system.
⚠️ CRITICAL: NEVER UPDATE EXISTING ISSUES
This skill is for creating NEW issues only. You must NEVER:
in_progress (someone is working on it)completed (it's done)pending status)Default behavior: Always create a NEW issue. If work is related to an existing issue, create a follow-up issue instead.
Only exception: User EXPLICITLY requests "update issue 005" or similar. Even then, confirm before modifying.
You are helping the user plan new issues. Follow this workflow:
The user will describe what they want to build at a high level. This could be a single feature or multiple related features.
Before asking questions, gather context from TWO sources:
2a. Explore the codebase to understand:
Use the Explore agent to gather this context efficiently.
2b. Review existing issues by reading:
tasks/issues-to-complete.json - all pending/in-progress issuestasks/issues/ for any related issues2c. Check for conflicts or overlaps:
If conflicts found: Present them to the user before proceeding:
⚠️ Potential conflict with existing issues:
- Issue 003 (add-user-profiles) also modifies src/lib/auth.ts
- This feature might need to wait for 002 (database-migration) to complete
How should we proceed?
Before creating issues, assess whether the request should be a single issue or split into multiple smaller issues.
Size indicators - consider splitting if ANY apply:
Keep as single issue when:
Splitting guidelines:
blocked_by to express dependencies between split issuesWhen unsure, ask the user:
This task appears fairly large (affects ~8 files, spans backend + frontend + tests).
I could approach this in two ways:
1. **Single issue**: One comprehensive issue covering everything
2. **Split into 2-3 issues**:
- 007-feature-backend: API and database layer
- 008-feature-frontend: UI components (blocked by 007)
- 009-feature-tests: Integration tests (blocked by 008)
Which approach would you prefer?
For each issue (or group of related issues if splitting) the user wants to create:
Ask at least 2 clarifying questions before writing any plan. Use the AskUserQuestion tool for questions with discrete options (e.g., "which approach?", "include X or not?"). Free-form questions (e.g., "what should the behavior be?") can be asked as regular text.
Focus on non-obvious decisions that affect implementation:
Tips for good questions:
AskUserQuestion for thosePresent a minimal confirmation BEFORE creating any files:
Only after user confirms, write the plan file at tasks/issues/{id}-{slug}.md. The plan should be detailed enough that implementation can proceed without further clarification:
# Issue {ID}: {Title}
## Summary
1-2 sentence description of what this issue accomplishes.
## Context
Why this is needed. Reference existing code patterns or related issues.
## Scope
**In scope:**
- Specific thing 1
- Specific thing 2
**Out of scope:**
- Thing explicitly not included
- Future enhancement deferred
## Key Decisions
- **Decision 1**: What was decided and why
- **Error handling**: How failures are handled
- **Edge case X**: How it's handled
## Implementation Plan
Detailed steps with specific file paths and what changes in each:
1. **Create/modify `path/to/file.ts`**
- Add function X that does Y
- Export it from the module
2. **Update `path/to/other.ts`**
- Import and call the new function
- Handle the response by doing Z
3. **Add tests in `path/to/file.test.ts`**
- Test case for happy path
- Test case for error handling
## Files to Modify
- `path/to/file1.ts` - (new) description
- `path/to/file2.ts` - (modify) description
- `path/to/file3.ts` - (modify) description
## Acceptance Criteria
- [ ] Specific testable criterion 1
- [ ] Specific testable criterion 2
- [ ] Error case is handled correctly
Register the issue using the CLI:
issues new --name "{slug}" [--blocked-by {id}]
This creates the issue with proper UTC timestamps and returns the assigned ID.
To see current issues during planning:
issues list --json
Repeat for each additional issue
Commit the created files after all issues are created:
git add tasks/issues/{id}-{slug}.mdgit add tasks/issues-to-complete.jsonAdd issue(s): {list of issue names}Add issue(s): 001-user-signup, 002-user-login{id}-{slug}.md (e.g., "001-add-dark-mode.md")User: I want to add user authentication with login and signup flows
Agent: [Explores codebase with Explore agent]
Agent: [Reads tasks/issues-to-complete.json and existing issue files]
Agent: I've reviewed the codebase and existing issues. Found:
- Codebase uses React + Express, no existing auth
- Existing issue 001 (add-database) is in progress - we'll need to wait for that
- No conflicts with other planned work
I'll plan this as two issues. Signup will be blocked by the database issue.
[Uses AskUserQuestion]
1. "Auth method" - Email/password, Social login, Both
2. "Email verification" - Required before access, Optional, Not needed
User: Email/password, required before access
[Uses AskUserQuestion - follow-up]
1. "If verification email fails to send?" - Block signup, Create account and retry later
2. "Existing email signup?" - Show "email taken", Send password reset instead
User: Create account and retry, show "email taken"
Agent: Email/password signup with email verification required.
Non-obvious decisions:
- SMTP fails → create account anyway, queue retry
- Duplicate email → show error (not password reset link)
- Unverified users blocked from all routes
Good?
User: yes
Agent: [Creates 002-user-signup.md with blocked_by: "001"]
Agent: [Updates issues-to-complete.json]
Now for login. [Continues with similar flow...]
User: Add a dark mode toggle to the settings page
Agent: [Explores codebase, reviews existing issues]
I've reviewed the codebase. This is a focused feature:
- Adds a toggle component to settings
- Creates theme context for state
- Updates CSS variables
This affects about 3-4 files with a clear single responsibility.
I'll plan this as a single issue.
[Proceeds with clarifying questions and creates one issue]
User: Add user authentication with signup, login, password reset, and OAuth
Agent: [Explores codebase, reviews existing issues]
This is a substantial feature spanning multiple components:
- Database schema for users and sessions (~3 files)
- Backend API endpoints (~4 files)
- Frontend forms and state (~6 files)
- Email service for verification/reset (~2 files)
- OAuth integration (~3 files)
That's roughly 18 files across 4-5 distinct subsystems.
I'd recommend splitting this into 2-3 focused issues:
1. **007-auth-core**: Signup + login (database, API, basic forms)
2. **008-password-reset**: Password reset flow (blocked by 007)
3. **009-oauth-integration**: OAuth providers (blocked by 007)
Each can be completed and tested independently.
Would you like me to split it this way, or keep it as one large issue?
User: split please
Agent: Great! Let me plan each issue, starting with auth-core...
[Creates three issues with appropriate blocked_by relationships]
User: Add analytics tracking to the application
Agent: [Explores codebase, reviews existing issues]
I've reviewed the request. This could go either way:
- Core analytics: ~4-5 files (tracking service, event definitions)
- UI dashboard: ~3-4 files (charts, analytics page)
- Total: ~8-9 files
I could approach this as:
1. **Single issue**: Everything together (simpler, but larger)
2. **Two issues**:
- 007-analytics-core: Tracking service and events
- 008-analytics-dashboard: UI for viewing data (blocked by 007)
The core tracking could be useful immediately even without the dashboard.
Which approach would you prefer?
User: Two issues makes sense
Agent: [Plans and creates two issues with dependency]