跳到正文
cccskills
免费在 GitHub 公开

forge-research

Phase 1 of the Forge pipeline. Gather real context from the codebase, answer everything the code can answer through exploration, then grill the user one question at a time (with a recommended answer) for only what code cannot answer, and write a research document. Use when starting /forge-research or the research step of /forgemaster, or when the user wants a research-first investigation before planning a feature.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md6.6 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

forge-research

Phase 1 of 4 in the Forge pipeline (research → plan → implement → ship). The goal is a plans/research/<slug>.md document grounded in real code, with every open question that the codebase cannot answer resolved by the user.

Hard rule: never ask the user something the code, knowledge files, or git history can answer. Explore first, ask last. See [[grill-me]] for the interview discipline this phase reuses.

When to Use

  • The user runs /forge-research <feature> or /forgemaster enters its research phase.
  • A feature is described but the implementation surface, constraints, or decisions are unclear.
  • The next useful step is reducing ambiguity, not coding or planning yet.

Inputs

  • Free-text feature description, a bd show <id> task, or a spec file path.
  • Optional <slug> (kebab-case). If absent, derive one from the feature title and reuse it for every downstream phase artifact.
  • Optional --smith <name>: the configured smith the run is recorded as built by. Add it to the forge:phase-gate call in step 6; the phase gate refuses a name that is not configured. It does not change the model of the session doing the work (.claude/workflows/forge.md, --smith).

Process

1. Establish the target

State the feature in one or two sentences. If it is already clear from context, do not ask the user to restate it. Pick the <slug> now and announce it — all later phases key off it.

2. Explore what code can answer (mandatory, before any question)

Load knowledge first, then read real code. Be exhaustive enough to write accurate file paths.

cat knowledge/_shared.yaml
cat knowledge/repos/<repo>.yaml 2>/dev/null || echo "no knowledge file for <repo>"   # for each affected repo
bd show <id> 2>/dev/null               # if a task id was given

A repo has a knowledge/repos/<repo>.yaml only after /add-repo or /sync-knowledge has been run for it; the directory is empty in a fresh checkout, and the harness itself has none. When there is no file, do not generate one here: read the repo's README, its manifest (package.json or the like) and its AGENTS.md/CLAUDE.md if it has them, say in the research document that no knowledge file existed, and carry on with the code read below.

Then use Glob/Grep/Read (read-only) to map:

  • Entry points and the data flow into the affected area.
  • Existing code to reuse (hooks, types, components, utilities) — search before assuming new.
  • Integration points: what this feature depends on, and what depends on it.
  • Existing tests and how this area is currently verified.

Record each discovered fact. If exploration answers a question you were about to ask, write the answer down instead of asking it.

3. Separate the unknowns

Sort every open item into two buckets:

  • Answerable by code/docs → resolve it yourself now; cite the file/line.
  • Not answerable by code → product intent, scope boundaries, UX choices, external systems, priorities, acceptance thresholds. These become user questions.

4. Grill the user — one question at a time

For each unanswerable item, ask exactly one question per turn, hardest-blocking branch first. Every question carries a recommended answer and a one-line reason (the [[grill-me]] format):

Shared understanding so far:
- Confirmed (from code): <fact + file:line>
- Open: <the gap this question closes>

Question:
<one question>

Recommended answer:
<your recommendation>

Why:
<brief rationale + consequence>

Explain before you ask. If the decision rests on a mechanism the user may not have in their head — a tradeoff, how a tool behaves, or why the code forces the choice — open with one or two plain-language sentences that explain what's going on and why it matters, then give the options. A question the user can't parse wastes the turn (and the tokens). Lead with the "why", not the menu. If the user says they don't understand, stop and explain the mechanism in plain terms before re-asking.

Prefer AskUserQuestion when the choice is a small closed set. Stop asking when the remaining uncertainty is explicitly accepted or the user says to proceed.

5. Write the research document

Write to plans/research/<slug>.md (create the folder if needed):

# Research: <slug> — <feature title>
Generated: <date>
Repo: <repo>
Phase: research (1/4)

## Goal
<what the user wants and why, 2–3 sentences>

## What the Code Says (answered by exploration)
- <fact> — `path/to/file.ts:NN`
- Existing code to reuse: `...` — <how it helps>
- Integration points: <upstream / downstream>
- Current test coverage of this area: <summary>

## Decisions Resolved with the User
| Question | Decision | Rationale |
|----------|----------|-----------|
| <q> | <answer> | <why> |

## Constraints & Non-Goals
- Constraint: <...>
- Non-goal: <explicitly out of scope>

## Open Risks / Assumptions Carried Forward
- <risk or accepted assumption>

## Recommended Scope for Planning
<one paragraph: the shape of the feature the plan phase should design>

6. Hand off

Update the forge state and report:

bun run forge:phase-gate research --slug <slug> --write --bead <task-id>

<task-id> is the issue this run was started from, when that is a task, a bug or a chore: it ties the run's ledger events, and later its quality gate, to that issue. Omit --bead when the run was started from free text, a feature or an epic: no task exists until the plan phase creates one, and a feature or an epic is named only by the ship write (pass it as --epic <id> here: that groups the run and is never used for its correlation). See .claude/workflows/forge.md, Which bead a phase names.

Then tell the user: research is complete at plans/research/<slug>.md, and the next phase is /forge-plan <slug> (or /forgemaster will offer to continue). Do not start planning in this phase — planning is [[forge-plan]].

Exit Criteria

  • plans/research/<slug>.md exists with all sections filled.
  • Every "Decisions Resolved" row came from the user, not guessed.
  • No question was asked that the code already answered.
  • Forge state advanced to research complete.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

add-bead

免费

Capture free-text work as a tracked Beads issue. Use when the user runs /add-bead or wants to quickly file a Beads issue.

中文简介正在准备中。当前显示原文说明。

jupes/agent-forge-harness22026年10月19日 更新

add-repo

免费

Register a new sub-repo in the knowledge base.

中文简介正在准备中。当前显示原文说明。

jupes/agent-forge-harness22026年10月19日 更新

Add focused Bun unit tests for mission-critical behavior and edge cases — not blanket coverage.

中文简介正在准备中。当前显示原文说明。

jupes/agent-forge-harness22026年10月19日 更新

ask

免费

Answer questions about the codebase from knowledge files. Use when the user runs /ask or asks a domain/knowledge question about the repos.

中文简介正在准备中。当前显示原文说明。

jupes/agent-forge-harness22026年10月19日 更新

Meta-skill for creating Agent Forge skills under .claude/skills/ with SKILL.md, optional references/ and scripts/, and Bun scaffolds. Use when the user wants to add or author a skill, scaffold a new skill folder, or align skill docs with harness conventions (JSON script output, Beads for tasks).

中文简介正在准备中。当前显示原文说明。

jupes/agent-forge-harness22026年10月19日 更新

Choose Beads issue priority (P0–P4, numeric, or named) from urgency, impact, and risk when creating or triaging work.

中文简介正在准备中。当前显示原文说明。

jupes/agent-forge-harness22026年10月19日 更新

查看 jupes 的全部技能

报告此技能的问题