Agent skill

Triage

by davekilleen in davekilleen/Dex

Route orphaned inbox files and pull scattered - [ ] tasks into the right project/person/goal using current priorities.

MITAuto-check passedProductivity & Automation

Install Triage

skills CLI
$ npx skills add davekilleen/Dex --skill triage -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install davekilleen/Dex triage --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/triage .claude/skills/triage && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
triage
GitHub stars
493
Token cost
~3.8k tokens
SKILL.md length
1,510 words
Files
1
Skills in repo
61
Repo updated
First seen
Licence
MIT

At a glance

Route orphaned inbox files and pull scattered - [ ] tasks into the right project/person/goal using current priorities.

  • Works in 2 steps: Load Strategic Context & Structure… → 5: Semantic Matching Enhancement (if QMD…
  • The user says clean up my inbox
  • SKILL.md covers Execution Style, What It Does, Usage and Arguments, plus 9 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Triage is an agent skill from davekilleen/Dex. Route orphaned inbox files and pull scattered - [ ] tasks into the right project/person/goal using current priorities. Use when the user says 'clean up my inbox', 'triage', 'sort out these notes'. Also use proactively when 00-Inbox/ is piling up. Not for updating notes from meetings; use process-meetings.

Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Productivity & Automation, covering Email management. The repository describes itself as: Your AI Chief of Staff — a personal operating system starter kit that adapts to your role. No coding required. The licence is MIT.

When your agent uses it

  • The user says clean up my inbox
  • Sort out these notes

Example prompts

  • “clean up my inbox”
  • “triage”
  • “sort out these notes”
  • “/triage”

Workflow steps

2 steps, taken from the step headings in SKILL.md.

  1. Load Strategic Context & Structure Discovery
  2. 5: Semantic Matching Enhancement (if QMD available)

What it can do on your machine

Read from SKILL.md and the folder at commit 227f78e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Triage loads about 3.8k tokens when it runs. Until then it costs about 80 tokens; SKILL.md has 1,510 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~80
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from davekilleen/Dex at commit 227f78e, republished under its MIT licence (© davekilleen). 1,510 words, ~3,807 tokens.

Download SKILL.mdSave it as .claude/skills/triage/SKILL.md (or your agent's skills folder).
name
triage
description
Route orphaned inbox files and pull scattered `- [ ]` tasks into the right project/person/goal using current priorities. Use when the user says 'clean up my inbox', 'triage', 'sort out these notes'. Also use proactively when `00-Inbox/` is piling up. Not for updating notes from meetings; use `process-meetings`.
model_hint
fast
<!-- Generated from `.claude/skills/triage/SKILL.md` by `scripts/generate-agents-skills.py`. Do not edit. -->

Cleanup and routing tool that finds standalone files and scattered tasks, then suggests where they belong using your current strategic context (Week Priorities + Quarterly Goals).

Execution Style

This skill handles quick decisions. Be concise. Don't over-analyze. Make a routing decision and move on. Target: <2 seconds of thinking per item.

What It Does

  • Files: Routes standalone files in 00-Inbox/ to projects, person pages, or resource folders
  • Tasks: Finds unchecked - [ ] tasks scattered across notes and routes them appropriately
  • Strategic: Uses your Week Priorities and Quarterly Goals to inform routing confidence

Usage

  • /triage - Process everything (files + tasks)
  • /triage files - Organize standalone files only
  • /triage tasks - Extract and route tasks only

Arguments

$MODE: Optional. "files" | "tasks" | "all". Default: "all"


Step 0: Load Strategic Context & Structure Discovery

Before processing inbox items, load strategic context and build an index of existing entities. This makes triage strategically aware and enables intelligent routing.

0. Load Strategic Context

Read these files to understand current priorities:

  1. Week Priorities: 02-Week_Priorities/Week_Priorities.md

    • Extract this week's Top 3 focus items
    • Note any specific projects/people mentioned
    • Capture keywords and themes
  2. Quarterly Goals: 01-Quarter_Goals/Quarter_Goals.md

    • Extract current quarter's goals
    • Note associated projects and outcomes
    • Capture keywords and themes

This context will inform routing decisions - entries matching current priorities get higher confidence scoring and are surfaced first.

1. Scan Projects

List all files in 04-Projects/:

  • Extract project name from filename (convert underscores to spaces)
  • Read frontmatter if present for description, status, pillar
  • Build index: { name, path, description, status, pillar }
2. Scan People

List all files in 05-Areas/People/External/ and 05-Areas/People/Internal/:

  • Extract name from filename
  • Read frontmatter/metadata table for role, company
  • Build index: { name, path, company, role, type: internal|external }
3. Scan Role-Specific Areas

List any additional folders under 05-Areas/ that aren't People or Career:

  • These may be role-specific areas created during setup (e.g., Accounts/, Team/, Content/)
  • Extract relevant names from filenames
  • Build index: { name, path, type: area_type }
4. Read Pillars

Parse System/pillars.yaml:

  • Extract pillar names, descriptions, and keywords
  • These inform categorization when no entity match is found

Step 0.5: Semantic Matching Enhancement (if QMD available)

This step activates automatically when QMD is installed. It dramatically improves routing accuracy by matching inbox items to goals, projects, and people by meaning, not just keywords.

Check if QMD MCP tools are available by calling the status tool (QMD MCP). If available:

After loading strategic context (Step 0), enhance matching with semantic search:

  1. For each inbox item, run:

    query(query="[item title + first 100 words of content]", limit=5)

    This finds vault content related by meaning. "Email about onboarding flow" matches "Q1 goal: improve activation rate" even though they share no keywords.

  2. For task deduplication, use semantic similarity instead of keyword overlap:

    query(query="[task description]", limit=3)

    Catches semantic duplicates: "Review Q1 metrics" detected as duplicate of "Check quarterly pipeline numbers".

  3. For goal alignment scoring, run:

    query(query="[item content]", limit=3)

    against quarterly goals and weekly priorities. Items semantically related to active goals get a +25 confidence boost.

How this changes matching:

AspectWithout QMD (keyword)With QMD (semantic)
Goal matchingExact keyword overlap onlyMeaning-based: "churn analysis" matches "retention goal"
Duplicate detection>60% string similaritySemantic similarity: different words, same intent
Person matchingName must appear in textRole/title references found: "the sales VP" → Sarah Chen
Project matchingProject name in filenameThematic connection: "pricing update" → "Acme Deal" project

Merge semantic scores with entity scores from Step 0. The combined confidence determines routing priority.

If QMD is not available: Skip silently. The standard keyword-based matching in the steps below handles routing with existing patterns.


Mode: Files

Organize standalone files in the 00-Inbox/ folder by suggesting where they belong.

Process
  1. Scan 00-Inbox/

    • List all files (exclude Week Priorities.md, README.md)
    • Read each file's content
  2. Match Against Strategic Context & Entities

    For each inbox file, check in this order:

    CheckMatch CriteriaActionConfidence Boost
    Week Priority matchContent relates to this week's Top 3 prioritiesRoute to associated project/person, flag as HIGH priority+30 points
    Quarterly Goal matchContent relates to current quarter's goalsRoute to associated project, flag as strategic+20 points
    Project matchFile mentions project name, or filename contains project referenceRoute to specific project file+10 points if also matches priority
    Person matchFile is about a specific person, contains their name prominentlyRoute to person page OR suggest linking+10 points if person mentioned in priorities
    Company matchFile mentions company name, or attendees from known domainRoute to company page in 05-Areas/Companies/Base confidence
    Pillar keyword matchContent matches pillar keywordsTag with pillar, suggest relevant categoryBase confidence
    No entity matchNone of the aboveFall back to category routingLow confidence
  3. Category Fallback Rules

    When no specific entity matches, use these rules:

    DestinationCriteria
    04-Projects/Has deadline, specific outcome, time-bound
    05-Areas/[specific area]/Belongs to a role-specific area (Accounts/, Team/, Content/)
    05-Areas/People/Person-specific information
    06-Resources/Reference material, knowledge, learnings
    07-Archives/Old/completed, no longer active
    DeleteNo value, redundant, or temporary
  4. Present Suggestions with Strategic & Entity Context

    Show what was matched, prioritizing items that align with current priorities:

    File: [filename]
    Strategic Context: [Week Priority/Q Goal if matched]
    Match: [entity type] → [specific entity name]
    Destination: [exact path]
    Confidence: [high/medium/low] ([score]/100)
    Action: [suggested action]

    Sort order:

    1. Items matching Week Priorities (highest confidence first)
    2. Items matching Quarterly Goals
    3. Items matching known entities (projects, people, companies)
    4. Generic category routing

    Flag misalignments:

    • If multiple entries relate to something NOT in priorities/goals, surface it: "You've captured 5 items about [topic]. Consider adding to priorities?"
  5. Execute with Confirmation

    • Show full plan
    • Wait for user approval
    • Move files using mv (not copy)
    • For merges, append content to existing file

Show full SKILL.md (619 more words)Show less

Mode: Tasks

Extract uncompleted tasks from notes and route them appropriately.

Process
  1. Scan Sources

    • 00-Inbox/Meetings/*.md - Meeting action items
    • 00-Inbox/*.md - Captured tasks
    • Any file with unchecked tasks - [ ]
  2. Extract Tasks

    • Find all - [ ] items
    • Note the source file for each
    • Extract any mentioned names, projects, companies
  3. Match Tasks to Entities

    For each task:

    • Check if it mentions a known project → suggest adding to that project
    • Check if it mentions a known person → suggest linking to person page
    • Check if it mentions a known company → suggest linking to company
  4. Deduplication Check

    For each task, check against 03-Tasks/Tasks.md. Flag items with >60% similarity to existing tasks. (The Work MCP create_task tool runs its own similarity gate at creation time — this pre-check is so you can show duplicates to the user before proposing a route, not a replacement for the tool's gate.)

  5. Ambiguity Detection

    Flag tasks that are:

    • Less than 3 words
    • Match vague patterns (e.g., "fix bug", "follow up", "research X")

    Generate clarification questions for ambiguous items.

  6. Present Results

    Ready to Route (clear, non-duplicate items):

    • Show suggested destination with entity context
    • Show pillar if detectable
    • Show any linked entities

    Potential Duplicates (>60% similarity):

    • Show the existing task it matches
    • Ask: Skip / Merge / Keep Both

    Needs Clarification (ambiguous):

    • Show the issue
    • Ask clarifying questions
    • Wait for user input
  7. Route with Confirmation

    • Actionable task → Work MCP create_task. Never append task checkboxes to files by hand — hand-written tasks get no task ID, so completion sync, dedup, and goal rollups can't see them. Pass what triage learned: pillar (confirmed with the user), priority, due if a date was mentioned, weekly_priority_id if it supports a weekly priority, people/account page paths for anyone involved, and project/goal when the item clearly belongs to one. If the tool flags a duplicate the user already reviewed in step 6 and chose "Keep Both", retry with on_duplicate: "force".
    • To Project: Add non-task context to the relevant project file
    • To Person: Add non-task context to the person page
    • Skip: Don't process
    • Defer: Leave for later
  8. Queue-Jump Check (one line, only when it applies)

    After routing, for each created task that landed under a goal: call get_goal_backlog(goal_id) once. If that goal's tasks carry a groomed next_up order, ask in a single line whether the new item jumps the queue — "This lands under Goal X, which has a groomed order — should it go first?" If yes, call set_task_next_up(task_id, next_up=1) (or the position they name). If the goal has no next-up order, say nothing — grooming belongs to /goal-backlog, not triage.


Mode: All (Default)

Process all orphaned items:

  1. Load strategic context (Week Priorities + Quarterly Goals)
  2. Run structure discovery (projects, people, companies)
  3. Organize standalone files in 00-Inbox/
  4. Extract and route scattered unchecked tasks from all notes

Example Output

📬 Triage Report

=== STRATEGIC CONTEXT ===
Week Priorities:
• Mobile App Launch (beta by Friday)
• Q2 Planning finalization
• Sarah's team onboarding

Quarterly Goals:
• Launch mobile app beta (Q1)
• Expand into EMEA market (Q2)
• Build product marketing team (Q1)

=== STRUCTURE DISCOVERED ===
• 4 projects found in 04-Projects/
• 12 people found in 05-Areas/People/
• 3 companies found in 05-Areas/Companies/
• 3 pillars configured

=== FILES (2) ===

1. "Screenshot 2026-01-28.png"
   Found in: 00-Inbox/
   Strategic Context: (no automatic match - image file)
   Suggested: Review manually or describe context
   
2. "Q1_Planning_Notes.md"
   Strategic Context: ✓ Week Priority "Q2 Planning" (related)
   Match: PROJECT → "Q2 Planning"
   Destination: 04-Projects/Q2_Planning.md
   Confidence: MEDIUM (70/100)
   Action: Merge into Q2 Planning project?

=== TASKS (4) ===

🎯 HIGH PRIORITY - MATCHES WEEK PRIORITIES (1):

1. "- [ ] Finalize mobile app pricing model"
   Found in: 04-Projects/Mobile_App_Launch.md
   Strategic Context: ✓ Week Priority "Mobile App Launch" + Q1 Goal
   Match: Already in correct project
   Confidence: HIGH (95/100)
   Action: Extract to Week Priorities for visibility?

📋 NEEDS ROUTING (2):

2. "- [ ] Follow up with Sarah about timeline concerns"
   Found in: random meeting note
   Strategic Context: ✓ Week Priority "Sarah's team onboarding"
   Match: PERSON → "Sarah Chen"
   Destination: Add to Sarah's person page action items
   Confidence: HIGH (85/100)

3. "- [ ] Review competitor pricing"
   Found in: scattered note
   Strategic Context: (no direct priority match)
   Match: PILLAR → "Product Strategy"
   Destination: Week Priorities or Tasks.md?
   Confidence: MEDIUM (60/100)

⚠️ DUPLICATE (1):

4. "- [ ] Reach out to Sarah"
   Found in: old meeting note
   78% match with existing task in Week Priorities
   Action: Skip / Merge / Keep both?

=== TASKS (5 items) ===

✅ READY TO ROUTE (3):
1. "Follow up with Sarah about Q1 budget"
   → Week Priorities
   Links: People/External/Sarah_Chen.md

2. "Prep slides for conference"
   → Week Priorities
   Pillar: Thought Leadership

3. "Review competitor analysis for Acme deal"
   → 04-Projects/Acme_Deal.md (project match)
   Links: 05-Areas/Companies/Acme_Corp.md

⚠️ POTENTIAL DUPLICATE (1):
4. "Contact Tom about implementation"
   → 78% match with "Reach out to Tom" in Week Priorities
   [s]kip / [m]erge / [k]eep both?

❓ NEEDS CLARIFICATION (1):
5. "Fix the bug"
   - Too vague. Which bug? What system?

---
Proceed with ready items? [y/n]

How Structure Discovery Evolves

Because discovery happens at runtime:

  • New projects are automatically recognized in the next triage
  • New people pages become available for matching
  • New companies get detected
  • Custom folders you add are included as destinations

No configuration needed - triage adapts as your structure grows.


Notes

  • Never auto-route without confirmation
  • Duplicates require explicit decision
  • Ambiguous items block until clarified
  • Use mv not cp when moving files
  • Entity matches show confidence level (high/medium/low)
  • Multiple entity matches are shown for user to choose

Track Usage (Silent)

Call the mark_feature_used tool on the dex-analytics MCP server with triage. This ticks the feature's box in System/usage_log.md, which is what /dex-level-up reads to recommend features that have not been tried. It writes locally and sends nothing, so it runs whether or not analytics is enabled.

Analytics (Silent):

Call track_event with event_name triage_completed and properties:

  • items_processed
  • tasks_extracted
  • files_routed

This only fires if the user has opted into analytics. No action needed if it returns "analytics_disabled".

© davekilleen, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/triage of davekilleen/Dex.

Open the folder on GitHubat commit 227f78e

Compare with similar skills

Triage next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Triage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Triage this skilldavekilleen/Dex493—~3.8kAutomated safety check: PassMIT
Garden Inboxpaperclipai/paperclip99k—~1.1kAutomated safety check: PassMIT
Continuetelegramdesktop/tdesktop33k2 repos~9.4kAutomated safety check: PassGPL-3.0
Process InboxTDesktop-x64/tdesktop3k1 repos~4.3kAutomated safety check: PassGPL-3.0
Process Inboxtelegramdesktop/tdesktop33k—~5.4kAutomated safety check: PassGPL-3.0
Career-Ops Gmail Lead Plugincareer-ops-hq/career-ops74k—~233Automated safety check: NotesMIT

Similar skills

  • Garden Inbox

    paperclipai/paperclip

    Scan a Paperclip user's Mine inbox, classify reversible archive candidates, request checkbox confirmation, and archive only accepted selections.

    99k GitHub stars~1.1k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Continue

    telegramdesktop/tdesktop

    Continue autonomous Telegram Desktop development from the shared ai-tdesktop repository.

    33k GitHub starsUsed in 2 repos~9.4k tokens
    Productivity & AutomationAuto-check passed
  • Process Inbox

    TDesktop-x64/tdesktop

    Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.

    3k GitHub starsUsed in 1 repo~4.3k tokens
    Productivity & AutomationAuto-check passed
  • Process Inbox

    telegramdesktop/tdesktop

    Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.

    33k GitHub stars~5.4k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Career-Ops Gmail Lead Plugin

    career-ops-hq/career-ops

    Pulls job leads from a Gmail label into the career-ops pipeline, extracting job URLs from DMARC-passing emails and de-duplicating against existing leads.

    74k GitHub stars~233 tokensUpdated today
    Productivity & AutomationAuto-check: notes
  • Atomicmail

    Atomic-Mail/atomic-mail-agentic

    Read and write email through the Atomic Mail from an AI agent.

    266 GitHub starsUsed in 1 repo~2k tokens
    Productivity & AutomationAuto-check passed

More from davekilleen/Dex

All 61 skills in this repo
  • Dspy Ruby

    davekilleen/Dex

    This skill should be used when working with DSPy.rb, a Ruby framework for building type-safe, composable LLM applications.

    493 GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check passed
  • Diff Adopt Profile

    davekilleen/Dex

    Adopt a full published Heydex profile by handle ('set me up like @davekilleen').

    493 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Diff Generate

    davekilleen/Dex

    Package one workflow — how you use Dex for a specific job — into a shareable DexDiff methodology doc.

    493 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Creating Agent Skills

    davekilleen/Dex

    Expert guidance for creating, writing, and refining Claude Code Skills.

    493 GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • Feedback

    davekilleen/Dex

    Report a Dex bug to the Dex team with zero homework — Dex investigates locally, builds a privacy-safe report, shows it to you (or auto-sends if you've chosen that), and tracks the ticket until it's…

    493 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Dhh Rails Style

    davekilleen/Dex

    This skill should be used when writing Ruby and Rails code in DHH's distinctive 37signals style.

    493 GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed

Questions about Triage

What does Triage do?

Route orphaned inbox files and pull scattered - [ ] tasks into the right project/person/goal using current priorities. Triage is an agent skill from davekilleen/Dex. Route orphaned inbox files and pull scattered - [ ] tasks into the right project/person/goal using current priorities.

When should I use Triage?

Triage fits situations like: the user says clean up my inbox; sort out these notes.

How do I install Triage in Claude Code?

Run `npx skills add davekilleen/Dex --skill triage -a claude-code`. Or copy the skill folder (.agents/skills/triage in davekilleen/Dex) into .claude/skills/triage in your project. Claude Code loads it when a task matches its description.

How do I install Triage in Codex?

Run `npx skills add davekilleen/Dex --skill triage -a codex`. Or copy the skill folder (.agents/skills/triage in davekilleen/Dex) into .agents/skills/triage in your project. Codex loads it when a task matches its description.

Can I use Triage in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add davekilleen/Dex --skill triage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/triage, .gemini/skills/triage, .github/skills/triage and .opencode/skills/triage in your project.

What does Triage need to run?

SKILL.md names no scripts, command-line tools or credentials: Triage is instructions for the agent only.

Does Triage access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Triage safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Triage use?

Triage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Triage use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Triage?

Skills that share tags, products or a category with Triage: Garden Inbox (paperclipai/paperclip, 99k stars), Continue (telegramdesktop/tdesktop, 33k stars), Process Inbox (TDesktop-x64/tdesktop, 3k stars) and Process Inbox (telegramdesktop/tdesktop, 33k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Triage?

davekilleen (a GitHub user) maintains it in davekilleen/Dex, which has 493 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on October 8, 2026.

Source: davekilleen/Dex on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.