ai-factory 2.9.1 → 2.9.3

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.
@@ -2,6 +2,7 @@ export interface InitOptions {
2
2
  agents?: string;
3
3
  mcp?: string;
4
4
  skills?: string | boolean;
5
+ config?: boolean;
5
6
  }
6
7
  export declare function initCommand(options?: InitOptions): Promise<void>;
7
8
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AA+ED,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgL1E"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA+ED,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4L1E"}
@@ -6,7 +6,7 @@ import { saveConfig, configExists, loadConfig, getCurrentVersion } from '../../c
6
6
  import { configureMcp, getMcpInstructions } from '../../core/mcp.js';
7
7
  import { getAgentConfig, getAvailableAgentIds } from '../../core/agents.js';
8
8
  import { cleanupAgentSetup, getAgentOnboarding } from '../../core/transformer.js';
9
- import { removeDirectory, removeFile } from '../../utils/fs.js';
9
+ import { removeDirectory, removeFile, copyFile, fileExists, getSkillsDir } from '../../utils/fs.js';
10
10
  import { applyExtensionInjections } from '../../core/injections.js';
11
11
  import { collectReplacedSkills } from '../../core/extension-ops.js';
12
12
  const VALID_MCP_KEYS = {
@@ -176,6 +176,18 @@ export async function initCommand(options = {}) {
176
176
  extensions: existingExtensions,
177
177
  });
178
178
  console.log(chalk.green('✓ Configuration saved to .ai-factory.json'));
179
+ if (options.config) {
180
+ const configDest = path.join(projectDir, '.ai-factory', 'config.yaml');
181
+ const configAlreadyExists = await fileExists(configDest);
182
+ if (configAlreadyExists) {
183
+ console.log(chalk.yellow('⚠ .ai-factory/config.yaml already exists, skipping (use --force to overwrite)'));
184
+ }
185
+ else {
186
+ const templateSrc = path.join(getSkillsDir(), 'aif', 'references', 'config-template.yaml');
187
+ await copyFile(templateSrc, configDest);
188
+ console.log(chalk.green('✓ Default config.yaml created in .ai-factory/'));
189
+ }
190
+ }
179
191
  console.log(chalk.bold.green('\n✅ Setup complete!\n'));
