fix(skills): stop make codeclean from corrupting the templating reference - #5
Merged
Merged
Conversation
…ence
`make codeclean` runs `oxfmt --write .`, and oxfmt formats fenced code
blocks inside Markdown. It parses ```handlebars blocks as JavaScript and
rewrites them — `{{ 0.firstName }}` becomes `{{[0].firstName}}`, which is
a different Handlebars expression, not a reformatting of the same one.
mass-operations/references/templating.md documents exactly which template
syntax the runner accepts, so that rewrite turns correct documentation
into incorrect documentation. Anyone running `make codeclean` today does
this silently, and it is the reason the mass-operations skill has stayed
unformatted since it was added.
Adds a .prettierignore — oxfmt reads .gitignore and .prettierignore by
default — excluding only that one file, with the reason recorded inline.
With the hazard fenced off, the remaining unformatted skill files are
brought up to date, so `make codeclean` is now a no-op across
use-crystallize/skills/ instead of producing a diff on every run.
Verified that every change here is formatting only. permissions/SKILL.md
is whitespace alone; mass-operations SKILL.md, intents.md and limits.md
differ only in table padding and italic markers (*x* to _x_); lifecycle.md
additionally has 18 changes inside TypeScript blocks — single to double
quotes, argument commas, and one arrow-function paren — all semantically
identical JavaScript.
Left alone: the MCP server sources and the two plugin.json files are also
unformatted on main. Formatting the TypeScript deserves its own PR where
the test suite can vouch for it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Sep 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This started as "apply oxfmt to the skills that aren't formatted" and turned up a real bug on the way.
The bug
make codecleanrunsoxfmt --write ., and oxfmt formats fenced code blocks inside Markdown. It parses```handlebarsblocks as JavaScript and rewrites them:That is not the same expression reformatted — it is a different Handlebars expression.
mass-operations/references/templating.mddocuments precisely which template syntax the runner accepts, so the rewrite turns correct documentation into incorrect documentation, and teaches the wrong syntax to any agent that reads it afterwards.Anyone running
make codecleantoday does this silently. It is very likely why the mass-operations skill has stayed unformatted since it was added — the diff looked wrong, so it never got committed.The fix
oxfmt reads
.gitignoreand.prettierignoreby default. This adds a.prettierignoreexcluding that one file, with the reason recorded inline so the next person does not just delete it.With the hazard fenced off, the remaining unformatted skill files are brought up to date.
make codecleanis now a no-op acrossuse-crystallize/skills/instead of producing a diff on every run.Verifying the reformat is safe
Every change was checked mechanically, not by eye. Normalising away whitespace, table rules and italic markers:
permissions/SKILL.mdmass-operations/SKILL.mdmass-operations/references/intents.mdmass-operations/references/limits.mdmass-operations/references/lifecycle.mdThe 18 in
lifecycle.mdare 12 single→double quotes, 3 argument commas from collapsed call sites, and one arrow-function paren (path =>→(path) =>) — standard JS formatting, semantically identical. No shell or GraphQL samples were affected.Not in scope
The MCP server sources and both
plugin.jsonfiles are also unformatted onmain. Formatting the TypeScript belongs in its own PR, where the test suite can vouch for the result.The underlying oxfmt behaviour is worth reporting upstream — a
handlebarsfence should not be parsed as JavaScript — but the ignore is the right fix for this repo either way.🤖 Generated with Claude Code