Back to skills

Status Progression

Navigate status workflows with user's config. Use when asked "What's next?", "Can I move to X?", or "Why did this fail?". Delegates to get_next_status tool, interprets StatusValidator errors, explains forward/backward/emergency patterns. Lightweight coordinator - validates nothing, explains everything.

128 stars
0 votes
0 copies
0 views
Added 12/19/2025
developmentjavascriptjavatestingapibackenddocumentation

Works with

terminalapimcp

Install via CLI

$openskills install jpicklyk/task-orchestrator
Download Zip
Files
SKILL.md
---
skill: status-progression
description: Navigate status workflows with user's config. Use when asked "What's next?", "Can I move to X?", or "Why did this fail?". Delegates to get_next_status tool, interprets StatusValidator errors, explains forward/backward/emergency patterns. Lightweight coordinator - validates nothing, explains everything.
---

# Status Progression Skill

**Role:** Workflow interpreter and guide. Helps users navigate their custom status workflows by delegating to tools and explaining results.

**Complementary Architecture:**
- **get_next_status tool** - Reads config, analyzes state, recommends next status (read-only)
- **StatusValidator** - Validates transitions at write-time, enforces rules, checks prerequisites (write-time)
- **This Skill** - Interprets recommendations and errors, explains user's config rules (guidance)

## When to Use This Skill

**Activate for:**
- "What status comes next?"
- "Can I move to testing/completed/etc?"
- "Why did my status change fail?"
- "Am I ready to complete this?"
- "What's my workflow?"
- "How do backward transitions work?"

## Core Responsibilities

1. **Delegate to get_next_status** - Let the tool analyze state and recommend next status
2. **Read user's config** - Load `status_validation` rules to explain what's possible
3. **Interpret errors** - Explain StatusValidator error messages in context of user's config
4. **Guide transitions** - Explain forward, backward, and emergency movements

## Tools Available

- `Read` - Load `.taskorchestrator/config.yaml` (status_validation section only)
- `get_next_status` - Intelligent status recommendations (delegates to MCP tool)
- `query_workflow_state` - Complete workflow state with cascade events (**NEW**)
- `query_container` - Check entity state (status, tags) when interpreting errors

**Critical:** This skill does NOT validate transitions. StatusValidator handles that automatically at write-time. This skill interprets results and explains user's workflow rules.

## Workflow Patterns: Forward, Backward, and Emergency

### Pattern 1: Forward Progression (Happy Path)

**When:** Moving through normal workflow sequence

**Example:**
```javascript
// User asks: "What's next?"
recommendation = get_next_status(containerId="task-uuid", containerType="task")

// Guide user:
"You're at: in-progress
Next step: testing

Your bug_fix_flow: pending → in-progress → testing → completed
StatusValidator will verify prerequisites when you transition."
```

**Why forward?** Normal progression toward completion.

### Pattern 2: Backward Movement (Rework/Iteration)

**When:** Need to fix issues, iterate on work, or respond to changes

**Example:**
```javascript
// User asks: "Can I move back to in-progress from in-review?"
config = Read(".taskorchestrator/config.yaml")

if (config.status_validation.allow_backward == true) {
  "✅ Yes! Your config allows backward movement.

  in-review → in-progress (backward to implement changes)

  Why: Code review requested changes, found a bug, requirements changed
  Then re-submit: in-progress → in-review"
}
```

**Why backward?** Iterative development - fix issues and retry without restarting from scratch.

**For detailed review iteration patterns:**
Read `./config-reference.md`

### Pattern 3: Emergency Transitions (Blockers/Cancellations)

**When:** Unexpected blockers, priority changes, or cancellations

**Example:**
```javascript
// User asks: "Task is blocked by external API, what do I do?"
config = Read(".taskorchestrator/config.yaml")

emergencyStatuses = config.status_progression.tasks.emergency_transitions
// Returns: [blocked, on-hold, cancelled, deferred]

"✅ Use emergency transition to: blocked
in-progress → blocked (emergency - can happen from any state)

Why emergency transitions exist:
- blocked: External dependency or technical issue
- on-hold: Priority shift, paused temporarily
- cancelled: Task no longer needed
- deferred: Postponed indefinitely"
```

