Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/griddynamics/rosetta/testgen-flow-question-generationgit clone --depth 1 https://github.com/griddynamics/rosettaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/griddynamics/rosetta/testgen-flow-question-generation)<a href="https://agentmods.dev/commands/griddynamics/rosetta/testgen-flow-question-generation"><img src="https://agentmods.dev/badge/commands/griddynamics/rosetta/testgen-flow-question-generation.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00015 | $0.02777 |
| Opus 5 | $0.00008 | $0.01388 |
| Sonnet 5 | $0.00003 | $0.00555 |
| Haiku 4.5 | $0.00002 | $0.00278 |
Grade A, and why
testgen-flow-question-generation scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 277 lines — stays where its author put it; the contents beside it link to each section on GitHub.
<testgen_flow_question_generation>
<description_and_purpose> Generate specific, actionable clarification questions based on analysis findings, collect user answers, and validate completeness. This is the primary HITL gate — user input is required before proceeding to requirements generation. </description_and_purpose>
<workflow_context>
- Phase 3 of 7 in
testgen-flow - Input:
analysis.mdfrom Phase 2 - Output:
questions.md(for user),answers.md(structured user responses by AI based on answers inquestions.md) - Recommended skills:
questioning - Prerequisite: Phase 0, 1, 2 complete
- HITL GATE: MUST WAIT for user to provide answers. Explicit approval required. Do not assume user approved — if user sends questions or suggestions, that is reviewing, not approval. </workflow_context>
<phase_steps>
- Generate clarification questions (loads analysis + formats by issue type) → step 3.1
- Prioritize and create questions document → step 3.2
- Validate user answers → step 3.3
- Create answers document → step 3.4
- Update state file → step 3.5 </phase_steps>
<generate_questions step="3.1">
- Read
plans/testgen-{TICKET-KEY}/analysis.md - USE SKILL
questioningto formulate targeted clarification questions from analysis findings - For each contradiction: present both conflicting source quotes, ask which is correct, offer options (a/b/c/other)
- For each gap: explain what's missing and why needed, provide examples or options
- For each ambiguity: quote vague statement, ask for specific definition or measurement
- Related issues can be combined: e.g.,
Q5: G3, G4, A2 - User Permissions Model - Quality rules: specific, actionable, includes context, offers options — NOT vague or open-ended
<question_format_for_contradictions>
### Q[N]: [Issue ID] - [Brief Title]
**Issue Type**: Contradiction
**Context**:
- Ticket states: "[quote]"
- Wiki states: "[quote]"
**Question**: Which statement is correct, or should we use a different approach?
**Options**:
a) Use the ticket version: [specific value]
b) Use the Wiki version: [specific value]
c) Use alternative: [specify]
d) Other (please specify)
**Your Answer**:
[Leave blank for user]
</question_format_for_contradictions> <question_format_for_gaps>
### Q[N]: [Issue ID] - [Brief Title]
**Issue Type**: Gap (Functional/Non-Functional/Data/Business Logic/Dependency)
**Context**: [Where this is needed in implementation]
**Question**: [Specific question about missing information]
**Examples/Options** (if applicable):
- Option 1: [example]
- Option 2: [example]
- Other: [allow free text]
**Your Answer**:
[Leave blank for user]
</question_format_for_gaps> <question_format_for_ambiguities>
### Q[N]: [Issue ID] - [Brief Title]
**Issue Type**: Ambiguity
**Vague Statement**: "[quote from source]"
**Question**: Can you clarify what "[vague term]" means specifically?
**Need to Know**:
- [Specific aspect 1]
- [Specific aspect 2]
**Your Answer**:
[Leave blank for user]
</question_format_for_ambiguities>
<good_questions>
- "Should the authentication use OAuth 2.0, SAML, or Basic Auth?"
- "What is the maximum response time requirement (in milliseconds)?"
- "Should users be able to delete records permanently, or soft-delete only?" </good_questions>
<poor_questions>
- "How should authentication work?" (too broad)
- "Should it be fast?" (vague)
- "Tell me about the feature." (not specific) </poor_questions> </generate_questions>
<create_questions_document step="3.2">
- Group questions by priority: P0 (Critical, MUST answer), P1 (High), P2 (Medium), P3 (Low)
- Create
plans/testgen-{TICKET-KEY}/questions.mdusing thequestions.mdtemplate defined in<questions_template>below - Update state to "AWAITING USER INPUT"
- Notify the user and direct them to give answers by editing the file: give the
questions.mdpath and ask them to fill the[Leave blank for user]fields there. A short chat summary of the questions is fine for orientation, but the authoritative answers are collected inquestions.md— do NOT run a chat Q&A in its place, and do NOT accept chat replies as a substitute for the file (validate_answers, step 3.3, reads the file, not the chat). This keeps every question visible and answerable to the user, instead of only the ones the agent chose to surface in chat. - PAUSE — WAIT FOR USER INPUT
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today First seen · 277 lines · 15 tokens per session scan A be2949680957
testgen-flow-question-generation is a command published in the GitHub repository griddynamics/rosetta (342 stars, last pushed today), licensed Apache-2.0. It adds 15 tokens to every session and 2,777 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other commands, from other repositories
resolve-conflicts
Resolve merge conflicts on a GitHub PR by merging the base branch into the PR branch in an isolated git worktree, with JSON/markdown-aware conflict resolution.
xpoz-best-practices
Reference docs for Xpoz query syntax, pagination, field selection, platform tools, and authentication. Usage: /xpoz-best-practices.
align
Verify spec-vs-spec alignment and brevity across the intent tree. This is NOT QA — QA checks code against a spec; alignment checks whether specs are consistent with their ancestors and internally tight against the Brevity Contract. The aligner runs three passes per walk.
deploy-check
Pre-flight verification before pushing to main. Reproduces the CI gates locally so the push doesn't fail in production.
validate-fix
Validate a proposed React fix with React-Sentinel assertions or replay checks.
rclone_mkdir
Make the path if it doesn't already exist.