agenthub-multiagent-mcp 1.76.1 → 1.77.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../src/tools/whatsapp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=whatsapp.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.test.d.ts","sourceRoot":"","sources":["../../src/tools/whatsapp.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,139 @@
1
+ import * as fs from "fs";
2
+ import * as os from "os";
3
+ import * as path from "path";
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+ import { writeActivityMarker } from "../activityMarker.js";
6
+ import { UNTRUSTED_NOTICE, WHATSAPP_TOOLS, markerDir, runWhatsAppTool, sessionPrivacy, whatsappToolDefinitions, } from "./whatsapp.js";
7
+ let home;
8
+ let work;
9
+ let endpointFile;
10
+ const TOKEN = "t".repeat(64);
11
+ beforeEach(() => {
12
+ home = fs.mkdtempSync(path.join(os.tmpdir(), "wa-home-"));
13
+ work = fs.mkdtempSync(path.join(os.tmpdir(), "wa-work-"));
14
+ endpointFile = path.join(home, "endpoint.json");
15
+ });
16
+ afterEach(() => {
17
+ fs.rmSync(home, { recursive: true, force: true });
18
+ fs.rmSync(work, { recursive: true, force: true });
19
+ });
20
+ const json = (status, body) => new Response(JSON.stringify(body), { status, headers: { "Content-Type": "application/json" } });
21
+ /** A fake reader: status first, then whatever `answer` gives for the path. */
22
+ function reader(answer, linked = true) {
23
+ const calls = [];
24
+ const fetch = async (url, init) => {
25
+ calls.push({ url, init });
26
+ if (url.endsWith("/v1/status"))
27
+ return json(200, { linked, connected: true });
28
+ return answer(url, init);
29
+ };
30
+ return { fetch, calls };
31
+ }
32
+ function deps(fetch, env = {}) {
33
+ return { env: { AGENTHUB_WHATSAPP_ENDPOINT_FILE: endpointFile, ...env }, homeDir: home, workingDir: work, fetch };
34
+ }
35
+ function writeEndpoint() {
36
+ fs.writeFileSync(endpointFile, JSON.stringify({ port: 45678, token: TOKEN, pid: 1 }));
37
+ }
38
+ describe("sessionPrivacy", () => {
39
+ const cases = [
40
+ ["captured session", { AGENTHUB_SESSION_ID: "s-1" }],
41
+ ["headless runtime", { AGENTHUB_HEADLESS: "true" }],
42
+ ["workstation", { AGENTHUB_WORKSTATION_ID: "ws-1" }],
43
+ ["remote launch", { AGENTHUB_LAUNCHED_REMOTELY: "1" }],
44
+ ["daemon shift", { AGENTHUB_DISABLE_WEBSOCKET: "true", AGENTHUB_AUTO_INBOX: "false" }],
45
+ ];
46
+ for (const [label, env] of cases) {
47
+ it(`refuses a ${label}`, () => {
48
+ expect(sessionPrivacy({ env, homeDir: home }).ok).toBe(false);
49
+ });
50
+ }
51
+ it("refuses when session capture is consented on this machine", () => {
52
+ fs.mkdirSync(path.join(home, ".claude"), { recursive: true });
53
+ fs.writeFileSync(path.join(home, ".claude", "agenthub-capture.json"), "{}");
54
+ expect(sessionPrivacy({ env: {}, homeDir: home }).ok).toBe(false);
55
+ });
56
+ it("allows a plain interactive session", () => {
57
+ expect(sessionPrivacy({ env: {}, homeDir: home })).toEqual({ ok: true });
58
+ expect(sessionPrivacy({ env: { AGENTHUB_DISABLE_WEBSOCKET: "true" }, homeDir: home }).ok).toBe(true);
59
+ });
60
+ });
61
+ describe("runWhatsAppTool", () => {
62
+ it("refuses a non-private session without touching the reader or writing a marker", async () => {
63
+ writeEndpoint();
64
+ const fetch = vi.fn();
65
+ const out = await runWhatsAppTool("whatsapp_list_chats", {}, deps(fetch, { AGENTHUB_SESSION_ID: "s-1" }));
66
+ expect(out.error).toBe("whatsapp_session_not_private");
67
+ expect(fetch).not.toHaveBeenCalled();
68
+ expect(fs.existsSync(markerDir(home))).toBe(false);
69
+ });
70
+ it("says the reader is not running when there is no endpoint file", async () => {
71
+ const out = await runWhatsAppTool("whatsapp_list_chats", {}, deps(vi.fn()));
72
+ expect(out.error).toBe("whatsapp_reader_unavailable");
73
+ expect(String(out.message)).toMatch(/not running/);
74
+ });
75
+ it("says the reader did not answer when the connection fails", async () => {
76
+ writeEndpoint();
77
+ const out = await runWhatsAppTool("whatsapp_list_chats", {}, deps(async () => {
78
+ throw new Error("ECONNREFUSED");
79
+ }));
80
+ expect(out.error).toBe("whatsapp_reader_unavailable");
81
+ });
82
+ it("says no account is linked", async () => {
83
+ writeEndpoint();
84
+ const r = reader(() => json(200, { chats: [] }), false);
85
+ const out = await runWhatsAppTool("whatsapp_list_chats", {}, deps(r.fetch));
86
+ expect(out.error).toBe("whatsapp_reader_unavailable");
87
+ expect(String(out.message)).toMatch(/no account is linked/);
88
+ });
89
+ it("lists chats on 127.0.0.1 with the token, labels them, and marks the session first", async () => {
90
+ writeEndpoint();
91
+ writeActivityMarker(work, "other", { session_id: "claude-sess-1", transcript_path: "/t.jsonl" });
92
+ const r = reader(() => json(200, { chats: [{ jid: "1@g.us", name: "Farm" }] }));
93
+ const out = await runWhatsAppTool("whatsapp_list_chats", { query: "farm", limit: 5 }, deps(r.fetch));
94
+ expect(out.untrusted_content_notice).toBe(UNTRUSTED_NOTICE);
95
+ expect(out.chats).toEqual([{ jid: "1@g.us", name: "Farm" }]);
96
+ const call = r.calls[1];
97
+ expect(call.url).toBe("http://127.0.0.1:45678/v1/chats?q=farm&limit=5");
98
+ expect(call.init.headers.Authorization).toBe(`Bearer ${TOKEN}`);
99
+ expect(fs.existsSync(path.join(markerDir(home), "claude-sess-1"))).toBe(true);
100
+ });
101
+ it("encodes the chat id and requires it", async () => {
102
+ writeEndpoint();
103
+ const r = reader(() => json(200, { messages: [] }));
104
+ expect((await runWhatsAppTool("whatsapp_read_chat", {}, deps(r.fetch))).error).toBe("chat_required");
105
+ await runWhatsAppTool("whatsapp_read_chat", { chat: "12@g.us/../x", before: 100 }, deps(r.fetch));
106
+ expect(r.calls.at(-1).url).toBe("http://127.0.0.1:45678/v1/chats/12%40g.us%2F..%2Fx/messages?before=100");
107
+ });
108
+ it("search needs a query", async () => {
109
+ writeEndpoint();
110
+ const r = reader(() => json(200, { messages: [] }));
111
+ expect((await runWhatsAppTool("whatsapp_search", { query: " " }, deps(r.fetch))).error).toBe("query_required");
112
+ });
113
+ it("downloads media with POST and passes the reader's refusal through", async () => {
114
+ writeEndpoint();
115
+ const r = reader((_url, init) => init.method === "POST" ? json(422, { error: "no_media", message: "the message has no downloadable media" }) : json(500, {}));
116
+ const out = await runWhatsAppTool("whatsapp_download_media", { chat: "1@g.us", message_id: "ABC" }, deps(r.fetch));
117
+ expect(out.error).toBe("no_media");
118
+ expect(r.calls.at(-1).url).toBe("http://127.0.0.1:45678/v1/chats/1%40g.us/messages/ABC/media");
119
+ });
120
+ it("a missing message is not_found", async () => {
121
+ writeEndpoint();
122
+ const r = reader(() => json(404, { error: "message_not_found", message: "no such message" }));
123
+ const out = await runWhatsAppTool("whatsapp_download_media", { chat: "1@g.us", message_id: "X" }, deps(r.fetch));
124
+ expect(out.error).toBe("not_found");
125
+ });
126
+ it("rejects an endpoint file with a short token", async () => {
127
+ fs.writeFileSync(endpointFile, JSON.stringify({ port: 45678, token: "short" }));
128
+ const out = await runWhatsAppTool("whatsapp_list_chats", {}, deps(vi.fn()));
129
+ expect(out.error).toBe("whatsapp_reader_unavailable");
130
+ });
131
+ });
132
+ describe("tool definitions", () => {
133
+ it("defines exactly the four read-only tools", () => {
134
+ const names = whatsappToolDefinitions().map((t) => t.name);
135
+ expect(names).toEqual([...WHATSAPP_TOOLS]);
136
+ expect(names.some((n) => /send|reply|post|mark/.test(n))).toBe(false);
137
+ });
138
+ });
139
+ //# sourceMappingURL=whatsapp.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.test.js","sourceRoot":"","sources":["../../src/tools/whatsapp.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,79 +1,79 @@
1
- {
2
- "name": "agenthub-multiagent-mcp",
3
- "version": "1.76.1",
4
- "description": "MCP server for AgentHub multi-agent communication",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "bin": {
8
- "agenthub-multiagent-mcp": "./dist/index.js",
9
- "agenthub-hook": "./dist/planHookCli.js",
10
- "agenthub-activity-hook": "./dist/activityHookCli.js",
11
- "agenthub-inbox-hook": "./dist/inboxHookCli.js",
12
- "agenthub-daemon": "./dist/daemon.js",
13
- "agenthub-worker": "./dist/worker.js",
14
- "agenthub-setup": "./dist/setup.js",
15
- "agenthub-channel": "./dist/channel.js",
16
- "goshti-channel": "./dist/goshtiChannel.js",
17
- "agenthub-resume": "./dist/commands/resume.js"
18
- },
19
- "files": [
20
- "dist",
21
- "skills",
22
- "native/agenthub-memvid/index.js",
23
- "native/agenthub-memvid/index.d.ts",
24
- "native/agenthub-memvid/*.node",
25
- "native/agenthub-memvid/package.json"
26
- ],
27
- "scripts": {
28
- "build": "tsc && node -e \"const fs=require('fs');for(const f of ['run-claude.sh','session-capture.sh'])fs.writeFileSync('dist/'+f,fs.readFileSync(f,'utf8').replace(/\\r\\n/g,'\\n'))\"",
29
- "dev": "tsx watch src/index.ts",
30
- "start": "node dist/index.js",
31
- "lint": "eslint src/",
32
- "typecheck": "tsc --noEmit",
33
- "test": "vitest run",
34
- "test:watch": "vitest"
35
- },
36
- "keywords": [
37
- "mcp",
38
- "claude",
39
- "claude-code",
40
- "agenthub",
41
- "multi-agent",
42
- "ai-agents",
43
- "codex",
44
- "gemini",
45
- "model-context-protocol"
46
- ],
47
- "author": "Krishi AI",
48
- "license": "MIT",
49
- "repository": {
50
- "type": "git",
51
- "url": "git+https://github.com/Contetial/Agenthub.git"
52
- },
53
- "homepage": "https://github.com/Contetial/Agenthub#readme",
54
- "bugs": {
55
- "url": "https://github.com/Contetial/Agenthub/issues"
56
- },
57
- "dependencies": {
58
- "@anthropic-ai/sdk": "^0.79.0",
59
- "@modelcontextprotocol/sdk": "^1.0.0",
60
- "form-data": "^4.0.5",
61
- "gray-matter": "^4.0.3",
62
- "js-yaml": "^4.1.0",
63
- "open": "^11.0.0",
64
- "ws": "^8.18.0",
65
- "zod": "^3.23.0"
66
- },
67
- "devDependencies": {
68
- "@types/form-data": "^2.2.1",
69
- "@types/js-yaml": "^4.0.9",
70
- "@types/node": "^20.0.0",
71
- "@types/ws": "^8.5.13",
72
- "tsx": "^4.0.0",
73
- "typescript": "^5.0.0",
74
- "vitest": "^4.0.16"
75
- },
76
- "engines": {
77
- "node": ">=20.0.0"
78
- }
79
- }
1
+ {
2
+ "name": "agenthub-multiagent-mcp",
3
+ "version": "1.77.0",
4
+ "description": "MCP server for AgentHub multi-agent communication",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "agenthub-multiagent-mcp": "./dist/index.js",
9
+ "agenthub-hook": "./dist/planHookCli.js",
10
+ "agenthub-activity-hook": "./dist/activityHookCli.js",
11
+ "agenthub-inbox-hook": "./dist/inboxHookCli.js",
12
+ "agenthub-daemon": "./dist/daemon.js",
13
+ "agenthub-worker": "./dist/worker.js",
14
+ "agenthub-setup": "./dist/setup.js",
15
+ "agenthub-channel": "./dist/channel.js",
16
+ "goshti-channel": "./dist/goshtiChannel.js",
17
+ "agenthub-resume": "./dist/commands/resume.js"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "skills",
22
+ "native/agenthub-memvid/index.js",
23
+ "native/agenthub-memvid/index.d.ts",
24
+ "native/agenthub-memvid/*.node",
25
+ "native/agenthub-memvid/package.json"
26
+ ],
27
+ "scripts": {
28
+ "build": "tsc && node -e \"const fs=require('fs');for(const f of ['run-claude.sh','session-capture.sh'])fs.writeFileSync('dist/'+f,fs.readFileSync(f,'utf8').replace(/\\r\\n/g,'\\n'))\"",
29
+ "dev": "tsx watch src/index.ts",
30
+ "start": "node dist/index.js",
31
+ "lint": "eslint src/",
32
+ "typecheck": "tsc --noEmit",
33
+ "test": "vitest run",
34
+ "test:watch": "vitest"
35
+ },
36
+ "keywords": [
37
+ "mcp",
38
+ "claude",
39
+ "claude-code",
40
+ "agenthub",
41
+ "multi-agent",
42
+ "ai-agents",
43
+ "codex",
44
+ "gemini",
45
+ "model-context-protocol"
46
+ ],
47
+ "author": "Krishi AI",
48
+ "license": "MIT",
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "git+https://github.com/Contetial/Agenthub.git"
52
+ },
53
+ "homepage": "https://github.com/Contetial/Agenthub#readme",
54
+ "bugs": {
55
+ "url": "https://github.com/Contetial/Agenthub/issues"
56
+ },
57
+ "dependencies": {
58
+ "@anthropic-ai/sdk": "^0.79.0",
59
+ "@modelcontextprotocol/sdk": "^1.0.0",
60
+ "form-data": "^4.0.5",
61
+ "gray-matter": "^4.0.3",
62
+ "js-yaml": "^4.1.0",
63
+ "open": "^11.0.0",
64
+ "ws": "^8.18.0",
65
+ "zod": "^3.23.0"
66
+ },
67
+ "devDependencies": {
68
+ "@types/form-data": "^2.2.1",
69
+ "@types/js-yaml": "^4.0.9",
70
+ "@types/node": "^20.0.0",
71
+ "@types/ws": "^8.5.13",
72
+ "tsx": "^4.0.0",
73
+ "typescript": "^5.0.0",
74
+ "vitest": "^4.0.16"
75
+ },
76
+ "engines": {
77
+ "node": ">=20.0.0"
78
+ }
79
+ }
@@ -1,104 +1,104 @@
1
- {
2
- "version": 1,
3
- "skills": [
4
- {
5
- "path": "commands/start-session.md",
6
- "name": "start-session",
7
- "description": "Loads the previous session's close report from AgentHub at the start of a new session. Renders summary + planned next steps + commits + open threads. Cross-machine handoff.",
8
- "category": "command",
9
- "current_hash": "f048c7cbe4696a9e41751f1321ad9c8ce621d0cec455a3f9fadea000b9e560dc",
10
- "prior_hashes": [
11
- "b314a7f3dcb179024f5f3334f3d1033386b629cd540768042d4e2c54590ef3c4",
12
- "22f4eea1f777318212118f2ffaeb8dbd81f94187bc7060707cdf58540e58ed8a",
13
- "60970d3cc8dc9edfc4cf23b7980cc142b5ab50c3c7772034bba5d98b5735e33b"
14
- ]
15
- },
16
- {
17
- "path": "commands/close-session.md",
18
- "name": "close-session",
19
- "description": "Deterministic checklist for wrapping up an agent session \u00e2\u20ac\u201d writes to org brain, local brain, auto-memory, and uploads the session handoff report. Delegates prose work to a Sonnet subagent.",
20
- "category": "command",
21
- "current_hash": "c1e4d6060bbe4cec28cdb4c7f9d926045622c52e44d126992d99aac6fe98d98a",
22
- "prior_hashes": [
23
- "1d4620849c386a586d15bb6aae3cc8011829e9eb77437bb7f52945fba121fab8",
24
- "e91230277c34661c943eeb3203845559b2456604f3cd6129f8dc54246f4fce29",
25
- "b5acb8f0764eee2aee572178500837a2c0acdb5eecd8e6bca87016bb872e303f"
26
- ]
27
- },
28
- {
29
- "path": "skills/karpathy-guidelines/SKILL.md",
30
- "name": "karpathy-guidelines",
31
- "description": "Behavioral guidelines for coding tasks \u00e2\u20ac\u201d think before coding, simplicity first, surgical changes, goal-driven execution. Pulled when writing/reviewing/refactoring code.",
32
- "category": "skill",
33
- "current_hash": "6e22cc54cb02a5e98ae42d06d9d7292db0c1b43894831b32879beb0166b2aea7",
34
- "prior_hashes": []
35
- },
36
- {
37
- "path": "skills/deploy-staging/SKILL.md",
38
- "name": "deploy-staging",
39
- "description": "Staging deploy runbook \u00e2\u20ac\u201d build + ship the Go server and dashboard to the Dockerized Contabo staging host, restart, verify, rollback. Destructive.",
40
- "category": "skill",
41
- "current_hash": "7194b1a167f43594c0d55249126a97a265009d8ff6515a0caac6d6277fc78f4a",
42
- "prior_hashes": [
43
- "aca1c1a5871921cbc9530c13c17d963b262d2e72c67be5326ae65aa0d58847f4"
44
- ]
45
- },
46
- {
47
- "path": "skills/deploy-vps-openclaw/SKILL.md",
48
- "name": "deploy-vps-openclaw",
49
- "description": "OpenClaw VPS deploy runbook \u00e2\u20ac\u201d build + ship the meta-agent plugin to the Hetzner VPS, restart the gateway, verify reconnect, rollback. Destructive.",
50
- "category": "skill",
51
- "current_hash": "1c7042b2714d04168b8d7b2afb519674242f18e7223f600b3c8f873bec640202",
52
- "prior_hashes": []
53
- },
54
- {
55
- "path": "skills/code-brain-hook/SKILL.md",
56
- "name": "code-brain-hook",
57
- "description": "add-code-brain \u00e2\u20ac\u201d when to call brain_code_recall, what the code brain stores, and optional UserPromptSubmit hook setup for automatic code-aware context.",
58
- "category": "skill",
59
- "current_hash": "abf685d5d6770b34297f74dec42ff657b496a087db3f767296633b5db5bfdd4f",
60
- "prior_hashes": [
61
- "f5ceff808f8f540e612c18b8ba1c1f5c771df9f64bf1eb84832279e61b140c30"
62
- ]
63
- },
64
- {
65
- "path": "skills/file-bug/SKILL.md",
66
- "name": "file-bug",
67
- "description": "File a reproducible bug as a first-class AgentHub ticket via report_bug \u00e2\u20ac\u201d captures severity, repro steps, environment, and the defect lifecycle. Use when you hit a defect, failing test/CI step, or reproducible misbehavior worth tracking.",
68
- "category": "skill",
69
- "current_hash": "814bd58fa387c074b3fc1195b31e0e32d38402510028d4709579ec1f1ed663f1",
70
- "prior_hashes": []
71
- },
72
- {
73
- "path": "skills/multiagent-brainstorm/SKILL.md",
74
- "name": "multiagent-brainstorm",
75
- "description": "Brainstorm a design with another AgentHub agent, mostly autonomously \u00e2\u20ac\u201d a background subagent drives each side, polling a server-tracked session and exchanging turns, pausing for a human only on real decisions, and concluding with a structured outcome that seeds an OpenSpec change.",
76
- "category": "skill",
77
- "current_hash": "311182e620681ca4f059d07ba5df14fdf1cd6e811b11619088888f3e666df117",
78
- "prior_hashes": [
79
- "b3792bb7e44a5f581172d94c5b145ef6c1420e28426f796a38594250a28f1de1",
80
- "aff7ed284060cd0e157c35b2572047a42144eef80d4299f3592a5caf9ef240e5"
81
- ]
82
- },
83
- {
84
- "path": "skills/inbox/SKILL.md",
85
- "name": "inbox",
86
- "description": "Read your AgentHub inbox safely and acknowledge only what you actually read. Marks read only the specific ids whose bodies were seen, and never when the result reports truncated - a bulk ack of an unseen page is what lost messages on 2026-10-14 (AGHUB-1426).",
87
- "category": "skill",
88
- "current_hash": "bf4a56716ecf89534e790e66edcc88a01d0bc8d7e99e13c9c85119c8579fc393",
89
- "prior_hashes": [
90
- "e7cacbf45ac93de3c8b23705fd94d4f03be9f01a3970050e1c3ebf06665d04cb"
91
- ]
92
- },
93
- {
94
- "path": "skills/zoho-mail/SKILL.md",
95
- "name": "zoho-mail",
96
- "description": "Read and reply to email in a registered Zoho mailbox: find the message, read its attachments, and save a threaded Reply-All draft with files attached, then verify what was saved. Written after a 2026-10-30 bid draft lost its attachments, cc and thread.",
97
- "category": "skill",
98
- "current_hash": "972be83d5d7ae1dcb6434ba7802cdee941d4e7bd9c45add0ca16a5a6b533c2c1",
99
- "prior_hashes": [
100
- "017cd03e191c847ade9b21fa356faf3bbe96515942f1580360394820dc29af55"
101
- ]
102
- }
103
- ]
104
- }
1
+ {
2
+ "version": 1,
3
+ "skills": [
4
+ {
5
+ "path": "commands/start-session.md",
6
+ "name": "start-session",
7
+ "description": "Loads the previous session's close report from AgentHub at the start of a new session. Renders summary + planned next steps + commits + open threads. Cross-machine handoff.",
8
+ "category": "command",
9
+ "current_hash": "f048c7cbe4696a9e41751f1321ad9c8ce621d0cec455a3f9fadea000b9e560dc",
10
+ "prior_hashes": [
11
+ "b314a7f3dcb179024f5f3334f3d1033386b629cd540768042d4e2c54590ef3c4",
12
+ "22f4eea1f777318212118f2ffaeb8dbd81f94187bc7060707cdf58540e58ed8a",
13
+ "60970d3cc8dc9edfc4cf23b7980cc142b5ab50c3c7772034bba5d98b5735e33b"
14
+ ]
15
+ },
16
+ {
17
+ "path": "commands/close-session.md",
18
+ "name": "close-session",
19
+ "description": "Deterministic checklist for wrapping up an agent session \u00e2\u20ac\u201d writes to org brain, local brain, auto-memory, and uploads the session handoff report. Delegates prose work to a Sonnet subagent.",
20
+ "category": "command",
21
+ "current_hash": "c1e4d6060bbe4cec28cdb4c7f9d926045622c52e44d126992d99aac6fe98d98a",
22
+ "prior_hashes": [
23
+ "1d4620849c386a586d15bb6aae3cc8011829e9eb77437bb7f52945fba121fab8",
24
+ "e91230277c34661c943eeb3203845559b2456604f3cd6129f8dc54246f4fce29",
25
+ "b5acb8f0764eee2aee572178500837a2c0acdb5eecd8e6bca87016bb872e303f"
26
+ ]
27
+ },
28
+ {
29
+ "path": "skills/karpathy-guidelines/SKILL.md",
30
+ "name": "karpathy-guidelines",
31
+ "description": "Behavioral guidelines for coding tasks \u00e2\u20ac\u201d think before coding, simplicity first, surgical changes, goal-driven execution. Pulled when writing/reviewing/refactoring code.",
32
+ "category": "skill",
33
+ "current_hash": "6e22cc54cb02a5e98ae42d06d9d7292db0c1b43894831b32879beb0166b2aea7",
34
+ "prior_hashes": []
35
+ },
36
+ {
37
+ "path": "skills/deploy-staging/SKILL.md",
38
+ "name": "deploy-staging",
39
+ "description": "Staging deploy runbook \u00e2\u20ac\u201d build + ship the Go server and dashboard to the Dockerized Contabo staging host, restart, verify, rollback. Destructive.",
40
+ "category": "skill",
41
+ "current_hash": "7194b1a167f43594c0d55249126a97a265009d8ff6515a0caac6d6277fc78f4a",
42
+ "prior_hashes": [
43
+ "aca1c1a5871921cbc9530c13c17d963b262d2e72c67be5326ae65aa0d58847f4"
44
+ ]
45
+ },
46
+ {
47
+ "path": "skills/deploy-vps-openclaw/SKILL.md",
48
+ "name": "deploy-vps-openclaw",
49
+ "description": "OpenClaw VPS deploy runbook \u00e2\u20ac\u201d build + ship the meta-agent plugin to the Hetzner VPS, restart the gateway, verify reconnect, rollback. Destructive.",
50
+ "category": "skill",
51
+ "current_hash": "1c7042b2714d04168b8d7b2afb519674242f18e7223f600b3c8f873bec640202",
52
+ "prior_hashes": []
53
+ },
54
+ {
55
+ "path": "skills/code-brain-hook/SKILL.md",
56
+ "name": "code-brain-hook",
57
+ "description": "add-code-brain \u00e2\u20ac\u201d when to call brain_code_recall, what the code brain stores, and optional UserPromptSubmit hook setup for automatic code-aware context.",
58
+ "category": "skill",
59
+ "current_hash": "abf685d5d6770b34297f74dec42ff657b496a087db3f767296633b5db5bfdd4f",
60
+ "prior_hashes": [
61
+ "f5ceff808f8f540e612c18b8ba1c1f5c771df9f64bf1eb84832279e61b140c30"
62
+ ]
63
+ },
64
+ {
65
+ "path": "skills/file-bug/SKILL.md",
66
+ "name": "file-bug",
67
+ "description": "File a reproducible bug as a first-class AgentHub ticket via report_bug \u00e2\u20ac\u201d captures severity, repro steps, environment, and the defect lifecycle. Use when you hit a defect, failing test/CI step, or reproducible misbehavior worth tracking.",
68
+ "category": "skill",
69
+ "current_hash": "814bd58fa387c074b3fc1195b31e0e32d38402510028d4709579ec1f1ed663f1",
70
+ "prior_hashes": []
71
+ },
72
+ {
73
+ "path": "skills/multiagent-brainstorm/SKILL.md",
74
+ "name": "multiagent-brainstorm",
75
+ "description": "Brainstorm a design with another AgentHub agent, mostly autonomously \u00e2\u20ac\u201d a background subagent drives each side, polling a server-tracked session and exchanging turns, pausing for a human only on real decisions, and concluding with a structured outcome that seeds an OpenSpec change.",
76
+ "category": "skill",
77
+ "current_hash": "311182e620681ca4f059d07ba5df14fdf1cd6e811b11619088888f3e666df117",
78
+ "prior_hashes": [
79
+ "b3792bb7e44a5f581172d94c5b145ef6c1420e28426f796a38594250a28f1de1",
80
+ "aff7ed284060cd0e157c35b2572047a42144eef80d4299f3592a5caf9ef240e5"
81
+ ]
82
+ },
83
+ {
84
+ "path": "skills/inbox/SKILL.md",
85
+ "name": "inbox",
86
+ "description": "Read your AgentHub inbox safely and acknowledge only what you actually read. Marks read only the specific ids whose bodies were seen, and never when the result reports truncated - a bulk ack of an unseen page is what lost messages on 2026-10-14 (AGHUB-1426).",
87
+ "category": "skill",
88
+ "current_hash": "bf4a56716ecf89534e790e66edcc88a01d0bc8d7e99e13c9c85119c8579fc393",
89
+ "prior_hashes": [
90
+ "e7cacbf45ac93de3c8b23705fd94d4f03be9f01a3970050e1c3ebf06665d04cb"
91
+ ]
92
+ },
93
+ {
94
+ "path": "skills/zoho-mail/SKILL.md",
95
+ "name": "zoho-mail",
96
+ "description": "Read and reply to email in a registered Zoho mailbox: find the message, read its attachments, and save a threaded Reply-All draft with files attached, then verify what was saved. Written after a 2026-10-30 bid draft lost its attachments, cc and thread.",
97
+ "category": "skill",
98
+ "current_hash": "972be83d5d7ae1dcb6434ba7802cdee941d4e7bd9c45add0ca16a5a6b533c2c1",
99
+ "prior_hashes": [
100
+ "017cd03e191c847ade9b21fa356faf3bbe96515942f1580360394820dc29af55"
101
+ ]
102
+ }
103
+ ]
104
+ }