claude-mcp-workflow 0.1.0 → 0.1.5

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 (58) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.mcp.json +1 -2
  3. package/README.md +86 -13
  4. package/build/dashboard.d.ts.map +1 -1
  5. package/build/dashboard.js +7 -0
  6. package/build/dashboard.js.map +1 -1
  7. package/build/engine.d.ts +18 -1
  8. package/build/engine.d.ts.map +1 -1
  9. package/build/engine.js +318 -9
  10. package/build/engine.js.map +1 -1
  11. package/build/executor.d.ts +8 -0
  12. package/build/executor.d.ts.map +1 -0
  13. package/build/executor.js +133 -0
  14. package/build/executor.js.map +1 -0
  15. package/build/index.js +8 -1
  16. package/build/index.js.map +1 -1
  17. package/build/loader.d.ts.map +1 -1
  18. package/build/loader.js +37 -4
  19. package/build/loader.js.map +1 -1
  20. package/build/modifier.d.ts +1 -9
  21. package/build/modifier.d.ts.map +1 -1
  22. package/build/modifier.js +4 -0
  23. package/build/modifier.js.map +1 -1
  24. package/build/template.d.ts +2 -0
  25. package/build/template.d.ts.map +1 -0
  26. package/build/template.js +21 -0
  27. package/build/template.js.map +1 -0
  28. package/build/tools.d.ts.map +1 -1
  29. package/build/tools.js +39 -32
  30. package/build/tools.js.map +1 -1
  31. package/build/types.d.ts +467 -1
  32. package/build/types.d.ts.map +1 -1
  33. package/build/types.js +26 -11
  34. package/build/types.js.map +1 -1
  35. package/dashboard/index.html +139 -12
  36. package/hooks/workflow-start.sh +24 -0
  37. package/package.json +5 -3
  38. package/templates/bug-fix.yaml +44 -8
  39. package/templates/code-review.yaml +21 -9
  40. package/templates/coding.yaml +10 -6
  41. package/templates/debugging.yaml +11 -6
  42. package/templates/file-code.yaml +10 -5
  43. package/templates/file-review.yaml +16 -7
  44. package/templates/github-init.yaml +81 -0
  45. package/templates/investigate.yaml +8 -5
  46. package/templates/master.yaml +27 -4
  47. package/templates/new-feature.yaml +9 -5
  48. package/templates/planning.yaml +8 -4
  49. package/templates/refactoring.yaml +7 -3
  50. package/templates/review-push.yaml +63 -0
  51. package/templates/skills/coding-skill-selector/SKILL.md +5 -3
  52. package/templates/skills/lang-haxe/SKILL.md +159 -1
  53. package/templates/skills/preferences/SKILL.md +39 -2
  54. package/templates/skills/task-delegation/SKILL.md +7 -15
  55. package/templates/skills/workflow-authoring/SKILL.md +127 -0
  56. package/templates/testing.yaml +2 -2
  57. package/templates/web-research.yaml +1 -1
  58. package/dashboard/dagre.min.js +0 -801
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workflow",
3
- "version": "1.0.0",
3
+ "version": "0.1.5",
4
4
  "description": "Structured workflow orchestration for AI agents via finite-state machines",
5
5
  "author": {
6
6
  "name": "AxGord",
package/.mcp.json CHANGED
@@ -2,8 +2,7 @@
2
2
  "mcpServers": {
3
3
  "wf": {
4
4
  "command": "node",
5
- "args": ["./build/index.js"],
6
- "env": {}
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/build/index.js"]
7
6
  }
8
7
  }
9
8
  }
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
- <a href="package.json"><img src="https://img.shields.io/badge/version-1.0.0-blue" alt="Version"></a>
6
+ <a href="https://www.npmjs.com/package/claude-mcp-workflow"><img src="https://img.shields.io/npm/v/claude-mcp-workflow" alt="npm"></a>
7
7
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License"></a>
8
8
  <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.7-3178c6" alt="TypeScript"></a>
9
9
  <a href="https://code.claude.com/docs/en/plugins"><img src="https://img.shields.io/badge/Claude_Code-Plugin-ff6600" alt="Claude Code Plugin"></a>
@@ -20,27 +20,33 @@ A Claude Code plugin that drives agents through YAML-defined state machines. The
20
20
  - **Three-tier loading** — bundled templates < global (`~/.claude/workflows/`) < project (`.claude/workflows/`)
21
21
  - **Snapshot isolation** — workflow definitions frozen at session start; hot-reloads don't affect running sessions
22
22
  - **Runtime overlays** — modify workflows on the fly without touching YAML files
23
+ - **Action states** — `exec` runs shell commands, `fetch` makes HTTP requests, with auto-routing by exit code or HTTP status
23
24
  - **Web dashboard** — real-time session monitoring with DAG graph visualization
