Skills plan-do-check-act

PDCA workflow automation with session binding and progress recovery. Requires Python 3.6 and Git (optional).

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/brucezhu888/plan-do-check-act" ~/.claude/skills/openclaw-skills-plan-do-check-act && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/brucezhu888/plan-do-check-act" ~/.openclaw/skills/openclaw-skills-plan-do-check-act && rm -rf "$T"
manifest: skills/brucezhu888/plan-do-check-act/SKILL.md
source content

Plan-Do-Check-Act Skill

This skill implements the PDCA (Plan-Do-Check-Act) workflow to ensure tasks are systematically planned and executed.

Requirements

  • Python 3.6+ - Required for all scripts
  • Git - Optional - Only used for progress tracking. PDCA works perfectly without Git - it will use file modification times instead.

Setup Guide (First Time)

After installing, run the setup wizard:

# Run interactive setup
python3 scripts/setup.py

The wizard will:

  1. Check Python and Git dependencies
  2. Create workspace directory (default:
    ~/pdca-workspace
    )
  3. Create a test plan
  4. Optionally initialize Git for progress tracking
  5. Show next steps

Manual Setup

If you prefer manual setup:

# 1. Create workspace directory
mkdir -p ~/pdca-workspace

# 2. Create a test plan
cd ~/pdca-workspace
manage_plan.py create "My First Plan" "Task 1" "Task 2" "Task 3"

# 3. Verify it works
manage_plan.py check plan.md

# 4. (Optional) Set up git for progress tracking
git init

Security Notes

  • Workspace Scope: Only operates on
    plan*.md
    files in the configured workspace directory
  • Destructive Operations:
    cleanup
    command deletes archived files older than specified days (default 7)
  • User Confirmation: Archive operation prompts for confirmation if plan is not completed
  • Dry Run: Use
    cleanup --dry-run
    to preview before deleting
  • Autonomous Invocation: Should require user confirmation before cleanup/archive operations

Core Process

1. Plan

When receiving a user task, create

plan.md
:

  • Break down the task into executable subtasks
  • Record the session ID
  • Mark priorities and dependencies

2. Do

Execute tasks according to plan.md:

  • Check off each completed task
    [x]
  • Mark in-progress tasks as
    [>]
  • Record issues during execution

3. Check

After all tasks are completed:

  • Check for any missed items
  • Verify output meets expectations
  • Identify areas for improvement

4. Act

Based on check results:

  • Fix identified issues
  • Update plan.md with learnings
  • Archive or iterate

plan.md Template

# Task Plan: [Task Name]

**Session:** discord:1488795270769676318
**Created:** YYYY-MM-DD HH:MM
**Status:** IN_PROGRESS | COMPLETED | PAUSED

## Current Task

> Task 3 - Implement Login API (in progress)

## Checklist

- [x] Task 1 - Database Design
- [x] Task 2 - User Model Creation
- [>] Task 3 - Implement Login API (in progress)
- [ ] Task 4 - Implement Registration API
- [ ] Task 5 - Unit Testing

## Notes

Records during execution...

## Check Results

Fill in after completion...

Trigger Scenarios

Core Logic: Step Analysis

After receiving a task, quickly analyze how many steps are needed:

1-2 steps → Execute directly, no plan

  • "Rename a file"
  • "Delete that test file"

3-5 steps → Optional plan (ask user)

  • "Help me build a login feature"

5+ steps → Auto trigger PDCA

  • "Build a complete user system with registration and login"
  • "Refactor this project from React to Vue"

Step Analysis Dimensions

Dimension1 step2-3 steps5+ steps
File ChangesSingle file2-3 filesMultiple modules/dirs
DependenciesNoneSimpleMulti-layer/sequential
Tech StackSingle tech2 techsFull-stack/multi-service
TestingNo testingSimple validationFull test suite
Deploy/ConfigNo deployLocal runDeploy + config + docs

Keyword Triggers

Trigger regardless of step count when user explicitly requests:

  • "break down", "decompose", "plan", "checklist"
  • "plan", "checklist", "todo", "track"

Session Binding

plan.md Records Session ID

**Session:** discord:1488795270769676318

Categorized Display After Wake

Uncompleted plans for current session:
1. plan.md - User System Development (2/5)

Uncompleted plans for other sessions:
2. plan-blog.md - Blog Setup (1/3) ← telegram:123456

