Files
cleveragents-core/docs/showcase/cli-tools/action-and-plan-management.md
HAL9000 057e3f5bfb
ci.yml / docs: showing off some showcased workflows (push) Failing after 0s
docs: showing off some showcased workflows
2026-04-07 15:27:39 -04:00

40 KiB

Action & Plan Management: The v3 Plan Lifecycle

Overview

CleverAgents uses a v3 plan lifecycle built around reusable Actions — YAML-defined templates that describe what an AI agent should do — and Plans — runtime instances of those actions applied to specific projects. This example walks through the complete workflow: defining actions from YAML files, registering them, creating plans, filtering and inspecting them, and managing their lifecycle.

Prerequisites

  • CleverAgents installed (pip install cleveragents)
  • Python 3.12 or higher
  • The examples/actions/ directory from the CleverAgents repository (included in the repo)

What You'll Learn

  • How to define an Action in YAML and register it with agents action create
  • How to list, filter, and inspect actions with agents action list and agents action show
  • How to archive (soft-delete) an action with agents action archive
  • How to create a Project with agents project create
  • How to instantiate a Plan from an action with agents plan use
  • How to list and filter plans by phase, state, action, and project
  • How to inspect a specific plan with agents plan status
  • How to cancel a plan with agents plan cancel
  • How to use --format json for machine-readable output and scripting

The v3 Plan Lifecycle at a Glance

Action (YAML template)
        │
        ▼
agents action create --config <file>
        │
        ▼
Action registered (state: available)
        │
        ▼
agents plan use <action> <project>
        │
        ▼
Plan created (phase: strategize, state: queued)
        │
        ▼
agents plan execute <plan-id>   ← drives LLM strategy + execution
        │
        ▼
Plan (phase: execute, state: complete)
        │
        ▼
agents plan apply <plan-id>     ← writes changes to disk
        │
        ▼
Plan (phase: apply, state: applied) ← terminal

Step-by-Step Walkthrough

Step 1: Explore the example Action YAML files

The repository ships with five ready-to-use action examples in examples/actions/:

examples/actions/
├── simple.yaml          # Minimal action — required fields only
├── estimation-actor.yaml # Action with cost/risk estimation
├── invariant-heavy.yaml  # Action with multiple safety invariants
├── inputs-schema.yaml    # Action with JSON Schema input validation
└── read-only.yaml        # Read-only investigation/audit action

The simplest action (examples/actions/simple.yaml) looks like this:

# examples/actions/simple.yaml
name: local/lint-check
description: "Run linting checks on the project"

strategy_actor: local/strategist
execution_actor: local/executor

definition_of_done: |
  All linting checks pass with zero errors.

reusable: true
read_only: true

Key fields:

Field Required Description
name Namespaced name (namespace/short-name)
description One-line summary
strategy_actor Actor that creates the execution strategy
execution_actor Actor that runs the plan
definition_of_done Completion criteria for the AI
reusable Whether the action can be used multiple times
read_only Prevents the plan from writing files
arguments Typed parameters passed at plan creation time
invariants Hard constraints that must never be violated
estimation_actor Actor for pre-execution cost/risk estimation
invariant_actor Actor for invariant reconciliation
automation_profile manual, supervised, or trusted

Step 2: Register the simple action

$ agents action create --config examples/actions/simple.yaml

Output:

╭──────────────── Action Created ────────────────╮
│ Namespaced Name: local/lint-check              │
│ Short Name: lint-check                         │
│ Description: Run linting checks on the project │
│ State: available                               │
│ Strategy Actor: local/strategist               │
│ Execution Actor: local/executor                │
│ Reusable: yes                                  │
│ Read Only: yes                                 │
│ Definition of Done:                            │
│   All linting checks pass with zero errors.    │
│ Arguments:                                     │
│   (none)                                       │
│ Created: 2026-04-07 09:01:03.641772            │
╰────────────────────────────────────────────────╯

What's Happening:

The action create command reads the YAML file, validates it against the ActionConfigSchema, and persists the action to the database. The action starts in available state and is immediately usable for creating plans.


Step 3: Register the remaining example actions

$ agents action create --config examples/actions/estimation-actor.yaml
$ agents action create --config examples/actions/invariant-heavy.yaml
$ agents action create --config examples/actions/read-only.yaml
$ agents action create --config examples/actions/inputs-schema.yaml