24
- - **16 bundled workflows** — complete agent lifecycle from routing to reflection
25
- - **8 bundled skills** — reusable knowledge modules auto-provisioned on first run
25
+ - **18 bundled workflows** — complete agent lifecycle from routing to reflection
26
+ - **9 bundled skills** — reusable knowledge modules auto-provisioned on first run
26
27
  - **SessionStart hook** — auto-provisions missing skills and injects workflow context
27
28
 
28
29
  ## Quick Start
29
30
 
30
- ### From the Official Marketplace
31
+ ### From npm (recommended)
31
32
 
32
- ```
33
- /plugin install workflow@claude-plugin-directory
34
- ```
35
-
36
- ### From GitHub
33
+ Create a `marketplace.json` and add it as a source, or install directly:
37
34
 
38
35
  ```bash
39
- # 1. Add the repository as a marketplace source
40
- /plugin marketplace add AxGord/claude-workflow
36
+ # 1. Add a marketplace with this plugin
37
+ /plugin marketplace add <marketplace-with-workflow>
41
38
 
42
- # 2. Install the plugin
43
- /plugin install workflow@AxGord-claude-workflow
39
+ # 2. Install
40
+ /plugin install workflow@<marketplace-name>
41
+ ```
42
+
43
+ See [Creating a marketplace](https://code.claude.com/docs/en/plugin-marketplaces) for how to set up an npm-based marketplace with this plugin:
44
+
45
+ ```json
46
+ {
47
+ "name": "workflow",
48
+ "source": { "source": "npm", "package": "claude-mcp-workflow" }
49
+ }
44
50
  ```
45
51
 
46
52
  ### Manual (for development)
@@ -103,6 +109,67 @@ states:
103
109
  outcome: complete # or "fail"
104
110
  ```
105
111
 
112
+ ## Action States
113
+
114
+ States can run shell commands or HTTP requests automatically — the agent doesn't participate, the engine handles execution and routes to the next state based on the result.
115
+
116
+ ### `exec` — run a shell command
117
+
118
+ ```yaml
119
+ run_tests:
120
+ type: exec
121
+ command: "npm test"
122
+ cwd: "{{context.cwd}}"
123
+ timeout: 30000
124
+ on_success: analyze
125
+ on_error: fix
126
+ success_prompt: "Tests passed:\n{{stdout}}"
127
+ error_prompt: "Tests failed (exit {{exit_code}}):\n{{stderr}}"
128
+ ```
129
+
130
+ ### `fetch` — make an HTTP request
131
+
132
+ ```yaml
133
+ check_api:
134
+ type: fetch
135
+ url: "http://localhost:8888/ping"
136
+ method: GET
137
+ timeout: 5000
138
+ retry:
139
+ max: 60
140
+ interval: 500
141
+ on_success: ready
142
+ on_error: wait
143
+ success_prompt: "API ready: {{body}}"
144
+ error_prompt: "Not responding: {{error}}"
145
+ ```
146
+
147
+ ### Routing
148
+
149
+ Action states route via `on_success`/`on_error`, or by specific codes using `cases`:
150
+
151
+ ```yaml
152
+ run_tests:
153
+ type: exec
154
+ command: "npm test"
155
+ cases:
156
+ "0": all_passed
157
+ "1": tests_failed
158
+ "2": no_tests_found
159
+ default: unknown_error
160
+ ```
161
+
162
+ ### Template variables
163
+
164
+ All prompts support `{{mustache}}` templates. Context values are available everywhere via `{{context.key}}`. After action execution, result variables are also available:
165
+
166
+ | Source | Variables |
167
+ |--------|-----------|
168
+ | `exec` | `{{stdout}}`, `{{stderr}}`, `{{exit_code}}`, `{{pid}}` (background) |
169
+ | `fetch` | `{{status}}`, `{{body}}`, `{{error}}` |
170
+
171
+ Action states can be chained — `exec` → `exec` → `fetch` → `prompt` — up to 20 steps without agent involvement.
172
+
106
173
  ## Three-Tier Loading
107
174
 
108
175
  Workflows load from three sources in ascending priority — later tiers override earlier ones:
@@ -135,6 +202,8 @@ A project workflow named `coding` overrides the bundled `coding` template. Same-
135
202
  | `subagent` | Lightweight routing for sub-agents (no chat/plan/reflect) |
136
203
  | `file-code` | Per-file coding — spawned by coding/bug-fix for each file |
137
204
  | `file-review` | Per-file deep review — spawned by code-review for each file |
205
+ | `review-push` | Review uncommitted changes, then commit and push to GitHub |
206
+ | `github-init` | Initialize git repo and create private GitHub repository |
138
207
 
139
208
  ![Coding workflow graph](docs/screenshots/workflow-coding.png)
140
209
 
@@ -152,6 +221,7 @@ Skills are reusable knowledge modules loaded by workflows via `Skill()`. Auto-pr
152
221
  | `lang-python` | Python language gotchas |
153
222
  | `math` | Math overflow boundary gotchas |
154
223
  | `web-reading` | Fetch web content via subagents |
224
+ | `workflow-authoring` | Reference for creating workflows with exec/fetch action states |
155
225
 
156
226
  ## MCP Tools
157
227
 
@@ -240,6 +310,7 @@ Then in `~/.claude/settings.json`:
240
310
  npm run build # tsc → compiles src/ to build/
241
311
  npm run dev # tsc --watch
242
312
  npm start # node build/index.js
313
+ npm test # vitest run
243
314
  ```
244
315
 
245
316
  ### Architecture
@@ -252,6 +323,8 @@ npm start # node build/index.js
252
323
  | `src/storage.ts` | JSON persistence with atomic writes and lockfile mutex |
253
324
  | `src/modifier.ts` | Runtime overlays + create (YAML writer) |
254
325
  | `src/tools.ts` | MCP tool registrations + response formatting |
326
+ | `src/executor.ts` | Action state execution — shell commands (`exec`) and HTTP requests (`fetch`) |
327
+ | `src/template.ts` | Mustache-style `{{var}}` template rendering for action parameters |
255
328
  | `src/dashboard.ts` | Express REST API + static file serving |
256
329
  | `src/types.ts` | Zod schemas, TypeScript types, constants |
257
330
 
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAiG1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGpF"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAwG1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGpF"}
@@ -1,5 +1,6 @@
1
1
  import express from "express";
