
Evolveguard
io.github.RudrenduPaul由 GitHub 帳號 RudrenduPaul 發布v0.1.4更新於 Oct 24, 2026
Wraps the evolveguard CLI as a single generic MCP tool for agent-skill file safety checks.
概覽
本機 MCP 伺服器,將 evolveguard CLI 包裝成單一通用工具,讓助理記錄並檢查 Claude Agent Skill 檔案的能力漂移。
- 可以做什麼
- 透過單一通用工具以任意參數執行 evolveguard CLI,涵蓋 record、check 與 report 子命令,回傳回傳碼、標準輸出、標準錯誤,以及可解析時的 JSON。針對帶標籤的 fixtures 記錄技能檔案宣告與靜態推斷能力面的基準。重新檢查編輯後的 SKILL.md 或 MEMORY.md 並回報漂移,例如新增寫入能力或檔案系統範圍擴大。列印先前產生的漂移報告。
- 適用情境
- 適用於助理編輯 Claude Agent Skill 或 MEMORY.md 檔案後,希望以提交前或 CI 方式確認該編輯沒有悄悄擴大技能能力面的情境。它是靜態檢查而非實際執行代理,因此無法判斷某個提示下的行為是否真的改變。
- 執行需求
- 以本機程序透過 stdio 執行。需從 PyPI 安裝帶 mcp 附加項的 Python 套件 evolveguard-cli(例如透過 uvx),並啟動 evolveguard-mcp 指令;需要 Python 3.9 或更新版本。未宣告需要帳號、API 金鑰、環境變數或網路存取。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Evolveguard,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
evolveguard
[CI] [npm version] [PyPI version] [License: MIT] [Node] [Python versions]
What it does • Quickstart • CLI reference • Agent-native usage • MCP server • How it compares • FAQ
Catch behavioral drift when a Claude Agent Skill or a Claude Code MEMORY.md file edits itself, before the edit ships.
[!NOTE] Both packages are live and named consistently:
evolveguard-clion PyPI andevolveguard-clion npm (renamed 2026-07-19 from the old plainevolveguard, which is now deprecated on both registries).npm install -g evolveguard-cliandpip install evolveguard-cliboth work today; the demo GIFs below were recorded against the published packages, not a local build.
What it does
That's real output from this repo's own fixtures/labeled-non-breaking-edits/case-03-add-write-capability/
test case, wired to filesystem: read-only becoming read-write in the skill's frontmatter.
Reproduce it yourself: evolveguard record the before/SKILL.md in that folder against its
fixtures.json, then evolveguard check the after/SKILL.md.
Features
Static analysis, not a live agent run. record parses a skill file's YAML
frontmatter (declared tools, network, filesystem, scope, and any bundled
hooks), scans the skill's body text and hook scripts for evidence of network calls
or filesystem writes, and combines both into a capability surface. check re-parses
the edited file with the same logic and diffs the result. Neither command runs
eval, shells out to a subprocess, or executes a skill's hook scripts, in either the
TypeScript or the Python distribution.
Two-level diffing catches drift a single fixture can miss. Each fixture's
expectedToolCalls filters the recorded capability surface down to what that fixture
cares about, but check also diffs the skill's whole capability surface separately.
A new capability that no fixture's expectedToolCalls happens to cover still shows
up as a surfaceChanges entry instead of passing silently. Confirmed against this
repo's own case-04-scope-widened fixture, where a fs.write scope widens from
./workspace/** to ./**.
0% false positives on a labeled corpus, reproducibly. npx vitest run src/evolveguard/benchmark.test.ts runs the record/check/diff pipeline against
fixtures/labeled-non-breaking-edits/: 2 cases hand-labeled non-breaking (a wording
tweak, a typo fix) and 3 labeled breaking (a new write capability, a widened scope, a
hook script gaining a network call). As of this commit, both non-breaking cases stay
clean: 0 of 2 flagged as drift. The corpus is small and grows as more real skill edits
get reported.
A path-traversal guard on hook scripts. A skill's declared hook paths are resolved
and validated against that skill's own directory before being read, including a
symlink-escape re-check that runs after the lexical containment check passes
(src/evolveguard/paths.ts and python/src/evolveguard/paths.py).
Every subcommand supports --json. record, check, and report all take a
--json flag and return a stable schemaVersion-tagged structure, so a coding agent
can call any of them as a subprocess and parse the result directly.
Two independently maintained, format-compatible distributions. The npm package
(TypeScript, repo root) and the PyPI package (Python, python/) parse the same
frontmatter schema and produce byte-compatible baseline and report JSON. A baseline
recorded with one CLI can be checked with the other; see
docs/concepts.md
for the file-format details.
evolveguard detects changes in what a skill is declared or shown to be capable of. It does not run a live LLM agent or replay a real conversation transcript, so it cannot tell you whether an agent would actually behave differently on a given prompt. That is an intentional scope limit, and also why it needs nothing hosted and runs fully offline in a pre-commit hook or CI job.
Quickstart
A fixtures file is a JSON array of labeled prompts and the tool-call shapes each one is expected to touch:
expectedToolCalls is optional; omit it and the fixture is treated as exercising the
skill's entire capability surface. scopeMatches (a glob) narrows a tool to a specific
filesystem scope, e.g. { "tool": "fs.write", "scopeMatches": "./workspace/**" }.
CLI command reference
Generated from the actual --help output of the installed CLI (verified against both
the npm and PyPI builds; flags and defaults are identical across distributions).
evolveguard --help
evolveguard record --help
evolveguard check --help
evolveguard report --help
Exit codes: 0 all fixtures PASS and no surface-level drift, 1 at least one DRIFT
was found (pass --allow-drift to still exit 0 while still reporting it), 2 a usage
error or a file that failed to parse.
[!WARNING] The npm build's
evolveguard --versioncurrently prints0.1.0even though the published package is at a newerpackage.jsonversion; the PyPI build reads its version from installed package metadata and reports it correctly. Use the badges above, not--version, if you need the exact currently-published version number of the npm package.
Agent-native usage
Every subcommand supports --json for structured output an agent can parse directly:
[!NOTE] The Python distribution ships a real MCP server (see MCP server below). The npm/TypeScript distribution's
evolveguard mcpsubcommand is still a "coming soon" stub; until it ships, callrecord/check/report --jsondirectly as a subprocess from your coding agent, or use the Python MCP server even if the rest of your toolchain is on the npm package.
MCP Server
The Python distribution (evolveguard-cli on PyPI) ships a Model Context Protocol
server, so an MCP-compatible agent (Claude Desktop, Claude Code, etc.) can call
evolveguard directly instead of shelling out and parsing text. The npm/TypeScript
distribution does not ship one yet -- its evolveguard mcp subcommand remains a stub.
Add it to your MCP client's config, for example Claude Desktop's
claude_desktop_config.json:
It exposes a single tool, run(args: list[str]), that shells out to the installed
evolveguard CLI with the exact argv you'd type at a terminal and returns
{returncode, stdout, stderr, json?} (or {error: ...} if the command fails, times
out, or exits non-zero) -- so one tool covers record, check, and report without a
bespoke MCP tool per subcommand. Example call from an agent:
which returns the same structured report evolveguard check ./SKILL.md --json would
print, plus the raw returncode/stdout/stderr.
Library API
evolveguard also exports a programmatic API for the same pipeline, for teams who want to integrate it into their own tooling instead of shelling out to the CLI. Both distributions expose the same functions and the same JSON-compatible file format; a baseline recorded with one CLI can be checked with the other (see docs/concepts.md).
TypeScript:
See src/evolveguard/index.ts for the full exported surface: parseSkillFile,
deriveCapabilitySurface, loadSkill, buildFixtureSnapshots, loadFixtures,
recordBaseline, replaySkill, diffFixture, diffAll, diffSurface, writeBaseline,
readBaseline, writeReport, readReport, plus the shared types.ts interfaces.
Python (pip install evolveguard-cli):
See python/README.md for the Python-specific walkthrough and
the same exported surface under evolveguard/__init__.py.
How it compares
Braintrust is a general LLM eval and observability platform. It is a strong choice
if you are already logging traces from a live agent and want statistical eval scoring
across runs, but it needs SDK integration and an eval-definition step per app.
evolveguard needs neither: point it at one SKILL.md file and a fixtures JSON, and it
works.
agent-eval (this same author's other
repo) answers a different question: whether an agent's behavior changed between two
versions you define, for any agent, framework-agnostic, by running both versions
yourself and computing a p-value on the difference. evolveguard is triggered directly
by a file diff on SKILL.md/MEMORY.md and answers whether this specific edit
changed the capability surface a baseline recorded. It parses the skill artifact
itself and never asks you to define or run anything live.
What is evolveguard, and why does it exist
evolveguard is a command-line tool and TypeScript library that detects capability drift
in Claude Agent Skill files (SKILL.md) and Claude Code auto-memory files (MEMORY.md)
after they are edited, by a human or by an agent. It works by parsing a skill's declared
frontmatter scope and any static evidence of network or filesystem-write behavior in its
body text and bundled hook scripts, snapshotting that as a baseline, and re-deriving the
same snapshot after an edit to diff against it. It exists because Claude Code's Agent
Skills ecosystem lets skills and memory files change an agent's behavior without a
human necessarily reviewing every edit for regression, and no existing tool checks that
specific artifact shape without requiring SDK integration or a live agent run.
Status
This is a v0.1 release: a small, focused addition to the existing Claude Agent Skills ecosystem. It ships fully MIT-licensed with no proprietary tier, as two independent, equally first-class packages:
- PyPI (
evolveguard-cli, Python), live at pypi.org/project/evolveguard-cli. A genuine independent port, not a wrapper around the Node binary (seepython/README.md).pip install evolveguard-cliinstalls it directly. The package was originally published under the nameevolveguard; that older PyPI project is retired and no longer receives updates, installevolveguard-cliinstead. - npm (
evolveguard-cli, TypeScript), live at npmjs.com/package/evolveguard-cli.npm install -g evolveguard-cliinstalls it directly. Renamed 2026-07-19 from the old plainevolveguard, which is now deprecated, to match the PyPI package's naming convention.
FAQ
What is evolveguard, exactly?
A command-line tool and library that detects capability drift in Claude Agent Skill
files (SKILL.md) and Claude Code auto-memory files (MEMORY.md) after they are
edited. It is not a self-evolving agent framework and does not build, run, or host
agents itself. It is a regression-testing CI gate that reacts to a file diff on a
skill artifact that already changed, by a human or an agent. See "What is evolveguard,
and why does it exist" above for the full definition.
Does evolveguard call an LLM? No. Record and check are both fully static and deterministic; see "Features" above for exactly what each command parses and scans.
What's the core differentiator versus a general testing or eval tool?
It needs nothing hosted and nothing to integrate: point it at one SKILL.md file and a
fixtures JSON, and record/check work immediately, with zero SDK integration and no
live agent run. That is the tradeoff the "How it compares" table above documents:
narrower scope than a general eval platform, in exchange for zero setup.
How does evolveguard compare to Braintrust?
Braintrust is a general LLM eval and observability platform that needs SDK integration
and an eval-definition step, and it scores real traces from a live agent run.
evolveguard needs neither; it parses the skill file itself and never calls an LLM. Use
Braintrust if you are already logging traces and want statistical eval scoring across
runs. Use evolveguard if you want a pre-commit or CI check that a SKILL.md/MEMORY.md
edit did not silently widen what the skill can do. See the comparison table in "How it
compares" above for the full breakdown, including how it compares to this same author's
agent-eval.
Does it work with MEMORY.md files, which have no frontmatter?
Yes. A file with no frontmatter is parsed with an empty declared scope, so its capability
surface comes entirely from static evidence found in the body text.
What platforms does it run on, and how do I install it?
The npm package requires Node.js >=20.12 (any OS Node supports) and installs with
npm install -g evolveguard-cli. The PyPI package requires Python >=3.9 and installs
with pip install evolveguard-cli. Both distributions are pure-library/CLI packages
with no native bindings, so there is no OS-specific build step on either side.
What's a real limitation to know about before relying on this?
It only sees declared or shown capability, not runtime behavior. A skill could pass
check and still behave differently on a given prompt in ways that do not touch its
capability surface. The false-positive benchmark (see "Features" above) is also
currently a small, hand-labeled corpus of 5 before/after pairs, not a large dataset, so
treat the 0% figure as a starting measurement, not a statistical guarantee. The Python
distribution ships a real MCP server (see "MCP server" above); the npm/TypeScript
mcp subcommand is still a "coming soon" stub, and the npm build's evolveguard --version output currently lags the package's real published version (see "CLI
command reference" above).
Is this a general agent-evolution framework? No. See "How it compares" above. evolveguard deliberately does not build or host a self-evolving agent framework; it only tests skill/memory edits that already happened.
Is evolveguard free to use, including commercially? Yes. It is MIT-licensed with no proprietary tier or paid version; see LICENSE. You can use, modify, and redistribute it, including in commercial projects, under the standard MIT terms.
Contributing
See CONTRIBUTING.md. Every change lands with tests in both
distributions; a change to the frontmatter schema, the capability-surface derivation,
or the diff verdict logic must be made in both src/evolveguard/ (TypeScript) and
python/src/evolveguard/ (Python), with equivalent coverage added to both suites.
Security
See SECURITY.md. evolveguard reads local files you point it at and never executes any of them; it makes no network calls and does not run a live agent.
License
MIT. See LICENSE.
來源:README.md,提交 ca716c8
工具
0版本歷史
1- v0.1.4最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分