Skip to content

Grill skills for design interviews + ADR-0009 (no self-model) - #31

Merged
jbeda merged 2 commits into
mainfrom
grill-skills-and-adr-0009
Jul 26, 2026
Merged

Grill skills for design interviews + ADR-0009 (no self-model)#31
jbeda merged 2 commits into
mainfrom
grill-skills-and-adr-0009

Conversation

@jbeda

@jbeda jbeda commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

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-docs

Adds .claude/skills/, for skills used when working on modelith (distinct from plugin/skills/, which ships to users of the CLI).

  • grilling — the interview engine, taken verbatim from mattpocock/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.md glossary 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 which TestSchemaStructSync holds in sync), and .claude/rules/adr.md already sets the ADR bar. What the skill keeps is the capture map:

Grilling produces Lands in During the session?
Hard-to-reverse decision, real trade-off project-docs/adr/ per .claude/rules/adr.md Write it inline
Format or vocabulary change schema + structs + schema reference, as one change Flag only — they're test-coupled; a half-written edit leaves task check red with the design still being argued
Running state HANDOFF.md End of session

Provenance. .claude/skills/SOURCES.md records 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.md gets a line making that the convention for future imports.

docs(adr) — ADR-0009: modelith is not modelled in modelith

Modelling modelith's own domain in a *.modelith.yaml is 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.yaml files 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 check is green.
  • No /code-review loop was run. Per .claude/rules/agent-workflow.md the 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.
  • The two commits are independent — the skills change and the ADR can be split or dropped separately if you'd rather.

🤖 Generated with Claude Code

jbeda and others added 2 commits July 26, 2026 11:11
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>
@jbeda
jbeda merged commit c01ac5f into main Jul 26, 2026
2 checks passed
@jbeda
jbeda deleted the grill-skills-and-adr-0009 branch July 26, 2026 22:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant