openplanr 1.0.0 → 1.1.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.
Files changed (74) hide show
  1. package/README.md +9 -7
  2. package/dist/ai/validation/index.d.ts +0 -1
  3. package/dist/ai/validation/index.d.ts.map +1 -1
  4. package/dist/ai/validation/index.js +0 -1
  5. package/dist/ai/validation/index.js.map +1 -1
  6. package/dist/ai/validation/task-validator.d.ts +3 -3
  7. package/dist/ai/validation/task-validator.d.ts.map +1 -1
  8. package/dist/ai/validation/task-validator.js +3 -11
  9. package/dist/ai/validation/task-validator.js.map +1 -1
  10. package/dist/cli/commands/checklist.d.ts.map +1 -1
  11. package/dist/cli/commands/checklist.js +34 -17
  12. package/dist/cli/commands/checklist.js.map +1 -1
  13. package/dist/cli/commands/epic.d.ts.map +1 -1
  14. package/dist/cli/commands/epic.js +3 -0
  15. package/dist/cli/commands/epic.js.map +1 -1
  16. package/dist/cli/commands/feature.d.ts.map +1 -1
  17. package/dist/cli/commands/feature.js +3 -0
  18. package/dist/cli/commands/feature.js.map +1 -1
  19. package/dist/cli/commands/init.d.ts.map +1 -1
  20. package/dist/cli/commands/init.js +21 -2
  21. package/dist/cli/commands/init.js.map +1 -1
  22. package/dist/cli/commands/plan.d.ts.map +1 -1
  23. package/dist/cli/commands/plan.js +123 -0
  24. package/dist/cli/commands/plan.js.map +1 -1
  25. package/dist/cli/commands/story.d.ts.map +1 -1
  26. package/dist/cli/commands/story.js +3 -0
  27. package/dist/cli/commands/story.js.map +1 -1
  28. package/dist/cli/commands/task.d.ts.map +1 -1
  29. package/dist/cli/commands/task.js +4 -0
  30. package/dist/cli/commands/task.js.map +1 -1
  31. package/dist/cli/helpers/task-creation.d.ts.map +1 -1
  32. package/dist/cli/helpers/task-creation.js +2 -3
  33. package/dist/cli/helpers/task-creation.js.map +1 -1
  34. package/dist/cli/index.js +13 -2
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/generators/cursor-generator.js +6 -6
  37. package/dist/generators/cursor-generator.js.map +1 -1
  38. package/dist/models/schema.js +1 -1
  39. package/dist/models/schema.js.map +1 -1
  40. package/dist/services/checklist-service.d.ts +5 -0
  41. package/dist/services/checklist-service.d.ts.map +1 -1
  42. package/dist/services/checklist-service.js +16 -0
  43. package/dist/services/checklist-service.js.map +1 -1
  44. package/dist/services/config-service.d.ts +3 -0
  45. package/dist/services/config-service.d.ts.map +1 -1
  46. package/dist/services/config-service.js +8 -2
  47. package/dist/services/config-service.js.map +1 -1
  48. package/dist/templates/adrs/adr-general.md.hbs +9 -0
  49. package/dist/templates/backlog/backlog-item.md.hbs +1 -0
  50. package/dist/templates/checklists/agile-checklist.md.hbs +24 -24
  51. package/dist/templates/epics/epic.md.hbs +3 -0
  52. package/dist/templates/export/planning-report.md.hbs +11 -7
  53. package/dist/templates/features/feature.md.hbs +2 -0
  54. package/dist/templates/guides/estimation.md.hbs +14 -14
  55. package/dist/templates/quick/quick-task.md.hbs +1 -0
  56. package/dist/templates/rules/claude/CLAUDE.md.hbs +11 -0
  57. package/dist/templates/rules/codex/AGENTS.md.hbs +9 -0
  58. package/dist/templates/rules/cursor/{2001-agile-create-epic.mdc.hbs → create-epic.mdc.hbs} +6 -0
  59. package/dist/templates/rules/cursor/{2002-agile-create-features.mdc.hbs → create-features.mdc.hbs} +6 -0
  60. package/dist/templates/rules/cursor/{2100-create-task-list.mdc.hbs → create-task-list.mdc.hbs} +7 -0
  61. package/dist/templates/rules/cursor/{2003-agile-create-user-story.mdc.hbs → create-user-story.mdc.hbs} +6 -0
  62. package/dist/templates/rules/cursor/{2101-implement-task-list.mdc.hbs → implement-task-list.mdc.hbs} +7 -0
  63. package/dist/templates/sprints/sprint.md.hbs +3 -0
  64. package/dist/templates/tasks/task-list.md.hbs +3 -0
  65. package/dist/utils/constants.d.ts +2 -2
  66. package/dist/utils/constants.d.ts.map +1 -1
  67. package/dist/utils/constants.js +2 -2
  68. package/dist/utils/constants.js.map +1 -1
  69. package/package.json +4 -4
  70. package/dist/ai/validation/dependency-chains.d.ts +0 -21
  71. package/dist/ai/validation/dependency-chains.d.ts.map +0 -1
  72. package/dist/ai/validation/dependency-chains.js +0 -114
  73. package/dist/ai/validation/dependency-chains.js.map +0 -1
  74. /package/dist/templates/rules/cursor/{2000-agile-checklist.mdc.hbs → agile-checklist.mdc.hbs} +0 -0
