feat(scope-guard): deliver the request, not the problem behind it
Two incidents in one session: a permanent CLI subcommand invented for a migration that runs exactly once, deleted again on demand; and `git add -A` twice sweeping local operator config into a bundle it had nothing to do with. scope-guard states the test — which sentence of the request asks for this? No sentence, no artifact — and three rules under it: no permanent scaffolding for a one-off need, path-scope every `git add`, and report an adjacent defect in one line instead of quietly fixing it into someone elses commit. commit-next draws the same line where staging actually happens. Step 4 is now the only place that stages: never to run a lint or a test, and always path-scoped, because `git add -A` collects work that was never part of the bundle. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
b89fc4097a
commit
846742b99a
2 files changed
+34
-1
No files matched your search
@@ -23,7 +23,13 @@ description: >
|
|||||||
audit first, then `git commit --no-verify`, exact staging index only).
|
audit first, then `git commit --no-verify`, exact staging index only).
|
||||||
4. Group the remaining uncommitted changes into logical bundles (one
|
4. Group the remaining uncommitted changes into logical bundles (one
|
||||||
concern per bundle: same failure class, same mechanism, or same role)
|
concern per bundle: same failure class, same mechanism, or same role)
|
||||||
and stage the next one; never mix concerns to save a commit.
|
and stage the next one; never mix concerns to save a commit. Staging
|
||||||
|
happens here and nowhere else: never stage merely to run a lint or a
|
||||||
|
test. Repository checks that enumerate through `git ls-files` already
|
||||||
|
see tracked, modified files and read the worktree; only an untracked
|
||||||
|
NEW file needs `git add` to become visible. Path-scope every `git add`
|
||||||
|
to the bundle — `git add -A` sweeps up the operator's own edits and
|
||||||
|
their local config.
|
||||||
5. For the newly staged bundle run the explain skill (what the changes do
|
5. For the newly staged bundle run the explain skill (what the changes do
|
||||||
and how the pieces interact, file:line-anchored) followed by the
|
and how the pieces interact, file:line-anchored) followed by the
|
||||||
confidence skill (fix confidence, break risk, evidence, residuals).
|
confidence skill (fix confidence, break risk, evidence, residuals).
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
name: scope-guard
|
||||||
|
description: >
|
||||||
|
Deliver exactly what was asked and nothing more. Trigger on every task that
|
||||||
|
creates files, commands, or commits, and on autonomous runs where no one is
|
||||||
|
reviewing each step. Also when the operator asks why something exists that
|
||||||
|
they never requested. Portable across projects.
|
||||||
|
---
|
||||||
|
|
||||||
|
The requested scope is the deliverable. A problem you noticed behind the
|
||||||
|
request is not an invitation to solve it.
|
||||||
|
|
||||||
|
Before creating anything the request did not name, answer one question: which
|
||||||
|
sentence of the request asks for this? No sentence, no artifact.
|
||||||
|
|
||||||
|
1. No permanent scaffolding for a one-off need. A migration you run once needs
|
||||||
|
a throwaway script, not a CLI subcommand that ships forever. Do the thing,
|
||||||
|
then delete the scaffolding.
|
||||||
|
2. Path-scope every `git add`. Never `-A`, never `.`. The operator's tree
|
||||||
|
carries their own edits and their local config, and sweeping those into
|
||||||
|
your bundle makes them undo your work by hand.
|
||||||
|
3. An adjacent defect gets reported in one line, not fixed — unless it blocks
|
||||||
|
the request. Fixing it quietly puts an unreviewed change in someone else's
|
||||||
|
commit.
|
||||||
|
|
||||||
|
When something genuinely seems missing, say so in one sentence and finish the
|
||||||
|
requested scope anyway. Widening the scope is the operator's call.
|
||||||
Reference in new issue
Block a user