@output.ai/cli 0.4.2 → 0.5.1

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 (31) hide show
  1. package/README.md +6 -8
  2. package/dist/assets/docker/docker-compose-dev.yml +9 -1
  3. package/dist/services/coding_agents.js +180 -8
  4. package/dist/services/coding_agents.spec.js +54 -11
  5. package/dist/templates/agent_instructions/AGENTS.md.template +20 -14
  6. package/dist/templates/agent_instructions/agents/{context_fetcher.md.template → workflow_context_fetcher.md.template} +1 -1
  7. package/dist/templates/agent_instructions/agents/workflow_debugger.md.template +98 -0
  8. package/dist/templates/agent_instructions/agents/workflow_planner.md.template +3 -3
  9. package/dist/templates/agent_instructions/agents/{prompt_writer.md.template → workflow_prompt_writer.md.template} +1 -1
  10. package/dist/templates/agent_instructions/agents/workflow_quality.md.template +2 -2
  11. package/dist/templates/agent_instructions/commands/build_workflow.md.template +2 -2
  12. package/dist/templates/agent_instructions/commands/debug_workflow.md.template +198 -0
  13. package/dist/templates/agent_instructions/commands/plan_workflow.md.template +3 -3
  14. package/dist/templates/agent_instructions/skills/output-error-direct-io/SKILL.md.template +249 -0
  15. package/dist/templates/agent_instructions/skills/output-error-http-client/SKILL.md.template +298 -0
  16. package/dist/templates/agent_instructions/skills/output-error-missing-schemas/SKILL.md.template +265 -0
  17. package/dist/templates/agent_instructions/skills/output-error-nondeterminism/SKILL.md.template +252 -0
  18. package/dist/templates/agent_instructions/skills/output-error-try-catch/SKILL.md.template +226 -0
  19. package/dist/templates/agent_instructions/skills/output-error-zod-import/SKILL.md.template +209 -0
  20. package/dist/templates/agent_instructions/skills/output-services-check/SKILL.md.template +128 -0
  21. package/dist/templates/agent_instructions/skills/output-workflow-list/SKILL.md.template +117 -0
  22. package/dist/templates/agent_instructions/skills/output-workflow-result/SKILL.md.template +199 -0
  23. package/dist/templates/agent_instructions/skills/output-workflow-run/SKILL.md.template +228 -0
  24. package/dist/templates/agent_instructions/skills/output-workflow-runs-list/SKILL.md.template +141 -0
  25. package/dist/templates/agent_instructions/skills/output-workflow-start/SKILL.md.template +201 -0
  26. package/dist/templates/agent_instructions/skills/output-workflow-status/SKILL.md.template +151 -0
  27. package/dist/templates/agent_instructions/skills/output-workflow-stop/SKILL.md.template +164 -0
  28. package/dist/templates/agent_instructions/skills/output-workflow-trace/SKILL.md.template +134 -0
  29. package/dist/templates/project/README.md.template +2 -2
  30. package/dist/templates/project/package.json.template +3 -2
  31. package/package.json +1 -1
