/work - Lifecycle Router

SkillAI & models

Use when routing tracked work through lifecycle lanes, resolving workstream context, or deciding which lifecycle skill owns the next entity transition.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /work - Lifecycle Router skill

What this skill tells your AI

The instructions your AI receives, as published by lev-os/agents in skills/work/SKILL.md and read by ahel’s review.

lev is the public semantic router; /work is its compatibility lifecycle entry point. Both use the procedure below and the same workstream state, not two routers calling each other. When route-changing uncertainty remains after lookup, ask one to three focused questions and show viable owners/results as a numbered 1–n menu with one recommendation and free-text correction. A clear authorized request proceeds directly. "Take over" is metaphorical, not a command or a permission change.

/work is the thin lifecycle spine. It does not re-implement capture, plan compilation, proposal, execution, close, or handoff protocols. It resolves workstream context, identifies the entity movement, and routes to the owning skill.

Entity Reconciliation

After authorized material progress, reconcile touched and causally affected artifacts before routing, handoff, or final response. Track entity ref, island/provider locator (a path for file storage), basis/evidence, and the reason/action due. Update through the verified owning CLI/adapter; use a write-authorized skill fallback only when that operation is unavailable. Record updated, no_change(reason), or blocked(reason), preserving unresolved refs. Reading or mentioning a path alone creates no update obligation. Read-only work reports pending changes only. Reminders grant no write authority; task status stays with the bound tracker. Update only artifacts whose content or evidence changed; do not rewrite every referenced document.

Work Link

Lifecycle lane: Router Entity movement: unknown -> routed Workstream: resolve active workstream before writes or dispatch Upstream: any lifecycle skill or user request Downstream: /ws, /capture, /prior-art, /interview, /lev-plan, /propose, /exec, /close, /handoff Router: /work HUD: end with 🧬 {ws} ⚡{exec_count} 📥{capture_count} ⏸️{paused_count} ✅{done_count} | 🚦{gate}={score} | ⏭️ {next} | 🔁{loop_state}

Inline HUD Contract

End lifecycle-skill responses with this inline HUD line:

🧬 {ws} ⚡{exec_count} 📥{capture_count} ⏸️{paused_count} ✅{done_count} | 🚦{gate}={score} | ⏭️ {next} | 🔁{loop_state}

The shared graph-footer partial is an authoring reference only until the Lev skill-builder pipeline can project FlowMind fragments into skill bodies. Do not make skills load or include that file at runtime.

Human Response Contract

Keep full ledgers, scores, traces, and gate state in durable artifacts. Default interactive output is a compact content-first projection; render the full table only for --full, explicit audit/debug requests, or when one row cannot be understood without it.

Score the default response on these ten checks. A check may be not_applicable only with a concrete reason; every applicable check must pass.

#Check
1Lead with the outcome or current state.
2Name the operator-visible result.
3Name the exact asset, code area, task, or durable entity affected.
4Name relevant code owners and rules/index refs when implementation is discussed.
5Show the real-world critical path when behavior crosses boundaries.
6Name the first executable or testable next slice.
7State what done means as an observable effect.
8State the smallest local, integration, or field proof that matters.
9Separate deterministic code, declarative policy, LLM work, and human decisions when relevant.
10End with one primary next action and any real blocker.

Default target: at most 12 non-blank lines before the optional HUD. Do not print an empty section or unrelated readiness matrix. /capture is the explicit exception: its source-fidelity table is always operator-visible because it proves that conversation intent reached disk.

Render the Markdown inside live XML templates; never print the XML wrapper tags.

Changed or saved: {durable_delta_or_none} Proof or state: {load_bearing_evidence_or_gap} Decision needed: {none_or_one_decision} Next: {one_primary_action}

Lifecycle Lanes

The software lanes and task packet rules below simulate the plugins/sdlc overlay. For non-coding work, retain workstream identity and acceptance but use the selected domain's artifacts; a sufficient plan can route directly to its domain skill or skill://exec without skill://propose.

Next-Step Mini-Router

Project only eligible next transitions as a table with #, Route, and Expected result, using skill://<name> destinations and contiguous numbering. Choose from current state, active domain, missing decision and authorization; do not invent options to fill a menu or make all skills call each other. Proceed directly for a clear authorized route. Suggestions do not grant new authority. Unknown destinations return to skill://lev; paused work routes to skill://handoff. These inline runbooks are dogfood, not runtime enforcement.

SDLC Lane Map

