godogen

lukasngl's avatarfrom lukasngl

Get help with Godogen BDD development - step definitions, CLI commands, configuration, and troubleshooting

0stars🔀0forks📁View on GitHub🕐Updated Jan 10, 2026

When & Why to Use This Skill

This Claude skill provides expert assistance for Godogen, a specialized Go code generator for godog BDD (Behavior-Driven Development). It streamlines the development workflow by helping users implement step definitions via directive comments, navigate complex test suites, and utilize the Godogen language server for advanced diagnostics and troubleshooting.

Use Cases

  • Automated Step Definition Generation: Guidance on using //godogen: directives (given, when, then) to automatically map Go functions to Gherkin steps, reducing manual boilerplate.
  • BDD Suite Diagnostics: Assisting with CLI commands to identify undefined steps, ambiguous patterns, or unused definitions within a Go testing project.
  • Code Navigation and Refactoring: Helping developers find definitions and references between .feature files and Go source code to improve maintainability.
  • CI/CD Pipeline Integration: Setting up automated BDD validation checks to ensure test suite integrity before deployment.
  • Configuration and Troubleshooting: Resolving issues related to regex patterns, return types, and project organization for godog-based testing environments.
namegodogen
descriptionGet help with Godogen BDD development - step definitions, CLI commands, configuration, and troubleshooting

Godogen Reference

Godogen is a Go code generator for godog BDD step definitions. It allows you to colocate step patterns with their implementations using directive comments.

Quick Install

go install github.com/lukasngl/godogen@latest
go install github.com/lukasngl/godogen/godogen-language-server@latest

For more options (Go 1.24+ tool directive, Nix flake, editor setup), see Installation.

Writing Step Definitions

Step definitions are Go functions with //godogen: directive comments:

//godogen:given ^I am logged in as "([^"]*)"$
func (s *Suite) iAmLoggedInAs(username string) error {
    return nil
}

//godogen:when ^I click the "([^"]*)" button$
func (s *Suite) iClickButton(name string) error {
    return nil
}

//godogen:then ^I should see "([^"]*)"$
func (s *Suite) iShouldSee(text string) error {
    return nil
}

Directive Types

Directive Generated Code Use Case
//godogen:step <pattern> ctx.Step(pattern, fn) Matches Given/When/Then
//godogen:given <pattern> ctx.Given(pattern, fn) Preconditions
//godogen:when <pattern> ctx.When(pattern, fn) Actions
//godogen:then <pattern> ctx.Then(pattern, fn) Assertions
//godogen:before ctx.Before(fn) Before scenario hook
//godogen:after ctx.After(fn) After scenario hook
//godogen:before_step ctx.StepContext().Before(fn) Before step hook
//godogen:after_step ctx.StepContext().After(fn) After step hook

Pattern Requirements

  • Patterns must start with ^ and end with $ (anchored regex)
  • Use ([^"]*) for quoted string captures
  • Use (\d+) for integer captures
  • Escape special characters: \., \(, \), etc.

Valid Return Types

Step functions can return:

  • error
  • context.Context
  • (context.Context, error)
  • godog.Steps
  • nothing (void)

Running the Generator

# In directory with go:generate directive
go generate ./...

# Or run godogen directly
godogen

# With Go 1.24+ tool directive
go tool godogen

The generator creates *_initializer.go files with step registration functions.

CLI Commands

The godogen-language-server provides CLI commands for analysis:

diagnose

Find issues in your BDD test suite:

godogen-language-server diagnose                    # All issues
godogen-language-server diagnose --severity error   # Only errors
godogen-language-server diagnose --format json      # JSON output

Reports:

  • Undefined steps (error): Feature steps without definitions
  • Ambiguous steps (warning): Steps matching multiple definitions
  • Duplicate definitions (error): Same pattern defined twice
  • Unused definitions (hint): Steps not used in features
  • Invalid patterns (error): Missing anchors or invalid regex

list-steps

List step definitions:

godogen-language-server list-steps                  # All steps
godogen-language-server list-steps --kind When      # Only When steps
godogen-language-server list-steps --format json    # JSON output

find-definition

Navigate from feature step to Go definition:

godogen-language-server find-definition features/login.feature:10

find-references

Find feature steps using a definition:

godogen-language-server find-references steps/auth.go:15:1

hover

Get info about a position:

godogen-language-server hover features/login.feature:10:5

symbols

List symbols in a file:

godogen-language-server symbols features/login.feature
godogen-language-server symbols steps/auth.go

Global Flags

All commands support:

  • --root <dir> - Workspace root (default: .)
  • --config <file> - Config file path
  • --format, -f <text|json> - Output format

Configuration

Create .godogen-language-server.json in your project root:

{
  "stepPatterns": ["**"]
}

The config file is optional. By default, the language server watches all files (**).

Common configurations:

{
  "stepPatterns": [
    "**/*_steps.go",
    "**/*.feature"
  ]
}

For more patterns (monorepo, external features), see Project Organization.

CI/CD Integration

# Fail on any errors
godogen-language-server diagnose --severity error
if [ $? -ne 0 ]; then
  echo "BDD validation failed"
  exit 1
fi

Exit codes:

  • 0: No issues at the requested severity level
  • 1: Issues found or error running command

Detailed Guides

godogen – AI Agent Skills | Claude Skills