@e0ipso/ai-task-manager 2.1.0 → 2.2.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/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@e0ipso/ai-task-manager",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Task management for AI coding assistants",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "ai-task-manager": "dist/cli.js"
8
8
  },
9
9
  "scripts": {
10
- "build": "tsc && npm run build:skills",
10
+ "build": "tsc && npm run build:skills && npm run build:skill-prompts",
11
11
  "build:skills": "tsc --noEmit -p tsconfig.skill-scripts.json && node scripts/build-skills.cjs",
12
+ "build:skill-prompts": "node scripts/build-skill-prompts.cjs",
12
13
  "dev": "tsc --watch",
13
14
  "start": "node dist/cli.js",
14
15
  "test": "jest",
@@ -22,15 +22,22 @@ The user supplies the numeric plan ID conversationally. Treat it as the only aut
22
22
 
23
23
  ### 1. Locate the task-manager root
24
24
 
25
- Run `scripts/find-task-manager-root.cjs` from the user's working directory. The script walks up looking for `.ai/task-manager/.init-metadata.json` and prints the absolute path of the resolved root on success.
25
+ Run `scripts/find-task-manager-root.cjs` from the user's working directory.
26
+ The script walks up looking for `.ai/task-manager/.init-metadata.json` and
27
+ prints the absolute path of the resolved root on success.
26
28
 
27
- If the script exits non-zero, the working directory is not inside an initialized task-manager workspace. Stop and ask the user to run the project initializer (e.g. `npx @e0ipso/ai-task-manager init`) before continuing. Do not attempt to execute a plan outside of a valid root.
29
+ If the script exits non-zero, the working directory is not inside an
30
+ initialized task-manager workspace. Stop and ask the user to run the project
31
+ initializer (e.g. `npx @e0ipso/ai-task-manager init`) before continuing. Do
32
+ not attempt to execute a plan outside of a valid root.
28
33
 
29
34
  For every subsequent step, treat the path printed by this script as `<root>`.
30
35
 
31
36
  ### 2. Resolve the plan
32
37
 
33
- Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the absolute path of the plan file. The same script also accepts these field names (single-field output mode) and exposes them on demand:
38
+ Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the
39
+ absolute path of the plan file. The same script also accepts these field
40
+ names (single-field output mode) and exposes them on demand:
34
41
 
35
42
  - `planDir` — absolute path of the plan directory
36
43
  - `taskCount` — number of existing task files in that plan's `tasks/`
@@ -38,7 +45,8 @@ Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the absol
38
45
  - `taskManagerRoot` — absolute path of `<root>`
39
46
  - `planId` — the resolved numeric plan ID
40
47
 
41
- If the script exits non-zero, stop and ask the user to confirm the plan ID. Do not guess a different ID.
48
+ If the script exits non-zero, stop and ask the user to confirm the plan ID.
49
+ Do not guess a different ID.
42
50
 
43
51
  ### 3. Validate tasks and blueprint existence
44
52
 
@@ -42,9 +42,14 @@ These indicators are purely informational. Do not pause or wait for user input w
42
42
 
43
43
  #### 1. Locate the task-manager root
44
44
 
45
- Run `scripts/find-task-manager-root.cjs` from the user's working directory. The script walks up looking for `.ai/task-manager/.init-metadata.json` and prints the absolute path of the resolved root on success.
45
+ Run `scripts/find-task-manager-root.cjs` from the user's working directory.
46
+ The script walks up looking for `.ai/task-manager/.init-metadata.json` and
47
+ prints the absolute path of the resolved root on success.
46
48
 
47
- If the script exits non-zero, the working directory is not inside an initialized task-manager workspace. Stop and ask the user to run the project initializer before continuing.
49
+ If the script exits non-zero, the working directory is not inside an
50
+ initialized task-manager workspace. Stop and ask the user to run the project
51
+ initializer (e.g. `npx @e0ipso/ai-task-manager init`) before continuing. Do
52
+ not attempt to execute the full workflow outside of a valid root.
48
53
 
49
54
  For every subsequent step, treat the path printed by this script as `<root>`.
50
55
 
@@ -128,45 +133,58 @@ Read these files in order:
128
133
 
129
134
  #### 3. Analyze and decompose the plan
130
135
 
131
- Read the entire plan. Identify all concrete deliverables explicitly stated. Decompose each deliverable into atomic tasks only when genuinely needed.
132
-
133
- Apply task minimization principles:
134
-
135
- - Create only the minimum number of tasks necessary. Target a 20–30% reduction from comprehensive lists.
136
- - Direct Implementation Only: each task corresponds to an explicit requirement, not a nice-to-have.
137
- - DRY Task Principle: each task has a unique, non-overlapping purpose.
138
- - Question Everything: for each task, ask "Is this absolutely necessary to meet the plan objectives?"
139
- - Avoid Gold-plating: resist comprehensive features the plan does not require.
140
-
141
- Antipatterns to avoid:
142
-
143
- - Separating error handling from the main implementation when it can be inline.
144
- - Splitting trivially small operations into multiple tasks.
145
- - Adding tasks for future extensibility or best practices the plan does not mention.
136
+ Read the entire plan. Identify all concrete deliverables **explicitly stated**.
137
+ Decompose each deliverable into atomic tasks only when genuinely needed.
138
+
139
+ **Task minimization (mandatory):**
140
+
141
+ - Create only the minimum number of tasks necessary. Target a 20–30%
142
+ reduction from comprehensive lists by questioning the necessity of each
143
+ candidate.
144
+ - **Direct Implementation Only**: a task corresponds to an explicit
145
+ requirement, not a "nice-to-have".
146
+ - **DRY Task Principle**: each task has a unique, non-overlapping purpose.
147
+ - **Question Everything**: for each task, ask "Is this absolutely necessary
148
+ to meet the plan objectives?"
149
+ - **Avoid Gold-plating**: resist comprehensive features the plan does not
150
+ require.
151
+
152
+ **Antipatterns to avoid:**
153
+
154
+ - Separating "error handling" from the main implementation when it can be
155
+ inline.
156
+ - Splitting trivially small operations into multiple tasks (e.g. "validate
157
+ input" + "process input" as separate units).
158
+ - Adding tasks for "future extensibility" or "best practices" the plan does
159
+ not mention.
146
160
  - Comprehensive test suites for trivial functionality.
147
161
 
148
162
  #### 4. Apply granularity and skill rules
149
163
 
150
164
  Each task must be:
151
165
 
152
- - Single-purpose — one clear deliverable.
153
- - Atomic — cannot be meaningfully split further.
154
- - Skill-specific — executable by an agent with 1–2 technical skills.
155
- - Verifiable — has explicit acceptance criteria.
166
+ - **Single-purpose** — one clear deliverable.
167
+ - **Atomic** — cannot be meaningfully split further.
168
+ - **Skill-specific** — executable by an agent with 1–2 technical skills.
169
+ - **Verifiable** — has explicit acceptance criteria.
156
170
 
157
- Skill assignment (kebab-case, automatically inferred):
171
+ Skill assignment (kebab-case, automatically inferred from the task's
172
+ technical requirements):
158
173
 
159
- - 1 skill — single-domain task (e.g., `["css"]`, `["jest"]`).
160
- - 2 skills — complementary domains (e.g., `["api-endpoints", "database"]`).
174
+ - 1 skill — single-domain task (e.g. `["css"]`, `["jest"]`).
175
+ - 2 skills — complementary domains (e.g. `["api-endpoints", "database"]`,
176
+ `["react-components", "jest"]`).
161
177
  - 3+ skills indicates the task should be broken down further.
162
178
 
163
- #### 5. Test philosophy
179
+ #### 5. Test philosophy: "write a few tests, mostly integration"
164
180
 
165
- When generating test tasks, follow: "write a few tests, mostly integration".
181
+ When generating test tasks, keep this constraint:
166
182
 
167
- Meaningful tests verify custom business logic, critical paths, and edge cases specific to this application. Test your code, not the framework or library.
183
+ **Definition.** Meaningful tests verify custom business logic, critical paths,
184
+ and edge cases specific to this application. Test *your* code, not the
185
+ framework or library.
168
186
 
169
- When TO write tests:
187
+ **When TO write tests:**
170
188
 
171
189
  - Custom business logic and algorithms.
172
190
  - Critical user workflows and data transformations.
@@ -174,7 +192,7 @@ When TO write tests:
174
192
  - Integration points between components.
175
193
  - Complex validation logic or calculations.
176
194
 
177
- When NOT to write tests:
195
+ **When NOT to write tests:**
178
196
 
179
197
  - Third-party library functionality.
180
198
  - Framework features.
@@ -182,7 +200,16 @@ When NOT to write tests:
182
200
  - Trivial getters/setters or static configuration.
183
201
  - Obvious functionality that would break immediately if incorrect.
184
202
 
185
- Combine related test scenarios into a single task. Favor integration and critical-path coverage over per-method unit tests.
203
+ **Test task creation rules:**
204
+
205
+ - Combine related test scenarios into a single task (e.g. "Test user
206
+ authentication flow" not separate tasks for login, logout, validation).
207
+ - Favor integration and critical-path coverage over per-method unit tests.
208
+ - Avoid one test task per CRUD operation.
209
+ - Question whether simple functions need a dedicated test task.
210
+
211
+ If any test task is generated, restate this section verbatim or near-verbatim
212
+ in that task's "Implementation Notes" so the executing agent applies it.
186
213
 
187
214
  #### 6. Dependency analysis
188
215
 
@@ -207,7 +234,8 @@ Write each task to:
207
234
  <root>/plans/<plan-dir-name>/tasks/{padded-id}--{slug}.md
208
235
  ```
209
236
 
210
- Each file must conform to `<root>/config/templates/TASK_TEMPLATE.md`, including required frontmatter fields:
237
+ Each file must conform to `<root>/config/templates/TASK_TEMPLATE.md`,
238
+ including required frontmatter fields:
211
239
 
212
240
  - `id` (integer)
213
241
  - `group` (string)
@@ -218,20 +246,27 @@ Each file must conform to `<root>/config/templates/TASK_TEMPLATE.md`, including
218
246
 
219
247
  Optional frontmatter for high-complexity or decomposed tasks:
220
248
 
221
- - `complexity_score` (number, 1–10, include only if >4)
249
+ - `complexity_score` (number, 1–10, include only if >4 or for decomposed
250
+ tasks)
222
251
  - `complexity_notes` (string)
223
252
 
224
- The body sections (Objective, Skills Required, Acceptance Criteria, Technical Requirements, Input Dependencies, Output Artifacts, Implementation Notes) must be filled with task-specific content. Place detailed implementation guidance inside a `<details>` block under "Implementation Notes" so a non-thinking LLM could execute the task from that section alone.
253
+ The body sections (Objective, Skills Required, Acceptance Criteria, Technical
254
+ Requirements, Input Dependencies, Output Artifacts, Implementation Notes)
255
+ must be filled with task-specific content. Place detailed implementation
256
+ guidance inside a `<details>` block under "Implementation Notes" — write it
257
+ so a non-thinking LLM could execute the task from that section alone.
225
258
 
226
259
  #### 9. Validation checklist
227
260
 
228
261
  Before declaring task generation complete, verify:
229
262
 
230
- - Each task has 1–2 appropriate technical skills assigned and inferred from its objectives.
231
- - Dependencies form an acyclic graph.
232
- - Task IDs are unique, sequential, and start from the value returned by `get-next-task-id.cjs`.
263
+ - Each task has 1–2 appropriate technical skills assigned and inferred from
264
+ its objectives.
265
+ - Dependencies form an acyclic graph; no orphan or circular references.
266
+ - Task IDs are unique, sequential, and start from the value returned by
267
+ `get-next-task-id.cjs`.
233
268
  - Groups are consistent and meaningful.
234
- - Every explicitly stated deliverable in the plan is covered.
269
+ - Every **explicitly stated** deliverable in the plan is covered.
235
270
  - No redundant or overlapping tasks.
236
271
  - Minimization applied (20–30% reduction target).
237
272
  - Test tasks focus on business logic, not framework functionality.
@@ -310,9 +345,9 @@ Read `<root>/config/hooks/PRE_PHASE.md` and execute its instructions before star
310
345
  ##### 5b. Task dispatch
311
346
  Identify all tasks scheduled for this phase whose dependencies are fully satisfied. Read `<root>/config/hooks/PRE_TASK_EXECUTION.md` and execute its instructions before starting any implementation work.
312
347
 
313
- Deploy all selected agents simultaneously. Each agent MUST:
348
+ Deploy all selected agents simultaneously using your internal Task tool. Each agent MUST:
314
349
 
315
- 1. Read and execute `<root>/config/hooks/PRE_TASK_EXECUTION.md` before starting implementation.
350
+ 1. Read and execute `<root>/config/hooks/PRE_TASK_EXECUTION.md` before starting any implementation work.
316
351
  2. Execute the task according to its requirements.
317
352
  3. Monitor execution progress and capture outputs and artifacts.
318
353
  4. Update task status in real-time.