August 15, 2026

The project-init Skill — Scaffolding a Consistent Project Structure

How Datarim's project-init skill creates CLAUDE.md, Diátaxis-split docs, and workflow state directories when /dr-init detects a project creation intent.

Starting a new project with an AI assistant usually means the assistant picks a structure on the fly. Two projects later, no two look alike. The project-init skill standardizes the setup: it runs when /dr-init detects a project creation intent and produces the same skeleton every time.

When it activates

The skill loads from /dr-init when the input contains keywords like "create project", "new project", "scaffold project", or their Russian equivalents. Without those signals, /dr-init follows the standard task flow instead. If enough context was already provided in the prompt, the skill extracts the project name, description, and type without asking.

The structure it creates

The skill builds a project root containing CLAUDE.md filled from a template, a .gitignore matched to the detected tech stack, and a docs/ tree split into four Diátaxis categories — tutorials/, how-to/, reference/, and explanation/ — each seeded with a README. It also creates docs/ephemeral/ for transient working material and a datarim/ directory for workflow state. Every file comes from a versioned template under ${DATARIM_RUNTIME:-$HOME/.claude}/templates/.

Idempotency rule

The skill never overwrites an existing file. When run in a project that already has some structure — an old codebase being brought up to the standard layout, for example — it creates only what is missing and reports everything it skipped. The same logic applies when the operator says "update project structure": the skill fills gaps without touching what is already there.

What it does not do

The skill does not install dependencies, generate source code, or run CI setup. It also does not create an initial git commit automatically — the operator reviews the scaffolded files first. Git is initialized if .git/ is absent, and datarim/ is added to .gitignore so workflow state is not tracked. See the project-init reference, or read what Datarim is for the broader context.