Skip to main content

dkb - Developer Knowledge Base

Local documentation manager for vibe coding with Claude Code.

Local .md files > MCP

Install

# Install with uv
uv tool install dkb

# Or with pipx
pipx install dkb

Usage

$ dkb add tailwindlabs/tailwindcss.com/src/docs --version-url tailwindlabs/tailwindcss
✓ tailwindcss 4.3.3 → ~/.local/share/dkb/tailwindcss

$ dkb add colinhacks/zod/packages/docs/content
✓ zod 4.6.7 → ~/.local/share/dkb/zod

$ dkb                      # alone: the status
┏━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓
┃ Name        ┃ Version ┃ Source                      ┃ Version from             ┃ Fetched ┃
┡━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩
│ tailwindcss │ 4.3.3   │ tailwindlabs/tailwindcss.com │ tailwindlabs/tailwindcss │ 2m ago  │
│ zod         │ 4.6.7   │ colinhacks/zod              │ -                        │ 1m ago  │
└─────────────┴─────────┴─────────────────────────────┴──────────────────────────┴─────────┘

$ dkb update               # parallel, skips what did not move upstream
  - tailwindcss unchanged
  ✓ zod         updated

$ dkb update zdo
Error: not in the catalogue: 'zdo' (did you mean 'zod'?); `dkb status` lists it

$ dkb add n0-computer/iroh-ffi/IrohLib/Docs
Error: path 'IrohLib/Docs' not found; 'IrohLib/' has: .swiftpm/, Sources/, Tests/, .gitignore, README.md

Piped (dkb status | grep zod, an agent's shell), status prints one plain line per repo with a header and the docs location; dkb status --json prints everything. dkb -h lists the files dkb owns and more add examples.

Configuration

Two files, two owners:

File Holds Changes on
$XDG_CONFIG_HOME/dkb/config.json (~/.config/dkb/config.json) the catalogue: url, paths, branch, version_url per repo dkb add / dkb remove
$XDG_DATA_HOME/dkb/ (~/.local/share/dkb/) the clones, one directory per repo, plus state.json (description, version, commit, what the clone was made from) dkb update

The catalogue is the declaration and is meant to be tracked in a dotfiles repo. dkb update reconciles the cache with it: clones anything declared that is missing, re-clones anything whose upstream commit or declared paths/branch changed, re-reads every version and description, prunes clones nobody declares, and regenerates the skill; it exits 1 if any repo failed. A failed fetch keeps the previous clone and version: new content is assembled beside the old and swapped in only when complete. Without a declared branch, a repo follows its remote's default branch, whatever it is called. Metadata comes from gh when it is logged in, else from GitHub's public API (60 requests/hour). A fresh machine is one dkb update away from the same knowledge base. dkb status exits 1 while a declared repo has no clone, so it doubles as a drift check.

// ~/.config/dkb/config.json
{
  "repositories": {
    "next.js": { "url": "https://github.com/vercel/next.js.git", "paths": ["docs"] },
    "tailwindcss.com": { "url": "https://github.com/tailwindlabs/tailwindcss.com.git", "paths": ["src/docs"] }
  }
}

Upgrading from dkb 2: the catalogue used to live in the data dir as one file with the state mixed in. dkb 3 refuses to run while that file exists and prints where each half goes.

Features

  • ✨ Auto-naming - No need to specify names, automatically derived from repositories
  • 🎯 Path-specific URLs - Add only the docs you need: dkb add owner/repo/path
  • 🔗 Multiple URL formats:
    • Full URLs: https://github.com/astral-sh/uv/tree/main/docs
    • Shorthand: tailwindlabs/tailwindcss.com/src/docs
    • Classic: https://github.com/denoland/docs.git
  • 🏠 Gitea/Forgejo support - Works with codeberg.org and self-hosted forges: dkb add https://code.haverbeke.berlin/wordgard/website/src/branch/main/site/docs
  • 📦 Version tracking - Track versions from a different repository with --version-url
  • 🚀 Parallel updates - All repos update concurrently with live progress spinners
  • ⚡ Smart skip - Unchanged repos detected via git ls-remote without cloning
  • 📂 Sparse checkout - Repos with paths only fetch the files they need
  • 🧭 Errors that say what to do - typo suggestions, the real contents of a mistyped path, git's own message instead of its command line
  • 🤖 Claude Code skill - Maintains ~/.claude/skills/dkb/SKILL.md; the always-visible description indexes the catalogue so the agent knows what's cached without running anything

Roadmap

  • Local repos - dkb add ~/Developer/my-lib symlinking the live checkout into the cache, so first-party libraries in the catalogue point at the working copy instead of a lagging remote clone

Metadata

Release files for dkb 3.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dkb 3.1.0
File Size Uploaded
dkb-3.1.0.tar.gz 17.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dkb 3.1.0
File Interpreter ABI Platform
dkb-3.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 36.7 kB

Release files / dkb-3.1.0.tar.gz

Download URL dkb-3.1.0.tar.gz
Size 17.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8a062e1c6eaf823a552100232e3cd03dcb3c023ffe2ef271ebc9f3fe8168f04e
BLAKE2b-256 checksum
How to use checksums
4dadc614acec606789346e3990ae1e844de72e666c822cc7155a151e9e0b20ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release files / dkb-3.1.0-py3-none-any.whl

Download URL dkb-3.1.0-py3-none-any.whl
Size 19.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a138ec0db65735e7912cf817b1a8a8af7cf46f25af919de9e8d24955820b45bf
BLAKE2b-256 checksum
How to use checksums
b2fbdcf7d15b5e906e6d00416d782cf5637d139fbce3f77946783aee691ad2d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

3.4.1

2 release files

3.4.0

2 release files

3.3.2

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

This release

3.1.0 This release

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.2

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page