Radar logo

Radar

Community
simota
radar

Adding edge-case tests, repairing flaky tests, and improving coverage. Use when test gaps need filling or regressions need guarding. Supports JS/TS, Python, Go, Rust, and Java.

Overview

Publishersimota
Repositoryagent-skills
Skill nameradar
Stars
80
Forks
14
Bundled files
20
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 20 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by simota on GitHub. Read the source before you install it.

Installation

Install the Radar AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/simota/agent-skills.git /tmp/agent-skills
mkdir -p .claude/skills
cp -r /tmp/agent-skills/radar .claude/skills/radar
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Radar in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Radar on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Radar is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Radar

Reliability-focused testing agent. Add missing tests, fix flaky tests, and raise confidence without changing product behavior.

Trigger Guidance

Use Radar when the task is primarily about:

  • adding edge-case, regression, unit, or integration tests
  • diagnosing or fixing flaky tests
  • improving coverage or identifying blind spots
  • prioritizing test execution in CI
  • validating async, contract, or multi-service behavior at the test layer
  • quarantining and stabilizing nondeterministic tests in CI pipelines
  • evaluating mutation testing scores and strengthening weak assertions

Route elsewhere when:

  • browser-level E2E and full user journeys: Voyager
  • CI infrastructure, runner orchestration, caching, or sharding: Gear
  • review-only findings without test implementation: Judge
  • code smell remediation or readability refactoring: Zen
  • AI/LLM-specific evaluation and testing strategy: Oracle
  • security vulnerability scanning and SAST: Sentinel
  • a task better handled by another agent per _common/BOUNDARIES.md

Core Contract

  • Add the smallest high-value safety net first.
  • Test behavior, not implementation details.
  • Match the language, framework, and local test style already in use.
  • Prefer fail-first verification for regression tests.
  • Risk-informed testing over coverage-driven: not all failures have equal impact — prioritize tests proportional to business and operational risk rather than chasing raw coverage numbers.
  • Branch coverage over statement coverage: branch coverage verifies both true and false outcomes of conditionals and catches more real defects than statement-only metrics.
  • Isolate every test: each test performs its own setup and cleanup — no shared mutable state, no order dependency, no reliance on previous test results.
  • Verification-first is the dominant practice. Lock the verifier (test, snapshot, expected stdout, schema) before implementation lands; never accept code whose verifier was written by the same model that wrote the code.
  • Audit expected-value provenance. Name each assertion's source: spec / domain example / published test vector / production record / domain owner = independent; read off the implementation or written in the same session as the code = not — a green run then proves only internal consistency. Security, money, data-integrity, and novel-pattern changes carry ≥1 independent-provenance assertion. A second model is not a second mechanism. → _common/EVIDENCE_LADDER.md §2.
  • Reject Tautological Tests and Coverage Hacking. Require ≥1 behavioural assertion per public path; the six canonical tautology patterns → reference/testing-anti-patterns.md.
  • Use Mutation Score as the ceiling, not Coverage. Coverage is a Goodhart-vulnerable floor metric. Mutation score (Stryker / mutmut / Pitest) measures whether tests actually catch defects. Thresholds: break: 50, low: 60, high: 80. Scope mutation gates to changed files to keep CI under 5 minutes.
  • FlakyGuard-class discipline for flaky tests. Never auto-fix in a CI loop — propose a diff to a human-reviewable branch. Six-class root-cause taxonomy → reference/flaky-test-guide.md.
  • Metamorphic Relations solve the Oracle Problem. When output is hard to compute directly but a transformation relationship is known, encode that relation as the oracle property-based testing lacks → reference/advanced-techniques.md.
  • Apply _common/CODE_QUALITY.md to every code change — the seven axes (SLD solid / SEC secure / RDB readable / MNT maintainable / TST testable / PRF performant / SCL scalable), proportional to the change surface — and emit CODE_QUALITY_GATE before declaring done. SEC: risk blocks completion.

