Skip to content
Back to skills

067 Reframe

ASecurity

<!-- jig self-defining vocabulary (soft, forward-only): expand each acronym on first use and link the term to docs/memory/glossary.md (or jig's lexicon). See docs/workflow.md "Self-defining vocabulary". --> <!-- jig grounding (spec 064-02 / ADR-0020): ground factual claims about runnable surfaces by probe first (run it / read source) or a citation, else mark them as assumptions in the spec's `## Assumptions` section — never assert an unverified claim as fact. -->

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 4, 2026
ai-agentsgogit

Security analysis

A100/100

Pro scans all 16 files and shows the line behind each finding

Scanned September 4, 2026

npx -y skills add ramboz/jig --skill 067-reframe --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 067 Reframe?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 067 Reframe
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ramboz-067-reframe/badge)](https://www.skillsdirectory.com/skills/ramboz-067-reframe)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
status: DONE
dependencies: [adr-0024]
last_verified: 2026-07-02
arch_review: true   # adds a new public skill — a new external surface in the
#                     plugin (tier tables + CLAUDE.md Skills table).
frame_review: true  # the binding risk (ADR-0024 §Assumptions §4) is enumeration
#                     completeness over *settled* premises; the pre-implementation
#                     pass pressure-tests whether the SKILL.md makes a weak
#                     coverage statement visible rather than rubber-stampable.
---

<!-- jig self-defining vocabulary (soft, forward-only): expand each acronym on
     first use and link the term to docs/memory/glossary.md (or jig's lexicon).
     See docs/workflow.md "Self-defining vocabulary". -->

<!-- jig grounding (spec 064-02 / ADR-0020): ground factual claims about
     runnable surfaces by probe first (run it / read source) or a citation,
     else mark them as assumptions in the spec's `## Assumptions` section —
     never assert an unverified claim as fact. -->

## Slice 067-01 — The `/jig:reframe` skill: keystone ADR + dispositions

**Goal:** A user who has recognized that a load-bearing reference moved can run
`/jig:reframe <new-reference>` and get a drafted **keystone reframe-ADR** — the
new reference declared authoritative as of `<date>`, the old premise superseded,
and a **re-baselining manifest** assigning every affected artifact a deliberate
disposition plus an explicit **coverage statement** — so the corpus is
re-baselined through one named operation instead of patched at the edges.

**DoR:**
- ✅ [ADR-0024](../../decisions/adr-0024-reference-reframe.md) **accepted**
  (Proposed→Accepted) — the capability is ratified before it is built.
- ✅ The judgment-skill pattern is proven (`/jig:clarify`, `/jig:explain` —
  SKILL.md, no `.py` helper).
- ✅ `adr.py new` reserves + scaffolds an ADR that rides the frame-critique-gated
  `accept` flow (*probed:* `_gate_frame_critique()` refuses Proposed→Accepted
  without a passing verdict).
- ✅ The disposition vocabulary + keystone-ADR / manifest shape are specified in
  ADR-0024 §3.
- ✅ The registration surfaces are known (three tier tables + CLAUDE.md Skills
  row + the pinned-tier-set guards — spec 065-03 lesson; see the spec's Design
  notes).

**Acceptance Criteria:**

1. **The skill is registered and discoverable.** `skills/reframe/SKILL.md`
   exists, is wired into the three tier tables (`scaffold.py`,
   `install_contract.py`, `scaffold_contract.py` — Tier-1), stays **discoverable
   from the root `CLAUDE.md` primer** (a named `/jig:reframe` mention — post
   [spec 076](../076-lean-primer/spec.md) the heavy per-skill "Skills in this repo"
   table was replaced by the host-surfaces-skills pointer + the hot-cache index, so
   discoverability is a *named mention*, not a table row), and passes
   `validate_manifests.py`. Its description declares both invocation styles (auto +
   explicit) and that it re-baselines the corpus onto a moved load-bearing
   reference.
2. **It takes a new reference and reads the corpus against it.** The SKILL.md
   specifies the input (a named/located new reference — e.g. a dropped-in design
   artifact, a new contract) and that the skill reads the **accepted corpus
   (decisions + prose)** against it as the basis for drafting. It states
   explicitly that this is **not** a `## Assumptions` sweep (risk-gated; blind to
   settled premises) and **not** a built corpus-walker (parked, ADR-0024 §7).
3. **It drafts the keystone reframe-ADR through the real ADR lifecycle.** The
   SKILL.md specifies the skill reserves + scaffolds the keystone ADR via
   `adr.py new` (so it inherits the frame-critique `accept` gate) and authors its
   body: the new reference declared **authoritative as of `<date>`**, the old
   premise **superseded**, and the **re-baselining manifest**.
4. **The manifest assigns every affected artifact a disposition — no `TBD`.** The
   SKILL.md specifies the manifest is a table of affected artifacts, each tagged
   `reaffirm` / `amend` / `supersede` / `retire-draft` / `retrofit` / `rewrite`
   (the last for live non-record prose), each routing to the named existing
   operation per [ADR-0024](../../decisions/adr-0024-reference-reframe.md) §3.
   `retire-draft` items are surfaced **first** (drafts on the dead premise mint
   dead-premise work). Net-new forward work the reframe *spawns* (not a
   disposition of an existing artifact) is recorded in a separate
   **`## Emergent work`** section, not forced into a disposition row.
5. **The manifest carries a two-level coverage floor.** The SKILL.md requires the
   keystone ADR's coverage statement to take the form of a **coverage floor**
   ([ADR-0024](../../decisions/adr-0024-reference-reframe.md) §2–§3), not free
   text: **(L1)** a per-class walk of the corpus's deterministically-listable
   **top-level artifact classes** (`docs/decisions/`, `docs/specs/`, live-prose
   docs under the docs root, `skills/*/SKILL.md`, the root primer(s), `README`),
   each marked `scanned` or `excused (reason)`; **(L2)** for each class the
   reference actually **touches**, an **artifact-level** enumeration of that class
   plus the **method** used to decide which artifacts encode the dead premise; plus
   the overall **residual uncertainty**. L1 makes a whole-class drop visible; L2
   makes an **intra-class** miss visible (the motivating failure's shape — a
   dead-premise file inside a class L1 alone would mark `scanned`). The floor is
   *asserted, not assumed*: an omission must be written down as a visible per-class
   (and, for touched classes, per-artifact) fate, so the human confirms coverage at
   the `accept` frame-critique gate rather than rubber-stamping a silent omission.
   The SKILL.md states plainly that the floor **reduces and surfaces** the
   enumeration risk but does **not** eliminate it (untouched-class misscoping;
   within-class miss; rubber-stamped `excused`), with T1 (ADR-0024 §7) the
   backstop. (This is the slice's binding risk; see `frame_review`.)
6. **Judgment-only, no helper.** No `.py` is added for reframe; the corpus read
   and drafting happen via Read + the existing `adr.py` / `workflow.py`
   scaffolding.
7. **Defers to a richer installed skill.** Per the jig baseline pattern, the
   description defers to any installed skill that identifies itself as project
   re-baselining / migrating-onto-a-new-reference — preferring it over this
   baseline (and not the generic built-in).

_Testability note (accepted gap): ACs 1, 6, 7 and the **shape** assertions of
3–5 (the SKILL.md specifies the keystone-ADR-via-`adr.py new` flow, the
disposition vocabulary, and the two-level coverage-floor requirement — L1's
top-level classes named + L2's within-touched-class artifact read) are structural
and unit-tested. The **quality** of the corpus read (AC2) and the honesty of a
given coverage floor (the substance of AC5) are judgment, exercised by the skill
prompt and the `accept` frame-critique gate — not a unit test (the same accepted
shape as every judgment-only jig skill). The slice's `frame_review` pass is the
pre-implementation pressure-test on that coverage framing._

**DoD:**
- [x] All ACs pass; full test suite green (manifest validation included). — 3135
      tests, OK (9 skipped); ruff clean (whole repo, ruff==0.15.16).
- [x] Coverage: `validate_manifests.py` passes with the new skill; a test asserts
      the SKILL.md declares the operation, the keystone-ADR-via-`adr.py new`
      flow, the disposition vocabulary, the two-level coverage-floor requirement
      (L1 top-level classes named + L2 within-touched-class read), the no-helper
      contract, and the deferral language; `/jig:reframe` stays discoverable in the
      root `CLAUDE.md` primer (post-spec-076: a named mention, not a per-skill
      table row — see AC1); the three tier tables + the pinned-tier-set guards are
      updated. — `skills/reframe/test_reframe_skill_surface.py` (33 tests).
- [x] Reviewed by `reviewer` subagent. Reviewer prompt built by `review.py`.
- [x] Frame-critique pass recorded **pre-implementation** (slice declares
      `frame_review: true`); gates READY_FOR_REVIEW per spec 064-03; verdict at
      `reviews/slice-01-frame-critique.md`. — verdict: pass.
- [x] Implementation (compliance) review passed. — verdict: pass.
- [x] Craft (pr-review) pass run; blockers addressed. — verdict: pass; 2 nits
      folded in (below).
- [x] Arch (arch-review) pass run (slice declares `arch_review: true`); blockers
      addressed. — verdict: pass; 1 nit folded in (below).
- [x] Deviation log produced under this slice heading.
- [x] Reconciliation review passed. — verdict: pass; the one finding (stale README
      Tier-1 subtotal) was fixed during reconciliation (deviation-log #8).
- [x] `docs/refinement-todo.md` updated if any decisions were deferred. — no new
      deferrals (systematic detection already parked in ADR-0024 §7 / spec 067).

**Anti-horizontal-phasing check:** After this slice, a user with a moved
load-bearing reference runs `/jig:reframe <reference>` and gets a complete,
accept-ready keystone ADR — new reference authoritative, old premise superseded,
every affected artifact dispositioned, coverage stated — a usable re-baseline
primitive a competent session can execute by hand, not a stub.

### Close-out (post-DONE)

- [ ] `docs/specs/README.md` regenerated by `workflow.py status-board`. Notes
      column records: `/jig:reframe` = corpus-read → keystone reframe-ADR
      (manifest + 6-disposition vocab incl. `rewrite` + two-level coverage floor)
      via `adr.py new`; judgment-only, Tier-1; frame-critique-gated keystone.
- [ ] `CLAUDE.md` hygiene per spec 025-01: keep `/jig:reframe` discoverable in the
      primer — post-[spec 076](../076-lean-primer/spec.md) that is a **named
      hot-cache-index mention**, not a per-skill Skills-table row (spec 076 removed
      that table). Leave the Active-specs entry until the closing slice (067-03).

### Deviation log (after reconciliation)

The original spec is preserved above. Implementation notes:

1. **ADR-0024 was hardened before acceptance (frame-critique-driven).** The
   keystone ADR this slice depends on took **two rounds of `needs-changes`**
   before `pass`: round 1 re-scoped the coverage statement from "owns the risk"
   to a **coverage floor** + "reduces and surfaces"; round 2 made the floor
   **two-level** (L1 class + L2 within-touched artifact) to catch the
   *intra-class* miss (the motivating failure's shape), gave **T1** a
   two-pronged evidence source (accept-time floor **or** post-reframe
   discovery), and marked the *correction > noticing* ordering an explicit n=1
   assumption with a kill criterion. Spec 067 + slice-01 (Goal #4, Design notes,
   AC5, testability note) were propagated to match the **accepted** ADR *before*
   the slice frame-critique ran — so the slice frame-critique (pass) evaluated a
   frame already consistent with the ratified decision.

2. **AC1 was corrected for the post-spec-076 world (the plan pre-dated the lean
   primer).** The original AC1 + Close-out required a "row in the root CLAUDE.md
   'Skills in this repo' table." [Spec 076](../076-lean-primer/spec.md) removed
   that per-skill table (the host surfaces every skill each session; CLAUDE.md is
   capped at 70 lines / 14 KiB). Discoverability was therefore delivered as a
   **named hot-cache-index mention** — extending the existing catch-all index line
   in **both** `CLAUDE.md` and `AGENTS.md` (parity; each stays within budget) — plus
   a `docs/memory/glossary.md` **Reframe** entry so `/jig:explain reframe`
   resolves. AC1 and the Close-out were corrected to describe this. *Dogfood
   note:* the stale "Skills table" AC is itself a small instance of the
   reference-moved / spec-encodes-the-old-shape problem `/jig:reframe` exists to
   fix.

3. **Open questions resolved as-planned (confirmations, not deviations).**
   (a) the re-baselining manifest lives **inline** in the keystone ADR (spec
   Open-questions lean); (b) `/jig:reframe` is **draft-on-invoke only** — no
   report-only mode shipped; not-locatable → refuse + ask; no-op → "nothing to
   re-baseline" (Clarification Q1). Both are documented in the SKILL.md.

4. **Frame-critique non-blocking note folded in.** The slice frame-critique
   (pass) flagged that the L1 class list is *jig-corpus-shaped*; a one-line
   maintenance note was added to the SKILL.md (revisit L1 if a downstream corpus
   grows a new top-level class or uses a configurable docs root — adjacent to the
   T2 trigger and [ADR-0033](../../decisions/adr-0033-configurable-docs-root.md)).

5. **Reviewer nits folded in (all three passes `pass`, no blockers).**
   Arch [nit]: added a one-line clarification that L1 covers the
   **authority-bearing corpus**, not the code tree (shipped code → `retrofit`
   specs). Craft [nit]s: corrected the slice Close-out "5-disposition" →
   "6-disposition (incl. `rewrite`)" and the stale "Skills table row" reference.
   Log-only nits (no change needed): the long frontmatter description (a
   deliberate jig auto-trigger convention, required by the trigger-phrase /
   deferral / do-not-use test assertions) and the forward-references to unbuilt
   sibling slices 067-02 / 067-03 (standard jig cross-slice linking).

6. **All registration surfaces updated (the spec 065-03 "miss one surface"
   lesson).** `reframe` added to: `scaffold._TIER_SKILLS` (source of truth),
   `install_contract.EXPECTED_SKILLS`, `scaffold_contract._TIER_SKILLS`,
   `test_scaffold.EXPECTED_TIER_1`, `test_migrate.TIER1`, `product-vision.md`
   (12 Tier 1 / 19 skills + item 19), the `vision-elicitation` worked-example tier
   line, `docs/memory/glossary.md` (Tier-1 roster + a Reframe entry), `README.md`
   (19 skills), and the `CLAUDE.md` + `AGENTS.md` hot-cache index. `hosts/`
   regenerated via `build_host_packages.py`; `--check` reports in sync.

7. **Plan adherence.** Judgment-only, **no `reframe.py`** (AC6, pinned by
   `test_no_reframe_py`). Vertical slice: a user with a moved reference gets a
   complete, accept-ready keystone ADR (manifest + 6-disposition vocabulary +
   two-level coverage floor). Pre-implementation frame-critique + compliance +
   craft + arch all `pass`. Full suite green (3135 tests, OK/9 skipped); ruff
   clean (whole repo, `ruff==0.15.16`).

8. **Reconciliation review caught a missed count.** The reconciliation reviewer
   flagged that `README.md:33` still read "7 Tier 0 + 11 more (Tier 1)" after this
   slice made Tier 1 = 12 — an internal contradiction with README's own "all 19
   skills" (7 + 11 = 18). Fixed the subtotal to **12** and regenerated the
   `hosts/claude/README.md` mirror (`--check` back in sync). The reviewer's other
   note — now-stale status prose in the `docs/inbox.md` `reframe/occurrence-3`
   entry ("067-01 is DRAFT … ADR-0024 still Proposed") — is legitimately deferred
   to spec close (067-03) per the sweep's inbox disposition, not silent drift.

### Reconciliation sweep

Drift-prone surfaces checked (`updated` / `no-op` / `deferred`):

- **Tier-registration surfaces** — `updated`. Source table + both mirror contracts
  + both pinned-tier guards + product-vision inventory/count + worked-example tier
  line all carry `reframe`; lockstep tests green.
- **Host packages (`hosts/claude`, `hosts/codex`)** — `updated`. Regenerated;
  `build_host_packages.py --check` in sync.
- **Root primers (`CLAUDE.md`, `AGENTS.md`)** — `updated`. Reframe added to the
  hot-cache index line in **both** (parity), each within the spec-076 budget.
- **`docs/memory/glossary.md`** — `updated`. Tier-1 roster + a `## Reframe` term
  entry (so `/jig:explain reframe` resolves).
- **`docs/product-vision.md` / `worked-example-jig.md` / `README.md`** — `updated`
  (counts + inventory). *Reconciliation review caught* a stale README Tier-1
  subtotal (line 33 "11 more" → **12**; it contradicted "all 19 skills") — fixed,
  `hosts/claude/README.md` mirror regenerated (deviation-log #8).
- **`docs/decisions/README.md` (ADR index)** — `updated` (reindexed on ADR-0024
  `accept`).
- **`docs/architecture.md`** — `no-op`. No module-boundary change: reframe adds no
  `.py`, no subagent, no hook (arch review confirmed boundaries preserved).
- **`docs/workflow.md`** — `deferred` to slice **067-03** (the noticing-nudge
  standing practice is 067-03's deliverable).
- **`docs/refinement-todo.md`** — `no-op`. No new deferrals; systematic detection
  is already parked in [ADR-0024](../../decisions/adr-0024-reference-reframe.md) §7
  (triggers T1/T2/T3).
- **`docs/inbox.md`** — `deferred` to spec close (067-03). The three
  `reframe/occurrence-*` entries are the **live T1/T2/T3 trigger-watch evidence
  ledger** (n=1 Android / n=2 servo / n=3 ASV) and the "demand-pull to accept
  ADR-0024 + build 067-01" meta-signal being satisfied here — they stay as
  evidence, not struck.
- **Lightweight decisions (`docs/decisions/lightweight-decisions.md`)** — `no-op`.
  No non-spec UI/visual/brand decisions were settled.
- **`docs/conventions.md`** — `no-op`. No rule introduced or changed.
- **Memory-sync** — a session learning (the frame-critique-driven two-level-floor
  hardening) is captured in this deviation log; no new glossary/lexicon term beyond
  the Reframe entry already added.

Files in this skill

  • reviews/slice-01-arch.md2.2 KB
  • reviews/slice-01-compliance.md1.7 KB
  • reviews/slice-01-craft.md2 KB
  • reviews/slice-01-frame-critique.md1.9 KB
  • reviews/slice-01-reconciliation.md2.1 KB
  • reviews/slice-02-compliance.md1.3 KB
  • reviews/slice-02-craft.md1.9 KB
  • reviews/slice-02-reconciliation.md1.4 KB
  • reviews/slice-03-compliance.md1.9 KB
  • reviews/slice-03-craft.md2.3 KB
  • reviews/slice-03-reconciliation.md1.5 KB
  • slice-01-reframe-skill.md17.1 KB
  • slice-02-retrofit-spec-drafts.md7.6 KB
  • slice-03-noticing-nudge.md9.4 KB
  • spec.md18.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.