Skip to main content
skill CX Codex

meta-apply — Claude Code skill: what it does, how to install

Applies approved self-modification patches to the skill corpus after independent model jury review. Runs only when explicitly invoked by a human.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill meta-apply -a claude-code
Open on GitHub

What meta-apply does

This skill establishes a strict privilege boundary during agent optimization. Upstream producers like /meta-optimize operate strictly in read-only mode and stage candidate diffs in .aris/meta/pending/. No producer can land its own changes. Real corpus modifications happen only through meta-apply.

Before writing any changes, the skill initiates a fresh cross-model jury via mcp__codex__codex with paths-only context. It ignores pre-screen verdicts in the producer manifest because manifests can be forged. The helper script provenance.py ensures the reviewer belongs to a different model family than the author. If the jury issues a KILL verdict or model families match, landing halts immediately.

Operation requires reviewer MCP tools and the provenance.py helper in your path. The skill backs up target files to .aris/meta/backups/, applies changes with Write or Edit, and stamps provenance metadata. Direct corpus edits via Bash are blocked by design.

What it helps with

  • prevent unauthorized self-modification loops from mutating skill files
  • verify staged diff patches through an independent cross-model jury
  • enforce cross-family model separation between patch author and reviewer
  • record provenance receipts and backups before altering the skill corpus

Example prompts for the agent

  • /meta-apply 1,3
  • land the staged patches
  • /meta-apply all

How to install meta-apply

1Skills CLI (Vercel)

npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill meta-apply -a claude-code

2Manually: put the files in place

~/.claude/skills/meta-apply/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/meta-apply/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about meta-apply

How do I install meta-apply in Claude Code?

Run npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill meta-apply -a claude-code in your terminal.

What is the purpose of meta-apply?

It serves as the privileged landing gate for staged patches, ensuring producer tools cannot directly edit the skill corpus.

What happens if the jury rejects a patch?

If the reviewer returns a KILL verdict, the patch is refused immediately, and human overrides are not permitted.

Source text

SKILL.md · MIT
---
name: meta-apply
description: "Privileged applier that LANDS meta-optimize / corpus-audit patches the user approved — the ONLY skill permitted to mutate the skill corpus from a self-modification proposal, with cross-model jury and human approval at landing. Use when the user says \"meta apply\", \"/meta-apply\", \"land the staged patches\", \"应用优化\", after a /meta-optimize run."
argument-hint: "[patch-number-or-all]"
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, mcp__codex__codex, mcp__codex__codex-reply, mcp__antigravity__antigravity, mcp__antigravity__antigravity-reply, mcp__grok__grok, mcp__grok__grok-reply, mcp__claude-review__review, mcp__claude-review__review_reply, mcp__claude-review__review_start, mcp__claude-review__review_reply_start, mcp__claude-review__review_status
---

# Meta-Apply: the privileged landing gate for self-modification patches

> **Before each reviewer slot**, follow [Selectable Reviewers](../shared-references/reviewer-backends.md):
> resolve invocation → `.aris/reviewer.json` → Claude Code default (Codex MCP)
> with `reviewer_route.py` through the canonical helper resolver, preserving this
> slot's tier, fresh contexts, source/image inputs and deterministic gates.
> Codex examples/pins below apply only to `backend=codex`; other routes use their
> own first-call/reply contract. Save the route and actual returned identity;
> unavailable selections are `REVIEW_UNAVAILABLE`. Classify acceptance from actual
> families/completion/scope. Forward invocation reviewer/model/effort overrides
> to reviewer-bearing children. Generation workers are unchanged.


This skill exists to enforce a **privilege boundary**. Producers like
[`/meta-optimize`](../meta-optimize/SKILL.md) (and, later, `corpus-audit`) are
**read-only** — no `Write`/`Edit`, no apply step; they can only *stage* candidate patches
under `.aris/meta/pending/`. **This skill is the only place a staged patch becomes a real
change to the corpus.** Splitting "propose" from "land" across two skills with different
tool grants is what makes "a loop cannot apply its own patch" structural rather than a
sentence the producer is asked to obey.

