Skip to main content
skill CX Codex

scoped-change — Claude Code skill: what it does, how to install

Restricts agent edits strictly to the requested scope. Prevents unrequested refactoring and missed sibling updates.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add scarletkc/agents --skill scoped-change -a claude-code
Open on GitHub

What scoped-change does

The skill enforces strict boundary rules for the AI coding agent. When given a task, the model touches only the requested surfaces. Neighboring layers stay untouched even if they look questionable: the agent reports the observation separately instead of tangling the diff. It also stops premature abstractions and backward compatibility shims when no existing users rely on old data.

Inside the chosen boundary, the work must be thorough. The agent searches for sibling entities across the project: shared localization keys or sibling cards of the same family. A new entry must inherit established naming patterns and required metadata fields so that loaders do not drop it silently.

Work order matters here. Tests lock behavior only after the logic settles, rather than during active iteration.

What it helps with

  • Confine agent diffs to the exact surfaces requested
  • Stop unneeded backward-compatibility layers and data migrations
  • Catch missing sibling implementations and shared field conventions
  • Prevent parallel duplicate code from coexisting with existing helpers

Example prompts for the agent

  • Apply this issue fix using the scoped-change guidelines without editing adjacent files
  • Add a new item type under scoped-change, matching all sibling properties across the repository
  • Update the backend endpoint following scoped-change rules without adding speculative wrappers

How to install scoped-change

1Skills CLI (Vercel)

npx skills add scarletkc/agents --skill scoped-change -a claude-code

2Manually: put the files in place

~/.claude/skills/scoped-change/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/scoped-change/

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

Questions about scoped-change

How to install scoped-change in Claude Code?

Run npx skills add scarletkc/agents --skill scoped-change -a claude-code. The definition file lands in ~/.claude/skills/scoped-change/SKILL.md.

What does scoped-change do?

It prevents the agent from sprawling outside requested boundaries or adding speculative abstractions. At the same time, it ensures every necessary sibling edit inside the boundary gets completed.

When does scoped-change suggest writing tests?

Write tests and documentation only after confirming the implementation logic. Pinning behavior while it is still actively shifting causes expensive rewrites later.

Source text

SKILL.md · Apache-2.0
---
name: scoped-change
description: "Judgment rules for locating the correct boundary of a requested change: staying inert outside it while completing every required site inside it. Use when scope is ambiguous, a diff touches neighboring surfaces, required dependent edits are unclear, or a proposed compatibility layer, migration, fallback, flag, abstraction, or parallel implementation may exceed the request."
license: Apache-2.0
metadata:
  author: scarletkc
  source: https://github.com/scarletkc/agents
  summary: "Hold a change to the size the request defines: no unrequested surfaces, no speculative layers, no half-applied edits."
---

# Scoped Change

A change has one correct size and the request defines it. Overshooting and
undershooting are the same failure — a boundary that was never located —
and they fail differently: unrequested edits surface in review or in
production, missing edits surface as the user finding them. Locate the
boundary first, then be exhaustive inside it and inert outside it.

