Skip to content

feat(domain-driven-design): concise curate-language description, measured no-loss - #12114

Merged
kyle-sexton merged 2 commits into
mainfrom
feat/6604-concise-domain-driven-design
Nov 1, 2026
Merged

kyle-sexton merged 2 commits into
mainfrom
feat/6604-concise-domain-driven-design

Conversation

@kyle-sexton

Copy link
Copy Markdown
Member

Closes #6604

Summary

Concise description for domain-driven-design's one skill, curate-language, on the issue's
description-only path, run as a measured before/after pass under the
rewrite protocol.
The new description triggers the same as the old one on every probe, on both target models. The
body, spoke, eval cases and probes are unchanged.

Fix

  • plugins/domain-driven-design/skills/curate-language/SKILL.md: description only, 587 to 506
    characters. It drops "Actively", "a consuming project's", "as domain understanding changes",
    "what-it-IS" and "already-" (in "already-known"), and the colon after "Use when". It keeps all
    four quoted trigger phrases verbatim, both unquoted triggers (domain modeling resolves
    vocabulary; planning resolves domain language worth preserving), every branch, and the three
    exclusions.
  • Changelog fragment (patch).

Decision table:

Skill Part Decision Basis
curate-language description ships Every trigger pass is VALID and scores the same before and after on Opus 5.5 and Sonnet 5.5 (table below).
curate-language body unchanged Out of scope: the issue's description-only path.

Verification