Interruption Recovery

Two Interruption Scenarios

ScenarioHandling
Unexpected (network down, crash)Check file modifications within 10 minutes
Manual Pause ("pause for now")Use
PAUSED
status explicitly

Progress Inference (Active Check)

  1. Check git status - Uncommitted changes
  2. Check file modification time - Files within 10 minutes
  3. Compare task description - Keyword matching
  4. Identify task type - Code/Test/Deploy/Docs/General
  5. Ask user confirmation - Final confirmation

Recovery Flow

Wake → on-start → Read plan.md → Check files within 10 min
                                    ↓
                    "login_api.py modified 3 min ago, continue?"

Consumption Mechanism

Status Flow

CREATED → IN_PROGRESS → PAUSED ↔ RESUMED → COMPLETED → ARCHIVED

Execution Rules

  • Consume one task at a time
  • Check off immediately upon completion
    [x]
  • Skip and record if blocked

Concurrency Control

  • Only one active plan at a time
  • When new task arrives: if incomplete plan exists → ask "Finish previous or create new?"

Destruction Mechanism

Archive Strategy

StatusRetentionAction
COMPLETED7 daysMove to
archive/plan-YYYY-MM-DD-taskname.md
PAUSED30 daysAsk user to continue or delete
STALE (no update >14 days)ImmediateMark as
ABANDONED
, wait for confirmation

Cleanup Commands

# Archive completed
manage_plan.py archive

# Cleanup expired files (>7 days)
manage_plan.py cleanup --days 7

# List all plans
manage_plan.py list

Usage

Agent Workflow

Trigger Conditions

Automatically trigger PDCA when user:

  • Asks about incomplete tasks: "What's not done?", "What's pending?", "Any unfinished tasks?"
  • Asks about progress: "How's it going?", "Progress check", "What's the status?"
  • Asks about the plan: "What's the plan?", "Show me the plan"
  • Submits a complex task (5+ steps)
  • Explicitly requests: "break down", "create a plan", "make a checklist"

Plan Phase

  1. Analyze steps with
    analyze_steps.py
  2. If 5+ steps → create plan.md
  3. Output plan content to user

Do Phase

  1. Execute tasks one by one
  2. After each task → update plan.md
  3. Report progress to user

Example:

「✓ Task 1 complete (Database Design)
→ Starting Task 2 (User Model Creation)」

Check Phase

  1. When user asks "What's not done?" → run
    manage_plan.py on-start
  2. Output incomplete plans with progress
  3. Example response:
「You have 1 incomplete plan:

**User System Development** (2/5 complete)
✓ Database Design
✓ User Model Creation
○ Implement Login API (in progress)
○ Implement Registration API
○ Unit Testing

Next task: Implement Login API」

Act Phase

  1. Fix identified issues
  2. Archive completed plans

Create Plan

# Simple create
manage_plan.py create "User System" "Database Design" "User Model" "Login API"

# With session
manage_plan.py create "User System" "Task 1" "Task 2" \
  --session "discord:1488795270769676318"

# Specify output file
manage_plan.py create "Blog Setup" "Buy Domain" "Deploy" \
  --output plan-blog.md

Update Status

# Complete tasks 1 and 2
manage_plan.py update plan.md --completed 0,1

# Mark current task (in progress)
manage_plan.py update plan.md --current 2

Pause/Resume

# Pause
manage_plan.py pause plan.md --reason "Waiting for API response"

# Resume
manage_plan.py resume plan.md

Session Start Check

# Check incomplete plans
manage_plan.py on-start . "discord:1488795270769676318"

Progress Check

# Check current progress
manage_plan.py check plan.md

# Detailed progress check (with git and files)
python3 scripts/check_progress.py . plan.md

Scripts

ScriptFunction
manage_plan.py
Main management script (create/update/pause/resume/archive)
check_progress.py
Progress check (git + file modification + keyword matching)
analyze_steps.py
Step analysis (decide whether to plan)
check_deps.py
Dependency check

Configuration

Default workspace:

~/.openclaw/workspace/
Plan files:
plan.md
or
plan-*.md
Archive directory:
archive/

Security:

  • Only operates on
    plan*.md
    files in the workspace
  • Does not modify non-plan files
  • Archive/cleanup only affects
    archive/
    directory
  • Use
    --dry-run
    to preview cleanup before deleting