Replace hardcoded TODO markers with Forgejo template variables (${REPO_NAME},
${REPO_OWNER}, etc.) so new repos created from this template are auto-customized.
Use Forgejo Actions context variables in build.yaml for dynamic FORGE_URL.
Hardcode forge.eblu.me as the Forgejo instance. Update CLAUDE.md and README.md
to reflect reduced manual setup steps.
Python class names kept as manual TODO (same as directory rename) since template
variables in Python code positions aren't valid syntax for linters.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.2 KiB
CLAUDE.md
Guidance for Claude Code working in this repository. See also ai-assistance-guide.
Overview
${REPO_NAME} — ${REPO_DESCRIPTION}
CRITICAL: Public repo — never commit secrets!
Shell: The user's shell is fish. Use $status not $? for exit codes. Use fish syntax in interactive examples.
First-Time Setup
This repository is a Forgejo template. Most customization points are auto-resolved by Forgejo's template variable expansion when a new repo is created. The remaining manual steps are:
- Set
baseUrlindocs/quartz.config.ts— this is the hosted docs domain, not the repo URL - Rename
.dagger/src/project_template_ci/directory to match your project, and update the class names inside - Fill in project structure in the
CLAUDE.mdProject Structure section - Fill in license info in
README.md - When all TODOs are resolved: delete this "First-Time Setup" section entirely from
CLAUDE.md— it is only needed once
Rules
- Always run
mise run ai-docsat session start This will refresh your context with important information you will be assumed to know and follow. Read the full output — never truncate, pipe tohead/tail, or skip sections. - Classify the change as C0/C1/C2 before starting (see below) — this determines branching and PR requirements
- Feature branches + PRs for C1/C2 — checkout main, pull, create branch, open PR via
tea pr create. C0 goes direct to main. - Add changelog fragments (all change levels) —
docs/changelog.d/<name>.<type>.mdTypes:feature,bugfix,infra,doc,ai,misc- C1/C2: Use branch name:
<branch>.<type>.md - C0: Use orphan prefix:
+<descriptive-slug>.<type>.md
- C1/C2: Use branch name:
- Never commit secrets
Change Classification
Before starting work, classify the change:
| Class | Name | When to use | Key trait |
|---|---|---|---|
| C0 | Quick Fix | Small, low-risk, fix-forward safe | Direct to main, no PR |
| C1 | Human Review | Moderate complexity or risk | Feature branch + PR, docs-first |
| C2 | Mikado Chain | Multi-phase, multi-session, high complexity | Mikado Branch Invariant |
C0 — commit directly to main. No branch or PR needed. Fix forward if problems arise.
C1 — feature branch with early PR. Search related docs first, write documentation changes before code. Upgrade to C2 if complexity spirals.
C2 — branch mikado/<chain-stem> governed by the Mikado Branch Invariant: all card commits first, then code progress, then card closures. Commits use C2(<chain>): plan/impl/close/finalize convention. Reset the branch when new prerequisites are discovered. Resume with mise run docs-mikado --resume.
See agent-change-process for the full methodology.
Project Structure
./docs/ # documentation (Diataxis, Quartz)
./docs/changelog.d/ # towncrier fragments
./.dagger/ # dagger pipelines
./.forgejo/ # forgejo-runner actions and workflows
./mise-tasks/ # scripts via `mise run`
Other code paths will be listed via ai-docs. When you encounter wiki-links ([[like-this]]) it is referring to docs/ cards.