2
2
  import path from "node:path";
3
+ import { createRequire } from "node:module";
3
4
  import { fileURLToPath } from "node:url";
4
5
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
6
  function buildApp(storage, loader) {
@@ -61,6 +62,12 @@ function buildApp(storage, loader) {
61
62
  res.status(500).json({ error: err.message });
62
63
  }
63
64
  });
65
+ // Serve dagre from node_modules (works both in dev and when installed as a dependency)
66
+ const require = createRequire(import.meta.url);
67
+ const dagrePath = require.resolve("@dagrejs/dagre/dist/dagre.min.js");
68
+ app.get("/dagre.min.js", (_req, res) => {
69
+ res.sendFile(dagrePath);
70
+ });
64
71
  // Serve dashboard HTML
65
72
  const dashboardDir = path.resolve(__dirname, "..", "dashboard");
66
73
  app.use(express.static(dashboardDir));
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
package/build/engine.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { StackFrame, HistoryEntry, StateDefinition } from "./types.js";
2
2
  import type { Storage } from "./storage.js";
3
3
  import type { Loader } from "./loader.js";
4
+ import type { Executor } from "./executor.js";
4
5
  export interface TransitionResult {
5
6
  readonly prompt: string;
6
7
  readonly warnings: string[];
@@ -23,14 +24,23 @@ export interface StatusResult {
23
24
  readonly context: Record<string, unknown>;
24
25
  readonly taskOps: TaskOp[];
25
26
  readonly visitCount: number;
27
+ readonly forcePrompt?: boolean;
26
28
  }
27
29
  export declare class Engine {
28
30
  private readonly _storage;
29
31
  private readonly _loader;
32
+ private readonly _executor;
30
33
  private readonly _snapshots;
31
- constructor(storage: Storage, loader: Loader);
34
+ constructor(storage: Storage, loader: Loader, executor: Executor);
32
35
  /** Find the most recently updated active session for the current Claude Code PID. */
33
36
  resolveSessionId(sessionId?: string): string;
37
+ private static _isPidAlive;
38
+ /**
39
+ * Check if the session belongs to the current Claude Code process.
40
+ * When force=true, skip the check but warn if the owner process is still alive.
41
+ * Returns a warning string if force was used, undefined otherwise.
42
+ */
43
+ assertOwnership(sessionId: string, force?: boolean): string | undefined;
34
44
  start(workflowName: string, actor?: string, parentSessionId?: string): Promise<StatusResult>;
35
45
  transition(sessionId: string, transitionName: string, actor?: string): Promise<StatusResult>;
36
46
  abort(sessionId: string): Promise<void>;
@@ -41,7 +51,14 @@ export declare class Engine {
41
51
  * Returns the new status if pop succeeded, or null if still pending.
42
52
  */
43
53
  retryPendingPop(sessionId: string): Promise<StatusResult | null>;
54
+ /** Abandon active sessions whose owner PID is no longer alive. */
55
+ reapOrphanedSessions(): Promise<string[]>;
44
56
  setContext(sessionId: string, key: string, value: unknown, actor?: string): Promise<void>;
57
+ private _isActionState;
58
+ private _isSkillGate;
59
+ private _handleSkillGate;
60
+ private _buildTemplateVars;
61
+ private _executeActionState;
45
62
  private _pushSubWorkflow;
46
63
  private _popStack;
47
64
  private _formatChildrenBlockError;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,UAAU,EACV,YAAY,EAEZ,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2D;gBAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAK5C,qFAAqF;IAC9E,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAWtC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0D5F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8G5F,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAMjD;;;;OAIG;IACU,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAsBhE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAexF,gBAAgB;YAuChB,SAAS;IAiHvB,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,kBAAkB;YAMZ,uBAAuB;IAkBrC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,YAAY;CA8CrB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}