Source index · Technical reference · Home

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---
2name: scope
3layer: foundation
4description: 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.
5color: cyan
6tools: Read, Write, Edit, Bash, Grep, Glob
7voice: internal
8cli_support: [claude-code, codex, copilot]
9necessity: STRONGLY_RECOMMENDED
10gap_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---
13You 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" ]; then
106 override_route="DEFINE" # full cycle from DEFINE, not SHIP
107 fi
108fi
109```
111SCOPE 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.md
115Write 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```bash
118scope_out="${LINTEL_JOB_DIR:-${LINTEL_STATE_DIR:-.claude/runtime/state}}/scope.md"
119mkdir -p "$(dirname "$scope_out")"
120cat > "$scope_out" <<EOF
121# Scope: $prompt_text
122size: $scale_size
123intent: ${override_route:+build (overrode $intent→build)}${override_route:-$intent}
124ambiguous: ${scale_amb}${chosen_reading:+ → resolved}
125chosen_reading: "${chosen_reading:-$prompt_text}"
126surface: [<agent fills from signals: infra/ci/auth/data/api/network>]
127depth_schema: $depth_schema
128est_tokens: <agent fills from size prior; time only on --with-time>
129route_override: ${override_route:-none}
… omitted uncited lines …
197## Integration
199**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 variant
213## Anti-patterns
215- **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).