Plan Do Check Act
PDCA workflow automation with session binding and progress recovery. Requires Python 3.6 and Git (optional).
Like a lobster shell, security has layers — review code before you run it.
License
SKILL.md
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
plan*.mdfiles in the configured workspace directory - Destructive Operations:
cleanupcommand 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-runto 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
| 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 PAUSED 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 archive/plan-YYYY-MM-DD-taskname.md |
| PAUSED | 30 days | Ask user to continue or delete |
| STALE (no update >14 days) | Immediate | Mark 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
- 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 |
|---|---|
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*.mdfiles in the workspace - Does not modify non-plan files
- Archive/cleanup only affects
archive/directory - Use
--dry-runto preview cleanup before deleting
Files
7 totalComments
Loading comments…
