@e0ipso/ai-task-manager 1.36.0 → 1.37.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 (72) hide show
  1. package/README.md +26 -21
  2. package/dist/cli.js +1 -32
  3. package/dist/cli.js.map +1 -1
  4. package/dist/conflict-detector.d.ts.map +1 -1
  5. package/dist/conflict-detector.js +0 -4
  6. package/dist/conflict-detector.js.map +1 -1
  7. package/dist/index.d.ts +3 -16
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +50 -245
  10. package/dist/index.js.map +1 -1
  11. package/dist/metadata.d.ts +9 -0
  12. package/dist/metadata.d.ts.map +1 -1
  13. package/dist/metadata.js +14 -0
  14. package/dist/metadata.js.map +1 -1
  15. package/dist/types.d.ts +18 -18
  16. package/dist/types.d.ts.map +1 -1
  17. package/dist/utils.d.ts +27 -58
  18. package/dist/utils.d.ts.map +1 -1
  19. package/dist/utils.js +93 -219
  20. package/dist/utils.js.map +1 -1
  21. package/package.json +4 -2
  22. package/templates/ai-task-manager/config/TASK_MANAGER.md +3 -3
  23. package/templates/ai-task-manager/config/hooks/PRE_PHASE.md +6 -26
  24. package/templates/ai-task-manager/config/hooks/PRE_TASK_ASSIGNMENT.md +6 -24
  25. package/templates/ai-task-manager/config/templates/PLAN_TEMPLATE.md +1 -1
  26. package/templates/{assistant → harness}/agents/plan-creator.md +2 -2
  27. package/templates/harness/skills/task-create-plan/SKILL.md +120 -0
  28. package/templates/harness/skills/task-create-plan/scripts/find-task-manager-root.cjs +116 -0
  29. package/templates/harness/skills/task-create-plan/scripts/get-next-plan-id.cjs +214 -0
  30. package/templates/harness/skills/task-execute-blueprint/SKILL.md +139 -0
  31. package/templates/harness/skills/task-execute-blueprint/scripts/create-feature-branch.cjs +376 -0
  32. package/templates/harness/skills/task-execute-blueprint/scripts/find-task-manager-root.cjs +116 -0
  33. package/templates/harness/skills/task-execute-blueprint/scripts/validate-plan-blueprint.cjs +375 -0
  34. package/templates/harness/skills/task-execute-task/SKILL.md +195 -0
  35. package/templates/harness/skills/task-execute-task/scripts/check-task-dependencies.cjs +437 -0
  36. package/templates/harness/skills/task-execute-task/scripts/find-task-manager-root.cjs +116 -0
  37. package/templates/harness/skills/task-execute-task/scripts/validate-plan-blueprint.cjs +375 -0
  38. package/templates/harness/skills/task-full-workflow/SKILL.md +378 -0
  39. package/templates/harness/skills/task-full-workflow/scripts/create-feature-branch.cjs +376 -0
  40. package/templates/harness/skills/task-full-workflow/scripts/find-task-manager-root.cjs +116 -0
  41. package/templates/harness/skills/task-full-workflow/scripts/get-next-plan-id.cjs +214 -0
  42. package/templates/harness/skills/task-full-workflow/scripts/get-next-task-id.cjs +312 -0
  43. package/templates/harness/skills/task-full-workflow/scripts/validate-plan-blueprint.cjs +375 -0
  44. package/templates/harness/skills/task-generate-tasks/SKILL.md +244 -0
  45. package/templates/harness/skills/task-generate-tasks/scripts/find-task-manager-root.cjs +116 -0
  46. package/templates/harness/skills/task-generate-tasks/scripts/get-next-task-id.cjs +312 -0
  47. package/templates/harness/skills/task-generate-tasks/scripts/validate-plan-blueprint.cjs +375 -0
  48. package/templates/harness/skills/task-refine-plan/SKILL.md +205 -0
  49. package/templates/harness/skills/task-refine-plan/scripts/find-task-manager-root.cjs +116 -0
  50. package/templates/harness/skills/task-refine-plan/scripts/validate-plan-blueprint.cjs +375 -0
  51. package/dist/exec.d.ts +0 -13
  52. package/dist/exec.d.ts.map +0 -1
  53. package/dist/exec.js +0 -261
  54. package/dist/exec.js.map +0 -1
  55. package/templates/ai-task-manager/config/scripts/check-task-dependencies.cjs +0 -240
  56. package/templates/ai-task-manager/config/scripts/compose-prompt.cjs +0 -234
  57. package/templates/ai-task-manager/config/scripts/create-feature-branch.cjs +0 -204
  58. package/templates/ai-task-manager/config/scripts/extract-task-skills.cjs +0 -84
  59. package/templates/ai-task-manager/config/scripts/find-root.cjs +0 -10
  60. package/templates/ai-task-manager/config/scripts/get-next-plan-id.cjs +0 -49
  61. package/templates/ai-task-manager/config/scripts/get-next-task-id.cjs +0 -81
  62. package/templates/ai-task-manager/config/scripts/shared-utils.cjs +0 -418
  63. package/templates/ai-task-manager/config/scripts/validate-plan-blueprint.cjs +0 -138
  64. package/templates/assistant/commands/tasks/create-plan-auto.md +0 -174
  65. package/templates/assistant/commands/tasks/create-plan.md +0 -175
  66. package/templates/assistant/commands/tasks/execute-blueprint.md +0 -233
  67. package/templates/assistant/commands/tasks/execute-task.md +0 -351
  68. package/templates/assistant/commands/tasks/fix-broken-tests.md +0 -44
  69. package/templates/assistant/commands/tasks/full-workflow.md +0 -849
  70. package/templates/assistant/commands/tasks/generate-tasks.md +0 -348
  71. package/templates/assistant/commands/tasks/refine-plan-auto.md +0 -172
  72. package/templates/assistant/commands/tasks/refine-plan.md +0 -163
