Converted from Claude Code boilerplate to opencode: - CLAUDE.md -> AGENTS.md (opencode instructions) - .claude/settings.json -> opencode.json (permissions schema) - .claude/agents/ -> .opencode/agent/ (subagents with mode: subagent) - .claude/commands/ -> .opencode/command/ (slash commands with ) - .claude/skills/ -> .opencode/skills/ (7 skills, removed allowed-tools) - DevContainer updated to install opencode - All .claude/ paths and Claude Code references updated
9.0 KiB
TaskCLI - Idea Notes
Positioning of This Document
This document is the output of brainstorming and ideation; it is not a formal specification.
Product Vision
A CLI tool that lets developers manage tasks without leaving the terminal. We want to integrate tightly with Git and GitHub, naturally connecting writing code with managing tasks.
In a nutshell: A task management tool integrated with Git
Problems to Solve
Current Pain Points
-
Too much screen switching
- Write code in the terminal -> open Trello in the browser -> go back to the terminal again
- Every switch breaks your concentration
- You do this more than 20 times a day
-
Tasks and code are disconnected
- You lose track of which branch you're working on for which task
- You forget to write the task number in Git commit messages
- The link between completed tasks and the PRs that were actually merged is ambiguous
-
Too much manual work
- Complete a task -> manually update the status -> manually create a PR -> manually close the task
- It seems automatable, but GUI tools don't integrate well
-
The team's status is hard to see
- You want to know who is doing what right now, but you can't tell without opening a GUI
- You can't quickly show a task list during pair programming
Target Users
Persona 1: Individual Developer
-
Age: 25-35
-
Occupation: Freelance engineer, someone building products on their own
-
Experience: 5+ years of development, comfortable with CLI operations
-
Current pain points:
- Working on multiple projects in parallel, with tasks managed only in their head
- Often thinks, "Wait, what was I supposed to do next on this project?"
- Uses GitHub Issues, but it isn't integrated with local work
-
What they want:
- Task management that's completed entirely in the terminal
- Automatic integration with Git branches
- Simple and fast
Persona 2: Small-Team Leader
-
Age: 30-40
-
Occupation: Startup lead engineer, tech lead
-
Team size: 2-5 people
-
Experience: 10+ years of development, with team management experience
-
Current pain points:
- Wants to know in real time what team members are working on right now
- Checking tasks at the morning standup takes too long
- Jira and Asana are too heavy, overkill for a small team
-
What they want:
- Quickly check the whole team's task status from the CLI
- Task progress updated automatically via GitHub integration
- Lightweight and easy to introduce
Candidate Key Features
P0 (Absolutely Required for MVP)
1. Basic Task Operations
task add "Implement user authentication feature"
task list
task show 1
task done 1
task delete 1
2. Automatic Linking of Tasks and Git Branches
task start 1
# Automatically creates and switches to the feature/task-1-user-authentication branch
git commit -m "Add login endpoint"
# Information about Task #1 is automatically appended to the commit message
3. Task Status Management
open(new)in_progress(in progress)completed(completed)archived(archived)
4. Simple Task List Display
task list
ID Status Title Branch
1 in_progress Implement user auth feature/task-1-user-authentication
2 open Data export feature -
3 completed Initial setup feature/task-3-initial-setup
P1 (Important but Can Wait)
5. Integration with GitHub Issues
task sync
# Sync local tasks with GitHub Issues
task import --github
# Import tasks from GitHub Issues
6. Automatic Processing on Task Completion
task done 1
# Automatically does the following:
# 1. Merge the branch into main
# 2. Push to remote
# 3. (Optional) Automatically create a GitHub PR
# 4. Change the task status to completed
7. Task Filtering and Search
task list --status in_progress
task list --assignee me
task search "authentication"
8. Priority and Due Date Management
task add "Urgent bug fix" --priority high --due 2025-01-20
task list --sort priority
P2 (Nice to Have)
9. Team Features
task list --team
# Task list for all team members
task assign 1 @alice
# Assign a task to another member
10. Calendar Display
task calendar --week
task calendar --month
11. Time Tracking
task start 1
# Start measuring work time
task done 1
# Record work time: 2 hours 30 minutes
12. Task Templates
task template create bug-fix
task add --template bug-fix "Fix login screen bug"
Differentiators
Comparison with Existing Tools
| Feature | TaskCLI | Todoist | Trello | GitHub Issues | Linear |
|---|---|---|---|---|---|
| CLI operation | ✅ | ❌ | ❌ | Partial | ❌ |
| Git integration | ✅✅✅ | ❌ | ❌ | ✅ | ✅ |
| Automatic branch creation | ✅ | ❌ | ❌ | ❌ | ✅ |
| Completed in the terminal | ✅ | ❌ | ❌ | ❌ | ❌ |
| Lightweight and fast | ✅ | ✅ | △ | ✅ | △ |
| Team features | 🚧 | ✅ | ✅ | ✅ | ✅ |
This Tool's Strengths
-
No need to switch screens
- Write code -> check tasks -> back to code
- Everything is completed in the terminal; no GUI needed
-
A sense of unity with Git
- Tasks and branches are linked one-to-one
- Commits, merges, and PRs are automatically linked with tasks
- Always clear which task you're working on
-
Blends into the development flow
- Start task -> create branch -> commit -> PR -> merge -> complete task
- Automates and supports this entire flow
-
Simple
- No need for complex features like Jira or Asana
- Only the features developers truly need
- You can start using it in one minute
Technical Considerations
Data Storage Method
Option 1: Local file (JSON)
- Simple, no special software required
- Stored in
.task/tasks.json - Can be managed with Git (shareable within a team)
Option 2: SQLite
- Fast search and filtering
- Can handle relational data
- File-based, easy to introduce
Conclusion: JSON for the MVP, migrate to SQLite when needed
Method of Git Integration
- Use Node.js's
simple-gitlibrary - Automate branch creation, switching, and retrieving commit information
Integration with the GitHub API
- Use GitHub REST API v3
- Authenticate with a Personal Access Token
- Retrieve, create, and update Issues
CLI Framework
Candidates:
- Commander.js (popular, simple)
- oclif (made by Salesforce, feature-rich)
- yargs (flexible)
Conclusion: Commander.js (low learning cost, sufficient features)
Non-Functional Requirements (For Now)
Performance
- Command execution: within 100ms (feels instantly responsive)
- Task list display: within 1 second even for 1,000 items
Usability
- Even first-time users can learn the basic operations in 5 minutes
- All features can be checked with the help command
- Error messages are easy to understand
Reliability
- Data is never lost (automatic backup)
- Can be reverted if an error occurs
- Confirmation is required for dangerous operations
Extensibility
- Plugin system (in the future)
- Can define custom commands
- Can integrate with other tools (Slack, Discord, etc.)
Success Metrics (For Now)
User Perspective
- Adoption rate: Introduce to 10 developers, and 3 or more keep using it for a week
- Satisfaction: Net Promoter Score (NPS) of 30 or above
- Time savings: Time spent on task management is cut in half
Product Perspective
- Active users: 100 within 3 months of release
- GitHub Stars: 500 within 6 months of release
- Retention rate: 60% or more still using it after 1 month
Future Considerations
Things Not Yet Decided
-
How far to take team features
- How many team-oriented features should we include?
- The balance between individual developers and team development
-
The money question (in the future)
- Completely free and open source?
- Make the Pro version (team features) paid?
-
Cloud sync
- Is sync via Git enough?
- Should we provide a dedicated cloud service?
-
Other version control systems
- Should we also support GitLab and Bitbucket?
- What's the priority?
Technical Concerns
-
Environments without a Git repository
- How do we handle this? Throw an error? Limit functionality?
-
Performance with large repositories
- What happens when tasks exceed 10,000?
-
Cross-platform support
- Does it work on Windows, macOS, and Linux?
- Does it work properly in Git Bash?
Next Steps
-
Review this document
- Are there any missing perspectives?
- Are the priorities reasonable?
-
Create the PRD (Product Requirements Document)
- Create the formal document with the
/setup-projectcommand - Based on these idea notes, make it more detailed and concrete
- Create the formal document with the
-
Build a prototype
- A minimal prototype with only the MVP features (P0)
- Actually use it and gather feedback