Post-change routine
The requirement is canonical in .cursorrules ("After ANY code
change…"). This skill only gives the section template, since .cursorrules
specifies what must be present but not the exact layout.
Procedure
- Get today's date —
Shell:date +%F→ filenamechangelogs/YYYY-MM-DD.log. - Append if the file exists, create if not. One file per day, multiple sections allowed.
- Write the section in English (layout below). User language is irrelevant
—
.cursor/05 §English-only artifacts. Never write/changelogs/in French or any other language. - Run tests —
uv run --frozen pytest -q -m "not scenario"(--frozenis mandatory; thetests/e2e/scenarios/suites are opt-in — see.cursor/08-testing-and-deployment; never run them here). Paste the final summary line intoTests:. - If tests fail: do not mark the change complete. Fix and re-run, or surface the failures explicitly.
- Sphinx — see
.cursor/08-testing-and-deployment §Sphinx API Documentationif you added/removed/renamed public Python symbols. - README / docs — update if user-visible behaviour changed.
Section layout
## <Title — short, imperative>
Context: <2–6 lines: what triggered the change, what it solves. Reference
user-visible symptoms or technical drivers.>
Changes:
1. <relative/file/path.py>
<one-line description of the change in this file>
2. <relative/file/path.js>
<one-line description>
…
Modified files:
- <relative/file/path.py>
- <relative/file/path.js>
- …
Tests: <e.g. "uv run --frozen pytest -q -m 'not scenario' → 312 passed, 0 failed in 18.4s">
Style
- Short titles. Detail goes in
Context:and per-file lines. - Cite Fowler refactorings by name when applicable.
- Cite the canonical rule when enforcing one (e.g. "complies with
.cursor/10 §Error Handling"). - No diffs in the log — paths + one-liners only.
- English only for the whole section, even if the user wrote in another language
(
.cursor/05 §English-only artifacts). Title, Context, per-file lines, Tests.