Generate and maintain a complete documentation context layer for any repo — using the LLM already in your IDE.
Project description
Doctyze
Turn any repo into living documentation — for humans and AI agents — using the LLM already in your IDE.
What it does
Point Doctyze at any repository, any stack. Your IDE's AI assistant then:
- Consolidates scattered docs (loose READMEs, wiki notes, design files) into one canonical
docs/tree — non-destructively. - Generates the missing docs from the actual code: feature specs, architecture + Mermaid diagrams, decisions (ADRs), runbooks, observability, dev/testing skills.
- Keeps them fresh — when code changes, it flags exactly which docs are now stale.
No API key. Doctyze uses the AI you already have in your IDE (Cursor / Claude Code / Copilot) — it never calls an LLM itself or asks for a key.
Get started — one command
In your repo (nothing to install — uvx fetches it on demand):
uvx doctyze init
That one command wires Doctyze into whatever AI assistants you have — it:
- registers the Doctyze MCP server in project configs:
.mcp.json(Claude Code),.cursor/mcp.json(Cursor),.vscode/mcp.json(VS Code / Copilot), and — if it detects them —.codex/config.toml(Codex) and.gemini/settings.json(Gemini). All repo-scoped and merge-safe (won't touch your other servers). - installs the skills (
.claude/skills,.cursor/rules,AGENTS.md), - scaffolds the canonical
docs/structure.
(Windsurf and Cline only support a global MCP config, so init detects them and prints how to add the server there; both read AGENTS.md, so their playbook is already covered.)
Then reload your IDE and, in your assistant, invoke the doctyze prompt (Claude Code: /doctyze — or just say "set up the documentation for this repo with Doctyze"). Your assistant organizes existing docs, reads the code, and writes the new docs — using its own model, no API key.
Commit the result and your teammates inherit Doctyze (MCP config + skills) on git clone — zero setup for them.
Works with any MCP-capable assistant — Claude Code, Cursor, VS Code/Copilot, Codex, Gemini, Windsurf, Cline, and more. The MCP server ships both the tools and the playbook (as an MCP prompt), so every IDE gets the full guided workflow on the first run.
Prefer to add the MCP server manually, or on another IDE?
The server is identical everywhere:
{ "mcpServers": { "doctyze": { "command": "uvx", "args": ["--from", "doctyze[mcp]", "doctyze-mcp"] } } }
| Assistant | How |
|---|---|
| Claude Code | claude mcp add doctyze -- uvx --from 'doctyze[mcp]' doctyze-mcp |
| Cursor | add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global) |
| VS Code / Copilot | run “MCP: Add Server”, or add to .vscode/mcp.json (a servers map with "type": "stdio") |
| Codex CLI | codex mcp add doctyze -- uvx --from doctyze[mcp] doctyze-mcp, or [mcp_servers.doctyze] in .codex/config.toml |
| Gemini CLI | add to .gemini/settings.json (mcpServers) |
| Windsurf | ~/.codeium/windsurf/mcp_config.json (mcpServers) — global only |
| Cline | its “Configure MCP Servers” UI (global) |
Every entry runs the same server: uvx --from "doctyze[mcp]" doctyze-mcp.
What you get: a docs/ tree — specs/, architecture/{diagrams,decisions}/, runbooks/, observability/, guides/, skills/ — with a docs/index.md table of contents, fanned out to AGENTS.md / .cursor/rules / Claude Code skills so every assistant on the repo inherits the context.
Each generated doc carries a freshness anchor so a code change flags the specific docs it makes stale:
---
doctyze:
artifact: spec
generated_by: write-spec
affects: [src/payments/**]
last_verified: 2026-06-28
---
For CI & automation (optional)
The same operations are a small CLI, for pipelines and scripting (this is what the assistant calls under the hood — you don't need it for normal use):
pip install doctyze
doctyze --help # init · consolidate · bootstrap · index · distribute · watch
Wire doctyze watch into a pre-commit hook or PR check to keep docs from drifting in CI. These commands are deterministic (file moves, drift detection) and never call an LLM — generation stays with your IDE/CI agent.
How it's built
A deterministic Python engine (no LLM, no key) exposed as both an MCP server and a CLI, plus agent-run generation skills. See CONTRIBUTING.md and docs/architecture/decisions/0003-pivot-to-context-layer-generator.md.
License
Apache 2.0. Free and open source for everyone.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file doctyze-0.3.2.tar.gz.
File metadata
- Download URL: doctyze-0.3.2.tar.gz
- Upload date:
- Size: 44.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b78bb58faf25634be567449adc943a28716aa1aa21dc935d96a0ea698bcf5af1
|
|
| MD5 |
5f9ec0c6968bb702a15590929d55da53
|
|
| BLAKE2b-256 |
d57e0278e7bb87d19bf0f7b36b1f701426099df9d75c891b0c61dcea663e36d3
|
Provenance
The following attestation bundles were made for doctyze-0.3.2.tar.gz:
Publisher:
release.yml on actyze/doctyze
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doctyze-0.3.2.tar.gz -
Subject digest:
b78bb58faf25634be567449adc943a28716aa1aa21dc935d96a0ea698bcf5af1 - Sigstore transparency entry: 2049057694
- Sigstore integration time:
-
Permalink:
actyze/doctyze@e91b4217ba1e664e5edba770159879397e106522 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/actyze
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e91b4217ba1e664e5edba770159879397e106522 -
Trigger Event:
push
-
Statement type:
File details
Details for the file doctyze-0.3.2-py3-none-any.whl.
File metadata
- Download URL: doctyze-0.3.2-py3-none-any.whl
- Upload date:
- Size: 45.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dce343182576aa21c1e990457b236f0cf9a7b0521fe87edf482e57d41dd1458c
|
|
| MD5 |
92fa242f4b216f32b9272cb33e7d492a
|
|
| BLAKE2b-256 |
238f61a0a5be0d03dadab1d3071eeaccacaad7a245826d750f7e50132cb4685b
|
Provenance
The following attestation bundles were made for doctyze-0.3.2-py3-none-any.whl:
Publisher:
release.yml on actyze/doctyze
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doctyze-0.3.2-py3-none-any.whl -
Subject digest:
dce343182576aa21c1e990457b236f0cf9a7b0521fe87edf482e57d41dd1458c - Sigstore transparency entry: 2049058476
- Sigstore integration time:
-
Permalink:
actyze/doctyze@e91b4217ba1e664e5edba770159879397e106522 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/actyze
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e91b4217ba1e664e5edba770159879397e106522 -
Trigger Event:
push
-
Statement type: