workhorse-ai-mcp 0.8.2 → 0.8.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.
- package/README.md +30 -19
- package/package.json +1 -1
- package/server.mjs +1 -1
- package/skills/workhorse-ai/SKILL.md +42 -1
package/README.md
CHANGED
|
@@ -12,6 +12,36 @@ The journal enforces a simple discipline: `DRAFT → DELEGATED → REPORTED →
|
|
|
12
12
|
ACCEPTED | REWORK | FAILED`, where *reported* (the worker thinks it is done)
|
|
13
13
|
is never the same as *accepted* (the orchestrator verified it).
|
|
14
14
|
|
|
15
|
+
## Quick start
|
|
16
|
+
|
|
17
|
+
**Claude Code — two commands** (installs the MCP server *and* the skill):
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
claude plugin marketplace add https://github.com/workhorse-ai/workhorse-ai-mcp
|
|
21
|
+
claude plugin install workhorse-ai@workhorse-ai
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Any other agent** — install the skill, then add the MCP server to your
|
|
25
|
+
agent's MCP config:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx skills add workhorse-ai/workhorse-ai-mcp
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{ "mcpServers": { "workhorse": { "command": "npx", "args": ["-y", "workhorse-ai-mcp"] } } }
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Optionally, pin the rule at the project level — copy this into your
|
|
36
|
+
`AGENTS.md` / `CLAUDE.md`:
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
Delegation goes through the `workhorse` MCP journal. Worker duties:
|
|
40
|
+
`search_precedents` before starting, `record_artifact` (progress notes)
|
|
41
|
+
along the way, `submit_report` at the end. Never commit and never accept
|
|
42
|
+
your own work — acceptance requires the orchestrator's own test run.
|
|
43
|
+
```
|
|
44
|
+
|
|
15
45
|
## Install
|
|
16
46
|
|
|
17
47
|
Add the server to your `.mcp.json`:
|
|
@@ -46,25 +76,6 @@ On first start the server creates the directory and the database itself.
|
|
|
46
76
|
|
|
47
77
|
## Connect to the cloud (optional)
|
|
48
78
|
|
|
49
|
-
The journal works fully offline. To sync it with a Planado workspace, issue
|
|
50
|
-
an MCP token on the workspace's MCP page and ask your agent to call the
|
|
51
|
-
`connect` tool:
|
|
52
|
-
|
|
53
|
-
```json
|
|
54
|
-
connect {
|
|
55
|
-
"url": "https://<your-workspace>/api/mcp/journal-sync",
|
|
56
|
-
"token": "<mcp token>"
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
`connect` verifies the connection first and only then writes `sync.json`
|
|
61
|
-
next to the database — no manual configuration. The journal id defaults to
|
|
62
|
-
a normalized `<username>-<hostname>`. After that, every journal write is
|
|
63
|
-
auto-pushed; `sync` forces a push, and `inbox`/`take` pull task intents
|
|
64
|
-
from the cloud.
|
|
65
|
-
|
|
66
|
-
## Connecting to a cloud
|
|
67
|
-
|
|
68
79
|
`connect` needs only a token — the managed Workhorse AI cloud is the default:
|
|
69
80
|
|
|
70
81
|
```
|
package/package.json
CHANGED
package/server.mjs
CHANGED
|
@@ -862,7 +862,7 @@ function handle(msg) {
|
|
|
862
862
|
respond(id, {
|
|
863
863
|
protocolVersion: params?.protocolVersion ?? "2024-11-05",
|
|
864
864
|
capabilities: { tools: {}, prompts: {} },
|
|
865
|
-
serverInfo: { name: "workhorse-mcp", version: "0.8.
|
|
865
|
+
serverInfo: { name: "workhorse-mcp", version: "0.8.3" },
|
|
866
866
|
instructions: SERVER_INSTRUCTIONS,
|
|
867
867
|
});
|
|
868
868
|
} else if (method === "prompts/list") {
|
|
@@ -19,6 +19,31 @@ full-text search. The server validates status transitions, so you never need —
|
|
|
19
19
|
must never try — to write to the database by hand. Do not create task files in the
|
|
20
20
|
project repository: state lives in the journal only.
|
|
21
21
|
|
|
22
|
+
## Requirements
|
|
23
|
+
|
|
24
|
+
This skill drives the **workhorse MCP server** — without it, none of the tools
|
|
25
|
+
referenced below exist. If your agent has no `workhorse` server connected, add
|
|
26
|
+
it first (or ask the user to):
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "mcpServers": { "workhorse": { "command": "npx", "args": ["-y", "workhorse-ai-mcp"] } } }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The server needs Node.js >= 22.5, stores data in `~/.workhorse-ai/journal.db`,
|
|
33
|
+
and creates the database itself on first start. It also announces its protocol
|
|
34
|
+
in the MCP `initialize` instructions, so the status machine below is always
|
|
35
|
+
available to the agent even without this skill.
|
|
36
|
+
|
|
37
|
+
Tool inventory (names may be prefixed by your client, e.g. `mcp__workhorse__*`):
|
|
38
|
+
|
|
39
|
+
| Group | Tools |
|
|
40
|
+
|---|---|
|
|
41
|
+
| Registry | `resolve_project`, `register_project`, `list_projects` |
|
|
42
|
+
| Task lifecycle | `draft_task`, `delegate`, `submit_report`, `accept`, `request_rework`, `mark_failed` |
|
|
43
|
+
| Knowledge | `search_precedents`, `record_artifact`, `record_incident`, `list_artifacts` |
|
|
44
|
+
| Overview | `get_task`, `list_tasks`, `link_tasks` |
|
|
45
|
+
| Cloud (optional) | `connect`, `sync`, `inbox`, `take` |
|
|
46
|
+
|
|
22
47
|
## Roles
|
|
23
48
|
|
|
24
49
|
| Stage | Who | Why |
|
|
@@ -33,6 +58,22 @@ project repository: state lives in the journal only.
|
|
|
33
58
|
A one-to-three-line fix with a diagnosis already in hand is done inline:
|
|
34
59
|
delegating costs more than the edit itself.
|
|
35
60
|
|
|
61
|
+
The roles are **acts, not separate programs**. Any of these configurations
|
|
62
|
+
works, as long as writing the code and accepting it stay separate acts:
|
|
63
|
+
|
|
64
|
+
| Configuration | Orchestrator | Worker |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| Two CLIs | one agent (e.g. Claude Code) | another agent (e.g. a coding CLI) |
|
|
67
|
+
| One CLI | the main session | a subagent it spawns |
|
|
68
|
+
| Solo | the same single agent | the same single agent |
|
|
69
|
+
|
|
70
|
+
In the **solo** configuration the invariant does not disappear — it becomes a
|
|
71
|
+
guard against self-deception. The rule: *the report and the acceptance are
|
|
72
|
+
separate acts with separate evidence*. Set `REPORTED` when the work seems done;
|
|
73
|
+
`ACCEPTED` only after a fresh, complete test run over the final state of the
|
|
74
|
+
code, a line-by-line diff review against the assignment, and a `verify_commit`.
|
|
75
|
+
"I just wrote this myself" is never evidence.
|
|
76
|
+
|
|
36
77
|
## Statuses and the key invariant
|
|
37
78
|
|
|
38
79
|
```
|
|
@@ -88,7 +129,7 @@ creates a new version, the old one stays in history.
|
|
|
88
129
|
|
|
89
130
|
If the worker must judge something on its own, give it a stopping criterion
|
|
90
131
|
("found a consumer → do not delete, report back").
|
|
91
|
-
4. **`delegate`** (plus
|
|
132
|
+
4. **`delegate`** (plus starting the worker — another CLI, a subagent, or, in the solo configuration, simply switching hats). The worker's prompt carries: the
|
|
92
133
|
`task_id`, the assignment text, and three journal duties — `search_precedents`
|
|
93
134
|
before starting; progress along the way via `record_artifact` (kind `note`, bound
|
|
94
135
|
to `task_id`, with a stable `title` such as `progress: <slug>`, which versions
|