Code ships.
Docs follow.
Doxie scaffolds an AI documentation workflow into your repo. Claude Code drafts overviews, feature docs, and architecture decision records from your actual commits — then keeps them honest as the code moves, and files them straight to Google Docs.
Demo: running “doxie init” scaffolds templates and slash commands into a repo. Then, inside Claude Code, “/doxie:create” drafts an overview, a feature doc, and an ADR from repo signals, and “/doxie:deploy” publishes all three to Google Drive.
The paper trail
One CLI to lay down the filing system, three slash commands to keep it alive, one to ship it. Every doc is drafted from what your repo already knows — and you confirm before anything is written.
Scaffold
Run doxie init in any repo. It lays down doc templates, a deploy stub, and four slash commands. Idempotent — re-runs never overwrite your files.
Draft
In Claude Code, /doxie:create reads repo signals — recent commits, diffs, the conversation — and drafts an overview, feature docs, or a numbered ADR.
Keep honest
/doxie:update flags a doc only when the code underneath it changes — drift, not age. /doxie:ask answers strictly from what’s filed, with citations.
Publish
/doxie:deploy converts doxie-docs/ into Google Docs in your team’s Drive folder. Re-runs update in place; only changed docs are pushed.
Four commands, one drawer
doxie init files these into .claude/commands/. They run inside Claude Code,
against your repo, with your confirmation on every write.
Draft docs from repo signals
Infers candidates from recent commits and diffs — “looks like you just added streaming uploads; document it?” — then drafts Overview, Feature, or ADR docs for you to confirm.
never clobbers an existing doc · ADRs auto-numbered 0001, 0002, …Fix drift, not freshness
Flags docs whose documented behavior no longer matches the code, naming the commit range that triggered the suspicion. A doc is never “stale” just because it’s old.
ADRs are append-only — supersede them, don’t rewrite historyAnswers from the record
Answers questions from your docs and nothing else — no guessing from general knowledge. Every claim cites its source file; if the docs don’t cover it, it names the gap.
gap found → it suggests /doxie:create to fill itFile it to Google Docs
Publishes doxie-docs/ to Drive as native Google Docs. A mapping file remembers which markdown belongs to which Doc, so links never break on re-deploy.
Three doc types, one altitude
Everything is written for humans at a high level — stakeholders, new contributors, future-you. No file paths, no function signatures. If you want implementation, read the source.
Overview
The service at altitude: what it does, who depends on it, where it fits in the broader system. The first doc created, and the one every other doc leans on.
Feature
One capability from the user’s side of the screen: what people can do, how it behaves, edge cases and limits. Readable by PM and QA — not just the engineer who built it.
Decision record
One decision, on the record: background, rationale, the call, expected drawbacks. Append-only — new decisions supersede old ones, and history is never rewritten.
Markdown in, Google Docs out
Your team reads docs where they already live. doxie deploy converts each markdown file into a
native Google Doc in a shared Drive folder — headings, lists, and tables intact.
Stable links
.doxie/deploy.json maps each file to its Doc — re-deploys update in place, so bookmarks and shared links survive.
Only what changed
Unchanged docs are skipped, deleted ones reported as stale. The summary shows created / updated / unchanged, with URLs.
Your account, your docs
OAuth consent per contributor — deployed docs belong to whoever deploys. No service account, no storage-quota surprises.
Rehearse first
doxie deploy --dry-run reports exactly what would change without touching Drive or the mapping file.
Put Doxie to work
Hackathon build — it installs via npm link from a clone (npm publish when it grows up).
Node ≥ 20, no build step: the CLI runs TypeScript directly.
- Open Claude Code in your project — the
/doxie:*commands are already on its menu. - Run
/doxie:createand confirm the drafts it proposes from your repo’s history. - Ship docs with the code:
/doxie:updatewhen behavior drifts,/doxie:deployto publish.
re-running doxie init is safe — existing files are skipped. --force refreshes
templates after a git pull, and deploy.json is never overwritten.