Each command outputs a confirmation panel. After all four commands, you have five actions registered.


Step 4: List all actions

$ agents action list

Output:

                               Actions (5 total)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Namespaced Name            ┃ Short Name          ┃ State     ┃ Strategy Actor     ┃ Execution Actor    ┃ Definition of Done                     ┃ Reusa… ┃ Created          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ local/architecture-review  │ architecture-review │ available │ local/strategist   │ local/executor     │ Architecture review report generated…  │   ✓    │ 2026-04-07 09:01 │
│ local/data-pipeline        │ data-pipeline       │ available │ local/strategist   │ local/executor     │ Pipeline runs end-to-end successfully… │   ✓    │ 2026-04-07 09:01 │
│ local/large-refactor       │ large-refactor      │ available │ local/strategist   │ local/executor     │ Refactoring complete. All tests pass…  │   ✓    │ 2026-04-07 09:01 │
│ local/lint-check           │ lint-check          │ available │ local/strategist   │ local/executor     │ All linting checks pass with zero err… │   ✓    │ 2026-04-07 09:01 │
│ local/security-audit       │ security-audit      │ available │ local/security-st… │ local/security-sc… │ All critical and high severity finding │   ✓    │ 2026-04-07 09:01 │
└────────────────────────────┴─────────────────────┴───────────┴────────────────────┴────────────────────┴────────────────────────────────────────┴────────┴──────────────────┘

What's Happening:

The table shows all registered actions with their namespaced names, states, assigned actors, and a truncated definition of done. The in the Reusable column means the action can be used to create multiple plans.


Step 5: Filter actions by namespace and state

# Filter by namespace
$ agents action list --namespace local

# Filter by state
$ agents action list --state available

# Filter by regex pattern (actions matching "audit")
$ agents action list ".*audit.*"

Output for regex filter:

                               Actions (1 total)
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Namespaced Name      ┃ Short Name   ┃ State     ┃ Strategy Actor         ┃ Execution Actor        ┃ Definition of Done                     ┃ Reusa… ┃ Created          ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ local/security-audit │ security-audit│ available │ local/security-strate… │ local/security-scanner │ All critical and high severity finding │   ✓    │ 2026-04-07 09:01 │
└──────────────────────┴──────────────┴───────────┴────────────────────────┴────────────────────────┴────────────────────────────────────────┴────────┴──────────────────┘

Step 6: Inspect a specific action

$ agents action show local/security-audit

Output:

╭──────────────────────── Action Details ─────────────────────────╮
│ Namespaced Name: local/security-audit                           │
│ Short Name: security-audit                                      │
│ Description: Comprehensive security audit of a project          │
│ State: available                                                │
│ Strategy Actor: local/security-strategist                       │
│ Execution Actor: local/security-scanner                         │
│ Reusable: yes                                                   │
│ Read Only: no                                                   │
│ Definition of Done:                                             │
│   All critical and high severity findings have been identified. │
│ A complete security report has been generated with seve...      │
│ Arguments:                                                      │
│   • severity_threshold (string, optional)                       │
│     Minimum severity to include in report                       │
│   • auto_fix (boolean, optional)                                │
│     Automatically create fix plans for critical findings        │
│ Created: 2026-04-07 09:01:28.745244                             │
╰─────────────────────────────────────────────────────────────────╯

What's Happening:

action show displays the full action details including all arguments with their types and whether they are required or optional. Arguments are passed to agents plan use via --arg name=value flags.


Step 7: Get action details as JSON

$ agents action show local/large-refactor --format json

Output:

{
  "command": "",
  "status": "ok",
  "exit_code": 0,
  "data": {
    "namespaced_name": "local/large-refactor",
    "short_name": "large-refactor",
    "state": "available",
    "description": "Large-scale code refactoring with cost estimation",
    "definition_of_done": "Refactoring complete. All tests pass. No regressions introduced.\nCode review approved by the review actor.",
    "strategy_actor": "local/strategist",
    "execution_actor": "local/executor",
    "automation_profile": null,
    "arguments": [
      {
        "name": "target_module",
        "type": "string",
        "required": true,
        "description": "Module path to refactor"
      },
      {
        "name": "max_files_changed",
        "type": "integer",
        "required": false,
        "description": "Maximum number of files to modify"
      }
    ],
    "invariants": [],
    "reusable": true,
    "read_only": false,
    "created_at": "2026-04-07T09:01:20.683193"
  },
  "timing": {
    "duration_ms": 0
  },
  "messages": [
    {
      "level": "ok",
      "text": "ok"
    }
  ]
}