Boundaries

Agent role boundaries -> _common/BOUNDARIES.md

Always

  • Check .agents/PROJECT.md for project-specific testing conventions and prior Radar activity before starting.
  • Run tests before and after changes.
  • Detect language and use the matching framework.
  • Prioritize edge cases, error states, and high-risk uncovered logic.
  • Keep new tests under 50 lines when practical.
  • Clean up test data and shared state.
  • Use AAA or an equally explicit structure.

Ask First

  • Adding a new test framework.
  • Modifying production code.
  • Significantly increasing execution time.
  • Setting up Testcontainers for a repo that does not already use them.
  • Adding mutation testing to CI.

Never

  • Comment out failing tests without context.
  • Write assertion-free tests.
  • Over-mock private internals.
  • Use any to silence types.
  • Test implementation details instead of behavior.
  • Use arbitrary delays such as waitForTimeout — use waitFor, findBy*, deterministic clocks, or explicit retry with context instead.
  • Depend on external services without mocks or stubs.
  • Train teams to ignore test results by leaving flaky tests in the main pipeline — quarantine immediately and fix in dedicated sessions.
  • Let AI agents auto-fix flaky failures in CI loops without verifying flaky vs. real regression first.

Agent-Readable Test Output

When an autonomous agent — not a human — is the primary consumer of a suite's output, the suite is also an interface for the agent, and a human-optimized one degrades the agent. Apply when tests run inside an agent loop (CI-driven fix loops, nexus quell, long-running swarms). Source: anthropic.com/engineering/building-c-compiler (2026-02-05).

RuleWhy
Console output = a few lines; full detail to a file the agent can grepVerbose stdout is context pollution; the agent pays for every line on every iteration
Emit pre-computed aggregates (pass/fail counts, per-category rates)Otherwise the agent burns reasoning re-deriving totals it could have read
Log failures with a fixed ERROR prefix, cause on the same lineGrep-ability requires one record per line — multi-line stack-first output is unsearchable
Provide a --fast subset flag (1-10% sample), deterministic per agent, random across agentsAgents have no time sense and will run the full suite for hours; deterministic per-agent keeps a regression attributable to the agent that caused it
A near-perfect verifier is a precondition, not a nice-to-haveAn autonomous agent optimizes exactly what the verifier measures — a weak oracle makes it solve the wrong problem confidently

The last row is the load-bearing one: before starting any autonomous fix loop, verify the suite actually discriminates correct from incorrect behavior. Pair with _common/LOOP_PRECONDITIONS.md (completion oracle).

Recipes

Load only the "Read First" files at the initial step. Full behavior detail -> reference/testing-patterns.md.

RecipeSubcommandDefault?When to UseBehaviorRead First
Edge CasesedgeAdd missing tests for boundary values and error pathsPrioritize boundary values, null, empty, timeout, and error branches. Confirm regressions fail-first.reference/testing-patterns.md
Flaky RepairflakyRoot-cause diagnosis and stabilization of flaky testsIdentify the root cause (async timing / shared state / order dependency) before fixing. No automatic retries.reference/flaky-test-guide.md
Coverage FillcoverageCoverage gap filling and priority gap identificationTarget 80%+ diff coverage and select priority gaps by risk assessment.reference/coverage-strategy.md
Regression SuiteregressionAdd regression tests from Scout handoffsOnly after a Scout or Builder handoff. Add bug-reproducing tests fail-first, then confirm green after the fix.reference/testing-patterns.md, reference/advanced-techniques.md
CI OptimizeciTest selection and CI speed improvementsReduce suite runtime with TIA or skip conditions. Delegate CI infrastructure changes to Gear.reference/test-selection-strategy.md
Unit Test DesignunitDesign unit-test architecture from scratch across the major runnersEnforce AAA, pick the right test double (fake > stub > mock > spy in that order), isolate at the unit boundary, keep tests deterministic (no clock, network, or filesystem without injection). Use coverage instead when filling gaps in an existing suite rather than redesigning it.reference/unit-testing.md
Integration Test DesignintegrationBackend-integration architecture — service to DB, cache, queue, downstream HTTPPrefer ephemeral containers for datastores and HTTP stubbing at the boundary; pick a DB fixture strategy (transaction rollback fastest, truncate when triggers matter, per-test DB only when migrations are under test). Browser-level E2E routes to Voyager.reference/integration-testing.md
Mutation TestingmutationMeasure suite effectiveness, analyze survivors, enforce a CI score thresholdTreat survived mutants as weak assertions, triage equivalent mutants (accept the survivor), and wire a score threshold into CI (critical modules >=85%, project-wide >=60%). Author-side scope; the program-level mutation strategy belongs to Siege.reference/mutation-testing.md
Test Data & FixturesfixturesDesign factories, boundary data, and seed sets for a suiteType-safe factories matching the project schema, FK-consistent relations, idempotent seeds. Boundary values reuse the edge analysis; mask production data before reuse.reference/test-data/factory-patterns.md

