One word, one meaning
No ambiguity for teammates, and none for the agent reading your specs.
None of them are model-quality problems. They are all context problems — and context is something you can engineer.
You paste the same architecture explanation again. Or you dump the whole repo in and watch the context window fill with things this task will never touch.
One small feature request, and it quietly refactors three modules you never mentioned. Without stated boundaries, everything looks in scope.
Specs drift from code within a week. Nobody updates them, so nobody trusts them, so the agent gets fed stale truth — confidently.
If staying in sync means hand-editing documents after every commit, it will not happen. The model has to maintain itself, or it dies.
A context is a bounded area where every word means exactly one thing. Inside it you model entities and usecases; connections between contexts are derived from @mentions between usecases — never hand-drawn.
No ambiguity for teammates, and none for the agent reading your specs.
DSpecs derives which contexts a change actually affects — by traversing the graph, not by asking an LLM.
Smaller prompts, fewer hallucinations, and no context window wasted on unrelated code.
A linter flags specs that drifted or went thin; anything the agent wants to rewrite in your prose comes back as a proposal you approve.
You maintain the model; specs are a build artifact. One click compiles CLAUDE.md, AGENTS.md, Cursor rules and JSON — with your Constitution on top — and ships them over remote MCP or the CLI.
$ dspecs pull ✓ CLAUDE.md (17.8 KB) ✓ AGENTS.md ✓ .cursor/rules/ (10 files) ✓ dspecs.json ## 0. Project Constitution Stack: Next.js · Prisma · PostgreSQL ## 1. Context: Ordering #### Entity: Customer ⭐ root #### Usecase: Checkout — actor: Buyer
$ claude mcp add --transport http dspecs \ https://dspecs.com/api/v1/mcp \ --header "Authorization: Bearer dsp_xxx" # 13 tools available: # get_project_overview · get_context # get_usecase · get_specs · search_specs # list_updates · get_update_delta # set_update_status · propose_spec_change # get_sync_plan · import_model_map # finish_code_map · get_mapping_status
Every context, entity and usecase carries a codeRef — the real files and symbols that implement it. Your agent maps the repository itself; you review the drift. Nothing is ever deleted without you.
## 2. Code Map Modify only what section 1 requires; read the rest for context. Files not listed here are unaffected — do not modify them. - src/ordering/coupon.service.ts - src/ordering/order.entity.ts
Change the model and DSpecs captures exactly what is different — then compiles a focused prompt: what changed, which files it touches, and the minimal surrounding context. No full re-compile, no re-explaining.
## 0. Constitution Stack: Next.js · Prisma · PostgreSQL ## 1. What Changed #### UPDATED Usecase: Checkout - contentText: "..." → "...award 1 point per $10" + CREATED Field: Customer.loyaltyPoints (int ≥ 0) ## 2. Relevant Context #### Entity: Customer ⭐ root #### Usecase: Award Loyalty Points · write ## 3. System Map - Ordering ← affected
The model sits at the centre and the loop closes in both directions: you change specs, the agent builds, then the agent syncs the code map back so the model never falls behind.
Point your agent at the repo and it maps your codebase into contexts, entities and usecases — each bound to real files. Or start from a document, or from scratch.
Model plus your project rules compile into CLAUDE.md, AGENTS.md and Cursor rules — Constitution always rendered first, so a thin slice never loses your conventions.
The agent pulls exactly what it needs over MCP: one usecase, one context, or a delta for the update it is implementing.
When the work is done, the agent asks DSpecs what to re-scan — a work order computed from what changed in the model, not from your git history — and pushes the refreshed code map. You review the drift and accept.
Stack, architecture, conventions, non-negotiables — kept as a library of named rules rather than one wall of text, and injected at the top of every compile and every delta.
✓ stack.md default · Next.js · Prisma · PostgreSQL ✓ conventions.md default · DDD, event-driven, i18n ○ legacy-api.md optional · pick per compile $ compile --delta ## 0. Project Constitution ### stack ### conventions ## 1. What Changed …