Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when an analiz question needs the human, not the code, to decide - recording it with record_open_questions, judging blocking vs non-blocking, and resuming the report after an answer
インストールする前に、エージェントに与えられる指示の中身を確認できます。
A genuine product decision the code cannot settle is recorded with record_open_questions, never written into the report as prose and never asked with ask_user — you hold no ask_user tool on an analiz task. The system shows every open question as an answer box above the report; the human answers there, not in chat. The report's risks section (analiz-html-report) is risks only — it never carries open questions.
A question the codebase already answers is not a question. Exhaust codebase_search / grep_code / get_symbol_skeleton / expand_symbol_context and the project's own docs (technical-analysis-workflow) before concluding only the human can settle it.
record_open_questions takes three independent operations in one call:
questions — up to 10 NEW questions: {prompt, kind: product|technical, blocking, recommended_answer?}. The server assigns the key (Q1, Q2, …) in creation order — never invent one.update — edits to questions you already recorded, by key: any of prompt, kind, blocking, recommended_answer. Refused once the question is answered if you try to change its prompt — the human answered that exact wording; withdraw it and add a new one instead of rewriting underneath their answer.withdraw — keys an answer or further reading made moot. A withdrawn question stays on the record (status withdrawn) and never blocks anything again.recommended_answer is required whenever blocking is false — refused otherwise. There is no such thing as a non-blocking question with no answer to proceed on.
The call returns the task's full current list (key, kind, blocking, status, answer) as text — read it to confirm the key a new question got before referencing it later in the same run. list_open_questions returns the same list on demand, with every answer, for a run that did not just write one (a revision, a resumed run).
Default to non-blocking. A reasonable default almost always exists: record it with recommended_answer and keep working. Blocking is the exception, reserved for a question where proceeding on ANY guess would waste the implementation, not merely a question you'd rather not guess at.
| Example | |
|---|---|
| ✅ Non-blocking | "Should archived tasks be included in the export?" — kind product, recommended_answer: "No — archived tasks are excluded from every other board export." A wrong guess here costs one column in a CSV, not a redesign. |
| ✅ Non-blocking | "Keep the existing 30-day retention or extend it?" — kind product, recommended_answer: "Keep 30 days — no stated reason to change it." |
| ✅ Blocking | Two incompatible product behaviours with no basis in the code or the brief to choose between them (e.g. "on conflict, does the import overwrite the existing row or skip it?" when both are one-line changes but produce silently different data). |
| ✅ Blocking | An external system or contract you cannot see (e.g. the brief assumes a partner API's rate limit or auth model you have no access to confirm). |
| ✅ Blocking | A scope choice that changes WHICH repositories are touched (e.g. "real-time" meaning push notifications vs. polling — one adds a websocket service, the other doesn't). |
| ❌ Should be non-blocking, not blocking | "What should the CSV column order be?" when nothing in the brief or the code implies an order — pick one, state it, recommend it. Guessing wrong here is a one-line fix later, not a wasted implementation. |
| ❌ Should not be a question at all | "What does TaskRepository.ListByProject return?" — get_symbol_skeleton answers this; escalating it is the Red Flag technical-analysis-workflow already names. |
A blocking question does not end the run early. Explore everything else first — the report attaches "as far as it got": summary, context, and as much of design/plan/split as the unanswered question doesn't gate. Then:
record_open_questions with the blocking question(s) (and any non-blocking ones you also found).add_task_document (new) or update_task_document (revision) with the partial report.blocked instead of analiz_review — do not move it yourself either way.You are re-dispatched with payload {"resumed": "questions_answered", ...} once the human sends answers, or you see new answers in your run context's "Open questions" block on any later run. Either way:
list_open_questions if you need the full picture (keys, kinds, every answer) beyond what the context block shows.update_task_document, never a second add_task_document.need_revision and doneHonour every human answer in the revised report, the same way you honour review comments. An unanswered non-blocking question means its recommended_answer stands as written — do not re-ask it, do not treat silence as a rejection.
In done (decomposition, task-decomposition): if a human's answer contradicts the approved split or plan in a way the decomposition cannot absorb without re-deciding the design, do NOT decompose. add_task_comment naming which answer conflicts with which part of the plan, and stop — the human resolves the plan before you split it.
record_open_questions — the human never sees an answer box for it.ask_user on an analiz task — you do not hold it here.recommended_answer — refused; you have not actually decided what to do if nobody answers.prompt with update instead of withdrawing and adding a new one.done while a human's answer still contradicts the approved split.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
日本語の概要は準備中です。原文の説明を表示しています。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
日本語の概要は準備中です。原文の説明を表示しています。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
日本語の概要は準備中です。原文の説明を表示しています。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
日本語の概要は準備中です。原文の説明を表示しています。
Use when deciding whether a request needs an analiz task before implementation - the conditions that require the architect's analysis versus going straight to implementation
日本語の概要は準備中です。原文の説明を表示しています。