View and manage the task stack and processing queue. Shows pending work, active tasks, completed items, and queue state. Triggers on "/tasks", "show tasks", "what's pending", "task list", "queue status".
62
75%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skill-sources/tasks/SKILL.mdRead these files to configure domain-specific behavior:
ops/derivation-manifest.md — vocabulary mapping
vocabulary.notes for the notes folder namevocabulary.note / vocabulary.note_plural for note type referencesvocabulary.topic_map for MOC referencesvocabulary.cmd_reflect / vocabulary.cmd_reweave / vocabulary.cmd_verify for phase command namesops/config.yaml — pipeline chaining mode, automation settings
If no derivation file exists, use universal terms.
Target: $ARGUMENTS
Parse the operation:
status: show task stack + queue state (combined view)add [description]: add a task to the stackdone [task-number]: mark a task as completeddrop [task-number]: remove a task without completingreorder [number] [position]: move a task to a different position in the stackdiscoveries: show only the Discoveries sectionSTART NOW. Execute the requested operation.
Two systems, one view.
The task stack (ops/tasks.md) and the pipeline queue (ops/queue/queue.yaml or ops/queue/queue.json) serve different purposes:
| System | Purpose | Managed By | Updated By |
|---|---|---|---|
| Task stack | Human priorities — what YOU want to work on | You (via /tasks) | Manual: /tasks add, /tasks done |
| Pipeline queue | Automated processing state — what the SYSTEM needs to process | Pipeline skills | Automatic: /reduce, /ralph, /reflect |
/tasks shows BOTH so you always have a unified view of all pending work. The task stack is your working memory. The pipeline queue is the system's working memory. Together they answer: "What should I do next?"
Show both the human task stack and the automated queue.
Step 1: Read task stack
# Read ops/tasks.md
cat ops/tasks.md 2>/dev/nullParse the task stack into sections:
- [ ]- [x]If ops/tasks.md does not exist, note: "No task stack found. Run /tasks add [description] to create one."
Step 2: Read queue state
# Check for queue file (YAML or JSON)
if [[ -f "ops/queue/queue.yaml" ]]; then
QUEUE_FILE="ops/queue/queue.yaml"
PENDING_TASKS=$(grep -c 'status: pending' "$QUEUE_FILE" 2>/dev/null || echo 0)
DONE_TASKS=$(grep -c 'status: done' "$QUEUE_FILE" 2>/dev/null || echo 0)
elif [[ -f "ops/queue/queue.json" ]]; then
QUEUE_FILE="ops/queue/queue.json"
PENDING_TASKS=$(grep -c '"status": "pending"' "$QUEUE_FILE" 2>/dev/null || echo 0)
DONE_TASKS=$(grep -c '"status": "done"' "$QUEUE_FILE" 2>/dev/null || echo 0)
else
QUEUE_FILE=""
PENDING_TASKS=0
DONE_TASKS=0
fiIf a queue file exists, extract pending task details:
Step 3: Check for archivable batches
A batch is archivable when ALL its tasks have status: done:
# For each unique batch in the queue, check if all tasks are done
if [[ -n "$QUEUE_FILE" ]]; then
# Extract unique batch names
# Check each batch: are all tasks done?
# Report archivable batches
fiStep 4: Present combined view
--=={ tasks }==--
Task Stack (ops/tasks.md)
=========================
Current:
1. [ ] {task description}
2. [ ] {task description}
3. [ ] {task description}
Completed:
- [x] {task description} (2026-02-10)
- [x] {task description} (2026-02-08)
Discoveries:
- {discovery noted during work}
Pipeline Queue
==============
Pending: {count} tasks
- {task-id}: {current_phase} — {target title} (batch: {batch})
- {task-id}: {current_phase} — {target title} (batch: {batch})
...
Done: {count} tasks
Archivable batches: {list of batch names where all tasks are done}
Summary: {total current} tasks on stack, {queue pending} in pipelineInterpretation notes:
| Condition | Note |
|---|---|
| Task stack empty | "No tasks on stack. Use /tasks add [description] to add one, or /next for suggestions." |
| Pipeline has pending tasks | "Pipeline has {N} pending tasks. Run /ralph to process them." |
| Archivable batches exist | "Batch '{name}' is ready to archive. Run /archive-batch {name}." |
| Both empty | "All clear. Use /next to find what to work on." |
Add a new task to the task stack.
Step 1: Read current ops/tasks.md
If the file does not exist, create it with the standard structure:
# Task Stack
## Current
## Completed
## DiscoveriesStep 2: Add to Current section
Append the new task as a checkbox item at the END of the Current section:
- [ ] {description}Step 3: Write updated file
Use Edit tool to insert the new item at the end of the Current section, preserving existing content.
Step 4: Report
Added to task stack: {description}
Position: #{N} of {total}
Stack now has {total} current tasks.Mark a task as completed.
Step 1: Read current ops/tasks.md
Parse the Current section to find the Nth task.
Step 2: Validate
If the number is out of range (< 1 or > number of current tasks):
Error: Task #{number} does not exist. Current tasks: 1-{max}.Step 3: Move to Completed
- [x] {description} ({YYYY-MM-DD})Step 4: Write updated file
Step 5: Report
Completed: {description}
Remaining: {N} current tasks.Integration with /next: If the completed task was the top-priority item, suggest: "Top task completed. Run /next for the next recommendation."
Remove a task without completing it.
Step 1: Read current ops/tasks.md
Parse the Current section to find the Nth task.
Step 2: Validate
Same range check as /tasks done.
Step 3: Remove from Current
Remove the item entirely. Do NOT move to Completed.
Step 4: Write updated file
Step 5: Report
Dropped: {description}
Remaining: {N} current tasks.Move a task to a different position in the stack.
Step 1: Read current ops/tasks.md
Parse all Current items.
Step 2: Validate
Both [number] (source) and [position] (destination) must be within range.
Step 3: Reorder
Step 4: Write updated file
Step 5: Report
Moved: {description}
From position #{number} to #{position}
Current stack:
1. [ ] {task 1}
2. [ ] {task 2}
...Show only the Discoveries section from ops/tasks.md.
Discoveries (process later):
- {discovery 1}
- {discovery 2}
...
[If empty: "No discoveries captured. Discoveries are noted during work
for processing in a future session."]Discoveries are captured during pipeline work (e.g., /reduce notes a connection opportunity, /reflect notices a split candidate). They accumulate here until the user decides to convert them to tasks or discard them.
The task stack (ops/tasks.md) and pipeline queue coexist but serve different audiences:
| Aspect | Task Stack | Pipeline Queue |
|---|---|---|
| File | ops/tasks.md | ops/queue/queue.yaml (or .json) |
| Format | Markdown checklist | YAML/JSON with phase tracking |
| Managed by | User via /tasks | Pipeline skills automatically |
| Read by | /next (priority #1) | /ralph (phase routing) |
| Purpose | Human priorities | Automated processing state |
/next reads the task stack first. If the stack has items, /next recommends from the stack (user-set priorities override automated recommendations). If the stack is empty, /next evaluates queue state and vault health to suggest actions.
Skills that generate pipeline work update BOTH:
/reduce adds tasks to the queue AND notes discoveries in tasks.md/seed adds extract tasks to the queue/architect may add implementation tasks to the task stackThe task stack is a simple markdown checklist, always present from day one. Format:
# Task Stack
## Current
- [ ] First priority task
- [ ] Second priority task
- [ ] Third priority task
## Completed
- [x] Something finished (2026-02-10)
- [x] Earlier task (2026-02-08)
## Discoveries
- Interesting connection between [[note A]] and [[note B]] found during /reduce
- MOC [[topic]] might need splitting (40+ notes observed during /reflect)Current is ordered by priority. Position 1 is highest priority. /tasks reorder adjusts position.
Completed is ordered by completion date (most recent first). Provides history of what was accomplished.
Discoveries is unordered. Items accumulate during pipeline work. The user converts them to Current tasks or discards them.
Create it with empty sections on first /tasks add. For /tasks status, report: "No task stack found. Use /tasks add [description] to create one."
Skip the Pipeline Queue section entirely in the status display. Do not show an error.
Report the error with the valid range: "Task #{N} does not exist. Current tasks: 1-{max}."
Task Stack (ops/tasks.md)
=========================
Current:
(empty)
Use `/tasks add [description]` to add a task,
or `/next` for automated suggestions.Use universal vocabulary. All operations work identically.
If multiple agents modify ops/tasks.md simultaneously, last write wins. The file is small enough that conflicts are unlikely, but if detected, report: "Task stack may have been modified by another session. Please review."
When a user wants to convert a discovery to a task:
This is a manual workflow — discoveries do not auto-promote.
2acfd5c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.