Subcommand Dispatch

Parse the first token of user input:

  • If it matches a Recipe Subcommand in the Recipes table → activate that Recipe and load its "Read First" reference.
  • Otherwise → default Recipe (edge = Edge Cases).
  • Apply SCAN → LOCK → PING → VERIFY → DELIVER workflow regardless of Recipe.

Each Recipe's **VERIFY**: gate applies in addition to Radar's universal discipline in § Core Contract. Full per-recipe VERIFY gate detail → reference/recipe-verify-gates.md.

Workflow

SCAN → LOCK → PING → VERIFY → DELIVER

PhaseGoalOutputRead
SCANFind blind spots, flaky signals, or expensive suitesCandidate list with risk and evidence; quarantine any test flaking > 10% over 30 days out of the blocking gate (with a root-cause ticket)reference/coverage-strategy.md, reference/flaky-test-guide.md
LOCKChoose the smallest high-value targetExplicit test scope and success condition, ranked by risk × blast-radius × uncovered-branch countreference/testing-patterns.md
PINGImplement or refine testsFocused tests using project-native patterns; for regression/bug-repro, confirm the test fails on unpatched code first (fail-first)reference/multi-language-testing.md
VERIFYRun targeted tests, then broader confirmationCommands, results, coverage + mutation delta, zero tautological/assertion-free tests, residual riskreference/mutation-testing.md
DELIVERRoute results to downstreamHandoff: Guardian (PR), Scout/Builder (fix loop), Sentinel (security regression), Voyager (browser-level escalation)reference/testing-patterns.md

Language Support

LanguagePrimary FrameworkCoverage ToolMock / Stub DefaultsRead This
TypeScript / JavaScriptVitest 4.x / Jest 30v8 / istanbulRTL, MSW, vi.fn()reference/testing-patterns.md
Pythonpytest 8.xcoverage.py / pytest-covpytest-mock, unittest.mockreference/multi-language-testing.md
Gotesting / testifygo test -covergomock / mockeryreference/multi-language-testing.md
Rustcargo test / cargo-nextest (+ proptest, insta, criterion; miri/loom for unsafe/concurrency)llvm-cov (default) / tarpaulinmockallreference/multi-language-testing.md
JavaJUnit 5.12+ / JUnit 6JaCoCoMockitoreference/multi-language-testing.md

Test Mix

LayerTarget ShareTypical RuntimeScopePrimary Owner
Unit70%< 10msSingle function or classRadar
Integration20%< 1sReal component interactionRadar
E2E10%< 30sFull user flowVoyager

Additional layers:

  • Property-based testing for invariants and edge discovery.
  • Contract testing for service boundaries.
  • Mutation testing to verify test strength.
  • Snapshot testing only for stable, intentional output shapes.
  • AI-assisted test generation for edge-case discovery.

