Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Let coding agents on one machine message and wake each other. Run `harness-summit install` first.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"harness-summit": {
"command": "npx",
"args": [
"-y",
"harness-summit",
"mcp",
"--harness",
"ใส่ค่าของคุณ"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add harness-summit -- npx -y harness-summit mcp --harness 'ใส่ค่าของคุณ'ตัวนี้ต้องใส่ค่าในคำสั่งเปิดเอง ให้คัดลอกค่าตั้งแล้วเติมค่า
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"harness-summit": {
"command": "npx",
"args": [
"-y",
"harness-summit",
"mcp",
"--harness",
"ใส่ค่าของคุณ"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้ต้องใส่ค่าในคำสั่งเปิดเอง ให้คัดลอกค่าตั้งแล้วเติมค่า
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"harness-summit": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"harness-summit",
"mcp",
"--harness",
"ใส่ค่าของคุณ"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub anthonyleung-dev ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.3) เข้า registry 21 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, yontu
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Türkçe yazı denetimi: TDK kuralları, yapay zekâ izleri, metin türüne göre üslup.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Let your coding agents talk to each other.
harness-summit lets agent sessions on one machine send messages to each other, across different harnesses: Claude Code, Codex, OpenCode, pi and OMP (oh-my-pi). When a message arrives, the receiver wakes up by itself, even when it sits idle at its prompt. It reads the mail, does the work, and replies.
_Claude Code (top left), Codex (bottom left) and OMP (right) join one group with /sj / $sj, then message each other. Each receiver wakes up by itself and answers. Sped up 1.5x._
It is an MCP server plus a small wake adapter per harness. All state is plain files under ~/.harness-summit. There is no daemon, no network and no account.
Claude Code (cc): /summit-send @cx Review the diff in src/auth and tell me what breaks.
Codex (cx): wakes up, reads the message, reviews, then: summit_send to cc (replyTo ...): "Two problems: ..." Claude Code (cc): wakes up with the reply.
| Harness | Tested version | How you type a command | How an idle session is woken |
|---|---|---|---|
| Claude Code | 2.1.296 | /sj (plugin skill) | plugin hooks: SessionStart + FileChanged rewake |
| Codex CLI | 0.162.1 | $sj (skill) | codex queue --thread |
| OpenCode | 2.0.24 | /sj | opencode api session.prompt with delivery: "queue" |
| pi | 1.0.4 | /sj | extension: sendMessage / sendUserMessage |
| OMP | 18.8.7 | /sj | the same extension file |
Every wake path was tested live on these versions, with idle receivers and no manual nudge. Other versions may work; the hook and extension APIs these paths use are young and change often.
You can use any subset of the five harnesses above. install sets up only the ones you name.
Verified live on Linux (every wake path above) and on macOS (Claude Code to Claude Code). Windows is verified by CI only (build, typecheck and the full test suite on windows-latest, Node 22 and 24); no harness session has run on it yet. On Windows, the Claude hooks use the exec form and the Codex and OpenCode wakes run their .cmd shims through cmd.exe; both follow the docs and the tests, not a live run.
Node.js 22 or later must be on PATH. In Claude Code:
/plugin marketplace add anthonyleung-dev/harness-summit
/plugin install harness-summit@harness-summit
Then restart Claude Code. This needs no global npm install.
If node on your PATH is a shim that starts node as a child process (Volta does this), this route cannot work: the plugin starts node from PATH, and every tool fails with SUMMIT_NO_HOST_KEY. Use the global install below with --harness claude instead; it writes the absolute path of node.
Claude Code keeps one marketplace per name, and both routes name theirs harness-summit:
harness-summit install --harness claude before: run harness-summit uninstall --harness claude first, then add the plugin as above./plugin before and now want the global install for Claude Code: in Claude Code run /plugin uninstall harness-summit@harness-summit, then /plugin marketplace remove harness-summit. install checks this and stops with these steps. To keep the plugin, install the other harnesses only: --harness codex,pi,omp,opencode.Codex, OpenCode, pi and OMP need the global install:
npm install -g harness-summit
harness-summit install --harness all --dry-run # print the plan; writes nothing harness-summit install --harness all # or: --harness claude,codex harness-summit doctor # check what is registered
doctor shows the Claude Code route that install set up (route=install). It does not detect a /plugin install of the public plugin (route=unknown). When a registration starts another node or CLI than the one you run doctor with, it adds a warn line that names both and the install command that fixes it (the exit code stays 0).
Install it globally, not with npx: the registrations point at the absolute path of the installed CLI, and an npx cache can be cleared under them. To run from a checkout instead, see Development.
Restart the harness sessions that are already open; they load the new configuration only at start. Then, in two sessions in the same git project:
session A: /sj alice
session B: /sj bob session A: /summit-send @bob Run the tests and tell me which ones fail.
Session B wakes up, reads the message and answers alice.
To remove everything that install added:
harness-summit uninstall --harness all
| What | Claude Code / pi / OMP / OpenCode | Codex |
|---|---|---|
| join, with an optional name | /sj [name] | $sj [name] |
| list the members of my group | /sl | $sl |
| set my display name | /sr [--force] | $sr [--force] |
| move to a named group | /sg [--force] | $sg [--force] |
| send a message | /summit-send @ | $summit-send @ |
| leave | /summit-bye | $summit-bye |
The long forms summit-join, summit-list, summit-rename and summit-group also exist. In Claude Code the menu shows the plugin prefix (/harness-summit:sj), but typing /sj works. Codex 0.162.1 has no custom slash commands, so the commands are skills, typed with $.
Names ignore letter case. Taking a name from an agent that is not active needs --force. A resumed session always gets its agent and mail back, but its name may have been taken meanwhile.
Agents in the same git project join the same group automatically. To talk across projects, every agent runs /sg .
The model uses eight MCP tools: summit_join, summit_send, summit_read, summit_members, summit_whoami, summit_rename, summit_group and summit_bye.
summit_send takes to (@name, name or a uuid), the text in message, and replyTo (the id of the message it answers) when it is a reply. body is an alias of message, because summit_read returns each message's text in body. Give exactly one of the two.
sequenceDiagram
participant A as alice (any harness) participant FS as ~/.harness-summit participant W as wake path participant B as bob (any harness) A->>FS: summit_send: append one record to bob's inbox A->>W: wake bob, using the wake action bob recorded when he joined Note over W: Claude/pi/OMP: write bob's signal file Codex: codex queue OpenCode: opencode api session.prompt W->>B: "[harness-summit] 1 unread message(s) from alice. Call the summit_read tool." B->>FS: summit_read: records past bob's cursor, then move the cursor B->>FS: summit_send to alice with replyTo
summit_read.--force meanwhile), and /clear or /new starts a new agent while the old one waits to be resumed.sent, skipped (a wake is already pending), failed (with the reason), or queued when the receiver may not be active (after /clear, /new or an exit): it sees the message when its session is active again./sj gives the agent these rules in your words, and every summit_read result repeats them:
summit_send({ to: " ", replyTo: " ", message: " " }). A reply needs no answer, so two agents never answer each other in a loop.replyTo only to answer a message. Send a new request or a forwarded message without it.An agent does not know it can talk to other agents until you tell it. The commands are for you; the agent can call the MCP tools itself. Add a note like this to your instructions file: CLAUDE.md for Claude Code, AGENTS.md for the other harnesses (global or per project):
## Talk to other agents (harness-summit)
To ask an agent in another session or harness for help, use the harness-summit MCP tools, not its terminal:
summit_join, then set a clear name with summit_rename.summit_members.summit_send (to = name or uuid, message = the text).summit_read when a notice says mail is waiting. Follow the guidance it returns.
You do not need to copy the mail rules: summit_join and every summit_read return them.
install changes| Harness | Registration | Commands | Wake adapter |
|---|---|---|---|
| Claude Code | a generated plugin in ~/.local/share/harness-summit/claude-marketplace, added with claude plugin | plugin skills | plugin hooks |
| Codex | a marked block [mcp_servers.harness-summit] in $CODEX_HOME/config.toml, with tool approvals | $CODEX_HOME/skills/ /SKILL.md | none needed |
| OpenCode | opencode mcp add --global harness-summit ... | $XDG_CONFIG_HOME/opencode/commands/ .md | none needed |
| pi | registered by the extension on every session start (no mcp.json entry; an older one is removed) | ~/.pi/agent/prompts/ .md | ~/.pi/agent/extensions/harness-summit.ts |
| OMP | `mcpServers.harness-sum
ตัดมาแค่ช่วงต้น อ่านต่อใน repo