📋uPlan
uPlan is a Python package that utilizes AI to generate structured development plans and to-do lists.
English | 한국어
📖 Introduction
uPlan automates the development planning process to generate consistent and structured project documentation.
Problems with existing AI chat-based planning:
- Questions and methods vary with each session
- Performance degradation due to increased context as conversations accumulate
- Lack of repeatable workflow
uPlan's Solution:
- Template-based structured questions
- Efficient resource usage by calling AI only when necessary
- Compatibility ensured through structured TOML format output
✨ Key Features
- 🎯 Automatic development plan generation using AI
- ✅ Detailed to-do list creation based on plans
- 📝 Structured output in TOML format
- 🔄 Interactive template customization
- 🛠️ Support for various AI models (OpenAI, Anthropic, Gemini, Deepseek, Ollama, etc.)
🔄 How It Works
uPlan operates through the following workflow:
- Structured Question Generation (Code): Creates questions based on user-provided templates
- Question Response (User): Provides answers to structured questions
- Plan Generation (AI): Creates development plans based on user responses
- Plan Verification (User): Reviews and approves the generated plan
- To-Do List Generation (AI): Creates detailed to-do lists based on the approved plan
- Final Verification (User): Final review and approval of the to-do list
This process yields optimal development plans through efficient interaction between code (automation), user (decision-making), and AI (generation).
🚀 Quick Start
Installation
pip install uplan
Run with Default Settings
uplan
The default model is ollama/qwq.
Specify a Particular Model
uplan --model gemini/gemini-2.0-flash-thinking-exp
Add the
GEMINI_API_KEYkey-value pair to your.envfile. You can get a free key here.
🤖 Supported Models
For more details, refer to MODELS.md.
📋 Detailed Usage
uPlan supports the following command structure:
uplan [global options] [command] [command options]
Global Options
| Option | Description | Default |
|---|---|---|
--model |
LLM model to use | "ollama/qwq" |
--retry |
Maximum retry count for LLM requests | 5 |
--category |
Template type | "dev" |
--input |
Input template folder path | "./input" |
--output |
Output file save folder | "./output" |
--debug |
Enable debug mode | false |
Output Files
The following files are generated as a result of execution:
plan.toml: Development plan documenttodo.toml: To-do listtodo.md: To-do list in markdown formattodo.json: To-do list in checklist format (including completion status)
Commands
Basic Execution (Plan Creation)
Running without a command operates in plan generation mode:
uplan [global options]
Examples:
# Run with default model and dev category
uplan
# Specify model and category
uplan --model "ollama/qwq" --category "custom"
# Change input/output paths
uplan --input "./my-templates" --output "./my-plans"
Note: If templates don't exist in the specified
--input/[category]path, they will be automatically initialized.
init - Template Initialization
Creates template files:
uplan init [template] [--force]
Options:
template: Template name to initialize (default: "dev")--force: Force overwrite of existing files
Examples:
# Initialize default dev template
uplan init
# Initialize custom template
uplan init dev_en
# Force overwrite existing template
uplan init dev --force
🛠️ Template Customization
plan.toml
A template that includes prompts and Q&A structure for basic planning.
[prompt]
role = "You are a good code architect and have a good understanding of the development process."
goal = "Create a plan for development."
preferred_language = "English"
instructions = [
"Review what's already entered in <template>.",
"<select> can contain multiple contents.",
"Fill in the <select> parts to create the final deliverable."
]
output_structure = [
"Write it in JSON format inside a ```json ``` codeblock.",
"Key values use lowercase"
]
Template Question Structure:
[template.project_basics.overview]
ask = "Please describe the overview of the project"
description = "What you are making (app, service, etc.), target platform (web, mobile, desktop, etc.), main users, etc."
required = true
| Property | Description |
|---|---|
ask |
Basic question |
description |
Additional explanation (AI auto-generates if answer not provided) |
required |
Whether to present the question (default: false) |
todo.toml
A template for generating detailed to-do lists based on the plan.
[template.frontend]
framework = ["<select> (e.g., react, vue, angular)"]
tasks = [
"<select> (e.g., design login page UI, design sign up page UI, implement user input validation logic)",
]
| Property | Description |
|---|---|
frameworks |
AI specifies based on the content of output/dev/plan.toml |
tasks |
AI generates specific to-do list based on the content of output/dev/plan.toml |
👨💻 Contributing
Issues and pull requests are welcome!
📄 License
See the LICENSE file for more details.
Made with ❤️ by EasyDev
Metadata
Release files for uplan 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| uplan-1.0.2.tar.gz | 130.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uplan-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 151.3 kB
Release files / uplan-1.0.2.tar.gz
| Download URL | uplan-1.0.2.tar.gz |
|---|---|
| Size | 130.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
67ed74daf84993efecdda126838c42c79edaad1f360d3287ff255e9e0e85e263
|
|
BLAKE2b-256 checksum How to use checksums |
9236c3cc76255958381933395afe94de3c0c45a8c1f9a7f8f18f3a7c7bba57d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.0
|
Release files / uplan-1.0.2-py3-none-any.whl
| Download URL | uplan-1.0.2-py3-none-any.whl |
|---|---|
| Size | 20.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
45ef8dcebe41061e897f64cf886a7f4ab64d00f4e8b63080df6ad5baf1ef8038
|
|
BLAKE2b-256 checksum How to use checksums |
52b891dbc79e3e7390ad17551ccf3a6cb6291114680b426b7752117413c2b154
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.0
|