Create docs
Analyzes a codebase and generates LLM-optimized documentation covering project overview, architecture, build system, testing, development patterns, deployment, and a file catalog. Use when the user wants to document a codebase or refresh existing project documentation.From its SKILL.md
npx -y skills add pavelsimo/skills --skill create-docsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.9 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it
create-docs skill
A Claude Code skill that systematically analyzes a project and writes or refreshes a suite of LLM-optimized documentation files β covering architecture, build, testing, development patterns, deployment, and a file catalog β plus a synthesized README. Every generated file includes a UTC timestamp and concrete file references so both humans and LLMs can navigate the codebase quickly.
Inspired by steipete/agent-rules update-docs.
features
- analyzes the codebase across 7 key areas in parallel
- writes to
docs/by default;--output <path>redirects all output - existing files are refreshed by default;
--no-overwritepreserves them - generates a UTC timestamp header in every file so staleness is visible
- each file contains concrete file references (paths, line numbers, code excerpts)
- enforces no-duplication: each fact lives in exactly one file; cross-references use relative links
- synthesizes a minimal
README.md(β€ 50 lines) after all section files are done --only <section>refreshes a single file without touching others--dry-runprints what would be written without touching the filesystem
usage
/create-docs # analyze project and write to docs/
/create-docs --output <path> # write to a custom directory
/create-docs --no-overwrite # skip files that already exist
/create-docs --only <section> # refresh one section (see sections below)
/create-docs --dry-run # preview output without writing files
sections
| Flag value | Output file | Contents |
|---|---|---|
overview | PROJECT-OVERVIEW.md | π purpose, entry points, tech stack, platform support |
architecture | ARCHITECTURE.md | ποΈ system organization, component map, data flow |
build | BUILD-SYSTEM.md | π§ build system, common workflows, platform setup |
testing | TESTING.md | β test types, how to run, test file locations |
development | DEVELOPMENT.md | π» code style, patterns, workflows, conventions |
deployment | DEPLOYMENT.md | π packaging, distribution, platform deployment |
files | FILES.md | ποΈ comprehensive file catalog with purpose descriptions |
workflow
-
parse args:
--output <path>: use<path>as the output directory; default isdocs/--no-overwrite: skip any section file that already exists at the target path; still generate missing files; note skipped files in the final report--only <section>: run only the named section (see table above); skip all others and skip the README synthesis step--dry-run: generate content but print it to stdout; do not write any files- unrecognized flags: print a usage error and stop
-
resolve the output directory:
- if
--outputis not given, usedocs/relative to CWD - create the directory if it does not exist:
mkdir -p <output>
- if
-
announce progress with emojis as each section starts and completes:
- starting:
π analyzing project overviewβ¦/ποΈ analyzing architectureβ¦/ etc. - done:
β wrote docs/PROJECT-OVERVIEW.md - skipped (no config found):
βοΈ docs/DEPLOYMENT.md β skipped (no deployment config found) - skipped (--no-overwrite):
π docs/TESTING.md β skipped (already exists, --no-overwrite set)
- starting:
-
analyze the codebase β run the following in parallel (or sequentially if
--onlyis set); for each section, check--no-overwritebefore writing:π PROJECT-OVERVIEW.md β read:
README.md,package.json/pyproject.toml/Cargo.toml/go.mod(whichever exists), main entry-point files; extract: project purpose, core value proposition, tech stack, platform support; write to<output>/PROJECT-OVERVIEW.mdποΈ ARCHITECTURE.md β read: top-level source directory structure, main module/package files, any existing architecture docs; extract: high-level system organization, major components and their source locations, key data flows; write to
<output>/ARCHITECTURE.mdπ§ BUILD-SYSTEM.md β read:
Makefile,CMakeLists.txt,build.gradle,pyproject.toml,Cargo.toml,package.jsonscripts, CI workflow files; extract: build commands, platform-specific setup, configuration options; write to<output>/BUILD-SYSTEM.mdβ TESTING.md β read: test directories, test runner configuration, CI test steps; extract: test types, how to run each, where test files live, how to add a new test; write to
<output>/TESTING.mdπ» DEVELOPMENT.md β read:
.editorconfig, linter configs (.eslintrc,ruff.toml,.golangci.yml, etc.), any existing patterns or development docs, recent commits for style signals; extract: code style rules with file examples, common implementation patterns with actual code excerpts; merge any existingPATTERNS.mdcontent; write to<output>/DEVELOPMENT.mdπ DEPLOYMENT.md β read: packaging scripts, release workflows, Docker files, CI/CD deployment jobs; extract: package types, deployment targets, output locations, step-by-step commands; write to
<output>/DEPLOYMENT.mdποΈ FILES.md β run
find . -type f(excluding.git,node_modules,vendor,__pycache__); group files by category (core source, platform impl, build, tests, config); write a one-line description per significant file; write to<output>/FILES.md -
for each file written, prepend the timestamp header:
<!-- Generated: YYYY-MM-DD HH:MM:SS UTC -->derive the current UTC time via:
date -u '+%Y-%m-%d %H:%M:%S'use the section emoji in the first heading of each generated file:
# π Project Overview,# ποΈ Architecture,# π§ Build System, etc. -
enforce no-duplication:
- build information only in
BUILD-SYSTEM.md - code style and patterns only in
DEVELOPMENT.md - deployment information only in
DEPLOYMENT.md - cross-reference with:
See [docs/FILENAME.md](docs/FILENAME.md)(adjust path if--outputwas used)
- build information only in
-
synthesize
README.md(skip if--onlyis set):- read all generated
<output>/*.mdfiles - write a new
README.mdin the project root with:- project description (2-3 sentences max)
- key entry points and core configuration files
- quick build commands
- documentation links with one-line descriptions
- keep it under 50 lines total
- prepend the timestamp header
- read all generated
-
duplication check:
- scan all generated files for repeated content
- remove duplicates and add cross-references where needed
- if
PATTERNS.mdexists in the output directory, merge it intoDEVELOPMENT.mdand delete it
-
if
--dry-run: print all generated content to stdout; write nothing to disk -
report results with emojis:
π docs updated β docs/ β docs/PROJECT-OVERVIEW.md β docs/ARCHITECTURE.md β docs/BUILD-SYSTEM.md β docs/TESTING.md β docs/DEVELOPMENT.md βοΈ docs/DEPLOYMENT.md β skipped (no deployment config found) β docs/FILES.md β README.md
document format requirements
Every generated file must follow this structure:
- timestamp header comment at the very top
- title heading with section emoji (e.g.,
# ποΈ Architecture) - brief overview (2-3 paragraphs max)
- key files & examples section with concrete file references
- common workflows section with file locations
- reference section with quick-lookup tables
File reference format (use throughout):
**Core System** β implementation in `src/core.h` (lines 15-45), platform backends in `src/platform/`
Code examples must be actual excerpts from the codebase, not generic placeholders:
# From src/example.py:23-27
class ExampleState:
active: bool
data: Any
count: int
best practices
- always include file paths and line numbers β vague references ("see the main file") are not acceptable
- token-efficient prose β avoid redundant explanations; LLMs are the primary audience
- create the output directory β never fail because
docs/doesn't exist yet; create it - merge, don't duplicate β if
DEVELOPMENT.mdandPATTERNS.mdboth exist, merge into one; delete the old file - skip gracefully β if no deployment config exists, skip
DEPLOYMENT.mdand note it in the report rather than writing an empty file - timestamp every file β staleness is a first-class concern; always regenerate the timestamp even on partial updates (
--only) --dry-runis safe β no filesystem changes; safe to run in any environment--no-overwriteis conservative β skip existing files with a π marker; never prompt per-file
What ships with it: 2 files
3.0 KB alongside SKILL.md