# CLAUDE.md — QuickSite engineering standards The rules that govern every change to this codebase, whoever or whatever makes it. Read at the start of every session. > **This file is tracked, but it is not one of the six canonical `docs/` files > and it does not freeze with them.** `docs/` is written for somebody *using* > QuickSite; this file is written for somebody *changing* it. Correct it whenever > the codebase moves under it. **Two companion files, deliberately not here:** | File | Read it when | |---|---| | `MAINTAINING.md` | You are performing one specific procedure — adding or removing a **command**, cutting a **release**, checking which `docs/` file your change obliges you to re-check, or reviewing a `docs/` file. Those are long, exact, and dormant the rest of the time; keeping them here made this file long enough that its real rules got skimmed. | | `CLAUDE.local.md` | Never — it is machine-local and gitignored. It holds one developer's paths, interpreters and working preferences, which are not project facts. | ⚠ **Changed a file? Check the trigger table in `MAINTAINING.md` before you finish.** Editing source without re-checking the doc it is documented in is how `docs/` goes stale, and the table is the only list of which is which. --- ## Project Vision > **QuickSite is a file-based, API-first website operations platform with a visual editor and workflow engine for deterministic and AI-assisted site changes.** > (canonical positioning, mirrored from `README.md`) - If a proposed change drifts from this — e.g. introducing a database dependency, adding non-deterministic black-box behaviour, putting site data outside the project folder, or reaching for a heavy framework where the file-based + command-based model already fits — flag it before implementing. - Documentation rule: no regex literals in `docs/`. Express patterns in plain English (the regex stays in code where it belongs). ## Architecture Principles - **Centralize shared logic.** If a feature, constant, or utility is used (or could be used) by multiple commands, place it in a shared location (e.g., `utilsManagement.php`) rather than duplicating it. Always check if something similar already exists before creating new code. - **Think globally.** When implementing a feature for one command, consider whether other commands need the same treatment. Proactively flag when duplication exists. - **Dependency-free, always.** No npm packages, no Composer additions, no CDN `