Skip to content

Add /improve-skills: meta-critic that improves the system's own prompts - #11

Merged
dominno merged 2 commits into
mainfrom
claude/improve-skills
Jun 29, 2026
Merged

dominno merged 2 commits into
mainfrom
claude/improve-skills

Conversation

@dominno

@dominno dominno commented Jun 29, 2026

Copy link
Copy Markdown
Owner

The self-learning system improved only its facts (the memory wiki via
/dream), not the core prompts and orchestration that drive the work.
Add the missing self-improvement axis.

  • .claude/workflows/improve-skills.js — a deterministic meta-critic that
    fans out one reviewer per quality lens (clarity, instruction-following
    risk, safety/gating, consistency/DRY, workflow DSL, routing) across the
    project's OWN command/workflow/instruction surface, then a SEPARATE
    skeptic adversarially verifies each blocker/important finding on two
    axes: is the problem real, and is the proposed edit safe (won't weaken
    instruction-following or break a workflow). Returns proposed edits only;
    never writes files.
  • .claude/commands/improve-skills.md — invokes the workflow, renders the
    matrix, and applies edits ONLY on confirmation. disable-model-invocation
    (manual-only) because it edits core prompts.
  • Wired into CLAUDE.md (workflow list + a "self-improvement vs
    self-learning" note), skills-index, and the memory wiki.

Both axes stay confirmation-gated: never auto-create, rewrite, or delete a
command/skill, and never weaken an instruction or remove a safety gate as
an "improvement".

Co-Authored-By: Claude Opus 4.8 [email protected]
Claude-Session: https://claude.ai/code/session_014xUCrJdREvUMjoVzSX5T8G

claude added 2 commits June 29, 2026 20:30
The self-learning system improved only its facts (the memory wiki via
/dream), not the core prompts and orchestration that drive the work.
Add the missing self-improvement axis.

- .claude/workflows/improve-skills.js — a deterministic meta-critic that
  fans out one reviewer per quality lens (clarity, instruction-following
  risk, safety/gating, consistency/DRY, workflow DSL, routing) across the
  project's OWN command/workflow/instruction surface, then a SEPARATE
  skeptic adversarially verifies each blocker/important finding on two
  axes: is the problem real, and is the proposed edit safe (won't weaken
  instruction-following or break a workflow). Returns proposed edits only;
  never writes files.
- .claude/commands/improve-skills.md — invokes the workflow, renders the
  matrix, and applies edits ONLY on confirmation. disable-model-invocation
  (manual-only) because it edits core prompts.
- Wired into CLAUDE.md (workflow list + a "self-improvement vs
  self-learning" note), skills-index, and the memory wiki.

Both axes stay confirmation-gated: never auto-create, rewrite, or delete a
command/skill, and never weaken an instruction or remove a safety gate as
an "improvement".

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_014xUCrJdREvUMjoVzSX5T8G
… gates

First /improve-skills meta-critic run (25 agents, 6 lenses) found 2 blockers
+ 10 important in the project's own prompts/workflows; the two-axis verifier
refuted 7 (including 3 edits that would have weakened a gate). Applied the
verified real-and-safe fixes:

- Self-modification guard (blocker): the autonomous-loop denylist protected
  only product/infra paths, so an L2/L3 loop could rewrite its OWN governing
  prompts. Added .claude/ + CLAUDE.md to the loop-iteration.js regex gate and
  the loop.md prose denylist (regex unit-tested: matches the prompt surface,
  no false positives). The sanctioned path to edit prompts is the manual,
  confirmation-gated /improve-skills.
- /dream: gate CLAUDE.md edits behind explicit confirmation (was the
  self-contradictory "propose it ... and apply the edit"); add the matching
  Hard rule.
- CLAUDE.md: add "commit/push only when the user asks" (settings pre-allow
  git commit, but no rule forbade committing unprompted).
- loop.md: fail-safe defaults — unstated per-run cap -> 25 turns, unstated
  trust level -> L1 at the action step, no identifiable task -> self-stop.
- fix-localhost: make its single-agent intent explicit (it named a critic
  panel inline; CLAUDE.md classes it single-agent and says panels are Workflows).
- multi-agent-dev: add typecheck/lint/unit/build to its "never mark complete
  unless" gate (CLAUDE.md requires them; the command's list omitted them).
- write-goal + CLAUDE.md: drop the dangling /plan reference -> outline inline.
- improve-skills.js: parse a JSON-string args so scope/targets resolve.

Filed the durable lesson (a self-improving system must denylist its own
prompt surface) in the memory wiki + log.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_014xUCrJdREvUMjoVzSX5T8G
Copilot AI review requested due to automatic review settings June 29, 2026 21:38
@dominno
dominno merged commit c188bea into main Jun 29, 2026
6 checks passed

Copilot AI 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.

Pull request overview

Introduces a new confirmation-gated “self-improvement” workflow (/improve-skills) that reviews and proposes edits to the repo’s own Claude prompt/workflow surface, with adversarial verification, and hardens existing loop automation against self-modification.

Changes:

  • Added /improve-skills command + improve-skills workflow (multi-lens critics + skeptic verifier) that returns proposed edits only.
  • Hardened /loop automation by denylisting .claude/ and CLAUDE.md in both the deterministic workflow gate and the prose denylist.
  • Updated core docs/index/wiki entries to reflect the new self-improvement axis and tightened a few related operational rules.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
CLAUDE.md Documents /improve-skills, adds commit/push restraint, and removes the dangling /plan reference.
.claude/workflows/loop-iteration.js Adds denylist protection for .claude/ and CLAUDE.md to prevent autonomous self-modification.
.claude/workflows/improve-skills.js New meta-critic workflow that fans out reviewers per lens and adversarially verifies findings before proposing edits.
.claude/skills-index.md Adds /improve-skills to intent routing and the command table.
.claude/memory/topics/workflow.md Updates workflow documentation to include /improve-skills and the two-axis verification principle.
.claude/memory/log.md Records the new self-improvement axis and the denylist hardening lesson in the memory log.
.claude/loop.md Adds fail-safe defaults (cap/level/task) and expands denylist to include prompt surface.
.claude/commands/write-goal.md Removes /plan reference and instructs to outline plans inline.
.claude/commands/multi-agent-dev.md Tightens completion gates to explicitly require typecheck/lint/unit tests (and build when warranted).
.claude/commands/improve-skills.md New manual-only command wrapper for running and applying confirmed /improve-skills edits.
.claude/commands/fix-localhost.md Clarifies this command is intentionally single-agent; points to /critic-round if a full workflow review is needed.
.claude/commands/dream.md Requires explicit confirmation before applying any CLAUDE.md edits proposed during /dream.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread CLAUDE.md
Comment on lines 55 to 59
**Three ways to get there:** (a) describe the outcome and ask for the `/goal`;
(b) `/plan` first, then convert the plan into a `/goal`; (c) context-dump
(b) outline the plan inline first (steps + files touched), then convert it into a
`/goal`; (c) context-dump
(`CLAUDE.md`, the memory wiki, the docs story map) and ask which `/goal`s are worth
building. Triggers: "write me the `/goal` for this", "turn this into a `/loop`",
Comment thread CLAUDE.md
- After fixing, run the smallest relevant test first, then the full verification command.
- Commit or push only when the user explicitly asks. Never commit/push as a side
effect of completing a task; `git commit`/`git add` being pre-allowed in
`settings.local.json` is a convenience, not a license to commit unprompted. If on
// Actionable = the problem is real. `applyReady` additionally requires the edit to be
// verified safe — the caller applies those first and treats real-but-not-editSafe
// findings as "needs a human-designed fix".
const confirmed = settled.filter((f) => f.real !== false)
Comment on lines +41 to +42
6. When an edit changes a command or workflow, keep `.claude/skills-index.md` and any
affected memory wiki page in sync (additive index updates need no confirmation).
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.

3 participants