Claude
Skills
Sign in
← Back

lightweight-task-workflow

Included with Lifetime
$97 forever

FOLLOW THE STATE MACHINE IN SKILL.MD. When user says 'continue': (1) FIRST: Run pwd, (2) Announce STATE: CHECK_STATUS, (3) Read .claude/session.md to check Status field, (4) Route based on Status. NEVER auto-advance tasks. NEVER use TodoWrite. NEVER create git commits.

Productivity

What this skill does


# Lightweight Task Workflow

**🚨 CRITICAL: YOU MUST FOLLOW THE STATE MACHINE BELOW 🚨**

**🚨 EVERY SINGLE MESSAGE MUST START WITH: `πŸ”΅ STATE: [STATE_NAME]` 🚨**

NOT JUST THE FIRST MESSAGE. EVERY. SINGLE. MESSAGE.

When you read a file - prefix with state.
When you run a command - prefix with state.
When you explain something - prefix with state.
When you ask a question - prefix with state.

Example:
```
πŸ”΅ STATE: WORKING
Reading requirements.md...

πŸ”΅ STATE: WORKING
I can see the requirements specify...

πŸ”΅ STATE: WORKING
Now running tests...

πŸ”΅ STATE: WORKING
Test results show...
```

This skill is a persistent todo list based on 3 files in `.claude/`: `tasks.md` (checklist), `requirements.md` (specs), `session.md` (current state).

When user says "continue", you MUST:
1. Run `pwd` to check current working directory
2. Announce `πŸ”΅ STATE: CHECK_STATUS`
3. Read `.claude/session.md` from the current project directory
4. Follow the state machine below based on the Status field

**STATE MACHINE:**

```
                         user: "continue"
                                ↓
                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                   β”Œβ”€β”€β”€β”‚ CHECK_STATUS   │←──────────┬──────────┐
                   β”‚   β”‚ Read session.mdβ”‚           β”‚          β”‚
                   β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚          β”‚
                   β”‚            β”‚                   β”‚          β”‚
        Status=    β”‚            β”‚ Status=           β”‚          β”‚
        "Complete" β”‚            β”‚ "in progress"     β”‚          β”‚
                   β”‚            β”‚                   β”‚          β”‚
                   ↓            ↓                   β”‚          β”‚
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚          β”‚
           β”‚ AWAITING_ β”‚  β”‚ WORKING      │←────┐   β”‚          β”‚
           β”‚ COMMIT    β”‚  β”‚              β”‚     β”‚   β”‚          β”‚
           β”‚           β”‚  β”‚ Read:        β”‚     β”‚   β”‚          β”‚
           β”‚ Ask       β”‚  β”‚ requirements β”‚     β”‚   β”‚          β”‚
           β”‚ permissionβ”‚  β”‚ tasks.md     β”‚     β”‚   β”‚          β”‚
           β”‚ STOP      β”‚  β”‚              β”‚     β”‚   β”‚          β”‚
           β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β”‚ Write:       β”‚     β”‚   β”‚          β”‚
                 β”‚        β”‚ session.md   β”‚     β”‚   β”‚          β”‚
       user: yes β”‚        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚   β”‚          β”‚
                 β”‚               β”‚             β”‚   β”‚          β”‚
                 β”‚               β”‚ task done   β”‚   β”‚          β”‚
                 β”‚               β”‚             β”‚   β”‚          β”‚
                 β”‚               ↓             β”‚   β”‚          β”‚
                 β”‚        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚   β”‚          β”‚
                 β”‚        β”‚ VERIFY       β”‚     β”‚   β”‚          β”‚
                 β”‚        β”‚              β”‚     β”‚   β”‚          β”‚
                 β”‚        β”‚ Run steps    β”‚     β”‚   β”‚          β”‚
                 β”‚        β”‚ from         β”‚β”€β”€β”€β”€β”€β”˜   β”‚          β”‚
                 β”‚        β”‚ requirements β”‚ fail    β”‚          β”‚
                 β”‚        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚          β”‚
                 β”‚               β”‚                 β”‚          β”‚
                 β”‚               β”‚ pass            β”‚          β”‚
                 β”‚               β”‚                 β”‚          β”‚
                 β”‚               ↓                 β”‚          β”‚
                 β”‚        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚          β”‚
                 β”‚        β”‚ COMPLETE     β”‚         β”‚          β”‚
                 β”‚        β”‚              β”‚         β”‚          β”‚
                 β”‚        β”‚ Write:       β”‚         β”‚          β”‚
                 β”‚        β”‚ session.md   β”‚         β”‚          β”‚
                 β”‚        β”‚ Status=      β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚
                 β”‚        β”‚ "Complete"   β”‚                    β”‚
                 β”‚        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
                 β”‚                                            β”‚
                 ↓                                            β”‚
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                              β”‚
           β”‚ MARK_TASK_       β”‚                              β”‚
           β”‚ COMPLETE         β”‚                              β”‚
           β”‚                  β”‚                              β”‚
           β”‚ Write: tasks [x] β”‚                              β”‚
           β”‚ Write: session.mdβ”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚ (next task)      β”‚
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

**🚨 STATE DEFINITIONS - FOLLOW EXACTLY 🚨**

**CHECK_STATUS:**
```
ACTIONS:
1. Run pwd
2. Read .claude/session.md
3. Look at Status field
4. IF Status="Complete" OR "ready to commit" β†’ Go to AWAITING_COMMIT
5. IF Status="in progress" OR missing β†’ Go to WORKING

