Borrowing it
Nothing to install: this file belongs to couimet/rangeLink. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/couimet/rangeLink/main/.claude/skills/affected-tests/SKILL.mdgit clone --depth 1 https://github.com/couimet/rangeLinkWrote 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/couimet/rangelink/affected-tests)<a href="https://agentmods.dev/skills/couimet/rangelink/affected-tests"><img src="https://agentmods.dev/badge/skills/couimet/rangelink/affected-tests/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/couimet/rangelink/affected-tests"><img src="https://agentmods.dev/badge/skills/couimet/rangelink/affected-tests.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00035 | $0.01437 |
| Opus 5.5 | $0.00014 | $0.00575 |
| Sonnet 5.5 | $0.00007 | $0.00287 |
| Haiku 4.5 | $0.00003 | $0.00144 |
Grade A, and why
affected-tests 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 2mo 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.
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 — 157 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Affected Tests
Generate a compact pnpm test:release:grep "..." command covering every integration test changed on the current branch vs the base branch. Includes both regular and [assisted] TCs so the user can run them manually before CI handles automated-only validation. Appends the result as a ## Affected Tests block at the end of the finish-issue note.
Input: $ARGUMENTS
If no base branch is provided, read the finish-issue note (most recent .claude-work/notes/*finish*.txt) and extract Base branch: from it. If neither exists, default to origin/main.
Step 1: Determine the Base Branch
Check if the user provided a base branch argument. If not, find the most recent finish-issue note:
ls -t .claude-work/notes/*finish*.txt 2>/dev/null | head -1
If a note exists, extract Base branch: from it. Otherwise use origin/main. Record this as BASE_BRANCH.
Step 2: Find Changed Integration Test Files
git diff --name-only BASE_BRANCH -- packages/rangelink-vscode-extension/src/__integration-tests__/suite/
If no files changed, print "No integration test files changed" and stop.
Step 3: Extract All TC IDs
Extract TC IDs from test(...) calls, filtering out log-marker prefixes (before-*, after-*, rl-*, ctxmenu-*, csc-*, clean-*):
for f in $(git diff --name-only BASE_BRANCH -- packages/rangelink-vscode-extension/src/__integration-tests__/suite/); do
grep -oE "test\('(\[assisted\] )?[a-z]+(-[a-z]+)+-[0-9]+" "$f" | sed "s/test('//" | sed "s/\[assisted\] //"
done | grep -vE "^(before-|after-|rl-|ctxmenu-|csc-|clean-)" | sort -u > /tmp/tc-ids.txt
This captures both [assisted] and regular test IDs, filtering out internal log markers.
Step 4: Compress into a Compact Grep Expression
Save the IDs to /tmp/tc-ids.txt then run this Node.js script inside the project directory:
const fs = require('fs');
const ids = fs.readFileSync('/tmp/tc-ids.txt', 'utf8').trim().split('\n');
const groups = {};
for (const id of ids) {
const m = id.match(/^(.+)-(\d+)$/);
if (!m) continue;
const [, slug, num] = m;
if (!groups[slug]) groups[slug] = new Set();
groups[slug].add(parseInt(num, 10));
}
const compressSet = (numSet) => {
const nums = [...numSet].sort((a, b) => a - b);
if (nums.length === 0) return '';
if (nums.length === 1) return String(nums[0]).padStart(3, '0');
// Group by first 2 digits of zero-padded representation
const padGroups = {};
for (const n of nums) {
const padded = String(n).padStart(3, '0');
const prefix = padded.slice(0, 2);
const one = padded[2];
if (!padGroups[prefix]) padGroups[prefix] = new Set();
padGroups[prefix].add(one);
}
const parts = [];
for (const [prefix, oneSet] of Object.entries(padGroups)) {
const ones = [...oneSet].sort();
if (ones.length === 10) {
parts.push(prefix + '[0-9]');
continue;
}
let charClass = '';
let i = 0;
while (i < ones.length) {
let j = i;
while (j + 1 < ones.length && ones[j + 1] === String.fromCharCode(ones[j].charCodeAt(0) + 1)) {
j++;
}
if (j > i) {
charClass += ones[i] + '-' + ones[j];
i = j + 1;
} else {
charClass += ones[i];
i++;
}
}
if (charClass.length === 1) {
parts.push(prefix + charClass);
} else {
parts.push(prefix + '[' + charClass + ']');
}
}
return parts.length === 1 ? parts[0] : '(' + parts.join('|') + ')';
};
const featureParts = Object.entries(groups)
.sort(([a], [b]) => a.localeCompare(b))
.map(([slug, numSet]) => slug + '-' + compressSet(numSet));
const result = featureParts.join('|');
console.log(result);
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.
- 2mo ago First seen · 157 lines · 35 tokens per session scan A 09fb2ddb579a
affected-tests is a skill published in the GitHub repository couimet/rangeLink (10 stars, last pushed 8d ago), licensed MIT. It adds 35 tokens to every session and 1,437 once invoked, about $0.0001 per session on Opus 5.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-08-31.
Other skills, from other repositories
browser-qa-delivery
Validate a Design Studio HTML artifact in the sandbox browser, fix rendering and runtime defects, then deliver exactly the tested file.
test-execution
Run unit and integration tests, generate coverage reports, and view results. Use to validate code changes before committing or merging.
kb-github-a11y-scanner
Reference data, not a reviewer. Integrate GitHub Accessibility Scanner. Detects configuration, parses scanner issues, correlates with local scans, and tracks Copilot-assigned fixes.
visual-regression
Detect unintended UI changes with reproducible rendered screenshots and reviewed baselines. Use when adding screenshot checks or investigating layout/theme regressions; do not approve a changed image merely to make the test green.
agent-e2e-test-specialist
Specialist subagent: Playwright, Cypress, and visual regression testing specialist. Use only when the user explicitly asks for E2E tests, browser test automation, or visual regression testing. Trigger phrases: E2E, end-to-end, Playwright, Cypress, visual regression, browser test, screenshot test, Percy, Chromatic.
testing
TDD/BDD testing principles. Use when writing tests, reviewing test coverage, setting up testing, or discussing test strategy and test architecture.