Update the fenic-mechanics skill for a new fenic version
The fenic-mechanics skill is hybrid: a generated reference
(.claude/skills/fenic-mechanics/reference/*.md, introspected from the installed
fenic — never edit by hand) plus hand-authored judgment (SKILL.md,
gotchas.md — the namespace law, calling conventions, and silent traps). When
fenic changes version, regenerate the first and re-review the second.
Procedure
Confirm the installed version changed.
uv run --project . python -c "from importlib import metadata; print(metadata.version('fenic'))" cat .claude/skills/fenic-mechanics/reference/VERSIONRegenerate the reference (deterministic — only real API changes will diff):
uv run --project . python .claude/skills/fenic-mechanics/scripts/generate_reference.pyInspect the API deltas:
git diff --stat .claude/skills/fenic-mechanics/reference/ git diff .claude/skills/fenic-mechanics/reference/Classify each change: added symbol, removed symbol, renamed symbol, or changed signature (param added/removed/renamed/retyped).
Re-review the hand-authored judgment against the deltas. Update
SKILL.md/gotchas.mdonly where a delta touches them:- Namespace/import law — did any namespace move, or did a function become
a method (or vice-versa)? (e.g. something leaving/entering
fc.arr,fc.dt,fc.semantic). - The 4 silent traps — re-verify each still holds:
fc.json.jqstill returnsArrayType(JsonType); semantic templates still Jinja2{{ }};fc.dt.datediff(end, start)arg order;fc.dt.to_timestampformat dialect. A changed signature on any of these is high-priority. - Model/config — provider classes,
input_tpm/output_tpmvstpm,default_*requirements. - The "wrote X, meant Y" table — drop rows whose anti-pattern is now impossible, and add rows for new traps the signature changes introduce.
- Namespace/import law — did any namespace move, or did a function become
a method (or vice-versa)? (e.g. something leaving/entering
Verify every symbol the hand-authored files cite still exists. For each
fc.<something>mentioned inSKILL.md/gotchas.md, confirm it resolves in the new version (a quickpython -c "import fenic as fc; fc.<symbol>"per cited symbol, or grep the regenerated reference).Re-run the eval harness (if present) against the new version to confirm the skill still moves blocked→pass; note any regressions.
Commit the regenerated reference + any judgment edits together, with a message noting the fenic version bump.
Don't
- Don't hand-edit files under
reference/— they're generated; your edits will be overwritten on the next run. Put durable knowledge ingotchas.md. - Don't add signature dumps to
SKILL.md/gotchas.md— those live in the generated reference. The hand-authored files hold judgment (what's wrong, what's silent, what to do instead).