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.
git clone --depth 1 https://github.com/kyungseo/ai-workflow-harnessWrote 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/rules/kyungseo/ai-workflow-harness/testing)<a href="https://agentmods.dev/rules/kyungseo/ai-workflow-harness/testing"><img src="https://agentmods.dev/badge/rules/kyungseo/ai-workflow-harness/testing/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/rules/kyungseo/ai-workflow-harness/testing"><img src="https://agentmods.dev/badge/rules/kyungseo/ai-workflow-harness/testing.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00000 | $0.00565 |
| Opus 5.5 | $0.00000 | $0.00226 |
| Sonnet 5.5 | $0.00000 | $0.00113 |
| Haiku 4.5 | $0.00000 | $0.00056 |
Grade A, and why
testing 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 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.
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 — 62 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Optional Spring Boot Testing Rules
These rules are not part of the generic AI Workflow Harness core. They are kept as an optional example/profile surface for projects that adopt the harness with Spring Boot backend tests.
Test Layer Annotations
| Layer | Annotation | Context |
|---|---|---|
| Unit | @ExtendWith(MockitoExtension.class) + @MockitoSettings(strictness = Strictness.LENIENT) |
No Spring context |
| Controller slice | @WebMvcTest + @ActiveProfiles("test") |
Spring MVC only |
| MyBatis slice | @MybatisTest + @ActiveProfiles("test") |
MyBatis mapper only |
| Integration | @SpringBootTest + @AutoConfigureMockMvc + @ActiveProfiles("test") |
Full Spring context |
Integration Test Infrastructure
Prefer the adopted project's established integration-test infrastructure.
MUST:
- Keep integration-test environment settings in shared test configuration, not per-test ad hoc system properties.
- Reuse the established integration-test infrastructure pattern in existing service tests.
- Record infrastructure changes through the adopted project's decision process.
NEVER:
- Reintroduce local-only test overrides without an explicit decision.
- Depend on separately running local services for integration tests unless the adopted project documents that requirement.
Assertion and Mocking Style
MUST:
- Use AssertJ:
assertThat(...),assertThatThrownBy(...) - Prefer BDD style:
given(mock).willReturn(value)over Mockitowhen/thenReturn - Keep
@MockitoSettings(strictness = Strictness.LENIENT)— project standard; do not remove without reason.
NEVER:
- Use JUnit 5 raw assertions (
assertEquals,assertTrue) — replace with AssertJ - Use
@Dataon mock objects - Use
@Autowiredfield injection in test classes — use constructor injection if needed
Naming Conventions
- Method name:
methodName_scenario_expectedBehavior(English) @DisplayName: Korean display names are intentional. Do not translate existing display names to English.- Test class name:
{TargetClass}Test
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 · 62 lines · 0 tokens per session scan A 1221f1bf2f46
testing is a cursor rule published in the GitHub repository kyungseo/ai-workflow-harness (14 stars, last pushed 2mo ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 565 tokens. 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-30.
Other cursor rules, from other repositories
minimax-m3-status-verification
MiniMax M3 status and verification contract: exact claim labels, proof matching, multimodal-grounded visual claims, and evidence-first closeouts.
minimax-m3-verification
Extended M3 verification playbook: proof selection, multimodal-grounded checks, shell checks, browser checks, and recovery loops.
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…
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…
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…