What's Happening:

The JSON envelope (command, status, exit_code, data, timing, messages) is the standard output format for all CleverAgents CLI commands. The data field contains the action's full specification, including the arguments array with typed parameter definitions.


Step 8: Archive an action (soft delete)

$ agents action archive local/lint-check

Output:

✓ Action archived: local/lint-check

Archived actions are preserved for history but cannot be used to create new plans. You can still see them with --state archived:

$ agents action list --state archived

Output:

                               Actions (1 total)
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Namespaced Name    ┃ Short Name ┃ State    ┃ Strategy Actor   ┃ Execution Actor  ┃ Definition of Done                     ┃ Reusa… ┃ Created          ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ local/lint-check   │ lint-check │ archived │ local/strategist │ local/executor   │ All linting checks pass with zero err… │   ✓    │ 2026-04-07 09:01 │
└────────────────────┴────────────┴──────────┴──────────────────┴──────────────────┴────────────────────────────────────────┴────────┴──────────────────┘

Step 9: Create a project

Plans require at least one project to operate on. Create one with:

$ agents project create local/my-webapp --description "A sample web application project"

Output:

╭─────────────── Project Created ───────────────╮
│ ✓ Project 'local/my-webapp' created.          │
│ Namespace: local                              │
│ Description: A sample web application project │
│ Resources: 0                                  │
╰───────────────────────────────────────────────╯

Step 10: Create a plan from an action

$ agents plan use local/architecture-review local/my-webapp

Output:

╭──────────────────────────── Plan Created ─────────────────────────────╮
│ ID: 01KNKJZ424C48388RWHW3KY5QZ                                        │
│ Name: local/architecture-review-01knkjz4                              │
│ Action: local/architecture-review                                     │
│ Phase: strategize                                                     │
│ Processing State: queued                                              │
│ Projects: local/my-webapp                                             │
│ Description:                                                          │
│   Analyzes the project structure, dependency graph, and code patterns │
│ to produce an architecture review report. Does not modify any files.  │
│ Strategy Actor: local/strategist                                      │
│ Execution Actor: local/executor                                       │
│ Definition of Done:                                                   │
│   Architecture review report generated covering:                      │
│ - Module dependency graph                                             │
│ - Layer boundary compliance                                           │
│ - Circular dependency detection                                       │
│ - Code duplication analysis                                           │
│ Automation Profile: manual (source: global)                           │
│ Terminal: no                                                          │
│ Created: 2026-04-07 09:04:23.620455                                   │
│ Updated: 2026-04-07 09:04:23.620456                                   │
╰───────────────────────────────────────────────────────────────────────╯

Plan is now in Strategize phase (queued). Run 'agents plan execute <id>' when
ready.

What's Happening:

plan use creates a new plan instance from the action template. The plan receives a ULID identifier (e.g., 01KNKJZ424C48388RWHW3KY5QZ) — a 26-character sortable unique ID used for all subsequent commands. The plan starts in strategize phase with queued state, ready for execution.

Important: All v3 plan commands (plan execute, plan apply, plan status, etc.) require the ULID identifier, not the plan name.


Step 11: Create a plan with arguments and invariants

The security-audit action accepts arguments. Pass them with --arg:

$ agents plan use local/security-audit local/my-webapp \
    --arg severity_threshold=high \
    --arg auto_fix=false \
    --invariant "Never modify production data"

Output:

