Testing OpenLogi UI
AprilNEA/OpenLogi
Verifies OpenLogi's native GPUI interface with focused tests, the component gallery and a mock agent, choosing the evidence that fits each change.
A skill your agent uses when designing or checking a QA test system: choosing the right tier, scenario matrices with pipeline-wide observation points, test-environment topology and isolation…
$ npx skills add romiluz13/cc10x --skill qa-strategy -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install romiluz13/cc10x qa-strategy --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/cc10x/skills/qa-strategy .claude/skills/qa-strategy && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "qa-strategy" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/qa-strategy into .claude/skills/qa-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-strategy", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/qa-strategyType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add romiluz13/cc10x --skill qa-strategy -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install romiluz13/cc10x qa-strategy --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/cc10x/skills/qa-strategy .agents/skills/qa-strategy && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "qa-strategy" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/qa-strategy into .agents/skills/qa-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-strategy", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add romiluz13/cc10x --skill qa-strategy -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install romiluz13/cc10x qa-strategy --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/cc10x/skills/qa-strategy .cursor/skills/qa-strategy && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "qa-strategy" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/qa-strategy into .cursor/skills/qa-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-strategy", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/romiluz13/cc10x.git --path plugins/cc10x/skills/qa-strategy--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add romiluz13/cc10x --skill qa-strategy -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install romiluz13/cc10x qa-strategy --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/cc10x/skills/qa-strategy .gemini/skills/qa-strategy && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "qa-strategy" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/qa-strategy into .gemini/skills/qa-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-strategy", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install romiluz13/cc10x qa-strategyInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add romiluz13/cc10x --skill qa-strategy -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/cc10x/skills/qa-strategy .github/skills/qa-strategy && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "qa-strategy" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/qa-strategy into .github/skills/qa-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-strategy", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add romiluz13/cc10x --skill qa-strategy -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install romiluz13/cc10x qa-strategy --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/cc10x/skills/qa-strategy .opencode/skills/qa-strategy && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "qa-strategy" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/qa-strategy into .opencode/skills/qa-strategy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-strategy", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
qa-strategyA skill your agent uses when designing or checking a QA test system: choosing the right tier, scenario matrices with pipeline-wide observation points, test-environment topology and isolation…
QA Strategy is an agent skill from romiluz13/cc10x. Use when designing or checking a QA test system: choosing the right tier, scenario matrices with pipeline-wide observation points, test-environment topology and isolation, fixture lifecycle, and flake sources. Also the coverage lens for reviewing a QA plan (it reaches a plan reviewer as a file to Read in the task scaffold, not as a SKILLHINTS entry).
Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Test strategy. The repository describes itself as: The Loop Engine for Claude Code — engineer the loop, not the prompt. 1 router · 9 agents · 16 skills · 4 workflows. Fail-closed gates, test honesty, anti-anchored review. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f346ebe. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadGrepGlobBashLSPFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dockerFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use docker, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
QA Strategy loads about 5k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 2,923 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Grep, Glob, Bash, LSPAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from romiluz13/cc10x at commit f346ebe, republished under its MIT licence (© romiluz13). 2,923 words, ~5,022 tokens.
.claude/skills/qa-strategy/SKILL.md (or your agent's skills folder).This skill is the QA route's test-system design discipline.
Core: A test suite's value is not how many tests it has. It is how much you would believe a green run.
The three-layer model in cc10x:building still governs — unit proves local behavior, integration proves boundary wiring, E2E proves system truth. QA owns the outer two, plus UI.
| Tier | Proves | Use when |
|---|---|---|
integration | one boundary really works | route→service, service→DB, producer→consumer, cache/side effects |
e2e_backend | a flow across services really works | the value is produced by services cooperating |
ui | a human can actually do the thing | the deliverable is something a person operates |
Choose the cheapest tier that can still fail for the right reason. An E2E test that would also fail for ten unrelated reasons is a bad detector: it fires often and tells you little. Push a check down a tier whenever the lower tier can catch the same defect.
But do not push everything down. The defects that survive good unit coverage are exactly the ones that live between components — serialization mismatches, transaction boundaries, retry storms, partial failures. Those only appear at the tier where the components are real.
Every feature gets scenarios in three classes. A plan with only the first is not a test plan, it is a demo.
| Class | Question it answers |
|---|---|
happy-path | Does the thing work when everything cooperates? |
error-handling | When a dependency fails, does the system fail correctly — right status, right message, right rollback, right log? |
edge-case | What about empty, one, many, max, concurrent, duplicate, out-of-order, expired, and unauthorized? |
For each boundary the flow crosses, ask: what happens when it is slow, down, returns garbage, returns a partial result, or succeeds after the caller gave up? Each answer that matters is a scenario.
The most valuable single question: when this fails halfway, what state is left behind? Partial-failure state is where data corruption lives, and it is almost never covered by accident.
The goal is to cover as many user actions and chains of actions as possible: every option in a dropdown, every date class, every filter, every combination that a real user could produce.
For every interactive surface in the flow, list every option a user can actually pick:
Discover, do not assume. Options are usually data-driven; reading the component tells you a <select> exists, not what is in it at runtime. Drive the real UI to enumerate actual values (see UI tier tooling below). An enumeration built from the code alone will miss the options that only appear for certain roles, tenants, or feature flags.
Record the full enumeration in the test plan even when you will not execute all of it. The enumeration is the coverage claim. What you skip must be visible.
Full combinatorial coverage is not achievable and pretending otherwise produces an unbuildable plan: 5 filters × 4 options each is 1,024 combinations; add a date and a sort and you are past 10,000. Nobody runs that suite, so in practice it never gets written, and you end up with less coverage than an honest reduction would have given.
Reduce with a named technique, and record which one you used and what it leaves uncovered:
| Technique | Use for | What it costs |
|---|---|---|
| Every-option-once | dropdowns, radio groups | Each option exercised at least once. Misses interactions between options. |
| Pairwise (all-pairs) | combinations of 3+ independent controls | Every pair of values co-occurs in some case. Collapses 1,024 → ~25. Misses 3-way interactions, which are rare. |
| Equivalence classes | free text, numbers, dates | One representative per class of behavior. Misses defects inside a class. |
| Boundary values | anything with a range | 0, 1, max, max+1, empty, null. Where most defects actually live. |
| Full combinatorial | 2 controls with few values, or a genuinely safety-critical path | Complete. Only affordable when the space is tiny. |
Default recipe: every-option-once for single controls, pairwise across combinations, boundary values on every range, plus full combinatorial on any combination that is known to be risky (billing, permissions, anything where two settings interact by design).
Pairwise is the highest-leverage tool here. Most combination defects come from two settings interacting, not five. All-pairs buys the large majority of that value for a small fraction of the runs.
A user action rarely stands alone. Cover the sequences too:
Chains are where state bugs live, and they are almost never found by testing actions in isolation.
A feature shipped behind a flag has two live code paths in production, and only one of them is new. Both need coverage:
| State | What it proves | Why it gets skipped |
|---|---|---|
| Flag ON | The feature works | Nobody skips this one |
| Flag OFF | The old path still works, or the feature is cleanly absent | Feels redundant — it is not |
| Toggled mid-session | State written under one path is readable under the other | Rarely considered at all |
The OFF path is where the expensive incidents live. A flag gets rolled back precisely when something is already going wrong, and that is the worst possible moment to discover the rollback does not restore a working system. If a flag is genuinely one-way, that is a finding to surface, not a row to skip.
Where entitlements or plan tiers exist alongside flags, they are independent gates. flag-on + entitlement-off must degrade correctly rather than 500 — a combination almost no plan covers, because each gate is usually tested alone.
Confirm a flag applied, do not confirm it was set. Asserting that the config call returned 200 proves the call returned 200. Caches, restart requirements, and per-pod config all break the leap from "set" to "in effect", and they break it silently.
A scenario that asserts only the final response tests the response. It does not test the pipeline.
For each scenario, name what should be observable at every stage:
| Point | Asserts |
|---|---|
| UI | what a person sees |
| API | status, response shape, headers |
| DB | rows/documents actually written, in the right state |
| Queue | messages actually published, with the right payload |
| Logs | each pipeline stage actually ran, and said so properly |
Logs are the only cheap way to prove that a middle stage executed. A 200 at the edge is consistent with a worker that never ran, a retry that silently swallowed, or a branch that fell through.
Asserting logs also makes the suite an enforcement point for the project's logging standard: if a scenario asserts a structured log line with named fields and the line is missing, unstructured, or logged at the wrong level, that is a real finding about observability — found by a test, before an incident needs it.
Assert on level + message + structured fields, not on a substring of a formatted line. Substring assertions on log text are among the most brittle tests it is possible to write.
Log access strategy. How the harness reads logs differs sharply by environment (local stdout, container logs, a log platform); state the access method in the plan for the environment in use.
Ranked by strength:
Never test against an environment someone else is using. A suite that intermittently fails because a colleague was clicking around teaches the team to ignore red.
sleep 30 is a race condition with a comment. Gate on a real signal — health endpoint 200, port accepting, migration complete, topic created — with a bounded timeout and a loud failure.
An under-gated environment produces failures that look like product bugs. That is precisely how a team learns to distrust its own suite.
Teardown must verify itself. "Ran docker compose down" is not evidence; "docker ps shows nothing from this run" is. A suite that leaks will eventually make its own machine unable to run it.
Never silently infer how to run the system. The order is fixed:
kind/k3d, available MCP servers, project skills, plugins, and agents that already know how to run this system.Write the confirmed topology to env-plan.md after the user confirms it, not before.
When the feature map records a contradiction about something the plan depends on — which tenant a record lands under, which queue is consumed, which identity is resolved, which of two documented shapes the wire actually carries — the environment can usually answer it, and a document cannot.
Write the first scenario as a probe: drive the smallest real path that exposes the disputed value, read it back, bind it to a plan variable, and enumerate one branch per outcome including a branch where neither expected answer appears and the run stops. Then place the probe in the bring-up sequence as a gate, before anything that consumes what it binds.
Picking the likelier answer instead is what makes contradictions expensive. The plan does not fail at the contradiction — it fails ten scenarios later as a mount fault, an empty queue, or a broker error, and the run gets spent debugging the harness instead of the product.
Some controls can only be applied by injecting something into the process you are measuring — a clock shim, a module preload, a patched global, a stubbed transport. That is sometimes the only lever available, and it is legitimate. It is also a stub inside the thing under test, which means a failure it causes is indistinguishable from a product failure until someone looks.
When you must do it: name it as a risk in the plan, keep the patch as narrow as the assertion requires, and prefer patching a value over patching a mechanism. Patching Date.now moves thresholds. Patching the timer wheel moves the event loop into orderings the product never produces — the first is an observation aid, the second is a source of fiction.
And prove it applied. A shim that silently failed to load produces a scenario that passes for the wrong reason.
Two different tools for two different jobs. Use both, for what each is good at.
| Tool | Use it for | Do not use it for |
|---|---|---|
Agentic browser (claude-in-chrome) | Discovery — driving the real UI to enumerate what is actually there: every dropdown option, every filter value, what a role can see, what a page really renders | The deliverable. A browsing session is not an artifact; it cannot re-run next month without an agent and a live browser |
| Playwright | The deliverable — durable spec files that run headless, in CI, unattended, repeatably | Exploring an unfamiliar UI from scratch; it is slow going without knowing what is on the page |
The pipeline is: explore agentically → enumerate → codify as Playwright specs. Discovery feeds the input-space enumeration above; the specs are what qa-execute runs as a standalone regression suite forever after.
Selector durability matters more than it seems. Specs pinned to CSS classes or DOM position break on the next refactor and get deleted rather than fixed. Prefer roles, labels, and test ids — what a user perceives, not how it is currently marked up.
integration-verifier already watches for.test/, fixtures/, samples/, examples/, node_modules/, a .dockerignore entry, a gitignore-derived skip list. A fixture scanned, indexed, or uploaded from such a path is silently skipped, and the scenario under-reports with no error and no log line. Stage fixtures at a path with none of those components, and prove the product actually consumed the fixture rather than inferring it from a green result.A flaky test is a broken test. Re-run once to classify it, never repeatedly to reach green. Quarantine and fix; a suite people re-run until it passes is a suite that proves nothing.
Before believing any harness: break the thing under test on purpose and confirm the test goes red. At minimum once per tier.
An assertion that has never been observed failing is unproven, and unproven assertions are how a suite drifts into decoration. This is the single highest-value check in the whole discipline, and it takes minutes.
The inverse failure — asserting a state the code cannot produce. Sometimes a scenario is unfalsifiable in the other direction: the state it checks for is unreachable, so the assertion can never fire at all. A status value the code never writes, an error branch with no caller, a field only a mock ever populates.
When you find one, assert the absence instead — "no row is written" is a real, checkable property, and it is usually the behaviour that actually matters. Reaching the unreachable state by writing a fixture past the application's own validators is testing fiction: it may still earn a place (the UI's handling of a shape it might one day receive is worth knowing), but label it as fiction in the plan so nobody reads its PASS as evidence about the product.
The tell is a scenario whose setup has to bypass the system's front door to exist.
| Anti-pattern | Why it is wrong |
|---|---|
| Asserting only the final response | Proves the edge, not the pipeline |
expect(x).toBeTruthy() | Passes for almost everything |
sleep as readiness | Race condition with a comment |
| Catch-and-continue in setup/teardown | Turns a broken environment into a green run |
| Skipped tests reporting as passed | A lie with good manners |
| Re-running until green | Converts a real defect into a statistic |
| Fixtures written straight into the DB | Can encode states the app cannot produce |
| Testing against a shared live environment | Interference reads as flake; team learns to ignore red |
| Editing the test to make the run pass | Destroys the only thing QA produces |
Every QA artifact has a shipped skeleton. Copy it and fill in place — do not improvise document structure, and do not delete a section that does not apply (mark it N/A with a reason).
| Artifact | Template |
|---|---|
test-plan.md | ${CLAUDE_PLUGIN_ROOT}/templates/qa-test-plan.template.md |
env-plan.md | ${CLAUDE_PLUGIN_ROOT}/templates/qa-env-plan.template.md |
feature-map.md | ${CLAUDE_PLUGIN_ROOT}/templates/qa-feature-map.template.md (router-owned, inline consolidation) |
setup.md | ${CLAUDE_PLUGIN_ROOT}/templates/qa-setup.template.md — environment-scoped, not per-run. Lives at .cc10x/qa/env/{env_key}/setup.md, append-only, and records only MEASURED facts. It is the counterpart to env-plan.md: the plan predicts the environment from source, this records what the machine actually said |
report.md | ${CLAUDE_PLUGIN_ROOT}/templates/qa-report.template.md (router-seeded at qa-execute; qa-executor rewrites it whole with Write) |
| harness manifest | ${CLAUDE_PLUGIN_ROOT}/templates/live-harness.template.json |
Why deletion is forbidden. The sections most often dropped are the ones that record what the plan does not do — the coverage-reduction table, known gaps, teardown verification, re-runnability. Those are precisely the sections an optimistic plan omits. A missing section reads as "nothing to report"; an N/A with a reason reads as a claim someone can challenge.
© romiluz13, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/cc10x/skills/qa-strategy of romiluz13/cc10x.
Open the folder on GitHubat commit f346ebe
QA Strategy next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| QA Strategy this skillromiluz13/cc10x | 164 | — | ~5k | Automated safety check: Notes | MIT | |
| Testing OpenLogi UIAprilNEA/OpenLogi | 23k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Testing Hashqlhashintel/hash | 1.7k | — | ~1.9k | Automated safety check: Pass | AGPL-3.0 | |
| Dynamo Unit TestingDynamoDS/Dynamo | 2k | — | ~622 | Automated safety check: Pass | Apache-2.0 | |
| Designing TestsCloudAI-X/opencode-workflow | 275 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Openprd Test StrategyDavidLam-oss/obsidian-wechat-converter | 332 | — | ~578 | Automated safety check: Pass | MIT |
AprilNEA/OpenLogi
Verifies OpenLogi's native GPUI interface with focused tests, the component gallery and a mock agent, choosing the evidence that fits each change.
hashintel/hash
HashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests.
DynamoDS/Dynamo
Write comprehensive NUnit tests for the Dynamo codebase following Dynamo testing patterns, conventions, and architectural constraints.
CloudAI-X/opencode-workflow
Guides test strategy, TDD/BDD approaches, test coverage planning, and testing best practices.
DavidLam-oss/obsidian-wechat-converter
OpenPrd 测试策略分流 skill:按风险把任务分到单元、集成、端到端、人工、视觉、小程序、性能和安全验证,并要求 evidence-plan。
Gentleman-Programming/gentle-ai
Trigger: Go tests, go test coverage, Bubbletea teatest, golden files.
romiluz13/cc10x
A skill your agent uses when writing production code test-first: the RED-GREEN-REFACTOR cycle, false-RED detection, vertical slicing, scope escalation, test process discipline, and code generation…
romiluz13/cc10x
A skill your agent uses when a BUILD phase completes, a commit is staged, or a PR is about to be created, and the diff has not yet been reflected in documentation.
romiluz13/cc10x
A skill your agent uses when writing an execution plan or a decision RFC: task decomposition, context references, validation levels, risk-based testing, ADR format, plan completeness gate, and…
romiluz13/cc10x
A skill your agent uses when judging whether a task reached its goal, not just finished: the gate function, self-critique gate, validation levels, evidence array protocol, and goal-backward lens.
romiluz13/cc10x
A skill your agent uses when a cc10x agent starts a task: the shared preamble for the memory protocol, the contract format, and the output rules.
romiluz13/cc10x
Answers questions about cc10x itself — what it is, how to install and configure it, how the router, workflows, memory, and hooks operate, and how to troubleshoot.
Categories
A skill your agent uses when designing or checking a QA test system: choosing the right tier, scenario matrices with pipeline-wide observation points, test-environment topology and isolation…. QA Strategy is an agent skill from romiluz13/cc10x. Use when designing or checking a QA test system: choosing the right tier, scenario matrices with pipeline-wide observation points, test-environment topology and isolation, fixture lifecycle, and flake sources.
QA Strategy fits situations like: checking a QA test system: choosing the right tier; scenario matrices with pipeline-wide observation points; test-environment topology and isolation; fixture lifecycle.
Run `npx skills add romiluz13/cc10x --skill qa-strategy -a claude-code`. Or copy the skill folder (plugins/cc10x/skills/qa-strategy in romiluz13/cc10x) into .claude/skills/qa-strategy in your project. Claude Code loads it when a task matches its description.
Run `npx skills add romiluz13/cc10x --skill qa-strategy -a codex`. Or copy the skill folder (plugins/cc10x/skills/qa-strategy in romiluz13/cc10x) into .agents/skills/qa-strategy in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add romiluz13/cc10x --skill qa-strategy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qa-strategy, .gemini/skills/qa-strategy, .github/skills/qa-strategy and .opencode/skills/qa-strategy in your project.
Going by SKILL.md and its folder, QA Strategy needs the command-line tools its instructions call (docker). Our summary lists: Docker. Its frontmatter pre-approves these tools: Read, Grep, Glob, Bash, LSP.
SKILL.md contains no URLs. Its commands use docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
QA Strategy is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with QA Strategy: Testing OpenLogi UI (AprilNEA/OpenLogi, 23k stars), Testing Hashql (hashintel/hash, 1.7k stars), Dynamo Unit Testing (DynamoDS/Dynamo, 2k stars) and Designing Tests (CloudAI-X/opencode-workflow, 275 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
romiluz13 (a GitHub user) maintains it in romiluz13/cc10x, which has 164 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 7, 2026.
Source: romiluz13/cc10x on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.