feat(re-anchor): add discipline-corrector plugin#249
Conversation
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)
There was a problem hiding this comment.
💡 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".
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)
|
Claude finished @kyle-sexton's task in 2m 48s —— View job PR Review —
|
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)
There was a problem hiding this comment.
💡 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".
|
Claude finished @kyle-sexton's task in 2m 29s —— View job PR Review —
|
… 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.
There was a problem hiding this comment.
💡 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".
## 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 finished @kyle-sexton's task in 2m 14s —— View job PR Review —
|
| # | 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-copyon 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.mdpath 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-deepis 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-deepsection 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.
## 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.
What
New plugin
re-anchor— five discipline correctors plus adeep-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.
/re-anchor:do-your-research/re-anchor:do-your-research-deep/re-anchor:follow-our-standards/re-anchor:point-dont-copy/re-anchor:reason-dont-recite/re-anchor:tighten-your-outputThe shared re-anchor → audit → correct-forward method lives once at
plugin scope (
context/re-anchor-audit-correct.md); each skill carries onlyits own delta and cites the method doc (mirrors the
prototypeprecedent).Design decisions
gentle-reminder use is first-class; the audit may honestly return clean.
hardcoded
~/.claude/CLAUDE.md,melodic-software/standards, ghq, and async-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.disable-model-invocation: false). Eachcorrector 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
falseonevery corrector — the same choice the sibling
keep-goingskill (feat(session-flow): add keep-going skill #251)made, and consistent with the repo's convention that
trueis reserved forsetup / destructive / mode-entry skills (
architecture:improveevenre-enabled it). This makes the "Use when:" phrasing accurate rather than
inert, resolving both bot findings on this flag in one move.
deepis a sibling skill, not an argument. The deep verification passfans forked subagents out over every load-bearing claim — a change in
execution topology, not a depth knob on one path.
MIGRATION-PLAYBOOK.mdfixes execution-tier variants in frontmatter as siblings (the
/discovery:research-deepprecedent), sodeepgraduated to/re-anchor:do-your-research-deep. That sibling points at the parent'sdiscipline + 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'sper-file fan-out throttle and the guardrails burst-529 guidance).
point-dont-copySSOT. Its re-anchor routes through the org standards'reference-don't-duplicate(in-repo facts) anddocumentation-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 fromdo-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 silentdeviation, never silent conformance" — no doctrine duplicated).
tighten-your-output. Terseness. Code side re-anchors the org'ssimpler-codeconvention (named failure modes; constraints never traded forline 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 asimplify capability (code).
re-anchorreads verb-ish rather than the noun/gerund therepo's namespace guidance prefers — kept as owner-locked (blind-generator
protocol). No
name:namestutter.point-dont-copyon the plugin's own correctors: trimmedgotchas that restated the shared method doc.
Gates
claude plugin validate(re-anchor) +--strict(catalog): both pass.validate-plugin-contracts.mjs: pass.skill-quality/reference/evals.schema.json(4 warranted cases each across all 6 eval sets).
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.