╭───────────────────────── Plan Created ──────────────────────────╮
│ ID: 01KNKK0MKCDXGP8Z3PZ88S5GGZ                                  │
│ Name: local/security-audit-01knkk0m                             │
│ Action: local/security-audit                                    │
│ Phase: strategize                                               │
│ Processing State: queued                                        │
│ Projects: local/my-webapp                                       │
│ Description:                                                    │
│   Performs a thorough security audit covering:                  │
│ - Dependency vulnerability scanning                             │
│ - Static Application Security Testing (SAST)                    │
│ - Authentication and authorization review                       │
│ - Input validation and injection...                             │
│ Strategy Actor: local/security-strategist                       │
│ Execution Actor: local/security-scanner                         │
│ Definition of Done:                                             │
│   All critical and high severity findings have been identified. │
│ A complete security report has been generated with severity     │
│ classifications and remediation steps for each finding.         │
│ Arguments:                                                      │
│   severity_threshold = high                                     │
│   auto_fix = False                                              │
│ Automation Profile: manual (source: global)                     │
│ Invariants:                                                     │
│    Never modify production data                                 │
│ Terminal: no                                                    │
│ Created: 2026-04-07 09:05:13.325077                             │
│ Updated: 2026-04-07 09:05:13.325079                             │
╰─────────────────────────────────────────────────────────────────╯

Plan is now in Strategize phase (queued). Run 'agents plan execute <id>' when
ready.

What's Happening:

  • --arg severity_threshold=high passes a typed argument to the plan. Arguments are validated against the action's argument definitions.
  • --invariant "Never modify production data" adds a runtime constraint. Invariants are hard rules the AI must never violate during execution.

Step 12: List all plans

$ agents plan list

Output:

                                     Plans
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ ID                         ┃ Name                                   ┃ Phase      ┃ State    ┃ Action                 ┃ Invaria… ┃ Projects           ┃ Updated            ┃ Elapsed       ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 01KNKJZ44ES00VT8JTRKX1HEQA │ local/architecture-review-01knkjz4    │ strategize │ queued   │ local/architecture-re… │ 0        │ (none)             │ 2026-04-07 09:04   │ 00:00:50      │
│ 01KNKJZ424C48388RWHW3KY5QZ │ local/architecture-review-01knkjz4    │ strategize │ queued   │ local/architecture-re… │ 0        │ local/my-webapp    │ 2026-04-07 09:04   │ 00:00:50      │
│ 01KNKK0MKCDXGP8Z3PZ88S5GGZ │ local/security-audit-01knkk0m         │ strategize │ queued   │ local/security-audit   │ 1        │ local/my-webapp    │ 2026-04-07 09:05   │ 00:00:00      │
└────────────────────────────┴────────────────────────────────────────┴────────────┴──────────┴────────────────────────┴──────────┴────────────────────┴────────────────────┴───────────────┘
╭────────────────────────────────── Summary ───────────────────────────────────╮
│ Total: 3                                                                     │
│ Processing: 0                                                                │
│ Completed: 0                                                                 │
│ Errored: 0                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯
✓ OK 3 plans listed

Step 13: Filter plans by phase, state, and action

# Filter by phase
$ agents plan list --phase strategize

# Filter by state
$ agents plan list --state queued

# Filter by action
$ agents plan list --action local/security-audit

Output for --action local/security-audit:

                                     Plans
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ ID                         ┃ Name                                   ┃ Phase      ┃ State    ┃ Action                 ┃ Invaria… ┃ Projects           ┃ Updated            ┃ Elapsed       ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 01KNKK0MKCDXGP8Z3PZ88S5GGZ │ local/security-audit-01knkk0m         │ strategize │ queued   │ local/security-audit   │ 1        │ local/my-webapp    │ 2026-04-07 09:05   │ 00:00:00      │
└────────────────────────────┴────────────────────────────────────────┴────────────┴──────────┴────────────────────────┴──────────┴────────────────────┴────────────────────┴───────────────┘
╭────────────────────────────────── Filters ───────────────────────────────────╮
│ Phase: (any)                                                                 │
│ State: (any)                                                                 │
│ Project: (any)                                                               │
│ Action: local/security-audit                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯
╭────────────────────────────────── Summary ───────────────────────────────────╮
│ Total: 1                                                                     │
│ Processing: 0                                                                │
│ Completed: 0                                                                 │
│ Errored: 0                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯
✓ OK 1 plans listed

Step 14: Inspect a specific plan

$ agents plan status 01KNKJZ424C48388RWHW3KY5QZ

Output:

