Screaming Reefs
Turn a verified invisible reef into a visible cliff: give a documented
constraint a structural owner the affected reader cannot miss.
- Invisible reef — the material hidden cause and consequence behind a documented
constraint: what makes an apparently reasonable local action unsafe.
- Visible cliff — meaning already visible and safely recoverable from the
reader's local context: code, names, types, signatures, structure.
- Readback — re-reading the changed decision with only the affected
reader's genuinely available context (a file, diff, symbol, or search
entry — not the full repository) and confirming the constraint, the safe
action, and the protected boundary are recoverable from it.
Authorization test
Authorized scope is the requested outcome plus the files, symbols, contracts,
and behavior changes explicitly named or unambiguously required to achieve it.
Everything else — including adjacent behavior, public contracts, generated
outputs, paths, and ownership — is preserved by default.
Discovery is not authorization: a clarity opportunity reported by a
documentation pass, a reviewer note, or this skill's own analysis
authorizes nothing by itself. When the smallest sufficient owner exceeds
the authorized scope, stop and return NEEDS-HUMAN-DECISION naming the
wider scope; never widen silently.
Freeze the reef
Read the affected code, names, types, exports, tests, configuration,
callers, and nearby documentation before choosing a shape.
Write a compact evidence record for the current state:
Constraint: [what must remain true]
Evidence: [source, test, contract, history, or explicit decision]
Unsafe inference: [what a reader could reasonably do incorrectly]
Authorized scope: [files, symbols, topology, allowed behavior change]
Readback: [what will show the constraint is visible and preserved]
Preserve the shortest verified X because Y before editing. An
unexplained constraint is a Chesterton's Fence: search history,
callers, tests, and neighboring invariants for its reason. If evidence
is still absent or conflicting, return BLOCK and keep the existing
explanation.
Choose the visible owner
Select the smallest stable structure that carries the constraint for
every affected reader:
| Constraint becomes visible as |
When it is the right owner |
| Domain names and vocabulary |
Readers must recognize a concept or responsibility that callers currently infer. |
| Types, states, invariants, constructors |
An invalid state or unsafe transition should be difficult or impossible to express. |
| API shape, exports, routes, capability boundaries |
Callers need a contract that a warning cannot reliably deliver. |
| Module, package, or ownership boundaries |
Responsibility is being inferred from organizational memory instead of the tree. |
| Filesystem topology |
Discovery, selective loading, or agent context depends on where the truth lives. |
| Canonical local context documentation |
A durable repository convention where the reader's route guarantees receipt before acting: the document governs the decision's directory (AGENTS.md, package README) or is loaded by the agent's context rules. A symbol-, diff-, or search-entry reader does not receive it and needs a structural or code-local owner. |
Prefer the narrowest owner that reaches every affected reader. Do not
redesign adjacent architecture, rename unrelated concepts, move files to
make the tree look orderly, or change structure solely to delete a living
local explanation. If the significance is irreducibly non-local, keep the
explanation and return NO-OP.
Make the change
- Recheck the chosen owner against the frozen authorized scope; a
breaking change to behavior, a public contract, a generated output, a
path, or ownership requires explicit authority.
- Apply the smallest structural change that makes the constraint
selectable from local context. Update tests, generated artifacts,
imports, exports, and repository-native indexes only when the change
requires them; repository-native indexes are generated or convention-bound
listings such as barrel exports, route tables, codeowners, and manifests.
Keep unrelated cleanup out of the diff.
- Give the changed local context to a fresh reader with no drafting history:
an isolated subagent or new session that receives only the artifact named in
the Readback field. It must recover the constraint, safe action, and
protected boundary without the evidence record or producer explanation. If
it cannot, retain the prose, restore the working tree to the pre-edit state,
keep the rejected patch out of the deliverable (for example as an unapplied
diff or unmerged branch), and return
BLOCK naming any file the restore
could not safely revert.
Retire only redundant prose
After a fresh-context readback passes, delete a sentence when its meaning is fully
carried by the changed structure or by canonical local context the
affected reader actually receives. Retain the causal edge structure still
cannot express — the remote cause, consequence, failure mode, ownership
relationship, or external contract — phrased at the stable contract edge
that stays true while the remote implementation changes. Update nearby
prose the change makes false; do not replace a reef with a vague summary.
Verify and return
Run the repository-native formatter, typecheck, lint, tests, generators,
and documentation checks covering the changed surface. Confirm the
constraint has a structural owner, a fresh-context readback passes for every
affected reader context the change touches (file, diff, symbol, or search
entry), behavior and public contracts match the authorized scope, no
stale names, imports, paths, or duplicate instructions remain, and the
diff contains no unauthorized files.
Whichever section produced the outcome, including an early NO-OP or BLOCK,
end here: emit the evidence record and one return code as the last line of the
wrap-up report and any PR description:
PASS — an authorized structural change made the constraint locally
visible, preserved, and covered by the checks above.
NO-OP — structure already exposes the meaning, or the reef is
irreducibly non-local and stays documented.
BLOCK — evidence, checks, or the readback fail to establish the
constraint.
NEEDS-HUMAN-DECISION — authority, ownership, scope, or a breaking
contract choice is unresolved.
1---2name: screaming-reefs3description: Use when an authorized change should enforce a documented constraint through names, types, API shape, or structure—for example replacing a warning comment with a checked owner; not when prose must remain the only owner.4---56# Screaming Reefs78Turn a verified **invisible reef** into a **visible cliff**: give a documented9constraint a structural owner the affected reader cannot miss.1011- **Invisible reef** — the material hidden cause and consequence behind a documented12 constraint: what makes an apparently reasonable local action unsafe.13- **Visible cliff** — meaning already visible and safely recoverable from the14 reader's local context: code, names, types, signatures, structure.15- **Readback** — re-reading the changed decision with only the affected16 reader's genuinely available context (a file, diff, symbol, or search17 entry — not the full repository) and confirming the constraint, the safe18 action, and the protected boundary are recoverable from it.1920## Authorization test2122Authorized scope is the requested outcome plus the files, symbols, contracts,23and behavior changes explicitly named or unambiguously required to achieve it.24Everything else — including adjacent behavior, public contracts, generated25outputs, paths, and ownership — is preserved by default.2627Discovery is not authorization: a clarity opportunity reported by a28documentation pass, a reviewer note, or this skill's own analysis29authorizes nothing by itself. When the smallest sufficient owner exceeds30the authorized scope, stop and return `NEEDS-HUMAN-DECISION` naming the31wider scope; never widen silently.3233## Freeze the reef34351. Read the affected code, names, types, exports, tests, configuration,36 callers, and nearby documentation before choosing a shape.372. Write a compact evidence record for the current state:3839 ```text40 Constraint: [what must remain true]41 Evidence: [source, test, contract, history, or explicit decision]42 Unsafe inference: [what a reader could reasonably do incorrectly]43 Authorized scope: [files, symbols, topology, allowed behavior change]44 Readback: [what will show the constraint is visible and preserved]45 ```46473. Preserve the shortest verified `X because Y` before editing. An48 unexplained constraint is a Chesterton's Fence: search history,49 callers, tests, and neighboring invariants for its reason. If evidence50 is still absent or conflicting, return `BLOCK` and keep the existing51 explanation.5253## Choose the visible owner5455Select the smallest stable structure that carries the constraint for56every affected reader:5758| Constraint becomes visible as | When it is the right owner |59| --- | --- |60| Domain names and vocabulary | Readers must recognize a concept or responsibility that callers currently infer. |61| Types, states, invariants, constructors | An invalid state or unsafe transition should be difficult or impossible to express. |62| API shape, exports, routes, capability boundaries | Callers need a contract that a warning cannot reliably deliver. |63| Module, package, or ownership boundaries | Responsibility is being inferred from organizational memory instead of the tree. |64| Filesystem topology | Discovery, selective loading, or agent context depends on where the truth lives. |65| Canonical local context documentation | A durable repository convention where the reader's route guarantees receipt before acting: the document governs the decision's directory (`AGENTS.md`, package README) or is loaded by the agent's context rules. A symbol-, diff-, or search-entry reader does not receive it and needs a structural or code-local owner. |6667Prefer the narrowest owner that reaches every affected reader. Do not68redesign adjacent architecture, rename unrelated concepts, move files to69make the tree look orderly, or change structure solely to delete a living70local explanation. If the significance is irreducibly non-local, keep the71explanation and return `NO-OP`.7273## Make the change74751. Recheck the chosen owner against the frozen authorized scope; a76 breaking change to behavior, a public contract, a generated output, a77 path, or ownership requires explicit authority.782. Apply the smallest structural change that makes the constraint79 selectable from local context. Update tests, generated artifacts,80 imports, exports, and repository-native indexes only when the change81 requires them; repository-native indexes are generated or convention-bound82 listings such as barrel exports, route tables, codeowners, and manifests.83 Keep unrelated cleanup out of the diff.843. Give the changed local context to a fresh reader with no drafting history:85 an isolated subagent or new session that receives only the artifact named in86 the Readback field. It must recover the constraint, safe action, and87 protected boundary without the evidence record or producer explanation. If88 it cannot, retain the prose, restore the working tree to the pre-edit state,89 keep the rejected patch out of the deliverable (for example as an unapplied90 diff or unmerged branch), and return `BLOCK` naming any file the restore91 could not safely revert.9293## Retire only redundant prose9495After a fresh-context readback passes, delete a sentence when its meaning is fully96carried by the changed structure or by canonical local context the97affected reader actually receives. Retain the causal edge structure still98cannot express — the remote cause, consequence, failure mode, ownership99relationship, or external contract — phrased at the stable contract edge100that stays true while the remote implementation changes. Update nearby101prose the change makes false; do not replace a reef with a vague summary.102103## Verify and return104105Run the repository-native formatter, typecheck, lint, tests, generators,106and documentation checks covering the changed surface. Confirm the107constraint has a structural owner, a fresh-context readback passes for every108affected reader context the change touches (file, diff, symbol, or search109entry), behavior and public contracts match the authorized scope, no110stale names, imports, paths, or duplicate instructions remain, and the111diff contains no unauthorized files.112113Whichever section produced the outcome, including an early `NO-OP` or `BLOCK`,114end here: emit the evidence record and one return code as the last line of the115wrap-up report and any PR description:116117- `PASS` — an authorized structural change made the constraint locally118 visible, preserved, and covered by the checks above.119- `NO-OP` — structure already exposes the meaning, or the reef is120 irreducibly non-local and stays documented.121- `BLOCK` — evidence, checks, or the readback fail to establish the122 constraint.123- `NEEDS-HUMAN-DECISION` — authority, ownership, scope, or a breaking124 contract choice is unresolved.