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.mdsource 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:
- Check Python and Git dependencies
- Create workspace directory (default:
)~/pdca-workspace - Create a test plan
- Optionally initialize Git for progress tracking
- 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
files in the configured workspace directoryplan*.md - Destructive Operations:
command deletes archived files older than specified days (default 7)cleanup - User Confirmation: Archive operation prompts for confirmation if plan is not completed
- Dry Run: Use
to preview before deletingcleanup --dry-run - 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
| Dimension | 1 step | 2-3 steps | 5+ steps |
|---|---|---|---|
| File Changes | Single file | 2-3 files | Multiple modules/dirs |
| Dependencies | None | Simple | Multi-layer/sequential |
| Tech Stack | Single tech | 2 techs | Full-stack/multi-service |
| Testing | No testing | Simple validation | Full test suite |
| Deploy/Config | No deploy | Local run | Deploy + 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
| Scenario | Handling |
|---|---|
| Unexpected (network down, crash) | Check file modifications within 10 minutes |
| Manual Pause ("pause for now") | Use status explicitly |
Progress Inference (Active Check)
- Check git status - Uncommitted changes
- Check file modification time - Files within 10 minutes
- Compare task description - Keyword matching
- Identify task type - Code/Test/Deploy/Docs/General
- 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
| Status | Retention | Action |
|---|---|---|
| COMPLETED | 7 days | Move to |
| PAUSED | 30 days | Ask user to continue or delete |
| STALE (no update >14 days) | Immediate | Mark as , 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
- Analyze steps with
analyze_steps.py - If 5+ steps → create plan.md
- Output plan content to user
Do Phase
- Execute tasks one by one
- After each task → update plan.md
- Report progress to user
Example:
「✓ Task 1 complete (Database Design) → Starting Task 2 (User Model Creation)」
Check Phase
- When user asks "What's not done?" → run
manage_plan.py on-start - Output incomplete plans with progress
- 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
- Fix identified issues
- 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
| Script | Function |
|---|---|
| Main management script (create/update/pause/resume/archive) |
| Progress check (git + file modification + keyword matching) |
| Step analysis (decide whether to plan) |
| Dependency check |
Configuration
Default workspace:
~/.openclaw/workspace/
Plan files: plan.md or plan-*.md
Archive directory: archive/
Security:
- Only operates on
files in the workspaceplan*.md - Does not modify non-plan files
- Archive/cleanup only affects
directoryarchive/ - Use
to preview cleanup before deleting--dry-run