package/README.md CHANGED
@@ -11,19 +11,20 @@ Transform complex AI prompts into organized, executable workflows through custom
11
11
 
12
12
  ## 🚀 Quick Start
13
13
 
14
+ This project ships in two parts: the **skills** (installed by [vercel-labs/skills](https://github.com/vercel-labs/skills)) and the **workspace** (initialized by this CLI). Run both:
15
+
14
16
  ```bash
15
- # Initialize for your preferred AI assistant
16
- npx @e0ipso/ai-task-manager init --assistants claude
17
- npx @e0ipso/ai-task-manager init --assistants cursor
18
- npx @e0ipso/ai-task-manager init --assistants gemini
19
- npx @e0ipso/ai-task-manager init --assistants opencode
20
- npx @e0ipso/ai-task-manager init --assistants codex
21
- npx @e0ipso/ai-task-manager init --assistants github
22
-
23
- # Or configure multiple assistants
24
- npx @e0ipso/ai-task-manager init --assistants claude,cursor,gemini,opencode,codex,github
17
+ # 1. Install the task skills for your assistant
18
+ npx skills add e0ipso/ai-task-manager
19
+
20
+ # 2. Initialize the .ai/task-manager/ workspace
21
+ npx @e0ipso/ai-task-manager init --harnesses claude --destination-directory .
25
22
  ```
26
23
 
24
+ The skills give your assistant the planning, decomposition, and execution workflow; the CLI bootstraps `.ai/task-manager/` with hooks, templates, and the hash-tracked diff-on-conflict UX. Each step is independently re-runnable. See the [migration guide](https://mateuaguilo.com/ai-task-manager/migration.html) for upgrade flows from 1.x.
25
+
26
+ The CLI's `init` emits the shared workspace plus harness-specific agents (e.g., `.claude/agents/` for Claude). Other harnesses rely entirely on the installed skills.
27
+
27
28
  ## ✨ Key Benefits
28
29
 
29
30
  - **🔧 Fully Customizable**: Tailor hooks, templates, and workflows to your project's specific needs
@@ -45,22 +46,26 @@ Comprehensive guides covering:
45
46
 
46
47
  ## 🔄 Workflow Preview
47
48
 
48
- **Automated Workflow (Recommended for Beginners):**
49
- ```bash
50
- /tasks:full-workflow Create user authentication system
51
- ```
49
+ Once the skills are installed, invoke the workflow by intent — the assistant auto-loads the matching skill. There are no slash commands to memorize.
50
+
51
+ **Automated end-to-end run:**
52
+
53
+ > "Run the full workflow to create a user authentication system."
54
+
55
+ The `task-full-workflow` skill handles plan creation, task generation, and blueprint execution in a single pass.
56
+
57
+ **Step-by-step (for manual review between phases):**
52
58
 
53
- **Manual Workflow (Full Control):**
54
- 1. **📝 Create a plan** → `/tasks:create-plan Create user authentication system`
55
- 2. **🔍 Refine the plan** → `/tasks:refine-plan 1` (have a second assistant review the plan, ask clarifying questions, and update the document before tasks are created)
56
- 3. **📋 Generate tasks** → `/tasks:generate-tasks 1`
57
- 4. **🚀 Execute blueprint** → `/tasks:execute-blueprint 1`
59
+ 1. **📝 Create a plan** "Create a plan for a user authentication system" (`task-create-plan` skill)
60
+ 2. **🔍 Refine the plan** → "Refine plan 1" (`task-refine-plan` skill useful when a second assistant should red-team the plan)
61
+ 3. **📋 Generate tasks** → "Generate tasks for plan 1" (`task-generate-tasks` skill)
62
+ 4. **🚀 Execute blueprint** → "Execute the blueprint for plan 1" (`task-execute-blueprint` skill)
58
63
  5. **📊 Monitor progress** → `npx @e0ipso/ai-task-manager status`
59
64
  6. **🗂️ Manage plans** → `npx @e0ipso/ai-task-manager plan show 1`
60
65
 
61
- ## 🤖 Supported Assistants
66
+ ## 🤖 Supported Harnesses
62
67
 
63
- | Assistant | Interface | Setup Time |
68
+ | Harness | Interface | Setup Time |
64
69
  |-----------|-----------|------------|
65
70
  | 🎭 **Claude** | [claude.ai/code](https://claude.ai/code) | < 30 seconds |
66
71
  | 🖱️ **Cursor** | Cursor IDE | < 30 seconds |
package/dist/cli.js CHANGED
@@ -11,13 +11,12 @@ const commander_1 = require("commander");
11
11
  const index_1 = require("./index");
12
12
  const status_1 = require("./status");
13
13
  const plan_1 = require("./plan");
14
- const exec_1 = require("./exec");
15
14
  const program = new commander_1.Command();
16
15
  program.name('ai-task-manager').version('0.1.0').description('AI-powered task management CLI tool');
17
16
  program
18
17
  .command('init')
19
18
  .description('Initialize a new AI task management project')
20
- .requiredOption('--assistants <value>', 'Comma-separated list of assistants to configure (claude,gemini,opencode)')
19
+ .requiredOption('--harnesses <value>', 'Comma-separated list of harnesses to configure (claude,codex,cursor,gemini,github,opencode)')
21
20
  .option('--destination-directory <path>', 'Directory to create project structure in (default: current directory)')
22
21
  .option('--force', 'Force overwrite all files without prompting')
23
22
  .action(async (options) => {
@@ -172,36 +171,6 @@ planCommand
172
171
  }
173
172
  }
174
173
  });
175
- // Claude-exec command: validate and execute multiple plans sequentially
176
- program
177
- .command('claude-exec <plan-ids>')
178
- .description('Validate and execute multiple plans sequentially using Claude Code CLI')
179
- .action(async (planIdsStr) => {
180
- try {
181
- const planIds = planIdsStr.split(',').map(id => {
182
- const num = parseInt(id.trim(), 10);
183
- if (isNaN(num)) {
184
- console.error(`Invalid plan ID: ${id.trim()}. Must be a number.`);
185
- process.exit(1);
186
- }
187
- return num;
188
- });
189
- const result = await (0, exec_1.claudeExec)(planIds);
190
- if (result.success) {
191
- process.exit(0);
192
- }
193
- else {
194
- if (result.message) {
195
- console.error(result.message);
196
- }
197
- process.exit(1);
198
- }
199
- }
200
- catch (error) {
201
- console.error(`Unexpected error: ${error instanceof Error ? error.message : String(error)}`);
202
- process.exit(1);
203
- }
204
- });
205
174
  // Error handling for unknown commands
206
175
  program.on('command:*', async (operands) => {
207
176
  console.error(`Unknown command: ${operands[0]}`);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"conflict-detector.d.ts","sourceRoot":"","sources":["../src/conflict-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAuCrD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC,CA2CzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAMT"}
1
+ {"version":3,"file":"conflict-detector.d.ts","sourceRoot":"","sources":["../src/conflict-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkCrD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC,CA2CzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAMT"}
@@ -57,10 +57,6 @@ async function getConfigFiles(destDir) {
57
57
  for (const entry of entries) {
58
58
  const fullPath = path.join(dir, entry.name);
59
59
  const relativePath = path.relative(relativeTo, fullPath);
60
- // Skip scripts directory (not user-editable)
61
- if (relativePath.startsWith('config/scripts') || relativePath.includes('/scripts/')) {
62
- continue;
63
- }
64
60
  if (entry.isDirectory()) {
65
61
  await walkDir(fullPath, relativeTo);
66
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conflict-detector.js","sourceRoot":"","sources":["../src/conflict-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conflict-detector.js","sourceRoot":"","sources":["../src/conflict-detector.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,14 +4,14 @@
4
4
  * This file contains the implementation of the init command
5
5
  * Handles initialization of new AI task management projects
6
6
  */
7
- import { InitOptions, Assistant, CommandResult } from './types';
7
+ import { InitOptions, CommandResult } from './types';
8
8
  /**
9
9
  * Initialize a new AI Task Manager project
10
10
  *
11
- * Creates directory structures and copies template files based on the selected assistants.
11
+ * Creates directory structures and copies template files based on the selected harnesses.
12
12
  * Validates input, creates necessary directories, and copies appropriate templates.
13
13
  *
14
- * @param options - Initialization options containing assistant selection
14
+ * @param options - Initialization options containing harness selection
15
15
  * @returns CommandResult indicating success or failure with details
16
16
  */
17
17
  export declare function init(options: InitOptions): Promise<CommandResult>;
@@ -19,17 +19,4 @@ export declare function init(options: InitOptions): Promise<CommandResult>;
19
19
  * Check if a directory already has AI Task Manager initialized
20
20
  */
21
21
  export declare function isInitialized(baseDir?: string): Promise<boolean>;
22
- /**
23
- * Get information about existing initialization
24
- */
25
- export declare function getInitInfo(baseDir?: string): Promise<{
26
- hasAiTaskManager: boolean;
27
- hasClaudeConfig: boolean;
28
- hasGeminiConfig: boolean;
29
- hasOpencodeConfig: boolean;
30
- hasCodexConfig: boolean;
31
- hasCursorConfig: boolean;
32
- hasGithubConfig: boolean;
33
- assistants: Assistant[];
34
- }>;
35
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAsB,MAAM,SAAS,CAAC;AA4EpF;;;;;;;;GAQG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAkIvE;AAgRD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB,CAAC,CA4BD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAW,aAAa,EAAoC,MAAM,SAAS,CAAC;AA4EhG;;;;;;;;GAQG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CA0FvE;AAuKD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE"}
package/dist/index.js CHANGED
@@ -44,7 +44,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.init = init;
46
46
  exports.isInitialized = isInitialized;
47
- exports.getInitInfo = getInitInfo;
48
47
  const fs = __importStar(require("fs-extra"));
49
48
  const path = __importStar(require("path"));
50
49
  const chalk_1 = __importDefault(require("chalk"));
@@ -112,10 +111,10 @@ async function exists(filepath) {
112
111
  /**
113
112
  * Initialize a new AI Task Manager project
114
113
  *
115
- * Creates directory structures and copies template files based on the selected assistants.
114
+ * Creates directory structures and copies template files based on the selected harnesses.
116
115
  * Validates input, creates necessary directories, and copies appropriate templates.
117
116
  *
118
- * @param options - Initialization options containing assistant selection
117
+ * @param options - Initialization options containing harness selection
119
118
  * @returns CommandResult indicating success or failure with details
120
119
  */
121
120
  async function init(options) {
@@ -123,16 +122,16 @@ async function init(options) {
123
122
  // Determine base directory
124
123
  const baseDir = options.destinationDirectory || '.';
125
124
  const resolvedBaseDir = resolvePath(baseDir);
126
- // Parse and validate assistants
127
- const assistants = (0, utils_1.parseAssistants)(options.assistants);
128
- (0, utils_1.validateAssistants)(assistants);
125
+ // Parse and validate harnesses
126
+ const harnesses = (0, utils_1.parseHarnesses)(options.harnesses);
127
+ (0, utils_1.validateHarnesses)(harnesses);
129
128
  // ========== HEADER SECTION ==========
130
129
  console.log(chalk_1.default.bold.white('\nAI Task Manager Initialization'));
131
130
  console.log(chalk_1.default.gray(DIVIDER));
132
131
  // ========== CONFIGURATION SECTION ==========
133
132
  console.log(formatSectionHeader('Configuration'));
134
133
  console.log(` ${chalk_1.default.cyan('●')} Target Directory: ${resolvedBaseDir}`);
135
- console.log(` ${chalk_1.default.cyan('●')} Assistants: ${assistants.join(', ')}`);
134
+ console.log(` ${chalk_1.default.cyan('●')} Harnesses: ${harnesses.join(', ')}`);
136
135
  // ========== SETUP PROGRESS SECTION ==========
137
136
  console.log(formatSectionHeader('Setup Progress'));
138
137
  // Create .ai/task-manager structure
@@ -143,10 +142,14 @@ async function init(options) {
143
142
  // Copy common templates to .ai/task-manager with conflict detection
144
143
  console.log(` ${chalk_1.default.green('✓')} Copying common template files`);
145
144
  await copyCommonTemplates(baseDir, options.force || false);
146
- // Create assistant-specific directories and copy templates
147
- for (const assistant of assistants) {
148
- console.log(` ${chalk_1.default.green('✓')} Setting up ${assistant} assistant configuration`);
149
- await createAssistantStructure(assistant, baseDir);
145
+ // Create harness-specific directories and copy templates
146
+ const allCreatedAgentFiles = new Map();
147
+ for (const harness of harnesses) {
148
+ console.log(` ${chalk_1.default.green('✓')} Setting up ${harness} harness configuration`);
149
+ const created = await createHarnessStructure(harness, baseDir);
150
+ if (created.length > 0) {
151
+ allCreatedAgentFiles.set(harness, created);
152
+ }
150
153
  }
151
154
  // ========== CREATED FILES SECTION ==========
152
155
  console.log(formatSectionHeader('Created Files'));
@@ -156,69 +159,25 @@ async function init(options) {
156
159
  for (const file of commonFiles) {
157
160
  console.log(` ${chalk_1.default.blue('●')} ${file}`);
158
161
  }
159
- // Assistant-specific files (dynamically listed)
160
- for (const assistant of assistants) {
161
- const assistantLabel = assistant.charAt(0).toUpperCase() + assistant.slice(1);
162
- if (assistant === 'github') {
163
- console.log(chalk_1.default.cyan(` ${assistantLabel} Copilot Prompts:`));
164
- const files = await collectFiles(resolvePath(baseDir, '.github/prompts'));
165
- for (const file of files) {
166
- console.log(` ${chalk_1.default.blue('●')} ${file}`);
167
- }
168
- }
169
- else if (assistant === 'codex') {
170
- console.log(chalk_1.default.cyan(` ${assistantLabel} Prompts:`));
171
- const files = await collectFiles(resolvePath(baseDir, '.codex/prompts'));
172
- for (const file of files) {
173
- console.log(` ${chalk_1.default.blue('●')} ${file}`);
174
- }
175
- }
176
- else {
177
- const commandsPath = assistant === 'opencode' ? 'command' : 'commands';
178
- console.log(chalk_1.default.cyan(` ${assistantLabel} Commands:`));
179
- const cmdFiles = await collectFiles(resolvePath(baseDir, `.${assistant}/${commandsPath}`));
180
- for (const file of cmdFiles) {
181
- console.log(` ${chalk_1.default.blue('●')} ${file}`);
182
- }
183
- // Show agents separately (currently Claude-only)
184
- const agentsDir = resolvePath(baseDir, `.${assistant}/agents`);
185
- const agentFiles = await collectFiles(agentsDir);
186
- if (agentFiles.length > 0) {
187
- console.log(chalk_1.default.cyan(` ${assistantLabel} Agents:`));
188
- for (const file of agentFiles) {
189
- console.log(` ${chalk_1.default.blue('●')} ${file}`);
190
- }
191
- }
162
+ for (const [harness, files] of allCreatedAgentFiles) {
163
+ console.log(chalk_1.default.cyan(` ${harness} Agents:`));
164
+ for (const file of files) {
165
+ console.log(` ${chalk_1.default.blue('')} ${file}`);
192
166
  }
193
167
  }
194
168
  // ========== FOOTER SECTION ==========
195
169
  console.log(`\n${chalk_1.default.green('✓')} AI Task Manager initialized successfully!`);
196
170
  console.log(chalk_1.default.gray(DIVIDER));
171
+ // Post-init nudge directing users to install the task skills
172
+ console.log('\nNext: run `npx skills add e0ipso/ai-task-manager` to install the task skills for your harness(es).');
197
173
  // Add documentation link
198
174
  console.log(`\n 📚 Documentation: ${chalk_1.default.cyan('https://mateuaguilo.com/ai-task-manager')}\n`);
199
- // Add Codex-specific post-init message
200
- if (assistants.includes('codex')) {
201
- console.log(formatSectionHeader('Codex CLI Setup Instructions'));
202
- console.log(chalk_1.default.yellow(' For Codex CLI users:'));
203
- console.log(` ${chalk_1.default.blue('●')} Copy or symlink files from .codex/prompts/ to ~/.codex/prompts/`);
204
- console.log(` ${chalk_1.default.blue('●')} Restart your Codex session to load the new commands`);
205
- console.log('');
206
- console.log(chalk_1.default.cyan(' Commands will be available as:'));
207
- console.log(` ${chalk_1.default.gray('●')} /prompts:tasks-create-plan`);
208
- console.log(` ${chalk_1.default.gray('●')} /prompts:tasks-generate-tasks`);
209
- console.log(` ${chalk_1.default.gray('●')} /prompts:tasks-execute-blueprint`);
210
- console.log(` ${chalk_1.default.gray('●')} /prompts:tasks-full-workflow`);
211
- console.log(` ${chalk_1.default.gray('●')} /prompts:tasks-refine-plan`);
212
- console.log(` ${chalk_1.default.gray('●')} /prompts:tasks-execute-task`);
213
- console.log(` ${chalk_1.default.gray('●')} /prompts:tasks-fix-broken-tests`);
214
- console.log('');
215
- }
216
175
  // Show suggested workflow help text
217
176
  await displayWorkflowHelp();
218
177
  return {
219
178
  success: true,
220
179
  message: 'AI Task Manager initialized successfully!',
221
- data: { assistants },
180
+ data: { harnesses },
222
181
  };
223
182
  }
224
183
  catch (error) {
@@ -279,16 +238,11 @@ async function copyCommonTemplates(baseDir, force) {
279
238
  */
280
239
  async function createMetadata(sourceDir, destDir, metadataPath) {
281
240
  const files = {};
282
- // Get all config files (excluding scripts directory)
283
241
  async function walkDir(dir, relativeTo) {
284
242
  const entries = await fs.readdir(dir, { withFileTypes: true });
285
243
  for (const entry of entries) {
286
244
  const fullPath = path.join(dir, entry.name);
287
245
  const relativePath = path.relative(relativeTo, fullPath);
288
- // Skip scripts directory
289
- if (relativePath.startsWith('config/scripts') || relativePath.includes('/scripts/')) {
290
- continue;
291
- }
292
246
  // Skip README.md (always overwrite on init/re-init)
293
247
  if (relativePath === 'README.md') {
294
248
  continue;
@@ -317,6 +271,7 @@ async function createMetadata(sourceDir, destDir, metadataPath) {
317
271
  // Create metadata object
318
272
  const metadata = {
319
273
  version: (0, metadata_1.getPackageVersion)(),
274
+ workspaceSchemaVersion: metadata_1.CURRENT_WORKSPACE_SCHEMA_VERSION,
320
275
  timestamp: new Date().toISOString(),
321
276
  files,
322
277
  };
@@ -336,110 +291,31 @@ async function applyResolutions(sourceDir, destDir, resolutions) {
336
291
  // If 'keep', do nothing - keep user's file
337
292
  }
338
293
  }
339
- /**
340
- * Create directory structure and copy templates for a specific assistant
341
- */
342
- async function createAssistantStructure(assistant, baseDir) {
343
- const sourceDir = getTemplatePath('assistant');
344
- const assistantDir = resolvePath(baseDir, `.${assistant}`);
345
- // Check if source template directory exists
346
- if (!(await exists(sourceDir))) {
347
- throw new Error(`Template directory not found: ${sourceDir}`);
348
- }
349
- // GitHub uses .github/prompts/ directory with .prompt.md extension
350
- if (assistant === 'github') {
351
- // Create .github/prompts directory
352
- const promptsDir = resolvePath(baseDir, '.github', 'prompts');
353
- await fs.ensureDir(promptsDir);
354
- // Copy and process all template files
355
- const templateFiles = [
356
- 'create-plan.md',
357
- 'create-plan-auto.md',
358
- 'refine-plan.md',
359
- 'refine-plan-auto.md',
360
- 'generate-tasks.md',
361
- 'execute-task.md',
362
- 'execute-blueprint.md',
363
- 'fix-broken-tests.md',
364
- 'full-workflow.md',
365
- ];
366
- const templateFormat = (0, utils_1.getTemplateFormat)(assistant);
367
- for (const file of templateFiles) {
368
- const sourcePath = resolvePath(sourceDir, 'commands', 'tasks', file);
369
- const commandName = file.replace('.md', '');
370
- const destFileName = `tasks-${commandName}.prompt.md`;
371
- const destPath = resolvePath(promptsDir, destFileName);
372
- // Read and process the template with GitHub-specific conversion
373
- const processedContent = await (0, utils_1.readAndProcessTemplate)(sourcePath, templateFormat, assistant);
374
- // Write processed content to destination
375
- await (0, utils_1.writeProcessedTemplate)(processedContent, destPath);
376
- }
377
- return;
378
- }
379
- // Codex uses flat directory structure with renamed files
380
- if (assistant === 'codex') {
381
- // Create flat directory structure
382
- const promptsDir = resolvePath(baseDir, '.codex', 'prompts');
383
- await fs.ensureDir(promptsDir);
384
- // Copy and rename templates
385
- const templateFiles = [
386
- 'create-plan.md',
387
- 'create-plan-auto.md',
388
- 'generate-tasks.md',
389
- 'execute-blueprint.md',
390
- 'execute-task.md',
391
- 'fix-broken-tests.md',
392
- 'full-workflow.md',
393
- 'refine-plan.md',
394
- 'refine-plan-auto.md',
395
- ];
396
- const templateFormat = (0, utils_1.getTemplateFormat)(assistant);
397
- for (const file of templateFiles) {
398
- const sourcePath = resolvePath(sourceDir, 'commands', 'tasks', file);
399
- const destFileName = `tasks-${file}`;
400
- const destPath = resolvePath(promptsDir, destFileName);
401
- // Read and process the template
402
- const processedContent = await (0, utils_1.readAndProcessTemplate)(sourcePath, templateFormat);
403
- // Write processed content to destination
404
- await (0, utils_1.writeProcessedTemplate)(processedContent, destPath);
405
- }
406
- return;
407
- }
408
- // Determine correct commands directory name based on assistant type
409
- // OpenCode uses 'command' (singular) while Claude and Gemini use 'commands' (plural)
410
- const commandsPath = assistant === 'opencode' ? 'command' : 'commands';
411
- // Copy template structure with correct directory naming
412
- const sourceCommandsDir = resolvePath(sourceDir, 'commands');
413
- const targetCommandsDir = resolvePath(assistantDir, commandsPath);
414
- // Copy the commands directory to the correct location
415
- if (await exists(sourceCommandsDir)) {
416
- await fs.copy(sourceCommandsDir, targetCommandsDir);
294
+ async function createHarnessStructure(harness, baseDir) {
295
+ const sourceAgentsDir = getTemplatePath(path.join('harness', 'agents'));
296
+ const createdFiles = [];
297
+ if (!(await exists(sourceAgentsDir))) {
298
+ return createdFiles;
417
299
  }
418
- // Copy agent files for Claude (agents are Claude-specific)
419
- if (assistant === 'claude') {
420
- const sourceAgentsDir = resolvePath(sourceDir, 'agents');
421
- const targetAgentsDir = resolvePath(assistantDir, 'agents');
422
- if (await exists(sourceAgentsDir)) {
423
- await fs.copy(sourceAgentsDir, targetAgentsDir);
300
+ const agentFiles = (await fs.readdir(sourceAgentsDir)).filter(f => f.endsWith('.md'));
301
+ const formatInfo = (0, utils_1.getAgentFormat)(harness);
302
+ const targetDir = resolvePath(baseDir, formatInfo.directory);
303
+ await fs.ensureDir(targetDir);
304
+ for (const agentFile of agentFiles) {
305
+ const sourcePath = path.join(sourceAgentsDir, agentFile);
306
+ const content = await fs.readFile(sourcePath, 'utf-8');
307
+ const baseName = path.basename(agentFile, '.md');
308
+ const targetName = baseName + formatInfo.extension;
309
+ const targetPath = path.join(targetDir, targetName);
310
+ if (formatInfo.format === 'toml') {
311
+ await fs.writeFile(targetPath, (0, utils_1.convertAgentMdToToml)(content), 'utf-8');
424
312
  }
425
- }
426
- // Determine template format based on assistant type
427
- const templateFormat = (0, utils_1.getTemplateFormat)(assistant);
428
- // If target format is different from source (md), process files in place
429
- if (templateFormat !== 'md') {
430
- const tasksDir = resolvePath(assistantDir, `${commandsPath}/tasks`);
431
- const files = await fs.readdir(tasksDir);
432
- for (const file of files.filter(f => f.endsWith('.md'))) {
433
- const mdPath = resolvePath(tasksDir, file);
434
- const newPath = resolvePath(tasksDir, file.replace('.md', `.${templateFormat}`));
435
- // Read and process the template
436
- const processedContent = await (0, utils_1.readAndProcessTemplate)(mdPath, templateFormat);
437
- // Write processed content to new file
438
- await (0, utils_1.writeProcessedTemplate)(processedContent, newPath);
439
- // Remove original .md file
440
- await fs.remove(mdPath);
313
+ else {
314
+ await fs.writeFile(targetPath, content, 'utf-8');
441
315
  }
316
+ createdFiles.push(targetPath);
442
317
  }
318
+ return createdFiles;
443
319
  }
444
320
  /**
445
321
  * Check if a directory already has AI Task Manager initialized
@@ -448,92 +324,21 @@ async function isInitialized(baseDir) {
448
324
  const targetDir = baseDir || '.';
449
325
  return await exists(resolvePath(targetDir, '.ai/task-manager'));
450
326
  }
451
- /**
452
- * Get information about existing initialization
453
- */
454
- async function getInitInfo(baseDir) {
455
- const targetDir = baseDir || '.';
456
- const hasAiTaskManager = await exists(resolvePath(targetDir, '.ai/task-manager'));
457
- const hasClaudeConfig = await exists(resolvePath(targetDir, '.claude/commands/tasks'));
458
- const hasGeminiConfig = await exists(resolvePath(targetDir, '.gemini/commands/tasks'));
459
- const hasOpencodeConfig = await exists(resolvePath(targetDir, '.opencode/command/tasks'));
460
- const hasCodexConfig = await exists(resolvePath(targetDir, '.codex/prompts'));
461
- const hasCursorConfig = await exists(resolvePath(targetDir, '.cursor/commands/tasks'));
462
- const hasGithubConfig = await exists(resolvePath(targetDir, '.github/prompts'));
463
- const assistants = [];
464
- if (hasClaudeConfig)
465
- assistants.push('claude');
466
- if (hasGeminiConfig)
467
- assistants.push('gemini');
468
- if (hasOpencodeConfig)
469
- assistants.push('opencode');
470
- if (hasCodexConfig)
471
- assistants.push('codex');
472
- if (hasCursorConfig)
473
- assistants.push('cursor');
474
- if (hasGithubConfig)
475
- assistants.push('github');
476
- return {
477
- hasAiTaskManager,
478
- hasClaudeConfig,
479
- hasGeminiConfig,
480
- hasOpencodeConfig,
481
- hasCodexConfig,
482
- hasCursorConfig,
483
- hasGithubConfig,
484
- assistants,
485
- };
486
- }
487
327
  /**
488
328
  * Display formatted workflow help text to guide users after successful installation
489
329
  */
490
330
  async function displayWorkflowHelp() {
491
331
  console.log(formatSectionHeader('Suggested Workflow'));
492
- // One-Time Setup
493
- console.log(chalk_1.default.cyan.bold(' One-Time Setup'));
494
- console.log(chalk_1.default.gray(' ────────────────────────────────────────────────────────────────────────────────'));
495
- console.log(` Review and tweak AI Task Manager config prompts to match your project:`);
496
- console.log(` ${chalk_1.default.blue('●')} ${chalk_1.default.gray('.ai/task-manager/config/')}`);
497
- console.log('');
498
- // Automated Workflow
499
- console.log(chalk_1.default.cyan.bold(' Automated Workflow (Recommended for Simple Tasks)'));
500
- console.log(chalk_1.default.gray(' ────────────────────────────────────────────────────────────────────────────────'));
501
- console.log('');
502
- console.log(` Execute:`);
503
- console.log(` ${chalk_1.default.gray('/tasks:full-workflow Update product page with...')}`);
504
- console.log('');
505
- console.log(` This automatically:`);
506
- console.log(` ${chalk_1.default.green('✓')} Creates the plan (with clarification prompts)`);
507
- console.log(` ${chalk_1.default.green('✓')} Generates tasks`);
508
- console.log(` ${chalk_1.default.green('✓')} Executes the blueprint`);
509
- console.log(` ${chalk_1.default.green('✓')} Archives the completed plan`);
510
- console.log('');
511
- console.log(` ${chalk_1.default.blue('●')} Best for: Straightforward implementations`);
512
- console.log('');
513
- // Manual Workflow
514
- console.log(chalk_1.default.cyan.bold(' Manual Workflow (Recommended for Complex Tasks)'));
515
- console.log(chalk_1.default.gray(' ────────────────────────────────────────────────────────────────────────────────'));
516
- console.log('');
517
- console.log(` ${chalk_1.default.blue('1.')} Create a plan:`);
518
- console.log(` ${chalk_1.default.gray('/tasks:create-plan Create an authentication...')}`);
519
- console.log('');
520
- console.log(` ${chalk_1.default.blue('2.')} Provide additional context if the assistant needs it`);
521
- console.log('');
522
- console.log(` ${chalk_1.default.blue('3.')} ${chalk_1.default.yellow.bold('MANUALLY REVIEW THE PLAN')} ${chalk_1.default.yellow("(don't skip this!)")}`);
523
- console.log(` ${chalk_1.default.gray('Find it in: .ai/task-manager/plans/01--*/plan-[0-9]*--*.md')}`);
524
- console.log('');
525
- console.log(` ${chalk_1.default.blue('4.')} Create the tasks for the plan:`);
526
- console.log(` ${chalk_1.default.gray('/tasks:generate-tasks 1')}`);
527
- console.log('');
528
- console.log(` ${chalk_1.default.blue('5.')} ${chalk_1.default.yellow.bold('REVIEW THE TASKS LIST')} ${chalk_1.default.yellow('(avoid scope creep!)')}`);
529
- console.log(` ${chalk_1.default.gray('Find them in: .ai/task-manager/plans/01--*/tasks/')}`);
332
+ console.log(` ${chalk_1.default.cyan('●')} Install the task skills:`);
333
+ console.log(` ${chalk_1.default.gray('npx skills add e0ipso/ai-task-manager')}`);
530
334
  console.log('');
531
- console.log(` ${chalk_1.default.blue('6.')} Execute the tasks:`);
532
- console.log(` ${chalk_1.default.gray('/tasks:execute-blueprint 1')}`);
335
+ console.log(` ${chalk_1.default.cyan('')} Ask your AI to plan, decompose, then execute.`);
336
+ console.log(` The skills cover plan creation, refinement, task generation, and blueprint execution.`);
533
337
  console.log('');
534
- console.log(` ${chalk_1.default.blue('7.')} Review the implementation and generated tests`);
338
+ console.log(` ${chalk_1.default.cyan('')} Review intermediate artifacts between steps:`);
339
+ console.log(` ${chalk_1.default.gray('.ai/task-manager/plans/')}`);
535
340
  console.log('');
536
- console.log(chalk_1.default.yellow(`💡 Pro tip: The manual review steps are crucial for success!`));
341
+ console.log(chalk_1.default.yellow(`💡 Reviewing the plan and the task list before execution is recommended.`));
537
342
  console.log('');
538
343
  }
539
344
  //# sourceMappingURL=index.js.map