- migration 012: cja_changelog.actor column - seed-changelog: optional 5th 'by' element (defaults to Carlos Arias); display shows 'Added · time · by <actor>' - changelog skill documents the actor field + attribution logic (agents name themselves, human/CLI edits are Carlos Arias) - Web Designer prompt now logs each change to the changelog via the skill, attributed to 'Website Designer Agent'; runner reseeds cja_changelog when the seed file changed (the agent has no shell)
4.7 KiB
| name | description |
|---|---|
| changelog | Update the public changelog for the Carlos Arias site (carlosarias.co, the /changelog page). Use whenever asked to "update the changelog", "log a change", "add a changelog entry", or to record that something was added, updated, fixed, or found broken. The changelog is a curated narrative seeded from api/cli/seed-changelog.php into the cja_changelog table and read at build time — this skill covers the exact entry format, the valid types, the voice, and the reseed + rebuild steps. |
Skill: update the changelog
The public changelog (/changelog) is a curated narrative, not an accreting log. Its
single source of truth is the $entries array in api/cli/seed-changelog.php. That
script TRUNCATEs and reloads the cja_changelog table every run, and the static site
reads that table at build time (app/src/lib/changelog.js). So the process is always:
- Edit
api/cli/seed-changelog.php— append (or amend) entries in the$entriesarray. - Reseed the table:
php api/cli/seed-changelog.php - Rebuild the site so
/changelogreflects it.
Editing the file alone changes nothing live — steps 2 and 3 are required.
Entry format
Each entry is an array of [type, summary, detail, 'YYYY-MM-DD HH:MM', by?] — the 5th
element (by, the actor) is optional:
['added', 'Contact form wired up', 'Real submissions stored in the database, with validation and spam protection.', '2026-07-23 12:14'],
['updated', 'Hero spacing tightened', 'Trimmed the vertical rhythm on the homepage hero.', '2026-07-24 09:00', 'Website Designer Agent'],
- type — one of:
added,updated,fixed,bug,removed,note. Usebugto record that something broke, and a pairedfixedfor the repair (see the existing bug→fixed pairs for the pattern). - summary — the headline (≤ 255 chars). Sentence case, no trailing period.
- detail — one sentence of context (≤ 500 chars), or
nullfor none. Ends with a period. - timestamp —
'YYYY-MM-DD HH:MM'(seconds are appended automatically). This is what orders the timeline — the page shows entries newest-first by this value, not by array position — so a new entry can go anywhere in the array as long as its timestamp is right. Use the real date/time the change happened; if unknown, use now. - by (optional, 5th element) — who made the change. The changelog shows it as
"Added · 09:00 · by …". Attribute it to whoever actually did the work:
- An agent attributes the entry to itself — the Web Designer agent uses
'Website Designer Agent'. - A change made by the site owner (e.g. directed through the Claude CLI) is
'Carlos Arias', which is also the default when the 5th element is omitted. - Only name an agent when that agent genuinely made the change. If the Web Designer didn't
do it, it's
'Carlos Arias'.
- An agent attributes the entry to itself — the Web Designer agent uses
Voice
Match the existing entries: write for a visitor, not for the repo. Describe what changed on the site from a reader's point of view, in plain past tense. Concise, understated, no hype, no exclamation marks, British-leaning spelling ("optimised", "colour") to match the set.
- Good:
['added', 'Project galleries and social rail', 'A photo gallery with a lightbox, and a sticky Instagram rail beside each case study.', '...'] - Avoid internal mechanics: not "Added a getStaticPaths loop over cja_projects" but "Per-project case-study pages generated from the database."
- One change = one entry. A bug and its fix are two entries (a
bugthen afixed).
Steps in full
# 1. edit api/cli/seed-changelog.php — add your entry to the $entries array
# 2. reseed the table (truncate + reload the curated set)
php api/cli/seed-changelog.php # prints "seeded N changelog entries"
# 3. rebuild so /changelog is live
# - preferred: the console runner rebuilds (POST /devconsole/rebuild), OR
# - direct (never as root — build as the site owner):
cd app && npm run build
Constraints & gotchas
- Don't INSERT rows directly into
cja_changelog— the next reseed would wipe them. The seed file is the source of truth; always edit it. - Never build as root — it leaves root-owned files that break later builds. Build via the
runner or as the site's agent user (see
agents/console/SETUP.md). - No shell? (confined headless agent) — you can still do step 1 (edit the seed file with
Write/Edit), but you cannot run steps 2–3. In that case, make the edit and clearly report
that
php api/cli/seed-changelog.php+ a rebuild are still needed for it to go live. - The
detailcolumn is capped at 500 chars andsummaryat 255 — keep both tight.