Ship code and docs in one go

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.

hackathon build·typescript·runs inside Claude Code

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.

How it works

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.

0001

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.

0002

Draft

In Claude Code, /doxie:create reads repo signals — recent commits, diffs, the conversation — and drafts an overview, feature docs, or a numbered ADR.

0003

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.

0004

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.

Slash commands

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.

/doxie:create

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, …
/doxie:update

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 history
/doxie:ask

Answers 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 it
/doxie:deploy

File 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.

--dry-run to preview · only changed docs are pushed
What gets filed

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.

doxie-docs/overview.md

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.

doxie-docs/feature/<slug>.md

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.

doxie-docs/adr/0001-<slug>.md

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.

Proposed Accepted Superseded
Publish

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.

feature/streaming-uploads.md
changed
Streaming uploads — Google Docs
URL never changes

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.

Get started

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.

install
$ git clone https://github.com/castorrr/doxie.git $ cd doxie && npm install && npm link # then, in the repo you want documented: $ cd ~/your-project $ doxie init
  1. Open Claude Code in your project — the /doxie:* commands are already on its menu.
  2. Run /doxie:create and confirm the drafts it proposes from your repo’s history.
  3. Ship docs with the code: /doxie:update when behavior drifts, /doxie:deploy to publish.

re-running doxie init is safe — existing files are skipped. --force refreshes templates after a git pull, and deploy.json is never overwritten.