180
192
  for (const agent of installedAgents) {
181
193
  const agentConfig = getAgentConfig(agent.id);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -17,6 +17,7 @@ program
17
17
  .option('--mcp <servers>', 'Comma-separated list of MCP servers (e.g. github,playwright,postgres,filesystem,chrome-devtools)')
18
18
  .option('--skills <skills>', 'Comma-separated list of skills or "all" for all skills (default: all)')
19
19
  .option('--no-skills', 'Skip installing base skills')
20
+ .option('--config', 'Create default .ai-factory/config.yaml from template')
20
21
  .action(initCommand);
21
22
  program
22
23
  .command('update')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-factory",
3
- "version": "2.9.1",
3
+ "version": "2.9.3",
4
4
  "type": "module",
5
5
  "description": "CLI tool for automating AI agent context setup in projects",
6
6
  "main": "dist/cli/index.js",
@@ -578,7 +578,7 @@ Install skills, configure MCP, generate `AGENTS.md`, and generate architecture d
578
578
  1. **Search before generating** — Don't reinvent existing skills
579
579
  2. **Ask confirmation** — Before installing or generating
580
580
  3. **Check duplicates** — Don't install what's already there
581
- 4. **MCP in .mcp.json** — Project-level (agent reads MCP from `.mcp.json`, not `settings.local.json`)
581
+ 4. **MCP in `{{settings_file}}`** — Project-level MCP configuration
582
582
  5. **Remind about env vars** — For MCP that need credentials
583
583
 
584
584
  ## Artifact Ownership
@@ -14,7 +14,13 @@ Fix a specific bug or problem in the codebase. Supports two modes: immediate fix
14
14
 
15
15
  ### Step 0 (pre): Detect Handoff Mode
16
16
 
17
- Handoff mode: !`echo $HANDOFF_MODE`
17
+ Determine Handoff mode, task ID, and skip-review flag. If the caller passed `HANDOFF_MODE`, `HANDOFF_TASK_ID`, and `HANDOFF_SKIP_REVIEW` as explicit text in the prompt, use those values. Otherwise, use the Bash tool:
18
+
19
+ ```
20
+ Bash: printenv HANDOFF_MODE || true
21
+ Bash: printenv HANDOFF_TASK_ID || true
22
+ Bash: printenv HANDOFF_SKIP_REVIEW || true
23
+ ```
18
24
 
19
25
  **Then check `HANDOFF_MODE`:**
20
26
 
@@ -22,18 +28,18 @@ Handoff mode: !`echo $HANDOFF_MODE`
22
28
 
23
29
  The Handoff coordinator already manages status transitions and DB writes directly. Do NOT call MCP tools. Instead:
24
30
 
25
- - **No interactive questions:** Do not use `AskUserQuestion` default to "Fix now" mode. Always include tests and logging.
31
+ - **No interactive questions:** Do not use `AskUserQuestion`. If `$ARGUMENTS` contains `--plan-first`, use "Plan first" mode. Otherwise default to "Fix now" mode. Always include tests and logging.
32
+ - **Plan annotation (MANDATORY):** If `HANDOFF_TASK_ID` is non-empty, you MUST insert `<!-- handoff:task:<HANDOFF_TASK_ID> -->` as the very first line of the fix plan file, before the title. **Omitting this annotation when HANDOFF_TASK_ID is set is a bug — verify before completing.** This applies to both Step 1.1 (creating new plan) and any plan rewrite.
26
33
 
27
34
  #### When `HANDOFF_MODE` is NOT `1` (manual Claude Code session)
28
35
 
29
- After reading the fix plan file (Step 0.1), extract the Handoff task ID from the `<!-- handoff:task:<id> -->` annotation on the first line (if present). If no annotation exists, skip all MCP sync there is no linked Handoff task.
36
+ Handoff sync is handled inline see **Step 0.1** (after reading the fix plan file) for the task ID extraction and MCP sync trigger. The sync points are:
30
37
 
31
- If a task ID IS found in the plan annotation, sync with Handoff via MCP tools:
38
+ - **Plan first (Step 1.1):** `"planning"` `"plan_ready"` (after save)
39
+ - **Fix now (Step 2→5):** `"implementing"` (Step 2 entry) → `"done"` if `HANDOFF_SKIP_REVIEW=1`, else `"review"` (Step 5)
40
+ - **Execute existing plan (Step 0.1→5):** `"implementing"` (Step 0.1) → `"done"` if `HANDOFF_SKIP_REVIEW=1`, else `"review"` (Step 5)
32
41
 
33
- - **On start:** Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "planning", sourceTimestamp: <now ISO>, direction: "aif_to_handoff", paused: true }`.
34
- - **On completion:** Call `handoff_push_plan` with `{ taskId: <extracted-id>, planContent: <full fix plan or result> }`. Then call `handoff_sync_status` with `{ newStatus: "plan_ready", ..., paused: true }`.
35
-
36
- **CRITICAL:** Always pass `paused: true` with every `handoff_sync_status` call except `done`. This prevents the autonomous Handoff agent from picking up the task while you work manually. Only `done` passes `paused: false`.
42
+ **CRITICAL:** Always pass `paused: true` with every `handoff_sync_status` call except `done`.
37
43
 
38
44
  When creating a new FIX_PLAN.md: if there is no existing annotation and no Handoff context, do not add the annotation.
39
45
 
@@ -62,6 +68,10 @@ If config.yaml doesn't exist, use defaults:
62
68
  **If the file EXISTS:**
63
69
 
64
70
  - Read the resolved fix plan file
71
+ - **Immediately check the first line for `<!-- handoff:task:<uuid> -->`:**
72
+ - If found AND `HANDOFF_MODE` is NOT `1` (manual session): extract the task ID. Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "implementing", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`. (Status is `"implementing"` because we are executing an existing plan, not creating one.)
73
+ - If found AND `HANDOFF_MODE` is `1`: the Handoff coordinator handles sync — do nothing.
74
+ - If NOT found: no linked Handoff task — skip all MCP sync for the rest of this session.
65
75
  - Inform the user: "Found existing fix plan. Executing fix based on the plan."