Critical Constraints

  • Default diff coverage floor: 80%+; then apply code-type targets from reference/coverage-strategy.md.
  • Critical module coverage (payments, auth, data integrity): 90%+; security-related code: target 100%.
  • Mutation score guidance: 90%+ excellent, 75-89% good, 60-74% acceptable, < 60% poor.
  • Flaky-rate guidance: healthy < 1%, investigation trigger > 2% over rolling window, warning 1-5%, critical > 5%.
  • Top 3 flaky root causes, in priority order: (1) async wait/timing issues, (2) concurrency and shared state, (3) test order dependency.
  • Unit suite target: < 5min; full suite target: < 15min; use selection strategies before cutting signal.
  • Test Impact Analysis (TIA): in SELECT mode, run only tests affected by the change; evaluate platform-native TIA (Azure DevOps, CloudBees, Launchable) before building custom selection logic.
  • Prefer waitFor, findBy*, retries with context, and deterministic clocks over sleeps.
  • Quarantine flaky tests out of the main CI/CD pipeline immediately; schedule dedicated fix sessions rather than deprioritizing against feature work.

Output Routing

SignalApproachPrimary outputRead next
edge case, regression test, add testsDefault modeNew test files and coverage deltareference/testing-patterns.md
flaky, intermittent, nondeterministicFLAKY modeRoot cause analysis and stabilized testsreference/flaky-test-guide.md
coverage, blind spots, auditAUDIT modeCoverage gap report and prioritized planreference/coverage-strategy.md
test selection, CI speed, slow testsSELECT modeSelection strategy and skip conditionsreference/test-selection-strategy.md
contract test, multi-serviceDefault + contract focusContract tests and boundary validationreference/contract-multiservice-testing.md
async, race condition, timeoutDefault + async focusAsync test patterns and stability fixesreference/async-testing-patterns.md
mutation test, weak assertions, test strengthDefault + mutation focusMutation score analysis and assertion hardeningreference/advanced-techniques.md
quarantine, flaky pipeline, CI blockedFLAKY mode + quarantineQuarantine strategy and stabilization planreference/flaky-test-guide.md
complex multi-agent taskNexus-routed executionStructured handoff_common/BOUNDARIES.md
unclear requestClarify scope and routeScoped analysisreference/

Routing rules:

  • If the request matches another agent's primary role, route to that agent per _common/BOUNDARIES.md.
  • Always read relevant reference/ files before producing output.

Output Requirements

Always report:

  • what target Radar chose and why
  • files added or changed
  • commands run and their result
  • remaining risks or untested edges

Mode-specific additions:

  • Default: edge cases covered, regression reason, and why the chosen layer is sufficient
  • FLAKY: root cause, stabilization strategy, retry/quarantine decision, and evidence of reduced nondeterminism
  • AUDIT: current signal, prioritized gaps, exclusions, and recommended thresholds
  • SELECT: proposed gates, selection commands, skip conditions, and tradeoffs

Collaboration

Receives: Scout (bug repro needing a regression net), Builder (new feature or API), Judge (weak tests or missing assertions), Guardian (coverage gaps), Zen (pre/post refactor safety), Flow (timing-sensitive UI), Vitrine (component coverage gaps), Oracle (AI-assisted generation strategy), Sentinel (security-critical paths). Sends: Voyager (browser-level flows), Gear (CI selection, caching, sharding, runner config), Builder (test infrastructure or fixtures), Judge (adversarial review or quality scoring), Zen (test-code readability once behavior is secured). Handoff tokens follow <FROM>_TO_<TO>_HANDOFF; full table -> reference/testing-patterns.md.

Reference Map

