Skip to content

v0.13.0: commit and pull request conventions, model-family adapter matching#10

Merged
KodingDev merged 3 commits into
masterfrom
feat/commit-guidelines-and-adapter-resolution
Jul 25, 2026
Merged

v0.13.0: commit and pull request conventions, model-family adapter matching#10
KodingDev merged 3 commits into
masterfrom
feat/commit-guidelines-and-adapter-resolution

Conversation

@KodingDev

Copy link
Copy Markdown
Owner

Summary

  • match model profiles by family prefix, so adapters reach releases beyond the single mapped identifier
  • make commit model-invocable so its conventions are reachable while outward actions stay behind a hard gate
  • give commit pull request description guidance alongside its commit message guidance
  • carry a Status line on specs and sketches through to SHIPPED
  • release as 0.13.0

Why

Adapter resolution matched one exact model identifier, claude-opus-4-8. Every other model, including later releases of the same family, resolved to no profile and ran on the baseline standard with zero corrections applied. The correction most often wanted, comment narration, was therefore inert on the models actually in use.

Separately, commit was manual-only. Its conventions could not be reached by the model or by another skill, so they applied only when the skill was typed by name — which is the least likely moment for a commit message or pull request description to need them.

User impact

Breaking. The opus-4.8 profile is renamed claude-opus. A host-local <state-base>/meridian/config.json containing "fallbackProfile": "opus-4.8" no longer resolves and silently yields the baseline with no adapters. Rename the value to claude-opus. This matters most on Copilot, where the README recommends the fallback because no model identifier is exposed.

Matching is a literal prefix over the identifier the host reports. Vendor- or region-qualified identifiers, such as the us.anthropic. Bedrock form, still fall through to the baseline and need the environment override or a fallback.

claude-fable- now resolves to the fable profile, which carries no adapters by design, so a Fable session no longer picks up a configured fallback.

commit moves to the model-invoked table. Its conventions are reachable whenever a commit message or pull request description is written, including by other skills. Reaching them authorizes nothing: committing, pushing, and opening or editing a pull request sit behind a <HARD-GATE> and each require an explicit request for that action. It is the only model-invocable skill that performs outward actions, which is why it uses the same gate device as brainstorm and sketch rather than an ordinary section.

execute and auto previously described the commit flow as not-to-be-invoked, which contradicted the above and left the conventions unreached on the path that most needs them. Both now point at meridian:commit for message conventions while the flow itself stays user-owned.

Validation

  • pnpm check — formatting, lint, typecheck, and 39 tests pass
  • the family-matching guard was checked against a false negative: restoring the previous exact-only registry fails the new test, and the suite is green once restored
  • adapter resolution confirmed at the hook for claude-opus-5, claude-opus-5[1m], claude-opus-4-8 (adapters applied) and claude-sonnet-5, claude-fable-5, gpt-5-codex (baseline)
  • the pre-change regression was reproduced by resolving claude-opus-5 against the previous registry, which yields the baseline

The paid promptfoo corpus was not run; it remains on-demand and non-blocking. Two scenarios changed: authoring a commit message or pull request description now reaches commit, and an implied-approval prompt asserts no commit or push is proposed. That harness inspects skill calls and response text, so it can show no outward action was proposed but cannot prove none executed; the authorization boundary is prose and nothing enforces it mechanically.

Review notes

skills/commit/SKILL.md is the substance and worth reading first; the rest follows from it. The two judgment calls most worth a second opinion are the <HARD-GATE> placement over the flow, and keeping the pull request guidance inline rather than disclosing it to references/ as sketch does.

The pull request guidance deliberately carries no citations or statistics. Earlier drafts asserted empirical findings about which description elements predict review outcomes; the sources did not support them as written, so the guidance now stands on its own.

…atch model families (0.13.0)

Adapter resolution matched a single exact model identifier, so every model
outside that one release ran on the baseline standard with no corrections
applied. Profiles are now named for families and matched by prefix.

The commit skill was manual-only, which kept its conventions unreachable
unless it was typed. It is now model-invocable and carries pull request
guidance alongside commit-message guidance: lead with rationale, describe
behavior rather than the diff, state the feedback wanted, report what was
actually verified, and scale the description to the change. A single rule
covers both artifacts: describe the resulting code, never the session that
produced it. Reaching the conventions authorizes nothing; committing,
pushing, and opening a pull request each still require an explicit request.

Specs and sketches carry a Status line so a finished spec is distinguishable
from an abandoned one.
…ipline (0.13.0)

Description carries triggers and the cross-skill reach clause rather than
restating identity the body already holds.

The session-omission rule was a bulleted prohibition list, which names the
behaviour it bans. It collapses to a diary, positive-first: describe what the
code does, and cut what reads as a diary entry.
…ge gaps (0.13.0)

`execute` and `auto` described the commit flow as unreachable, which contradicted
the model-invocable skill and left the conventions unreached on the path that most
needs them. Both now point at `meridian:commit` for message conventions while the
flow itself stays user-owned.

Family prefix matching had no regression guard: restoring the previous exact-only
registry left the suite green. A test now pins that a later release in a mapped
family receives its adapters and that an unmapped family stays on the baseline.

Outward actions move behind a HARD-GATE, matching the device `brainstorm` and
`sketch` already use, since `commit` is the only model-invocable skill that can
push. `SHIPPED <sha>` moves to the commit flow, which is the only step that
produces a sha; `execute` sets `IN PROGRESS` and covers sketches as well as specs.

Two pull request claims asserted research findings that the source does not
support and are removed. The guidance they justified stands on its own, and the
section gains the pull request title and issue linking.

The `opus-4.8` to `claude-opus` rename is recorded as breaking: a host-local
`fallbackProfile` set to the old name silently yields no adapters. Prefix matching
is documented as literal, so vendor-qualified identifiers still need the override.
@KodingDev
KodingDev merged commit b066d00 into master Jul 25, 2026
5 checks passed
@KodingDev
KodingDev deleted the feat/commit-guidelines-and-adapter-resolution branch July 25, 2026 12:55
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