@@ -9,6 +9,7 @@ export async function createChecklist(projectDir, config) {
9
9
  const filePath = getChecklistPath(projectDir, config);
10
10
  const content = await renderTemplate('checklists/agile-checklist.md.hbs', {
11
11
  projectName: config.projectName,
12
+ agilePath: config.outputPaths.agile,
12
13
  date: new Date().toISOString().split('T')[0],
13
14
  }, config.templateOverrides);
14
15
  await writeFile(filePath, content);
@@ -58,6 +59,21 @@ export function toggleChecklistItems(content, toggleIndices, items) {
58
59
  }
59
60
  return lines.join('\n');
60
61
  }
62
+ /**
63
+ * Mark a checklist item as done by its index number.
64
+ * No-op if the checklist doesn't exist or the item is already checked.
65
+ */
66
+ export async function checkItem(projectDir, config, itemIndex) {
67
+ const content = await readChecklist(projectDir, config);
68
+ if (!content)
69
+ return;
70
+ const items = parseChecklistItems(content);
71
+ const item = items.find((i) => i.index === itemIndex);
72
+ if (!item || item.done)
73
+ return;
74
+ const updated = toggleChecklistItems(content, new Set([itemIndex]), items);
75
+ await writeFile(getChecklistPath(projectDir, config), updated);
76
+ }
61
77
  /**
62
78
  * Get checklist completion progress.
63
79
  */