When the boundary is corrected mid-task, the result reads as though the
corrected scope were the only one there had ever been. A title, comment, or
rationale that keeps the dropped option alive re-imports the overshoot the
correction just removed, and the reader pays for it twice; what belongs in a
deliverable is
[`ux-writing`](https://github.com/scarletkc/agents/blob/main/skills/ux-writing/SKILL.md).

## Outside the boundary

- **Edit only the surfaces the request names.** A request that names one
  layer is a request about that layer, and the neighboring layers stay
  untouched even when they look wrong. Report what you noticed instead of
  fixing it; a separate observation is cheap, an entangled diff is not.
  *Counter-example: asked to adapt a backend endpoint to an existing signup
  form, an agent redesigned the form too, and the reviewer had to pull the
  two apart before either could ship.*
- **Compatibility is a cost, and someone must already be paying it.**
  Migrations, dual-read paths, deprecated aliases, and version shims are
  correct only when real users hold the old state. Establish that they exist
  before writing one; when they don't, a clean break is the smaller change.
  This is a question of fact, not caution. *Counter-example: an unreleased
  product with no installed base got a save-format migration path for data
  no user had ever written, and the dead branch still had to be maintained
  and tested.*
- **Reuse the existing implementation; never add a second one beside it.**
  If the project already renders this panel, formats this message, or awards
  this promotion, extend that path. A parallel implementation that looks
  correct is worse than an obvious gap, because it diverges silently and
  nothing fails when it does. *Counter-example: a new promotion banner was
  written from scratch next to the existing level-up banner; a release later
  only one of them had the new animation.*
- **Prefer changing an existing rule to adding one next to it.** A new
  constant, flag, or branch that coexists with the rule it was meant to
  replace leaves two sources of truth and doubles the states to reason
  about. *Counter-example: a request to restrict upgrades to a single branch
  arrived as a new second rule constant; narrowing the meaning of the
  original constant was the entire change.*
- **Solve the stated problem, not its general form.** Extension points,
  plugin layers, and configuration surfaces are worth building when a second
  caller exists, not when one is imagined. The simple implementation is the
  deliverable unless the request asked for the general one.

## Inside the boundary

- **Apply the change at every site it implies.** The requested behavior is
  the unit, not the file you happened to open. Before declaring it done,
  grep for the siblings of what you edited — the other cards of that type,
  the other localized strings of that key, the other callers of that helper
  — and confirm each one either changed or correctly didn't.
  *Counter-example: a new card type shipped without the category prefix that
  every other card's label carries, so it read as a different kind of object
  in the UI.*
- **Matching the siblings is part of the request, not extra scope.** A new
  item of an existing kind inherits that kind's required fields, naming
  convention, rarity or tier metadata, and text conventions without being
  told. Ask when the value is genuinely undetermined; don't ship the field
  missing. *Counter-example: a new entity landed without the rarity field
  every sibling declares, and only surfaced when a loader that groups by
  rarity silently dropped it.*

## When the boundary is unclear

- **Ask only for consequential boundary decisions.** If the requested boundary
  cannot be determined without making a consequential choice the user has not
  already made, ask before crossing it. Routine implementation decisions stay
  with the agent and must not become confirmation gates.

## Order of work

- **Lock behavior in tests once it is settled, not while it is moving.**
  Every behavior change still ships with happy-path and failure coverage;
  the point is sequence. Tests and docs written against logic that is still
  under discussion pin the wrong behavior and then argue for it, and the
  rewrite costs more than the wait. Get the logic confirmed, then cover it.

© scarletkc · Apache-2.0 · scarletkc/agents

Similar skills

All skills for Code review and refactoring →

From the same set10

worktree-pr This skill runs larger or riskier tasks in a separate git worktree, checks the result against the untouched copy, and prepares a branch for a pull request. CX Codex +1 ★ 224repo stars ux-writing A skill that sets judgment rules for user-facing strings and docs: CLI and diagnostic output, errors, help text, README structure, comments and titles. CX Codex +1 ★ 224repo stars product-writing This skill helps draft and review interface copy and technical docs. Use it for error messages, CLI text, help content, and explanations of product behavior. CX Codex +1 ★ 224repo stars marketing-copy Drafts launch posts, store descriptions, landing headlines and press notes. Checks first that no key, unlisted link or unshipped feature leaks into public text. CX Codex +1 ★ 224repo stars grok-cli Delegates bounded tasks to Grok Build while your main agent keeps working. Manages background ACP sessions for progress, follow-ups, and permissions. CX Codex +1 ★ 224repo stars devin-cli Delegates bounded coding work to a local Devin CLI over ACP and tracks the run. Use it for parallel implementation, ports, reviews, or follow-up turns. CX Codex +1 ★ 224repo stars codex-cli A skill on when handing work to Claude CLI pays off, and how to size the run: model, reasoning effort, sandbox permissions. Written for the supervising agent. CX Codex +1 ★ 224repo stars ask-to-plan Turns vague ideas into an actionable plan via native clickable choices. It asks one focused question at a time to clarify scope and technical decisions. CX Codex +1 ★ 224repo stars

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