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-data-collectiongit 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-data-collection)<a href="https://agentmods.dev/commands/griddynamics/rosetta/testgen-flow-data-collection"><img src="https://agentmods.dev/badge/commands/griddynamics/rosetta/testgen-flow-data-collection.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.00016 | $0.02422 |
| Opus 5 | $0.00008 | $0.01211 |
| Sonnet 5 | $0.00003 | $0.00484 |
| Haiku 4.5 | $0.00002 | $0.00242 |
Grade A, and why
testgen-flow-data-collection 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 — 217 lines — stays where its author put it; the contents beside it link to each section on GitHub.
<testgen_flow_data_collection>
<description_and_purpose> Extract all relevant data from the Issue Tracker ticket and related Wiki / documentation sources to establish baseline for gap analysis and requirements generation. </description_and_purpose>
<workflow_context>
- Phase 1 of 7 in
testgen-flow - Input: initial user request +
initial-data.md - Output:
raw-data.mdwith extracted Issue Tracker and Wiki data - Prerequisite: Phase 0 complete
- Collection skill:
data-collection(single canonical collector). This phase resolves each in-scope provider and passes its role + provider to the skill; the skill loads the role-named binding. - Provider resolution (merge evidence; providers are NOT hardcoded):
- Providers were resolved in Phase 0 (
testgen-project-config.mddata sources, prefilled fromgain.jsonsdlc.issue_tracker(_project)/sdlc.wiki(_project)). - Reconcile with explicit user names/handles (which win for this run) and recognizable provider URLs in
initial-data.md(valid evidence when unambiguous). - Evidence conflicting or ambiguous → ask only about the unresolved provider/input; never silently choose between conflicting systems.
- Wiki scope clearly absent →
SKIPPED_NO_CONFIG(record the gap + skip that source, do not fabricate a provider). The Issue Tracker source is required.
- Providers were resolved in Phase 0 (
- Integrations: Issue Tracker + Wiki per the parent Terminology (Jira and Confluence are the canonical examples throughout this phase). </workflow_context>
<phase_steps>
- Extract Issue Tracker ticket data
- Get Wiki documentation
- Create raw data document
- Update state file </phase_steps>
<extract_ticket step="1.1">
- Read
plans/testgen-{TICKET-KEY}/initial-data.md(contributes the original user prompt and a pointer to the project config) and the original user request. - Resolve the Issue Tracker provider per
<workflow_context>. If unresolvable with scope active, re-read config; still absent → record the gap and stop Phase 1. - Extract ticket key from user input (parse from URL if needed). Ticket-key extraction failure path: if no key can be parsed (no URL, malformed input, ambiguous candidates): stop Phase 1, ask the user once for the exact ticket key (
PROJ-NNNform), do not proceed until the user provides it. After 2 unsuccessful re-asks, recordPhase 1 blocked: ticket key unresolvableintestgen-state.mdand stop. - USE SKILL
data-collectionwith roleIssue Tracker, the resolved provider, the resolved ticket key, and the ticket section of<create_raw_data>'s minimum-output contract; the skill loads its issue binding and adapts the canonical Jira examples to the target system. Retrieve fields: summary, description, status, issuetype, priority, labels, components, assignee, reporter, comments (up to 10). Redaction runs insidedata-collectionviasensitive-databefore write.
</extract_ticket>
<get_wiki step="1.2">
- Resolve the Wiki provider per
<workflow_context>. If no Wiki is in scope, applySKIPPED_NO_CONFIG: recordWiki Source: Skipped — no Wiki configuredand proceed ticket-only. - USE SKILL
data-collectionwith roleWiki, the resolved provider, the Wiki input handle(s), and the Wiki section of<create_raw_data>'s contract. The skill's documentation binding owns URL parsing, direct-URL-vs-search precedence, child-page traversal, truncation, deduplication, permission fallbacks, AND the authenticated reads/searches in one binding — no second skill to reconcile against; its canonical Confluence examples adapt to the target system. Redaction runs insidedata-collectionviasensitive-databefore write. - Search-term seed (passed to
data-collectionwhen no URLs supplied): project key (from ticket key), labels, component names, key terms from summary/description. - Fallback: when the binding reports zero pages after URL + search + its ask-once user fallback, record
Wiki Source: not available — proceeded ticket-onlyin the data collection summary and continue. Do NOT fabricate documentation content. </get_wiki>
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 · 217 lines · 16 tokens per session scan A ccdd91455769
testgen-flow-data-collection is a command published in the GitHub repository griddynamics/rosetta (342 stars, last pushed today), licensed Apache-2.0. It adds 16 tokens to every session and 2,422 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.