Skip to content

feat(re-anchor): add discipline-corrector plugin#249

Merged
kyle-sexton merged 6 commits into
mainfrom
feat/re-anchor-plugin
Jul 17, 2026
Merged

feat(re-anchor): add discipline-corrector plugin#249
kyle-sexton merged 6 commits into
mainfrom
feat/re-anchor-plugin

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What

New plugin re-anchorfive discipline correctors plus a
deep-verification sibling, sharing one re-anchor / audit / correct-forward
engine doc
. Each corrector re-anchors a standing rule mid-session, audits
the work in flight against it, and corrects what has drifted.

Skill Discipline it re-anchors
/re-anchor:do-your-research Research / no-assumptions before assertion
/re-anchor:do-your-research-deep Verification-fan-out tier of do-your-research — subagents verify every load-bearing claim so far
/re-anchor:follow-our-standards Alignment to the consuming org's engineering conventions
/re-anchor:point-dont-copy Pointer over copy — cite the living source, don't duplicate it
/re-anchor:reason-dont-recite Interrogate inherited content — precedent describes, it doesn't justify
/re-anchor:tighten-your-output Terseness — fewer words or lines with no loss of meaning or correctness

The shared re-anchor → audit → correct-forward method lives once at
plugin scope (context/re-anchor-audit-correct.md); each skill carries only
its own delta and cites the method doc (mirrors the prototype precedent).