╭───────────────────────────── Plan Status ─────────────────────────────╮
│ ID: 01KNKJZ424C48388RWHW3KY5QZ                                        │
│ Name: local/architecture-review-01knkjz4                              │
│ Action: local/architecture-review                                     │
│ Phase: strategize                                                     │
│ Processing State: queued                                              │
│ Projects: local/my-webapp                                             │
│ Description:                                                          │
│   Analyzes the project structure, dependency graph, and code patterns │
│ to produce an architecture review report. Does not modify any files.  │
│ Strategy Actor: local/strategist                                      │
│ Execution Actor: local/executor                                       │
│ Definition of Done:                                                   │
│   Architecture review report generated covering:                      │
│ - Module dependency graph                                             │
│ - Layer boundary compliance                                           │
│ - Circular dependency detection                                       │
│ - Code duplication analysis                                           │
│ Automation Profile: manual (source: global)                           │
│ Terminal: no                                                          │
│ Created: 2026-04-07 09:04:23.620455                                   │
│ Updated: 2026-04-07 09:04:23.620456                                   │
╰───────────────────────────────────────────────────────────────────────╯

Step 15: Get plan status as JSON

$ agents plan status 01KNKJZ424C48388RWHW3KY5QZ --format json

Output:

{
  "command": "",
  "status": "ok",
  "exit_code": 0,
  "data": {
    "plan_id": "01KNKJZ424C48388RWHW3KY5QZ",
    "namespaced_name": "local/architecture-review-01knkjz4",
    "phase": "strategize",
    "processing_state": "queued",
    "state": "queued",
    "project_links": [
      {
        "project_name": "local/my-webapp"
      }
    ],
    "arguments": {},
    "automation_profile": "manual",
    "action_name": "local/architecture-review",
    "description": "Analyzes the project structure, dependency graph, and code patterns\nto produce an architecture review report. Does not modify any files.",
    "definition_of_done": "Architecture review report generated covering:\n- Module dependency graph\n- Layer boundary compliance\n- Circular dependency detection\n- Code duplication analysis",
    "strategy_actor": "local/strategist",
    "execution_actor": "local/executor",
    "estimation_actor": null,
    "invariant_actor": null,
    "created_at": "2026-04-07T09:04:23.620455",
    "updated_at": "2026-04-07T09:04:23.620456",
    "is_terminal": false
  },
  "timing": {
    "duration_ms": 0
  },
  "messages": [
    {
      "level": "ok",
      "text": "ok"
    }
  ]
}

Step 16: Cancel a plan

$ agents plan cancel 01KNKJZ44ES00VT8JTRKX1HEQA

Output:

✓ Plan cancelled: local/architecture-review-01knkjz4

Cancelled plans are terminal — they cannot be resumed. Use plan list to confirm the state change:

$ agents plan list --phase strategize

The cancelled plan will appear with state: cancelled in the list.


Scripting with JSON Output

Because all commands support --format json, you can integrate CleverAgents into shell scripts and CI pipelines:

# Get a plan's current phase
$ agents plan status <PLAN_ID> --format json | jq -r '.data.phase'
strategize

# Check if a plan is terminal
$ agents plan status <PLAN_ID> --format json | jq '.data.is_terminal'
false

# List all available actions as a name array
$ agents action list --format json | jq -r '.data[].namespaced_name'
local/architecture-review
local/data-pipeline
local/large-refactor
local/security-audit

# Count queued plans
$ agents plan list --state queued --format json | jq '.data | length'
3

# Get all plan IDs for a specific action
$ agents plan list --action local/security-audit --format json \
    | jq -r '.data[].plan_id'
01KNKK0MKCDXGP8Z3PZ88S5GGZ

# Check if any plans are in error state
$ agents plan list --format json | jq '.data[] | select(.state == "errored") | .plan_id'

Plan Lifecycle Reference

Phases

Phase Description
strategize AI creates an execution strategy (decisions tree)
execute AI executes the strategy, generating a ChangeSet
apply ChangeSet is written to disk

Processing States

State Description
queued Waiting to be processed
processing Currently being processed by an actor
complete Phase completed successfully
applied Changes written to disk (terminal)
cancelled Cancelled by user (terminal)
errored Failed with an error (recoverable via plan resume)

Action States

State Description
available Ready to use for creating plans
archived Soft-deleted; preserved for history but not usable

Complete Interaction Log

