Garden Inbox
paperclipai/paperclip
Scan a Paperclip user's Mine inbox, classify reversible archive candidates, request checkbox confirmation, and archive only accepted selections.
Route orphaned inbox files and pull scattered - [ ] tasks into the right project/person/goal using current priorities.
$ npx skills add davekilleen/Dex --skill triage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install davekilleen/Dex triage --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "triage" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/triage into .claude/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/davekilleen/Dex/tree/main/.agents/skills/triageType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add davekilleen/Dex --skill triage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install davekilleen/Dex triage --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/triage .agents/skills/triage && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "triage" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/triage into .agents/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add davekilleen/Dex --skill triage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install davekilleen/Dex triage --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/triage .cursor/skills/triage && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "triage" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/triage into .cursor/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/davekilleen/Dex.git --path .agents/skills/triage--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add davekilleen/Dex --skill triage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install davekilleen/Dex triage --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/triage .gemini/skills/triage && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "triage" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/triage into .gemini/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install davekilleen/Dex triageInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add davekilleen/Dex --skill triage -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/triage .github/skills/triage && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "triage" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/triage into .github/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add davekilleen/Dex --skill triage -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install davekilleen/Dex triage --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/triage .opencode/skills/triage && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "triage" agent skill from https://github.com/davekilleen/Dex/tree/main/.agents/skills/triage into .opencode/skills/triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
triageRoute 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. 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.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 227f78e. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from davekilleen/Dex at commit 227f78e, republished under its MIT licence (© davekilleen). 1,510 words, ~3,807 tokens.
.claude/skills/triage/SKILL.md (or your agent's skills folder).<!-- 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).
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.
00-Inbox/ to projects, person pages, or resource folders- [ ] tasks scattered across notes and routes them appropriately/triage - Process everything (files + tasks)/triage files - Organize standalone files only/triage tasks - Extract and route tasks only$MODE: Optional. "files" | "tasks" | "all". Default: "all"
Before processing inbox items, load strategic context and build an index of existing entities. This makes triage strategically aware and enables intelligent routing.
Read these files to understand current priorities:
Week Priorities: 02-Week_Priorities/Week_Priorities.md
Quarterly Goals: 01-Quarter_Goals/Quarter_Goals.md
This context will inform routing decisions - entries matching current priorities get higher confidence scoring and are surfaced first.
List all files in 04-Projects/:
{ name, path, description, status, pillar }List all files in 05-Areas/People/External/ and 05-Areas/People/Internal/:
{ name, path, company, role, type: internal|external }List any additional folders under 05-Areas/ that aren't People or Career:
{ name, path, type: area_type }Parse System/pillars.yaml:
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:
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.
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".
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:
| Aspect | Without QMD (keyword) | With QMD (semantic) |
|---|---|---|
| Goal matching | Exact keyword overlap only | Meaning-based: "churn analysis" matches "retention goal" |
| Duplicate detection | >60% string similarity | Semantic similarity: different words, same intent |
| Person matching | Name must appear in text | Role/title references found: "the sales VP" → Sarah Chen |
| Project matching | Project name in filename | Thematic 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.
Organize standalone files in the 00-Inbox/ folder by suggesting where they belong.
Scan 00-Inbox/
Match Against Strategic Context & Entities
For each inbox file, check in this order:
| Check | Match Criteria | Action | Confidence Boost |
|---|---|---|---|
| Week Priority match | Content relates to this week's Top 3 priorities | Route to associated project/person, flag as HIGH priority | +30 points |
| Quarterly Goal match | Content relates to current quarter's goals | Route to associated project, flag as strategic | +20 points |
| Project match | File mentions project name, or filename contains project reference | Route to specific project file | +10 points if also matches priority |
| Person match | File is about a specific person, contains their name prominently | Route to person page OR suggest linking | +10 points if person mentioned in priorities |
| Company match | File mentions company name, or attendees from known domain | Route to company page in 05-Areas/Companies/ | Base confidence |
| Pillar keyword match | Content matches pillar keywords | Tag with pillar, suggest relevant category | Base confidence |
| No entity match | None of the above | Fall back to category routing | Low confidence |
Category Fallback Rules
When no specific entity matches, use these rules:
| Destination | Criteria |
|---|---|
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 |
| Delete | No value, redundant, or temporary |
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:
Flag misalignments:
Execute with Confirmation
mv (not copy)Extract uncompleted tasks from notes and route them appropriately.
Scan Sources
00-Inbox/Meetings/*.md - Meeting action items00-Inbox/*.md - Captured tasks- [ ]Extract Tasks
- [ ] itemsMatch Tasks to Entities
For each task:
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.)
Ambiguity Detection
Flag tasks that are:
Generate clarification questions for ambiguous items.
Present Results
Ready to Route (clear, non-duplicate items):
Potential Duplicates (>60% similarity):
Needs Clarification (ambiguous):
Route with Confirmation
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".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.
Process all orphaned items:
00-Inbox/📬 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]Because discovery happens at runtime:
No configuration needed - triage adapts as your structure grows.
mv not cp when moving filesCall 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:
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
Just SKILL.md in .agents/skills/triage of davekilleen/Dex.
Open the folder on GitHubat commit 227f78e
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Triage this skilldavekilleen/Dex | 493 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Garden Inboxpaperclipai/paperclip | 99k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Continuetelegramdesktop/tdesktop | 33k | 2 repos | ~9.4k | Automated safety check: Pass | GPL-3.0 | |
| Process InboxTDesktop-x64/tdesktop | 3k | 1 repos | ~4.3k | Automated safety check: Pass | GPL-3.0 | |
| Process Inboxtelegramdesktop/tdesktop | 33k | — | ~5.4k | Automated safety check: Pass | GPL-3.0 | |
| Career-Ops Gmail Lead Plugincareer-ops-hq/career-ops | 74k | — | ~233 | Automated safety check: Notes | MIT |
paperclipai/paperclip
Scan a Paperclip user's Mine inbox, classify reversible archive candidates, request checkbox confirmation, and archive only accepted selections.
telegramdesktop/tdesktop
Continue autonomous Telegram Desktop development from the shared ai-tdesktop repository.
TDesktop-x64/tdesktop
Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.
telegramdesktop/tdesktop
Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.
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.
Atomic-Mail/atomic-mail-agentic
Read and write email through the Atomic Mail from an AI agent.
davekilleen/Dex
This skill should be used when working with DSPy.rb, a Ruby framework for building type-safe, composable LLM applications.
davekilleen/Dex
Adopt a full published Heydex profile by handle ('set me up like @davekilleen').
davekilleen/Dex
Package one workflow — how you use Dex for a specific job — into a shareable DexDiff methodology doc.
davekilleen/Dex
Expert guidance for creating, writing, and refining Claude Code Skills.
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…
davekilleen/Dex
This skill should be used when writing Ruby and Rails code in DHH's distinctive 37signals style.
Categories
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.
Triage fits situations like: the user says clean up my inbox; sort out these notes.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: Triage is instructions for the agent only.
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.
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.
Triage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
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.
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.