一键导入
gwt-discussion
Use when an idea, spec question, or implementation gap needs investigation and discussion before deciding how work should proceed.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when an idea, spec question, or implementation gap needs investigation and discussion before deciding how work should proceed.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when execution should start from a GitHub Issue, gwt-spec Issue, or approved standalone task through one build/test/verify loop.
Use when implementation should proceed from an approved SPEC or approved standalone task, and the work should run through the build/test/verify loop.
Use when the user wants to create, inspect, update, or unblock a pull request and expects one visible entrypoint for the PR lifecycle.
Use when implementation needs verification before completion or before opening a PR. Defines a project-agnostic Generic Verification Contract: classify changed surfaces, autodetect the project's test runners from manifests (Cargo.toml / package.json / pyproject.toml / go.mod / ProjectSettings / *.sln / etc.), run the appropriate unit / integration / E2E / visual tests for the project, emit an evidence bundle that lists exactly which tests were executed, then hand off to the user with a 4-step 導線 (build → launch → navigate → observe) and check items before declaring Overall: PASS. Triggers: 'verify', 'run tests', 'pre-PR check', 'gwt-verify'.
Use when the user wants to resolve an existing GitHub Issue by number or URL, especially when the workflow should continue through a direct fix unless a SPEC is needed.
Use when the user wants to register new work from a bug report, idea, or task description and an existing GitHub Issue number is not already known.
| name | gwt-discussion |
| description | Use when an idea, spec question, or implementation gap needs investigation and discussion before deciding how work should proceed. |
| allowed-tools | Bash, Read, Glob, Grep, Edit, Write |
| argument-hint | [idea | concern | implementation gap | --deepen SPEC-N] |
Unified discussion entrypoint for exploration, design clarification, and mid-implementation investigation. Use it before a SPEC exists, while a SPEC or plan is being refined, or when implementation reveals a gap that needs user discussion before work can continue.
Use the current user's language for decision summaries, Discussion TODO,
Action Delta, Action Bundle, and any user-facing artifact text generated
during this workflow, unless an existing artifact must keep its established
language.
Before executing any gwtd ... command from this skill or its references,
resolve GWT_BIN first: executable GWT_BIN_PATH, then command -v gwtd,
then $GWT_PROJECT_ROOT/target/debug/gwtd or ./target/debug/gwtd. Run the
command as "$GWT_BIN" ...; if none exists, stop with an actionable
gwtd not found error.
gwt-plan-spec or
gwt-build-specDo not use this when the work is already decision-complete and ready for
planning or implementation. Use gwt-plan-spec or gwt-build-spec directly in
that case.
Keep these artifacts throughout the discussion:
Intake Memo in conversation context for background, scope, and constraintsDiscussion TODO in conversation context and mirrored to the
machine-local work-notes discussion log
(~/.gwt/projects/<repo-hash>/work-notes/discussions.md, SPEC-3214);
the repo-local .gwt/work/discussions.md and legacy .gwt/discussion.md
are read fallbacks onlyAction Delta for changes that are ready to land in spec, plan, issue,
or build contextAction Bundle for the concrete follow-up actions that should happen nextWhen the discussed work touches multiple Issues/SPECs, the artifact update is not complete until exactly one Primary Execution Owner is selected and every related owner is classified (SPEC-3248 Multi-Issue Primary Owner Bundle):
bundled-required — must ship in the Primary owner's PR; copy or summarize
its required tasks and acceptance into the Primary so a single-Issue
Execution launch can implement the full bundled scope without opening every
related Issuedependent-follow-up — separately deliverable with explicit ordering and
blocker notes; never a hidden Primary completion requirementreference-only — background reading, not part of the PR's completionDiscussion TODO is not an implementation task list. It tracks unresolved
questions, dependency checks, deferred decisions, coverage gaps, exit blockers,
the next question to ask, and the depth state for the active proposal.
Evidence is part of the discussion state, not a later implementation detail.
Do not mark a proposal [chosen] until its evidence fields prove the outcome
without relying on speculation, guesses, or vibes.
Mirror structure inside an active entry in the work-notes discussion log:
## Discussion TODO
### Proposal A - <title> [active|parked|rejected|chosen]
- Summary:
- Open Questions:
- Dependency Checks:
- Deferred Decisions:
- Coverage Checks:
- Exit Blockers:
- Next Question:
- Depth Mode:
- Question Ledger:
- Depth Gate:
- Implementation Proof:
- SPEC/Issue Proof:
- Gap Check Proof:
- Official Docs Proof:
- External Research Proof:
- Evidence Gate:
- Promotable Changes:
Promote an item from Discussion TODO into Action Delta only after the
high-impact unknown behind it has been resolved.
Action Delta
and Action Bundle, or a decision-complete <proposed_plan> when the
discussion ends in a plan handoff) is ready.SPEC-1935 FR-014p routes Stop events through skill-discussion-stop-check,
which inspects the work-notes discussion log and falls back to the
repo-local .gwt/work/discussions.md, then legacy .gwt/discussion.md,
then blocks Stop (with
{"decision":"block","reason":"..."}) while any proposal is still
[active] with a non-empty Next Question:, unresolved Exit Blockers:,
incomplete proof fields, incomplete depth fields, or an Evidence Gate: that
is not complete. Depth fields are incomplete when Question Ledger: is
empty, Depth Gate: is missing/open, or Depth Gate: deferred(<reason>) has
no reason. To let Stop succeed, mark each proposal explicitly using the exit
CLI:
discuss.resolve JSON operation — active → chosen only after
Evidence Gate: completediscuss.park JSON operation — active → parked (resume later)discuss.reject JSON operation — active → rejecteddiscuss.clear_next_question JSON operation — clear only the
question line. It does not bypass incomplete evidence.When the Action Bundle is produced, call the matching exit command for each
proposal before stopping. The runtime's stop_hook_active flag (built into
Claude Code; shared with Codex via codex_hooks) keeps the handler fail-safe:
at most one forced continuation per Stop cycle.
Managed hook settings in .claude/settings.local.json and .codex/hooks.json
may surface unfinished discussion candidates from the work-notes discussion
log with repo-local .gwt/work/discussions.md and legacy .gwt/discussion.md
fallbacks.
Use this contract:
[active] with a non-empty Next Question as
resumable.SessionStart to surface the resume prompt.SessionStart before the first turn, arm a
fallback from UserPromptSubmit and surface it after the next Stop.Resume discussion, Park proposal, and Dismiss for now.Resume discussion continues gwt-discussion before other work proceeds.Park proposal changes the matching proposal in the work-notes discussion log
from [active] to [parked].Dismiss for now suppresses the prompt only for the current agent session. A
later session may surface it again.PreToolUse may also dispatch workflow-policy before mutating tool calls.workflow-policy should allow read-only investigation, but block
implementation edits until an owner Issue or SPEC is linked.gwt-spec Issue, workflow-policy should block
implementation until the owner SPEC cache has non-empty plan and tasks
sections; local files alone do not unblock it.Use the platform's selection-style question tool instead of naming a single API in the contract.
| Platform | Preferred tool |
|---|---|
| Codex | request_user_input |
| Claude Code | AskUserQuestionTool |
| Other runtimes | Closest equivalent selection-style question UI |
If no selection UI exists in the current runtime, ask in plain text as the exception path. Keep the same one-question-at-a-time discipline.
gwt-search skill (a skill, not a PATH command) with 2-3
semantic queries in Japanese and English.issue.spec.list.Intake Memo.board.show.claim entries from another session that mention the same
owner (#<N> or SPEC-<N>) or the same phase/topic under discussion.claim with a Boundary: line naming the
topic, artifacts, or files owned by this session before continuing.SPEC-2008 Phase 24, when gwt-discussion --deepen SPEC-2008 starts,
then the preflight reports the claim and requires user confirmation before
producing an Action Delta or changing SPEC artifacts.Do not ask the user anything until you have investigated.
For every potential change surface, map:
| Change | Downstream impact | Upstream prerequisite | Must change together |
|---|---|---|---|
| ... | ... | ... | ... |
Present findings first:
active, parked, rejected, or chosenAsk the user one question at a time about the findings. Wait for their answer before asking the next question.
Use the platform question tool first. Each question should:
After each answer:
Intake MemoDiscussion TODOQuestion LedgerDepth Gate only when depth coverage is complete or explicitly
deferred with a reasonUse this loop for every non-trivial discussion, including ordinary
gwt-discussion runs. Do not wait for an explicit --deepen flag when the
latest answer leaves high-impact ambiguity.
After every answer:
Question Ledger.Depth Gate: complete only when the Question Ledger shows all
applicable categories are covered. Use Depth Gate: deferred(<reason>) only
when the remaining depth is intentionally out of scope for the current
Action Bundle.Do not treat a small number of questions as a completion signal. A broad or risky discussion may require many rounds. Also do not treat a top-3 priority list as the end of deepening; it is only the next batch to discuss before the remaining backlog is re-ranked.
Do not stop because one answer landed or because an arbitrary question count was reached. Re-run this gate after each answer.
Coverage Checks:
Exit Blockers:
Open Questions, Dependency Checks, or Deferred Decisions still contain
unresolved high-impact itemsQuestion depth ladder:
Keep asking one question at a time until the relevant coverage categories are
closed or explicitly deferred with rationale in Discussion TODO.
When the runtime and user allow delegation, a bounded subagent may be used for objective review of competing proposals. Keep that subagent scoped to independent comparison work and do not let it replace the main discussion flow.
Do not end the discussion after a single answer when unresolved high-impact unknowns still exist.
Before producing the final Action Delta / Action Bundle, complete the proof
fields for every [active] proposal that will become [chosen].
Implementation Proof: name the implementation files, logs, commands, or
tests inspected or run. If no implementation exists, say what proves that.SPEC/Issue Proof: name the owner SPEC / plan / tasks / Issue sections read,
including any missing or stale items found.Gap Check Proof: explicitly cover scope, ownership/integration,
failure/edge cases, migration/compatibility, and verification/success signal.Official Docs Proof: cite official documentation checked for external API,
runtime, OS, CLI, library, or hook behavior. Use not-applicable: <reason>
only for purely local behavior.External Research Proof: cite non-official research, issue trackers, web
search, or X search when needed. Use not-applicable: <reason> only when
official docs and local evidence fully settle the question.Evidence Gate: set to complete only when the proposal has no unresolved
Exit Blockers: and all proof fields above are non-empty or explicitly
not-applicable: <reason>.Official documentation is the preferred external evidence. X search and X API Search Posts official docs are valid discovery paths for fast-moving facts, but X posts alone are not sufficient for irreversible conclusions unless they are first-party posts with URL and timestamp, or are corroborated by official docs or another primary source.
When the discussion stabilizes, update the right artifacts in one batch.
references/intake.md for search and routing disciplinereferences/ddd-modeling.md for Bounded Context and domain modelinggwt-register-spec (sub-skill, SPEC-2784). The
caller prepares title + body file from this discussion's outcome; the
sub-skill validates, executes the canonical issue.spec.create →
issue.spec.edit → issue.spec.section roundtrip safely, and returns the new Issue number. Add
Register Spec to the Action Bundle. Use references/registration.md
only when the sub-skill is unavailable; in that case follow its 2-step
flow manually and verify issue.spec.section returns non-empty content
before handoff.references/clarification.md to remove high-impact
[NEEDS CLARIFICATION] markersreferences/deepening.md when the user asks for deeper analysis on an
existing SPECplan and related planning artifacts in-placeAction Deltagwt-plan-spec in the Action Bundle when further planning work is
still neededspec / plan / issue context as needed firstResume Build in the Action Bundlegwt-build-spec continue with the updated contextUpdate Issue or Write Memory in the Action Bundlegwt-register-issue or gwt-fix-issue when the GitHub Issue flow should
own the next stepPresent the result in this format:
## <Discussion Decision in the current user's language>
Owner: #<number> | SPEC-<id> | "new" | "none"
Reason: <one sentence>
### Intake Memo
- <final bullets>
### Discussion TODO
- Proposal A [active|parked|rejected|chosen]: <state + remaining concern>
### Action Delta
- Update Spec: <what changes>
- Update Plan: <what changes>
- Update Issue: <what changes>
- Resume Build Context: <what the implementer must use>
### Action Bundle
- Register Spec
- Update Spec
- Update Plan
- Resume Build
- Update Issue
- Write Memory
- No Action
Register Spec runs the gwt-register-spec sub-skill (SPEC-2784) to
materialize a new SPEC Issue safely. Use it instead of manual
issue.spec.create whenever a fresh SPEC owner is needed.
This final result is the handoff point where the workflow may leave Plan Mode.
Action Bundle may contain multiple actions. Examples:
Update Spec + Update Plan + Resume BuildUpdate Issue + No ActionWrite Memory onlyWhen the Action Bundle is ready and follow-up work can continue autonomously after user approval, arm a runtime goal from the bundle (SPEC-3050):
discuss.goal_pending
after resolving the chosen proposal. This records Goal State: pending
in the work-notes discussion log so the next UserPromptSubmit hook can remind
the agent even though the approval arrives in a later turn.--enable goals):
call create_goal with the condition as the objective — the goals tool
contract allows the model to start a Goal itself./goal command cannot
be self-invoked by the agent. Queue it into your own pane instead:
JSON operation pane.send with params.text:"/goal <condition>" (resolve GWT_BIN first per
the gwtd resolution section). The injected line is submitted
automatically when the current turn ends. pane send is self-only: it
targets the pane bound to GWT_SESSION_ID and rejects other panes.discuss.goal_started. If the user rejects or
revises the Action Bundle instead, run JSON operation
discuss.goal_skipped
before continuing the discussion. If the goal cannot be started (older
Claude Code, trust dialog not accepted, goals feature disabled,
pane.send failure), run JSON operation discuss.goal_failed,
report the failure reason explicitly, print the assembled /goal <condition> line so the user can run it manually, and continue the exit.
Goal start failures never block the discussion exit.gwt-plan-spec when design is stable but planning work remainsgwt-build-spec when implementation should continuegwt-register-issue when new work should become an Issue instead of a
SPECgwt-fix-issue when an existing Issue owns the next stepDiscussion TODO into an implementation task listAction Bundle