This document summarizes the generally applicable engineering expectations for this repo, distilled from AGENTS.md and CLAUDE.md. When in doubt, those files are the source of truth.
- Windows and UTF-8: do not use the "X" and "checkmark" glyphs (including emoji variants). Keep files UTF-8 clean.
- No guessing: for unfamiliar or recently changed libraries/frameworks, locate and read docs (or ask for docs) before coding.
- Quality over speed: slow down, think, and get a plan approved before implementation.
- Production-only: no mocks, stubs, placeholders, fake data, or simulated logic shipped in final code.
- SRP/DRY: enforce single responsibility and avoid duplication; search for existing utilities/components before adding new ones.
- Real integration: assume env vars/secrets/external APIs are healthy; if something breaks, treat it as an integration/logic bug to fix.
- Deep analysis: understand existing architecture and reuse opportunities before touching code.
- Plan architecture: define responsibilities and reuse decisions clearly before implementation.
- Implement modularly: build small, focused modules/components and compose from existing patterns.
- Verify integration: validate with real services and real flows (no scaffolding).
- Create a plan doc in
docs/named{YYYY-MM-DD}-{goal}-plan.mdbefore substantive edits. - Plan content must include:
- Scope: what is in and out.
- Architecture: responsibilities, modules to reuse, and where new code will live.
- TODOs: ordered steps, including verification steps.
- Docs/Changelog touchpoints: what will be updated if behavior changes.
- Seek approval on the plan before implementing.
-
Every TypeScript, JavaScript, or Python file you create or edit must start with:
Author: {Your Model Name} Date: {timestamp} PURPOSE: Verbose details about functionality, integration points, dependencies SRP/DRY check: Pass/Fail - did you verify existing functionality? -
If you touch a file, update its header metadata.
-
Do not add this header to file types that cannot support comments (e.g., JSON, SQL migrations).
- Naming: meaningful names; avoid one-letter variables except tight loops.
- Error handling: exhaustive, user-safe errors; handle failure modes explicitly.
- Comments: explain non-obvious logic and integration boundaries inline (especially streaming and external API glue).
- Reuse: prefer shared helpers and
shadcn/uicomponents over custom one-offs. - Architecture discipline: prefer repositories/services patterns over raw SQL or one-off DB calls.
- Pragmatism: fix root causes; avoid unrelated refactors and avoid over-engineering and under engineering.
- State transitions must be clear: when an action starts, collapse/disable prior controls and reveal live streaming states.
- Avoid clutter: do not render huge static lists or "everything at once" views.
- Streaming: keep streams visible until the user confirms they have read them.
- Design: avoid "AI slop" (default fonts, random gradients, over-rounding). Make deliberate typography, color, and motion choices.
- Any behavior change requires:
- Updating relevant docs.
- Updating the top entry of
CHANGELOG.md(SemVer; what/why/how; include author/model name).
- Commits: do not commit unless explicitly requested; when asked, use descriptive commit messages and follow user instructions exactly.
- Keep technical depth in docs/changelog rather than dumping it into chat.
- Keep responses tight and non-jargony; do not dump chain-of-thought.
- Ask only essential questions after consulting docs first.
- Mention when a web search could surface important, up-to-date information.
- Call out when docs/plans are unclear (and what you checked).
- Pause on errors, think, then request input if truly needed.
- End completed tasks with "done" (or "next" if awaiting instructions).
- We are on Windows 11 locally. Docker, Git, and Node.js are installed. WSL2 is available.
- No time estimates.
- No premature celebration. Nothing is completed or fixed until the user tests it.
- No shortcuts that compromise code quality.
- No overly technical explanations to the user.