DO NOT: Read other files, launch agents, do anything except route
IF ERROR: STOP and tell user what failed
```

**AWAITING_COMMIT:**
```
ACTIONS:
1. Say: "Task X is complete. May I mark Task X as complete in tasks.md?"
2. STOP - wait for user response
3. IF user says yes β†’ Go to MARK_TASK_COMPLETE
4. IF user says no β†’ STOP, await further instruction

DO NOT: Read files, launch agents, work on next task, do anything except ask permission and STOP
IF ERROR: STOP and tell user what failed
```

**MARK_TASK_COMPLETE:**
```
ACTIONS:
1. Write tasks.md: Change [ ] to [x] for current task
2. Write session.md: Update to next task with Status="in progress"
3. Go to CHECK_STATUS

DO NOT: Read other files, launch agents, research next task
IF ERROR (e.g., plan mode, can't write): Say "I cannot edit files: [reason]" and STOP
NEVER try alternative actions if write fails
```

**WORKING:**
```
REMINDER: EVERY message in this state must start with: πŸ”΅ STATE: WORKING

ACTIONS:
1. Read requirements.md
2. Read tasks.md
3. Work on current task
4. Update session.md after TDD cycles
5. When task done β†’ Go to VERIFY

EVERY message you send while WORKING must have the state prefix.
When you read a file β†’ prefix with state
When you run tests β†’ prefix with state
When you explain results β†’ prefix with state

DO NOT: Skip to next task, work on multiple tasks
IF ERROR: Document in session.md as blocker, STOP
```

**VERIFY:**
```
REMINDER: EVERY message in this state must start with: πŸ”΅ STATE: VERIFY

ACTIONS:
1. Read Verification section from requirements.md
2. Run all verification commands
3. IF all pass β†’ Go to COMPLETE
4. IF any fail β†’ Go to WORKING (treat as blocker)

EVERY message you send while VERIFYING must have the state prefix.

DO NOT: Skip verification, claim complete without running checks
IF ERROR running verification: STOP and tell user
```

**COMPLETE:**
```
ACTIONS:
1. Write session.md: Set Status="Complete"
2. Go to CHECK_STATUS

DO NOT: Read files, launch agents, ask permission (that happens in AWAITING_COMMIT)
IF ERROR writing: STOP and tell user
```

**CRITICAL: State Announcements**

**ALL messages MUST be prefixed with your current state.**

Format:
```
**πŸ”΅ STATE: [STATE_NAME]**

[Your message here]
```

When transitioning:
```
**🟒 TRANSITION: [STATE_A] β†’ [STATE_B]**
```

Example:
```
**πŸ”΅ STATE: CHECK_STATUS**

Reading session.md to check current task status...

**🟒 TRANSITION: CHECK_STATUS β†’ AWAITING_COMMIT**

**πŸ”΅ STATE: AWAITING_COMMIT**

Task 2 is complete and ready for you to commit. May I mark Task 2 as complete in tasks.md?
```

## When to Use This Skill

Activate when the user:
- Says "create a plan", "setup tasks", "new task list"
- Says "continue", "continue plan", "resume work", "where were we"
- Is working on multi-step projects that span multiple sessions

## ⚠️ CRITICAL: Task Management System

**THIS SKILL REPLACES Claude Code's built-in TodoWrite functionality.**

**NEVER use the following tools:**
- ❌ TodoWrite
- ❌ TodoRead
- ❌ Any built-in todo/task tracking features

**ALWAYS use this skill's files instead:**
- βœ… `.claude/tasks.md` for task checklists
- βœ… `.claude/requirements.md` for plans and implementation specs
- βœ… `.claude/session.md` for session context and recovery

**Why this matters:** Using TodoWrite creates workflow conflicts. The built-in todo system stores tasks in internal state (not visible as files),

Related in Productivity