{"id":26343657,"url":"https://github.com/easydevv/uplan","last_synced_at":"2026-05-11T09:22:22.341Z","repository":{"id":282542216,"uuid":"948901479","full_name":"EasyDevv/uplan","owner":"EasyDevv","description":"📋uPlan - AI-powered development planning automation tool that generates structured project documents and to-do lists. Streamlines your planning workflow with template-based questions,  Supports multiple AI models and offers customizable templates for development planning.","archived":false,"fork":false,"pushed_at":"2025-03-15T09:25:34.000Z","size":126,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T10:25:48.603Z","etag":null,"topics":["ai","anthropic","cli","deepseek","developer-tools","llm","ollama","openai","planning-tool","productivity","project-documentation","project-management","todo-list","workflow"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EasyDevv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-15T08:03:14.000Z","updated_at":"2025-03-15T09:25:37.000Z","dependencies_parsed_at":"2025-03-15T10:26:10.993Z","dependency_job_id":"d84077eb-6d8e-4ae5-a4aa-2a118d6339ba","html_url":"https://github.com/EasyDevv/uplan","commit_stats":null,"previous_names":["easydevv/uplan"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EasyDevv%2Fuplan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EasyDevv%2Fuplan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EasyDevv%2Fuplan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EasyDevv%2Fuplan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EasyDevv","download_url":"https://codeload.github.com/EasyDevv/uplan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243826788,"owners_count":20354222,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","anthropic","cli","deepseek","developer-tools","llm","ollama","openai","planning-tool","productivity","project-documentation","project-management","todo-list","workflow"],"created_at":"2025-03-16T05:17:39.563Z","updated_at":"2026-05-11T09:22:22.260Z","avatar_url":"https://github.com/EasyDevv.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 📋uPlan\n\n`uPlan` is a Python package that utilizes AI to generate structured development plans and to-do lists.\n\n[![PyPI version](https://img.shields.io/pypi/v/uplan.svg)](https://pypi.org/project/uplan/)\n[![Python Versions](https://img.shields.io/pypi/pyversions/uplan.svg)](https://pypi.org/project/uplan/)\n\n#### English | [한국어](docs/README_KR.md)\n\u003c/div\u003e\n\n## 📖 Introduction\n\nuPlan automates the development planning process to generate consistent and structured project documentation.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://youtu.be/9bG2-Ky54Ko\" target=\"_blank\"\u003e\n        \u003cimg src=\"http://img.youtube.com/vi/9bG2-Ky54Ko/0.jpg\" alt=\"uplan_usage\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n**Problems with existing AI chat-based planning:**\n- Questions and methods vary with each session\n- Performance degradation due to increased context as conversations accumulate\n- Lack of repeatable workflow\n\n**uPlan's Solution:**\n- Template-based structured questions\n- Efficient resource usage by calling AI only when necessary\n- Compatibility ensured through structured TOML format output\n\n## ✨ Key Features\n\n- 🎯 Automatic development plan generation using AI\n- ✅ Detailed to-do list creation based on plans\n- 📝 Structured output in TOML format\n- 🔄 Interactive template customization\n- 🛠️ Support for various AI models (OpenAI, Anthropic, Gemini, Deepseek, Ollama, etc.)\n\n## 🔄 How It Works\nuPlan operates through the following workflow:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/workflow.png\" alt=\"uplan Workflow\" width=\"700\"\u003e\n\u003c/p\u003e\n\n1. **Structured Question Generation** (Code): Creates questions based on user-provided templates\n2. **Question Response** (User): Provides answers to structured questions\n3. **Plan Generation** (AI): Creates development plans based on user responses\n4. **Plan Verification** (User): Reviews and approves the generated plan\n5. **To-Do List Generation** (AI): Creates detailed to-do lists based on the approved plan\n6. **Final Verification** (User): Final review and approval of the to-do list\n\nThis process yields optimal development plans through efficient interaction between code (automation), user (decision-making), and AI (generation).\n\n## 🚀 Quick Start\n\n### Installation\n```bash\npip install uplan\n```\n\n### Run with Default Settings\n```bash\nuplan\n```\n\u003e The default model is ollama/qwq.\n\n### Specify a Particular Model\n```bash\nuplan --model gemini/gemini-2.0-flash-thinking-exp\n```\n\u003e Add the `GEMINI_API_KEY` key-value pair to your `.env` file. You can get a free key [here](https://gemini.ai/pricing).\n\n## 🤖 Supported Models\n\nFor more details, refer to [MODELS.md](docs/MODELS.md).\n\n## 📋 Detailed Usage\n\nuPlan supports the following command structure:\n\n```\nuplan [global options] [command] [command options]\n```\n\n### Global Options\n\n| Option | Description | Default |\n|------|------|--------|\n| `--model` | LLM model to use | `\"ollama/qwq\"` |\n| `--retry` | Maximum retry count for LLM requests | `5` |\n| `--category` | Template type | `\"dev\"` |\n| `--input` | Input template folder path | `\"./input\"` |\n| `--output` | Output file save folder | `\"./output\"` |\n| `--debug` | Enable debug mode | `false` |\n\n### Output Files\n\nThe following files are generated as a result of execution:\n\n- `plan.toml`: Development plan document\n- `todo.toml`: To-do list\n- `todo.md`: To-do list in markdown format\n- `todo.json`: To-do list in checklist format (including completion status)\n\n### Commands\n\n#### Basic Execution (Plan Creation)\n\nRunning without a command operates in plan generation mode:\n\n```bash\nuplan [global options]\n```\n\nExamples:\n```bash\n# Run with default model and dev category\nuplan\n\n# Specify model and category\nuplan --model \"ollama/qwq\" --category \"custom\"\n\n# Change input/output paths\nuplan --input \"./my-templates\" --output \"./my-plans\"\n```\n\n\u003e **Note**: If templates don't exist in the specified `--input/[category]` path, they will be automatically initialized.\n\n#### init - Template Initialization\n\nCreates template files:\n\n```bash\nuplan init [template] [--force]\n```\n\n**Options:**\n- `template`: Template name to initialize (default: \"dev\")\n- `--force`: Force overwrite of existing files\n\nExamples:\n```bash\n# Initialize default dev template\nuplan init\n\n# Initialize custom template\nuplan init dev_en\n\n# Force overwrite existing template\nuplan init dev --force\n```\n\n## 🛠️ Template Customization\n\n### plan.toml\n\nA template that includes prompts and Q\u0026A structure for basic planning.\n\n```toml\n[prompt]\nrole = \"You are a good code architect and have a good understanding of the development process.\"\ngoal = \"Create a plan for development.\"\npreferred_language = \"English\"\ninstructions = [\n    \"Review what's already entered in \u003ctemplate\u003e.\",\n    \"\u003cselect\u003e can contain multiple contents.\",\n    \"Fill in the \u003cselect\u003e parts to create the final deliverable.\"\n]\noutput_structure = [\n    \"Write it in JSON format inside a ```json ``` codeblock.\",\n    \"Key values use lowercase\"\n]\n```\n\n**Template Question Structure:**\n```toml\n[template.project_basics.overview]\nask = \"Please describe the overview of the project\"\ndescription = \"What you are making (app, service, etc.), target platform (web, mobile, desktop, etc.), main users, etc.\"\nrequired = true\n```\n\n| Property | Description |\n|------|------|\n| `ask` | Basic question |\n| `description` | Additional explanation (AI auto-generates if answer not provided) |\n| `required` | Whether to present the question (default: false) |\n\n### todo.toml\n\nA template for generating detailed to-do lists based on the plan.\n\n```toml\n[template.frontend]\nframework = [\"\u003cselect\u003e (e.g., react, vue, angular)\"]\ntasks = [\n    \"\u003cselect\u003e (e.g., design login page UI, design sign up page UI, implement user input validation logic)\",\n]\n```\n| Property | Description |\n| --- | --- |\n| `frameworks` | AI specifies based on the content of `output/dev/plan.toml` |\n| `tasks` | AI generates specific to-do list based on the content of `output/dev/plan.toml` |\n\n## 👨‍💻 Contributing\n\nIssues and pull requests are welcome!\n\n## 📄 License\n\nSee the [LICENSE](LICENSE) file for more details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nMade with ❤️ by [EasyDev](https://github.com/easydevv)\n\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasydevv%2Fuplan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasydevv%2Fuplan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasydevv%2Fuplan/lists"}