CLI Commands
Overview
Conduct v0.2 CLI provides commands for managing specifications, plans, and runs. All commands work with a configured backend server and require proper authentication.
Global Options
Available on all commands:
--help Show help
--version Show version number
Getting Started
Before using any commands, initialize your project:
conduct init
This will:
- Set up or select a credential profile
- Connect to your backend
- Create or select a project
- Generate
conduct.config.json - Inject agent instructions
init
Initialize a Conduct project in the current directory.
conduct init
What it does:
- Profile Setup: Creates or selects a credential profile in
~/.conduct/credentials - Backend Connection: Tests connection to the backend server
- Project Setup: Creates or selects a project
- Configuration: Generates
conduct.config.jsonwith profile and project ID - Agent Instructions: Injects Conduct instructions into
CLAUDE.md,WARP.md, etc. - Gitignore: Updates
.gitignoreto exclude.conduct/folder
Example:
$ conduct init
No credentials found. Let's create a profile.
Profile name (default): production
Backend URL: https://api.conduct.example.com
API Key: ck_abc123...
✓ Profile created
Fetching projects...
No projects found. Let's create one.
Project name: my-app
Git repository URL: https://github.com/user/my-app
✓ Project created: proj_abc123
✓ Configuration saved to conduct.config.json
✓ Agent instructions updated
✓ .gitignore updated
🎉 Project initialized successfully!
Next steps:
- Create a spec: conduct spec save --json <json>
- List specs: conduct spec list
config
Manage credential profiles stored in ~/.conduct/credentials.
config list
List all configured profiles:
conduct config list
Output:
Profiles:
default
Backend: https://api.conduct.example.com
API Key: ck_abc123...
local
Backend: http://localhost:3000
API Key: ck_local456...
config add
Add a new profile interactively:
conduct config add [name]
Example:
$ conduct config add staging
Backend URL: https://staging.conduct.example.com
API Key: ck_staging789...
✓ Profile 'staging' added
config remove
Remove a profile:
conduct config remove <name>
config set
Update a profile field:
conduct config set <name> <field> <value>
Fields: backend, key
Example:
conduct config set default backend https://new-api.example.com
config switch
Switch the current project to use a different profile:
conduct config switch <name>
spec
Manage specifications (requirements and design documents).
spec save
Create a new specification with requirements:
conduct spec save --json <json>
conduct spec save --file <path>
Required fields:
mdJson: Markdown AST (JSON format)intent: Original user requesteffort:simple|medium|complex|epicrequirements: Array of requirements withtitleandmdJson
Example with JSON string:
conduct spec save --json '{
"mdJson": {
"type": "root",
"children": [
{"type": "heading", "depth": 1, "children": [{"type": "text", "value": "Dark Mode"}]}
]
},
"intent": "Add dark mode toggle",
"effort": "simple",
"requirements": [
{
"title": "Toggle visible on settings page",
"mdJson": {"type": "root", "children": [...]}
}
]
}'
Example with file:
conduct spec save --file .conduct/spec.json
Output:
✓ Spec created successfully
ID: spec_abc123
Title: Dark Mode
Effort: simple
Created: 2025-12-16T10:00:00Z
Next steps:
- View spec: conduct spec get spec_abc123
- Create plan: conduct plan save spec_abc123 --json <plan>
spec get
Get a specification by ID:
conduct spec get <spec-id>
Output includes the spec metadata, full content (mdJson), and all requirements.
spec list
List all specifications:
conduct spec list [options]
Options:
--status <status> Filter by status
--limit <n> Limit results
--offset <n> Skip results
--json JSON output
Example:
conduct spec list --status draft --limit 10
spec get
Get spec details:
conduct spec get <spec-id> [options]
Options:
--json JSON output
Example:
conduct spec get AUTH-001
spec update
Update spec:
conduct spec update <spec-id> [options]
Options:
--title <title> Update title
--status <status> Update status
--content <file> Update content from file
--dry-run Preview changes
--json JSON output
Example:
conduct spec update AUTH-001 --status completed
spec delete
Delete a spec:
conduct spec delete <spec-id> [options]
Options:
--force Skip confirmation
--json JSON output
Example:
conduct spec delete AUTH-001 --force
Run Commands
run create
Create a new run:
conduct run create <file> [options]
Options:
--run-id <id> Custom run ID
--spec-id <id> Link to spec (required)
--status <status> Initial status
--dry-run Preview without creating
--json JSON output
Example:
conduct run create auth-run.md --spec-id AUTH-001
run list
List all runs:
conduct run list [options]
Options:
--spec-id <id> Filter by spec
--status <status> Filter by status
--limit <n> Limit results
--offset <n> Skip results
--json JSON output
Example:
conduct run list --spec-id AUTH-001
run get
Get run details:
conduct run get <run-id> [options]
Options:
--json JSON output
Example:
conduct run get RUN-001
run update
Update run:
conduct run update <run-id> [options]
Options:
--status <status> Update status
--content <file> Update content
--dry-run Preview changes
--json JSON output
Example:
conduct run update RUN-001 --status completed
run link
Link features to run:
conduct run link <run-id> <feature-ids...> [options]
Options:
--dry-run Preview changes
--json JSON output
Example:
conduct run link RUN-001 FEAT-42 FEAT-43 FEAT-44
run delete
Delete a run:
conduct run delete <run-id> [options]
Options:
--force Skip confirmation
--json JSON output
Check Commands
check create
Create a new check:
conduct check create <file> [options]
Options:
--check-id <id> Custom check ID
--run-id <id> Link to run (required)
--result <result> Check result (pass/fail/warn)
--dry-run Preview without creating
--json JSON output
Example:
conduct check create auth-check.md \
--run-id RUN-001 \
--result pass
check list
List all checks:
conduct check list [options]
Options:
--run-id <id> Filter by run
--result <result> Filter by result
--limit <n> Limit results
--json JSON output
Example:
conduct check list --run-id RUN-001
check get
Get check details:
conduct check get <check-id> [options]
Options:
--json JSON output
check update
Update check:
conduct check update <check-id> [options]
Options:
--result <result> Update result
--content <file> Update content
--dry-run Preview changes
--json JSON output
check delete
Delete a check:
conduct check delete <check-id> [options]
Options:
--force Skip confirmation
--json JSON output
Feature Commands
feature list
List discovered features:
conduct feature list [options]
Options:
--limit <n> Limit results
--json JSON output
feature get
Get feature details:
conduct feature get <feature-id> [options]
Options:
--json JSON output
feature runs
Get runs that modified feature:
conduct feature runs <feature-id> [options]
Options:
--limit <n> Limit results
--json JSON output
Project Commands
init
Initialize Conduct in project:
conduct init [options]
Options:
--agent <name> Agent type (claude, cursor, etc)
--force Overwrite existing
list
List all memory:
conduct list [options]
Options:
--specs Show only specs
--runs Show only runs
--checks Show only checks
--features Show only features
--status <status> Filter by status
--limit <n> Limit results
--json JSON output
Example:
# Show everything
conduct list
# Show only specs
conduct list --specs
# Filter completed runs
conduct list --runs --status completed
Dry Run Mode
Preview changes before executing with --dry-run:
# Preview spec creation
conduct spec create spec.md --dry-run
# Preview run creation
conduct run create run.md --spec-id SPEC-001 --dry-run
# Preview update
conduct spec update SPEC-001 --status completed --dry-run
Dry run shows:
- What will be created/updated
- Validation errors
- File content
- No actual changes made
JSON Output
Get machine-readable output with --json:
conduct spec list --json
conduct spec get SPEC-001 --json
conduct list --json
Useful for:
- Scripting
- Integration with other tools
- Parsing with jq
Example with jq:
conduct spec list --json | jq '.specs[] | select(.status=="draft")'
Status Values
Valid status values:
Specs
pending- Not starteddraft- In progressin_progress- Being implementedcompleted- Finishedcancelled- Abandoned
Runs
pending- Not startedin_progress- Runningcompleted- Finishedfailed- Failed
Checks
pass- All criteria metfail- Some criteria not metwarn- Partial success