Click to see the full verified command sequence
# 1. Register actions from YAML files
$ agents action create --config examples/actions/simple.yaml
# → Action Created: local/lint-check (available)

$ agents action create --config examples/actions/estimation-actor.yaml
# → Action Created: local/large-refactor (available)

$ agents action create --config examples/actions/invariant-heavy.yaml
# → Action Created: local/security-audit (available)

$ agents action create --config examples/actions/read-only.yaml
# → Action Created: local/architecture-review (available)

$ agents action create --config examples/actions/inputs-schema.yaml
# → Action Created: local/data-pipeline (available)

# 2. List all actions
$ agents action list
# → Table: 5 actions, all available

# 3. Filter by namespace
$ agents action list --namespace local
# → Table: 5 actions (all in local namespace)

# 4. Filter by regex
$ agents action list ".*audit.*"
# → Table: 1 action (local/security-audit)

# 5. Show action details
$ agents action show local/security-audit
# → Panel: full details including arguments

# 6. Get action as JSON
$ agents action show local/large-refactor --format json
# → JSON envelope with data.arguments array

# 7. Archive an action
$ agents action archive local/lint-check
# → ✓ Action archived: local/lint-check

# 8. List archived actions
$ agents action list --state archived
# → Table: 1 action (local/lint-check, state: archived)

# 9. Create a project
$ agents project create local/my-webapp --description "A sample web application project"
# → Panel: Project Created

# 10. Create a plan from an action
$ agents plan use local/architecture-review local/my-webapp
# → Panel: Plan Created, ID: 01KNKJZ424C48388RWHW3KY5QZ, phase: strategize

# 11. Create a plan with arguments and invariants
$ agents plan use local/security-audit local/my-webapp \
    --arg severity_threshold=high \
    --arg auto_fix=false \
    --invariant "Never modify production data"
# → Panel: Plan Created with arguments and invariants shown

# 12. List all plans
$ agents plan list
# → Table: 3 plans + Summary panel

# 13. Filter plans
$ agents plan list --phase strategize
$ agents plan list --state queued
$ agents plan list --action local/security-audit

# 14. Inspect a plan
$ agents plan status 01KNKJZ424C48388RWHW3KY5QZ
# → Panel: full plan details

# 15. Get plan as JSON
$ agents plan status 01KNKJZ424C48388RWHW3KY5QZ --format json
# → JSON envelope with full plan data

# 16. Cancel a plan
$ agents plan cancel 01KNKJZ44ES00VT8JTRKX1HEQA
# → ✓ Plan cancelled: local/architecture-review-01knkjz4

Key Takeaways

  • Actions are YAML templates — define them once, reuse across projects. The examples/actions/ directory has five ready-to-use examples.
  • Plans are runtime instancesagents plan use <action> <project> creates a plan with a ULID identifier used for all subsequent commands.
  • Plans start in strategize/queued — they need agents plan execute to drive LLM processing.
  • Arguments are typed — pass them with --arg name=value; they are validated against the action's argument definitions.
  • Invariants are hard constraints — add them with --invariant "text"; the AI must never violate them during execution.
  • All commands support --format json — use it for scripting, CI pipelines, and integration with jq.
  • --format json uses an envelope — the payload is always in .data; use jq '.data' to extract it.
  • Archived actions are preserved — use --state archived to see them.
  • Cancelled plans are terminal — they cannot be resumed.

Try It Yourself

# Register all example actions at once
for f in examples/actions/*.yaml; do
    agents action create --config "$f"
done

# Create a project and plan
agents project create local/my-project --description "My project"
agents plan use local/architecture-review local/my-project

# Get the plan ID and check its status
PLAN_ID=$(agents plan list --format json | jq -r '.data[0].plan_id')
agents plan status "$PLAN_ID"

# List only queued plans
agents plan list --state queued

# Script: count available actions
agents action list --format json | jq '.data | map(select(.state == "available")) | length'
  • See docs/showcase/cli-tools/output-format-flags.md for the JSON/YAML envelope format used by all commands
  • See docs/showcase/cli-tools/ for more CLI tool examples

This example was automatically generated and verified by the CleverAgents UAT system. Feature area: Action management and plan lifecycle | Test cycle: 1 | Generated: 2026-04-07