6.3 KiB
Dokumentace
Personal development documentation — guidelines, conventions, and templates for my projects, structured for use with AI coding assistants.
Purpose
This repository is the single source of truth for how I develop software. AI assistants (Claude Code, Cursor, Copilot) are given these documents at the start of each session to understand my conventions before touching any code.
Structure
Dokumentace/
├── Claude/ # AI assistant configuration
│ ├── CLAUDE.md # Claude Code session instructions
│ ├── AGENTS.md # Language-agnostic rules for all AI assistants
│ └── skills/ # Custom Claude Code skills
│ ├── changelog/ # /changelog — update CHANGELOG.md
│ ├── check/ # /check — run tests, investigate failures
│ ├── commit/ # /commit — changelog + commit message proposal
│ ├── documentation/ # /documentation — write docs/
│ └── documentation_context/ # /documentation_context — compress docs/ into CONTEXT.md
│
├── Python/ # Python development guidelines
│ ├── DESIGN_DOCUMENT.md # Guidelines for Python applications
│ ├── DESIGN_DOCUMENT_MODULE.md # Guidelines for Python libraries
│ ├── TEMPLATE.md # New project template specification
│ ├── .gitignore # Python-specific ignore rules
│ ├── prebuild.py # Pre-build script (PyInstaller)
│ ├── src/ # Reference constants module + version fallback
│ └── tests/ # Tests for the reference module
│
├── Rust/ # Rust development guidelines
│ ├── DESIGN_DOCUMENT.md # Guidelines for Rust applications
│ ├── DESIGN_DOCUMENT_LIB.md # Guidelines for Rust libraries
│ └── .gitignore # Rust-specific ignore rules
│
├── Godot/ # Godot development guidelines
│ ├── DESIGN_DOCUMENT_GODOT.md # Guidelines for Godot projects
│ └── .gitignore # Godot-specific ignore rules
│
├── Project template/ # Reusable files for new projects
│ ├── CHANGELOG.md # Changelog template
│ ├── PROJECT.md # Project documentation template
│ └── .gitignore # Shared, language-agnostic ignore rules
│
├── Zscaler/ # Corporate network setup
│ ├── ZSCALER_CERTIFICATE.md # Cert setup for Node, Python, git, cargo
│ └── ZscalerRootCertificate-2048-SHA256.crt
│
└── CHANGELOG.md # History of this repository
AI Coding Workflow
Every project gets two rule documents, and the split between them is strict:
- AGENTS.md — language-agnostic rules only: documentation language, dependency management, static typing, secrets, git, versioning, task notation. It names no concrete tool.
- DESIGN_DOCUMENT*.md — everything language-specific: package manager, formatter, linter, test framework, logging library, line length, project layout, distribution.
Where the two disagree, the design document wins.
| Project type | Design document |
|---|---|
| Python (application) | Python/DESIGN_DOCUMENT.md |
| Python (library) | Python/DESIGN_DOCUMENT_MODULE.md |
| Rust (application) | Rust/DESIGN_DOCUMENT.md |
| Rust (library) | Rust/DESIGN_DOCUMENT_LIB.md |
| Godot | Godot/DESIGN_DOCUMENT_GODOT.md |
Starting a new project
- Copy
Project template/PROJECT.mdandProject template/CHANGELOG.mdinto the project root and write aREADME.md— all three are committed. - Build
.gitignorefromProject template/.gitignoreplus the.gitignoreof the matching language folder. - Copy
Claude/AGENTS.mdand the matchingDESIGN_DOCUMENT*.mdinto the project root — these are not committed, they come from here. - For Python, follow
Python/TEMPLATE.mdto generate the project skeleton.
Skills
The skills in Claude/skills/ are the source of truth; the copies Claude Code actually runs live in
~/.claude/skills/. Install or refresh them by copying the whole folder across.
Two rules keep the two sides from drifting apart:
-
The folder name is the command. For personal skills the frontmatter
nameis only a display label —/documentation_contextcomes from the directory, not fromname:. Keep the two identical so renaming a folder can never silently change the command. -
Every skill carries a version in
metadata.version, incremented on every content change, the same way design documents carryDocument Version:--- name: commit description: Updates changelog and proposes a concise verbal git commit message metadata: version: v2 ---There is no top-level
version:field in the skill format.metadatais a free-form map that Claude Code ignores, and it is one of the six fields the Agent Skills spec allows — so it also survives an upload to claude.ai or the Skills API. Any other invented key fails packaging withUnexpected key(s) in SKILL.md frontmatter.
Key Conventions
- Python tooling: Poetry · Ruff · mypy · pytest · loguru
- Rust tooling: Cargo · rustfmt · clippy · tracing (
thiserror/anyhowfor errors) - Godot tooling: gdformat · gdlint · GUT
- No
print()for debugging — the language's logging library, everywhere - Static typing required on every parameter and return value
- Line length: 120 characters (Python), 100 characters (Rust, rustfmt default), 100 soft limit (GDScript)
- Tests: the framework named in the design document — pytest (Python, never
unittest), built-in#[test](Rust), GUT (Godot) - Tasks: single-line
TODO/FIXME/BUG/HACK/NOTEcomments in code — no checkboxes in documentation - Versioning: semantic, always ask before bumping,
CHANGELOG.mdupdated first - Secrets:
.env, never committed; libraries take configuration from the caller