66
76
  - Skip **Step 1** (problem intake/mode choice), but still run **Step 0.2** to load context
67
77
  - Then continue to **Step 2: Investigate the Codebase**, using the plan as your guide
@@ -157,6 +167,8 @@ Options:
157
167
 
158
168
  ### Step 1.1: Create Fix Plan
159
169
 
170
+ **Handoff sync (manual mode only):** If a Handoff task ID is known (from `HANDOFF_TASK_ID` or an existing annotation) AND `HANDOFF_MODE` is NOT `1`, call `handoff_sync_status` with `{ taskId: <id>, newStatus: "planning", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
171
+
160
172
  Investigate the codebase enough to understand the problem and create a plan.
161
173
 
162
174
  **Use the same parallel exploration approach as Step 2** — launch Explore agents to investigate the problem area, related code, and past patterns simultaneously.
@@ -167,7 +179,11 @@ After agents return, synthesize findings to:
167
179
  2. Map affected files and functions
168
180
  3. Assess impact scope
169
181
 
170
- Then create the resolved fix plan file (default: `.ai-factory/FIX_PLAN.md`) with this structure:
182
+ Then create the resolved fix plan file (default: `.ai-factory/FIX_PLAN.md`).
183
+
184
+ **Before writing:** If `HANDOFF_MODE` is `1` and `HANDOFF_TASK_ID` is non-empty, the very first line of the file MUST be `<!-- handoff:task:<HANDOFF_TASK_ID> -->` followed by a blank line, then the plan content below. If in manual mode and a task ID was extracted from an existing annotation, preserve it.
185
+
186
+ Structure:
171
187
 
172
188
  ```markdown
173
189
  # Fix Plan: [Brief title]
@@ -220,10 +236,14 @@ Review the plan and when you're ready to execute, run:
220
236
  /aif-fix
