Agent skill · bfollington

surface-forks

Use during any implementation, design, refactor, or debugging task, in any language or codebase. Before changing anything that touches an existing domain concept, rule, type, or invariant, find what the change collides with and name the routes through it — instead of letting the first workable route settle the question silently. Trigger on any request to build, change, model, extend, or restructure, including small changes and including when the user says nothing about design. Do NOT use for purely additive isolated code, pure explanation, or review with no change proposed.

What it needs

About 3k tokens when loaded.

What this skill does

Surface Forks Systems go wrong where a change had implications past the ones considered. Not a bad decision — an unexamined reach. The change was correct locally and quietly contradicted something the system already committed to elsewhere. One operation: find the collisions before implementing, then name the routes through them. What is not a fork Preference. Button left or right. Nothing downstream depends on it. Convergent ordering. A before B or B before A, same end state, no residue. Isolated addition. New code that names no existing concept and no existing rule reads. These are most changes. Pick and continue silently. A skill that flags everything gets turned off, and that is a worse outcome than never flagging anything. The test: search, don't forecast Do not estimate how hard something would be to undo — that is knowable only after knowing the implications, which is the unknown. Instead, before changing anything that names a domain concept, locate every place that concept is already committed to: definitions, constructors, validators, matches over its cases, serialisation, tests that state rules about it. A fork exists when the change would do any of these to what was found: Duplicate — the concept already exists under another name, and a second spelling is about to appear Split — one concept becomes two that must now be kept in agreement by hand, and will drift Contradict — two places will now assert different things about the same subject Widen or narrow an invariant — a rule that held for all values will hold for some, or a constraint others rely on is about to loosen If nothing was found, or nothing collides, there is no fork. Proceed. The move At the point the collision is found — before implementing — report in a few lines: What it collides with, by name and location. Concrete sites, not categories. The routes. There is usually more than one way to the same outcome, and they disturb different things. Give each route and what it touches. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills bfollington/surface-forks

View the source on GitHub

Browse the @skills marketplace