This repo is a personal homelab GitOps monorepo. Claude uses CLAUDE.md;
Codex uses this file. Keep this file lean so project guidance does not crowd
out task context.
- Consult the knowledge base before designing changes that depend on existing
repo history, architecture, cluster behavior, secrets paths, or prior agent
decisions. Use
knowledge.recallwith a distilled query,scopeset toproject:personal-stackwhen repo-specific,mode=hybrid, andlimit <= 5. - Escalate recall gradually: start with hits/snippets, call
knowledge.relationsaround a promising hit, and fetch a full note only when the snippet/relation graph is insufficient. - Capture durable lessons or decisions at the end of work with
knowledge.capture_lessonorknowledge.capture_decision. Preferscope=project:personal-stackfor repo behavior andtopic:<slug>for general tool/framework knowledge. If the scope is uncertain, omit it and let the curator classify. - Keep token use bounded. Do not paste large files, full transcripts, or broad
KB dumps into the answer. Prefer precise
rgsearches, small file windows, summaries of command output, and focused MCP calls. - Commit only intentional changes, in small logical commits. Never stage or revert unrelated dirty files.
- Maintain Claude/Codex parity. Any project skill, hook, memory rule, or installer behavior added for Codex must get the Claude equivalent in the same branch, and vice versa.
Run the smallest meaningful checks for the touched area:
- Kotlin service:
./gradlew :services:<service>:test - Platform validation:
(cd platform/tests && npm ci && node --test) - Vue UI:
npm run typecheck && npm run lint && npm run testinside the UI
Rendering and host-env resolution are owned by the
@extratoast/deploy-config-schema toolkit through platform/scripts/render/*
and platform/scripts/lib/host-env.sh; platform/tooling is the Kotlin
Node platform validation suite (no Kotlin/gradle).
When a command cannot run, say exactly why and what remains unverified.