CLI Reference

43
Total Commands
7
Categories

Overview

The DefProd CLI provides a command-line interface for interacting with DefProd product definitions. It supports both interactive REPL mode and one-shot command execution.

Installation

npm install -g @defprod/cli

Then run:

defprod

Building from Source

git clone https://github.com/defprod1/defprod-cli.git cd defprod-cli npm install npm run build node dist/main.js

Usage Modes

Interactive REPL Mode: Start the CLI without arguments to enter REPL mode where you can execute multiple commands in a session.

$ defprod DefProd CLI Agent >

One-shot Mode: Execute commands directly by passing them as arguments:

$ defprod /list stories $ defprod "Create a user story for login with 2FA"

Natural Language Commands

Commands without a "/" prefix are interpreted as natural language and processed by the LLM. This allows you to interact with DefProd using conversational commands.

Quick Reference

Command Description Category
/list List entities (stories, areas, elements, templates) Listing Entities
/view View entity details Viewing Entities
/product Manage product context Product Management
/config Manage CLI configuration Configuration
/search Search across all entities Searching
/reorder Reorder entities (areas, stories) Reordering
/init Run configuration setup wizard Configuration
/help Show help information Other
/exit Exit the CLI Other
/chat Manage chat sessions Other

Global Options

These options are available for all commands:

--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)

Command Categories

Configuration 2 commands
/config - Manage CLI configuration
/init - Run configuration setup wizard
Listing Entities 1 command
/list - List entities (stories, areas, elements, templates)
Other 3 commands
/help - Show help information
/exit - Exit the CLI
/chat - Manage chat sessions
Product Management 1 command
/product - Manage product context
Reordering 1 command
/reorder - Reorder entities (areas, stories)
Searching 1 command
/search - Search across all entities
Viewing Entities 1 command
/view - View entity details

Command Reference