221
237
  ```
222
238
 
239
+ **Handoff sync (manual mode only):** If a Handoff task ID is known AND `HANDOFF_MODE` is NOT `1`, call `handoff_push_plan` with `{ taskId: <id>, planContent: <full fix plan text> }`, then `handoff_sync_status` with `{ taskId: <id>, newStatus: "plan_ready", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
240
+
223
241
  **STOP here. Do NOT apply the fix.**
224
242
 
225
243
  ### Step 2: Investigate the Codebase
226
244
 
245
+ **Handoff sync (manual mode, "Fix now" path only):** If a Handoff task ID is known AND `HANDOFF_MODE` is NOT `1`, call `handoff_sync_status` with `{ taskId: <id>, newStatus: "implementing", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
246
+
227
247
  **Use `Task` tool with `subagent_type: Explore` to investigate the problem in parallel.** This keeps the main context clean and allows simultaneous investigation of multiple angles.
228
248
 
229
249
  Launch 2-3 Explore agents simultaneously:
@@ -299,6 +319,11 @@ try {
299
319
 
300
320
  ### Step 5: Suggest Test Coverage
301
321
 
322
+ **Handoff sync (manual mode ONLY — skip entirely when `HANDOFF_MODE` is `1`):** If a Handoff task ID is known AND `HANDOFF_MODE` is NOT `1`:
323
+ 1. Call `handoff_push_plan` with `{ taskId: <id>, planContent: <fix summary or updated plan> }`.
324
+ 2. If `HANDOFF_SKIP_REVIEW` is `1`: call `handoff_sync_status` with `{ taskId: <id>, newStatus: "done", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: false }`.
325
+ 3. Otherwise: call `handoff_sync_status` with `{ taskId: <id>, newStatus: "review", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
326
+
302
327
  **ALWAYS suggest covering this case with a test:**
303
328
 
304
329
  ```
@@ -14,8 +14,12 @@ Execute tasks from the plan, track progress, and enable session continuation.
14
14
 
15
15
  ### Step 0 (pre): Detect Handoff Mode
16
16
 
17
- Handoff mode: !`echo $HANDOFF_MODE`
18
- Handoff skip review: !`echo $HANDOFF_SKIP_REVIEW`
17
+ Determine Handoff mode. If the caller passed `HANDOFF_MODE` and `HANDOFF_SKIP_REVIEW` as explicit text in the prompt, use those values. Otherwise, use the Bash tool:
18
+
19
+ ```
20
+ Bash: printenv HANDOFF_MODE || true
21
+ Bash: printenv HANDOFF_SKIP_REVIEW || true
22
+ ```
19
23
 
20
24
  **Then check `HANDOFF_MODE`:**
21
25
 
@@ -28,15 +32,11 @@ The Handoff coordinator already manages status transitions and DB writes directl
28
32
 
29
33
  #### When `HANDOFF_MODE` is NOT `1` (manual Claude Code session)
30
34
 
31
- After reading the plan file (Step 1), extract the Handoff task ID from the `<!-- handoff:task:<id> -->` annotation on the first line (if present). If no annotation exists, skip all MCP sync there is no linked Handoff task.
32
-
33
- If a task ID IS found in the plan annotation, sync with Handoff via MCP tools:
35
+ Handoff sync is handled inline see **Step 0.2** (after reading the plan file) for the task ID extraction and MCP sync trigger. The sync points are:
34
36
 
35
- - **On start:** Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "implementing", sourceTimestamp: <now ISO>, direction: "aif_to_handoff", paused: true }`.
36
- - **On checklist update (Step 3.6):** After updating a checkbox in the plan file, call `handoff_push_plan` with `{ taskId: <extracted-id>, planContent: <full updated plan text> }` to keep the Kanban UI up-to-date.
37
- - **On completion (Step 5):** Call `handoff_push_plan` with the final plan content, then:
38
- - If `HANDOFF_SKIP_REVIEW` is `1`: call `handoff_sync_status` with `{ newStatus: "done", ..., paused: false }`.
39
- - Otherwise: call `handoff_sync_status` with `{ newStatus: "review", ..., paused: true }`.
37
+ - **On start (Step 0.2):** `handoff_sync_status` `"implementing"` (with `paused: true`)
38
+ - **On checklist update (Step 3.6):** `handoff_push_plan` with updated plan content
39
+ - **On completion (Step 5):** `handoff_push_plan` with final plan, then `handoff_sync_status` → `"review"` (with `paused: true`) or `"done"` (with `paused: false` when `HANDOFF_SKIP_REVIEW=1`)
40
40
 
41
41
  **CRITICAL:** Always pass `paused: true` with every `handoff_sync_status` call except `done`. This prevents the autonomous Handoff agent from picking up the task while you work manually. Only `done` passes `paused: false`.
42
42
 
@@ -303,6 +303,12 @@ Then continue with normal execution using the selected plan file.
303
303
  - Task dependencies
304
304
  - Task checklist format (`- [ ]` / `- [x]`) to keep progress synced
305
305
 
306
+ **Immediately after reading the plan file, check the first line for `<!-- handoff:task:<uuid> -->`:**
307
+
308
+ - If found AND `HANDOFF_MODE` is NOT `1` (manual session): extract the task ID. This is the Handoff task ID for MCP sync throughout this session. Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "implementing", sourceTimestamp: "<current UTC time in ISO 8601 format, e.g. 2026-04-02T18:30:45.000Z>", direction: "aif_to_handoff", paused: true }`. The timestamp must reflect the actual current time, not midnight or an approximation.
309
+ - If found AND `HANDOFF_MODE` is `1`: the Handoff coordinator handles sync — do nothing.
310
+ - If NOT found: no linked Handoff task — skip all MCP sync for the rest of this session.
311
+
306
312
  ### Step 1: Load Current State
307
313
 
308
314
  ```
@@ -383,6 +389,8 @@ TaskUpdate(taskId, status: "completed")
383
389
  - Even if deletion will be offered later
384
390
  - Plan file is the source of truth for progress
385
391
 
392
+ **Handoff sync (manual mode ONLY — skip when `HANDOFF_MODE` is `1`):** If a Handoff task ID was extracted in Step 0.2, call `handoff_push_plan` with `{ taskId: <id>, planContent: <full updated plan text> }` to sync the checklist progress.
393
+
386
394
  **3.7: Update the resolved description artifact if needed**
387
395
 
388
396
  If during implementation:
@@ -463,6 +471,11 @@ To resume later, run:
463
471
 
464
472
  ### Step 5: Completion
465
473
 
474
+ **Handoff sync (manual mode ONLY — skip entirely when `HANDOFF_MODE` is `1`):** If a Handoff task ID was extracted from the plan annotation AND `HANDOFF_MODE` is NOT `1`:
475
+ 1. Call `handoff_push_plan` with `{ taskId: <id>, planContent: <final updated plan text> }`.
476
+ 2. If `HANDOFF_SKIP_REVIEW` is `1`: call `handoff_sync_status` with `{ taskId: <id>, newStatus: "done", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: false }`.
477
+ 3. Otherwise: call `handoff_sync_status` with `{ taskId: <id>, newStatus: "review", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
478
+
466
479
  When all tasks are done:
467
480
 
468
481
  ```
@@ -17,8 +17,12 @@ Create an implementation plan for a feature or task. Two modes:
17
17
 
18
18
  ### Step 0 (pre): Detect Handoff Mode
19
19
 
20
- Handoff mode: !`echo $HANDOFF_MODE`
21
- Handoff task ID: !`echo $HANDOFF_TASK_ID`
20
+ Determine Handoff mode and task ID. If the caller passed `HANDOFF_MODE` and `HANDOFF_TASK_ID` as explicit text in the prompt, use those values. Otherwise, use the Bash tool to read the environment variables:
21
+
22
+ ```
23
+ Bash: printenv HANDOFF_MODE || true
24
+ Bash: printenv HANDOFF_TASK_ID || true
25
+ ```
22
26
 
23
27
  **Then check `HANDOFF_MODE`:**
24
28
 
@@ -28,7 +32,7 @@ The Handoff coordinator already manages status transitions and DB writes directl
28
32
 
29
33
  - **No interactive questions:** Do not use `AskUserQuestion` — use sensible defaults (verbose logging, yes to tests, yes to docs, skip roadmap linkage).
30
34
  - **Mode default:** If mode is not specified, default to `fast`.
31
- - **Plan annotation:** If `HANDOFF_TASK_ID` is non-empty, insert `<!-- handoff:task:<HANDOFF_TASK_ID> -->` as the very first line of the plan file, before the title. This annotation links the plan to its Handoff task for bidirectional sync. **Omitting this annotation is a bug.**
35
+ - **Plan annotation (MANDATORY):** If `HANDOFF_TASK_ID` is non-empty, you MUST insert `<!-- handoff:task:<HANDOFF_TASK_ID> -->` as the very first line of the plan file, before the title. This annotation links the plan to its Handoff task for bidirectional sync. **Omitting this annotation when HANDOFF_TASK_ID is set is a bug — verify before completing.**
32
36
 
33
37
  #### When `HANDOFF_MODE` is NOT `1` (manual Claude Code session)
34
38
 
@@ -36,8 +40,8 @@ If polishing an existing plan, extract the Handoff task ID from the `<!-- handof
36
40
 
37
41
  If a task ID IS found in the plan annotation, sync with Handoff via MCP tools:
38
42
 
39
- - **On start:** Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "planning", sourceTimestamp: <now ISO>, direction: "aif_to_handoff", paused: true }`.
40
- - **On completion:** Call `handoff_push_plan` with `{ taskId: <extracted-id>, planContent: <full plan text> }`. Then call `handoff_sync_status` with `{ newStatus: "plan_ready", ..., paused: true }`.
43
+ - **On start:** Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "planning", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
44
+ - **On completion:** Call `handoff_push_plan` with `{ taskId: <extracted-id>, planContent: <full plan text> }`. Then call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "plan_ready", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
41
45
 
42
46
  **CRITICAL:** Always pass `paused: true` with every `handoff_sync_status` call except `done`. This prevents the autonomous Handoff agent from picking up the task while you work manually. Only `done` passes `paused: false`.
43
47
 
@@ -28,9 +28,14 @@ CRITICAL: This agent MUST run as a top-level custom agent session via `claude --
28
28
 
29
29
  ## Handoff Integration
30
30
 
31
- Check environment: `echo $HANDOFF_MODE`, `echo $HANDOFF_SKIP_REVIEW`
31
+ Determine Handoff mode. If the caller passed `HANDOFF_MODE` and `HANDOFF_SKIP_REVIEW` as explicit text in the prompt, use those values. Otherwise, use the Bash tool:
32
32
 
33
- Pass `HANDOFF_MODE` and `HANDOFF_SKIP_REVIEW` env vars through to `implement-worker` invocations (workers never call MCP directly).
33
+ ```
34
+ Bash: printenv HANDOFF_MODE || true
35
+ Bash: printenv HANDOFF_SKIP_REVIEW || true
36
+ ```
37
+
38
+ **If `HANDOFF_MODE` is `1`:** pass `HANDOFF_MODE` and `HANDOFF_SKIP_REVIEW` values as explicit text in every `implement-worker` prompt (workers never call MCP directly).
34
39
 
35
40
  **When `HANDOFF_MODE` is `1`** (autonomous Handoff agent):
36
41
 
@@ -42,11 +47,11 @@ After reading the plan file, extract the Handoff task ID from the `<!-- handoff:
42
47
 
43
48
  If a task ID IS found in the plan annotation, sync with Handoff via MCP tools:
44
49
 
45
- - **On start (before first task dispatch):** Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "implementing", sourceTimestamp: <now ISO>, direction: "aif_to_handoff", paused: true }`.
50
+ - **On start (before first task dispatch):** Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "implementing", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
46
51
  - **After each layer completes:** Read the updated plan file and call `handoff_push_plan` with `{ taskId: <extracted-id>, planContent: <full plan text> }` to sync checklist progress.
47
52
  - **On completion (all tasks done):** Call `handoff_push_plan` with the final plan, then:
48
- - If `HANDOFF_SKIP_REVIEW` is `1`: call `handoff_sync_status` with `{ newStatus: "done", ..., paused: false }`.
49
- - Otherwise: call `handoff_sync_status` with `{ newStatus: "review", ..., paused: true }`.
53
+ - If `HANDOFF_SKIP_REVIEW` is `1`: call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "done", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: false }`.
54
+ - Otherwise: call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "review", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
50
55
 
