Autonomously execute tasks from a markdown task list with dependency awareness, blocker detection, and retry logic. Use when the user asks to "work through tasks", "execute pending tasks", "run the task list", "continue with tasks", or wants automated task execution from a markdown file with sections (Pending, In Progress, Completed, Failed).
View on GitHubplugins/saurun/skills/autonomous-task-executor/SKILL.md
February 5, 2026
Select agents to install to:
npx add-skill https://github.com/fiatkongen/saurun-marketplace/blob/main/plugins/saurun/skills/autonomous-task-executor/SKILL.md -a claude-code --skill autonomous-task-executorInstallation paths:
.claude/skills/autonomous-task-executor/# Autonomous Task Executor Execute tasks from a markdown task list autonomously with intelligent dependency handling, blocker detection, and exponential backoff retry logic. ## Task File Location **Default location:** `~/tasks.md` (user's home directory) **Before first execution:** - Check if `~/tasks.md` exists using: `test -f ~/tasks.md` - If not, create it with the template structure: ```bash cat > ~/tasks.md << 'EOF' ## Pending ## In Progress ## Completed ## Failed EOF ``` - User can specify alternative path, but default is always `~/tasks.md` **Path expansion:** - Always expand `~` to full home directory path using `$HOME` or `os.path.expanduser()` in scripts - Example: `~/tasks.md` → `/Users/username/tasks.md` ## Core Workflow Execute this sequence continuously until all tasks complete or all remaining tasks are blocked: ### 1. Read and Parse Task File Read the markdown task file from `~/tasks.md` (or user-specified path) once per cycle. Expected format: ```markdown ## Pending - Task 1 - Task 2 (Depends on: Task 1) ## In Progress - Currently executing task ## Completed - Finished task ## Failed - Failed task (Error: reason) ``` See [task-format.md](references/task-format.md) for complete format reference. ### 2. Find Next Executable Task Parse the file content to identify the first unblocked pending task: **Parsing logic:** - Iterate through lines under `## Pending` section - For each task line starting with `-`: - Check for `(Depends on: X)` - if found, verify X exists in `## Completed` section - Check for `(Blocked by: Y)` - if found, task is blocked - If no blockers, this is the next executable task **Iteration behavior:** - Check each pending task in order - SKIP blocked tasks, move to next - Execute FIRST non-blocked task found - LEAVE blocked tasks in Pending section **If ALL pending tasks are blocked:** - Do NOT attempt execution - Wait 5 minutes - Restart from step 1 (blockers may be manually resolved) ### 3