test-generation
Skill100 starsChanged 7 months agoMITView on GitHub
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.
We split this skill into the rules it gives an agent
41 rules. 0 are common, 26 are distinctive, and 15 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
26
Distinctive
This author's own choices. Worth a look.
15
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 43
Before you begin, read and understand:
- Distinctive: line 64
Use Playwright within step definitions for UI interactions (page navigation, element interaction, assertions)
- Distinctive: line 65
Write steps to be reusable across features — extract common patterns
- Very specific: line 66
Import shared step definitions from tests/features/step-definitions/common.steps.ts
- Distinctive: line 104
Use Vitest for test runner and assertions
- Distinctive: line 105
Use Supertest for HTTP-level testing against the Express app
- Very specific: line 106
Import createApp from ../../src/app.js to get a testable Express instance
- Distinctive: line 107
No need to start a real server — Supertest handles this
- Very specific: line 175
Always generate these support files.
- Distinctive: line 183
Follow this sequence for each feature:
- Very specific: line 187
Read the .feature file. Identify:
- Distinctive: line 189
All scenarios and scenario outlines
- Very specific: line 190
All Given/When/Then steps (including And/But)
- Distinctive: line 211
Every Gherkin step has a corresponding step definition
- Distinctive: line 212
Every API-related scenario has Vitest unit tests for the underlying services
- Distinctive: line 218
If not already present, create or update:
- Very specific: line 227
When operating in green-baseline mode (brownfield Track A), the process inverts: you generate tests that pass against the existing …
- Very specific: line 231
Read Gherkin scenarios tagged @existing-behavior from specs/features/.
- Very specific: line 232
Read FRDs (specs/frd-*.md) that contain a "Current Implementation" section — this section describes what the app actually does today.
- Very specific: line 233
Read API contracts extracted by the api-extractor skill (specs/contracts/) for endpoint signatures and response shapes.
- Distinctive: line 239
Use real HTTP calls against the running app's actual routes (not hypothetical future routes).
- Distinctive: line 240
Use Playwright interactions against the app's actual UI elements and page structure.
- Distinctive: line 246
Use Page Object Models that reflect the app's current page structure.
- Distinctive: line 247
Test navigation paths, form submissions, and data display as they work today.
- Distinctive: line 253
Use Supertest against the real Express app to verify actual endpoint behavior.
- Distinctive: line 257
Run all generated tests against the current codebase.
- Distinctive: line 258
All tests MUST pass: If a generated test fails, the TEST is wrong — fix the test, not the app.
- Very specific: line 282
All green-baseline tests include the comment: // green-baseline: captures existing behavior
- Distinctive: line 289
Test names use descriptive language indicating they test current behavior:
- Very specific: line 297
If behavior is inconsistent, tag and skip: When a test intermittently fails due to race conditions, timing, or non-deterministic behavior …
- Distinctive: line 302
Never assert on unverified behavior: Every assertion must be validated against the running application.
- Distinctive: line 304
Test data should use realistic patterns: Use data shapes, field lengths, and value ranges that reflect the existing app's actual usage.
- Distinctive: line 310
After generating all tests, verify the red baseline:
- Very specific: line 316
All scenarios should parse successfully.
- Distinctive: line 323
All tests should compile but fail at runtime because no application logic exists yet.
- Distinctive: line 329
Verify all e2e tests from Phase 2 Step 1a are still listed.
- Distinctive: line 364
Scenario Outline examples: should each generate a distinct test case via parameterization
- Very specific: line 390
Place these in the source directories with a comment: // Stub: Implement during implementation phase.
- Distinctive: line 406
After completing test generation for all features:
- Very specific: line 408
Update .spec2cloud/state.json — set phase to test-generation-complete
- Very specific: line 416
Commit all generated test files with message: [test-gen] scaffold BDD tests for all features — red baseline
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Test Generation
Role
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.
Modes
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".
Inputs
Before you begin, read and understand:
- FRDs (
specs/frd-*.md) — for domain context and acceptance criteria - Gherkin scenarios (
specs/features/*.feature) — your primary input; every step becomes a test assertion - Page Object Models (
e2e/pages/*.page.ts) — generated in Phase 2 Step 1a bye2e-generation; Cucumber step definitions that involve UI interactions should use these POMs - Existing project structure — respect conventions already in place
.spec2cloud/state.json— confirm you are in Phase 2 (increment delivery), Step 1c (BDD Test Scaffolding)- Increment plan (
specs/increment-plan.md) — identify which features are in scope for the current increment
Gherkin → Test Mapping Strategy
For each .feature file, generate two categories of tests:
A. Cucumber Step Definitions (BDD — Cucumber.js)
Location: tests/features/step-definitions/{feature-name}.steps.ts
- One step definition file per feature
- Map each Given/When/Then step to a TypeScript function using the exact Gherkin step text as the pattern
- Use Playwright within step definitions for UI interactions (page navigation, element interaction, assertions)
- Write steps to be reusable across features — extract common patterns
- Import shared step definitions from
tests/features/step-definitions/common.steps.ts - Every step definition body must contain real test code — actual HTTP requests, Playwright page interactions, or assertions. The body is the implementation contract that tells the Implementation Agent exactly what endpoints, routes, and UI elements must exist. NEVER write
throw 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).
B. Vitest Unit/Integration Tests (Backend)
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.
- Use Vitest for test runner and assertions
- Use Supertest for HTTP-level testing against the Express app
- Import
createAppfrom../../src/app.jsto get a testable Express instance - No need to start a real server — Supertest handles this
// 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/.
Test Organization Convention
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.tsSupport Files
Always 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.
Execution Procedure
Follow this sequence for each feature:
Step 1: Parse the Feature File
Read the .feature file. Identify:
- Feature name (used for file naming)
- All scenarios and scenario outlines
- All Given/When/Then steps (including And/But)
- Data tables and example tables
- Tags (e.g.,
@api,@ui,@smoke)
Step 2: Classify Each Scenario
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 | — | ✅ |
Step 3: Generate Test Files
For each feature, create all applicable test files following the patterns in the mapping strategy above. Ensure:
- Every Gherkin step has a corresponding step definition
- Every API-related scenario has Vitest unit tests for the underlying services
- Cucumber step definitions that involve UI use the POMs from Phase 2 Step 1a (
e2e/pages/) - Shared steps are extracted to
common.steps.ts
Step 4: Generate Project Configuration
If not already present, create or update:
cucumber.jsconfiguration (Cucumber.js profile)src/api/vitest.config.ts(Vitest configuration for backend tests)
Green-Baseline Mode Process
When operating in green-baseline mode (brownfield Track A), the process inverts: you generate tests that pass against the existing application. Follow this sequence:
Step 1: Read Existing-Behavior Inputs
- Read Gherkin scenarios tagged
@existing-behaviorfromspecs/features/. These describe the current app's behavior as captured during Track A (after the testability gate). - Read FRDs (
specs/frd-*.md) that contain a "Current Implementation" section — this section describes what the app actually does today. - Read API contracts extracted by the
api-extractorskill (specs/contracts/) for endpoint signatures and response shapes. - Tag handling: Scenarios tagged
@verify-manuallyshould generate tests with a// @verify-manuallycomment for human review. Scenarios tagged@known-bugshould generate tests that assert the current (buggy) behavior. Scenarios tagged@flaky-behaviorshould generate skipped tests with an explanatory comment.
Step 2: Generate Cucumber Step Definitions for Current Behavior
- Generate step definitions in
tests/features/step-definitions/that exercise the existing endpoints, pages, and flows. - Use real HTTP calls against the running app's actual routes (not hypothetical future routes).
- Use Playwright interactions against the app's actual UI elements and page structure.
- Assert on the app's actual response codes, response shapes, and UI states.
Step 3: Generate Playwright E2E Specs for Current User Flows
- Generate
e2e/*.spec.tsspecs that verify the current user journeys end-to-end. - Use Page Object Models that reflect the app's current page structure.
- Test navigation paths, form submissions, and data display as they work today.
Step 4: Generate Unit Tests for Critical Business Logic
- Generate
src/api/tests/unit/*.test.tsandsrc/api/tests/integration/*.test.tsfor critical business logic paths. - Focus on core domain logic, validation rules, and data transformation that the app performs today.
- Use Supertest against the real Express app to verify actual endpoint behavior.
Step 5: Verify Green Baseline
- Run all generated tests against the current codebase.
- All tests MUST pass. If a generated test fails, the TEST is wrong — fix the test, not the app. The app's current behavior is the source of truth.
- Iterate: adjust assertions, selectors, or request payloads until the test matches reality.
- Continue until the entire green baseline passes:
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 Output
Green-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:
- All green-baseline tests include the comment:
// green-baseline: captures existing behavior - Cucumber step definition files include a header comment:
// 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. - Test names use descriptive language indicating they test current behavior:
- Vitest:
it('currently returns 200 with user profile when authenticated', ...) - Playwright:
test('existing flow: user can navigate from dashboard to settings', ...)
- Vitest:
- Gherkin scenarios use the
@existing-behaviortag (already present from Phase B2)
Green-Baseline Rules
- Tests describe behavior that EXISTS, not behavior that SHOULD exist. If the app returns a 302 redirect instead of a 200, assert on the 302. If the UI shows "Welcome back" instead of "Dashboard", assert on "Welcome back". Document the current reality.
- If behavior is inconsistent, tag and skip. When a test intermittently fails due to race conditions, timing, or non-deterministic behavior in the existing app, add a
@flaky-behaviortag to the Gherkin scenario andtest.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', ...); - Never assert on unverified behavior. Every assertion must be validated against the running application. Do not guess what the app does — run it, observe it, test it.
- Mock external services at the boundary. Stub third-party APIs, payment gateways, email services, and other external dependencies. Test the app's handling of responses from these services, not the services themselves. Use realistic response patterns observed in the existing app.
- Test data should use realistic patterns. Use data shapes, field lengths, and value ranges that reflect the existing app's actual usage. If the app stores emails as lowercase, use lowercase emails in tests. If IDs are UUIDs, use UUIDs.
Red Baseline Verification
After generating all tests, verify the red baseline:
1. Cucumber.js
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.
2. Backend Tests
cd src/api && npm run build
cd src/api && npm testAll tests should compile but fail at runtime because no application logic exists yet.
3. Playwright E2E (from Phase 2 Step 1a)
npx playwright test --listVerify all e2e tests from Phase 2 Step 1a are still listed. Do NOT modify or re-generate them.
4. Validation Rule
If any test passes, something is wrong. A passing test means either:
- The test is not asserting anything meaningful
- The test is checking a trivially true condition
- Implementation code already exists (which shouldn't be the case in Phase 4)
Investigate and fix any passing tests.
5. Step Definition Completeness Check
Scan ALL generated step definition files. Every step body must contain at least one of:
- An HTTP request (
this.request.post,this.request.get,request(app).post,request(app).get,fetch) - A Playwright page interaction (
this.page.goto,this.page.getByRole,this.page.getByLabel,this.page.click) - An assertion (
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.
Test Quality Rules
- Every step definition must contain real test code — actual HTTP requests (
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. - NEVER use placeholder stubs — the following patterns are strictly forbidden in step definitions:
throw new Error('Not implemented')- Empty function bodies
async function () { } - Bodies with only comments and no executable code
Each of these provides zero signal to the Implementation Agent about what endpoints, routes, or UI elements to build. If you find yourself writing
throw new Error(...), stop and instead write the actual HTTP call, Playwright interaction, or assertion that the step requires.
- Tests must fail because the application doesn't exist — not because the test is unimplemented. A step that calls
POST /api/resourcesand asserts201will fail with a connection error or 404 — that's the correct red baseline. A step that throwsError('Not implemented')fails because the test is incomplete, which is your failure. - Include TODO comments alongside real code — use comments to explain intent (e.g.,
// Seed test user via API), but always pair them with actual test code that exercises the not-yet-existing application. - Avoid
test.skip()— tests should exist and fail, never be skipped - No hardcoded waits in Playwright — use
waitFor,toBeVisible(),toHaveURL(),expect.poll()instead ofpage.waitForTimeout() - No hardcoded test data in assertions — use constants or fixtures that can be shared across tests
- Each test is independent — no test should depend on another test's side effects
- Scenario Outline examples should each generate a distinct test case via parameterization
Type Definitions for Compilation
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:
- Service interfaces:
src/api/src/services/— define the contract for each service (e.g.,IUserRepository,ITokenService) - Model types:
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.
Test Naming Conventions
| 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 |
State Updates
After completing test generation for all features:
- Update
.spec2cloud/state.json— set phase totest-generation-complete - Append to
.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 ✅ - Commit all generated test files with message:
[test-gen] scaffold BDD tests for all features — red baseline
Other versions8 projects use a version of this.
Word for word · 1
- crgarcia12/Liliput★ 4100% same
Edited · 0
None found.
Wrote their own version · 7
- Happy-Technologies-LLC/happy-platform-skills★ 41same name
- jnotsknab/mux-swarm★ 9same name
- int2t05/engineering-skills★ 3same name
- Anasabdellatif/forgeos★ 2same name
- sarveshtalele/mcp-skills-registry★ 2same name
- Bridev04/clauderail★ 0same name
- okfriansyah-moh/agentic-workflow★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use debugging, frontend-design and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
BlockSkilldebugging
Debugging guidelines and best practices
Also in 3 projects that use this
BlockSkillfrontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Also in 3 projects that use this
GoogleSkillcode-review
Adversarial systems, concurrency, memory-model, and architecture code review protocol. Use this skill whenever asked to review code, PRs, diffs, or branches in Filament.
Also in 3 projects that use this
In this repository47 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- adrSkill
- api-extractorSkill
- architecture-mapperSkill
- aspireSkill
- audit-logSkill
- azure-deploymentSkill
- bug-fixSkill
- build-checkSkill
- cloud-native-assessmentSkill
- cloud-native-plannerSkill
- codebase-scannerSkill
- commit-protocolSkill
- contract-generationSkill
- data-model-extractorSkill
- ddd-modelingSkill
- dependency-inventorySkill
- deploy-diagnosticsSkill
- e2e-generationSkill
- error-handlingSkill
- extension-plannerSkill
- find-skillsSkill
- frd-generatorSkill
- gherkin-generationSkill
- human-gateSkill
- implementationSkill
- modernization-assessmentSkill
- modernization-plannerSkill
- performance-assessmentSkill
- playwright-cliSkill
- prd-generatorSkill
- research-best-practicesSkill
- resumeSkill
- rewrite-assessmentSkill
- rewrite-plannerSkill
- security-assessmentSkill
- security-plannerSkill
- skill-creatorSkill
- skill-discoverySkill
- spec-refinementSkill
- spec-validatorSkill
- state-managementSkill
- tech-stack-resolutionSkill
- test-discoverySkill
- test-runnerSkill
- ui-ux-designSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