It is **human-invoked only.** It runs when the user explicitly types `/meta-apply` after
reading the producer's REPORT. That invocation IS the landing authorization (the locked
2026-05-30 decision: the human stays at the landing gate).

## The acquittal is generated HERE, not relayed

The earlier design trusted a `jury_verdict: pass` field in the producer's manifest. That
is **forgeable** — the producer writes that field, so a buggy/misaligned producer could
stage a killed patch labelled "pass." **So this skill does not trust any producer-written
verdict.** It runs the cross-model jury **itself, at landing time, on the actual staged
diff** (fresh thread, paths-only). The verdict is produced where it is consumed, by the
privileged human-invoked skill — nothing to forge.

## The non-negotiable rules (jury-at-landing, reject-default)

For each staged patch the user asks to land, in order — any failure ⇒ skip & report,
never silently apply:

1. **The human named THIS patch.** Apply only patches the user listed (`/meta-apply 1,3`
   or `all`); default to applying nothing.
2. **Fresh cross-model jury PASS, obtained now.** Run `mcp__codex__codex` (fresh thread,
   NOT codex-reply; `model: gpt-6-astra`, `config: {"model_reasoning_effort": "ultra"}`, `sandbox: read-only`,
   paths-only per [`reviewer-independence.md`](../shared-references/reviewer-independence.md))
   on the staged `.diff` + its target. Ask: *does this change improve the harness without
   regressions; PASS or KILL + one-line reason.* Include the scope-limits block from
   [`review-scope-limits.md`](../shared-references/review-scope-limits.md) in that prompt:
   this jury judges ARIS's own mechanism, so an over-defensive KILL permanently blocks a
   good patch. Note the block bans *proposing new* hash binding — it is not a reason to
   KILL a patch that touches the existing provenance stamp. **KILL ⇒ refuse.** The human
   cannot override a KILL — they may only pick among jury-PASSED survivors. (A loop can
   DRIVE; only the cross-model jury can ACQUIT.)
3. **Author ≠ reviewer family.** The author is the producer's executor model; the reviewer
   is the actual returned model that just judged it. Run `provenance.py assert_cross_family` — if it
   raises (same family / unknown), refuse. Use actual author/reviewer identities, never infer the family from
   the host or transport. This strict landing gate remains mandatory.

## Workflow

### Step 0: Load staging + resolve the helper

```bash
PENDING=".aris/meta/pending"
[ -d "$PENDING" ] || { echo "Nothing staged. Run /meta-optimize first."; exit 0; }
echo "Staged:"; cat "$PENDING/manifest.jsonl"
```

Resolve `provenance.py` via the 4-layer chain in
[`integration-contract.md`](../shared-references/integration-contract.md) §2
(`.aris/tools/` → `tools/` → `$ARIS_REPO/tools/` → `$ARIS_REPO/tools/` via
`~/.aris/repo`).

### Step 1: Jury-at-landing for each requested patch

For every patch the user asked to land, read its staged `.diff` and target, then run the
fresh codex jury (Rule 2) — paths-only, no producer reasoning, no prior-round context.
Record `{patch, jury_verdict, jury_thread_id, one_line_reason}`. Print a one-line result
per patch (`PASS → eligible` / `KILL → refused: <reason>`).

> The producer may have written an *advisory* pre-screen into the manifest to help the
> human read the REPORT — **ignore it for the landing decision.** Only this fresh verdict
> counts.

### Step 2: Land the survivors (Write/Edit only — never Bash)

For each patch that PASSED Step 1 **and** was named by the user:

1. **Back up** the target to `.aris/meta/backups/<date>/<target>` (use the **Write** tool
   to copy contents; corpus paths are not Bash-writable when `corpus_write_guard` is
   active — and the applier should use Write/Edit for corpus mutation anyway).
2. **Apply** the diff by **Edit/Write** on the target corpus file.
3. **Stamp provenance** on the changed file:
   ```bash
   python3 "$PROVENANCE" stamp "$TARGET" --author "$AUTHOR" \
     --reviewer "$JURY_MODEL" --verdict-id "$JURY_THREAD_ID"
   ```
   `stamp()` re-asserts cross-family and refuses on same-family — the structural backstop
   at the moment the authorization record is written. The stamp is a **process receipt**
   (who authored, who acquitted-at-landing, content hash) — NOT a claim the change is
   correct.
