User Story Writer
deanpeters/Product-Manager-Skills
Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.
Generate QA Contract with numbered Gherkin scenarios (GN) and acceptance criteria (ACN)
$ npx skills add WellApp-ai/Well --skill qa-planning -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install WellApp-ai/Well qa-planning --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/WellApp-ai/Well.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cursor-rules/skills/qa-planning .claude/skills/qa-planning && 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-planning" agent skill from https://github.com/WellApp-ai/Well/tree/main/cursor-rules/skills/qa-planning into .claude/skills/qa-planning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-planning", 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/WellApp-ai/Well/tree/main/cursor-rules/skills/qa-planningType 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 WellApp-ai/Well --skill qa-planning -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install WellApp-ai/Well qa-planning --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WellApp-ai/Well.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cursor-rules/skills/qa-planning .agents/skills/qa-planning && 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-planning" agent skill from https://github.com/WellApp-ai/Well/tree/main/cursor-rules/skills/qa-planning into .agents/skills/qa-planning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-planning", 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 WellApp-ai/Well --skill qa-planning -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install WellApp-ai/Well qa-planning --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WellApp-ai/Well.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cursor-rules/skills/qa-planning .cursor/skills/qa-planning && 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-planning" agent skill from https://github.com/WellApp-ai/Well/tree/main/cursor-rules/skills/qa-planning into .cursor/skills/qa-planning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-planning", 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/WellApp-ai/Well.git --path cursor-rules/skills/qa-planning--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 WellApp-ai/Well --skill qa-planning -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install WellApp-ai/Well qa-planning --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WellApp-ai/Well.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cursor-rules/skills/qa-planning .gemini/skills/qa-planning && 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-planning" agent skill from https://github.com/WellApp-ai/Well/tree/main/cursor-rules/skills/qa-planning into .gemini/skills/qa-planning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-planning", 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 WellApp-ai/Well qa-planningInstalls 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 WellApp-ai/Well --skill qa-planning -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/WellApp-ai/Well.git skills-src && mkdir -p .github/skills && cp -r skills-src/cursor-rules/skills/qa-planning .github/skills/qa-planning && 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-planning" agent skill from https://github.com/WellApp-ai/Well/tree/main/cursor-rules/skills/qa-planning into .github/skills/qa-planning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-planning", 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 WellApp-ai/Well --skill qa-planning -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install WellApp-ai/Well qa-planning --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WellApp-ai/Well.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cursor-rules/skills/qa-planning .opencode/skills/qa-planning && 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-planning" agent skill from https://github.com/WellApp-ai/Well/tree/main/cursor-rules/skills/qa-planning into .opencode/skills/qa-planning/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-planning", 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-planningGenerate QA Contract with numbered Gherkin scenarios (GN) and acceptance criteria (ACN)
QA Planning is an agent skill from WellApp-ai/Well. Generate QA Contract with numbered Gherkin scenarios (GN) and acceptance criteria (ACN)
Its SKILL.md is about 3.9k 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 Product & Project Management, covering User stories. The repository describes itself as: No more Sundays on Finance. We build the infrastructure that retrieves, processes, and routes your financial and business data to your FinOps stack, so founders can ship, not… The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c740217. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown, gherkin and typescript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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 Planning loads about 3.9k tokens when it runs. Until then it costs about 25 tokens; SKILL.md has 909 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 WellApp-ai/Well at commit c740217, republished under its MIT licence (© WellApp-ai). 909 words, ~3,949 tokens.
.claude/skills/qa-planning/SKILL.md (or your agent's skills folder).Generate the QA Contract - exhaustive Gherkin BDD scenarios (G#N) for all data sources and acceptance criteria (AC#N) for frontend. This contract is consumed by Plan Mode and verified by qa-commit skill.
The QA Contract is the primary artifact, consisting of:
These IDs are referenced in Plan Mode's Commit Plan (Satisfies field) and verified by qa-commit skill.
STOP. Before writing any Gherkin, exhaustively map ALL data sources for the feature.
Categorize each data source:
| Category | Description | Gherkin Type |
|---|---|---|
| Runtime API | Fetched at request time from server | API scenarios (G#N) |
| Build-time Static | Generated during build, served as static files | Build script scenarios (G#N) |
| Database | Direct DB queries (Hasura, Postgres) | Query scenarios (G#N) |
| External API | Third-party services | Integration scenarios (G#N) |
| Middleware | Request routing, auth, transforms | Routing scenarios (G#N) |
Data Source Inventory Template:
## Data Source Inventory
### Runtime APIs
| Endpoint | Method | Auth | Resource | Status |
|----------|--------|------|----------|--------|
| `/v1/resource` | GET | Yes | Resource | Existing |
| `/public/resource` | GET | No | Resource | New |
### Build-time Static
| Output Path | Source | Generator | Content |
|-------------|--------|-----------|---------|
| `/components.json` | Codebase | Build script | Component metadata |
| `/charts/[slug].json` | Codebase | Build script | Chart config + examples |
### Database Queries
| Query | Source | Auth | Purpose |
|-------|--------|------|---------|
| `connectors` | Hasura | Yes | List connectors |
### Middleware
| Route | Behavior | Auth |
|-------|----------|------|
| `developers.*` | Rewrite to public routes | Skip |
### External APIs
| Service | Endpoint | Purpose |
|---------|----------|---------|
| (none for this feature) | | |Validation: Count total data sources. If < 3 for a non-trivial feature, you likely missed something. Re-examine the feature scope.
For each service, treat it as a black box. Based on the contract interface or data model, list all pre-condition parameters:
### [Method] [Path] Pre-conditions
| Parameter | Type | Source | Possible Values |
|-----------|------|--------|-----------------|
| `Authorization` | header | request | valid_token, invalid_token, expired_token, missing |
| `id` | path | URL | existing_uuid, non_existing_uuid, malformed, deleted |
| `status` | query | URL | enum values from data model |
| `[field]` | body | JSON | valid, null, empty, wrong_type, too_long |Sources:
:id, :slug)Each scenario has exactly ONE action:
When [METHOD] [/path/to/resource]Examples:
When GET /v1/connectorsWhen POST /v1/connectorsWhen GET /v1/connectors/{id}When DELETE /v1/connectors/{id}Specify expected response object. Response varies based on pre-conditions:
Then status [code]
And response.[field] is [type]
And response.[field] equals [value]
And response.[field] in [array of valid values]
And response does NOT include [sensitive_field]Response Schema Template:
// Success response
{
data: {
type: string,
id: UUID,
attributes: { ... }
},
meta?: { count: number }
}
// Error response
{
error: {
code: "NOT_FOUND" | "UNAUTHORIZED" | "VALIDATION_ERROR",
message: string
}
}For each method+path, write scenarios covering all pre-condition combinations:
Feature: [Resource] API
@G#1
Scenario: G#1.1 - [Method] [path] - happy path
Given Authorization header is "Bearer valid_token"
And [pre-condition 1]
And [pre-condition 2]
When [METHOD] [/path]
Then status 200
And response.data.id is UUID
And response.data.attributes.[field] is [type]
@G#2
Scenario: G#1.2 - [Method] [path] - missing auth
Given no Authorization header
When [METHOD] [/path]
Then status 401
And response.error.code equals "UNAUTHORIZED"
@G#3
Scenario: G#1.3 - [Method] [path] - not found
Given Authorization header is "Bearer valid_token"
And id is "non_existing_uuid"
When [METHOD] [/path/{id}]
Then status 404
And response.error.code equals "NOT_FOUND"Numbering Convention:
G#N = Feature-level ID (G#1, G#2...)G#N.M = Scenario within feature (G#1.1, G#1.2...)@G#N tag for traceabilityCoverage Matrix per Endpoint:
| Method | Required Scenarios |
|---|---|
| GET (list) | Valid, filtered, paginated, empty, unauthorized |
| GET (detail) | Found, not found, deleted, unauthorized, malformed ID |
| POST | Valid, each validation error, conflict, unauthorized |
| PUT/PATCH | Valid, partial, not found, conflict, unauthorized |
| DELETE | Success, not found, unauthorized, cascade |
For build-time generated data, write scenarios verifying the build script:
Pre-conditions for Build Scripts:
| Parameter | Type | Possible Values |
|---|---|---|
| Source file exists | boolean | true, false |
| Source file valid | boolean | valid structure, malformed |
| Metadata complete | boolean | all fields, partial, missing |
| Export type | enum | default, named, none |
Template:
Feature: [Resource] Build Extraction
@G#N
Scenario: G#N.1 - Extract [resource] with complete metadata
Given [source file] exists at [path]
And [source file] has valid [structure]
And [metadata fields] are documented
When build script runs
Then [output.json] includes [resource] entry
And entry has [required fields]
@G#N
Scenario: G#N.2 - Skip internal/private [resources]
Given [source file] has underscore prefix
When build script runs
Then [output.json] does NOT include entry
@G#N
Scenario: G#N.3 - Handle missing optional fields
Given [source file] exists
And [optional field] is not documented
When build script runs
Then entry has [optional field] as nullCoverage Matrix for Build Scripts:
| Source Type | Required Scenarios |
|---|---|
| Component | Extract props, extract examples, skip internal, handle missing docs |
| Chart | Extract config schema, extract data schema, extract examples |
| Docs | Parse MDX, extract frontmatter, build navigation |
| Search Index | Index all sources, handle empty content, validate structure |
For middleware and routing logic:
Pre-conditions:
| Parameter | Type | Possible Values |
|---|---|---|
| Host header | string | subdomain variants, main domain, unknown |
| Path | string | valid routes, invalid routes |
| Auth state | enum | authenticated, unauthenticated |
Template:
Feature: Hostname Routing
@G#N
Scenario: G#N.1 - Route [subdomain] to [target]
Given Host header is "[subdomain].domain.com"
And path is "[path]"
When request arrives at middleware
Then rewrite to [target route group]
And [skip/require] authentication
@G#N
Scenario: G#N.2 - Unknown subdomain redirect
Given Host header is "unknown.domain.com"
When request arrives at middleware
Then redirect to [default domain]For each UI component/screen, define numbered testable criteria using AC#N format:
| ID | Screen | Criteria | Test Method | Priority |
|---|---|---|---|---|
| AC#1 | [Component] | Renders without error | Storybook | P0 |
| AC#2 | [Component] | Displays loading state | Storybook | P0 |
| AC#3 | [Component] | Displays error state with retry | Storybook | P0 |
| AC#4 | [Component] | Displays empty state with CTA | Storybook | P1 |
| AC#5 | [Component] | Keyboard navigation works | Browser MCP | P1 |
| AC#6 | [Component] | Screen reader accessible | Manual | P1 |
| AC#7 | [Component] | Mobile responsive | Browser MCP | P2 |
Numbering Rules:
Data Source Mapping for AC: Each AC must indicate which data source it consumes:
| ID | Screen | Criteria | Data Source | Priority |
|---|---|---|---|---|
| AC#1 | ConnectorsList | Renders list | API: /public/connectors | P0 |
| AC#2 | ComponentsList | Renders list | Static: /components.json | P0 |
State Coverage:
| State | Required Tests |
|---|---|
| Initial | Default render, correct layout |
| Loading | Skeleton/spinner visible, no interaction |
| Success | Data displayed correctly, actions enabled |
| Error | Error message visible, retry available |
| Empty | Empty message visible, CTA available |
Identify cross-cutting concerns:
| Concern | Test Approach |
|---|---|
| Auth token handling | Gherkin: expired token, refresh flow |
| Optimistic updates | Frontend: show immediate, rollback on error |
| Cache invalidation | Frontend: data refreshes after mutation |
| Error boundaries | Frontend: component failure doesn't crash app |
## Coverage Summary
### Data Sources
| Category | Count | Items |
|----------|-------|-------|
| Runtime APIs | [N] | [list endpoints] |
| Build-time Static | [N] | [list outputs] |
| Middleware | [N] | [list routes] |
| Database | [N] | [list queries] |
| External APIs | [N] | [list services] |
| **Total** | [N] | |
### Gherkin Scenarios
| Category | Count | IDs |
|----------|-------|-----|
| API scenarios | [N] | G#1 - G#[N] |
| Build scenarios | [N] | G#[N] - G#[M] |
| Middleware scenarios | [N] | G#[M] - G#[P] |
| **Total** | [N] | |
### Frontend Acceptance
| Category | Count | IDs |
|----------|-------|-----|
| Acceptance criteria | [N] | AC#1 - AC#[N] |
### Validation Checklist
- [ ] Every data source has at least 1 G#N scenario
- [ ] Every AC#N maps to a data source
- [ ] All error cases covered (401, 404, 400, 500)
- [ ] Build scripts have extraction + skip + missing scenarios
- [ ] Middleware has all subdomain variantsBefore Gate transition, validate artifacts silently. Only show output if validation fails.
Check:
Check:
If all pass: (silent, no output - proceed normally)
If validation fails:
R | [Feature] | VALIDATION ERROR
---
Cannot proceed to [NEXT_PHASE]:
- [Missing: wireframe #4 has no status]
- [Missing: QA Contract needs at least 1 G#N]
Fix: [Specific action to resolve]This validation runs automatically before:
## QA Contract: [Feature Name]
### Data Source Inventory
#### Runtime APIs
| Endpoint | Method | Auth | Resource | Status |
|----------|--------|------|----------|--------|
| `/v1/resource` | GET | Yes | Resource | Existing |
| `/public/resource` | GET | No | Resource | New |
#### Build-time Static
| Output Path | Source | Generator |
|-------------|--------|-----------|
| `/components.json` | Codebase | Build script |
#### Middleware
| Route Pattern | Behavior |
|---------------|----------|
| `developers.*` | Rewrite to public, skip auth |
---
### API Scenarios (G#1 - G#N)
#### G#1: [METHOD] [/path] ([Resource])
**Pre-conditions:**
| Parameter | Type | Possible Values |
|-----------|------|-----------------|
| `Authorization` | header | valid_token, invalid_token, missing |
| `id` | path | existing, non_existing, malformed |
**Scenarios:**
| ID | Given | When | Then |
|----|-------|------|------|
| G#1.1 | valid token | GET /path | 200, data array |
| G#1.2 | invalid token | GET /path | 401, UNAUTHORIZED |
---
### Build Scenarios (G#N - G#M)
#### G#N: [Resource] Extraction
**Pre-conditions:**
| Parameter | Type | Possible Values |
|-----------|------|-----------------|
| Source exists | boolean | true, false |
| Metadata complete | boolean | complete, partial |
**Scenarios:**
| ID | Given | When | Then |
|----|-------|------|------|
| G#N.1 | source exists, complete | Build runs | output.json includes entry |
| G#N.2 | internal file (underscore) | Build runs | output.json excludes entry |
---
### Middleware Scenarios (G#M - G#P)
#### G#M: Hostname Routing
| ID | Given (Host) | Given (Path) | Then |
|----|--------------|--------------|------|
| G#M.1 | developers.domain.com | /connectors | Rewrite to /(public), skip auth |
| G#M.2 | app.domain.com | /settings/* | Route to /(app), require auth |
---
### Response Schemas
```typescript
// Success
{ data: { type, id, attributes }, meta: { count } }
// Error
{ error: { code, message } }
// Static file
{ data: [{ slug, name, ... }], meta: { count } }| ID | Screen | Criteria | Data Source | Priority |
|---|---|---|---|---|
| AC#1 | [Component] | Renders list | API: /public/x | P0 |
| AC#2 | [Component] | Renders from static | Static: /x.json | P0 |
| Category | Count | IDs |
|---|---|---|
| Runtime APIs | [N] | G#1 - G#[N] |
| Build Scripts | [N] | G#[N] - G#[M] |
| Middleware | [N] | G#[M] - G#[P] |
| Acceptance Criteria | [N] | AC#1 - AC#[N] |
| Total Scenarios | [N] |
## Consuming the QA Contract
This QA Contract is used by:
- **Plan Mode**: Maps G#N and AC#N to commits via "Satisfies" field
- **qa-commit skill**: Verifies implementation against assigned criteria
- **test-hardening skill**: Converts passed criteria to automated tests
## Invocation
Invoke manually with "use qa-planning skill" or follow Ask mode Phase 2 (CONVERGE) which references this skill.
## Related Skills
- `state-machine` - Defines states that need testing
- `bpmn-workflow` - Uses Gherkin scenarios for process documentation
- `qa-commit` - Verifies implementation against QA Contract
- `test-hardening` - Converts passed scenarios to automated tests© WellApp-ai, 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 cursor-rules/skills/qa-planning of WellApp-ai/Well.
Open the folder on GitHubat commit c740217
QA Planning 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 Planning this skillWellApp-ai/Well | 345 | — | ~3.9k | Automated safety check: Pass | MIT | |
| User Story Writerdeanpeters/Product-Manager-Skills | 7.2k | 2 repos | ~2.9k | Automated safety check: Pass | Custom licence | |
| Ralph Tui Create Beadssubsy/ralph-tui | 2.5k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Agile Product Owneralirezarezvani/claude-skills | 28k | 3 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Ralph Tui Create Beads Rustsubsy/ralph-tui | 2.5k | 1 repos | ~2.8k | Automated safety check: Pass | MIT | |
| To Specbestofjs/bestofjs | 3.1k | 21 repos | ~757 | Automated safety check: Pass | MIT |
deanpeters/Product-Manager-Skills
Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.
subsy/ralph-tui
Convert PRDs to beads for ralph-tui execution. An agent skill from subsy/ralph-tui.
alirezarezvani/claude-skills
Writes INVEST-checked user stories with acceptance criteria, splits epics, plans sprints from velocity and ranks the backlog with a weighted score.
subsy/ralph-tui
Convert PRDs to beads for ralph-tui execution using beads-rust (br CLI).
bestofjs/bestofjs
Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.
subsy/ralph-tui
Convert PRDs to prd.json format for ralph-tui execution. An agent skill from subsy/ralph-tui.
WellApp-ai/Well
Evaluate technical options with scoring matrix, trigger Gate 4 for significant decisions
WellApp-ai/Well
Produce an accounts-receivable aging report and surface overdue invoices for a Well workspace.
WellApp-ai/Well
Iterate until success or limit, composing existing skills with Jidoka integration
WellApp-ai/Well
Build a balance sheet (bilan) from a Well workspace. An agent skill from WellApp-ai/Well.
WellApp-ai/Well
Generate and maintain BPMN 2.0 diagrams linked to Gherkin scenarios
WellApp-ai/Well
Forecast cash flow and runway for a Well workspace from booked invoices and collected bank transactions.
Categories
Generate QA Contract with numbered Gherkin scenarios (GN) and acceptance criteria (ACN). QA Planning is an agent skill from WellApp-ai/Well.
QA Planning fits situations like: tasks that involve User stories.
Run `npx skills add WellApp-ai/Well --skill qa-planning -a claude-code`. Or copy the skill folder (cursor-rules/skills/qa-planning in WellApp-ai/Well) into .claude/skills/qa-planning in your project. Claude Code loads it when a task matches its description.
Run `npx skills add WellApp-ai/Well --skill qa-planning -a codex`. Or copy the skill folder (cursor-rules/skills/qa-planning in WellApp-ai/Well) into .agents/skills/qa-planning 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 WellApp-ai/Well --skill qa-planning -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-planning, .gemini/skills/qa-planning, .github/skills/qa-planning and .opencode/skills/qa-planning in your project.
SKILL.md names no scripts, command-line tools or credentials: QA Planning is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
QA Planning is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k 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 Planning: User Story Writer (deanpeters/Product-Manager-Skills, 7.2k stars), Ralph Tui Create Beads (subsy/ralph-tui, 2.5k stars), Agile Product Owner (alirezarezvani/claude-skills, 28k stars) and Ralph Tui Create Beads Rust (subsy/ralph-tui, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
WellApp-ai (a GitHub organization) maintains it in WellApp-ai/Well, which has 345 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on October 7, 2026.
Source: WellApp-ai/Well on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.