Grill skills for design interviews + ADR-0009 (no self-model) - #31
Merged
Conversation
Two skills for working on modelith, under .claude/skills/ (distinct from plugin/skills/, which ships to users). grilling is the interview engine, taken verbatim from mattpocock/skills: one question at a time, look up facts but put decisions to the user, and do not act until shared understanding is confirmed. grill-with-docs is rewritten for this repo. Upstream's version maintains a CONTEXT.md glossary and carries its own ADR format doc; both are dropped here. modelith's vocabulary already lives in the schema, the structs, and the schema reference, two of which TestSchemaStructSync holds in sync, and .claude/rules/adr.md already sets the ADR bar. What the skill keeps is the capture map: write the ADR inline when a decision lands, flag format changes rather than editing them mid-session (they are test-coupled across three files), and leave running state to HANDOFF.md. Record upstream provenance and the MIT attribution in .claude/skills/SOURCES.md, kept outside any skill directory so it does not load into agent context, and note the convention in CLAUDE.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Joe Beda <joe@stacklok.com>
The self-model is the obvious dogfooding move and the question keeps coming up. Decide against it: the format's vocabulary already lives in the schema, the structs, and the schema reference, two of which TestSchemaStructSync holds in sync. A self-model would be a fourth copy that nothing checks, and drift between the tool's own model and its own schema is the worst possible advertisement for it. It would also compete with examples/ for the worked-example job. Pinned by TestADR_0009_NoSelfModel: the set of committed *.modelith.yaml files must be exactly the two known examples. Verified to fail on an added root-level model, not just to pass on the status quo. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Joe Beda <joe@stacklok.com>
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.
Two independent changes that came out of the same session: agent skills for design interviews, and the ADR that one of those skills leans on.
chore(skills)— grilling and grill-with-docsAdds
.claude/skills/, for skills used when working on modelith (distinct fromplugin/skills/, which ships to users of the CLI).grilling— the interview engine, taken verbatim frommattpocock/skills(MIT). One question at a time, look facts up rather than asking, put decisions to the user, don't act until shared understanding is confirmed.grill-with-docs— same interview, but records what comes out of it. Rewritten for this repo rather than copied.Upstream's version of the second skill maintains a
CONTEXT.mdglossary and carries its own ADR-format doc. Both are dropped here, because this repo already has stronger versions of each: the format's vocabulary lives in the schema, the structs, and the schema reference (two of whichTestSchemaStructSyncholds in sync), and.claude/rules/adr.mdalready sets the ADR bar. What the skill keeps is the capture map:project-docs/adr/per.claude/rules/adr.mdtask checkred with the design still being arguedHANDOFF.mdProvenance.
.claude/skills/SOURCES.mdrecords the upstream source, the commit it was taken at, the licence, and what changed locally — and sits outside any skill directory so it never loads into agent context.CLAUDE.mdgets a line making that the convention for future imports.docs(adr)— ADR-0009: modelith is not modelled in modelithModelling modelith's own domain in a
*.modelith.yamlis the obvious dogfooding move, and the question keeps resurfacing — which is the signal to write it down rather than re-argue it.The decision is not to. The vocabulary a self-model would capture is already defined in three places, two of them machine-checked against each other. A self-model would join them as a fourth copy that nothing validates, and drift between the tool's own model and its own schema is the worst possible advertisement for the tool. It would also compete with
examples/for the worked-example job, and invite edits made for demo reasons to a file that is a golden fixture.Pinned by
TestADR_0009_NoSelfModel: the set of committed*.modelith.yamlfiles must be exactly the two known examples, so a new one fails the test until someone adds it to the allowlist — which puts the ADR in front of them. Verified to fail on an added root-level model, not merely to pass on the status quo.Notes for review
task checkis green./code-reviewloop was run. Per.claude/rules/agent-workflow.mdthe loop is available discipline for changes that put a correctness-critical surface at risk; this is prose plus one guard test, and the test was verified in both directions by hand.🤖 Generated with Claude Code