**Why emergency?** Real-world interruptions don't follow linear workflows.

## Quick Action Patterns

### Action 1: What's Next?

**User:** "What status comes next?"

**Workflow:**
```javascript
// Delegate to tool
recommendation = get_next_status(containerId="task-uuid", containerType="task")
```

**Response:**
```
Next: testing

Your position: in-progress [YOU ARE HERE]
Flow: pending → in-progress → testing → completed
Using: bug_fix_flow (matched your tags: [bug, backend])

To transition:
manage_container(operation="setStatus", containerType="task", id="...", status="testing")
```

### Action 2: Try Transition (Let StatusValidator Check)

**User:** "Can I mark this complete?"

**Workflow:**
```javascript
// Don't manually validate - delegate to get_next_status
recommendation = get_next_status(containerId="task-uuid", containerType="task")

// Guide user to try it
"get_next_status recommends: completed

Try it! StatusValidator will check prerequisites automatically:
manage_container(operation=\"setStatus\", containerType=\"task\", id=\"...\", status=\"completed\")

If prerequisites aren't met, StatusValidator will explain what's missing.
I'll help interpret any errors."
```

**Key:** Let StatusValidator do validation. This skill interprets results.

### Action 3: Interpret StatusValidator Error

**User gets error:** "Cannot skip statuses. Must transition through: in-progress"

**Workflow:**
```javascript
// Read user's config to explain the rule
config = Read(".taskorchestrator/config.yaml")

"StatusValidator blocked this because YOUR config has:
  enforce_sequential: true

You tried: pending → testing (skipped in-progress)

Your options:
1. Follow sequential flow: pending → in-progress → testing
2. Change your config: Set enforce_sequential: false in config.yaml

Recommended next step:
manage_container(operation=\"setStatus\", containerType=\"task\", id=\"...\", status=\"in-progress\")"
```

**For detailed error interpretation patterns:**
Read `./validation-errors.md`

### Action 4: Check Complete Workflow State (NEW)

**User asks:** "Show me everything about this task's workflow"

**Workflow:**
```javascript
// Get comprehensive workflow state
workflowState = query_workflow_state(
  containerType="task",
  id="task-uuid"
)

// Explain complete state
"📊 Workflow State:

Current: ${workflowState.currentStatus}
Active Flow: ${workflowState.activeFlow}

✅ Allowed Next Steps:
${workflowState.allowedTransitions.map(s => `  → ${s}`).join('\n')}

⚠️ Cascade Events Detected:
${workflowState.detectedEvents.map(e => `  • ${e.event}: ${e.reason}`).join('\n')}

📋 Prerequisites for Each Transition:
${Object.entries(workflowState.prerequisites).map(([status, prereq]) =>
  `  ${status}: ${prereq.met ? '✅' : '❌'} ${prereq.blockingReasons.join(', ')}`
).join('\n')}"
```

**Benefits:**
- Single call gets complete workflow context
- Shows all allowed transitions from config
- Detects cascade events automatically
- Validates prerequisites for each option
- Works with user's custom workflows

### Action 5: Phase 3 Handoff (Tasks Ready to Execute)

**Scenario:** Feature has tasks created and ready to execute, but feature status is still "planning" or "draft"

**User asks:** "Progress feature to in-development before executing tasks"

**Workflow:**
```javascript
// Check feature status
feature = query_container(operation="get", containerType="feature", id=featureId)

if (feature.status == "planning" || feature.status == "draft") {
  // Get recommendation
  recommendation = get_next_status(containerId=featureId, containerType="feature")

  // Explain the cascade event and use recommendation
  "✅ Feature ready to progress from: ${feature.status}
  Recommended next status: ${recommendation.recommendedStatus}
  Active flow: ${recommendation.activeFlow}

  Cascade Event: tasks_ready_to_execute
  Trigger: Tasks created and ready for specialist execution

  Why this matters:
  - Feature status must reflect current development phase
  - Config determines execution phase status name (not hardcoded)
  - Your workflow uses: ${recommendation.activeFlow}

  To progress:
  manage_container(operation=\"setStatus\", containerType=\"feature\", id=\"${featureId}\", status=\"${recommendation.recommendedStatus}\")

  Then delegate to Task Orchestration Skill for parallel execution."
}
```

