Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/PramodDutta/qaskillsnpx agentmods add skills/pramoddutta/qaskills/ai-test-orchestrationWrote 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/skills/pramoddutta/qaskills/ai-test-orchestration)<a href="https://agentmods.dev/skills/pramoddutta/qaskills/ai-test-orchestration"><img src="https://agentmods.dev/badge/skills/pramoddutta/qaskills/ai-test-orchestration/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/pramoddutta/qaskills/ai-test-orchestration"><img src="https://agentmods.dev/badge/skills/pramoddutta/qaskills/ai-test-orchestration.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 8 findings, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium MCP Rug Pull · line 614 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 966 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 948 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 951 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 954 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 957 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 960 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 969 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
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.1 | $0.00044 | $0.07293 |
| Opus 5.5 | $0.00018 | $0.02917 |
| Sonnet 5.5 | $0.00009 | $0.01459 |
| Haiku 4.5 | $0.00004 | $0.00729 |
Grade A, and why
AI Test Orchestration scanned grade A with 1 finding 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 1mo ago.
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.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
import { execSync } from 'child_process'; How it starts
The opening of the file, as written. The whole thing — 971 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AI Test Orchestration Skill
You are an expert software engineer specializing in AI-powered test orchestration and intelligent test management. When the user asks you to implement, optimize, or debug test selection, prioritization, or parallel execution strategies, follow these detailed instructions.
Core Principles
- Test the changed code first -- Prioritize tests that cover recently modified files and functions.
- Learn from history -- Use historical pass/fail data to predict which tests are likely to fail.
- Quarantine, don't ignore -- Flaky tests should be isolated and tracked, not deleted or skipped.
- Optimize for feedback speed -- Run the most likely-to-fail tests first so developers get fast signals.
- Distribute intelligently -- Split test suites across parallel workers based on historical duration, not file count.
- Measure and iterate -- Track metrics like time-to-first-failure, false positive rate, and test suite efficiency.
- Fail fast, verify thoroughly -- Fast feedback on PR checks, comprehensive verification on merge.
Project Structure
project/
src/
orchestrator/
test-selector.ts
risk-scorer.ts
impact-analyzer.ts
parallel-splitter.ts
flaky-detector.ts
prediction-model.ts
data/
test-history.ts
git-analysis.ts
coverage-map.ts
reporters/
orchestration-report.ts
metrics-collector.ts
config/
orchestration.config.ts
scripts/
collect-test-data.ts
train-model.py
analyze-flakiness.ts
tests/
orchestrator/
test-selector.test.ts
risk-scorer.test.ts
impact-analyzer.test.ts
Intelligent Test Selection Based on Code Changes
// src/orchestrator/test-selector.ts
import { execSync } from 'child_process';
import { CoverageMap } from '../data/coverage-map';
interface TestSelection {
mustRun: string[]; // Tests directly covering changed code
shouldRun: string[]; // Tests with transitive dependencies on changed code
canSkip: string[]; // Tests with no relation to changes
confidence: number; // 0-1, how confident we are in the selection
}
interface ChangedFile {
path: string;
additions: number;
deletions: number;
changedFunctions: string[];
}
export class TestSelector {
private coverageMap: CoverageMap;
constructor(coverageMap: CoverageMap) {
this.coverageMap = coverageMap;
}
async selectTests(baseBranch: string = 'main'): Promise<TestSelection> {
const changedFiles = this.getChangedFiles(baseBranch);
const allTests = this.coverageMap.getAllTests();
const mustRun = new Set<string>();
const shouldRun = new Set<string>();
for (const file of changedFiles) {
// Direct coverage: tests that execute lines in this file
const directTests = this.coverageMap.getTestsCoveringFile(file.path);
directTests.forEach((t) => mustRun.add(t));
// Function-level precision: only tests covering changed functions
if (file.changedFunctions.length > 0) {
for (const fn of file.changedFunctions) {
const fnTests = this.coverageMap.getTestsCoveringFunction(file.path, fn);
fnTests.forEach((t) => mustRun.add(t));
}
}
// Transitive dependencies: tests covering files that import changed file
const dependents = this.coverageMap.getDependentsOf(file.path);
for (const dep of dependents) {
const depTests = this.coverageMap.getTestsCoveringFile(dep);
depTests.forEach((t) => {
if (!mustRun.has(t)) shouldRun.add(t);
});
}
}
const canSkip = allTests.filter(
(t) => !mustRun.has(t) && !shouldRun.has(t)
);
const confidence = this.coverageMap.isComplete()
? 0.95
: 0.7; // Lower confidence if coverage data is stale
return {
mustRun: [...mustRun],
shouldRun: [...shouldRun],
canSkip,
confidence,
};
}
private getChangedFiles(baseBranch: string): ChangedFile[] {
const diffOutput = execSync(
`git diff --name-only --diff-filter=ACMR ${baseBranch}...HEAD`,
{ encoding: 'utf-8' }
).trim();
if (!diffOutput) return [];
return diffOutput.split('\n').map((filePath) => {
const stat = execSync(
`git diff --numstat ${baseBranch}...HEAD -- "${filePath}"`,
{ encoding: 'utf-8' }
).trim();
const [additions, deletions] = stat.split('\t').map(Number);
// Extract changed function names from diff
const diffContent = execSync(
`git diff -U0 ${baseBranch}...HEAD -- "${filePath}"`,
{ encoding: 'utf-8' }
);
const changedFunctions = this.extractChangedFunctions(diffContent);
return { path: filePath, additions, deletions, changedFunctions };
});
}
private extractChangedFunctions(diffContent: string): string[] {
const functionPattern = /^@@.*@@\s+(?:async\s+)?(?:function\s+)?(\w+)/gm;
const functions: string[] = [];
let match: RegExpExecArray | null;
while ((match = functionPattern.exec(diffContent)) !== null) {
functions.push(match[1]);
}
return [...new Set(functions)];
}
}
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.
- 1mo ago First seen · 971 lines · 44 tokens per session scan A 29dbdc327d91
AI Test Orchestration is a skill published in the GitHub repository PramodDutta/qaskills (237 stars, last pushed 5d ago), licensed MIT. It adds 44 tokens to every session and 7,293 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
test-case-to-katalon-studio
Convert Katalon True Platform/TestOps manual test cases into Katalon Studio automation inside a local Studio Test Project checkout. Use when you need to author or extend a .tc test case file and its paired Groovy script under Scripts/, keep test case variable GUIDs consistent with the .ts test suite bindings that read…
test-estimation
Estimate testing effort, duration, and resourcing for a Katalon True Platform/TestOps cycle. Use when the question is how long testing will take, how many testers it needs, whether the scope fits the sprint window, or what a scope change costs in person-hours. Sizes design, manual execution, automated execution and…
true-platform-testing
End-to-end Katalon True Platform testing workflow and lifecycle router. Use when one request spans several stages and no single skill owns it, for example analyze a requirement, design and import the cases, build a suite, run it with AI, and report the outcome. Also use to route any testing request across the 7-stage…
exploratory-charter
Write, run, and debrief exploratory testing charters against Katalon True Platform/TestOps when there is no script to follow. Use when you need to turn a vague area into a charter (mission, areas, oracles, timebox), run a timeboxed unscripted session, log what you find as session notes, judge which findings are real…
test-data
Design, source, seed, and tear down the test data a Katalon True Platform test case or an automated suite runs on. Use when the steps are already settled and the blocker is the values, for example which data classes a case needs, which records must exist before a run, how to keep literals out of the step text and into…
test-reporting
Report Katalon True Platform/TestOps quality metrics to people outside QA. Use when you need to answer a stakeholder question with testing data, choose the few metrics that actually answer it, trend coverage, execution health, defect risk and stability across several releases, sprints, or iterations rather than inside…