The pre-registration was written before any paid run, and each later rule went into its Run log
before the run it governs.

  • Versions: before and after copies of the plugin at the same main commit. They differ only in
    SKILL.md line 2. A fresh rewriter, barred from probes, evals and the held-out set, wrote the after
    text. It had merged the two unquoted triggers so that "worth preserving" also qualified
    domain modeling; an earlier round's labeler on this issue flagged that merge, so the original
    split was restored before labeling.
  • Meaning diff: two fresh docs-hygiene:compare-labeler agents, REASONS none. Both returned
    VERDICT: PASS, 0 SEMANTIC LOSS, 0 AMBIGUITY. Each cut was labeled RELOCATED (the body and
    context/glossary-contract.md still say it) or FALSE POSITIVE.
  • Probes: the frozen probes/curate-language.json (18 queries, 9 positive, 9 negative, from
    test(domain-driven-design): add outcome eval cases and frozen trigger probes for curate-language #11828), plus a held-out set of 16 queries (8/8) written blind by a fresh agent from a neutral
    purpose statement. The held-out set is not committed.
  • Run: cases emitted by /skill-quality:check measure-invocation emit-plugin-eval, then
    claude plugin eval --ablation none --disallow-tools Read Glob Grep --runs 3 -j 2 --keep-temp.
    Claude Code 2.1.316. In each pair, before and after were launched together. run-validity.py
    came from main.
  • Ceiling: the first Opus held-out pair stopped at the 5 USD per-pass ceiling (34 of 48 rows each).
    It is partial, INVALID and not read. A should-trigger Opus run works the request after the skill
    fires, so 24 positive runs alone exceed 5 USD. The ceiling was raised to 10 USD, a deviation
    recorded before the rerun, and the pair was re-run in full.

Hits over queries x 3 runs (should-trigger fired / should-not stayed quiet), before / after:

Set Model run-validity (before, after) Before After measure-invocation compare
held-out Opus 5.5 VALID, VALID 24/24, 24/24 24/24, 24/24 delta 0, interval [0, 0]
held-out Sonnet 5.5 VALID, VALID 24/24, 24/24 24/24, 24/24 delta 0, interval [0, 0]
frozen Opus 5.5 VALID, VALID 27/27, 27/27 27/27, 27/27 delta 0, interval [0, 0] (train and validation)
frozen Sonnet 5.5 VALID, VALID 27/27, 27/27 27/27, 27/27 delta 0, interval [0, 0] (train and validation)

Every pass had 0 permission denials. The one run-validity WARN on each is that no judge model is
recorded, and the suite has no judge grader.

What this cannot show:

  • Every score is at the ceiling, so the result shows no loss, not a gain.
  • The eval loads only this plugin, so the negatives test whether the skill stays quiet, not whether
    rival skills from other plugins win.
  • No outcome pass ran. A description change re-measures triggering, every outcome case invokes the
    skill by slash command, and the body did not change.

Other checks:

  • /skill-quality:check plugins/domain-driven-design/skills: 1 passed, 0 failed, on main and on
    this head. The same two warnings both times: the numbered procedure, and the description length
    above Pocock's measured max (now 506, was 587). Run on the plugin root, check-skill.sh
    reports "No skills found" on both main and this head, so the skills/ path is the one that
    checks the skill.
  • Pre-push check-affected and the guardrails reference and content checks passed. gitleaks over
    the branch: no leaks.

Spend: 57.36 USD list-price estimate, CLI-reported, across 10 result files including the two
partial passes. Eval wall time: 18:31-19:38 UTC, 2026-11-01.

Done-when on #6604: the diff under skills/ is the description line only. The probe file is on
main from #11828. The scores are above. After equals before. The skill check shows no new FAIL.
The changelog fragment is included.

Related

🤖 Generated with Claude Code

kyle-sexton and others added 2 commits November 1, 2026 14:38
…ured no-loss

The description drops paraphrase ("Actively", "as domain understanding
changes", "what-it-IS", "already-known") and keeps all four quoted
trigger phrases, both unquoted triggers and the three exclusions. Body,
spoke, evals and probes are unchanged.

Trigger passes on the frozen probes and a blind held-out set, before and
after launched together: every pass VALID, every score unchanged on Opus
5.5 and Sonnet 5.5.

Refs: #6604

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton marked this pull request as ready for review November 1, 2026 21:08
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-01T21:09:25.875672Z 661be4d Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

claude-security-review reviewed 661be4da43f38b27fda12d3285f7ca377e5d9086: read 2 of 2 changed file(s); 0 finding(s), 0 as inline comments.

Security review: PR #12114, no security issues found

I read both changed files in full in .claude-lane/pr.diff:

  • plugins/domain-driven-design/skills/curate-language/SKILL.md: only the frontmatter description changed, from 587 to 506 characters. The frontmatter lines user-invocable, disable-model-invocation and argument-hint, and the skill body, are unchanged. This is not a .claude-plugin/plugin.json or marketplace.json manifest, so no manifest <field> lines apply.
  • .changes/domain-driven-design/feat-6604-concise-domain-driven-design-94ae86c7.md: a new changelog fragment (bump: patch) with a prose entry only.

Instruction-surface check: The new description drops some words ("Actively", "a consuming project's", "as domain understanding changes", "what-it-IS", "already-"). It keeps all four quoted triggers, both unquoted triggers and all three "Not for" exclusions. The removed words only shape when the skill triggers. None of them forbids an action or guards a protected class, so nothing that used to be blocked is now reachable unchecked. I could not read the instruction exception register from this lane (no shell or web access), so I judged these removals by what they do rather than against its list of protected classes.

Other checks:

  • No changed file matches a trusted-path glob.
  • The PR context contains no embedded instructions aimed at this lane.
  • There were no prior findings (round 0 of 3, not past the cap).

Spend: this change costs nothing to merge. The PR describes past eval runs on prepaid usage (about 57 USD at list price); that is not a hold.

critical-findings: 0

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

claude-review reviewed 661be4da43f38b27fda12d3285f7ca377e5d9086: read 2 of 2 changed file(s); 0 finding(s), 0 as inline comments.

Code review: no findings. I read both changed files in full: the changelog fragment and the curate-language SKILL.md description line.

What changed. Only the description frontmatter value in plugins/domain-driven-design/skills/curate-language/SKILL.md changed. No other line under skills/ is touched. A bump: patch changelog fragment is added.

Checks against the change

  • Length claim. I counted the new description by hand: it is 506 characters, which matches the fragment and the PR body. I did not recount the old 587-character figure.
  • Description shape. The new text follows the repository's model-invoked shape in skill-criteria.md: a noun phrase, then "Use when , …". So dropping the colon after "Use when" matches the convention.
  • Triggers and exclusions. All four quoted triggers, both unquoted triggers (kept as separate clauses) and all three exclusions are still in the text. The phrases that were cut ("what-it-IS", "a consuming project's") are still covered by the body's Purpose section and context/glossary-contract.md.
  • Path-scoped rules. .claude/rules/skill-bodies-state-current-rules.md and .claude/rules/cost-claims.md match this file. The new description repeats no upstream specific and makes no cost claim, so neither rule is broken.
  • Bump level. bump: patch fits a description-only change.
  • Manifests. No plugin.json or marketplace.json changed.

Closing issue #6604, done-when items

  • Description-only diff under skills/: met, confirmed from the diff.
  • Probe file exists: plugins/domain-driven-design/probes/curate-language.json exists at this head. It came to main with test(domain-driven-design): add outcome eval cases and frozen trigger probes for curate-language #11828, not with this PR.
  • Before/after scores in the PR body, and after ≥ before: the PR body has the tables. The scores are author-claimed and I could not check them, since this lane runs no evals.
  • /skill-quality:check, no new FAIL: author-claimed, unverified. The author says it was run on plugins/domain-driven-design/skills because running it on the plugin root reports "No skills found".
  • Changelog entry: met.

No test can fail on these criteria because they are eval and process checks, not code behavior, so I report no test-gap finding.

Spend. The PR reports about 57 USD of prepaid eval API credit, at list price. That is prepaid usage, not a billing change, so it is not a hold.

Embedded text. The PR context contains no instructions aimed at this lane.

@kyle-sexton
kyle-sexton added this pull request to the merge queue Nov 1, 2026
Merged via the queue into main with commit 37d7b47 Nov 1, 2026
68 checks passed
@kyle-sexton
kyle-sexton deleted the feat/6604-concise-domain-driven-design branch November 1, 2026 21:18
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.

Concise skills rollout: domain-driven-design (1 skills, 1 model-invoked)

1 participant