> Generates Lettuce BDD tests for Python with feature files and step definitions. "lettuce BDD".
npx skills add https://github.com/LambdaTest/agent-skills --skill lettuce-skill
> Note: Lettuce is largely unmaintained. For new Python BDD projects, use Behave instead.
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"
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
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")
pip install lettuce seleniumlettuce or lettuce features/login.featureSet 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,
)
behave for active maintenanceFor advanced patterns, debugging guides, CI/CD integration, and best practices,
see reference/playbook.md.
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.
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.
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.
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.
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.
Makepad UI development skills for Rust apps: setup, patterns, shaders, packaging, and troubleshooting.
Secure environment variable management ensuring secrets are never exposed in Claude sessions, terminals, logs, or git commits
Prompt for generating an AGENTS.md file for a repository
Take lambdatest/lettuce-skill from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
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.
The instructions reference pip.
Without those the skill loads but fails at the first command.