원클릭으로
speckit-harness-explore
Run a budget-aware exploration loop that externalizes every finding into the harness state files
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Run a budget-aware exploration loop that externalizes every finding into the harness state files
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Generate a custom checklist for the current feature based on user requirements.
Identify underspecified areas in the current feature spec by asking up
Initialize externalized harness state (budget, candidates, curated set, evidence, verification, observations) for the active feature
Synthesize curated evidence and verification records into the feature's research.md with a coverage table
Render a compact, budget-aware slice of the harness state with a recommended next action
Adversarially verify claims in spec/plan artifacts against primary sources and record verdicts
| name | speckit-harness-explore |
| description | Run a budget-aware exploration loop that externalizes every finding into the harness state files |
| compatibility | Requires spec-kit project structure with .specify/ directory |
| metadata | {"author":"github-spec-kit","source":"harness:commands/speckit.harness.explore.md"} |
Research the given question with a strict separation of concerns, following Harness-1 (arXiv:2606.02373):
Keep policy and bookkeeping separate. Spend your reasoning on search strategy and relevance judgments; execute bookkeeping mechanically, exactly as specified.
$ARGUMENTS
$ARGUMENTS is the research question for this session. If empty, use the
mission from budget.md. If both are empty, ask the user for a question and
stop.
Resolve HARNESS_DIR as in /speckit.harness.init (feature directory →
harness/ subdirectory, else the configured fallback). If budget.md does
not exist there, run the initialization procedure from
/speckit.harness.init first (with $ARGUMENTS as the mission), then continue.
Read configuration (config file → env vars, as in init) for budgets and slice sizes, then load ONLY:
budget.md: the budget table, stop conditions, and the last 5 action-log rows.curated.md: top rendering.curated_slice entries, ordered
critical → high → medium → low.candidates.md: up to rendering.candidates_slice rows with status new
or inspected (the open frontier).observations.md: the last rendering.observations_slice entries.This rendered slice — not your memory of earlier turns, and not the full
files — is your working state. If the slice plus your plan would exceed the
context_tokens cap, shrink the slices further, dropping low importance
entries first.
Repeat until a stop condition fires.
a. Policy decision (semantic). Based on the rendered slice, choose ONE:
SEARCH <query> — a new search (code search, grep/glob, docs, web — whatever
fits the project). Prefer queries that discriminate between competing
hypotheses over queries that confirm what is already curated.INSPECT <candidate-id> — open one candidate from the pool and read the
relevant part.CURATE — promote inspected candidates into the curated set / demote or
discard stale entries. Costs no budget.STOP <reason> — stop per the rules in step 3.b. Act. Execute the chosen action with normal tools.
c. Bookkeeping (mechanical — do all of these every iteration).
observations.md: action, yield, and dup-of O-xxx if it substantially
repeats an earlier observation. Never paste raw tool output.candidates.md with status new. Dedup key is source + topic — if a row
with the same key exists, do not add another; note the duplicate in the
observation instead. Mark inspected candidates inspected.curated.md
(finding ≤ 2 sentences, importance tag) and a pointer entry to
evidence.md (source, locator, ≤ 25-word excerpt, what it supports).
Update the candidate's status to curated:<E-id>. If the curated set
exceeds curation.max_curated, evict per evict_policy and log the
eviction as an observation.budget.md for the
resource used (SEARCH → searches, INSPECT → inspections) and append an
action-log row, recording whether the action produced new curated evidence.Stop the loop when ANY of:
stop_conditions.marginal_gain_window
(default 3) consecutive budgeted actions produced no new curated evidence.critical curated entry contradicts another.On stop, append a 3-line closing observation: questions answered, questions still open, and why the loop ended.
Output, in order:
critical claims, with the suggested follow-up:
/speckit.harness.verify for claims, /speckit.harness.explore for gaps,
/speckit.harness.report when research is complete.evidence.md are capped at 25 words; state files store pointers,
not content.spec.md/plan.md/tasks.md from this command; research and
authoring stay separate (/speckit.harness.report bridges them)./speckit.harness.init — do not silently recreate state mid-loop.