mcpbeat Sign in

Lettuce Skill

> Generates Lettuce BDD tests for Python with feature files and step definitions. "lettuce BDD".

3k tokens
context cost
the whole folder, loaded on every use
3
files
instructions only
0
copies elsewhere
how many repositories repackaged it
343
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/LambdaTest/agent-skills --skill lettuce-skill

The instruction itself

10 sections, as written by the author

Lettuce BDD Skill (Legacy)

> Note: Lettuce is largely unmaintained. For new Python BDD projects, use Behave instead.

Core Patterns

Feature File (features/login.feature)

Feature: User Login
  Scenario: Successful login
    Given I navigate to the login page
    When I enter "[email protected]" as email
    And I enter "password123" as password
    And I click login
    Then I should see the dashboard

  Scenario: Invalid login
    Given I navigate to the login page
    When I enter "[email protected]" as email
    And I enter "wrong" as password
    And I click login
    Then I should see "Invalid credentials"

Step Definitions (features/steps.py)

from lettuce import step, world
from selenium import webdriver
from selenium.webdriver.common.by import By

@step(r'I navigate to the login page')
def navigate_to_login(step):
    world.browser = webdriver.Chrome()
    world.browser.get(world.base_url + '/login')

@step(r'I enter "([^"]*)" as email')
def enter_email(step, email):
    el = world.browser.find_element(By.ID, 'email')
    el.clear()
    el.send_keys(email)

@step(r'I enter "([^"]*)" as password')
def enter_password(step, password):
    el = world.browser.find_element(By.ID, 'password')
    el.clear()
    el.send_keys(password)

@step(r'I click login')
def click_login(step):
    world.browser.find_element(By.CSS_SELECTOR, 'button[type="submit"]').click()

@step(r'I should see the dashboard')
def see_dashboard(step):
    assert '/dashboard' in world.browser.current_url

@step(r'I should see "([^"]*)"')
def see_text(step, text):
    assert text in world.browser.page_source

Terrain (Setup/Teardown — terrain.py)

from lettuce import before, after, world

@before.all
def setup():
    world.base_url = 'http://localhost:3000'

@before.each_scenario
def before_scenario(scenario):
    pass

@after.each_scenario
def cleanup(scenario):
    if hasattr(world, 'browser'):
        world.browser.quit()

@after.all
def teardown(total):
    print(f"Ran {total.scenarios_ran} scenarios")

Setup: pip install lettuce selenium

Run: lettuce or lettuce features/login.feature

Cloud Execution on TestMu AI

Set environment variables: LT_USERNAME, LT_ACCESS_KEY

# terrain.py
from selenium import webdriver
import os

@before.all
def setup():
    lt_options = {
        "user": os.environ["LT_USERNAME"],
        "accessKey": os.environ["LT_ACCESS_KEY"],
        "build": "Lettuce Build",
        "platformName": "Windows 11",
        "video": True,
        "console": True,
    }
    options = webdriver.ChromeOptions()
    options.set_capability("LT:Options", lt_options)
    world.browser = webdriver.Remote(
        command_executor=f"https://{os.environ['LT_USERNAME']}:{os.environ['LT_ACCESS_KEY']}@hub.lambdatest.com/wd/hub",
        options=options,
    )

Migration: Consider switching to behave for active maintenance

Deep Patterns

For advanced patterns, debugging guides, CI/CD integration, and best practices,

see reference/playbook.md.

Other skills for the same job

different authors, same section of the catalogue
Hook Development
by anthropics
vendor ×2

This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.

16k tokens scripts
Hook Development
by anthropics
vendor ×2

This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.

16k tokens scripts
Copilot SDK
by christophacham
×2

Build agentic applications with GitHub Copilot SDK. Use when embedding AI agents in apps, creating custom tools, implementing streaming responses, managing sessions, connecting to MCP servers, or creating custom agents. Triggers on Copilot SDK, GitHub SDK, agentic app, embed Copilot, programmable agent, MCP server, custom agent.

6k tokens
Cass
by Dicklesworthstone
×2

Coding Agent Session Search - unified CLI/TUI to index and search local coding agent history from Claude Code, Codex, Gemini, Cursor, Aider, ChatGPT, Pi-Agent, Factory, and more. Purpose-built for AI agent consumption with robot mode.

6k tokens
Dcg
by Dicklesworthstone
×2

Destructive Command Guard - High-performance Rust hook for Claude Code that blocks dangerous commands before execution. SIMD-accelerated, modular pack system, whitelist-first architecture. Essential safety layer for agent workflows.

4k tokens
Makepad Skills
by ComeOnOliver
×2

Makepad UI development skills for Rust apps: setup, patterns, shaders, packaging, and troubleshooting.

2k tokens
Varlock Claude Skill
by ComeOnOliver
×2

Secure environment variable management ensuring secrets are never exposed in Claude sessions, terminals, logs, or git commits

3k tokens
Create Agentsmd
by github
vendor ×1

Prompt for generating an AGENTS.md file for a repository

2k tokens

How to use it

Copy the folder

Take lambdatest/lettuce-skill from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference pip. Without those the skill loads but fails at the first command.