Design decisions

  • Corrector tone. Firing a corrector is a re-anchor, not an accusation;
    gentle-reminder use is first-class; the audit may honestly return clean.
  • Repo-/machine-agnostic (portability). The source personal skills
    hardcoded ~/.claude/CLAUDE.md, melodic-software/standards, ghq, and a
    sync-manifest path — all removed. Each corrector resolves its discipline's
    source of truth from the consumer's own instruction layer via the
    convention-resolution ladder, degrading to a plugin-authored portable
    baseline
    . No userConfig, so no setup skill.
  • Model-invocable correctors (disable-model-invocation: false). Each
    corrector advertises natural-language trigger phrases in its description
    ("you're guessing", "too verbose", …). Those phrases only reach the model's
    invocation path when model invocation is enabled, so the flag is false on
    every corrector — the same choice the sibling keep-going skill (feat(session-flow): add keep-going skill #251)
    made, and consistent with the repo's convention that true is reserved for
    setup / destructive / mode-entry skills (architecture:improve even
    re-enabled it). This makes the "Use when:" phrasing accurate rather than
    inert, resolving both bot findings on this flag in one move.
  • deep is a sibling skill, not an argument. The deep verification pass
    fans forked subagents out over every load-bearing claim — a change in
    execution topology, not a depth knob on one path. MIGRATION-PLAYBOOK.md
    fixes execution-tier variants in frontmatter as siblings (the
    /discovery:research-deep precedent), so deep graduated to
    /re-anchor:do-your-research-deep. That sibling points at the parent's
    discipline + the shared method doc (no duplication) and carries only the
    fan-out delta, including a wave-cap / retry throttle so a claim-heavy
    session cannot fire an unthrottled burst (mirrors codebase-health's
    per-file fan-out throttle and the guardrails burst-529 guidance).
  • point-dont-copy SSOT. Its re-anchor routes through the org standards'
    reference-don't-duplicate (in-repo facts) and documentation-and-citations
    (external facts) conventions rather than restating that doctrine; the skill
    keeps only its own pins — threshold two (tighter than the convention's
    three-or-more smell signal), point-at-public-contracts, no-capability-
    enumeration — plus the not-a-copy carve-outs.
  • reason-dont-recite. Incumbency discipline, a distinct axis from
    do-your-research (external evidence you lack vs internal evidence you
    inherited). A standards disagreement it surfaces routes upstream via
    follow-our-standards (routing-only delta; that skill owns "never silent
    deviation, never silent conformance" — no doctrine duplicated).
  • tighten-your-output. Terseness. Code side re-anchors the org's
    simpler-code convention (named failure modes; constraints never traded for
    line count); prose terseness has no standards doc (verified against the
    standards engineering conventions), so the skill flags that gap rather than
    inventing a rubric — a standards-repo issue proposes the prose sibling of
    simpler-code.md. Batch work routes to a compress capability (prose) and a
    simplify capability (code).
  • Plugin name re-anchor reads verb-ish rather than the noun/gerund the
    repo's namespace guidance prefers — kept as owner-locked (blind-generator
    protocol). No name:name stutter.
  • Dogfooded point-dont-copy on the plugin's own correctors: trimmed
    gotchas that restated the shared method doc.

Gates

  • markdownlint-cli2: clean on all 9 markdown files.
  • claude plugin validate (re-anchor) + --strict (catalog): both pass.
  • validate-plugin-contracts.mjs: pass.
  • Evals present + schema-valid against skill-quality/reference/evals.schema.json
    (4 warranted cases each across all 6 eval sets).
  • Root catalog regenerated via scripts/generate-catalog.mjs (in sync).

Related

No linked issue — round-2 personal-skill graduation is driven by the planning brief, not a tracked GitHub issue.

New plugin bundling three discipline correctors that share one
re-anchor / audit / correct-forward method at plugin scope
(context/re-anchor-audit-correct.md):

- do-your-research — research and no-assumptions discipline, with a
  deep action that fans out fresh-context subagents to verify every
  load-bearing claim.
- follow-our-standards — alignment to the consuming org's engineering
  conventions, relevance-routed progressive loading, and respect for a
  declared managed / locally-owned seam.
- point-dont-copy — pointer-over-copy discipline: no copied content,
  internal-name coupling, or closed capability lists; duplication
  threshold of two.

Repo- and machine-agnostic: each corrector re-anchors the discipline
the consuming project declares in its own instruction layer and
degrades to a portable baseline when none is declared. Firing a
corrector is a re-anchor, not an accusation; the audit may return
clean. Each skill ships warranted evals.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

🤖 Generated with [Claude Code](https://claude.com/claude-code)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5690d705b5

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread plugins/re-anchor/skills/do-your-research/SKILL.md Outdated
Comment thread plugins/re-anchor/README.md Outdated
Dogfooding point-dont-copy on the plugin's own correctors: do-your-research
and follow-our-standards each carried Gotchas that re-stated the shared
method doc (the near-tail salience mechanism, the fresh-context-over-
self-trust non-negotiable, and "cite the source you read"). Duplication at
threshold two by the exact doctrine the plugin ships. Trimmed each to its
skill-specific delta — the research-recall verification trap plus the deep
escalation hook, and the standards-resolution "cite which source resolved"
nuance — so the engine remains the single owner.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

🤖 Generated with [Claude Code](https://claude.com/claude-code)
…opy through standards SSOT

Corrector #4 reason-dont-recite (incumbency discipline): inherited content
is evidence of what is, never self-justifying authority; a choice supported
only by precedent earns first-principles re-derivation, not compliance. A
distinct axis from do-your-research (acquire external evidence you lack —
this questions internal evidence you inherited). SSOT: the consuming
project's incumbency / first-principles rule, degrading to a portable
baseline. A standards disagreement it surfaces routes upstream via
follow-our-standards (routing only — that skill now owns "never silent
deviation, never silent conformance"; no doctrine duplicated).

point-dont-copy SSOT correction: its re-anchor step now routes through the
org standards' reference-don't-duplicate (in-repo facts: literal/semantic,
describe/use/expose roles, stable anchors) and documentation-and-citations
(external facts: cite + fetch at read time, no upstream-inventory recap,
citation placement) conventions instead of restating that doctrine. The
skill keeps only its own pins — threshold two (tighter than the convention's
three-or-more smell signal), point-at-public-contracts, no-capability-
enumeration — and the not-a-copy carve-outs.

Metadata, README, CHANGELOG updated; root catalog regenerated via
scripts/generate-catalog.mjs. Corrector #5 (terseness) body authored and
held pending its locked name.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@kyle-sexton
kyle-sexton marked this pull request as draft July 17, 2026 14:31
@claude

claude Bot commented Jul 17, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 48s —— View job


PR Review — feat(re-anchor): add discipline-corrector plugin

  • Gather context and understand request
  • Read all changed files
  • Review plugin structure and CLAUDE.md compliance
  • Review skill content and correctness
  • Review evals schema validity
  • Assess Codex review findings
  • Post final review

Summary

The re-anchor plugin is well-structured and follows the repo's conventions closely: shared method at plugin scope, skills carrying only their own delta, portable baselines for graceful degradation, no userConfig, no baked-in paths. The evals cover the four warranted cases per skill. Most of what I found below is low-to-medium severity; nothing blocks the design intent.


Findings

1. README "no network calls" claim is inaccurate — medium

plugins/re-anchor/README.md line 105:

No userConfig. No persistent state, no network calls — each skill reads
the conversation and the consuming project's own instruction layer, and
resolves any external standards source the consumer declares.

But follow-our-standards/SKILL.md line 25 explicitly allows a remote read:

"a remote read (via the host's CLI or web tree) is the fallback"

And do-your-research/SKILL.md line 49 directs verification against authoritative sources. When a consumer declares a remote standards repo, network access is expected and correct — the README claim understates the egress posture. Codex also flagged this (P2).

Suggested fix: rephrase to "No userConfig, no persistent state — each skill reads the conversation and the consuming project's own instruction layer. follow-our-standards may fetch a remote standards source when the consumer declares one and no local checkout exists." Fix this →


2. point-dont-copy still references ~/.claude/CLAUDE.md — medium

plugins/re-anchor/skills/point-dont-copy/SKILL.md line 32:

- **Personal layer.** A global engineering-quality rule (e.g. your
  `~/.claude/CLAUDE.md`) that says never duplicate content and never restate
  what a source already makes ascertainable.

The PR description explicitly states: "The source personal skills hardcoded ~/.claude/CLAUDE.md … All removed." This bullet introduces a third resolution tier not present in the shared method doc (re-anchor-audit-correct.md only defines two: declared consumer rules → portable baseline), and names a machine-specific path by example. In plugin form installed by an arbitrary consumer, ~/.claude/CLAUDE.md may not exist and is outside ${CLAUDE_PLUGIN_DIR} or ${CLAUDE_PROJECT_DIR}.

The intent (a personal "never duplicate" rule) is already captured by the consumer's CLAUDE.md / .claude/rules/ in the shared method doc's resolution ladder. This "Personal layer" bullet adds coupling to a machine path without adding coverage not already handled by the baseline. Removing it resolves the inconsistency. Fix this →


3. disable-model-invocation: true + trigger-phrase descriptions — low / design decision

All four skills carry disable-model-invocation: true (e.g. do-your-research/SKILL.md line 6) while the description field lists natural-language phrases ("Use when: 'do your research', 'you're guessing', …"). With the flag set, those phrases will NOT auto-invoke the skill — users who type them expecting an auto-trigger will get no response.

The design intent is intentional and defensible (correctors are explicitly-invoked interventions, not ambient listeners), and is consistent with similar skills in this repo. However, the "Use when:" phrasing reads as auto-invocation guidance, which will confuse users. The description should be reframed as invocation-hint language — "Invoke manually with /re-anchor:do-your-research when you want to re-anchor …" — to set correct expectations. Codex also flagged this as P2.


4. PR body is stale — low / informational

The PR description says "three discipline correctors" and its table lists only three skills. The plugin contains four (reason-dont-recite was added in the final commit a3c8cf4). The plugin.json description and README.md are correct; only the PR body is stale. No code impact.


5. Typo in point-dont-copy evals — low

plugins/re-anchor/skills/point-dont-copy/evals/evals.json line 8: "rewors""rewords". Fix this →


What looks good

  • Shared method doc. The re-anchor / audit / correct-forward loop lives exactly once at plugin scope; skills add only their delta. Follows the prototype precedent cleanly.
  • Resolution ladder. Declared consumer rules → portable baseline is clearly defined in the shared method doc and consistently referenced by each skill. True graceful degradation.
  • Corrector tone. "Firing a corrector is not an accusation" appears in both the shared method doc and each skill body — the posture is reinforced at every level.
  • reason-dont-recite axis distinction. The clean separation from do-your-research (inherited internal evidence vs. absent external evidence) is precise and testable. The upstream-routing path to follow-our-standards for standards disagreements is the right design.
  • Evals. Four cases per skill covering trigger, happy path, clean-audit guardrail, and anti-pattern. The deep arg eval (do-your-research id:3) and the threshold-two eval (point-dont-copy id:4) are particularly well-specified.
  • No userConfig, no state persistence. No setup skill needed; installs cleanly.
  • Marketplace registration. Category quality is appropriate; tags match the plugin manifest keywords with a reasonable audit addition.

Corrector #5 tighten-your-output (name locked): terseness discipline —
say markdown in fewer words with no semantic loss, write code in fewer
lines when readability holds. Code side re-anchors the consuming org's
simpler-code convention (named failure modes: speculative generality /
wrong abstraction / YAGNI; constraints never traded for line count).
Markdown-terseness has no standards convention yet (verified against the
standards engineering conventions), so the skill flags that gap rather
than inventing a rubric and routes batch prose work to a compress
capability's semantic-diff safety net; batch code to simplify. Distinct
from point-dont-copy: this removes wasted words from one copy, not a
second copy of a fact.

Completes the plugin at five correctors sharing one engine doc. Metadata,
README, CHANGELOG updated; catalog regenerated. 4 warranted evals. All
gates green (markdownlint, skill-quality 0/0 x5, evals schema, plugin
validate --strict).

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@kyle-sexton
kyle-sexton marked this pull request as ready for review July 17, 2026 14:48

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 344dea1b46

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread plugins/re-anchor/skills/do-your-research/SKILL.md Outdated
@claude

claude Bot commented Jul 17, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 29s —— View job


PR Review — feat(re-anchor): add discipline-corrector plugin

  • Gather context and understand request
  • Read all changed files (including new tighten-your-output skill)
  • Verify status of findings from prior review
  • Review tighten-your-output skill and evals
  • Post final review

Summary

This review covers the full PR at HEAD (344dea1), which completes the fifth corrector (tighten-your-output). The three carry-over findings from the prior review remain unaddressed; the new skill is well-executed and fits the established pattern cleanly.


Carry-over findings (still open)

1. README "no network calls" claim is inaccurate — medium

plugins/re-anchor/README.md line 122:

No userConfig. No persistent state, no network calls — each skill reads
the conversation and the consuming project's own instruction layer, and
resolves any external standards source the consumer declares.

follow-our-standards/SKILL.md line 26 explicitly permits a remote read: "a remote read (via the host's CLI or web tree) is the fallback." The README claim understates the egress posture. Suggested fix: rephrase to "No userConfig, no persistent state — follow-our-standards may fetch a remote standards source when the consumer declares one and no local checkout exists." Fix this →


2. point-dont-copy still references ~/.claude/CLAUDE.md — medium

plugins/re-anchor/skills/point-dont-copy/SKILL.md lines 32–34:

- **Personal layer.** A global engineering-quality rule (e.g. your
  `~/.claude/CLAUDE.md`) that says never duplicate content and never restate
  what a source already makes ascertainable.

The PR description states "The source personal skills hardcoded ~/.claude/CLAUDE.md … All removed." This bullet introduces a third resolution tier not present in the shared method doc's two-tier ladder (declared consumer rules → portable baseline) and names a machine-specific path by example. The intent is already covered by the consumer's CLAUDE.md / .claude/rules/ under the shared method doc's first tier. Removing this bullet resolves the inconsistency with no coverage loss. Fix this →


3. Typo in point-dont-copy evals — low

plugins/re-anchor/skills/point-dont-copy/evals/evals.json line 8: "rewors""rewords". Fix this →


New skill: tighten-your-output

What looks good

  • Pattern compliance. References the shared method doc and adds only the terseness delta. Consistent with all four prior correctors.
  • Prose-terseness gap handling. The skill explicitly flags that no standards doc yet exists for prose terseness, routes batch prose to the compress capability's semantic-diff discipline, and refuses to invent a rubric — the right call. The eval at id:3 ("markdown-gap-flagged-not-invented") tests this directly.
  • Code side resolution. Re-anchors the consuming org's simpler-code convention (named failure modes; constraints never traded for line count) with clear graceful degradation when none is declared.
  • Routing section. Batch prose → compress capability, batch code → simplify capability, proactive code-side enforcement lives in review gates (not here). These routing boundaries are precise.
  • Gotchas. The point-dont-copy boundary ("Terseness is not duplication — removing a second copy is point-dont-copy; removing wasted words from a single copy is this skill") is the right distinguisher and is well-placed.
  • Evals. Four cases cover: trigger case (id:1), constraint-not-traded (id:2), prose-gap-flagged (id:3), and cross-skill boundary with point-dont-copy (id:4). All four are well-specified.
  • plugin.json description. Updated correctly to include the fifth skill with a concise summary.
  • CHANGELOG. All five skills properly listed with a one-liner per skill.

Findings

4. disable-model-invocation: true + trigger-phrase descriptions — low / design decision

tighten-your-output/SKILL.md line 5 has disable-model-invocation: true while the description lists: "Use when: 'tighten your output', 'too verbose', 'say it in fewer words'…"

The intent is intentional and consistent across all five correctors (these are explicitly-invoked interventions, not ambient listeners). However, the "Use when:" phrasing reads as auto-trigger guidance; a user who types "this is bloated" expecting the skill to fire will get no response. Same issue is present on all four prior correctors. The description field across all five skills should be reframed as invocation-hint language ("Invoke with /re-anchor:tighten-your-output when you want to re-anchor terseness discipline") to set correct expectations.


Codex open item: deep as argument vs. sibling skill — design discussion

Codex comment on do-your-research/SKILL.md line 63 flags that the deep action should be a sibling skill (/re-anchor:do-your-research-deep) per MIGRATION-PLAYBOOK.md guidance and the /discovery:research-deep precedent.

The case for keeping it as an argument is real: deep is a pure escalation tier on the same discipline (research), it requires no new resolution ladder, no new baseline, and no new carve-outs — it only changes the execution surface (subagent fan-out vs. inline audit). A sibling skill would duplicate the full resolution, audit, and gotchas sections. The argument-hint: "[deep]" field in the frontmatter shows the plugin schema supports this pattern.

The case for splitting: the deep path has a distinct eval surface (per-claim ledger, subagent fan-out cost acknowledgement) and the current eval set (id:3 in do-your-research) touches the deep path but only at the audit level, not the fan-out mechanics.

This feels like a legitimate design decision rather than a violation. Worth an explicit note in the PR resolving the Codex flag.


Verdict

The tighten-your-output skill is well-executed. Three prior findings remain open (README egress claim, ~/.claude/CLAUDE.md reference, typo) — all are low-effort to fix before merge. The disable-model-invocation + trigger-phrase description pattern is a systemic choice that warrants one fix across all five skills before this ships, since it sets incorrect expectations for users who type the documented trigger phrases.

… fix typo

README overstated the plugin's egress posture ("no network calls") even
though follow-our-standards documents a remote-read fallback; reword to
match. point-dont-copy's resolution ladder still named the machine-specific
~/.claude/CLAUDE.md path the PR's cleanup pass was meant to remove; that
tier is already covered by the shared method doc's consumer-declared-rules
step, so drop it. Fix "rewors" -> "rewords" in point-dont-copy's evals.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4594d0288a

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread plugins/re-anchor/skills/do-your-research/SKILL.md Outdated
kyle-sexton added a commit that referenced this pull request Jul 17, 2026
## What

Adds a fifth skill to **`session-flow`**: `/session-flow:keep-going` —
recover and continue after any interruption (rate limit, crash,
disconnect,
gap). It is the resume counterpart to `handoff`: handoff deliberately
pauses
a session, keep-going picks it back up.

Flow: **inventory** off-thread work → **inspect** each item's real state
from its own artifact (never assume "probably done" / "probably died") →
**recover** (resume the resumable, restart the dead, surface the
unrecoverable) → **reconcile** the main thread from a fresh read of its
backing plan or handoff file → **report** recovered / restarted /
still-running / lost.

**Autonomy policy:** safe, idempotent, read-only work auto-resumes;
re-running anything with external side effects (a push, a PR comment, a
deploy) is gated when inspection cannot prove it did not already land —
double-firing a side effect is worse than pausing.

## Design decisions

- **Cause not diagnosed.** Short-limit vs weekly-limit vs crash does not
  change the recovery, so it is deliberately not classified.
- **No capability enumeration.** Harness mechanisms (background tasks,
shells, monitors, scheduled tasks, workflows, subagents) are named only
as
  marked examples of the *kinds* of off-thread work — the duty is to
inventory whatever the current harness exposes, so the skill survives
tool
  evolution.
- **Follows the plugin's conventions.** Version bump 0.6.0 → 0.7.0,
`## X.Y.Z — DATE` changelog format, README skill-table + section,
keywords,
  and root catalog entry all updated in the plugin's existing style.

## Coordination note

This PR bumps `session-flow` to **0.7.0** and edits the shared plugin
files (plugin.json version/description, README, CHANGELOG, root
marketplace + catalog row). If a concurrent `session-flow` PR (e.g. a
further orchestrate change) lands first, these shared-file edits are the
expected conflict resolved by serializing the merge — this branch
rebases
onto the new base and re-bumps the version. The `keep-going/` skill
files
themselves are conflict-free.

## Gates

- markdownlint-cli2 (MD013=80): clean.
- `/skill-quality:check`: PASS, 0 errors / 0 warnings.
- Evals present and schema-valid (4 warranted cases: real-state
inspection,
side-effect re-fire gating, nothing-off-thread,
does-not-diagnose-cause).
- `claude plugin validate` (plugin) and `--strict` (catalog): pass.

Part of the round-2 personal-skill graduation, alongside `re-anchor`
(#249) and `naming` (#250). Raw `~/.claude/skills/` copies are removed
only
after these merge and verify.

## Related

- Sibling round-2 graduation PRs: #249 (re-anchor), #250 (naming), #251
(keep-going session-flow skill).
- Upstream issues filed from this work: #252 (extract-ssot threshold),
#253 (docs-hygiene proactive detection).

No linked issue — round-2 personal-skill graduation is driven by the
planning brief, not a tracked GitHub issue.
Resolve the two escalated design findings on the re-anchor correctors.

Model invocation (was disable-model-invocation: true on all five
correctors). Each corrector's description advertises natural-language
trigger phrases ("you're guessing", "too verbose"); with model invocation
disabled those phrases were inert — only the slash command loaded the
skill. Flip to false on all five. This is the repo convention: true is
reserved for setup / destructive / mode-entry skills (architecture:improve
even documents re-enabling it), and every substantive discipline skill
(research, devils-advocate, confirm, tidy) is false. Sibling PR #251
(keep-going) made the same call for the same reason. Flipping makes the
"Use when:" phrasing accurate, resolving both the Codex finding (enable
invocation) and the claude[bot] finding (misleading trigger phrasing) in
one move — the descriptions become correct rather than needing a reword.

Deep verification is now a sibling skill, not a `deep` argument. The deep
pass fans forked subagents out over every load-bearing claim — a change in
execution topology, which MIGRATION-PLAYBOOK.md fixes in frontmatter as a
sibling (the /discovery:research-deep precedent), not a runtime argument.
Graduated to /re-anchor:do-your-research-deep: a thin delta that points at
the parent's discipline and the shared method doc (no duplication) and
carries only the fan-out. Added a wave-cap / retry-failed-subset throttle
so a claim-heavy session cannot fire an unthrottled burst (mirrors
codebase-health's per-file fan-out cap and the guardrails burst-529
guidance) — resolves the Codex throttle finding. Removed the deep argument,
argument-hint, and $ARGUMENTS branch from do-your-research; moved its deep
eval to the new skill and backfilled a premature-solution / training-data
-recall audit case so both skills keep four warranted evals.

Manifest description, both READMEs, CHANGELOG, and the regenerated root
catalog updated to describe six skills.
@claude

claude Bot commented Jul 17, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 14s —— View job


PR Review — feat(re-anchor): add discipline-corrector plugin

  • Gather context and understand request
  • Read changed files at HEAD (5b73d69)
  • Verify status of prior findings (README egress, ~/.claude path, typo, model-invocation, deep-split)
  • Review new do-your-research-deep sibling skill
  • Post final review

Summary

Full review at HEAD (5b73d69). All five prior findings are resolved; the new do-your-research-deep sibling skill is well-executed. No new findings. This PR is clean.


Prior findings — all closed

# Finding Status Resolved by
1 README "no network calls" inaccurate ✅ Fixed 4594d02
2 point-dont-copy references ~/.claude/CLAUDE.md ✅ Fixed 4594d02
3 Typo "rewors" in point-dont-copy evals ✅ Fixed 4594d02
4 disable-model-invocation: true + misleading trigger phrases ✅ Fixed 5b73d69 — flipped to false across all six skills
5 deep as runtime argument instead of sibling skill ✅ Fixed 5b73d69 — graduated to do-your-research-deep

New skill: do-your-research-deep

What looks good

  • Delta-only design. Points at the sibling's discipline and the shared method doc with no duplication — "There is no separate copy of the discipline here — update the sibling and this tier follows." Dogfoods point-dont-copy on itself. ✅
  • Throttle guidance is complete. The fan-out section specifies the wave cap ("roughly a dozen or fewer at a time"), failed-subset-only retry (not a blind full re-run), lower-tier worker models for per-claim verification, and wave-by-wave processing. This directly resolves the Codex throttle finding and is more prescriptive than the codebase-health precedent it mirrors. ✅
  • Blind subagents. The "Blind subagents, or it is not fresh context" gotcha closes the loop on the self-verification failure mode cleanly. ✅
  • Overkill guardrail. Eval id:3 (declines-overkill-on-a-light-session) tests the routing back to the inline sibling — the right shape for a tiered escalation. ✅
  • Four warranted evals. Full fan-out (id:1), throttle discipline (id:2), overkill guardrail (id:3), honest ledger (id:4). Eval id:2 is directly traceable to the Codex throttle finding and gives the skill a testable signal that the wave cap is governing behavior, not just documented. ✅
  • Sibling cross-reference is correct. The ../do-your-research/SKILL.md path resolves correctly from the skill's own directory. The description routes the other direction ("For a single inline re-anchor + audit, use the sibling do-your-research"). Both entry points point at each other consistently. ✅
  • disable-model-invocation: false. Trigger phrases ("verify every claim", "deep research pass") are active and accurate at this setting. ✅
  • CHANGELOG. do-your-research-deep is listed under [0.1.0] with the rationale for sibling-vs-argument (mirrors /discovery:research-deep) and the throttle behavior documented. ✅
  • plugin.json description. Updated to name the sibling and describe the fan-out tier. ✅
  • README. Six-skill table is correct; do-your-research-deep section is accurate. ✅

No findings on this skill.


Overall verdict

All five prior findings resolved; new do-your-research-deep skill is well-specified and addresses the two remaining Codex flags (throttle, sibling graduation) cleanly. Ready to merge.

@kyle-sexton
kyle-sexton merged commit f84fca2 into main Jul 17, 2026
23 of 24 checks passed
@kyle-sexton
kyle-sexton deleted the feat/re-anchor-plugin branch July 17, 2026 16:17
kyle-sexton added a commit that referenced this pull request Jul 17, 2026
## What

New single-skill plugin **`naming`** — `/naming:name-it-better`
generates
and evaluates fresh name candidates for anything (identifier, file,
module,
skill, repo, domain term), then hands the human a scored shortlist. It
never
auto-locks a name.

The dominant trigger is a reactive retry: a name was just rejected, and
the
same context that produced it will only produce more of the same. So the
generators run **blind** to the conversation — seeded only with a
distilled
context brief — across three distinct lenses (responsibility-literal,
moment-of-use, domain-lore). Diverge widely, converge once, and keep the
first-seen suggestion from anchoring the choice. An optional
`tournament`
action widens to ~5 generators with elimination rounds and independent
judges for high-stakes, hard-to-refactor names — framed honestly as an
adaptation of elimination brackets + pairwise scoring, not a documented
naming technique.

## Design decisions

- **Repo-agnostic (portability).** The source personal skill scored
against
`melodic-software/standards` naming docs. Generalized: the skill scores
against the **consuming org's** naming/domain-language conventions when
  the project declares them (`CLAUDE.md` / `.claude/rules` / a standards
source it points to), degrading to the general criteria grounded in the
skill's `context/sources.md` when none is declared. A missing criterion
  flows UP into the org's conventions, never hardcoded into the skill.
- **`context/sources.md` kept as the plugin's own one-shot research
deliverable** (method grounding: Belshee/Deep Roots naming-as-a-process,
Ottinger/Clean Code, DDD ubiquitous language, Double Diamond, anchoring
bias, and the tournament-mode adaptation basis). Only its two references
  to "the standards repo" were generalized to "the consuming org's
  conventions".
- **Naming.** Namespace `naming` (gerund, activity domain) + skill
  `name-it-better` (action verb) — no `name:name` stutter. Plugin name
  locked by the owner via the blind-generator naming protocol.

## Gates

- markdownlint-cli2 (MD013=80): clean on all 4 files.
- `/skill-quality:check`: PASS, 0 errors / 0 warnings.
- Evals present and schema-valid (4 warranted cases:
blind-retry→human-pick,
collision-check, tournament honest-framing,
missing-criterion-routes-up).
- `claude plugin validate` (plugin) and `--strict` (catalog): pass.

Part of the round-2 personal-skill graduation. Sibling PR #249 adds the
`re-anchor` corrector plugin; another sibling adds `keep-going` to
`session-flow`. Raw `~/.claude/skills/` copies are removed only after
these
merge and verify.

## Related

- Sibling round-2 graduation PRs: #249 (re-anchor), #250 (naming), #251
(keep-going session-flow skill).
- Upstream issues filed from this work: #252 (extract-ssot threshold),
#253 (docs-hygiene proactive detection).

No linked issue — round-2 personal-skill graduation is driven by the
planning brief, not a tracked GitHub issue.
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