tmforum-oda/oda-canvas/write-bdd-feature
Claude Code and agent skill by tmforum-oda/oda-canvas
- community
Checking that the SKILL.md file is still in the repository.
Guide for writing BDD (Behaviour-Driven Development) feature files and step definitions for the ODA Canvas test kit. Covers Gherkin conventions, Cucumber.js patterns, step definition templates, utility library usage, and the complete creation workflow. Use this skill when creating new BDD features, writing Gherkin scenarios, or adding step definitions.
Install
npx vskill@latest install tmforum-oda/oda-canvas/write-bdd-featureSKILL.md
Write BDD Feature — Skill Instructions
Feature File Conventions
File Naming Pattern
Examples:
UC002-F001-Install-Component.featureUC003-F004-Expose-APIs-Upgrade-component-with-additional-API.featureUC007-F002-Dependent-APIs-Configure-Dependent-APIs-Single-Downstream.feature
Required Structure
Standard Header Comment
ALWAYS include this exact comment block at the top of every feature file:
Tagging
Every feature file MUST have two tags on separate lines:
@UC{number}— Use case level tag@UC{number}-F{number}— Feature level tag@SkipTest— Optional, to skip a feature
Parameters
Use single-quoted '{ParamName}' convention in Gherkin step text.
Common Given/When/Then Patterns
Component Installation and Lifecycle
API Resource Management
Kubernetes Resources
Identity Management (Keycloak)
Observability
API Gateway Configuration
Segment Types
ODA Components are structured into three segments:
- `coreFunction`: Core business functionality APIs
- `managementFunction`: Administrative and management APIs
- `securityFunction`: Security and access control APIs
Test Data Packages
The Helm charts in feature-definition-and-test-kit/testData/ are the components the features install. Read feature-definition-and-test-kit/testData/README.md for the full list, the features that use each chart, and the rules for adding one. In short:
productcatalog-v1is the base chart: the reference Product Catalog component, without its optional Promotion Management API.- Reuse an existing chart where you can. A new chart starts from a component in reference-example-components, with only the changes the scenarios need. It uses the
tmforumodacanvasimages, never a personal account's. - Charts installed as the same release (usually
ctk) must render identical Jobs, because the features switch between them withhelm upgrade. - After adding or changing a chart, run
npm run chart-inventory.
Default release name: ctk (Canvas Test Kit) Default namespace: components
Step Definition Conventions
Existing Files (DO NOT create duplicates)
ComponentManagementSteps.js— Component installation, upgrade, uninstall, statusAPIManagementSteps.js— ExposedAPI and DependentAPI resourcesAPIGatewayManagementSteps.js— Apisix, Kong route/plugin configurationIdentityManagementSteps.js— Keycloak client, role, permission managementObservabilitySteps.js— ServiceMonitor and OpenTelemetryPDBManagementSteps.js— PodDisruptionBudget managementResourceInventorySteps.js— Generic Kubernetes resource operationsProductCatalogSteps.js— TMF-specific product catalog API interactions
Before Creating New Steps
- Search existing step definition files for similar patterns
- Check if existing steps can be reused or extended
- Only create new steps when no existing pattern matches
Step Definition Template
Utility Libraries
Located in feature-definition-and-test-kit/utilities/ (local npm packages linked via file:):
| Package | Purpose | |
|---|---|---|
resource-inventory-utils-kubernetes | K8s resource CRUD, wait for conditions, query status | |
package-manager-utils-helm | Helm install/upgrade/uninstall, chart metadata | |
identity-manager-utils-keycloak | Keycloak authentication, client/role management | |
component-utils | ODA Component API interactions, test data loading | |
observability-utils-kubernetes | ServiceMonitor, Prometheus configuration | |
resource-inventory-utils-TMF639 | TMF639 Resource Inventory API operations |
Creation Workflow
Step 1: Understand Requirements
- Read the use case document in
usecase-library/UC{number}-*.md - Identify the specific behaviour being tested
- Check for similar existing features
Step 2: Create Feature File
- Determine correct UC and F numbers (check existing features for next available)
- Create file at
feature-definition-and-test-kit/features/UC{number}-F{number}-{Title}.feature - Include standard header comment, two-level tags, Feature declaration
- Write Scenario Outline with Examples table (preferred) or individual Scenarios
- Reuse existing Given/When/Then patterns
Step 3: Create Step Definitions (only if needed)
- Add new steps to the appropriate existing file
- Include JSDoc comments
- Use utility libraries — never make direct K8s API calls
- Add error handling and debug logging
Step 4: Make sure CI runs the feature
Each pull request runs only the features its changes affect, using feature-definition-and-test-kit/test-selection.yaml. A new feature runs when its own file changes. A rule in the map must also select it, so that changes to the code it tests run it. Check its @UC{number} tag matches a rule's tags, or add a rule. Then run npm run check:selection in feature-definition-and-test-kit. It fails for a feature that no rule selects, or for tags that don't match the file name.
Step 5: Update README.md
Add entry to feature-definition-and-test-kit/README.md in the "List of BDD Features" section:
Status indicators: ⏳ test defined but not validated, ✅ implemented and passing.
Key Principles
- Reuse over recreation — always search for existing patterns first
- Implementation-agnostic — test Canvas behaviour, not operator internals
- Consistency — follow naming conventions and structure exactly
- Readability — scenarios should be understandable by business stakeholders
- Always update README.md — maintain the feature catalog
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/write-bdd-feature/SKILL.md
Popularity
- Repository stars
- 50
- Repository forks
- 67
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 1 Jun 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tmforum-oda/oda-canvas/write-bdd-feature)