Lisa plans. Ralph does. Interactive specification interview workflow that conducts in-depth feature interviews and generates comprehensive specs.
> /plugin marketplace add blencorp/lisa> /plugin install lisa@lisa
Lisa plans. Ralph does.
Interactive specification interview workflow that conducts in-depth feature interviews and generates comprehensive specs. Available as both a Claude Code plugin and a standalone CLI that works with multiple AI providers.
Based on the technique described by @trq212:
My favorite way to use Claude Code to build large features is spec based. Start with a minimal spec or prompt and ask Claude to interview you using the AskUserQuestion tool about literally anything: technical implementation, UI & UX, concerns, tradeoffs, etc. Then make a new session to execute the spec.
Lisa automates this workflow by:
# Add the marketplace
/plugin marketplace add blencorp/lisa
# Install the plugin
/plugin install lisa
The CLI works with multiple AI providers. Run it directly with npx:
npx @blen/lisa "user authentication"
Prerequisites: At least one AI CLI tool must be installed:
| Provider | CLI Command | Installation |
|---|---|---|
| Claude Code | claude | anthropic.com |
| OpenCode | opencode | opencode.dev |
| Cursor | cursor or agent | cursor.sh |
| Codex | codex | codex.dev |
| GitHub Copilot | gh with Copilot extension | github.com/copilot |
Plugin (Claude Code):
/lisa:plan "user authentication"
CLI:
npx @blen/lisa "user authentication"
/lisa:plan <FEATURE_NAME> [OPTIONS]Start a specification interview for a feature.
Arguments:
FEATURE_NAME (required) - Name of the feature to spec outOptions:
| Option | Description | Default |
|---|---|---|
--context <file> | Initial context file (PRD, requirements, etc.) | none |
--output-dir <dir> | Output directory for generated specs | docs/specs |
--max-questions <n> | Maximum question rounds (0 = unlimited) | 0 |
--first-principles | Challenge assumptions before detailed spec gathering | false |
-h, --help | Show help | - |
Examples:
# Basic interview
/lisa:plan "user authentication"
# With existing context
/lisa:plan "payment processing" --context docs/PRD.md
# Custom output location
/lisa:plan "search feature" --output-dir specs/features
# Limit to 15 questions
/lisa:plan "caching layer" --max-questions 15
# Challenge assumptions first
/lisa:plan "new dashboard" --first-principles
# Combined options
/lisa:plan "api gateway" --context docs/arch.md --first-principles --max-questions 20
/lisa:resumeResume an interrupted specification interview.
/lisa:resume
If you have interviews that were interrupted (session ended mid-interview), this command will:
/lisa:cleanupClean up all Lisa interview state files.
/lisa:cleanup
Removes all interview state files from .claude/lisa-*.md. Use this to:
Note: This does NOT delete completed specs in docs/specs/.
/lisa:helpDisplay help documentation about the Lisa workflow.
npx @blen/lisa "user authentication system"
Usage: npx @blen/lisa [options] [feature]
Arguments:
feature Feature description to plan
Options:
-v, --version Display the current version
-r, --resume Resume a previously interrupted interview
-f, --first-principles Begin with foundational questions
-c, --context <files...> Reference documents to include
-p, --provider <name> AI provider: claude, opencode, cursor, codex, copilot
-h, --help Display help
# With AI provider selection
npx @blen/lisa "feature description" --provider claude
npx @blen/lisa "feature description" --provider opencode
npx @blen/lisa "feature description" --provider cursor
# With context files
npx @blen/lisa "feature description" --context docs/spec.md
npx @blen/lisa "feature description" --context docs/spec.md docs/api.md
# First principles mode
npx @blen/lisa "feature description" --first-principles
# Resume an interrupted interview
npx @blen/lisa --resume
The plugin generates three files when the interview is finalized:
| File | Location | Description |
|---|---|---|
| Markdown PRD | {output-dir}/{feature-slug}.md | Human-readable specification |
| Structured JSON | {output-dir}/{feature-slug}.json | Machine-readable spec for tooling |
| Progress File | {output-dir}/{feature-slug}-progress.txt | Empty file for Ralph to track learnings |
Example: For /lisa:plan "user authentication":
docs/specs/user-authentication.mddocs/specs/user-authentication.jsondocs/specs/user-authentication-progress.txtThe CLI generates PRD files in the ./lisa/ directory:
| File | Description |
|---|---|
./lisa/{feature-slug}.md | Markdown PRD with overview, user stories, and technical notes |
./lisa/{feature-slug}.json | JSON PRD for programmatic use |
The JSON output follows the snarktank/ralph format:
{
"project": "user-authentication",
"branchName": "ralph/user-authentication",
"description": "User authentication with email/password and OAuth",
"userStories": [
{
"id": "US-001",
"category": "setup",
"title": "Database schema for users",
"description": "As a developer, I want user tables created so that I can store credentials",
"acceptanceCriteria": [
"Migration creates users table with id, email, password_hash columns",
"Unique constraint on email column",
"npm run migrate completes without errors"
],
"passes": false,
"notes": ""
}
]
}
Category values:
setup - Initial setup, configuration, scaffoldingcore - Core feature functionalityintegration - Connecting with other systemspolish - UI refinements, error handling, edge casesInitialization: Creates state files to track interview progress
Interview Loop:
Completion Detection: When you say "done", "finalize", "finished", "that's all", "complete", or "wrap up"
Finalization: Generates all output files
The interview systematically covers:
Scope Definition
User Stories
Technical Implementation
User Experience
Trade-offs
Implementation Phases
Use --first-principles to challenge assumptions before diving into details:
Plugin:
/lisa:plan "new feature" --first-principles
CLI:
npx @blen/lisa "new feature" --first-principles
Phase 1 - Challenge the Approach (3-5 questions):
Phase 2 - Detailed Spec: Only proceeds after validating the approach is sound.
The CLI stores configuration in ./lisa/config.yaml:
# Lisa CLI Configuration
# Default AI provider (claude, opencode, cursor, codex, copilot)
defaultProvider: claude
# Output directory for generated PRDs
outputDirectory: ./lisa
Interview progress is saved to ./lisa/state.yaml, allowing you to:
npx @blen/lisa --resumeState is automatically cleared after successful PRD generation.
During a plugin interview:
| File | Purpose |
|---|---|
.claude/lisa-{slug}.md | Interview state (iteration count, paths, settings) |
.claude/lisa-draft.md | Running draft spec updated throughout |
The CLI can also be used as a library:
import { runInterview, exploreCodebase, generateMarkdown } from '@blen/lisa';
// Explore codebase
const exploration = await exploreCodebase('/path/to/project');
console.log(exploration.summary);
// Generate PRD
const prd = {
overview: 'Feature overview...',
userStories: [...],
technicalNotes: '...'
};
const markdown = generateMarkdown(prd, 'feature-slug');
Lisa supports the following file types for --context:
.md, .markdown.txt, .text.ts, .tsx, .js, .jsx, .py, .rb, .go, .rs, .java.json, .yaml, .yml, .toml, .ini, .conf.html, .css, .scss, .less.xml, .sql, .graphql, .gql, .sh, .bash, .zsh+------------------+ +------------------+
| Lisa Plans | --> | Ralph Does |
| | | |
| /lisa:plan | | /ralph-loop |
| "my feature" | | |
+------------------+ +------------------+
| |
v v
+-----------+ +-----------+
| .md spec | | Working |
| .json | | Code |
| progress | | |
+-----------+ +-----------+
Lisa plans - Generate comprehensive spec:
/lisa:plan "my feature"
# or
npx @blen/lisa "my feature"
Ralph does - Implement iteratively:
lisa is a Claude Code plugin, indexed on Flowy in the Product category. Install it with the command on its page. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it