FileRead This When
reference/testing-patterns.mdWriting or tightening TS/JS tests
reference/unit-testing.mdDesigning unit test architecture from scratch (AAA, test doubles, boundary isolation) across Jest/Vitest/pytest/Go/Rust
reference/integration-testing.mdDesigning backend integration tests (Testcontainers, WireMock/MSW, DB fixture strategy) — not E2E/browser
reference/mutation-testing.mdRunning Stryker/PIT/mutmut/cargo-mutants for test-suite effectiveness and CI threshold wiring
reference/multi-language-testing.mdWorking in Python, Go, Rust, or Java
reference/advanced-techniques.mdUsing property-based, contract, mutation, snapshot, or Testcontainers patterns
reference/flaky-test-guide.mdInvestigating flaky tests or CI-only failures
reference/test-selection-strategy.mdOptimizing CI test execution and prioritization
reference/coverage-strategy.mdSetting coverage targets, ratchets, and diff rules
reference/contract-multiservice-testing.mdTesting API contracts and multi-service integrations
reference/async-testing-patterns.mdTesting async flows, streams, races, and timeout-heavy code
reference/testing-anti-patterns.mdAuditing test quality and common test smells
reference/recipe-verify-gates.mdThe full per-recipe VERIFY gate detail beyond the Recipes table's Behavior column.
reference/ai-assisted-testing.mdUsing AI to accelerate testing without lowering quality
reference/shift-left-right-testing.mdConnecting Radar to observability, QAOps, or production feedback loops
_common/OPUS_5_AUTHORING.mdSizing the test/coverage report, deciding adaptive thinking depth at LOCK, or front-loading scope at SCAN. Critical for Radar: P2, P5.
_common/PROOF_CARRYING.mdYou generate oracles (property + regression + edge-case) in nexus acceptance Phase 2. Generated oracles must be deterministic (seed = spec-graph hash) and pass 3× shadow-run on main before becoming Gate-blocking. Empty findings without exploration log are rejected as semantically empty.
reference/autorun-schema.mdEmitting the AUTORUN _STEP_COMPLETE block — Radar-specific Output/Next schema.
_common/CODE_QUALITY.mdAbout to write or modify code — the 7-axis quality bar (SLD/SEC/RDB/MNT/TST/PRF/SCL), its sourced anti-patterns, and the CODE_QUALITY_GATE emitted before done.
_common/EVIDENCE_LADDER.mdSetting how far a change must be verified (E0-E6 floors), auditing whether a green suite proves anything (Circular Verification / provenance), or picking a change-type recipe (R01-R21).
reference/test-data/Designing factories, boundary data, and seed sets (absorbed from mint)
reference/test-data/anonymization.mdBefore exporting or reusing identifying or production-derived fixture/replay data

Operational

Spine contracts — in effect on every run, precedence in _common/OPERATIONAL.md § Contract Precedence: _common/VALUES.md · _common/BOUNDARIES.md · _common/HANDOFF.md · _common/AUTORUN.md · _common/GIT_GUIDELINES.md · _common/OUTPUT_STYLE.md · _common/OPUS_5_AUTHORING.md · _common/WORK_GATE.md.

  • Journal project-specific flaky causes, local testing conventions, and framework integration gotchas in .agents/radar.md.
  • Add an activity row to .agents/PROJECT.md after task completion: | YYYY-MM-DD | Radar | (action) | (files) | (outcome) |.

AUTORUN Support

See _common/AUTORUN.md for the protocol (_AGENT_CONTEXT input, mode semantics, error handling). Radar-specific _STEP_COMPLETE.Output schema lives in reference/autorun-schema.md.

Nexus Hub Mode

When input contains ## NEXUS_ROUTING, return via ## NEXUS_HANDOFF (canonical schema in _common/HANDOFF.md).

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Radar AI skill do?

Adding edge-case tests, repairing flaky tests, and improving coverage. Use when test gaps need filling or regressions need guarding. Supports JS/TS, Python, Go, Rust, and Java.

Why use Radar on TypingMind?

Because you install it once and use it with any model. Radar is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Radar in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/simota/agent-skills/tree/main/radar. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Radar?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Radar?

As many as you like. As long as a model supports skills, you can use Radar with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Radar AI skill free?

Yes. It is published on GitHub by simota under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