Orbit Workflow
Single skill for specification-driven development. Artifacts are the source of truth.
Initialization
<context-loading> Before any workflow action, load full context with a single Bash call:node plugins/spec/skills/managing-workflow/scripts/context-loader.js
This returns JSON with:
suggestion: Recommended next actioncurrent: Active feature state and artifactsfeatures.active: All features with frontmatter statefeatures.in_progress: Features needing attentionarchitecture_files: Available architecture docs
Use this context for all decisions. Avoid additional Read calls for state detection. </context-loading>
Phase Detection
Phase is stored in spec.md frontmatter status field:
| Status | Artifacts | Next Action |
|---|---|---|
initialize | None | Create spec.md |
specification | spec.md (no [CLARIFY]) | Create plan.md |
clarification | spec.md with [CLARIFY] | Resolve questions |
planning | spec.md + plan.md | Create tasks.md |
implementation | tasks.md has - [ ] | Execute tasks |
complete | All tasks - [x] | Archive or new feature |
Frontmatter Schema
spec.md Frontmatter
---
id: 001-feature-name
title: Human Readable Title
status: specification # initialize|specification|clarification|planning|implementation|complete
priority: P1 # P1|P2|P3
created: 2025-11-27
updated: 2025-11-27
progress:
tasks_total: 0
tasks_done: 0
owner: team-name
tags:
- api
- auth
---
Updating Frontmatter
On every phase transition, use the skill's built-in scripts:
# Update status and timestamp
node plugins/spec/skills/managing-workflow/scripts/update-status.js \
".spec/features/{feature}/spec.md" "planning"
# Log activity with ISO timestamp
node plugins/spec/skills/managing-workflow/scripts/log-activity.js \
".spec/features/{feature}/metrics.md" "Plan created"
Or with Edit tool - update the status line in frontmatter.
Phase Gates (MANDATORY)
You MUST validate before ANY phase transition. This is NOT optional.
# REQUIRED before every phase change
RESULT=$(node plugins/spec/skills/managing-workflow/scripts/validate-phase.js \
".spec/features/{feature}" "{target-phase}")
# Check result - DO NOT PROCEED if invalid
if [[ $(echo "$RESULT" | jq -r '.valid') != "true" ]]; then
echo "BLOCKED: $(echo "$RESULT" | jq -r '.suggestion')"
# Create the missing artifact before continuing
fi
Phase Prerequisites
| Target Phase | Required Artifacts | If Missing |
|---|---|---|
| specification | None | - |
| clarification | spec.md | Create spec first |
| planning | spec.md (no [CLARIFY]) | Resolve clarifications |
| implementation | spec.md, plan.md, tasks.md | Create missing artifacts |
| complete | All tasks [x] | Complete remaining tasks |
Enforcement Rules
- NEVER skip directly to implementation - plan.md and tasks.md MUST exist
- NEVER mark complete with unchecked tasks - all
[ ]must be[x] - If validation fails: Create the missing artifact, don't proceed
- For simple features: Use quick-plan template (see plugins/spec/skills/managing-workflow/templates/quick-plan.md)
Quick Planning Option
For simple features (bug fixes, < 3 files), use streamlined templates:
plugins/spec/skills/managing-workflow/templates/quick-plan.md- Combined plan with inline tasksplugins/spec/skills/managing-workflow/templates/quick-tasks.md- Minimal task list
This ensures artifacts exist while reducing overhead for small changes.
Workflow Actions
Initialize New Feature
- Ask user for feature name and description
- Generate feature ID:
{NNN}-{kebab-name} - Create directory and files in parallel:
mkdir -p .spec/features/{id}
Create these files simultaneously:
spec.mdwith frontmattermetrics.mdwith tracking template
- Set session:
set_feature "{id}"
spec.md Template
---
id: {id}
title: {title}
status: specification
priority: P2
created: {date}
updated: {date}
progress:
tasks_total: 0
tasks_done: 0
---
# Feature: {title}
## Overview
{description}
## User Stories
### US1: {story title}
As a {role}, I want {goal} so that {benefit}.
**Acceptance Criteria:**
- [ ] AC1.1: {criterion}
- [ ] AC1.2: {criterion}
## Technical Constraints
- {constraint}
## Out of Scope
- {exclusion}
metrics.md Template
# Metrics: {title}
## Progress
| Phase | Status | Updated |
|-------|--------|---------|
| Specification | pending | |
| Clarification | pending | |
| Planning | pending | |
| Implementation | 0/0 | |
## Activity
| Timestamp | Event |
|-----------|-------|
Note: All timestamps use ISO 8601 format: 2025-11-27T10:30:00Z
Define Specification
- Load context to check for related archived features
- If related found, ask: "Found similar feature '{name}'. Reference it?"
- Ask user for feature requirements (use AskUserQuestion for scope/priority)
- Generate user stories with acceptance criteria
- Mark unclear items with
[CLARIFY] - Ask user to review
spec.md - If approved:
- Update frontmatter:
status: specification(orclarificationif tags exist) - Update metrics.md
- Update frontmatter:
Clarify
- Find all
[CLARIFY]tags in spec.md - Batch into groups of max 4 questions
- Use AskUserQuestion to resolve each batch
- Update spec.md with answers, remove
[CLARIFY]tags - Ask user to review changes
- When all resolved and approved, update frontmatter:
status: specification
Create Plan
- Validate spec completeness (no [CLARIFY] tags)
- Read spec.md
- Generate technical plan with:
- Architecture decisions
- Components and their purposes
- Data models
- API design (if applicable)
- Integration points
- Write plan.md
- Ask user to review
plan.md - If approved:
- Update frontmatter:
status: planning - Update metrics.md
- Update frontmatter:
plan.md Template
# Technical Plan: {title}
## Architecture
{architecture decisions and rationale}
## Components
| Component | Purpose | Dependencies |
|-----------|---------|--------------|
| {name} | {purpose} | {deps} |
## Data Models
{model definitions}
## API Design
{endpoints if applicable}
## Implementation Phases
1. **Phase 1**: {description}
2. **Phase 2**: {description}
## Risks
| Risk | Impact | Mitigation |
|------|--------|------------|
| {risk} | {impact} | {mitigation} |
Create Tasks
- Read spec.md + plan.md
- Break into tasks with parallel groups and dependencies:
## Parallel Group A
- [ ] T001: {task} [P1]
- [ ] T002: {task} [P1]
## Parallel Group B [depends:A]
- [ ] T003: {task} [P1] [depends:T001,T002]
- Tag critical changes:
[critical:schema],[critical:api],[critical:types] - Write tasks.md
- Ask user to review
tasks.md - If approved:
- Update frontmatter:
status: implementation - Update progress in frontmatter:
tasks_total: {count} - Update metrics.md
- Update frontmatter:
tasks.md Template
# Tasks: {title}
## Parallel Group A
- [ ] T001: {description} [P1]
- [ ] T002: {description} [P1]
## Parallel Group B [depends:A]
- [ ] T003: {description} [P1] [depends:T001,T002]
- [ ] T004: {description} [P2] [depends:T001]
## Sequential
- [ ] T005: {description} [P1] [critical:api] [depends:T003,T004]
---
## Legend
- `[P1/P2/P3]` - Priority level
- `[depends:X,Y]` - Task dependencies
- `[critical:type]` - Requires extra review (schema, api, types, auth)
- `[estimate:S/M/L]` - Size estimate
Implement
GATE CHECK REQUIRED - Before implementing, MUST validate:
# MANDATORY: Run this before any implementation
RESULT=$(node plugins/spec/skills/managing-workflow/scripts/validate-phase.js \
".spec/features/{feature}" "implementation")
# If not valid, STOP and create missing artifacts
if [[ $(echo "$RESULT" | jq -r '.valid') != "tr