| name | executing-plans |
| description | Use when implementing a multi-step plan. Execute systematically with verification checkpoints to catch errors early. |
Executing Plans
Core Principle
Execute plans systematically, one task at a time, with verification checkpoints. NEVER work through multiple tasks without verification.
When to Use This Skill
- After completing
writing-plansskill and getting user approval - You have a written plan with TodoWrite entries
- Multi-step implementation work
- Any task where order matters
The Iron Law
Execute ONE task at a time. Verify EACH task before proceeding.
Reasons:
- Catches errors early when they're cheap to fix
- Prevents cascading failures
- Maintains working state between steps
- Allows rollback to last known-good state
- Gives user visibility into progress
Execution Protocol
Step 1: Announce Start of Execution
Template:
I'm using the executing-plans skill to implement this systematically.
I'll work through each task one at a time, verifying as I go.
Step 2: Mark Task as In Progress
BEFORE starting ANY work:
Marking Task 1 as in_progress.
Update TodoWrite status to in_progress.
CRITICAL: Only ONE task should ever be in_progress at a time.
Step 3: Execute the Task
Follow the task's action items EXACTLY as written in the plan:
- Read the plan task carefully
- Execute each action step
- Document any deviations or issues
- If you encounter problems, STOP and report
Step 4: Verify the Task
MANDATORY after each task:
- Run the verification specified in the plan
- Check the expected outcome
- If verification fails:
- DO NOT proceed to next task
- Investigate the failure
- Fix the issue
- Re-verify
- If verification passes:
- Mark task as completed
- Document the successful verification
Template:
Verifying Task 1:
- Running: [verification command]
- Expected: [expected outcome]
- Actual: [actual outcome]
- Status: ✅ PASS / ❌ FAIL
Step 5: Mark Task as Completed
ONLY after successful verification:
Task 1 completed successfully. Moving to Task 2.
Update TodoWrite status to completed.
Step 6: Repeat for Next Task
Before moving on, explicitly state:
Marking Task 2 as in_progress.
NEVER start a new task without:
- Completing previous task
- Verifying previous task
- Marking previous task as completed
- Marking new task as in_progress
Step 7: Handle Failures
If a task fails verification:
Template:
❌ Task [X] verification FAILED
Expected: [what should have happened]
Actual: [what actually happened]
Issue: [description of problem]
I'm investigating before proceeding. Keeping Task [X] as in_progress.
Actions to take:
- Keep task as
in_progress(don't mark completed) - Investigate the root cause
- Fix the issue
- Re-verify
- Only mark completed after successful verification
If issue is blocking:
This issue is blocking progress. I need to resolve it before continuing.
Options:
1. [Fix approach 1]
2. [Fix approach 2]
Which approach would you prefer?
Step 8: Report Progress Regularly
For long-running plans, provide status updates:
Template:
Progress Update:
✅ Task 1: [Name] - Completed
✅ Task 2: [Name] - Completed
🔄 Task 3: [Name] - In Progress
⏳ Task 4: [Name] - Pending
⏳ Task 5: [Name] - Pending
Currently working on: [Current task description]
Critical Safety Checks
Before ANY Database Operation
MANDATORY: Use database-backup skill
Before proceeding with Task [X] (database operation), I'm using the database-backup skill.
Before Running Tests
MANDATORY: Use database safety wrapper
Running tests with safety wrapper: ./scripts/safe-test.sh [test command]
Before Git Operations
- Verify clean working directory
- Ensure you're on correct branch
- Pull latest changes if needed
Red Flags (Execution is Going Wrong)
- ❌ Multiple tasks marked as
in_progress→ Only ONE at a time - ❌ Skipping verification → NEVER skip verification
- ❌ Marking tasks completed without verification → Verification is mandatory
- ❌ "I'll test everything at the end" → Test each task immediately
- ❌ Deviating from plan without user approval → Stick to the plan
- ❌ Moving to next task despite failed verification → Fix failures first
Common Rationalizations to Reject
- ❌ "I'll verify later" → Verify NOW
- ❌ "These tasks are related, I'll do them together" → One at a time
- ❌ "Verification is too slow" → Verification SAVES time
- ❌ "I know it works" → Prove it with verification
- ❌ "I'll batch the todos" → Update todos immediately
When Plans Change
If you discover issues during execution:
Template:
During Task [X], I discovered [issue/new information].
This affects the plan:
- [Impact 1]
- [Impact 2]
I recommend [adjustment to plan].
Should I:
1. Continue with original plan
2. Adjust plan as suggested
3. Stop and re-plan
NEVER silently deviate from the plan.
Integration with Other Skills
Before executing-plans: Use writing-plans skill
During execution: Use database-backup, test-driven-development as needed
After execution: Use code-review and verification-before-completion skills
Example Execution
Starting a Plan
I'm using the executing-plans skill to implement user authentication.
Plan has 6 tasks. I'll execute them one at a time with verification.
Marking Task 1 as in_progress: Install and Configure Sanctum
Executing Task 1
Task 1: Install and Configure Sanctum
Actions:
1. Running: composer require laravel/sanctum
✅ Package installed
2. Publishing config: php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
✅ Config published
3. Database backup (MANDATORY before migration)
I'm using the database-backup skill.
✅ Backup created: backups/database_2025-01-06_14-30-00.sql
4. Running migration: php artisan migrate
✅ Migrations completed
5. Adding Sanctum middleware to app/Http/Kernel.php
✅ Middleware added
Verifying Task 1:
- Running: php artisan route:list | grep sanctum
- Expected: Sanctum routes should be visible
- Actual: Found sanctum routes in output
- Status: ✅ PASS
Task 1 completed successfully.
Moving to Task 2
Marking Task 2 as in_progress: Create Authentication Controller
Task 2: Create Authentication Controller
Actions:
1. Creating app/Http/Controllers/AuthController.php
✅ File created
2. Implementing register() method with validation
✅ Method added
3. Implementing login() method with token generation
✅ Method added
4. Implementing logout() method with token revocation
✅ Method added
Verifying Task 2:
- Running: cat app/Http/Controllers/AuthController.php | grep "public function"
- Expected: Should see register, login, logout methods
- Actual: All three methods present
- Status: ✅ PASS
Task 2 completed successfully.
Handling a Failure
Marking Task 5 as in_progress: Run Tests with Database Backup
Task 5: Run Tests with Database Backup
Actions:
1. Using database-backup skill
✅ Backup created: backups/database_2025-01-06_14-45-00.sql
2. Running: ./scripts/safe-test.sh vendor/bin/paratest --filter=AuthenticationTest
❌ Test failed
Verifying Task 5:
- Running: vendor/bin/paratest --filter=AuthenticationTest
- Expected: All authentication tests pass
- Actual: 2 failures in login test
- Status: ❌ FAIL
Error output:
Failed asserting that 401 matches expected 200. Expected token in response, got error message.
Issue: Login endpoint returning 401 instead of 200. Appears to be credentials validation issue.
Investigating AuthController login method...
Found issue: Missing password verification.
Fixing: Added Hash::check() for password validation.
Re-running verification:
- Running: ./scripts/safe-test.sh vendor/bin/paratest --filter=AuthenticationTest
- Status: ✅ PASS - All tests now passing
Task 5 completed successfully (after fix).
Progress Update
Progress Update - User Authentication Implementation:
✅ Task 1: Install and Configure Sanctum - Completed
✅ Task 2: Create Authentication Controller - Completed
✅ Task 3: Add API Routes - Completed
✅ Task 4: Create Authentication Tests - Completed
✅ Task 5: Run Tests with Database Backup - Completed (fixed login validation)
🔄 Task 6: Update API Documentation - In Progress
Currently working on: Generating OpenAPI documentation for auth endpoints
Completing the Plan
Task 6: Update API Documentation
Actions:
1. Adding PHPDoc comments to AuthController methods
✅ Comments added
2. Generating OpenAPI docs: php artisan scramble:generate
✅ Documentation generated
3. Verifying endpoints in /docs/api
✅ Auth endpoints visible
Verifying Task 6:
- Running: curl http://localhost/docs/api | grep "auth"
- Expected: Should see register, login, logout endpoints
- Actual: All three endpoints present in documentation
- Status: ✅ PASS
Task 6 completed successfully.
---
All 6 tasks completed successfully! ✅
Summary:
✅ Sanctum installed and configured
✅ Authentication controller created
✅ API routes exposed
✅ Tests created and passing
✅ API documentation generated
Ready for code-review skill.
Task Completion Checklist
Before marking a task as completed:
- All actions in the task are executed
- Verification step has been run
- Verification has PASSED
- Any files created/modified are correct
- No errors or warnings
- TodoWrite status updated
Authority
This skill is based on:
- Software engineering best practice: Incremental development with verification
- Test-driven development: Verify each step
- Agile methodology: Working software at all times
- Empirical evidence: Verified incremental progress has 90% success rate vs 40% for unverified batch work
Social Proof: Professional developers verify each step. No one writes 1000 lines without running tests.
Your Commitment
Before using this skill, confirm:
- I will execute ONE task at a time
- I will VERIFY each task before moving on
- I will NEVER mark tasks completed without verification
- I will UPDATE TodoWrite status immediately
- I will REPORT failures and stop if blocked
Bottom Line: Slow and steady wins. One task, one verification, one completion at a time. Batch work leads to batch failures.