@@ -1 +1 @@
1
- {"version":3,"file":"checklist-service.js","sourceRoot":"","sources":["../../src/services/checklist-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checklist-service.js","sourceRoot":"","sources":["../../src/services/checklist-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import type { OpenPlanrConfig } from '../models/types.js';
2
+ export declare class ConfigNotFoundError extends Error {
3
+ constructor(projectDir: string);
4
+ }
2
5
  export declare function loadConfig(projectDir: string): Promise<OpenPlanrConfig>;
3
6
  export declare function saveConfig(projectDir: string, config: OpenPlanrConfig): Promise<void>;
4
7
  export declare function createDefaultConfig(projectName: string): OpenPlanrConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config-service.d.ts","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAS7E;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3F;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAqBxE"}
1
+ {"version":3,"file":"config-service.d.ts","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,UAAU,EAAE,MAAM;CAI/B;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAS7E;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3F;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAqBxE"}
@@ -2,11 +2,17 @@ import path from 'node:path';
2
2
  import { configSchema } from '../models/schema.js';
3
3
  import { CONFIG_FILENAME } from '../utils/constants.js';
4
4
  import { fileExists, readFile, writeFile } from '../utils/fs.js';
5
+ export class ConfigNotFoundError extends Error {
6
+ constructor(projectDir) {
7
+ super(`No ${CONFIG_FILENAME} found in ${projectDir}.`);
8
+ this.name = 'ConfigNotFoundError';
9
+ }
10
+ }
5
11
  export async function loadConfig(projectDir) {
6
12
  const configPath = path.join(projectDir, CONFIG_FILENAME);
7
13
  const exists = await fileExists(configPath);
8
14
  if (!exists) {
9
- throw new Error(`No ${CONFIG_FILENAME} found in ${projectDir}. Run "planr init" first.`);
15
+ throw new ConfigNotFoundError(projectDir);
10
16
  }
11
17
  const raw = await readFile(configPath);
12
18
  const parsed = JSON.parse(raw);
@@ -21,7 +27,7 @@ export function createDefaultConfig(projectName) {
21
27
  projectName,
22
28
  targets: ['cursor', 'claude', 'codex'],
23
29
  outputPaths: {
24
- agile: 'docs/agile',
30
+ agile: '.planr',
25
31
  cursorRules: '.cursor/rules',
26
32
  claudeConfig: '.',
27
33
  codexConfig: '.',
@@ -1 +1 @@
1
- {"version":3,"file":"config-service.js","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,MAAM,eAAe,aAAa,UAAU,2BAA2B,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB,EAAE,MAAuB;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO;QACL,WAAW;QACX,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;QACtC,WAAW,EAAE;YACX,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,eAAe;YAC5B,YAAY,EAAE,GAAG;YACjB,WAAW,EAAE,GAAG;SACjB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,QAAQ;SACjB;QACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config-service.js","sourceRoot":"","sources":["../../src/services/config-service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,UAAkB;QAC5B,KAAK,CAAC,MAAM,eAAe,aAAa,UAAU,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB,EAAE,MAAuB;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO;QACL,WAAW;QACX,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;QACtC,WAAW,EAAE;YACX,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,eAAe;YAC5B,YAAY,EAAE,GAAG;YACjB,WAAW,EAAE,GAAG;SACjB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,QAAQ;SACjB;QACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC;AACJ,CAAC"}
@@ -11,36 +11,45 @@ status: "proposed"
11
11
  {{context}}
12
12
 
13
13
  ## Decision Drivers
14
+
14
15
  {{#each decisionDrivers}}
15
16
  - {{this}}
16
17
  {{/each}}
17
18
 
18
19
  ## Considered Options
20
+
19
21
  {{#each options}}
20
22
  ### Option {{@index}}: {{this.name}}
23
+
21
24
  {{this.description}}
22
25
 
23
26
  **Pros:**
27
+
24
28
  {{#each this.pros}}
25
29
  - {{this}}
26
30
  {{/each}}
27
31
 
28
32
  **Cons:**
33
+
29
34
  {{#each this.cons}}
30
35
  - {{this}}
31
36
  {{/each}}
32
37
  {{/each}}
33
38
 
34
39
  ## Decision
40
+
35
41
  {{decision}}
36
42
 
37
43
  ## Consequences
44
+
38
45
  ### Positive
46
+
39
47
  {{#each positiveConsequences}}
40
48
  - {{this}}
41
49
  {{/each}}
42
50
 
43
51
  ### Negative
52
+
44
53
  {{#each negativeConsequences}}
45
54
  - {{this}}
46
55
  {{/each}}
@@ -15,6 +15,7 @@ updated: "{{date}}"
15
15
 
16
16
  {{#if tags}}
17
17
  ## Tags
18
+
18
19
  {{#each tags}}
19
20
  - {{this}}
20
21
  {{/each}}
@@ -4,42 +4,42 @@
4
4
 
5
5
  ## Phase 1: Requirements Analysis
6
6
 
7
- | # | Activity | Command | Status |
8
- |---|----------|---------|--------|
9
- | 1 | Create Epic | `planr epic create` | [ ] |
10
- | 2 | Create Features from Epic | `planr feature create --epic <ID>` | [ ] |
11
- | 3 | Create User Stories from Features | `planr story create --feature <ID>` | [ ] |
7
+ | # | Activity | Command | Status |
8
+ | --- | --------------------------------- | ------------------------------------ | ------ |
9
+ | 1 | Create Epic | `planr epic create` | [ ] |
10
+ | 2 | Create Features from Epic | `planr feature create --epic <ID>` | [ ] |
11
+ | 3 | Create User Stories from Features | `planr story create --feature <ID>` | [ ] |
12
12
 
13
13
  ## Phase 2: Technical Design
14
14
 
15
- | # | Activity | Artifact | Status |
16
- |---|----------|----------|--------|
17
- | 4 | UML Sequence Diagrams | `docs/agile/diagrams/` | [ ] |
18
- | 5 | C4 Architecture Diagrams | `docs/agile/diagrams/` | [ ] |
15
+ | # | Activity | Artifact | Status |
16
+ | --- | ------------------------ | --------------------------- | ------ |
17
+ | 4 | UML Sequence Diagrams | `{{agilePath}}/diagrams/` | [ ] |
18
+ | 5 | C4 Architecture Diagrams | `{{agilePath}}/diagrams/` | [ ] |
19
19
 
20
20
  ## Phase 3: Architecture Decision Records
21
21
 
22
- | # | Activity | Command | Status |
23
- |---|----------|---------|--------|
24
- | 6 | Functional Requirements ADR (CLI) | `docs/agile/adrs/` | [ ] |
25
- | 7 | Functional Requirements ADR (REST) | `docs/agile/adrs/` | [ ] |
26
- | 8 | Acceptance Testing Strategy ADR | `docs/agile/adrs/` | [ ] |
27
- | 9 | Non-Functional Requirements ADR | `docs/agile/adrs/` | [ ] |
22
+ | # | Activity | Command | Status |
23
+ | --- | ---------------------------------- | ----------------------- | ------ |
24
+ | 6 | Functional Requirements ADR (CLI) | `{{agilePath}}/adrs/` | [ ] |
25
+ | 7 | Functional Requirements ADR (REST) | `{{agilePath}}/adrs/` | [ ] |
26
+ | 8 | Acceptance Testing Strategy ADR | `{{agilePath}}/adrs/` | [ ] |
27
+ | 9 | Non-Functional Requirements ADR | `{{agilePath}}/adrs/` | [ ] |
28
28
 
29
29
  ## Phase 4: Solution Planning
30
30
 
31
- | # | Activity | Command | Status |
32
- |---|----------|---------|--------|
33
- | 10 | Create Task Lists | `planr task create --story <ID>` | [ ] |
34
- | 11 | Implement Tasks | Use coding agent with generated rules | [ ] |
35
- | 12 | Create Definition of Done | `docs/agile/checklists/` | [ ] |
31
+ | # | Activity | Command | Status |
32
+ | ---- | ------------------------- | -------------------------------------- | ------ |
33
+ | 10 | Create Task Lists | `planr task create --story <ID>` | [ ] |
34
+ | 11 | Implement Tasks | Use coding agent with generated rules | [ ] |
35
+ | 12 | Create Definition of Done | `{{agilePath}}/checklists/` | [ ] |
36
36
 
37
37
  ## Phase 5: Solution Review
38
38
 
39
- | # | Activity | Artifact | Status |
40
- |---|----------|----------|--------|
41
- | 13 | UML Class Diagrams | `docs/agile/diagrams/` | [ ] |
42
- | 14 | Review & Refactoring | Code review | [ ] |
39
+ | # | Activity | Artifact | Status |
40
+ | ---- | -------------------- | --------------------------- | ------ |
41
+ | 13 | UML Class Diagrams | `{{agilePath}}/diagrams/` | [ ] |
42
+ | 14 | Review & Refactoring | Code review | [ ] |
43
43
 
44
44
  ## Best Practices
45
45
 
@@ -23,6 +23,7 @@ project: "{{projectName}}"
23
23
  {{solutionOverview}}
24
24
 
25
25
  ## Success Criteria
26
+
26
27
  {{#if successCriteriaList}}
27
28
  {{#each successCriteriaList}}
28
29
  - {{this}}
@@ -32,6 +33,7 @@ project: "{{projectName}}"
32
33
  {{/if}}
33
34
 
34
35
  ## Key Features
36
+
35
37
  {{#each keyFeatures}}
36
38
  - {{this}}
37
39
  {{/each}}
@@ -43,6 +45,7 @@ project: "{{projectName}}"
43
45
  {{risks}}
44
46
 
45
47
  ## Features
48
+
46
49
  {{#if featureIds}}
47
50
  {{#each featureIds}}
48
51
  - [{{this.id}}](../features/{{this.filename}}.md)
@@ -6,13 +6,13 @@
6
6
 
7
7
  ## Summary
8
8
 
9
- | Type | Count |
10
- |------|-------|
11
- | Epics | {{counts.epics}} |
12
- | Features | {{counts.features}} |
13
- | Stories | {{counts.stories}} |
14
- | Tasks | {{counts.tasks}} |
15
- | Quick Tasks | {{counts.quick}} |
9
+ | Type | Count |
10
+ | ----------- | ------------------ |
11
+ | Epics | {{counts.epics}} |
12
+ | Features | {{counts.features}} |
13
+ | Stories | {{counts.stories}} |
14
+ | Tasks | {{counts.tasks}} |
15
+ | Quick Tasks | {{counts.quick}} |
16
16
 
17
17
  ---
18
18
 
@@ -74,6 +74,7 @@
74
74
  {{/each}}
75
75
  {{/if}}
76
76
  {{#if orphanFeatures.length}}
77
+
77
78
  ## Unlinked Features
78
79
 
79
80
  {{#each orphanFeatures}}
@@ -96,6 +97,7 @@
96
97
  {{/each}}
97
98
  {{/if}}
98
99
  {{#if orphanStories.length}}
100
+
99
101
  ## Unlinked Stories
100
102
 
101
103
  {{#each orphanStories}}
@@ -108,6 +110,7 @@
108
110
  {{/each}}
109
111
  {{/if}}
110
112
  {{#if orphanTasks.length}}
113
+
111
114
  ## Unlinked Tasks
112
115
 
113
116
  {{#each orphanTasks}}
@@ -120,6 +123,7 @@
120
123
  {{/each}}
121
124
  {{/if}}
122
125
  {{#if quickTasks.length}}
126
+
123
127
  ## Quick Tasks
124
128
 
125
129
  {{#each quickTasks}}
@@ -16,11 +16,13 @@ status: "planning"
16
16
  {{overview}}
17
17
 
18
18
  ## Functional Requirements
19
+
19
20
  {{#each functionalRequirements}}
20
21
  - {{this}}
21
22
  {{/each}}
22
23
 
23
24
  ## User Stories
25
+
24
26
  {{#if storyIds}}
25
27
  {{#each storyIds}}
26
28
  - [{{this.id}}](../stories/{{this.filename}}.md)
@@ -6,15 +6,15 @@ This guide defines how story points, complexity, and effort hours are used in th
6
6
 
7
7
  Story points measure **relative complexity**, not calendar time. Use the Fibonacci sequence to force clear distinctions between small and large work.
8
8
 
9
- | Points | Label | Description | Typical Scope |
10
- |--------|-------|-------------|---------------|
11
- | **1** | Trivial | Config change, typo fix, one-liner | Minutes to 1 hour |
12
- | **2** | Small | Single-file change, well-understood | 1-3 hours |
13
- | **3** | Moderate | A few files, clear approach | Half a day |
14
- | **5** | Medium | Multiple files, some unknowns | 1-2 days |
15
- | **8** | Large | Cross-cutting change, needs design | 2-4 days |
16
- | **13** | Very Large | Multi-system, significant unknowns | 1-2 weeks |
17
- | **21** | Epic-scale | Major feature or rewrite, high risk | 2+ weeks (consider splitting) |
9
+ | Points | Label | Description | Typical Scope |
10
+ | ------ | -------------- | ----------------------------------- | ------------------------------- |
11
+ | **1** | Trivial | Config change, typo fix, one-liner | Minutes to 1 hour |
12
+ | **2** | Small | Single-file change, well-understood | 1-3 hours |
13
+ | **3** | Moderate | A few files, clear approach | Half a day |
14
+ | **5** | Medium | Multiple files, some unknowns | 1-2 days |
15
+ | **8** | Large | Cross-cutting change, needs design | 2-4 days |
16
+ | **13** | Very Large | Multi-system, significant unknowns | 1-2 weeks |
17
+ | **21** | Epic-scale | Major feature or rewrite, high risk | 2+ weeks (consider splitting) |
18
18
 
19
19
  ### Rules of Thumb
20
20
 
@@ -25,11 +25,11 @@ Story points measure **relative complexity**, not calendar time. Use the Fibonac
25
25
 
26
26
  ## Complexity Levels
27
27
 
28
- | Level | Meaning |
29
- |-------|---------|
30
- | **Low** | Well-understood domain, clear requirements, existing patterns to follow |
31
- | **Medium** | Some unknowns, may need research or new patterns, moderate integration |
32
- | **High** | Significant unknowns, new technology, cross-system impact, security/performance-critical |
28
+ | Level | Meaning |
29
+ | ---------- | ----------------------------------------------------------------------------------------- |
30
+ | **Low** | Well-understood domain, clear requirements, existing patterns to follow |
31
+ | **Medium** | Some unknowns, may need research or new patterns, moderate integration |
32
+ | **High** | Significant unknowns, new technology, cross-system impact, security/performance-critical |
33
33
 
34
34
  ## Risk Factors
35
35
 
@@ -19,6 +19,7 @@ status: "pending"
19
19
 
20
20
  {{#if relevantFiles}}
21
21
  ## Relevant Files
22
+
22
23
  {{#each relevantFiles}}
23
24
  - `{{this.path}}` — {{this.reason}}
24
25
  {{/each}}
@@ -9,12 +9,14 @@ This project uses OpenPlanr for agile planning. All artifacts are in `{{agilePat
9
9
  Before implementing ANY task or subtask, you MUST gather full planning context by reading the artifact hierarchy. Follow this exact sequence:
10
10
 
11
11
  ### Step 1: Read the Task List
12
+
12
13
  - Open the task file from `{{agilePath}}/tasks/` (e.g., `TASK-001-*.md`) or quick task from `{{agilePath}}/quick/`
13
14
  - Parse the frontmatter to find `storyId` or `featureId`
14
15
  - Identify the target subtask (first unchecked `- [ ]` item)
15
16
  - Read ALL subtasks to understand the full scope and dependencies
16
17
 
17
18
  ### Step 2: Read the Parent Chain (MANDATORY)
19
+
18
20
  Follow the artifact hierarchy upward — each level adds critical context:
19
21
 
20
22
  1. **User Story** → `{{agilePath}}/stories/US-XXX-*.md`
@@ -31,10 +33,12 @@ Follow the artifact hierarchy upward — each level adds critical context:
31
33
  - This provides the WHY behind the work
32
34
 
33
35
  ### Step 3: Read Architecture Context
36
+
34
37
  - Read ALL ADRs in `{{agilePath}}/adrs/` — these are binding technical decisions
35
38
  - Check `{{agilePath}}/checklists/AGILE-DEVELOPMENT-GUIDE.md` for current progress
36
39
 
37
40
  ### Step 4: Scan the Codebase
41
+
38
42
  Before writing code, understand what exists:
39
43
 
40
44
  1. **Identify the tech stack** — Read `package.json`, `tsconfig.json`, or equivalent
@@ -65,6 +69,7 @@ Before writing code, understand what exists:
65
69
  5. **Solution Review** — Review against acceptance criteria and refactor
66
70
 
67
71
  ## Artifact Locations
72
+
68
73
  - Task lists: `{{agilePath}}/tasks/`
69
74
  - User stories: `{{agilePath}}/stories/`
70
75
  - Gherkin acceptance criteria: `{{agilePath}}/stories/*-gherkin.feature`
@@ -77,7 +82,9 @@ Before writing code, understand what exists:
77
82
  - Checklist: `{{agilePath}}/checklists/AGILE-DEVELOPMENT-GUIDE.md`
78
83
 
79
84
  ## Frontmatter Cross-References
85
+
80
86
  Artifacts link to their parents via frontmatter fields:
87
+
81
88
  - Tasks → `storyId: "US-XXX"` or `featureId: "FEAT-XXX"`
82
89
  - Stories → `featureId: "FEAT-XXX"`
83
90
  - Features → `epicId: "EPIC-XXX"`
@@ -85,7 +92,9 @@ Artifacts link to their parents via frontmatter fields:
85
92
  Always follow these links to build the full context chain.
86
93
 
87
94
  ## Naming Convention
95
+
88
96
  All artifacts follow `PREFIX-NNN-slug.md` format:
97
+
89
98
  - EPIC-001, EPIC-002, ...
90
99
  - FEAT-001, FEAT-002, ...
91
100
  - US-001, US-002, ...
@@ -93,6 +102,7 @@ All artifacts follow `PREFIX-NNN-slug.md` format:
93
102
  {{#if existingEpics}}
94
103
 
95
104
  ## Current Epics
105
+
96
106
  {{#each existingEpics}}
97
107
  - [{{this.id}}]({{../agilePath}}/epics/{{this.filename}}): {{this.title}}
98
108
  {{/each}}
@@ -100,6 +110,7 @@ All artifacts follow `PREFIX-NNN-slug.md` format:
100
110
  {{#if existingFeatures}}
101
111
 
102
112
  ## Current Features
113
+
103
114
  {{#each existingFeatures}}
104
115
  - [{{this.id}}]({{../agilePath}}/features/{{this.filename}}): {{this.title}}
105
116
  {{/each}}
@@ -9,12 +9,14 @@ This project follows a structured agile workflow. All planning artifacts are in
9
9
  Before implementing ANY task or subtask, you MUST gather full planning context by reading the artifact hierarchy. Follow this exact sequence:
10
10
 
11
11
  ### Step 1: Read the Task List
12
+
12
13
  - Open the task file from `{{agilePath}}/tasks/` (e.g., `TASK-001-*.md`) or quick task from `{{agilePath}}/quick/`
13
14
  - Parse the frontmatter to find `storyId` or `featureId`
14
15
  - Identify the target subtask (first unchecked `- [ ]` item)
15
16
  - Read ALL subtasks to understand the full scope and dependencies
16
17
 
17
18
  ### Step 2: Read the Parent Chain (MANDATORY)
19
+
18
20
  Follow the artifact hierarchy upward — each level adds critical context:
19
21
 
20
22
  1. **User Story** → `{{agilePath}}/stories/US-XXX-*.md`
@@ -31,10 +33,12 @@ Follow the artifact hierarchy upward — each level adds critical context:
31
33
  - This provides the WHY behind the work
32
34
 
33
35
  ### Step 3: Read Architecture Context
36
+
34
37
  - Read ALL ADRs in `{{agilePath}}/adrs/` — these are binding technical decisions
35
38
  - Check `{{agilePath}}/checklists/AGILE-DEVELOPMENT-GUIDE.md` for current progress
36
39
 
37
40
  ### Step 4: Scan the Codebase
41
+
38
42
  Before writing code, understand what exists:
39
43
 
40
44
  1. **Identify the tech stack** — Read `package.json`, `tsconfig.json`, or equivalent
@@ -57,6 +61,7 @@ Before writing code, understand what exists:
57
61
  6. **Don't modify unrelated code** — stay focused on the target subtask
58
62
 
59
63
  ## Artifact Locations
64
+
60
65
  - Task lists: `{{agilePath}}/tasks/`
61
66
  - User stories: `{{agilePath}}/stories/`
62
67
  - Gherkin acceptance criteria: `{{agilePath}}/stories/*-gherkin.feature`
@@ -69,7 +74,9 @@ Before writing code, understand what exists:
69
74
  - Checklist: `{{agilePath}}/checklists/AGILE-DEVELOPMENT-GUIDE.md`
70
75
 
71
76
  ## Frontmatter Cross-References
77
+
72
78
  Artifacts link to their parents via frontmatter fields:
79
+
73
80
  - Tasks → `storyId: "US-XXX"` or `featureId: "FEAT-XXX"`
74
81
  - Stories → `featureId: "FEAT-XXX"`
75
82
  - Features → `epicId: "EPIC-XXX"`
@@ -77,7 +84,9 @@ Artifacts link to their parents via frontmatter fields:
77
84
  Always follow these links to build the full context chain.
78
85
 
79
86
  ## Naming Convention
87
+
80
88
  All artifacts follow `PREFIX-NNN-slug.md` format:
89
+
81
90
  - EPIC-001, EPIC-002, ...
82
91
  - FEAT-001, FEAT-002, ...
83
92
  - US-001, US-002, ...
@@ -11,7 +11,9 @@ You are an agile planning assistant. Help the user create a well-structured epic
11
11
  ## Process
12
12
 
13
13
  ### Phase 1: Information Gathering
14
+
14
15
  Ask these questions one at a time:
16
+
15
17
  1. What is the epic title?
16
18
  2. Who owns this epic?
17
19
  3. What is the business value?
@@ -24,12 +26,16 @@ Ask these questions one at a time:
24
26
  10. What are the risks?
25
27
 
26
28
  ### Phase 2: Document Generation
29
+
27
30
  Generate the epic document at `{{agilePath}}/epics/` using this structure:
31
+
28
32
  - YAML frontmatter with id, title, owner, dates, status
29
33
  - Sections: Business Value, Target Users, Problem Statement, Solution Overview, Success Criteria, Key Features, Dependencies, Risks
30
34
 
31
35
  ### Phase 3: Next Steps
36
+
32
37
  Recommend creating features from this epic using `planr feature create --epic <ID>`.
33
38
 
34
39
  ## Existing Epics
40
+
35
41
  Check `{{agilePath}}/epics/` for existing epics to avoid duplication.
@@ -11,12 +11,15 @@ You are an agile planning assistant. Help the user break an epic into well-defin
11
11
  ## Process
12
12
 
13
13
  ### Phase 1: Epic Analysis
14
+
14
15
  1. Read the specified epic from `{{agilePath}}/epics/`
15
16
  2. Analyze the key features and scope listed in the epic
16
17
  3. Propose a feature breakdown
17
18
 
18
19
  ### Phase 2: Feature Definition
20
+
19
21
  For each feature, gather:
22
+
20
23
  1. Feature title
21
24
  2. Owner
22
25
  3. Overview/description
@@ -27,9 +30,12 @@ For each feature, gather:
27
30
  8. Success metrics
28
31
 
29
32
  ### Phase 3: Document Generation
33
+
30
34
  Generate feature documents at `{{agilePath}}/features/` with:
35
+
31
36
  - YAML frontmatter linking back to the parent epic
32
37
  - Cross-references to the epic document
33
38
 
34
39
  ### Phase 4: Next Steps
40
+
35
41
  Recommend creating user stories with `planr story create --feature <ID>`.
@@ -11,13 +11,17 @@ You are a technical planning assistant. Generate implementation tasks from user
11
11
  ## Process
12
12
 
13
13
  ### Phase 1: Artifact Analysis
14
+
14
15
  Read all relevant artifacts:
16
+
15
17
  - User stories at `{{agilePath}}/stories/`
16
18
  - Gherkin files for acceptance criteria
17
19
  - Any existing ADRs at `{{agilePath}}/adrs/`
18
20
 
19
21
  ### Phase 2: High-Level Tasks
22
+
20
23
  Generate parent tasks that cover:
24
+
21
25
  - Setup and configuration
22
26
  - Core implementation
23
27
  - Testing
@@ -27,10 +31,13 @@ Generate parent tasks that cover:
27
31
  Wait for user confirmation before proceeding.
28
32
 
29
33
  ### Phase 3: Subtask Breakdown
34
+
30
35
  For each parent task, generate subtasks with:
36
+
31
37
  - Clear acceptance criteria mapped to Gherkin scenarios
32
38
  - Estimated complexity
33
39
  - Dependencies on other tasks
34
40
 
35
41
  ### Output
42
+
36
43
  Generate task list at `{{agilePath}}/tasks/` with checkbox format for tracking.
@@ -11,21 +11,27 @@ You are an agile planning assistant. Help create user stories with Gherkin accep
11
11
  ## Process
12
12
 
13
13
  ### Phase 1: Feature Analysis
14
+
14
15
  1. Read the specified feature from `{{agilePath}}/features/`
15
16
  2. Analyze functional requirements
16
17
  3. Propose user story breakdown
17
18
 
18
19
  ### Phase 2: Story Definition
20
+
19
21
  For each story, gather:
22
+
20
23
  1. Role (As a...)
21
24
  2. Goal (I want to...)
22
25
  3. Benefit (So that...)
23
26
  4. Acceptance criteria as Gherkin scenarios
24
27
 
25
28
  ### Phase 3: Document Generation
29
+
26
30
  Generate two files per story:
31
+
27
32
  1. User story markdown at `{{agilePath}}/stories/US-XXX-title.md`
28
33
  2. Gherkin feature file at `{{agilePath}}/stories/US-XXX-gherkin.feature`
29
34
 
30
35
  ### Phase 4: Next Steps
36
+
31
37
  Recommend creating tasks with `planr task create --story <ID>`.
@@ -13,12 +13,14 @@ You are an implementation assistant for **{{projectName}}**. Before writing any
13
13
  Before implementing ANY subtask, follow this exact sequence:
14
14
 
15
15
  ### Step 1: Read the Task List
16
+
16
17
  - Open the task file from `{{agilePath}}/tasks/` (e.g., `TASK-001-*.md`)
17
18
  - Parse the frontmatter to find `storyId` or `featureId`
18
19
  - Identify the target subtask (first unchecked `- [ ]` item)
19
20
  - Read ALL subtasks to understand the full scope and dependencies
20
21
 
21
22
  ### Step 2: Read the Parent Chain (MANDATORY)
23
+
22
24
  Follow the artifact hierarchy upward — each level adds critical context:
23
25
 
24
26
  1. **User Story** → `{{agilePath}}/stories/US-XXX-*.md`
@@ -35,10 +37,12 @@ Follow the artifact hierarchy upward — each level adds critical context:
35
37
  - This provides the WHY behind the work
36
38
 
37
39
  ### Step 3: Read Architecture Context
40
+
38
41
  - Read ALL ADRs in `{{agilePath}}/adrs/` — these are binding technical decisions
39
42
  - Check `{{agilePath}}/checklists/AGILE-DEVELOPMENT-GUIDE.md` for current progress
40
43
 
41
44
  ### Step 4: Scan the Codebase
45
+
42
46
  Before writing code, understand what exists:
43
47
 
44
48
  1. **Identify the tech stack** — Read `package.json`, `tsconfig.json`, or equivalent
@@ -61,6 +65,7 @@ Before writing code, understand what exists:
61
65
  6. **Don't modify unrelated code** — stay focused on the target subtask
62
66
 
63
67
  ## Artifact Locations
68
+
64
69
  - Task lists: `{{agilePath}}/tasks/`
65
70
  - User stories: `{{agilePath}}/stories/`
66
71
  - Gherkin acceptance criteria: `{{agilePath}}/stories/*-gherkin.feature`
@@ -72,7 +77,9 @@ Before writing code, understand what exists:
72
77
  - Sprints: `{{agilePath}}/sprints/`
73
78
 
74
79
  ## Frontmatter Cross-References
80
+
75
81
  Artifacts link to their parents via frontmatter fields:
82
+
76
83
  - Tasks → `storyId: "US-XXX"` or `featureId: "FEAT-XXX"`
77
84
  - Stories → `featureId: "FEAT-XXX"`
78
85
  - Features → `epicId: "EPIC-XXX"`