LaneEntity movementOwns
Shape`memory -> capturedblocked`
Plan`captureddesigned -> planned
Exec`execution_ready -> executing -> verifiedblocked
Close`verified -> closedmonitoring
Routerunknown -> routed/work, /ws

Entity Rules

  • Resolve the active workstream before writing or dispatching.
  • Every lifecycle skill has exactly one ## Work Link section.
  • Every non-trivial item is an entity with a path or canonical URI. Use lev://entity/work/workstream/<id> for workstreams and lev://entity/work/task/<id> for tasks; load lane guidance through skill://<lane>.
  • Move entities forward one lifecycle state at a time; do not skip from memory directly to execution unless sufficient captured, planned or proposed context already exists.
  • Broad work uses /lev-plan; for SDLC delivery it precedes /propose. One bounded software slice may record that a plan is not required.
  • Workstreams are durable identity. Markdown handoffs are projections, not the canonical state.
  • If a command mutates files, records, tasks, or workstream state, route through the lane owner instead of freelancing.

QA / Pentagon Gate State

This table applies only when the selected overlay/task declares these gates. Non-coding work without an SDLC packet uses its domain acceptance criteria; absence of execution.yaml alone is not a missing gate or proposal requirement.

QA, Pentagon, UltraQA, and ai-slop-cleaner are lifecycle gate overlays, not separate lanes. /work routes by missing gate state; lane skills own the details.

Gate stateMeaningRoute
needs_proof_designHighest-risk claim, fail-closed acceptance, or owner-local test placement is unclear/interview, /lev-plan, or /propose according to scope
needs_proof_gatesA non-trivial task lacks execution.yaml.proof_gates/propose
needs_runtime_qaDeclared baseline, Pentagon, UltraQA, or harness runtime checks still need execution/exec
needs_quality_reviewCleanup, refactor, fallback, boundary, or AI-slop risk needs ai-slop-cleaner review/exec
needs_close_verdictWork is implemented but proof-gate verdicts or residual risks are not sealed/close
proof_blockedA proof gate fails or cannot run safely/propose for contract repair or /capture for follow-up

Router

steps:
  - id: resolve_workstream
    action: Identify the active workstream or route to /ws.
    validation: "A workstream id is known, or /ws is the next skill."
    on_failure: "Do not write. Route to /ws find|resume or create a workstream."

  - id: classify_entity
    action: Name the entity, active domain, current state, target state and any applicable missing gate.
    validation: "Entity has path/id/uri plus current_state and target_state; proof_gate_state is required only for declared gate overlays."
    on_failure: "Route to /capture if it is only in conversation memory."

  - id: route_lane
    action: Select the domain-appropriate lifecycle owner; use SDLC lanes only for the software overlay.
    validation: "Exactly one next skill is chosen from the lane table."
    on_failure: "Ask one routing question or route to /prior-art for evidence."

  - id: enforce_work_link
    action: Ensure the next skill declares lane, movement, upstream, downstream, and HUD.
    validation: "The selected skill has a Work Link or this session is updating it."
    on_failure: "Use skill-builder semantics to patch the skill before relying on it."

  - id: emit_hud
    action: Report current workstream, gate, next entity, and loop state.
    validation: "Response ends with the inline HUD line."
    on_failure: "Add the HUD before ending."

Route Table

SituationRoute
User dumps ideas or a thread has unfiled content/capture or /dump as capture --deep
Need evidence, provenance, lineage, or duplicate detection/prior-art
Broad/multi-slice idea or design is aligned but lacks a runbook/DAG/lev-plan
Existing plan is shallow, stale, or needs source-fidelity review`/lev-plan deepen
SDLC plan is faithful and needs a slice map or one execution packetskill://propose
One bounded software intent is aligned and plan-not-requiredskill://propose
Non-coding plan is sufficient for authorized executionDomain skill or skill://exec; no mandatory SDLC packet
Task has dna.yaml and execution.yaml with a verifier/exec
Task needs proof design, proof gates, runtime QA, or quality reviewroute by proof_gate_state
Work is verified and needs sealing, learning, commit, or next recommendation/close
Session is ending, compacting, or needs a resume prompt/handoff
Workstream identity is missing, stale, split, or tangled/ws

Work Link Template

Each lifecycle skill carries one block in this shape:

## <Work Link>

Lifecycle lane: {Shape|Plan|Exec|Close|Router}
Entity movement: `{from_state} -> {to_state}`
Workstream: resolve active workstream before writes or dispatch
Upstream: `{skill_or_none}`
Downstream: `{skill_or_none}`
Router: `/work`
HUD: end with `🧬 {ws} ⚡{exec_count} 📥{capture_count} ⏸️{paused_count} ✅{done_count} | 🚦{gate}={score} | ⏭️ {next} | 🔁{loop_state}`

Templates

Templates are authoring references. Copy or render them through the owning lane; do not make another skill depend on reading them at runtime.

TemplateDestinationOwner
templates/report.md.lev/pm/reports//prior-art, /capture
templates/plan.md.lev/pm/plans//lev-plan
templates/design.md.lev/pm/designs//interview, /propose
templates/proposal.md.lev/pm/proposals//propose
templates/spec.md.lev/pm/specs//propose
templates/decision.md.lev/pm/decisions//close
templates/validation-report.md.lev/pm/validation-reports//exec, /close

Canonical Artifact Paths and Naming

Use .lev/pm/reports/, .lev/pm/proposals/, .lev/pm/designs/, .lev/pm/specs/, .lev/pm/plans/, .lev/pm/handoffs/, .lev/pm/decisions/, .lev/pm/validation-reports/, and .lev/scratch/ according to the owning lane above.

Session handoff naming contract: {YYYYMMDD}-{workstream}-{component}-{slug}-session-{N}.

Red Flags

  • "I'll just do this without a workstream."
  • "This is small enough to skip entity tracking."
  • "The next skill will figure out the lifecycle state."
  • "Capture can jump to propose; the slice map will preserve the broader roadmap."
  • "I can execute even though this only exists in chat."
  • "I'll add the HUD/footer later."
  • "The shared partial says it, so this skill does not need to."

Rationalization Table

ExcuseReality
"Work owns everything."Work routes; lane skills own detailed protocols.
"A handoff markdown is enough."Workstream YAML is durable identity; markdown is projection.
"The user asked to execute."Execution still needs an execution-ready entity and verifier.
"Footer file will be loaded."HUD is inline until FlowMind skill projection exists.
"I know the workstream."Name it in the HUD or route to /ws.

Signals

GitHub stars
22
Forks
2
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
work-lev-os
Source
github.com/lev-os/agents