Tracey
CLI, Web, LSP, and MCP toolkit to measure spec coverage in Rust codebases
CLI, Web, LSP, and MCP toolkit to measure spec coverage in Rust codebases
暂未识别到可直接复制的 MCP 配置,请查看 GitHub README。后台管理员可以补充配置。
# tracey > **Note:** Looking for Tracy, the frame profiler? That's a different project: [wolfpld/tracy](https://github.com/wolfpld/tracy) Spec coverage for codebases. Tracks traceability between requirements (in markdown or StrictDoc) and implementations/tests (in source code). Catches spec drift before it becomes a problem. ## What it does Specs, implementations, and tests drift apart — code changes without updating specs, specs describe unimplemented features, tests cover different scenarios than requirements specify. Tracey uses lightweight annotations in source code comments to link specification requirements — written in markdown or StrictDoc (`.sdoc`) — with the implementing code and tests. This enables: - Verifying multiple implementations (different languages, platforms) match the same spec - Finding which requirements lack implementation or tests - Seeing which requirement justifies each piece of code - Analyzing impact when requirements or code changes - Detecting stale references when spec text changes but code annotations haven't been updated For the full specification, see [docs/spec/tracey.md](docs/spec/tracey.md). ## Installation ```bash # Pre-built binary (fast, from GitHub Releases) curl --proto '=https' --tlsv1.2 -LsSf https://github.com/bearcove/tracey/releases/latest/download/tracey-installer.sh | sh # Or build from source (main branch) cargo install --locked --git https://github.com/bearcove/tracey --branch main tracey ``` Pre-built binaries are available for `aarch64-apple-darwin`, `aarch64-unknown-linux-gnu`, `x86_64-unknown-linux-gnu`, `x86_64-pc-windows-msvc`, and `aarch64-pc-windows-msvc`. ## Quick Start ### 1. Define requirements in your spec Use the `r[req.id]` syntax to define requirements in a markdown specification document: ```markdown # Channel Management r[channel.id.allocation] Channel IDs MUST be allocated sequentially starting from 0. r[channel.id.parity] Client-initiated channels MUST use odd IDs, server-initiated channels MUST use even IDs. ``` The prefix (`r` in this case) can be any lowercase alphanumeric marker. Tracey infers it from the spec files. Specs authored in [StrictDoc](https://strictdoc.readthedocs.io/) (`.sdoc`) are loaded the same way — see [Writing Specs](docs/content/guide/writing-specs.md) for the syntax. Pick whichever format fits your project; they don't mix per spec. ### 2. Reference requirements in your code Add references in source code comments using `PREFIX[VERB REQ]`: ```rust // r[impl channel.id.allocation] fn allocate_channel_id(&mut self) -> u32 { let id = self.next_id; self.next_id += 1; id } // r[impl channel.id.parity] fn next_client_channel(&mut self) -> u32 { // ... } ``` ```rust // In test files: // r[verify channel.id.parity] #[test] fn client_channels_are_odd() { // ... } ``` Verbs: | Verb | Meaning | |------|---------| | `impl` | This code implements the requirement (default if verb omitted) | | `verify` | This code tests/verifies the requirement | | `depends` | This code depends on the requirement | | `related` | This code is related to the requirement | ### 3. Configure tracey Create `.config/tracey/config.styx`: ```styx specs ( { name my-spec include (docs/spec/**/*.md) impls ( { name rust include (src/**/*.rs) exclude (target/**) test_include (tests/**/*.rs) } ) } ) ``` Config fields: | Field | Description | |-------|-------------| | `name` | D...
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的...
🚀Vite+Vue3+Gin拥有AI辅助的基础开发平台,企业级业务AI+开发解决方案,内置mcp辅助服务,内置skills管理,支持TS和JS混用。它...
Your API ⇒ Paid MCP. Instantly.
MCP server to provide Figma layout information to AI coding agents like Cursor
程序员鱼皮的 AI 资源大全 + Vibe Coding 零基础教程,分享 OpenClaw 保姆级教程、大模型玩法(DeepSeek / GPT / Gemini / Claud...
A polyglot document intelligence framework with a Rust core. Extract text, metadata, images, and structured information...