Testing Orcaq
cin12211/orca-q
OrcaQ-specific testing guide. An agent skill from cin12211/orca-q.
Generate BDD test code from Gherkin scenarios. An agent skill from EmeaAppGbb/spec2cloud.
$ npx skills add EmeaAppGbb/spec2cloud --skill test-generation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install EmeaAppGbb/spec2cloud test-generation --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/EmeaAppGbb/spec2cloud.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/test-generation .claude/skills/test-generation && 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 "test-generation" agent skill from https://github.com/EmeaAppGbb/spec2cloud/tree/vNext/.github/skills/test-generation into .claude/skills/test-generation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-generation", 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/EmeaAppGbb/spec2cloud/tree/vNext/.github/skills/test-generationType 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 EmeaAppGbb/spec2cloud --skill test-generation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install EmeaAppGbb/spec2cloud test-generation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EmeaAppGbb/spec2cloud.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/test-generation .agents/skills/test-generation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "test-generation" agent skill from https://github.com/EmeaAppGbb/spec2cloud/tree/vNext/.github/skills/test-generation into .agents/skills/test-generation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-generation", 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 EmeaAppGbb/spec2cloud --skill test-generation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install EmeaAppGbb/spec2cloud test-generation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EmeaAppGbb/spec2cloud.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/test-generation .cursor/skills/test-generation && 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 "test-generation" agent skill from https://github.com/EmeaAppGbb/spec2cloud/tree/vNext/.github/skills/test-generation into .cursor/skills/test-generation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-generation", 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/EmeaAppGbb/spec2cloud.git --path .github/skills/test-generation--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 EmeaAppGbb/spec2cloud --skill test-generation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install EmeaAppGbb/spec2cloud test-generation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EmeaAppGbb/spec2cloud.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/test-generation .gemini/skills/test-generation && 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 "test-generation" agent skill from https://github.com/EmeaAppGbb/spec2cloud/tree/vNext/.github/skills/test-generation into .gemini/skills/test-generation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-generation", 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 EmeaAppGbb/spec2cloud test-generationInstalls 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 EmeaAppGbb/spec2cloud --skill test-generation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/EmeaAppGbb/spec2cloud.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/test-generation .github/skills/test-generation && 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 "test-generation" agent skill from https://github.com/EmeaAppGbb/spec2cloud/tree/vNext/.github/skills/test-generation into .github/skills/test-generation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-generation", 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 EmeaAppGbb/spec2cloud --skill test-generation -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install EmeaAppGbb/spec2cloud test-generation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EmeaAppGbb/spec2cloud.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/test-generation .opencode/skills/test-generation && 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 "test-generation" agent skill from https://github.com/EmeaAppGbb/spec2cloud/tree/vNext/.github/skills/test-generation into .opencode/skills/test-generation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-generation", 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.
test-generationGenerate BDD test code from Gherkin scenarios. An agent skill from EmeaAppGbb/spec2cloud.
Test Generation is an agent skill from EmeaAppGbb/spec2cloud. Generate BDD test code from Gherkin scenarios. Create Cucumber step definitions with real test code (HTTP calls, Playwright interactions) and Vitest unit tests. Produce a red baseline where all tests compile and fail. Use when scaffolding BDD tests, creating step definitions, or generating unit tests from feature files.
Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/templates.md`).
It sits in Testing & QA, covering Unit testing, Test generation and Project scaffolding. It works with Vitest and Playwright. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8e76618. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx and npm, 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.
Test Generation loads about 5.5k tokens when it runs, and up to ~6.6k if it reads all its reference files. Until then it costs about 84 tokens; SKILL.md has 2,214 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 found no risky patterns in SKILL.md.
Automated 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 EmeaAppGbb/spec2cloud at commit 8e76618, republished under its MIT licence (© EmeaAppGbb). 2,214 words, ~5,453 tokens.
.claude/skills/test-generation/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.You are the Test Generation Agent. You read approved Gherkin scenarios from specs/features/*.feature and generate BDD test code: Cucumber step definitions and Vitest unit/integration tests. Your output is a red baseline — all tests exist, all tests compile/parse, and all tests FAIL because no application code exists yet. This is the test-driven contract that the Implementation Agent must satisfy.
You do NOT generate Playwright e2e tests — those are already created in Phase 2 Step 1a by the e2e-generation skill. You generate Cucumber step definitions (which may use the Page Object Models from Step 1a) and Vitest backend tests.
You do not write application code. You do not make tests pass. You DO write fully implemented test code — real HTTP calls, real Playwright interactions in Cucumber steps, real assertions — that will fail because the application endpoints, pages, and services don't exist yet. A step definition with throw new Error('Not implemented') or an empty body is NOT a deliverable.
This skill operates in two modes depending on whether you are generating tests for new features (greenfield) or capturing existing behavior (brownfield).
red-baseline (default)The standard mode for greenfield development and brownfield extensions. Tests are generated that FAIL because no application code exists yet. This is the test-driven contract that the Implementation Agent must satisfy. All existing behavior in the skill (Execution Procedure, Red Baseline Verification, etc.) describes this mode.
When to use: Greenfield projects, new feature increments, brownfield Track B (untestable apps where new code is written first).
green-baseline (brownfield Track A)Used when a brownfield application is testable — the app runs, serves requests, and has verifiable behavior. Tests are generated that PASS against the current codebase. These tests create a regression safety net: before any modernization, rewrite, or extension work begins, the existing behavior is locked down by passing tests. Any future change that breaks these tests is a regression.
When to use: Brownfield Track A (testable apps), after Phase B1 extraction is complete and the app is confirmed runnable. Check .spec2cloud/state.json for mode: "green-baseline" or track: "A".
Before you begin, read and understand:
specs/frd-*.md) — for domain context and acceptance criteriaspecs/features/*.feature) — your primary input; every step becomes a test assertione2e/pages/*.page.ts) — generated in Phase 2 Step 1a by e2e-generation; Cucumber step definitions that involve UI interactions should use these POMs.spec2cloud/state.json — confirm you are in Phase 2 (increment delivery), Step 1c (BDD Test Scaffolding)specs/increment-plan.md) — identify which features are in scope for the current incrementFor each .feature file, generate two categories of tests:
Location: tests/features/step-definitions/{feature-name}.steps.ts
tests/features/step-definitions/common.steps.tsthrow new Error('Not implemented') — write the real HTTP call or page interaction that will fail because the app doesn't exist yet.// tests/features/step-definitions/user-auth.steps.ts
import { Given, When, Then } from '@cucumber/cucumber';
import { expect } from '@playwright/test';
import { CustomWorld } from '../support/world';
Given('a user exists with email {string} and password {string}', async function (this: CustomWorld, email: string, password: string) {
// Seed test user via API — will fail until user creation endpoint exists
const response = await this.request.post('/api/users', {
data: { email, password }
});
expect(response.status()).toBe(201);
});
When('the user logs in with email {string} and password {string}', async function (this: CustomWorld, email: string, password: string) {
await this.page.goto('/login');
await this.page.getByLabel('Email').fill(email);
await this.page.getByLabel('Password').fill(password);
await this.page.getByRole('button', { name: 'Sign in' }).click();
});
Then('the user should see the dashboard', async function (this: CustomWorld) {
await expect(this.page).toHaveURL(/\/dashboard/);
await expect(this.page.getByRole('heading', { name: /dashboard/i })).toBeVisible();
});Generate shared steps in common.steps.ts for patterns that appear in multiple features (e.g., navigation, authentication state, generic UI assertions).
Location: src/api/tests/unit/{feature-name}.test.ts and src/api/tests/integration/{feature-name}.test.ts
Generate these for any Gherkin scenario that involves API behavior, data persistence, or backend logic.
createApp from ../../src/app.js to get a testable Express instance// src/api/tests/unit/user-auth.test.ts
import { describe, it, expect, vi } from 'vitest';
import request from 'supertest';
import { createApp } from '../../src/app.js';
describe('User Authentication', () => {
const app = createApp();
// Derived from: Scenario: Successful login with valid credentials
it('should return token when credentials are valid', async () => {
const res = await request(app)
.post('/api/auth/login')
.send({ email: 'test@example.com', password: 'password123' });
expect(res.status).toBe(200);
expect(res.body.token).toBeDefined();
});
// Derived from: Scenario: Login with invalid credentials
it('should return 401 when credentials are invalid', async () => {
const res = await request(app)
.post('/api/auth/login')
.send({ email: 'wrong@example.com', password: 'wrongpassword' });
expect(res.status).toBe(401);
});
});Note: Backend unit tests and integration tests both use the Vitest + Supertest pattern. Organize by test type:
- Unit tests (
src/api/tests/unit/): Test individual service functions, validators, and handlers in isolation usingvi.mock()for dependencies- Integration tests (
src/api/tests/integration/): Test HTTP endpoints using Supertest against the full Express app
Playwright e2e specs and Page Object Models are generated in Phase 2 Step 1a by the
e2e-generationskill. Do NOT create newe2e/*.spec.tsore2e/pages/*.page.tsfiles. If Cucumber step definitions need UI interactions, import the existing POMs frome2e/pages/.
Generate the following directory structure, creating files as needed:
project-root/
├── tests/
│ └── features/
│ ├── step-definitions/
│ │ ├── common.steps.ts # Shared steps (navigation, auth state, generic assertions)
│ │ ├── user-auth.steps.ts # Feature-specific steps
│ │ └── dashboard.steps.ts
│ └── support/
│ ├── world.ts # Cucumber World (shared state: page, request context) — DO NOT MODIFY
│ └── hooks.ts # Before/After hooks (Aspire startup, screenshots) — DO NOT MODIFY
├── e2e/ # ALREADY GENERATED in Phase 2 Step 1a — do not create/modify
│ ├── playwright.config.ts
│ ├── *.spec.ts # E2E flow specs (from Step 1a)
│ └── pages/ # Page Object Models (from Step 1a) — import in Cucumber steps
├── src/api/tests/
│ ├── unit/
│ │ ├── user-auth.test.ts
│ │ └── dashboard.test.ts
│ └── integration/
│ ├── user-auth.test.ts
│ └── dashboard.test.tsAlways generate these support files. Do NOT modify world.ts or hooks.ts — they are pre-configured with screenshot capture. Your step definitions automatically get screenshots after every step via the AfterStep hook.
See references/templates.md for the World class and Hooks template code.
Follow this sequence for each feature:
Read the .feature file. Identify:
@api, @ui, @smoke)Determine which test layers apply (Playwright e2e is already generated in Phase 2 Step 1a):
| Tag / Content | Cucumber Steps | Vitest Tests |
|---|---|---|
| UI interaction (pages, forms, navigation) | ✅ | — |
| API behavior (endpoints, responses) | — | ✅ |
| Full user journey (UI + API) | ✅ | ✅ |
| Data validation / business logic | — | ✅ |
@ui tag | ✅ | — |
@api tag | — | ✅ |
For each feature, create all applicable test files following the patterns in the mapping strategy above. Ensure:
e2e/pages/)common.steps.tsIf not already present, create or update:
cucumber.js configuration (Cucumber.js profile)src/api/vitest.config.ts (Vitest configuration for backend tests)When operating in green-baseline mode (brownfield Track A), the process inverts: you generate tests that pass against the existing application. Follow this sequence:
@existing-behavior from specs/features/. These describe the current app's behavior as captured during Track A (after the testability gate).specs/frd-*.md) that contain a "Current Implementation" section — this section describes what the app actually does today.api-extractor skill (specs/contracts/) for endpoint signatures and response shapes.@verify-manually should generate tests with a // @verify-manually comment for human review. Scenarios tagged @known-bug should generate tests that assert the current (buggy) behavior. Scenarios tagged @flaky-behavior should generate skipped tests with an explanatory comment.tests/features/step-definitions/ that exercise the existing endpoints, pages, and flows.e2e/*.spec.ts specs that verify the current user journeys end-to-end.src/api/tests/unit/*.test.ts and src/api/tests/integration/*.test.ts for critical business logic paths.0 failing, N passing.# Verify green baseline
npx cucumber-js # All scenarios PASS
cd src/api && npm test # All backend tests PASS
npx playwright test # All e2e specs PASSGreen-baseline tests use the same file locations as red-baseline:
| Layer | Location |
|---|---|
| Cucumber step definitions | tests/features/step-definitions/{feature-name}.steps.ts |
| Playwright e2e specs | e2e/{feature-name}.spec.ts |
| Vitest unit tests | src/api/tests/unit/{feature-name}.test.ts |
| Vitest integration tests | src/api/tests/integration/{feature-name}.test.ts |
Tagging and annotation:
// green-baseline: captures existing behavior// green-baseline: captures existing behavior
// These tests verify the app's current behavior as a regression safety net.
// Do NOT modify these tests to match new feature requirements — create new tests instead.it('currently returns 200 with user profile when authenticated', ...)test('existing flow: user can navigate from dashboard to settings', ...)@existing-behavior tag (already present from Phase B2)@flaky-behavior tag to the Gherkin scenario and test.skip() the generated test with a comment explaining the inconsistency:// @flaky-behavior: Login endpoint intermittently returns 503 under load
test.skip('existing flow: concurrent login sessions', ...);After generating all tests, verify the red baseline:
npx cucumber-js --dry-runAll scenarios should parse successfully. A live run (npx cucumber-js) should result in all scenarios pending or failing — zero passing.
cd src/api && npm run build
cd src/api && npm testAll tests should compile but fail at runtime because no application logic exists yet.
npx playwright test --listVerify all e2e tests from Phase 2 Step 1a are still listed. Do NOT modify or re-generate them.
If any test passes, something is wrong. A passing test means either:
Investigate and fix any passing tests.
Scan ALL generated step definition files. Every step body must contain at least one of:
this.request.post, this.request.get, request(app).post, request(app).get, fetch)this.page.goto, this.page.getByRole, this.page.getByLabel, this.page.click)expect(...), .toBe(...), .toBeDefined())If ANY step body contains throw new Error(...) or has no executable code, the generation is incomplete. Fix it by writing the actual test code — determine what API endpoint or UI interaction the Gherkin step implies, and write the HTTP call or Playwright interaction that exercises it.
this.request.post(...), request(app).post(...)), Playwright interactions (this.page.goto(...), this.page.getByRole(...).click()), and assertions (expect(response.status()).toBe(201), expect(res.status).toBe(...)). The test body IS the implementation contract.throw new Error('Not implemented')async function () { }throw new Error(...), stop and instead write the actual HTTP call, Playwright interaction, or assertion that the step requires.POST /api/resources and asserts 201 will fail with a connection error or 404 — that's the correct red baseline. A step that throws Error('Not implemented') fails because the test is incomplete, which is your failure.// Seed test user via API), but always pair them with actual test code that exercises the not-yet-existing application.test.skip() — tests should exist and fail, never be skippedwaitFor, toBeVisible(), toHaveURL(), expect.poll() instead of page.waitForTimeout()In TypeScript, interfaces don't require stubs to compile — they are erased at runtime. However, when tests reference types that don't exist yet (services, models, repositories), create type interface files so the test project compiles:
src/api/src/services/ — define the contract for each service (e.g., IUserRepository, ITokenService)src/api/src/models/ — define data shapes (e.g., User, LoginResponse)// src/api/src/models/user.ts
export interface User {
email: string;
passwordHash: string;
}
// src/api/src/services/user-repository.ts
import { User } from '../models/user.js';
export interface IUserRepository {
findByEmail(email: string): Promise<User | null>;
}Place these in the source directories with a comment: // Stub: Implement during implementation phase. The Implementation Agent will replace these with real implementations.
| Layer | Convention | Example |
|---|---|---|
| Cucumber steps | Exact Gherkin step text as pattern | Given('a user exists with email {string}') |
| Vitest tests | it('should [behavior] when [condition]') | it('should return token when credentials are valid') |
| Test files | Match feature file names | user-auth.feature → user-auth.steps.ts, user-auth.test.ts |
After completing test generation for all features:
.spec2cloud/state.json — set phase to test-generation-complete.spec2cloud/audit.log:[TIMESTAMP] test-generation: Generated BDD test scaffolding for N features
[TIMESTAMP] test-generation: Cucumber — N scenarios (N pending/failing, 0 passing)
[TIMESTAMP] test-generation: Vitest — N tests (N failing, 0 passing)
[TIMESTAMP] test-generation: Red baseline verified ✅[test-gen] scaffold BDD tests for all features — red baseline© EmeaAppGbb, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in .github/skills/test-generation of EmeaAppGbb/spec2cloud.
Open the folder on GitHubat commit 8e76618
Test Generation 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 |
|---|---|---|---|---|---|---|
| Test Generation this skillEmeaAppGbb/spec2cloud | 100 | — | ~5.5k | Automated safety check: Pass | MIT | |
| Testing Orcaqcin12211/orca-q | 224 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Senior QAalirezarezvani/claude-skills | 28k | 1 repos | ~2.1k | Automated safety check: Pass | MIT | |
| Test CommanderEliasOulkadi/shokunin | 114 | — | ~3k | Automated safety check: Notes | MIT | |
| Qe Test Executionproffesor-for-testing/agentic-qe | 494 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Senior QAborghei/Claude-Skills | 881 | — | ~1.6k | Automated safety check: Pass | MIT |
cin12211/orca-q
OrcaQ-specific testing guide. An agent skill from cin12211/orca-q.
alirezarezvani/claude-skills
Generates unit tests, integration tests, and E2E tests for React/Next.js applications.
EliasOulkadi/shokunin
Generate unit, integration, E2E, and visual regression tests following the Testing Trophy methodology (80% integration).
proffesor-for-testing/agentic-qe
Orchestrates test suite execution with parallel sharding, intelligent retry, and real-time reporting across Jest, Vitest, and Playwright.
borghei/Claude-Skills
Testing for React/Next.js with Jest, React Testing Library, and Playwright.
openclaw/openclaw
A skill your agent uses when designing, testing, fixing, or extending the OpenClaw Control UI GUI, including UI stress-test galleries with feedback inputs, Vitest + Playwright end-to-end checks…
EmeaAppGbb/spec2cloud
Provision Azure infrastructure, deploy to Azure Container Apps, and verify via smoke tests.
EmeaAppGbb/spec2cloud
Generate API contracts, shared TypeScript types, and infrastructure resource definitions from Gherkin scenarios and test files.
EmeaAppGbb/spec2cloud
Create Domain-Driven Design proposals from product specs or brownfield extraction outputs.
EmeaAppGbb/spec2cloud
Write application code to make failing tests pass using contract-driven, slice-based architecture.
EmeaAppGbb/spec2cloud
Review PRDs and FRDs through product and technical lenses. An agent skill from EmeaAppGbb/spec2cloud.
EmeaAppGbb/spec2cloud
Read, write, and maintain .spec2cloud/state.json across phases and increments.
Works with
Categories
Generate BDD test code from Gherkin scenarios. An agent skill from EmeaAppGbb/spec2cloud. Test Generation is an agent skill from EmeaAppGbb/spec2cloud. Generate BDD test code from Gherkin scenarios.
Test Generation fits situations like: scaffolding BDD tests; creating step definitions; generating unit tests from feature files.
Run `npx skills add EmeaAppGbb/spec2cloud --skill test-generation -a claude-code`. Or copy the skill folder (.github/skills/test-generation in EmeaAppGbb/spec2cloud) into .claude/skills/test-generation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add EmeaAppGbb/spec2cloud --skill test-generation -a codex`. Or copy the skill folder (.github/skills/test-generation in EmeaAppGbb/spec2cloud) into .agents/skills/test-generation 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 EmeaAppGbb/spec2cloud --skill test-generation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-generation, .gemini/skills/test-generation, .github/skills/test-generation and .opencode/skills/test-generation in your project.
Going by SKILL.md and its folder, Test Generation needs the command-line tools its instructions call (npx and npm).
SKILL.md contains no URLs. Its commands use npx and npm, 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 no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Test Generation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.5k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Test Generation: Testing Orcaq (cin12211/orca-q, 224 stars), Senior QA (alirezarezvani/claude-skills, 28k stars), Test Commander (EliasOulkadi/shokunin, 114 stars) and Qe Test Execution (proffesor-for-testing/agentic-qe, 494 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
EmeaAppGbb (a GitHub organization) maintains it in EmeaAppGbb/spec2cloud, which has 100 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on April 16, 2026.
Source: EmeaAppGbb/spec2cloud on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.