scopemate 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scopemate/__init__.py +16 -0
- scopemate/__main__.py +10 -0
- scopemate/breakdown.py +466 -0
- scopemate/cli.py +174 -0
- scopemate/core.py +23 -0
- scopemate/engine.py +226 -0
- scopemate/interaction.py +292 -0
- scopemate/llm.py +343 -0
- scopemate/models.py +157 -0
- scopemate/storage.py +106 -0
- scopemate/task_analysis.py +357 -0
- scopemate-0.1.0.dist-info/METADATA +410 -0
- scopemate-0.1.0.dist-info/RECORD +17 -0
- scopemate-0.1.0.dist-info/WHEEL +5 -0
- scopemate-0.1.0.dist-info/entry_points.txt +2 -0
- scopemate-0.1.0.dist-info/licenses/LICENSE +21 -0
- scopemate-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,410 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: scopemate
|
3
|
+
Version: 0.1.0
|
4
|
+
Summary: 🪜 A CLI tool for Purpose/Scope/Outcome planning
|
5
|
+
Author: Anoop Thomas Mathew
|
6
|
+
Author-email: Anoop Thomas Mathew <atmb4u@gmail.com>
|
7
|
+
License: MIT
|
8
|
+
Project-URL: Homepage, https://github.com/atmb4u/scopemate
|
9
|
+
Project-URL: Bug Tracker, https://github.com/atmb4u/scopemate/issues
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
14
|
+
Classifier: Operating System :: OS Independent
|
15
|
+
Classifier: Operating System :: Microsoft :: Windows
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
17
|
+
Classifier: Operating System :: MacOS
|
18
|
+
Classifier: Intended Audience :: Developers
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
20
|
+
Classifier: License :: OSI Approved :: MIT License
|
21
|
+
Requires-Python: >=3.10
|
22
|
+
Description-Content-Type: text/markdown
|
23
|
+
License-File: LICENSE
|
24
|
+
Requires-Dist: openai>=1.0.0
|
25
|
+
Requires-Dist: pydantic>=2.0.0
|
26
|
+
Requires-Dist: twine>=6.1.0
|
27
|
+
Dynamic: author
|
28
|
+
Dynamic: license-file
|
29
|
+
Dynamic: requires-python
|
30
|
+
|
31
|
+
# 🪜 scopemate
|
32
|
+
|
33
|
+
A CLI tool for breaking down complex tasks into smaller subtasks with LLM-powered scope estimation and planning.
|
34
|
+
|
35
|
+
## Conceptual Framework
|
36
|
+
|
37
|
+
Scopemate is built around a three-part framework for strategic decision making:
|
38
|
+
|
39
|
+
### 🧠Purpose → Strategic Relevance
|
40
|
+
|
41
|
+
**"Why does this matter now?"**
|
42
|
+
|
43
|
+
- Is it aligned with a company priority, customer need, or mission-critical goal?
|
44
|
+
- If we didn't do it, would anything break or stall?
|
45
|
+
- Does this move us closer to where we want to be?
|
46
|
+
|
47
|
+
> **✅ If not strategic, it's a distraction.**
|
48
|
+
|
49
|
+
### 📦 Scope → Executable Shape
|
50
|
+
|
51
|
+
**"Can we actually do this — fast and clearly?"**
|
52
|
+
|
53
|
+
- Is it defined tightly enough to start today or this week?
|
54
|
+
- Can one person or squad own it end-to-end?
|
55
|
+
- What's the smallest useful version we can ship?
|
56
|
+
|
57
|
+
> **✅ If it's vague or sprawling, it needs slicing.**
|
58
|
+
|
59
|
+
### 🎯 Outcome → Meaningful Result
|
60
|
+
|
61
|
+
**"What will change once this is done?"**
|
62
|
+
|
63
|
+
- Will this give us clarity, value, or unlock something else?
|
64
|
+
- How will we measure success — learning, delivery, or stability?
|
65
|
+
- What does "done" look like in a way others can see?
|
66
|
+
|
67
|
+
> **✅ If the outcome is fuzzy, stop and clarify.**
|
68
|
+
|
69
|
+
## Features
|
70
|
+
|
71
|
+
- Break down complex tasks into smaller subtasks
|
72
|
+
- LLM-driven scope estimation & breakdown
|
73
|
+
- Interactive task breakdown with alternative approaches
|
74
|
+
- Automatic fixing of inconsistent time estimates
|
75
|
+
- Checkpointing (pause & resume)
|
76
|
+
- Auto-detect when child tasks take more time than parents
|
77
|
+
- Auto-adjust parent scope estimates based on child complexity
|
78
|
+
- Pydantic validation
|
79
|
+
- Cross-platform support (Windows, macOS, Linux)
|
80
|
+
- Works with Python 3.10 and above
|
81
|
+
|
82
|
+
## Requirements
|
83
|
+
|
84
|
+
- Python 3.10 or higher
|
85
|
+
- OpenAI API key set as environment variable (`OPENAI_API_KEY`)
|
86
|
+
|
87
|
+
## Installation
|
88
|
+
|
89
|
+
### From PyPI (Recommended)
|
90
|
+
|
91
|
+
The easiest way to install scopemate is from PyPI:
|
92
|
+
|
93
|
+
```bash
|
94
|
+
# Install using pip (any platform)
|
95
|
+
pip install scopemate
|
96
|
+
|
97
|
+
# Or using pip3 on some systems
|
98
|
+
pip3 install scopemate
|
99
|
+
```
|
100
|
+
|
101
|
+
### Platform-Specific Installation Scripts
|
102
|
+
|
103
|
+
#### macOS and Linux
|
104
|
+
|
105
|
+
```bash
|
106
|
+
# Clone the repository
|
107
|
+
git clone https://github.com/atmb4u/scopemate.git
|
108
|
+
cd scopemate
|
109
|
+
|
110
|
+
# Install using the script (automatically checks Python version)
|
111
|
+
./install.sh
|
112
|
+
```
|
113
|
+
|
114
|
+
#### Windows
|
115
|
+
|
116
|
+
```powershell
|
117
|
+
# Clone the repository
|
118
|
+
git clone https://github.com/atmb4u/scopemate.git
|
119
|
+
cd scopemate
|
120
|
+
|
121
|
+
# Install using the script (automatically checks Python version)
|
122
|
+
.\install.bat
|
123
|
+
```
|
124
|
+
|
125
|
+
### Manual Installation from Source
|
126
|
+
|
127
|
+
```bash
|
128
|
+
# Clone the repository
|
129
|
+
git clone https://github.com/atmb4u/scopemate.git
|
130
|
+
cd scopemate
|
131
|
+
|
132
|
+
# Install in development mode
|
133
|
+
pip install -e .
|
134
|
+
```
|
135
|
+
|
136
|
+
### Setting up the OpenAI API Key
|
137
|
+
|
138
|
+
scopemate requires an OpenAI API key to function. Set it as an environment variable:
|
139
|
+
|
140
|
+
#### macOS/Linux
|
141
|
+
```bash
|
142
|
+
export OPENAI_API_KEY=your-api-key-here
|
143
|
+
```
|
144
|
+
|
145
|
+
#### Windows Command Prompt
|
146
|
+
```cmd
|
147
|
+
set OPENAI_API_KEY=your-api-key-here
|
148
|
+
```
|
149
|
+
|
150
|
+
#### Windows PowerShell
|
151
|
+
```powershell
|
152
|
+
$env:OPENAI_API_KEY = "your-api-key-here"
|
153
|
+
```
|
154
|
+
|
155
|
+
For permanent setup, add this to your shell profile or environment variables.
|
156
|
+
|
157
|
+
## Usage
|
158
|
+
|
159
|
+
### Quick Start
|
160
|
+
|
161
|
+
```bash
|
162
|
+
# Run in interactive mode (recommended for first-time users)
|
163
|
+
scopemate --interactive
|
164
|
+
```
|
165
|
+
|
166
|
+
### Command-line Options
|
167
|
+
|
168
|
+
```bash
|
169
|
+
# Get help and see all available options
|
170
|
+
scopemate --help
|
171
|
+
|
172
|
+
# Generate a project plan with purpose and outcome
|
173
|
+
scopemate --purpose="Build a REST API for user management" --outcome="A documented API with authentication and user CRUD operations" --output="project_plan.json"
|
174
|
+
|
175
|
+
# Fix inconsistent estimates in an existing plan
|
176
|
+
scopemate --fix-estimates --input="project_plan.json" --output="fixed_plan.json"
|
177
|
+
```
|
178
|
+
|
179
|
+
### Interactive Mode Workflow
|
180
|
+
|
181
|
+
The interactive mode (`scopemate --interactive`) will guide you through:
|
182
|
+
|
183
|
+
1. **Initial Setup**:
|
184
|
+
- Create a new task or load an existing plan
|
185
|
+
- Set the main purpose and intended outcome
|
186
|
+
|
187
|
+
2. **Task Definition**:
|
188
|
+
- Define the scope of work
|
189
|
+
- Set dependencies and identify risks
|
190
|
+
- Define acceptance criteria
|
191
|
+
|
192
|
+
3. **Task Breakdown**:
|
193
|
+
- Automatically break down complex tasks into manageable subtasks
|
194
|
+
- Review and modify suggested breakdowns
|
195
|
+
- Explore alternative approaches to solving the problem
|
196
|
+
|
197
|
+
4. **Validation and Refinement**:
|
198
|
+
- Automatically detect and fix inconsistent time estimates
|
199
|
+
- Check for tasks where children take more time than parents
|
200
|
+
- Adjust parent scope estimates based on child complexity
|
201
|
+
|
202
|
+
5. **Save and Export**:
|
203
|
+
- Save your plan to a JSON file
|
204
|
+
- Resume work later using checkpoints
|
205
|
+
|
206
|
+
### Output Format
|
207
|
+
|
208
|
+
scopemate generates a structured JSON output with the following format:
|
209
|
+
|
210
|
+
```json
|
211
|
+
{
|
212
|
+
"tasks": [
|
213
|
+
{
|
214
|
+
"id": "TASK-abc123",
|
215
|
+
"title": "Task title",
|
216
|
+
"purpose": {
|
217
|
+
"detailed_description": "Why this task matters",
|
218
|
+
"alignment": ["Strategic goal 1", "Strategic goal 2"],
|
219
|
+
"urgency": "strategic"
|
220
|
+
},
|
221
|
+
"scope": {
|
222
|
+
"size": "complex",
|
223
|
+
"time_estimate": "sprint",
|
224
|
+
"dependencies": ["Dependency 1"],
|
225
|
+
"risks": ["Risk 1", "Risk 2"]
|
226
|
+
},
|
227
|
+
"outcome": {
|
228
|
+
"type": "customer-facing",
|
229
|
+
"detailed_outcome_definition": "What will be delivered",
|
230
|
+
"acceptance_criteria": ["Criterion 1", "Criterion 2"],
|
231
|
+
"metric": "Success measurement",
|
232
|
+
"validation_method": "How to validate"
|
233
|
+
},
|
234
|
+
"meta": {
|
235
|
+
"status": "backlog",
|
236
|
+
"priority": 1,
|
237
|
+
"created": "2023-06-01T12:00:00Z",
|
238
|
+
"updated": "2023-06-01T12:00:00Z",
|
239
|
+
"due_date": null,
|
240
|
+
"confidence": "medium"
|
241
|
+
},
|
242
|
+
"parent_id": null
|
243
|
+
}
|
244
|
+
]
|
245
|
+
}
|
246
|
+
```
|
247
|
+
|
248
|
+
### Integrating with Other Tools
|
249
|
+
|
250
|
+
You can use scopemate's JSON output with other project management tools:
|
251
|
+
|
252
|
+
- Import tasks into JIRA using their API
|
253
|
+
- Convert to CSV for import into spreadsheets
|
254
|
+
- Integrate with custom project dashboards
|
255
|
+
|
256
|
+
## Development
|
257
|
+
|
258
|
+
### Setting Up Development Environment
|
259
|
+
|
260
|
+
#### Prerequisites
|
261
|
+
|
262
|
+
- Python 3.10 or higher
|
263
|
+
- Git
|
264
|
+
|
265
|
+
#### Using pip
|
266
|
+
|
267
|
+
```bash
|
268
|
+
# Clone the repository
|
269
|
+
git clone https://github.com/atmb4u/scopemate.git
|
270
|
+
cd scopemate
|
271
|
+
|
272
|
+
# Install development dependencies
|
273
|
+
pip install -r requirements-dev.txt
|
274
|
+
|
275
|
+
# Install the package in development mode
|
276
|
+
pip install -e .
|
277
|
+
```
|
278
|
+
|
279
|
+
#### Using uv (Recommended)
|
280
|
+
|
281
|
+
[uv](https://github.com/astral-sh/uv) is a fast Python package installer and resolver:
|
282
|
+
|
283
|
+
```bash
|
284
|
+
# Install uv if you don't have it
|
285
|
+
pip install uv
|
286
|
+
|
287
|
+
# Clone the repository
|
288
|
+
git clone https://github.com/atmb4u/scopemate.git
|
289
|
+
cd scopemate
|
290
|
+
|
291
|
+
# Install development dependencies with uv
|
292
|
+
uv pip install -r requirements-dev.txt
|
293
|
+
|
294
|
+
# Install the package in development mode
|
295
|
+
uv pip install -e .
|
296
|
+
```
|
297
|
+
|
298
|
+
### Running Tests
|
299
|
+
|
300
|
+
```bash
|
301
|
+
# Run all tests
|
302
|
+
pytest
|
303
|
+
|
304
|
+
# Run tests with verbose output
|
305
|
+
pytest -v
|
306
|
+
|
307
|
+
# Run a specific test file
|
308
|
+
pytest tests/test_basic.py
|
309
|
+
|
310
|
+
# Run tests with coverage report
|
311
|
+
pytest --cov=scopemate
|
312
|
+
```
|
313
|
+
|
314
|
+
### Building Distribution Packages
|
315
|
+
|
316
|
+
#### macOS and Linux
|
317
|
+
|
318
|
+
```bash
|
319
|
+
# Build distribution packages
|
320
|
+
./publish.sh
|
321
|
+
|
322
|
+
# Upload to PyPI (when ready)
|
323
|
+
twine upload dist/*
|
324
|
+
```
|
325
|
+
|
326
|
+
#### Windows
|
327
|
+
|
328
|
+
```powershell
|
329
|
+
# Build distribution packages
|
330
|
+
.\publish.bat
|
331
|
+
|
332
|
+
# Upload to PyPI (when ready)
|
333
|
+
twine upload dist/*
|
334
|
+
```
|
335
|
+
|
336
|
+
### Code Style and Linting
|
337
|
+
|
338
|
+
We use ruff for linting and code formatting:
|
339
|
+
|
340
|
+
```bash
|
341
|
+
# Run linter
|
342
|
+
ruff check src tests
|
343
|
+
|
344
|
+
# Format code
|
345
|
+
ruff format src tests
|
346
|
+
```
|
347
|
+
|
348
|
+
### Testing Cross-Platform Compatibility
|
349
|
+
|
350
|
+
Use tox to test across multiple Python versions:
|
351
|
+
|
352
|
+
```bash
|
353
|
+
# Install tox
|
354
|
+
pip install tox
|
355
|
+
|
356
|
+
# Run tox
|
357
|
+
tox
|
358
|
+
|
359
|
+
# Run tox for a specific Python version
|
360
|
+
tox -e py310
|
361
|
+
```
|
362
|
+
|
363
|
+
## Repository Structure
|
364
|
+
|
365
|
+
```
|
366
|
+
.
|
367
|
+
├── LICENSE # MIT License
|
368
|
+
├── MANIFEST.in # Package manifest
|
369
|
+
├── README.md # Project documentation
|
370
|
+
├── publish.sh # Build and publish script (Unix)
|
371
|
+
├── publish.bat # Build and publish script (Windows)
|
372
|
+
├── install.sh # Installation script (Unix)
|
373
|
+
├── install.bat # Installation script (Windows)
|
374
|
+
├── pyproject.toml # Project configuration
|
375
|
+
├── requirements.txt # Project dependencies
|
376
|
+
├── requirements-dev.txt # Development dependencies
|
377
|
+
├── setup.py # Package setup
|
378
|
+
├── tox.ini # Tox configuration
|
379
|
+
├── tests/ # Test directory
|
380
|
+
│ ├── __init__.py # Test package initialization
|
381
|
+
│ ├── test_basic.py # Basic tests
|
382
|
+
│ └── test_platform.py # Platform compatibility tests
|
383
|
+
└── src/ # Source code
|
384
|
+
└── scopemate/ # Main package
|
385
|
+
├── __init__.py # Package initialization
|
386
|
+
├── __main__.py # Entry point
|
387
|
+
├── breakdown.py # Task breakdown logic
|
388
|
+
├── cli.py # Command-line interface
|
389
|
+
├── core.py # Core functionality
|
390
|
+
├── engine.py # Main application logic
|
391
|
+
├── interaction.py # User interaction helpers
|
392
|
+
├── llm.py # LLM integration
|
393
|
+
├── models.py # Data models
|
394
|
+
├── storage.py # Task storage
|
395
|
+
└── task_analysis.py # Task analysis helpers
|
396
|
+
```
|
397
|
+
|
398
|
+
## Contributing
|
399
|
+
|
400
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
401
|
+
|
402
|
+
1. Fork the repository
|
403
|
+
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
404
|
+
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
|
405
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
406
|
+
5. Open a Pull Request
|
407
|
+
|
408
|
+
## License
|
409
|
+
|
410
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
scopemate/__init__.py,sha256=3cyRjjI2wC2pG8VeXONVOrow_dJMKUCzre8EtYfrV0s,472
|
2
|
+
scopemate/__main__.py,sha256=nPNZe_QEoOHQ_hXf17w72BHz1UFPKuW2g3whTLwuM8E,195
|
3
|
+
scopemate/breakdown.py,sha256=lasv2Gt1yziE_GV4DgCBWVg3TIPuggT3Tf77ny5n7Iw,19650
|
4
|
+
scopemate/cli.py,sha256=o05Od9NEP76sQRegc3dqs-d-DCpYip2KC1GXjriiCZQ,5059
|
5
|
+
scopemate/core.py,sha256=wpXCpb5Kdpqul9edNCx2Da94137XCc1w-3KQc9-Tf3s,700
|
6
|
+
scopemate/engine.py,sha256=wlE39lzKoJthi6twestlyEqvEjqNEXQYvNTOfT4aGZw,9521
|
7
|
+
scopemate/interaction.py,sha256=qWFU3QM_KPwaGdh4Rw7ewCIeYiT6Wa_H9e6bnmNoJzw,9531
|
8
|
+
scopemate/llm.py,sha256=hD37Mk54kchdECKYmCNF3yxg0U-vW-h4y8tpNghlS3Q,14031
|
9
|
+
scopemate/models.py,sha256=ZvFn8iegMDgCgoLjvWxj7_C7XLDWrgkF8ySuktfRaqw,4962
|
10
|
+
scopemate/storage.py,sha256=lloD_2f2E3q_inHLiL9Kp8F_tyeerG45_rSLKXvGh4Y,3102
|
11
|
+
scopemate/task_analysis.py,sha256=I-tH62MfYAwlHbLonjlPKBGa-X_II9QqpWS_OsjLaxU,12644
|
12
|
+
scopemate-0.1.0.dist-info/licenses/LICENSE,sha256=4fqQFK5AkkXmg6FBG9Wr06gCR7BMQl02TvsPYt-YL6s,1076
|
13
|
+
scopemate-0.1.0.dist-info/METADATA,sha256=Wmb1wOEmCkigLUXIS0d1BujGzV0uTpx9IpNIvyrtIJI,10557
|
14
|
+
scopemate-0.1.0.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
|
15
|
+
scopemate-0.1.0.dist-info/entry_points.txt,sha256=XXusGEDxI6NlrYmSBcPDtjV3QvsHWVWPSrt4zD4UcLg,49
|
16
|
+
scopemate-0.1.0.dist-info/top_level.txt,sha256=riMrI_jMCfZMb7-ecWBwqOBLdUsnPOxSu2Pgvqx7Too,10
|
17
|
+
scopemate-0.1.0.dist-info/RECORD,,
|
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2025 Anoop Thomas Mathew
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1 @@
|
|
1
|
+
scopemate
|