一键导入
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.