51
56
  **CRITICAL:** Always pass `paused: true` with every `handoff_sync_status` call except `done`. This prevents the autonomous Handoff agent from picking up the task while you work manually. Only `done` passes `paused: false`.
52
57
 
@@ -18,9 +18,19 @@ CRITICAL: This agent MUST run as a top-level custom agent session via `claude --
18
18
 
19
19
  ## Handoff Integration
20
20
 
21
- Check environment: `echo $HANDOFF_MODE`
21
+ Check environment using the Bash tool:
22
22
 
23
- Always pass `HANDOFF_MODE` env var through to all plan-polisher invocations.
23
+ ```
24
+ Bash: printenv HANDOFF_MODE || true
25
+ Bash: printenv HANDOFF_TASK_ID || true
26
+ ```
27
+
28
+ **If `HANDOFF_MODE` is `1`:** pass BOTH `HANDOFF_MODE` and `HANDOFF_TASK_ID` values as explicit text in every plan-polisher prompt. Do NOT rely on the polisher reading env vars itself — include the values directly:
29
+
30
+ ```
31
+ HANDOFF_MODE: 1
32
+ HANDOFF_TASK_ID: <value from printenv>
33
+ ```
24
34
 
25
35
  **When `HANDOFF_MODE` is `1`** (autonomous Handoff agent):
26
36
 
@@ -32,8 +42,8 @@ After reading an existing plan file (if polishing), extract the Handoff task ID
32
42
 
33
43
  If a task ID IS found in the plan annotation, sync with Handoff via MCP tools:
34
44
 
35
- - **On start (before first plan-polisher):** Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "planning", sourceTimestamp: <now ISO>, direction: "aif_to_handoff", paused: true }`.
36
- - **On completion (after final iteration):** Read the final plan file, then call `handoff_push_plan` with `{ taskId: <extracted-id>, planContent: <full plan text> }`. Then call `handoff_sync_status` with `{ newStatus: "plan_ready", ..., paused: true }`.
45
+ - **On start (before first plan-polisher):** Call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "planning", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
46
+ - **On completion (after final iteration):** Read the final plan file, then call `handoff_push_plan` with `{ taskId: <extracted-id>, planContent: <full plan text> }`. Then call `handoff_sync_status` with `{ taskId: <extracted-id>, newStatus: "plan_ready", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }`.
37
47
 