/list
List entities (stories, areas, elements, templates)
/list
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
--filter <query>, -f
Filter results by keyword
Subcommands
/list stories - List user stories
/list areas - List areas
/list elements - List architecture elements
/list templates - List templates
Examples
/list
/list -s
/list stories
List user stories
/list stories
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
--filter <query>, -f
Filter results by keyword
Examples
/list stories
/list stories -s
/list areas
List areas
/list areas
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
--filter <query>, -f
Filter results by keyword
Examples
/list areas
/list areas -s
/list elements
List architecture elements
/list elements
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
--filter <query>, -f
Filter results by keyword
Examples
/list elements
/list elements -s
/list templates
List templates
/list templates
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
--filter <query>, -f
Filter results by keyword
Examples
/list templates
/list templates -s
/view
View entity details
/view
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Subcommands
/view product - View current product
/view brief - View current product brief
/view story - View a user story (by ID, name, or list number)
/view area - View an area (by ID, name, or list number)
/view element - View an architecture element (by dotted number or "root")
/view architecture - View architecture
/view template - View a template (by ID, name, or list number)
Examples
/view
/view -s
/view product
View current product
/view product
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/view product
/view product -s
/view brief
View current product brief
/view brief
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/view brief
/view brief -s
/view story
View a user story (by ID, name, or list number)
/view story <id|name|#>
Arguments
<id|name|#>required
Story identifier (ID, name, or list number)
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/view story example-id
/view story -s
/view area
View an area (by ID, name, or list number)
/view area <id|name|#>
Arguments
<id|name|#>required
Area identifier (ID, name, or list number)
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/view area example-id
/view area -s
/view element
View an architecture element (by dotted number or "root")
/view element <number|root>
Arguments
<number|root>required
Element identifier (dotted number like "1.2.1" or "root")
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/view element example-id
/view element -s
/view architecture
View architecture
/view architecture
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/view architecture
/view architecture -s
/view template
View a template (by ID, name, or list number)
/view template <id|name|#>
Arguments
<id|name|#>required
Template identifier (ID, name, or list number)
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/view template example-id
/view template -s
/product
Manage product context
/product
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Subcommands
/product list - List all available products
/product set - Set current product (by ID, name, or list number)
/product current - Show currently selected product
/product unset - Clear current product
Examples
/product
/product -s
/product list
List all available products
/product list
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/product list
/product list -s
/product set
Set current product (by ID, name, or list number)
/product set <id|name|#>
Arguments
<id|name|#>required
Product identifier (ID, name, or list number)
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/product set example-id
/product set -s
/product current
Show currently selected product
/product current
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/product current
/product current -s
/product unset
Clear current product
/product unset
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/product unset
/product unset -s
/config
Manage CLI configuration
/config
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Subcommands
/config show - Display current configuration
/config set - Set a configuration value
/config unset - Remove a configuration value
/config reset - Reset to default configuration
Examples
/config
/config -s
/config show
Display current configuration
/config show
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/config show
/config show -s
/config set
Set a configuration value
/config set <key> <value>
Arguments
<key>required
Configuration key
<value>required
Configuration value
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/config set exampleKey exampleValue
/config set -s
/config unset
Remove a configuration value
/config unset <key>
Arguments
<key>required
Configuration key to remove
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/config unset exampleKey
/config unset -s
/config reset
Reset to default configuration
/config reset
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/config reset
/config reset -s
/search
Search across all entities
/search <query>
Arguments
<query>required
Search query (can be multiple words)
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/search "example query"
/search -s
/reorder
Reorder entities (areas, stories)
/reorder
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Subcommands
/reorder areas - Reorder areas within the current product
/reorder stories - Reorder user stories within an area
Examples
/reorder
/reorder -s
/reorder areas
Reorder areas within the current product
/reorder areas <from> <to>
Arguments
<from>required
Source position (1-based)
<to>required
Target position (1-based)
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/reorder areas 1 1
/reorder areas -s
/reorder stories
Reorder user stories within an area
/reorder stories <area> <from> <to>
Arguments
<area>required
Area identifier (ID, name, or list number)
<from>required
Source position (1-based)
<to>required
Target position (1-based)
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/reorder stories area-id 1 1
/reorder stories -s
/init
Run configuration setup wizard
/init
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/init
/init -s
/help
Show help information
/help [command]
Arguments
commandoptional
Optional command name to show specific help (e.g., list, view, product, config, reorder)
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/help example
/help -s
/exit
Exit the CLI
/exit
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/exit
/exit -s
/chat
Manage chat sessions
/chat
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Subcommands
/chat new - Create a new empty chat session and switch to it
/chat save - Save current session under a name
/chat list - Show all stored chat sessions with IDs, names, created/updated timestamps
/chat load - Load the session as the active chat (replaces current in-memory session)
/chat delete - Permanently delete a saved chat session
/chat rename - Rename a session
/chat fork - Make a copy of a session and load it
/chat history - Show the active session message list with numbering
/chat remove - Delete an entry from the active session's message history
/chat summarize - Summarize the current session into fewer entries
/chat clear - Clear only the active chat history
Examples
/chat
/chat -s
/chat new
Create a new empty chat session and switch to it
/chat new name
Arguments
namerequired
Name for the new chat session
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat new example
/chat new -s
/chat save
Save current session under a name
/chat save name
Arguments
namerequired
Name to save the session as
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat save example
/chat save -s
/chat list
Show all stored chat sessions with IDs, names, created/updated timestamps
/chat list
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat list
/chat list -s
/chat load
Load the session as the active chat (replaces current in-memory session)
/chat load id
Arguments
idrequired
Session ID to load (numeric shortcuts like "1" are padded to "001")
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat load example-id
/chat load -s
/chat delete
Permanently delete a saved chat session
/chat delete id
Arguments
idrequired
Session ID to delete (numeric shortcuts like "1" are padded to "001")
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat delete example-id
/chat delete -s
/chat rename
Rename a session
/chat rename id new-name
Arguments
idrequired
Session ID to rename
new-namerequired
New name for the session
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat rename example-id example
/chat rename -s
/chat fork
Make a copy of a session and load it
/chat fork id new-name
Arguments
idrequired
Session ID to fork
new-namerequired
Name for the forked session
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat fork example-id example
/chat fork -s
/chat history
Show the active session message list with numbering
/chat history
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
--no-tools, -t
Omit toolCalls and toolResults entries from output
--no-working, -w
Omit assistant entries with stage "work" (show only final results)
Subcommands
/chat history summary - Show a truncated summary of the active session message list
Examples
/chat history
/chat history -s
/chat history summary
Show a truncated summary of the active session message list
/chat history summary
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
--no-tools, -t
Omit toolCalls and toolResults entries from output
--no-working, -w
Omit assistant entries with stage "work" (show only final results)
Examples
/chat history summary
/chat history summary -s
/chat remove
Delete an entry from the active session's message history
/chat remove index
Arguments
indexrequired
1-indexed entry number to remove
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat remove example
/chat remove -s
/chat summarize
Summarize the current session into fewer entries
/chat summarize
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat summarize
/chat summarize -s
/chat clear
Clear only the active chat history
/chat clear
Options
--strict, -s
Enable strict mode (no fuzzy matching)
--json, -j
Output in JSON format
--out <value>, -o
Save output to file. Format: --out <file> or --out <file>:t (tee) or --out <file>:a (append) or --out <file>:ta (tee+append)
Examples
/chat clear
/chat clear -s

