UNRELEASED DEVELOPMENT SNAPSHOT · READ-ONLY EXCERPT
skills/scope/SKILL.md
This is the cited technical source at local revision 275a354, inspected on 22 September 2026. It differs from the public release. This reference publishes only the cited sections, not an installable release or the development branch.
Line numbers refer to the complete recorded file. Uncited lines are omitted. Full-file SHA-256: cb421da89e8c10280eeffcfb6040c6262f94b15ac8b4289d93a8c00196eb6483.
1
---2
name: scope3
layer: foundation4
description: Use after SENSE, before DEFINE, when a request's size is ambiguous — turns a raw ask into a sized, disambiguated scope via the scale-estimator, asks one clarifying question only when the work could be small or large, overrides a confidently-wrong route, and emits scope.md. Light and read-only; stays silent on clearly small work.5
color: cyan6
tools: Read, Write, Edit, Bash, Grep, Glob7
voice: internal8
cli_support: [claude-code, codex, copilot]9
necessity: STRONGLY_RECOMMENDED10
gap_if_skipped: "Scale ambiguity is never resolved — a request like 'deploy a website to azure' routes as a confident SHIP (XS) and skips DEFINE/DISCOVER/PLAN; PLAN has no depth_schema so an L/XL plan renders flat; scope.md never exists, so DEFINE inherits no wedge and PLAN no depth signal."11
---13
You are the SCOPE skill — Phase 1.5 of the Lintel cycle, between SENSE and DEFINE.15
## What this skill does… omitted uncited lines …
105
if [ "$has_artifact" = "no" ]; then106
override_route="DEFINE" # full cycle from DEFINE, not SHIP107
fi108
fi109
```111
SCOPE has **override authority** over a confidently-wrong orientator route (design §3.2). This closes the smoking-gun trace: `deploy→ship@high` becomes `build@XL` once the estimator sees greenfield + infra-bimodal, and the route is rewritten to a full cycle from DEFINE. State the override in the report so the operator sees the decision, not just its effect.113
### Step 5 — Emit scope.md115
Write the resolved scope so DEFINE inherits the wedge and PLAN reads `depth_schema`. Canonical home: the job dir (`.claude/runtime/jobs/<id>/scope.md`) when a job is active, else `.claude/runtime/state/scope.md`.117
```bash118
scope_out="${LINTEL_JOB_DIR:-${LINTEL_STATE_DIR:-.claude/runtime/state}}/scope.md"119
mkdir -p "$(dirname "$scope_out")"120
cat > "$scope_out" <<EOF121
# Scope: $prompt_text122
size: $scale_size123
intent: ${override_route:+build (overrode $intent→build)}${override_route:-$intent}124
ambiguous: ${scale_amb}${chosen_reading:+ → resolved}125
chosen_reading: "${chosen_reading:-$prompt_text}"126
surface: [<agent fills from signals: infra/ci/auth/data/api/network>]127
depth_schema: $depth_schema128
est_tokens: <agent fills from size prior; time only on --with-time>129
route_override: ${override_route:-none}… omitted uncited lines …
197
## Integration199
**Reads:**200
- operator's last message (the request)201
- `.claude/runtime/state/00-state.md` (SENSE's orientator route — `intent_detected`)202
- `lib/scale-estimator.sh` (the size axis — Slice 1; SCOPE sources it, never edits it)203
- active pack's `navigation.escalation_threshold` (via `resolve_pack_field`)205
**Writes:**206
- `scope.md` (job dir if active, else `.claude/runtime/state/scope.md`)207
- `.claude/runtime/state/00-state.md` (SCOPE entry)209
**Triggers (recommends, never auto-invokes):**210
- DEFINE next (inherits `chosen_reading` as the wedge)211
- PLAN later reads `scope.depth_schema` to select the WBS template variant213
## Anti-patterns215
- **Asking when the request is clear** — the gate fires ONLY on `scale_amb=yes`. A confident XS/S/L runs silent.216
- **More than one question** — exactly one AskUserQuestion, max, per invocation.217
- **Doing DEFINE's job** — SCOPE sizes + disambiguates; it does NOT run forcing questions, premise checks, or alternatives. That's DEFINE.218
- **Blocking on degraded AskUserQuestion** — fall back to the mechanical conservative size + note the assumption; don't halt the cycle.219
- **Editing the estimator** — SCOPE *sources* `lib/scale-estimator.sh`; it never modifies the lib (other slices own it).220
- **Emitting wall-clock time** — size + est_tokens only, unless `--with-time` (design §3.7).