4. **Log** to `.aris/meta/optimizations.jsonl`:
   `{ts, patch, target, author_model, reviewer_model, jury_thread_id, applied: true}`.

### Step 3: Report

Per patch: `LANDED <target>` (+ backup path + provenance sidecar) or
`REFUSED <patch>: <reason>`. Remove landed patches from `.aris/meta/pending/`. Remind the
user a landed patch is revertable from its backup, and to test the changed skill next run.

## Provenance is a receipt, not an acquittal of correctness

A stamp records that a change passed *a process* (cross-model jury at landing + human
landing), not that it is *correct*. To prevent "approved-but-wrong with a stamp that
vouches for it" (false-authority laundering — worse than no stamp, because a later
auto-curator reads it as evidence):

- The stamp carries `verdict_id` (auditable review) + `content_hash` (a later hand-edit
  invalidates it).
- **Recommended (not yet built):** a TTL forcing re-review of long-lived auto-authored
  artifacts, and a behavioral auditor that REVOKES a stamp when a landed skill misbehaves.
  Track as follow-up; never treat a stamp as permanent truth.

## Key Rules

- **Human-invoked only.** Never run as a side-effect of another skill or a hook.
- **Jury-at-landing, reject-default, no override.** The binding verdict is produced HERE
  on the staged diff; never trust a producer-written verdict; the human picks among
  survivors, never resurrects a KILL.
- **Cross-family or refuse.** `assert_cross_family` must not raise. A
  `deterministic:<verifier>` reviewer is valid per skill-governance.md.
- **Corpus mutation goes through Write/Edit** (reviewable, attributable), not Bash. The
  `corpus_write_guard` hook (if installed) additionally denies Bash corpus writes — it
  does NOT gate Write/Edit, so it does not by itself stop this skill from editing the
  corpus; the jury-at-landing + stamp discipline above is what governs Write/Edit
  mutations (that discipline is procedure, not a hook-enforced mechanism).
- **Back up before every mutation.** Reversible by construction.
- **Only land staged patches.** Applies what producers staged in `.aris/meta/pending/`;
  invents nothing of its own.

## Review Tracing

Save each landing-jury codex call's trace per
[`review-tracing.md`](../shared-references/review-tracing.md) to
`.aris/traces/meta-apply/<date>_run<NN>/` — the acquittal that landed a corpus change must
be forensically recoverable.

© wanshuiyin · MIT · wanshuiyin/Auto-claude-code-research-in-sleep

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set78

slides-polish This skill runs a page-by-page review over a finished deck and fixes fonts, text-frame overflow and layout drift. Handy when the slides are nearly done but look uneven. CX Codex +1 407installs gemini-search Searches research papers through Gemini by decomposing topics into sub-problems and aliases. Useful when standard keyword queries miss relevant literature. CX Codex +1 407installs resubmit-pipeline Orchestrates a text-only resubmission of an academic paper to a new venue based on prior reviews. Adapts the draft under strict formatting constraints without running new experiments. CX Codex +1 396installs render-html Turns ARIS Markdown and JSON artifacts into a single HTML file meant for human eyes. Useful when a report has to be read, not parsed. CX Codex +1 369installs interview-cheatsheet Creates long-form Chinese interview cheat sheets on ML and LLM topics, complete with formulas, PyTorch code, and 25 questions. CX Codex +1 359installs comm-lit-review Searches and synthesizes communications and networking research. It checks your local Zotero library and project PDFs before querying IEEE Xplore and ScienceDirect. CX Codex +1 349installs wiki-enrich Fills the TODO sections on paper pages in research-wiki/papers/ that literature-ingest skills leave behind as bare scaffolds. CX Codex +1 335installs paper-poster-html Builds academic conference posters as a single HTML file and renders print-ready PDFs using headless Chromium. Helpful for researchers preparing posters for ICLR, NeurIPS, ICML, and CVPR. CX Codex +1 311installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor