openplanr 0.8.0 → 1.0.0
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.
- package/README.md +142 -52
- package/dist/agents/index.d.ts +1 -5
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +1 -4
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/task-parser.d.ts +4 -1
- package/dist/agents/task-parser.d.ts.map +1 -1
- package/dist/agents/task-parser.js +6 -3
- package/dist/agents/task-parser.js.map +1 -1
- package/dist/agents/utils.d.ts +0 -4
- package/dist/agents/utils.d.ts.map +1 -1
- package/dist/agents/utils.js +3 -24
- package/dist/agents/utils.js.map +1 -1
- package/dist/ai/codebase/context-builder.d.ts +22 -3
- package/dist/ai/codebase/context-builder.d.ts.map +1 -1
- package/dist/ai/codebase/context-builder.js +202 -14
- package/dist/ai/codebase/context-builder.js.map +1 -1
- package/dist/ai/codebase/file-reader.d.ts.map +1 -1
- package/dist/ai/codebase/file-reader.js +7 -3
- package/dist/ai/codebase/file-reader.js.map +1 -1
- package/dist/ai/codebase/index.d.ts +3 -1
- package/dist/ai/codebase/index.d.ts.map +1 -1
- package/dist/ai/codebase/index.js +3 -1
- package/dist/ai/codebase/index.js.map +1 -1
- package/dist/ai/codebase/pattern-rules.d.ts +28 -0
- package/dist/ai/codebase/pattern-rules.d.ts.map +1 -0
- package/dist/ai/codebase/pattern-rules.js +186 -0
- package/dist/ai/codebase/pattern-rules.js.map +1 -0
- package/dist/ai/codebase/rules-reader.d.ts +14 -0
- package/dist/ai/codebase/rules-reader.d.ts.map +1 -0
- package/dist/ai/codebase/rules-reader.js +25 -0
- package/dist/ai/codebase/rules-reader.js.map +1 -0
- package/dist/ai/codebase/stack-detector.d.ts.map +1 -1
- package/dist/ai/codebase/stack-detector.js +4 -1
- package/dist/ai/codebase/stack-detector.js.map +1 -1
- package/dist/ai/codebase/tree-generator.d.ts.map +1 -1
- package/dist/ai/codebase/tree-generator.js +5 -2
- package/dist/ai/codebase/tree-generator.js.map +1 -1
- package/dist/ai/errors.js +1 -1
- package/dist/ai/errors.js.map +1 -1
- package/dist/ai/prompts/prompt-builder.d.ts +12 -0
- package/dist/ai/prompts/prompt-builder.d.ts.map +1 -1
- package/dist/ai/prompts/prompt-builder.js +45 -3
- package/dist/ai/prompts/prompt-builder.js.map +1 -1
- package/dist/ai/prompts/system-prompts.d.ts +5 -3
- package/dist/ai/prompts/system-prompts.d.ts.map +1 -1
- package/dist/ai/prompts/system-prompts.js +74 -13
- package/dist/ai/prompts/system-prompts.js.map +1 -1
- package/dist/ai/schemas/ai-response-schemas.d.ts +48 -2
- package/dist/ai/schemas/ai-response-schemas.d.ts.map +1 -1
- package/dist/ai/schemas/ai-response-schemas.js +19 -0
- package/dist/ai/schemas/ai-response-schemas.js.map +1 -1
- package/dist/ai/types.d.ts +4 -2
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/ai/types.js +3 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/ai/validation/dependency-chains.d.ts +21 -0
- package/dist/ai/validation/dependency-chains.d.ts.map +1 -0
- package/dist/ai/validation/dependency-chains.js +114 -0
- package/dist/ai/validation/dependency-chains.js.map +1 -0
- package/dist/ai/validation/index.d.ts +3 -0
- package/dist/ai/validation/index.d.ts.map +1 -0
- package/dist/ai/validation/index.js +3 -0
- package/dist/ai/validation/index.js.map +1 -0
- package/dist/ai/validation/task-validator.d.ts +37 -0
- package/dist/ai/validation/task-validator.d.ts.map +1 -0
- package/dist/ai/validation/task-validator.js +89 -0
- package/dist/ai/validation/task-validator.js.map +1 -0
- package/dist/cli/commands/backlog.d.ts +10 -0
- package/dist/cli/commands/backlog.d.ts.map +1 -0
- package/dist/cli/commands/backlog.js +292 -0
- package/dist/cli/commands/backlog.js.map +1 -0
- package/dist/cli/commands/checklist.js +4 -4
- package/dist/cli/commands/checklist.js.map +1 -1
- package/dist/cli/commands/config.js +13 -13
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/epic.d.ts.map +1 -1
- package/dist/cli/commands/epic.js +41 -22
- package/dist/cli/commands/epic.js.map +1 -1
- package/dist/cli/commands/estimate.d.ts.map +1 -1
- package/dist/cli/commands/estimate.js +40 -39
- package/dist/cli/commands/estimate.js.map +1 -1
- package/dist/cli/commands/export.d.ts +8 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +282 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/feature.js +9 -9
- package/dist/cli/commands/feature.js.map +1 -1
- package/dist/cli/commands/github.d.ts +8 -0
- package/dist/cli/commands/github.d.ts.map +1 -0
- package/dist/cli/commands/github.js +415 -0
- package/dist/cli/commands/github.js.map +1 -0
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +104 -50
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/quick.d.ts.map +1 -1
- package/dist/cli/commands/quick.js +37 -107
- package/dist/cli/commands/quick.js.map +1 -1
- package/dist/cli/commands/refine.js +21 -21
- package/dist/cli/commands/refine.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +18 -7
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/sprint.d.ts +9 -0
- package/dist/cli/commands/sprint.d.ts.map +1 -0
- package/dist/cli/commands/sprint.js +519 -0
- package/dist/cli/commands/sprint.js.map +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +77 -32
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/story.js +15 -15
- package/dist/cli/commands/story.js.map +1 -1
- package/dist/cli/commands/sync.js +11 -7
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/task.d.ts +0 -2
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +14 -169
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/template.d.ts +10 -0
- package/dist/cli/commands/template.d.ts.map +1 -0
- package/dist/cli/commands/template.js +269 -0
- package/dist/cli/commands/template.js.map +1 -0
- package/dist/cli/helpers/task-creation.d.ts +89 -0
- package/dist/cli/helpers/task-creation.d.ts.map +1 -0
- package/dist/cli/helpers/task-creation.js +140 -0
- package/dist/cli/helpers/task-creation.js.map +1 -0
- package/dist/cli/index.js +29 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/models/schema.d.ts +2 -0
- package/dist/models/schema.d.ts.map +1 -1
- package/dist/models/schema.js +2 -0
- package/dist/models/schema.js.map +1 -1
- package/dist/models/types.d.ts +32 -1
- package/dist/models/types.d.ts.map +1 -1
- package/dist/services/artifact-gathering.d.ts +2 -0
- package/dist/services/artifact-gathering.d.ts.map +1 -1
- package/dist/services/artifact-gathering.js +26 -7
- package/dist/services/artifact-gathering.js.map +1 -1
- package/dist/services/artifact-service.d.ts +5 -5
- package/dist/services/artifact-service.d.ts.map +1 -1
- package/dist/services/artifact-service.js +4 -0
- package/dist/services/artifact-service.js.map +1 -1
- package/dist/services/config-service.d.ts.map +1 -1
- package/dist/services/config-service.js +2 -0
- package/dist/services/config-service.js.map +1 -1
- package/dist/services/credential-backends.d.ts.map +1 -1
- package/dist/services/credential-backends.js +15 -7
- package/dist/services/credential-backends.js.map +1 -1
- package/dist/services/credentials-service.d.ts.map +1 -1
- package/dist/services/credentials-service.js +6 -3
- package/dist/services/credentials-service.js.map +1 -1
- package/dist/services/github-service.d.ts +83 -0
- package/dist/services/github-service.d.ts.map +1 -0
- package/dist/services/github-service.js +440 -0
- package/dist/services/github-service.js.map +1 -0
- package/dist/services/template-service.d.ts +2 -1
- package/dist/services/template-service.d.ts.map +1 -1
- package/dist/services/template-service.js +3 -1
- package/dist/services/template-service.js.map +1 -1
- package/dist/templates/backlog/backlog-item.md.hbs +40 -0
- package/dist/templates/checklists/agile-checklist.md.hbs +1 -1
- package/dist/templates/export/planning-report.html.hbs +230 -0
- package/dist/templates/export/planning-report.md.hbs +136 -0
- package/dist/templates/quick/quick-task.md.hbs +1 -1
- package/dist/templates/rules/claude/CLAUDE.md.hbs +78 -35
- package/dist/templates/rules/codex/AGENTS.md.hbs +73 -17
- package/dist/templates/rules/cursor/2101-implement-task-list.mdc.hbs +66 -14
- package/dist/templates/sprints/sprint.md.hbs +42 -0
- package/dist/templates/task-templates/api-integration.json +45 -0
- package/dist/templates/task-templates/auth-flow.json +48 -0
- package/dist/templates/task-templates/database-migration.json +44 -0
- package/dist/templates/task-templates/react-component.json +45 -0
- package/dist/templates/task-templates/rest-endpoint.json +53 -0
- package/dist/templates/tasks/task-list.md.hbs +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +4 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/logger.d.ts +31 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +92 -9
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markdown.d.ts +3 -2
- package/dist/utils/markdown.d.ts.map +1 -1
- package/dist/utils/markdown.js +3 -1
- package/dist/utils/markdown.js.map +1 -1
- package/dist/utils/slugify.d.ts +8 -1
- package/dist/utils/slugify.d.ts.map +1 -1
- package/dist/utils/slugify.js +18 -2
- package/dist/utils/slugify.js.map +1 -1
- package/package.json +14 -3
- package/dist/agents/agent-factory.d.ts +0 -7
- package/dist/agents/agent-factory.d.ts.map +0 -1
- package/dist/agents/agent-factory.js +0 -22
- package/dist/agents/agent-factory.js.map +0 -1
- package/dist/agents/claude-agent.d.ts +0 -18
- package/dist/agents/claude-agent.d.ts.map +0 -1
- package/dist/agents/claude-agent.js +0 -183
- package/dist/agents/claude-agent.js.map +0 -1
- package/dist/agents/codex-agent.d.ts +0 -17
- package/dist/agents/codex-agent.d.ts.map +0 -1
- package/dist/agents/codex-agent.js +0 -124
- package/dist/agents/codex-agent.js.map +0 -1
- package/dist/agents/cursor-agent.d.ts +0 -14
- package/dist/agents/cursor-agent.d.ts.map +0 -1
- package/dist/agents/cursor-agent.js +0 -49
- package/dist/agents/cursor-agent.js.map +0 -1
- package/dist/agents/implementation-bridge.d.ts +0 -30
- package/dist/agents/implementation-bridge.d.ts.map +0 -1
- package/dist/agents/implementation-bridge.js +0 -256
- package/dist/agents/implementation-bridge.js.map +0 -1
- package/dist/agents/progress.d.ts +0 -62
- package/dist/agents/progress.d.ts.map +0 -1
- package/dist/agents/progress.js +0 -155
- package/dist/agents/progress.js.map +0 -1
- package/dist/agents/prompt-composer.d.ts +0 -30
- package/dist/agents/prompt-composer.d.ts.map +0 -1
- package/dist/agents/prompt-composer.js +0 -81
- package/dist/agents/prompt-composer.js.map +0 -1
- package/dist/agents/types.d.ts +0 -25
- package/dist/agents/types.d.ts.map +0 -1
- package/dist/agents/types.js +0 -8
- package/dist/agents/types.js.map +0 -1
- package/dist/utils/error-context.d.ts +0 -23
- package/dist/utils/error-context.d.ts.map +0 -1
- package/dist/utils/error-context.js +0 -94
- package/dist/utils/error-context.js.map +0 -1
package/README.md
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
[](https://github.com/TechArc-io/OpenPlanr/blob/main/LICENSE)
|
|
5
5
|
[](https://nodejs.org)
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**AI-powered planning CLI for developers.** Capture ideas, plan sprints, generate tasks, estimate effort, and sync with GitHub — all from your terminal.
|
|
8
8
|
|
|
9
|
-
Planr
|
|
9
|
+
Planr replaces heavyweight project management tools with a fast, file-based workflow. Artifacts live in your repo as markdown, version-controlled alongside your code. AI generates structured plans and teaches your coding agent (Cursor, Claude Code, Codex) how to follow them.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -14,9 +14,14 @@ Planr brings structured agile planning to AI coding workflows. Create planning a
|
|
|
14
14
|
|
|
15
15
|
AI coding assistants are powerful but lack structured planning. Without a clear plan, they generate code that drifts from requirements. Planr solves this by:
|
|
16
16
|
|
|
17
|
-
1. **
|
|
18
|
-
2. **
|
|
19
|
-
3. **
|
|
17
|
+
1. **Capturing ideas instantly** — `planr backlog add` captures work items without breaking your flow
|
|
18
|
+
2. **Structuring your planning** — epics, features, stories, and tasks in markdown
|
|
19
|
+
3. **Sprint planning** — time-boxed iterations with velocity tracking and AI task selection
|
|
20
|
+
4. **Reusable patterns** — task templates for common workflows (REST endpoints, React components, etc.)
|
|
21
|
+
5. **AI-powered estimation** — story points, effort hours, and complexity analysis
|
|
22
|
+
6. **Generating AI rules** — rule files that give your AI assistant context about the plan
|
|
23
|
+
7. **GitHub integration** — push artifacts to issues, bi-directional sync, export reports
|
|
24
|
+
8. **Keeping everything in your repo** — artifacts live alongside your code, version-controlled
|
|
20
25
|
|
|
21
26
|
## Quick Start
|
|
22
27
|
|
|
@@ -28,13 +33,21 @@ npm install -g openplanr
|
|
|
28
33
|
cd my-project
|
|
29
34
|
planr init
|
|
30
35
|
|
|
31
|
-
#
|
|
32
|
-
planr
|
|
36
|
+
# Capture an idea
|
|
37
|
+
planr backlog add "add user profiles" --priority high --tag feature
|
|
33
38
|
|
|
34
|
-
#
|
|
39
|
+
# Or jump straight into planning
|
|
40
|
+
planr epic create
|
|
35
41
|
planr feature create --epic EPIC-001
|
|
36
42
|
planr story create --feature FEAT-001
|
|
37
|
-
planr task create --
|
|
43
|
+
planr task create --feature FEAT-001
|
|
44
|
+
|
|
45
|
+
# Generate tasks from a template
|
|
46
|
+
planr template use rest-endpoint --title "User Profile API"
|
|
47
|
+
|
|
48
|
+
# Start a sprint
|
|
49
|
+
planr sprint create --name "Sprint 1" --duration 2w
|
|
50
|
+
planr sprint add TASK-001 QT-001
|
|
38
51
|
|
|
39
52
|
# Generate AI rules for your editor
|
|
40
53
|
planr rules generate
|
|
@@ -42,19 +55,27 @@ planr rules generate
|
|
|
42
55
|
|
|
43
56
|
## How It Works
|
|
44
57
|
|
|
45
|
-
```
|
|
58
|
+
```text
|
|
59
|
+
Backlog → Agile Hierarchy → Sprint → Implementation
|
|
60
|
+
|
|
61
|
+
planr backlog add "..." # Capture ideas as they come
|
|
62
|
+
planr backlog prioritize # AI sorts by impact/effort
|
|
63
|
+
planr backlog promote BL-001 --quick # Move to task when ready
|
|
64
|
+
|
|
46
65
|
planr init
|
|
47
|
-
└── planr epic create
|
|
48
|
-
└── planr feature create --epic EPIC-001
|
|
49
|
-
└── planr story create --feature FEAT-001
|
|
50
|
-
└── planr task create --
|
|
66
|
+
└── planr epic create # Define the big picture
|
|
67
|
+
└── planr feature create --epic EPIC-001
|
|
68
|
+
└── planr story create --feature FEAT-001
|
|
69
|
+
└── planr task create --feature FEAT-001
|
|
51
70
|
|
|
52
|
-
planr
|
|
53
|
-
|
|
71
|
+
planr sprint create --name "Sprint 1" --duration 2w
|
|
72
|
+
planr sprint add TASK-001 QT-001 # Assign tasks (or --auto for AI)
|
|
73
|
+
planr sprint status # Track progress
|
|
54
74
|
|
|
55
|
-
|
|
75
|
+
planr rules generate # Generate .cursor/rules, CLAUDE.md, AGENTS.md
|
|
76
|
+
```
|
|
56
77
|
|
|
57
|
-
Or use `planr plan` to run the full flow in a single command:
|
|
78
|
+
Or use `planr plan` to run the full agile flow in a single command:
|
|
58
79
|
|
|
59
80
|
```bash
|
|
60
81
|
planr plan # start from scratch
|
|
@@ -63,11 +84,11 @@ planr plan --epic EPIC-001 # cascade from an existing epic
|
|
|
63
84
|
|
|
64
85
|
## Supported AI Targets
|
|
65
86
|
|
|
66
|
-
| Target | Generated File(s)
|
|
67
|
-
|
|
68
|
-
| Cursor | `.cursor/rules/*.mdc` | Cursor IDE
|
|
69
|
-
| Claude | `CLAUDE.md`
|
|
70
|
-
| Codex
|
|
87
|
+
| Target | Generated File(s) | Used By |
|
|
88
|
+
| ------ | --------------------- | ---------------- |
|
|
89
|
+
| Cursor | `.cursor/rules/*.mdc` | Cursor IDE |
|
|
90
|
+
| Claude | `CLAUDE.md` | Claude Code CLI |
|
|
91
|
+
| Codex | `AGENTS.md` | OpenAI Codex CLI |
|
|
71
92
|
|
|
72
93
|
```bash
|
|
73
94
|
planr rules generate # all targets
|
|
@@ -77,33 +98,81 @@ planr rules generate --dry-run # preview
|
|
|
77
98
|
|
|
78
99
|
## Commands
|
|
79
100
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
| `planr
|
|
85
|
-
| `planr
|
|
86
|
-
| `planr
|
|
87
|
-
| `planr
|
|
88
|
-
| `planr
|
|
89
|
-
| `planr
|
|
90
|
-
| `planr
|
|
91
|
-
| `planr
|
|
92
|
-
| `planr
|
|
93
|
-
| `planr
|
|
94
|
-
| `planr
|
|
95
|
-
| `planr
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
| `planr
|
|
102
|
-
| `planr
|
|
103
|
-
| `planr
|
|
104
|
-
| `planr
|
|
105
|
-
| `planr
|
|
106
|
-
| `planr
|
|
101
|
+
### Backlog & Sprint
|
|
102
|
+
|
|
103
|
+
| Command | Description |
|
|
104
|
+
| ----------------------------------------------------- | ------------------------------------------- |
|
|
105
|
+
| `planr backlog add "desc" --priority high --tag bug` | Capture a backlog item |
|
|
106
|
+
| `planr backlog list --tag bug --priority high` | List/filter backlog items |
|
|
107
|
+
| `planr backlog prioritize` | AI sorts open items by impact and effort |
|
|
108
|
+
| `planr backlog promote BL-001 --quick` | Promote to quick task or story |
|
|
109
|
+
| `planr backlog close BL-001` | Close/archive an item |
|
|
110
|
+
| `planr sprint create --name "Sprint 1" --duration 2w` | Create a time-boxed sprint |
|
|
111
|
+
| `planr sprint add TASK-001 QT-001` | Assign tasks to active sprint |
|
|
112
|
+
| `planr sprint add --auto` | AI selects tasks by priority and velocity |
|
|
113
|
+
| `planr sprint status` | Progress dashboard with completion % |
|
|
114
|
+
| `planr sprint close` | Archive sprint, carry over incomplete tasks |
|
|
115
|
+
| `planr sprint list` | List all sprints |
|
|
116
|
+
| `planr sprint history` | Velocity chart across past sprints |
|
|
117
|
+
|
|
118
|
+
### Agile Hierarchy
|
|
119
|
+
|
|
120
|
+
| Command | Description |
|
|
121
|
+
| ----------------------------------- | ----------------------------------------------------- |
|
|
122
|
+
| `planr epic create` | Create a new epic (supports `--file <path>` for PRDs) |
|
|
123
|
+
| `planr epic list` | List all epics |
|
|
124
|
+
| `planr feature create --epic <ID>` | Create features from an epic |
|
|
125
|
+
| `planr feature list` | List all features |
|
|
126
|
+
| `planr story create --feature <ID>` | Create user stories from a feature |
|
|
127
|
+
| `planr story create --epic <ID>` | Batch-generate stories for all features under an epic |
|
|
128
|
+
| `planr story list` | List all user stories |
|
|
129
|
+
| `planr task create --story <ID>` | AI task list from one story |
|
|
130
|
+
| `planr task create --feature <ID>` | AI task list from all stories under a feature |
|
|
131
|
+
| `planr task list` | List all task lists |
|
|
132
|
+
### Quick Tasks & Templates
|
|
133
|
+
|
|
134
|
+
| Command | Description |
|
|
135
|
+
| ----------------------------------------------------- | ---------------------------------- |
|
|
136
|
+
| `planr quick create "description"` | AI-generated standalone task list |
|
|
137
|
+
| `planr quick create --file spec.md` | Task list from a PRD or spec file |
|
|
138
|
+
| `planr quick promote <ID> --story US-001` | Move into agile hierarchy |
|
|
139
|
+
| `planr template list` | List built-in and custom templates |
|
|
140
|
+
| `planr template use rest-endpoint --title "User API"` | Generate tasks from a template |
|
|
141
|
+
| `planr template save TASK-001 --name my-pattern` | Save existing tasks as template |
|
|
142
|
+
| `planr template show rest-endpoint` | Preview template contents |
|
|
143
|
+
|
|
144
|
+
### Planning Tools
|
|
145
|
+
|
|
146
|
+
| Command | Description |
|
|
147
|
+
| ---------------------- | --------------------------------------------------------- |
|
|
148
|
+
| `planr plan` | Full automated flow: Epic -> Features -> Stories -> Tasks |
|
|
149
|
+
| `planr estimate <ID>` | AI effort estimation (story points, hours, complexity) |
|
|
150
|
+
| `planr refine <ID>` | AI-powered review and improvements |
|
|
151
|
+
| `planr search <query>` | Full-text search across all artifacts |
|
|
152
|
+
| `planr sync` | Validate and fix cross-references |
|
|
153
|
+
| `planr status` | Planning progress with tree view and metrics |
|
|
154
|
+
|
|
155
|
+
### GitHub & Export
|
|
156
|
+
|
|
157
|
+
| Command | Description |
|
|
158
|
+
| ---------------------------- | ------------------------------------------------ |
|
|
159
|
+
| `planr github push [ID]` | Push artifacts to GitHub Issues |
|
|
160
|
+
| `planr github sync` | Bi-directional status sync with GitHub |
|
|
161
|
+
| `planr github status` | Show sync status of linked artifacts |
|
|
162
|
+
| `planr export --format html` | Export planning report (markdown, JSON, or HTML) |
|
|
163
|
+
|
|
164
|
+
### Setup & config commands
|
|
165
|
+
|
|
166
|
+
| Command | Description |
|
|
167
|
+
| ----------------------------------- | ------------------------------------------------------ |
|
|
168
|
+
| `planr init` | Initialize project with config and directory structure |
|
|
169
|
+
| `planr config show` | Display current configuration |
|
|
170
|
+
| `planr config set-provider` | Set AI provider (anthropic, openai, ollama) |
|
|
171
|
+
| `planr config set-key` | Store API key securely |
|
|
172
|
+
| `planr config set-model` | Set AI model |
|
|
173
|
+
| `planr config set-agent` | Set default coding agent |
|
|
174
|
+
| `planr rules generate` | Generate AI agent rule files |
|
|
175
|
+
| `planr checklist show/toggle/reset` | Agile development checklist |
|
|
107
176
|
|
|
108
177
|
See [docs/CLI.md](docs/CLI.md) for the full command reference with all options and flags.
|
|
109
178
|
|
|
@@ -111,7 +180,7 @@ See [docs/CLI.md](docs/CLI.md) for the full command reference with all options a
|
|
|
111
180
|
|
|
112
181
|
After running `planr init` and creating artifacts:
|
|
113
182
|
|
|
114
|
-
```
|
|
183
|
+
```text
|
|
115
184
|
my-project/
|
|
116
185
|
├── planr.config.json
|
|
117
186
|
├── docs/agile/
|
|
@@ -119,6 +188,10 @@ my-project/
|
|
|
119
188
|
│ ├── features/ # FEAT-001-*.md
|
|
120
189
|
│ ├── stories/ # US-001-*.md + US-001-gherkin.feature
|
|
121
190
|
│ ├── tasks/ # TASK-001-*.md
|
|
191
|
+
│ ├── quick/ # QT-001-*.md
|
|
192
|
+
│ ├── backlog/ # BL-001-*.md
|
|
193
|
+
│ ├── sprints/ # SPRINT-001-*.md
|
|
194
|
+
│ ├── templates/ # Custom task templates
|
|
122
195
|
│ ├── adrs/ # Architecture Decision Records
|
|
123
196
|
│ ├── checklists/ # Agile development checklist
|
|
124
197
|
│ └── diagrams/ # UML, C4, sequence diagrams
|
|
@@ -145,11 +218,28 @@ my-project/
|
|
|
145
218
|
"epic": "EPIC",
|
|
146
219
|
"feature": "FEAT",
|
|
147
220
|
"story": "US",
|
|
148
|
-
"task": "TASK"
|
|
221
|
+
"task": "TASK",
|
|
222
|
+
"quick": "QT",
|
|
223
|
+
"backlog": "BL",
|
|
224
|
+
"sprint": "SPRINT"
|
|
149
225
|
}
|
|
150
226
|
}
|
|
151
227
|
```
|
|
152
228
|
|
|
229
|
+
## Built-in Task Templates
|
|
230
|
+
|
|
231
|
+
| Template | Description |
|
|
232
|
+
| -------------------- | ------------------------------------------------------- |
|
|
233
|
+
| `rest-endpoint` | CRUD endpoint with validation, auth, tests, docs |
|
|
234
|
+
| `react-component` | Component, stories, tests, types |
|
|
235
|
+
| `database-migration` | Schema change, migration, rollback, seed data |
|
|
236
|
+
| `api-integration` | External API client, retry logic, error handling, tests |
|
|
237
|
+
| `auth-flow` | Authentication flow with login, signup, password reset |
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
planr template use rest-endpoint --title "User Profile API"
|
|
241
|
+
```
|
|
242
|
+
|
|
153
243
|
## Development
|
|
154
244
|
|
|
155
245
|
```bash
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
export { createAgent } from './agent-factory.js';
|
|
2
|
-
export { executeFollowUp, executeImplementation } from './implementation-bridge.js';
|
|
3
|
-
export { createProgressSpinner, describeActivity } from './progress.js';
|
|
4
|
-
export { composeImplementationPrompt } from './prompt-composer.js';
|
|
5
1
|
export { findSubtasks, getNextPending, parseTaskMarkdown } from './task-parser.js';
|
|
6
|
-
export
|
|
2
|
+
export { which } from './utils.js';
|
|
7
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/agents/index.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
export { createAgent } from './agent-factory.js';
|
|
2
|
-
export { executeFollowUp, executeImplementation } from './implementation-bridge.js';
|
|
3
|
-
export { createProgressSpinner, describeActivity } from './progress.js';
|
|
4
|
-
export { composeImplementationPrompt } from './prompt-composer.js';
|
|
5
1
|
export { findSubtasks, getNextPending, parseTaskMarkdown } from './task-parser.js';
|
|
2
|
+
export { which } from './utils.js';
|
|
6
3
|
//# sourceMappingURL=index.js.map
|
package/dist/agents/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -16,7 +16,10 @@ export interface ParsedSubtask {
|
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Parse a task list markdown file into structured subtasks.
|
|
19
|
-
* Expected format:
|
|
19
|
+
* Expected format:
|
|
20
|
+
* `- [x] **1.0** Task title` (bold group IDs)
|
|
21
|
+
* `- [x] 1.0 Task title` (plain group IDs)
|
|
22
|
+
* ` - [ ] 1.1 Subtask title` (indented subtasks)
|
|
20
23
|
*/
|
|
21
24
|
export declare function parseTaskMarkdown(content: string): ParsedSubtask[];
|
|
22
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-parser.d.ts","sourceRoot":"","sources":["../../src/agents/task-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED
|
|
1
|
+
{"version":3,"file":"task-parser.d.ts","sourceRoot":"","sources":["../../src/agents/task-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CA+BlE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAgBnF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,GAAG,IAAI,CAE3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAStF"}
|
|
@@ -9,15 +9,18 @@
|
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
11
|
* Parse a task list markdown file into structured subtasks.
|
|
12
|
-
* Expected format:
|
|
12
|
+
* Expected format:
|
|
13
|
+
* `- [x] **1.0** Task title` (bold group IDs)
|
|
14
|
+
* `- [x] 1.0 Task title` (plain group IDs)
|
|
15
|
+
* ` - [ ] 1.1 Subtask title` (indented subtasks)
|
|
13
16
|
*/
|
|
14
17
|
export function parseTaskMarkdown(content) {
|
|
15
18
|
const tasks = [];
|
|
16
19
|
const lines = content.split('\n');
|
|
17
20
|
let currentGroupId = null;
|
|
18
21
|
for (const line of lines) {
|
|
19
|
-
// Match: - [x] 1.0 Task title OR - [ ] 1.1 Subtask title
|
|
20
|
-
const match = line.match(/^(\s*)- \[(x| )\]\s
|
|
22
|
+
// Match: - [x] **1.0** Task title OR - [x] 1.0 Task title OR - [ ] 1.1 Subtask title
|
|
23
|
+
const match = line.match(/^(\s*)- \[(x| )\]\s+\*{0,2}(\d+\.\d+)\*{0,2}\s+(.+)$/);
|
|
21
24
|
if (!match)
|
|
22
25
|
continue;
|
|
23
26
|
const indent = match[1].length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-parser.js","sourceRoot":"","sources":["../../src/agents/task-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH
|
|
1
|
+
{"version":3,"file":"task-parser.js","sourceRoot":"","sources":["../../src/agents/task-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/utils.d.ts
CHANGED
|
@@ -6,8 +6,4 @@
|
|
|
6
6
|
* Returns the path to the command or null.
|
|
7
7
|
*/
|
|
8
8
|
export declare function which(command: string): Promise<string | null>;
|
|
9
|
-
export declare const MAX_RETRIES = 2;
|
|
10
|
-
export declare const RETRY_DELAY_MS = 3000;
|
|
11
|
-
export declare function isRetryableError(stderr: string): boolean;
|
|
12
|
-
export declare function sleep(ms: number): Promise<void>;
|
|
13
9
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/agents/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/agents/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;GAGG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASnE"}
|
package/dist/agents/utils.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { execFile } from 'node:child_process';
|
|
5
5
|
import { promisify } from 'node:util';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
6
7
|
const execFileAsync = promisify(execFile);
|
|
7
8
|
/**
|
|
8
9
|
* Check if a command exists on the system PATH.
|
|
@@ -14,31 +15,9 @@ export async function which(command) {
|
|
|
14
15
|
const { stdout } = await execFileAsync(cmd, [command]);
|
|
15
16
|
return stdout.trim() || null;
|
|
16
17
|
}
|
|
17
|
-
catch {
|
|
18
|
+
catch (err) {
|
|
19
|
+
logger.debug('Command lookup failed', err);
|
|
18
20
|
return null;
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
// Retry helpers (shared across agent adapters)
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
export const MAX_RETRIES = 2;
|
|
25
|
-
export const RETRY_DELAY_MS = 3000;
|
|
26
|
-
/** Patterns in stderr that indicate a transient/retryable API error */
|
|
27
|
-
const RETRYABLE_PATTERNS = [
|
|
28
|
-
'tool use concurrency',
|
|
29
|
-
'overloaded',
|
|
30
|
-
'429',
|
|
31
|
-
'500',
|
|
32
|
-
'503',
|
|
33
|
-
'rate limit',
|
|
34
|
-
'econnreset',
|
|
35
|
-
'socket hang up',
|
|
36
|
-
];
|
|
37
|
-
export function isRetryableError(stderr) {
|
|
38
|
-
const lower = stderr.toLowerCase();
|
|
39
|
-
return RETRYABLE_PATTERNS.some((p) => lower.includes(p));
|
|
40
|
-
}
|
|
41
|
-
export function sleep(ms) {
|
|
42
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
43
|
-
}
|
|
44
23
|
//# sourceMappingURL=utils.js.map
|
package/dist/agents/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/agents/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/agents/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAe;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,16 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Orchestrates codebase awareness into a single context string.
|
|
3
3
|
*
|
|
4
|
-
* Combines tech stack detection, folder tree,
|
|
5
|
-
* into a formatted block for
|
|
6
|
-
*
|
|
4
|
+
* Combines tech stack detection, folder tree, architecture files,
|
|
5
|
+
* and keyword-matched file snippets into a formatted block for
|
|
6
|
+
* inclusion in AI prompts. Respects a token budget to avoid overflow.
|
|
7
|
+
*
|
|
8
|
+
* Architecture files are always included — they define the patterns
|
|
9
|
+
* the AI must follow when generating implementation tasks.
|
|
7
10
|
*/
|
|
11
|
+
import { type PatternRule } from './pattern-rules.js';
|
|
8
12
|
import { type TechStack } from './stack-detector.js';
|
|
9
13
|
export interface CodebaseContext {
|
|
10
14
|
techStack: TechStack | null;
|
|
11
15
|
folderTree: string;
|
|
16
|
+
/** Compact listing of all source files in key directories. */
|
|
17
|
+
sourceInventory: string;
|
|
18
|
+
/** Core pattern files that define how the project is structured. */
|
|
19
|
+
architectureFiles: Map<string, string>;
|
|
20
|
+
/** Keyword-matched files relevant to the specific task. */
|
|
12
21
|
relatedFiles: Map<string, string>;
|
|
22
|
+
/** User-defined rules from `.planr/rules.md`. */
|
|
23
|
+
projectRules: string | null;
|
|
24
|
+
/** Auto-detected architectural patterns. */
|
|
25
|
+
patternRules: PatternRule[];
|
|
13
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Discover architecture files that exist in the project.
|
|
29
|
+
* Tries each candidate path per pattern — first match wins.
|
|
30
|
+
* Returns a map of relative paths → labeled, truncated content.
|
|
31
|
+
*/
|
|
32
|
+
export declare function findArchitectureFiles(projectDir: string): Promise<Map<string, string>>;
|
|
14
33
|
/**
|
|
15
34
|
* Build a complete codebase context for AI prompt enrichment.
|
|
16
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../../src/ai/codebase/context-builder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../../src/ai/codebase/context-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKvF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,2DAA2D;IAC3D,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,iDAAiD;IACjD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4CAA4C;IAC5C,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AA2DD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAe5F;AA6ED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAM,EAAO,GACtB,OAAO,CAAC,eAAe,CAAC,CA6B1B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA0ElE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BzD"}
|