gherkin
Skill11 starsChanged 12 days agoMITView on GitHub
Write clear, idiomatic formal Gherkin feature specifications. Use when creating or editing .feature files, Scenario Outlines, Examples tables, Background sections, dialect keywords, or step wording. Do not use for behavior clarification before a formal artifact; use behavior-driven-development.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- kasperjunge/skillstheir own version, first seen Nov 8, 2026
- DeepSpaceCartel/skillstheir own version, first seen Oct 25, 2026
- TiagoJacinto/skillstheir own version, first seen Oct 8, 2026
- andeeplus/aplustheir own version, first seen Oct 4, 2026
- Alexmacapple/alex-claude-skilltheir own version, first seen Apr 5, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- kasperjunge/skills★ 7same name
- andeeplus/aplus★ 2same name
- DeepSpaceCartel/skills★ 2same name
- TiagoJacinto/skills★ 2same name
- Alexmacapple/alex-claude-skill★ 1same 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.
In this repository70 other files it gives its agents.
- AGENTS.mdAGENTS.md
- adversarial-reviewSkill
- api-designSkill
- architecture-reviewSkill
- behavior-driven-developmentSkill
- brainstormingSkill
- ci-release-engineeringSkill
- clean-architectureSkill
- code-reviewSkill
- container-engineeringSkill
- create-agent-skillSkill
- csharp-dotnet-engineeringSkill
- css-scss-stylingSkill
- data-platform-engineeringSkill
- dependency-supply-chain-reviewSkill
- digital-asset-managementSkill
- documentation-engineeringSkill
- domain-driven-designSkill
- domain-modelingSkill
- donsetch-web-researchSkill
- git-commitSkill
- git-workflowsSkill
- hexagonal-architectureSkill
- impeccableSkill
- internationalization-localizationSkill
- javascript-typescript-engineeringSkill
- justfilesSkill
- mcp-server-engineeringSkill
- mysql-mariadb-sql-engineeringSkill
- observability-engineeringSkill
- onion-architectureSkill
- parallelism-engineeringSkill
- performance-reviewSkill
- playwright-e2eSkill
- postgresql-sql-engineeringSkill
- prompt-engineering-reviewSkill
- python-antipatternsSkill
- python-design-patternsSkill
- python-engineeringSkill
- random-data-identifiersSkill
- release-readinessSkill
- review-verification-protocolSkill
- root-cause-analysisSkill
- ruby-engineeringSkill
- rust-antipatternsSkill
- rust-async-webSkill
- rust-code-reviewSkill
- rust-design-patternsSkill
- rust-desktop-guiSkill
- rust-engineeringSkill
- rust-persistence-sqlSkill
- rust-testing-qualitySkill
- script-engineeringSkill
- security-review-evidenceSkill
- security-reviewSkill
- semantic-versioningSkill
- sql-engineeringSkill
- sqlite-sql-engineeringSkill
- suggest-lucide-iconsSkill
- svelte-sveltekit-engineeringSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. 0 are common, 14 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
14
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use Gherkin to write business-readable behavior specifications that can be reviewed by non-engineers and connected to automated tests.
- Very specific: line 13
When the behavior, rule, or acceptance example is unclear, load behavior-driven-development before writing formal syntax.
- Very specific: line 24
Before editing, inspect existing .feature files for dialect declarations, keyword style, tags, indentation, and naming.
- Very specific: line 45
Use only the structure needed for clarity.
- Distinctive: line 76
Avoid UI scripts and implementation details:
- Distinctive: line 85
Use UI, HTTP, or database details only when they are the behavior contract being specified.
- Very specific: line 90
Use Scenario when one concrete example communicates the behavior clearly.
- Very specific: line 98
Do not use Scenario Outline just to compress unrelated behaviors into one table.
- Distinctive: line 106
Keep it short, usually one to four steps.
- Very specific: line 108
Avoid important assertions in Background.
- Distinctive: line 110
Prefer explicit scenario setup when shared setup makes the scenario hard to understand.
- Distinctive: line 115
Write concise scenario titles that finish the sentence "Scenario: ...".
- Distinctive: line 116
Keep feature files readable by product, QA, support, and domain experts.
- Distinctive: line 117
Prefer domain terms over technical terms.
- Distinctive: line 118
Avoid duplicate scenarios that assert the same rule with unimportant data changes.
- Distinctive: line 120
Keep steps stable across UI redesigns and implementation refactors.
- Distinctive: line 126
Run the narrowest available Gherkin parser, feature/scenario command, or runner lane after editing.
- Distinctive: line 128
If no parser or executable lane is available, validate syntax and local conventions manually and report that automated validation was …
- Very specific: line 132
Every scenario has at least one observable Then.
- Distinctive: line 135
No scenario depends on order from another scenario.
- Distinctive: line 145
Rust: use Cucumber-style crates or custom feature runners only when the repository already has that lane.
“Common” is measured: kept by at least 6 in 10 of the 3 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
Gherkin
Use Gherkin to write business-readable behavior specifications that can be reviewed by non-engineers and connected to automated tests. Use the official Gherkin reference as the conceptual baseline: https://cucumber.io/docs/gherkin/reference
When the behavior, rule, or acceptance example is unclear, load
behavior-driven-development before
writing formal syntax. Do not make a .feature file the default output for
informal behavior clarification.
For formal photo/video DAM scenarios, compose with
digital-asset-management to establish
the asset lifecycle vocabulary and invariants before writing feature syntax.
Inspect Local Conventions First
Before editing, inspect existing .feature files for dialect declarations,
keyword style, tags, indentation, and naming. Identify the configured runner,
its narrowest feature/scenario command, and the corresponding step definitions
or glue code; align new steps with the suite's existing vocabulary.
Core Structure
Feature: Short description of the capability
Rule: Optional business rule that groups related scenarios
Background:
Given shared context for every scenario in this rule
Scenario: Specific behavior title
Given relevant context
When the actor performs the meaningful action
Then an observable outcome occursUse only the structure needed for clarity. A small feature may need only
Feature and a few Scenario blocks.
Keyword Guidance
Feature: name the capability or business goal, not a component.Rule: group scenarios that demonstrate one business rule.Scenario: use for one concrete example.Scenario Outline: use when the same behavior must be exercised with several meaningful data variations.Examples: keep tables small and focused on the variables that change the outcome.Background: use only for shared context that every scenario in the feature or rule genuinely needs.Given: establish relevant preconditions or state.When: describe the single meaningful action or event.Then: describe observable outcomes.And/But: continue the previous step type when it improves readability; do not use them to hide multiple unrelated behaviors.
Writing Good Steps
Good steps are declarative:
Given Avery has an active workspace membership
When Avery uploads a duplicate photo
Then the upload is rejected as a duplicate
And the original photo remains unchangedAvoid UI scripts and implementation details:
Given the user is on "/photos/new"
When they click "Choose File" and click "Upload"
Then the API returns 409
And the duplicate_photos table has 1 rowUse UI, HTTP, or database details only when they are the behavior contract being specified.
Scenario vs Scenario Outline
Use Scenario when one concrete example communicates the behavior clearly.
Use Scenario Outline when:
- The same rule has several important input/output pairs.
- The examples table is shorter and clearer than repeated scenarios.
- Each row protects a distinct case that should fail independently.
Do not use Scenario Outline just to compress unrelated behaviors into one
table. Split scenarios when the narrative, preconditions, or expected outcomes
change meaningfully.
Background Discipline
Use Background sparingly:
- Keep it short, usually one to four steps.
- Include only context that every scenario needs.
- Avoid important assertions in
Background; scenarios should contain their own outcomes. - Prefer explicit scenario setup when shared setup makes the scenario hard to understand.
Readability Rules
- Write concise scenario titles that finish the sentence "Scenario: ...".
- Keep feature files readable by product, QA, support, and domain experts.
- Prefer domain terms over technical terms.
- Avoid duplicate scenarios that assert the same rule with unimportant data changes.
- Keep steps stable across UI redesigns and implementation refactors.
- Align step wording with existing step definitions when editing an established suite, but do not preserve misleading wording if it obscures behavior.
Validation Checklist
- Run the narrowest available Gherkin parser, feature/scenario command, or runner lane after editing; start with the affected file or scenario.
- If no parser or executable lane is available, validate syntax and local conventions manually and report that automated validation was unavailable or skipped, with the reason.
- The file uses valid Gherkin keywords and indentation.
- Every scenario has at least one observable
Then. - Each
Whendescribes the behavior-triggering action or event. - Examples tables have headers and values for every parameter.
- No scenario depends on order from another scenario.
- Tags, if used, describe execution needs or meaningful categories rather than temporary implementation notes.
Language Usage
- Python: map feature steps to pytest-bdd, behave, or project-specific
adapters only when the repository already uses them or the user explicitly asks
for executable
.featurefiles. Keep step definitions thin and push domain rules into Python modules with ordinary tests. - Rust: use Cucumber-style crates or custom feature runners only when the repository already has that lane. Otherwise keep Gherkin as acceptance criteria and implement behavior with Rust unit/integration tests.
- JavaScript/TypeScript and other languages: connect
.featurefiles to the existing test runner only when it improves stakeholder-readable coverage. Do not introduce a Gherkin runner for simple changes where clear test names or inline Given/When/Then notes would be enough.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