38
48
  **CRITICAL:** Always pass `paused: true` with every `handoff_sync_status` call except `done`. This prevents the autonomous Handoff agent from picking up the task while you work manually. Only `done` passes `paused: false`.
39
49
 
@@ -89,6 +99,7 @@ report summary
89
99
  - `mode: fast` or `mode: full` (from user config or default)
90
100
  - `tests: yes/no/infer` (from user config or default `infer`)
91
101
  - `docs: yes/no/infer` (from user config or default `infer`)
102
+ - `HANDOFF_MODE` and `HANDOFF_TASK_ID` values (only when `HANDOFF_MODE=1`)
92
103
  - Do NOT pass raw plan content — let plan-polisher read the file itself.
93
104
  - On the first dispatch, always include the mode explicitly so plan-polisher uses the correct file location.
94
105
 
@@ -26,11 +26,23 @@ Repo-specific rules:
26
26
 
27
27
  ## Handoff Integration
28
28
 
29
- Check environment: `echo $HANDOFF_MODE` and `echo $HANDOFF_TASK_ID`
29
+ Determine Handoff mode and task ID. The caller (plan-coordinator) passes these as explicit text in the prompt:
30
+
31
+ ```
32
+ HANDOFF_MODE: <value>
33
+ HANDOFF_TASK_ID: <value>
34
+ ```
35
+
36
+ If the caller did NOT pass them, fall back to reading environment using the Bash tool:
37
+
38
+ ```
39
+ Bash: printenv HANDOFF_MODE || true
40
+ Bash: printenv HANDOFF_TASK_ID || true
41
+ ```
30
42
 
31
43
  **When `HANDOFF_MODE` is `1`** (autonomous Handoff agent):
32
44
  - **No interactive prompts:** Use defaults — do not attempt to ask the user questions.
33
- - **Plan annotation:** If `HANDOFF_TASK_ID` is non-empty, insert `<!-- handoff:task:<HANDOFF_TASK_ID> -->` as the very first line of the plan file, before the title. This annotation links the plan to its Handoff task for bidirectional sync.
45
+ - **Plan annotation (MANDATORY):** If `HANDOFF_TASK_ID` is non-empty, you MUST insert `<!-- handoff:task:<HANDOFF_TASK_ID> -->` as the very first line of the plan file, before the title. This annotation links the plan to its Handoff task for bidirectional sync. **Omitting this annotation when HANDOFF_TASK_ID is set is a bug.**
34
46
 
35
47
  **When `HANDOFF_MODE` is NOT `1`** (manual session):
36
48
  - If polishing an existing plan that already has a `<!-- handoff:task:<id> -->` annotation, preserve it on the first line when rewriting the file.