Common Examples

Set Product Context

/product list /product set defprod

List Entities

/list stories /list stories --filter login /list areas

View Entities

/view story "user login" /view area "authentication" /view product

Search

/search "authentication" /search "login" --strict

Natural Language Commands

Create a user story for passwordless login using Passkeys Update the acceptance criteria for USR-124 Export the current product for API integration

Configuration

The CLI stores configuration in ~/.config/defprod/cli.json. Run defprod for the first time to launch the init wizard, or create the file manually:

{ "aiProvider": "gemini", "aiProviderApiKey": "your-ai-api-key", "aiModel": "gemini-2.0-flash", "defprodApiKey": "your-defprod-api-key", "defprodApiUrl": "https://api.defprod.one/api/v1", "currentProduct": "your-product-id", "strictMode": false }
Field Description Default
aiProvider LLM provider: openai, anthropic, gemini, or perplexity gemini
aiProviderApiKey API key for your chosen AI provider
aiModel Model name (e.g. gpt-4o, claude-3-5-sonnet-20241022, gemini-2.0-flash) Provider-specific
defprodApiKey Your DefProd API key
defprodApiUrl DefProd API base URL https://api.defprod.one/api/v1
currentProduct Default product ID to use
strictMode Disable fuzzy matching false
proxy HTTP proxy configuration object (see below)

Proxy Configuration

To route all CLI requests through an HTTP proxy (common in corporate environments), add a proxy object to your config:

{ "proxy": { "url": "http://proxy.corp.com:8080", "username": "user", "password": "pass" } }
Field Description Required
proxy.url Proxy URL (e.g. http://proxy.corp.com:8080) Yes
proxy.username Proxy authentication username No
proxy.password Proxy authentication password No

Set proxy fields via commands: /config set proxy.url http://proxy.corp.com:8080. When no proxy config is set, the CLI honours the standard HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables.

All fields are optional. You can also use environment variables:

  • DEFPROD_CLI_CONFIG - Override config file path
  • DEFPROD_AI_PROVIDER - AI provider
  • DEFPROD_AI_API_KEY - AI provider API key
  • DEFPROD_AI_MODEL - AI model name
  • DEFPROD_API_KEY - DefProd API key
  • DEFPROD_API_URL - DefProd API URL
  • DEFPROD_CURRENT_PRODUCT - Current product ID
  • DEFPROD_STRICT_MODE - Enable strict mode (true/false)

Environment variables override config file values.

Use /config show to display current configuration and /config set <key> <value> to update settings.