Skip to main content

structured-questions

How to use ask_user_question — the single operator-input channel for every interview question, including free-form fields via allow_other=true.

설치로 이동

소스 정보

저장소
BitterSecurity/Decepticon
최근 소스 활동
2026년 6월 27일 18:25
감지된 SKILL.md 언어
영어
스타
5,611
포크
1,061

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
structured-questions
description
How to use ask_user_question — the single operator-input channel for every interview question, including free-form fields via allow_other=true.
allowed-tools
Read Write
metadata
{"subdomain":"planning","when_to_use":"interview the operator, ask a yes/no, pick engagement type, choose attack class, scope window, posture choice, multi-select kill-chain phases, free-form name / IP / contact","tags":"interview, ask_user_question, picker, multiple-choice","upstream_ref":"Soundwave operator-interview channel — ask_user_question structured input templates"}
# Structured Operator Questions (`ask_user_question`) The Soundwave interview has exactly **one** question channel: - `ask_user_question` — structured picker rendered in the CLI. For free-form dimensions (organization name, IP ranges, contact addresses) set `allow_other=true` and the picker appends a free-text fallback the operator can type into. There is no prose-question path. Every operator-facing question goes through this tool. ## When to call `ask_user_question` EVERY operator-facing question. There is no prose-question path. Provide 2–6 best-guess options for the dimension and always set `allow_other=true` so the operator can override with a custom answer when none of your predefined options fit. Typical dimensions: - **Engagement type**: External / Internal / Hybrid / Assumed-breach / Physical - **Attack class**: Web / Cloud / AD / Mixed - **Scope window**: Business hours / 24x7 / Custom - **Posture choices**: OPSEC level (Loud / Quiet / Stealth) - **Confirmations**: Two-option Yes / No after a derived assumption - **Phase selection**: Multi-select over kill-chain phases (set `multi_select=true`) - **Free-form fields** (organization / IP range / contact): still use the tool — list 2–4 plausible guesses + `allow_other=true`, the operator types the actual value via the Other fallback if your guesses miss. The tool pauses the run while the operator picks, then resumes with the chosen `label` (or list of labels for multi-select, or free text when the operator chose `Other`). Treat the returned value as authoritative. ## Habits (the typed tool signature already encodes the schema) - Mark the most common option with a trailing ` (Recommended)` on its `label` - **Never invent an `Other` option yourself** — set `allow_other=true` and the picker appends a free-text fallback that returns the operator's text verbatim - For multi-select questions, set `multi_select=true`; the tool returns the list of chosen labels (in selection order) ## Examples ### Single-select, with recommendation ```python ask_user_question( question="What is the operator's posture for this engagement?", header="OPSEC", options=[ {"label": "Quiet (Recommended)", "description": "Minimize detection signals; rate-limited recon"}, {"label": "Loud", "description": "Speed over stealth; full-rate scans permitted"}, {"label": "Stealth", "description": "Avoid detection at all costs; manual cadence"}, ], ) ``` ### Confirmation with `allow_other` for custom note ```python ask_user_question( question="Is the testing window strictly business hours (09:00–18:00, client TZ)?", header="Window", options=[ {"label": "Yes", "description": "Business hours only"}, {"label": "No", "description": "24x7 testing permitted"}, ], allow_other=True, # operator can type a custom window if neither fits ) ``` ### Multi-select for kill-chain phases ```python ask_user_question( question="Which kill-chain phases are in scope?", header="Phases", options=[ {"label": "Recon", "description": "Passive + active enumeration"}, {"label": "Exploitation", "description": "Initial access via discovered weaknesses"}, {"label": "Post-exploit", "description": "Privilege escalation, lateral movement, C2"}, {"label": "Exfiltration", "description": "Crown-jewel retrieval simulation"}, ], multi_select=True, ) ``` ## Anti-patterns - Asking via prose (chat message) instead of `ask_user_question` — even free-form fields go through the tool. Provide 2–4 best-guess options + `allow_other=true` so the operator can type a custom answer if your guesses miss. The tool is the ONLY operator-input channel. - Adding an `"Other"` entry to `options` manually — set `allow_other=true` and the picker appends the free-text fallback for you - Header longer than 12 chars (`"Engagement Type"` → use `"Eng. type"`) - Re-asking the same dimension after the operator already answered — the returned value is authoritative; record it and move to the next dimension - Pausing for per-document approval after writing RoE / CONOPS / Deconfliction — there is no approval gate between documents. The approval moments are (a) each `ask_user_question` picker during the interview, and (b) the final bundle summary right before `complete_engagement_planning`.
GitHub에서 보기