triage

User-facing companion to notifications. Agents running non-interactively can’t ask questions, so they append to the feed. Skills that surface something noteworthy — even interactively — also drop FYIs there. triage is how that feed gets drained — interactively, one item at a time.

When to use

  • User runs /triage.
  • User asks “what needs my input”, “what’s pending”, “show me notifications”, “what’s new”, or “what should I look at”.
  • User opens notifications and wants to work through it.

Inputs

  • notifications — the feed. Two formats:
    • Action item: - [ ] YYYY-MM-DD — <action>: <message> → [[link]]
    • FYI item: - YYYY-MM-DD — <fyi>: <message> → [[link]]

Workflow

1. Read feed

Read notifications. If the ## Items section has no items, say so and exit — nothing to do.

2. Per item — walk, resolve, remove

For each item (oldest first), one at a time:

  1. Show context. Read the linked source. If it’s a weekly reconcile report, parse its sections (Integration, Consolidation candidates, Promotion candidates, Moves/renames, Synthesis, Questions) and walk the user through each proposal individually — don’t dump the whole report.

  2. Branch on item type:

    • Action item (- [ ]): Present the action plainly and offer: approve / modify / skip / defer.
    • FYI item (-): Show the message + linked context concisely. Offer: dismiss / convert-to-action / defer. No action needed unless the user wants to take one.
  3. Act on the decision. For action items, delegate to the appropriate skill:

    • Promotion candidate approved → invoke crystallize on the target page.
    • Merge candidate approved → invoke consolidate on the pair.
    • Missing cross-ref — add the wikilink directly.
    • Synthesis / concept-page proposal — offer to create the page now with proper frontmatter, or defer.
    • Rename impact (broken inbound wikilinks) — rewrite the broken refs directly.
    • Answered-question item — offer to prune the entry from questions.md.
    • Custom action (skill-specific) — execute as described in the item.
  4. Remove the item. Once handled (action: approved-and-executed / modified-and-executed / explicitly skipped this session; FYI: dismissed), delete that line from notifications.md. A deferred item stays in the feed for next session.

  5. Append to log (log):

    ## [YYYY-MM-DD] triage | <short label>
    - Source: <link>
    - Actions: <one bullet per action taken, or "FYI dismissed" for FYIs>

3. Finish

When the feed is empty (or user stops), summarize what was processed this session — count + one-line per item. Do not generate new feed items during triage; that’s for other skills.

Rules

  • One item at a time. Don’t batch decisions. The whole point is unhurried interactive review.
  • Distinguish action from FYI. Don’t pressure the user to “do” something on an FYI — show it, let them dismiss.
  • Delegate, don’t reimplement. If an action maps to an existing skill (crystallize, consolidate, process-inbox), invoke it — their propose-first discipline still applies inside triage.
  • Delete on resolution, not on non-action. “Skip” / “dismiss” removes the item from this session’s pass; the next scheduled run may re-add an action item if the underlying condition persists. “Defer” keeps the item for later.
  • Never add items here. triage drains the feed; other skills fill it.
  • Source gone? Drop the item. If the linked source file no longer exists, inform the user and remove the item — no action possible.

Verification

  • notifications has fewer (or zero) items than before.
  • log has one entry per actioned/dismissed item.
  • Any invoked skills (crystallize, consolidate) have their own log entries too.