write-behat-scenarios — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited write-behat-scenarios (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Read @.ai/Component/Behat/CONTEXT.md for conventions (stateless steps, entity references, Given/When/Then).
Create tests/Integration/Behaviour/Features/Scenario/{Domain}/{domain}_management.feature:
@restore-all-tables-before-feature
Feature: {Domain} management
As an admin
I want to manage {domain}s
So that ...
Background:
Given shop "shop1" with name "test_shop" existsBackground section should be minimal — only shared setup that every scenario needs.
Reference: tests/Integration/Behaviour/Features/Scenario/Tax/ (simple)
Scenario: Add a new {domain} with required fields
When I add a {domain} "ref_1" with following properties:
| name | Test {Domain} |
| active | true |
Then {domain} "ref_1" should have the following properties:
| name | Test {Domain} |
| active | true |Scenario: Edit {domain} name
Given {domain} "ref_1" exists with name "Original"
When I edit {domain} "ref_1" with following properties:
| name | Updated |
Then {domain} "ref_1" should have the following properties:
| name | Updated |Scenario: Delete {domain}
When I delete {domain} "ref_1"
Then {domain} "ref_1" should not exist
Scenario: Delete non-existent {domain}
When I delete {domain} "non_existent_ref"
Then I should get an error "{Domain}NotFoundException"Scenario: Bulk delete {domain}s
Given the following {domain}s exist:
| reference | name |
| ref_1 | First |
| ref_2 | Second |
| ref_3 | Third |
When I bulk delete {domain}s "ref_1,ref_2"
Then {domain} "ref_1" should not exist
And {domain} "ref_2" should not exist
And {domain} "ref_3" should existScenario: Cannot add {domain} with empty name
When I add a {domain} "fail_ref" with following properties:
| name | |
Then I should get an error "{Domain}ConstraintException"Scenario: Filter {domain}s by name
Given the following {domain}s exist:
| reference | name |
| ref_1 | Alpha |
| ref_2 | Beta |
When I search for {domain}s with name "Alpha"
Then I should see only {domain} "ref_1" in resultsNote: grid filtering is often tested at Playwright level instead of Behat.
A single .feature file is the typical case, but split into multiple smaller files when:
behat ... bulk_actions.feature) for debugging without running the restSuggested split: {domain}_management.feature (CRUD), {domain}_bulk_actions.feature, {domain}_filters.feature, {domain}_constraints.feature. Keep them in the same Scenario/{Domain}/ folder.
Conventions (stateless steps, string references, typed exceptions, deterministic steps) are in Behat/CONTEXT.md. Skill-specific reminders:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.