用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/lev-os/agents --skill sitrep命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | sitrep |
| description | Read-only dashboard projecting lifecycle triggers into entities and next actions. Use mid-flow via /sitrep or /status. |
| triggers | ["sitrep","siterep","status"] |
| output_template | hud |
/sitrep is a PROJECTION, not a writer. It reads the lifecycle trigger stream and renders current state. Never mutates. Never archaeology.
Source of truth: .lev/pm/workstreams/*/trace/*.yaml (lifecycle_trigger.v1)
Schema ref: .lev/pm/proposals/20260415-lifecycle-trigger-envelope.yaml
Distinct from /capture (which WRITES and sweeps) — /sitrep only READS.
Default scope: the active workstream's trace/ dir.
→ .lev/pm/workstreams/<active-ws>/trace/*.yaml
→ Read only the tail (last N triggers, default 20)
→ Parse cursor + outputs.items + outputs.gates + metrics
Wider scope (on request):
→ /sitrep --all reads all workstreams
→ /sitrep --ws <id> targets one ws
Do NOT read: handoffs/ (archaeology), workstream.yaml full file (archive policy), git log (not the source of truth for state). These are fallbacks only when no trigger stream exists yet.
Render 5 sections from the parsed triggers:
Mirrors /capture's "Exec Menu" shape so every verb ends the same way:
## /sitrep — {ws-id} — {timestamp}
### Current result
- Last verb: {cursor.last_verb} at {cursor.last_at} (commit {cursor.last_commit})
- Gates: {N_passed}/{N_total} passed · drift={value} · fidelity_avg={value}
- Sealed: {true|false} (true if cursor.next_verb == null)
From outputs.items across recent triggers, grouped by state:
| Symbol | State | Source |
|---|---|---|
| ⚡ | executing | last trigger was /exec, cursor.next_verb was set |
| 📥 | capturing | last trigger was /capture |
| 🔍 | expanding | last trigger verb was expand emote |
| 🧹 | collapsing | last trigger verb was collapse emote |
| ⏸️ | blocked | cursor.blocker != null |
| ❓ | question | last trigger was question emote |
| ✅ | done this session | cursor.next_verb == null (sealed) |
Show max 5 items. Rest go to queue count.
What's in-memory vs on-disk. From the most recent /capture trigger's outputs.items (after /close absorbs /capture, this is just the latest trigger's items).
### Memory state
- In-memory: {count} items below fidelity gate (0.8)
- Captured: {count} items shipped to disk
- Blocked: {count} items awaiting decision
Fidelity comes from metrics.fidelity per trigger. If the value is missing OR the trigger has outputs.items != [] on a /close, flag as ⚠ theater — the Step 0 gate was bypassed.
### Next (from tail trigger)
1. {cursor.next_verb} {cursor.next_input}
2+. {recommend[*]} where verdict != monitor
Matches /capture's Exec Menu pattern — max 5 items, rest queued.
### Decisions Needed ({count})
1. {entity}: {blocker} — since {cursor.last_at}
When ALL items blocked: auto-suggest /interview or /expand://<entity> for the top one.
Some actions are inline-only. /sitrep supports shortcuts on entities in the rendered view:
/sitrep then: expand 2 → fire expand://<item-2-ref> (no full verb ceremony)
/sitrep then: collapse 4,5,6 → fire collapse:// on items 4,5,6 in batch
/sitrep then: admit 3 → fire admission:// on item 3
Inline emotes run a flow (flow://lifecycle/) but DON'T require /close's full ceremony. They emit a trigger each. The stream still grows. The ceremony scales with stakes.
Heuristic: inline for emote verbs (expand, collapse, admit, question). Full ceremony for lifecycle verbs (close, propose, exec, handoff).
"no trigger stream — run /close to start the stream".~/.claude/skills/_shared/graph-footer.md.Every read-only verb ends with a concrete exec menu:
### Exec Menu (N of M)
1. [item] → verb: /exec flow: ralph effort: S unblocks: #3,#7
2. [item] → verb: /propose effort: XS unblocks: #5
...
Queue: N more items (bucketed by priority)
Inline shortcuts:
expand <n> collapse <n> admit <n>
| /capture | /sitrep |
|---|---|
| Writes triggers | Reads triggers |
| Mutates state | Projects state |
| Absorbs in-memory items to disk | Surfaces what's on disk |
| Ends with Exec Menu | Ends with Exec Menu (same shape) |
| Fidelity scoring (inline) | Fidelity surfacing (from stream) |
After /close absorbs /capture, /sitrep becomes the primary read interface to lifecycle state. /capture becomes the fast-write path.
/sitrep = full dashboard (canonical)/siterep = legacy alias/status = same/sitrep --brief = exec brief + next 3 actions only (3 lines)/sitrep --all = all workstreams, not just active/sitrep --ws <id> = target one workstream/capture — mutation path (writes trigger with sweep)/close — sealing path (writes close trigger, absorbs capture)/work — router (may call /sitrep before routing).lev/pm/proposals/20260415-lifecycle-trigger-envelope.yaml.lev/pm/workstreams/*/triggers/