**When this applies:**
- After Phase 2 (task breakdown) completes
- Before Phase 3 (task execution) begins
- When resuming paused feature work with pending tasks

**Why critical:**
- Prevents feature from jumping directly to completion (skips execution phase)
- Enables proper cascade event detection (tasks_ready_to_execute)
- Ensures workflow state reflects reality (config-driven status progression)
- Required for StatusValidator prerequisite checks
- Respects user's custom workflow (not hardcoded to specific status names)

## Understanding User-Defined Flows

**Critical:** Flows are defined by the USER in their config.yaml. Don't assume any specific flows exist.

**Check user's actual flows:**
```javascript
config = Read(".taskorchestrator/config.yaml")
taskFlows = Object.keys(config.status_progression.tasks).filter(key => key.endsWith('_flow'))
// Tell user: "Your config has these task flows: [list]"
```

**Default config has** (IF user hasn't customized):
- Tasks: `default_flow`, `bug_fix_flow`, `documentation_flow`, `hotfix_flow`, `with_review`
- Features: `default_flow`, `rapid_prototype_flow`, `with_review_flow`
- Projects: `default_flow`

**For custom flow examples (research, compliance, experiments, etc.):**
Read `./examples.md`

**For tag-based flow selection details:**
Read `./examples.md`

## What to Read from Config

**Read selectively** - only load sections needed to explain user's rules:

```javascript
config = Read(".taskorchestrator/config.yaml")

// Section 1: Validation rules (always useful)
validationRules = config.status_validation
// - enforce_sequential: Can skip statuses?
// - allow_backward: Can move backwards?
// - allow_emergency: Can jump to blocked/cancelled?
// - validate_prerequisites: Does StatusValidator check requirements?

// Section 2: Entity-specific flows (when explaining workflows)
taskFlows = config.status_progression.tasks
emergencyStatuses = config.status_progression.tasks.emergency_transitions
terminalStatuses = config.status_progression.tasks.terminal_statuses
```

**For detailed config structure reference:**
Read `./config-reference.md`

## Best Practices

1. **Always delegate to get_next_status** - Let the tool analyze state and recommend
2. **Read config selectively** - Load only status_validation and relevant flows
3. **Never duplicate validation** - StatusValidator checks prerequisites, not this skill
4. **Explain user's specific config** - Don't assume default flows exist
5. **Interpret, don't predict** - Explain errors after they happen, don't try to predict them
6. **Use progressive loading** - Load supporting files (examples.md, validation-errors.md, config-reference.md) only when needed
7. **Emphasize user control** - Flows are defined by user, not hardcoded by system

## Supporting Files

**Load on demand for specific scenarios:**

- **./examples.md** - Custom flow examples, tag-based selection patterns
  - Load when: User asks about custom flows, workflow possibilities, tag routing

- **./validation-errors.md** - Common errors, prerequisite failures, fix patterns
  - Load when: StatusValidator error occurs, user asks about validation rules

- **./config-reference.md** - Detailed config structure, backward movement, integration
  - Load when: User asks about configuration, how to customize workflows

## Key Reminders

**Your Role (Lightweight Coordination):**
- ✅ Delegate to get_next_status for all recommendations
- ✅ Read config.status_validation to explain user's rules
- ✅ Interpret StatusValidator errors with context
- ✅ Show forward/backward/emergency patterns with WHY explanations
- ✅ Reference user's ACTUAL config, not assumed defaults
- ✅ Load supporting files only when needed (progressive loading)

**What You DON'T Do:**
- ❌ Don't manually validate transitions (StatusValidator's job)
- ❌ Don't check prerequisites before transitions (StatusValidator's job)
- ❌ Don't duplicate logic from get_next_status (delegate to tool)
- ❌ Don't assume specific flows exist (user-defined, could be customized)
- ❌ Don't load all supporting files upfront (use progressive loading)

**Complementary Roles:**
- **get_next_status** reads config, analyzes tags, recommends (read-only)
- **StatusValidator** enforces rules, checks prerequisites (write-time)
- **You** interpret results, explain possibilities (guidance)

Comments (0)

No comments yet. Be the first to comment!