package/README.md CHANGED
@@ -5,11 +5,7 @@ Command-line interface for creating and running Output Framework workflows.
5
5
  [![npm version](https://img.shields.io/npm/v/@output.ai/cli)](https://www.npmjs.com/package/@output.ai/cli)
6
6
  [![Documentation](https://img.shields.io/badge/docs-docs.output.ai-blue)](https://docs.output.ai/packages/cli)
7
7
 
8
- ## Installation
9
-
10
- ```bash
11
- npm install -g @output.ai/cli
12
- ```
8
+ > **Full Documentation**: For detailed command options, flags, and examples, see the [CLI Reference](https://docs.output.ai/packages/cli).
13
9
 
14
10
  ## Quick Start
15
11
 
@@ -35,11 +31,13 @@ output workflow run simple --input '{"question": "who is ada lovelace?"}'
35
31
  | `output workflow plan` | Generate a workflow plan from description |
36
32
  | `output workflow generate` | Generate a workflow from plan |
37
33
  | `output workflow list` | List available workflows |
34
+ | `output workflow runs list` | List recent workflow runs |
38
35
  | `output workflow run` | Execute a workflow synchronously |
39
36
  | `output workflow start` | Start a workflow asynchronously |
40
37
  | `output workflow status` | Get workflow execution status |
41
38
  | `output workflow result` | Get workflow execution result |
42
39
  | `output workflow stop` | Stop a workflow execution |
40
+ | `output workflow debug` | Display workflow execution trace |
43
41
 
44
42
  ## Development Services
45
43
 
@@ -53,7 +51,7 @@ Running `output dev` starts:
53
51
 
54
52
  ## Documentation
55
53
 
56
- For comprehensive documentation, visit:
54
+ For comprehensive documentation including all command flags and detailed examples:
57
55
 
58
- - [CLI Reference](https://docs.output.ai/packages/cli)
59
- - [Getting Started](https://docs.output.ai/quickstart)
56
+ - [CLI Reference](https://docs.output.ai/packages/cli) - Complete command documentation
57
+ - [Getting Started](https://docs.output.ai/quickstart) - Project setup guide
@@ -105,7 +105,15 @@ services:
105
105
  - TEMPORAL_ADDRESS=temporal:7233
106
106
  - TRACE_LOCAL_ON=true
107
107
  - HOST_TRACE_PATH=${PWD}/logs
108
- command: npm run start-worker
108
+ command: >
109
+ sh -c "
110
+ npm run output:worker:install &&
111
+ echo 'Installed dependencies' &&
112
+ npm run output:worker:build &&
113
+ echo 'Built worker' &&
114
+ npm run output:worker:start &&
115
+ echo 'Started worker'
116
+ "
109
117
  working_dir: /app
110
118
  volumes:
111
119
  - ./:/app
@@ -36,19 +36,29 @@ export const AGENT_CONFIGS = {
36
36
  },
37
37
  {
38
38
  type: 'template',
39
- from: 'agents/context_fetcher.md.template',
40
- to: `${AGENT_CONFIG_DIR}/agents/context_fetcher.md`
39
+ from: 'agents/workflow_context_fetcher.md.template',
40
+ to: `${AGENT_CONFIG_DIR}/agents/workflow_context_fetcher.md`
41
41
  },
42
42
  {
43
43
  type: 'template',
44
- from: 'agents/prompt_writer.md.template',
45
- to: `${AGENT_CONFIG_DIR}/agents/prompt_writer.md`
44
+ from: 'agents/workflow_prompt_writer.md.template',
45
+ to: `${AGENT_CONFIG_DIR}/agents/workflow_prompt_writer.md`
46
+ },
47
+ {
48
+ type: 'template',
49
+ from: 'agents/workflow_debugger.md.template',
50
+ to: `${AGENT_CONFIG_DIR}/agents/workflow_debugger.md`
46
51
  },
47
52
  {
48
53
  type: 'template',
49
54
  from: 'commands/plan_workflow.md.template',
50
55
  to: `${AGENT_CONFIG_DIR}/commands/plan_workflow.md`
51
56
  },
57
+ {
58
+ type: 'template',
59
+ from: 'commands/debug_workflow.md.template',
60
+ to: `${AGENT_CONFIG_DIR}/commands/debug_workflow.md`
61
+ },
52
62
  {
53
63
  type: 'template',
54
64
  from: 'commands/build_workflow.md.template',
@@ -63,6 +73,82 @@ export const AGENT_CONFIGS = {
63
73
  type: 'template',
64
74
  from: 'meta/post_flight.md.template',
65
75
  to: '.outputai/meta/post_flight.md'
76
+ },
77
+ // Skills (all at top level - no nesting allowed)
78
+ {
79
+ type: 'template',
80
+ from: 'skills/output-services-check/SKILL.md.template',
81
+ to: `${AGENT_CONFIG_DIR}/skills/output-services-check/SKILL.md`
82
+ },
83
+ {
84
+ type: 'template',
85
+ from: 'skills/output-workflow-trace/SKILL.md.template',
86
+ to: `${AGENT_CONFIG_DIR}/skills/output-workflow-trace/SKILL.md`
87
+ },
88
+ {
89
+ type: 'template',
90
+ from: 'skills/output-workflow-list/SKILL.md.template',
91
+ to: `${AGENT_CONFIG_DIR}/skills/output-workflow-list/SKILL.md`
92
+ },
93
+ {
94
+ type: 'template',
95
+ from: 'skills/output-workflow-runs-list/SKILL.md.template',
96
+ to: `${AGENT_CONFIG_DIR}/skills/output-workflow-runs-list/SKILL.md`
97
+ },
98
+ {
99
+ type: 'template',
100
+ from: 'skills/output-workflow-run/SKILL.md.template',
101
+ to: `${AGENT_CONFIG_DIR}/skills/output-workflow-run/SKILL.md`
102
+ },
103
+ {
104
+ type: 'template',
105
+ from: 'skills/output-workflow-start/SKILL.md.template',
106
+ to: `${AGENT_CONFIG_DIR}/skills/output-workflow-start/SKILL.md`
107
+ },
108
+ {
109
+ type: 'template',
110
+ from: 'skills/output-workflow-status/SKILL.md.template',
111
+ to: `${AGENT_CONFIG_DIR}/skills/output-workflow-status/SKILL.md`
112
+ },
113
+ {
114
+ type: 'template',
115
+ from: 'skills/output-workflow-result/SKILL.md.template',
116
+ to: `${AGENT_CONFIG_DIR}/skills/output-workflow-result/SKILL.md`
117
+ },
118
+ {
119
+ type: 'template',
120
+ from: 'skills/output-workflow-stop/SKILL.md.template',
121
+ to: `${AGENT_CONFIG_DIR}/skills/output-workflow-stop/SKILL.md`
122
+ },
123
+ {
124
+ type: 'template',
125
+ from: 'skills/output-error-zod-import/SKILL.md.template',
126
+ to: `${AGENT_CONFIG_DIR}/skills/output-error-zod-import/SKILL.md`
127
+ },
128
+ {
129
+ type: 'template',
130
+ from: 'skills/output-error-nondeterminism/SKILL.md.template',
131
+ to: `${AGENT_CONFIG_DIR}/skills/output-error-nondeterminism/SKILL.md`
132
+ },
133
+ {
134
+ type: 'template',
135
+ from: 'skills/output-error-try-catch/SKILL.md.template',
136
+ to: `${AGENT_CONFIG_DIR}/skills/output-error-try-catch/SKILL.md`
137
+ },
138
+ {
139
+ type: 'template',
140
+ from: 'skills/output-error-missing-schemas/SKILL.md.template',
141
+ to: `${AGENT_CONFIG_DIR}/skills/output-error-missing-schemas/SKILL.md`
142
+ },
143
+ {
144
+ type: 'template',
145
+ from: 'skills/output-error-direct-io/SKILL.md.template',
146
+ to: `${AGENT_CONFIG_DIR}/skills/output-error-direct-io/SKILL.md`
147
+ },
148
+ {
149
+ type: 'template',
150
+ from: 'skills/output-error-http-client/SKILL.md.template',
151
+ to: `${AGENT_CONFIG_DIR}/skills/output-error-http-client/SKILL.md`
66
152
  }
67
153
  ]
68
154
  },
@@ -87,23 +173,109 @@ export const AGENT_CONFIGS = {
87
173
  },
88
174
  {
89
175
  type: 'symlink',
90
- from: `${AGENT_CONFIG_DIR}/agents/context_fetcher.md`,
91
- to: '.claude/agents/context_fetcher.md'
176
+ from: `${AGENT_CONFIG_DIR}/agents/workflow_context_fetcher.md`,
177
+ to: '.claude/agents/workflow_context_fetcher.md'
92
178
  },
93
179
  {
94
180
  type: 'symlink',
95
- from: `${AGENT_CONFIG_DIR}/agents/prompt_writer.md`,
96
- to: '.claude/agents/prompt_writer.md'
181
+ from: `${AGENT_CONFIG_DIR}/agents/workflow_prompt_writer.md`,
182
+ to: '.claude/agents/workflow_prompt_writer.md'
183
+ },
184
+ {
185
+ type: 'symlink',
186
+ from: `${AGENT_CONFIG_DIR}/agents/workflow_debugger.md`,
187
+ to: '.claude/agents/workflow_debugger.md'
97
188
  },
98
189
  {
99
190
  type: 'symlink',
100
191
  from: `${AGENT_CONFIG_DIR}/commands/plan_workflow.md`,
101
192
  to: '.claude/commands/plan_workflow.md'
102
193
  },
194
+ {
195
+ type: 'symlink',
196
+ from: `${AGENT_CONFIG_DIR}/commands/debug_workflow.md`,
197
+ to: '.claude/commands/debug_workflow.md'
198
+ },
103
199
  {
104
200
  type: 'symlink',
105
201
  from: `${AGENT_CONFIG_DIR}/commands/build_workflow.md`,
106
202
  to: '.claude/commands/build_workflow.md'
203
+ },
204
+ // Skills Symlinks (all at top level - no nesting allowed)
205
+ {
206
+ type: 'symlink',
207
+ from: `${AGENT_CONFIG_DIR}/skills/output-services-check/SKILL.md`,
208
+ to: '.claude/skills/output-services-check/SKILL.md'
209
+ },
210
+ {
211
+ type: 'symlink',
212
+ from: `${AGENT_CONFIG_DIR}/skills/output-workflow-trace/SKILL.md`,
213
+ to: '.claude/skills/output-workflow-trace/SKILL.md'
214
+ },
215
+ {
216
+ type: 'symlink',
217
+ from: `${AGENT_CONFIG_DIR}/skills/output-workflow-list/SKILL.md`,
218
+ to: '.claude/skills/output-workflow-list/SKILL.md'
219
+ },
220
+ {
221
+ type: 'symlink',
222
+ from: `${AGENT_CONFIG_DIR}/skills/output-workflow-runs-list/SKILL.md`,
223
+ to: '.claude/skills/output-workflow-runs-list/SKILL.md'
224
+ },
225
+ {
226
+ type: 'symlink',
227
+ from: `${AGENT_CONFIG_DIR}/skills/output-workflow-run/SKILL.md`,
228
+ to: '.claude/skills/output-workflow-run/SKILL.md'
229
+ },
230
+ {
231
+ type: 'symlink',
232
+ from: `${AGENT_CONFIG_DIR}/skills/output-workflow-start/SKILL.md`,
233
+ to: '.claude/skills/output-workflow-start/SKILL.md'
234
+ },
235
+ {
236
+ type: 'symlink',
237
+ from: `${AGENT_CONFIG_DIR}/skills/output-workflow-status/SKILL.md`,
238
+ to: '.claude/skills/output-workflow-status/SKILL.md'
239
+ },
240
+ {
241
+ type: 'symlink',
242
+ from: `${AGENT_CONFIG_DIR}/skills/output-workflow-result/SKILL.md`,
243
+ to: '.claude/skills/output-workflow-result/SKILL.md'
244
+ },
245
+ {
246
+ type: 'symlink',
247
+ from: `${AGENT_CONFIG_DIR}/skills/output-workflow-stop/SKILL.md`,
248
+ to: '.claude/skills/output-workflow-stop/SKILL.md'
249
+ },
250
+ {
251
+ type: 'symlink',
252
+ from: `${AGENT_CONFIG_DIR}/skills/output-error-zod-import/SKILL.md`,
253
+ to: '.claude/skills/output-error-zod-import/SKILL.md'
254
+ },
255
+ {
256
+ type: 'symlink',
257
+ from: `${AGENT_CONFIG_DIR}/skills/output-error-nondeterminism/SKILL.md`,
258
+ to: '.claude/skills/output-error-nondeterminism/SKILL.md'
259
+ },
260
+ {
261
+ type: 'symlink',
262
+ from: `${AGENT_CONFIG_DIR}/skills/output-error-try-catch/SKILL.md`,
263
+ to: '.claude/skills/output-error-try-catch/SKILL.md'
264
+ },
265
+ {
266
+ type: 'symlink',
267
+ from: `${AGENT_CONFIG_DIR}/skills/output-error-missing-schemas/SKILL.md`,
268
+ to: '.claude/skills/output-error-missing-schemas/SKILL.md'
269
+ },
270
+ {
271
+ type: 'symlink',
272
+ from: `${AGENT_CONFIG_DIR}/skills/output-error-direct-io/SKILL.md`,
273
+ to: '.claude/skills/output-error-direct-io/SKILL.md'
274
+ },
275
+ {
276
+ type: 'symlink',
277
+ from: `${AGENT_CONFIG_DIR}/skills/output-error-http-client/SKILL.md`,
278
+ to: '.claude/skills/output-error-http-client/SKILL.md'
107
279
  }
108
280
  ]
109
281
  }
@@ -33,17 +33,23 @@ describe('coding_agents service', () => {
33
33
  expect(files).toContain('CLAUDE.md');
34
34
  expect(files).toContain('.claude/agents/workflow_planner.md');
35
35
  expect(files).toContain('.claude/commands/plan_workflow.md');
36
+ // Spot check skill files (all at top level - no nesting)
37
+ expect(files).toContain('.outputai/skills/output-services-check/SKILL.md');
38
+ expect(files).toContain('.outputai/skills/output-workflow-list/SKILL.md');
39
+ expect(files).toContain('.outputai/skills/output-error-zod-import/SKILL.md');
40
+ expect(files).toContain('.claude/skills/output-workflow-trace/SKILL.md');
41
+ expect(files).toContain('.claude/skills/output-workflow-run/SKILL.md');
42
+ expect(files).toContain('.claude/skills/output-error-nondeterminism/SKILL.md');
36
43
  });
37
44
  it('should include both outputai and claude-code files', () => {
38
45
  const files = getRequiredFiles();
39
46
  const expectedCount = AGENT_CONFIGS.outputai.mappings.length +
40
47
  AGENT_CONFIGS['claude-code'].mappings.length;
41
48
  expect(files.length).toBe(expectedCount);
42
- expect(files.length).toBe(16);
43
49
  });
44
50
  it('should have outputai files with .outputai prefix', () => {
45
51
  const files = getRequiredFiles();
46
- const outputaiFiles = files.slice(0, 9);
52
+ const outputaiFiles = files.slice(0, 26);
47
53
  outputaiFiles.forEach(file => {
48
54
  expect(file).toMatch(/^\.outputai\//);
49
55
  });
@@ -78,19 +84,56 @@ describe('coding_agents service', () => {
78
84
  '.outputai/AGENTS.md',
79
85
  '.outputai/agents/workflow_planner.md',
80
86
  '.outputai/agents/workflow_quality.md',
81
- '.outputai/agents/context_fetcher.md',
82
- '.outputai/agents/prompt_writer.md',
87
+ '.outputai/agents/workflow_context_fetcher.md',
88
+ '.outputai/agents/workflow_prompt_writer.md',
89
+ '.outputai/agents/workflow_debugger.md',
83
90
  '.outputai/commands/plan_workflow.md',
91
+ '.outputai/commands/debug_workflow.md',
84
92
  '.outputai/commands/build_workflow.md',
85
93
  '.outputai/meta/pre_flight.md',
86
94
  '.outputai/meta/post_flight.md',
95
+ // Skills (all at top level - no nesting allowed)
96
+ '.outputai/skills/output-services-check/SKILL.md',
97
+ '.outputai/skills/output-workflow-trace/SKILL.md',
98
+ '.outputai/skills/output-workflow-list/SKILL.md',
99
+ '.outputai/skills/output-workflow-runs-list/SKILL.md',
100
+ '.outputai/skills/output-workflow-run/SKILL.md',
101
+ '.outputai/skills/output-workflow-start/SKILL.md',
102
+ '.outputai/skills/output-workflow-status/SKILL.md',
103
+ '.outputai/skills/output-workflow-result/SKILL.md',
104
+ '.outputai/skills/output-workflow-stop/SKILL.md',
105
+ '.outputai/skills/output-error-zod-import/SKILL.md',
106
+ '.outputai/skills/output-error-nondeterminism/SKILL.md',
107
+ '.outputai/skills/output-error-try-catch/SKILL.md',
108
+ '.outputai/skills/output-error-missing-schemas/SKILL.md',
109
+ '.outputai/skills/output-error-direct-io/SKILL.md',
110
+ '.outputai/skills/output-error-http-client/SKILL.md',
111
+ // Claude-code symlinks
87
112
  'CLAUDE.md',
88
113
  '.claude/agents/workflow_planner.md',
89
114
  '.claude/agents/workflow_quality.md',
90
- '.claude/agents/context_fetcher.md',
91
- '.claude/agents/prompt_writer.md',
115
+ '.claude/agents/workflow_context_fetcher.md',
116
+ '.claude/agents/workflow_prompt_writer.md',
117
+ '.claude/agents/workflow_debugger.md',
92
118
  '.claude/commands/plan_workflow.md',
93
- '.claude/commands/build_workflow.md'
119
+ '.claude/commands/debug_workflow.md',
120
+ '.claude/commands/build_workflow.md',
121
+ // Claude-code skill symlinks (all at top level - no nesting allowed)
122
+ '.claude/skills/output-services-check/SKILL.md',
123
+ '.claude/skills/output-workflow-trace/SKILL.md',
124
+ '.claude/skills/output-workflow-list/SKILL.md',
125
+ '.claude/skills/output-workflow-runs-list/SKILL.md',
126
+ '.claude/skills/output-workflow-run/SKILL.md',
127
+ '.claude/skills/output-workflow-start/SKILL.md',
128
+ '.claude/skills/output-workflow-status/SKILL.md',
129
+ '.claude/skills/output-workflow-result/SKILL.md',
130
+ '.claude/skills/output-workflow-stop/SKILL.md',
131
+ '.claude/skills/output-error-zod-import/SKILL.md',
132
+ '.claude/skills/output-error-nondeterminism/SKILL.md',
133
+ '.claude/skills/output-error-try-catch/SKILL.md',
134
+ '.claude/skills/output-error-missing-schemas/SKILL.md',
135
+ '.claude/skills/output-error-direct-io/SKILL.md',
136
+ '.claude/skills/output-error-http-client/SKILL.md'
94
137
  ],
95
138
  isComplete: false
96
139
  });
@@ -104,7 +147,7 @@ describe('coding_agents service', () => {
104
147
  missingFiles: [],
105
148
  isComplete: true
106
149
  });
107
- expect(access).toHaveBeenCalledTimes(17); // dir + 9 outputai + 7 claude-code
150
+ expect(access).toHaveBeenCalledTimes(51); // dir + 26 outputai + 24 claude-code
108
151
  });
109
152
  it('should return missing files when some files do not exist', async () => {
110
153
  const missingFiles = new Set([
@@ -180,10 +223,10 @@ describe('coding_agents service', () => {
180
223
  force: false,
181
224
  agentProvider: 'claude-code'
182
225
  });
183
- // Should create outputai files (6 templates)
226
+ // Should create outputai files (26 templates)
184
227
  expect(fs.writeFile).toHaveBeenCalledWith(expect.stringContaining('AGENTS.md'), expect.any(String), 'utf-8');
185
- // Should create symlinks (7 symlinks for claude-code)
186
- expect(fs.symlink).toHaveBeenCalledTimes(7);
228
+ // Should create symlinks (24 symlinks for claude-code)
229
+ expect(fs.symlink).toHaveBeenCalledTimes(24);
187
230
  });
188
231
  it('should skip existing files when force is false', async () => {
189
232
  // Mock some files exist
@@ -40,17 +40,17 @@ src/workflows/{name}/
40
40
  ## Commands
41
41
 
42
42
  ```bash
43
- output dev # Start dev (Temporal:8080, API:3001)
44
- output workflow list # List workflows
43
+ npx output dev # Start dev (Temporal:8080, API:3001)
44
+ npx output workflow list # List workflows
45
45
 
46
46
  # Sync execution (waits for result)
47
- output workflow run <name> --input <JSON|JSON_FILE> # Execute and wait
47
+ npx output workflow run <name> --input <JSON|JSON_FILE> # Execute and wait
48
48
 
49
49
  # Async execution
50
- output workflow start <name> --input <JSON|JSON_FILE> # Start workflow, returns ID
51
- output workflow status <workflowId> # Check execution status
52
- output workflow result <workflowId> # Get result when complete
53
- output workflow stop <workflowId> # Cancel running workflow
50
+ npx output workflow start <name> --input <JSON|JSON_FILE> # Start workflow, returns ID
51
+ npx output workflow status <workflowId> # Check execution status
52
+ npx output workflow result <workflowId> # Get result when complete
53
+ npx output workflow stop <workflowId> # Cancel running workflow
54
54
  ```
55
55
 
56
56
  ## Workflow Pattern
@@ -205,15 +205,21 @@ throw new FatalError('Critical failure - do not retry');
205
205
  throw new ValidationError('Invalid input format');
206
206
  ```
207
207
 
208
- ## Agent System
208
+ ## Sub-Agents
209
209
 
210
210
  For workflow planning and implementation:
211
- - `.claude/agents/workflow_planner.md` - Workflow architecture specialist
212
- - `.claude/agents/workflow_quality.md` - Workflow quality and best practices specialist
213
- - `.claude/agents/prompt_writer.md` - Prompt file creation and review specialist
214
- - `.claude/agents/context_fetcher.md` - Efficient context retrieval (used by other agents)
215
- - `.claude/commands/plan_workflow.md` - Planning command
216
- - `.claude/commands/build_workflow.md` - Implementation command
211
+ - workflow-planner: `.claude/agents/workflow_planner.md` - Workflow architecture specialist
212
+ - workflow-quality: `.claude/agents/workflow_quality.md` - Workflow quality and best practices specialist
213
+ - workflow-prompt-writer: `.claude/agents/workflow_prompt_writer.md` - Prompt file creation and review specialist
214
+ - workflow-context-fetcher: `.claude/agents/workflow_context_fetcher.md` - Efficient context retrieval (used by other agents)
215
+ - workflow-debugger: `.claude/agents/workflow_debugger.md` - Workflow debugging specialist
216
+
217
+ ## Commands
218
+
219
+ For workflow planning and implementation:
220
+ - /plan_workflow: `.claude/commands/plan_workflow.md` - Planning command
221
+ - /build_workflow: `.claude/commands/build_workflow.md` - Implementation command
222
+ - /debug_workflow: `.claude/commands/debug_workflow.md` - Debugging command
217
223
 
218
224
  ## Configuration
219
225
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: context-fetcher
2
+ name: workflow-context-fetcher
3
3
  description: Use proactively to retrieve and extract relevant information from Output SDK project documentation files. Checks if content is already in context before returning.
4
4
  tools: Read, Grep, Glob
5
5
  model: haiku
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: workflow-debugger
3
+ description: Use this agent when you need to debug Output SDK workflows in local development. Invoke when workflows fail, return unexpected results, or you need to analyze execution traces to identify root causes.
4
+ model: opus
5
+ color: yellow
6
+ ---
7
+
8
+ # Output SDK Workflow Debugger Agent
9
+
10
+ ## Identity
11
+
12
+ You are an Output SDK debugging expert who specializes in diagnosing and resolving workflow execution issues in local development environments. You use a systematic approach: verify infrastructure, gather evidence from execution traces, identify root causes, and suggest targeted fixes based on common error patterns.
13
+
14
+ ## Context Retrieval
15
+
16
+ Use the `workflow-quality` subagent for:
17
+ - **Code Quality Guidance**: Import conventions, determinism rules, step boundaries
18
+ - **Best Practices**: Schema definitions, retry policies, error handling
19
+ - **Common Pitfalls**: Known issues and their solutions
20
+
21
+ Use the `workflow-context-fetcher` subagent for:
22
+ - **Project Structure**: Find workflow files in `src/workflows/*/`
23
+ - **Existing Patterns**: Examine similar implementations for comparison
24
+
25
+ ## CLI Commands for Debugging
26
+
27
+ For detailed command usage, Claude will automatically invoke the relevant skill.
28
+
29
+ ### Quick Reference
30
+
31
+ | Command | Purpose |
32
+ |---------|---------|
33
+ | `npx output dev` | Start development services |
34
+ | `npx output workflow list` | List available workflows |
35
+ | `npx output workflow runs list` | List execution history |
36
+ | `npx output workflow run` | Execute synchronously |
37
+ | `npx output workflow start` | Start asynchronously |
38
+ | `npx output workflow status` | Check execution status |
39
+ | `npx output workflow result` | Get execution result |
40
+ | `npx output workflow stop` | Stop running workflow |
41
+ | `npx output workflow debug` | Analyze execution trace |
42
+
43
+ ## Temporal UI
44
+
45
+ For visual workflow inspection and detailed execution timelines, access the Temporal Web UI at:
46
+
47
+ **http://localhost:8080**
48
+
49
+ The Temporal UI provides real-time visibility into workflow executions, event history, and task queues.
50
+
51
+ ## Systematic Debugging Approach
52
+
53
+ ### Step 1: Verify Infrastructure
54
+ Confirm Docker containers are running and services are active.
55
+ - **Skill**: `output-services-check`
56
+
57
+ ### Step 2: Gather Evidence
58
+ List recent runs and identify the failing workflow ID.
59
+ - **Skills**: `output-workflow-runs-list`, `output-workflow-trace`
60
+
61
+ ### Step 3: Analyze Trace
62
+ Examine the trace for error messages, failed steps, and I/O data.
63
+ - **Skill**: `output-workflow-trace`
64
+
65
+ ### Step 4: Apply Fix
66
+ Match error symptoms to solutions and verify the fix.
67
+ - **Skills**: `output-error-*` (matched by symptoms)
68
+
69
+ ## Example Interaction
70
+
71
+ **User**: "My workflow is failing but I don't know why. The run ID is abc123."
72
+
73
+ **Agent**: Let me help you debug this workflow. First, let's get the execution trace:
74
+
75
+ ```bash
76
+ npx output workflow debug abc123 --format json
77
+ ```
78
+
79
+ This will show us exactly where the workflow failed and what error occurred. While I analyze the trace, you can also check the Temporal UI at http://localhost:8080 for a visual timeline of the execution.
80
+
81
+ **User**: "The trace shows an error about incompatible schemas in step 'processData'."
82
+
83
+ **Agent**: This is likely the Zod import source issue. Check your step file - you're probably importing `z` from `zod` instead of `@output.ai/core`. These create different schema instances that aren't compatible.
84
+
85
+ Change:
86
+ ```typescript
87
+ import { z } from 'zod';
88
+ ```
89
+
90
+ To:
91
+ ```typescript
92
+ import { z } from '@output.ai/core';
93
+ ```
94
+
95
+ After making this change, run the workflow again with `npx output workflow run <workflowName>` to verify the fix.
96
+
97
+ ---
98
+ *This agent specializes in debugging Output SDK workflows in local development environments.*
@@ -14,12 +14,12 @@ You are a Output SDK workflow planning specialist who follows structured XML-bas
14
14
  Your workflow planning follows the structured process defined in `/plan_workflow` command with explicit numbered steps and validation checkpoints.
15
15
 
16
16
  ### Context Retrieval
17
- Use the `context-fetcher` subagent to retrieve documentation only if not already in context:
17
+ Use the `workflow-context-fetcher` subagent to retrieve documentation only if not already in context:
18
18
  - **Pre-Flight**: `.outputai/meta/pre_flight.md` - validation rules and smart defaults
19
19
  - **Post-Flight**: `.outputai/meta/post_flight.md` - completion checklist
20
20
  - **Existing Patterns**: `src/workflows/*/workflow.ts` - similar workflow patterns
21
21
 
22
- Use the `prompt-writer` subagent for:
22
+ Use the `workflow-prompt-writer` subagent for:
23
23
  - Creating and reviewing `.prompt` files
24
24
  - Liquid.js template syntax guidance
25
25
  - Provider/model configuration
@@ -64,7 +64,7 @@ Only request clarification for:
64
64
  - Specify workerModule service usage
65
65
 
66
66
  ### 🏗️ Step 5-6: Prompt & Orchestration Planning
67
- - Design LLM prompts with template variables (delegate to `prompt-writer` subagent for implementation)
67
+ - Design LLM prompts with template variables (delegate to `workflow-prompt-writer` subagent for implementation)
68
68
  - Define workflow execution logic step-by-step
69
69
  - Plan conditional logic and data flow
70
70
  - Generate TypeScript code templates
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: prompt-writer
2
+ name: workflow-prompt-writer
3
3
  description: Use this agent when writing, reviewing, or debugging LLM prompt files (.prompt). Specializes in Liquid.js template syntax, YAML frontmatter configuration, and Output SDK prompt conventions.
4
4
  tools: Read, Write, Edit, Grep, Glob
5
5
  model: sonnet
@@ -13,11 +13,11 @@ You are an Output SDK implementation expert who ensures workflow code follows be
13
13
 
14
14
  ## Context Retrieval
15
15
 
16
- Use the `context-fetcher` subagent to efficiently retrieve:
16
+ Use the `workflow-context-fetcher` subagent to efficiently retrieve:
17
17
  - **Existing Patterns**: Find similar implementations in `src/workflows/*/`
18
18
  - **Project Conventions**: Check `.outputai/AGENTS.md` for project-specific rules
19
19
 
20
- Use the `prompt-writer` subagent for:
20
+ Use the `workflow-prompt-writer` subagent for:
21
21
  - Creating new `.prompt` files
22
22
  - Reviewing or debugging prompt template syntax
23
23
  - Understanding Liquid.js syntax and YAML frontmatter
@@ -25,7 +25,7 @@ Implement the workflow described in the plan document, following Output SDK patt
25
25
 
26
26
  <process_flow>
27
27
 
28
- <step number="1" name="plan_analysis" subagent="context-fetcher">
28
+ <step number="1" name="plan_analysis" subagent="workflow-context-fetcher">
29
29
 
30
30
  ### Step 1: Plan Analysis
31
31
 
@@ -122,7 +122,7 @@ export const stepName = step( {
122
122
 
123
123
  </step>
124
124
 
125
- <step number="4" name="prompt_templates" subagent="prompt-writer">
125
+ <step number="4" name="prompt_templates" subagent="workflow-prompt-writer">
126
126
 
127
127
  ### Step 4: Prompt Templates (if needed)
128
128