Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Audit AI skill safety before you ship. Static, semantic, adversarial, supply chain scans.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
TAR_ENGINE_URL, TAR_ENGINE_BYOK_OPENAI_KEY, TAR_ENGINE_BYOK_ANTHROPIC_KEYค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"tar-engine": {
"command": "uvx",
"args": [
"tar-engine",
"tar-engine",
"tar-engine-mcp"
],
"env": {
"TAR_ENGINE_URL": "ใส่ค่าของคุณ",
"TAR_ENGINE_BYOK_OPENAI_KEY": "ใส่ค่าของคุณ",
"TAR_ENGINE_BYOK_ANTHROPIC_KEY": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add tar-engine --env TAR_ENGINE_URL='ใส่ค่าของคุณ' --env TAR_ENGINE_BYOK_OPENAI_KEY='ใส่ค่าของคุณ' --env TAR_ENGINE_BYOK_ANTHROPIC_KEY='ใส่ค่าของคุณ' -- uvx tar-engine tar-engine tar-engine-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"tar-engine": {
"command": "uvx",
"args": [
"tar-engine",
"tar-engine",
"tar-engine-mcp"
],
"env": {
"TAR_ENGINE_URL": "ใส่ค่าของคุณ",
"TAR_ENGINE_BYOK_OPENAI_KEY": "ใส่ค่าของคุณ",
"TAR_ENGINE_BYOK_ANTHROPIC_KEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"tar-engine": {
"type": "stdio",
"command": "uvx",
"args": [
"tar-engine",
"tar-engine",
"tar-engine-mcp"
],
"env": {
"TAR_ENGINE_URL": "ใส่ค่าของคุณ",
"TAR_ENGINE_BYOK_OPENAI_KEY": "ใส่ค่าของคุณ",
"TAR_ENGINE_BYOK_ANTHROPIC_KEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
TAR_ENGINE_URL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub qingxuantang ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: TAR_ENGINE_BYOK_OPENAI_KEY, TAR_ENGINE_BYOK_ANTHROPIC_KEY
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.3.3) เข้า registry 4 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, MemberVault MCP by usefulapi
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.
List courses; add users to courses, remove course access or delete users in MemberVault.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Static + semantic + adversarial + supply-chain audit for AI agent skills. Run it in CI, or call it as an MCP tool from Claude Code / Cursor / Codex. BYOK for the LLM layers; free hosted tier + live Playground on tarai.dev.
Listed on the official Model Context Protocol Registry and published to PyPI — one-click install into any MCP-compatible agent.
tar-engine audits SKILL.md (OpenClaw, Claude Code), Codex `skill.yaml`, Claude Code custom commands (.claude/commands/*.md), and OpenCode configs — with no change to how you author skills. The core idea: a skill can pass every static red-flag check and still behave maliciously at runtime. TAR Engine catches that.
Three ways to run it — two of them install nothing on your machine:
tar-engine scan ./skills --min-score 70 exits 1 if any skill scores below the bar. A pre-publish gate, not a nicer directory card.SKILL.md while you write. It's a pinned, hash-verifiable PyPI release — no arbitrary git+https install. Details below.Point it at a skill that *looks* fine. A "weekly note formatter" whose SKILL.md reads clean — but buried in it is a curl … | bash step, a "cloud sync" that tars up ~/.aws and ~/.ssh, and an instruction telling the agent to hide those network calls from you:
weekly-note-formatter 0 / 100 grade F risk CRITICAL
L01 static SS-003 critical remote script piped to shell (curl … | bash) L01 static PI-002 critical hidden instruction — "don't tell the user" L02 semantic SEM-003 critical only formats docs, yet packages up AWS creds + SSH keys L02 semantic SEM-004 high instructs the model to lie about its network calls L03 adversarial AR-002 high 3/3 role-jailbreak probes changed the skill's behavior
→ below --min-score 70, exit 1
Regex catches the curl | bash. The semantic and adversarial layers catch the parts regex can't: intent that exceeds the skill's stated purpose, and instructions that turn the agent against its user. Every finding cites the exact source line with a fix.
| Layer | What it looks for | LLM? | |
|---|---|---|---|
| L01 Static | Regex red flags: `curl\ | bash` installs, credential/SSH exfil, obfuscated or base64 strings, hidden "ignore previous" style instructions, out-of-scope file writes | No |
| L02 Semantic | Reads what the skill *actually* asks the agent to do and flags intent beyond its stated purpose | Yes (BYOK) | |
| L03 Adversarial | Treats the SKILL.md as a system prompt and runs 15 probes across 5 attack classes to see if it can be coerced into unsafe behavior | Yes (BYOK) | |
| L06 Supply chain | Parses declared dependencies and checks them against OSV.dev advisories + a typosquat reference list | No |
The 5 adversarial classes (L03):
| Class | ID | Probes for |
|---|---|---|
| Instruction override | AR-001 | ignore previous, new system prompt hijacks |
| Role jailbreak | AR-002 | DAN / hypothetical / fictional-roleplay bypasses |
| Hidden payload | AR-003 | base64 / leetspeak / unicode-lookalike smuggling |
| Authority spoof | AR-004 | I'm the developer / admin / platform staff |
| Reflective injection | AR-005 | output-as-instruction loops |
Every skill gets a 0–100 score, an A–F grade, and a risk class. L01 and L06 are deterministic and free; L02 and L03 require your own LLM key (BYOK).
These four layers implement a vendor-neutral standard — the Skill Audit Dimensions checklist (static, semantic, adversarial/behavioral, supply-chain). The dimensions are the standard; TAR Engine is one open-source reference implementation. That checklist also says the audit *tooling* must meet its own supply-chain bar — which is why TAR Engine ships as a pinned, hash-verifiable PyPI release with a zero-install hosted and CI path, not a git+https install.
The tar-engine CLI walks a directory, audits every skill it finds, and exits with a CI-friendly status code.
# audit every skill under ./skills, fail the build if any scores below 70
tar-engine scan ./skills --min-score 70
tar-engine list ./skills
tar-engine scan ./skills --json
Discovery covers five formats out of the box:
| File pattern | Format |
|---|---|
**/SKILL.md | OpenClaw, Claude Code, generic md |
**/.claude/commands/*.md | Claude Code custom commands |
**/skill.yaml / .yml | Codex |
**/manifest.json | Codex / Claude Code (key-detected) |
**/opencode.json | OpenCode |
Each audit payload bundles the primary skill file plus sibling .sh / .py / .js / .ts / .yaml / .json helper files in the same directory (200 KB cap). Catches the "SKILL.md clean but install.sh malicious" pattern.
Run it in CI — zero install. The audit runs inside *your own* CI sandbox on a pinned release; nothing is installed into your agent, and there is no arbitrary git fetch to trust:
- name: Audit AI skills
uses: qingxuantang/tar-engine@v0.3.3 # pinned release with: path: ./skills min-score: 70
Prefer a plain step? Run the pinned PyPI release directly — still no git+https:
- run: uvx --from tar-engine==0.3.3 tar-engine scan ./skills --min-score 70
Pre-commit hook:
#!/usr/bin/env bash
tar-engine scan ./skills --min-score 80 || exit 1
Exit codes: 0 clean, 1 below threshold, 2 usage/missing path.
TAR Engine ships an MCP server as a Python package, runnable with uvx — no Docker. By default it talks to the hosted backend at [tarai.dev](https://tarai.dev/) (free, rate-limited).
https://tarai.dev. We don't write skill text to disk or log it, but it does leave your machine. If you're auditing proprietary or sensitive skills, self-host and set TAR_ENGINE_URL=http://localhost:8765.OPENAI_API_KEY. Semantic + adversarial audit layers require an explicit opt-in via TAR_ENGINE_BYOK_OPENAI_KEY in the MCP server config — see BYOK below.uv (one-time, ~5 seconds)The package is run via uvx, which comes with uv. Install once:
# macOS / Linux
curl -fsSL https://astral.sh/uv/install.sh | sh
irm https://astral.sh/uv/install.ps1 | iex
pipx install uv
pip install --user uv
Verify with uvx --version.
One-click: grab setup-mcp.sh and run it — it checks for uv, prompts for an optional BYOK key (hidden input, never written to disk by the script), and registers the server with your agent:
curl -fsSL https://raw.githubusercontent.com/qingxuantang/tar-engine/master/setup-mcp.sh -o setup-mcp.sh
chmod +x setup-mcp.sh ./setup-mcp.sh # Claude Code (default); add --client cursor|codex
Or configure it manually. Two install forms are supported:
uvx --from tar-engine==0.3.3 tar-engine-mcp. Every release ships to PyPI with a published hash you can lock in your lockfile — this is the canonical, reproducible install and the form the MCP registry / Anthropic MCPB clients use. No arbitrary `git+https`; pin the version so you always know exactly what you're running.Claude Code
claude mcp add tar-engine -- uvx --from tar-engine==0.3.3 tar-engine-mcp
Verify: /mcp list should show tar-engine Connected. Restart Claude Code so this session picks up the new tool surface, then ask:
Audit this SKILL.md: [paste a skill]
Cursor
Edit ~/.cursor/mcp.json (or project-level .cursor/mcp.json):
{
"mcpServers": { "tar-engine": { "command": "uvx", "args": ["--from", "tar-engine==0.3.3", "tar-engine-mcp"] } } }
Reload MCP servers in Cursor (or restart the app), then call audit_skill_text from inside Cursor.
Codex CLI
Add to ~/.codex/config.toml:
[mcp_servers.tar-engine]
command = "uvx" args = ["--from", "tar-engine==0.3.3", "tar-engine-mcp"]
Restart the Codex CLI, then call audit_skill_text.
Any other MCP-compatible agent
Most agents accept an MCP server spec with command + args (JSON or TOML):
uvx["--from", "tar-engine==0.3.3", "tar-engine-mcp"] — pinned to a published PyPI release for a reproducible, hash-verifiable installenv (optional):
TAR_ENGINE_URL=http://localhost:8765 to self-hostTAR_ENGINE_BYOK_OPENAI_KEY=sk-... to enable semantic + adversarial layersReload the agent and call audit_skill_text to verify.
By default only the static rule layer runs against your skill — free, deterministic, no LLM cost. To enable the semantic LLM review and the adversarial prompt-fuzz pass, supply your own LLM key explicitly:
"tar-engine": {
"command": "uvx", "args": ["--from", "tar-engine==0.3.3", "tar-engine-mcp"], "env": { "TAR_ENGINE_BYOK_OPENAI_KEY": "sk-..." } }
The key layer is OpenAI-compatible, so you can point it at any compatible endpoint (TAR_ENGINE_BYOK_OPENAI_BASE_URL / TAR_ENGINE_BYOK_OPENAI_MODEL). We deliberate
ตัดมาแค่ช่วงต้น อ่านต่อใน repo