用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/BEKO2210/Firstbrain --skill triage命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | triage |
| trigger | /triage |
| description | Classify inbox notes by type, auto-tag high-confidence items, and propose folder moves for review |
| version | 3.0.0 |
| type | skill |
| tags | ["skill","agent","inbox","classification","workflow"] |
Intelligent inbox classification that reads each note's full content, assigns a type with confidence level, auto-applies metadata for high-confidence items, and proposes structural moves for user review. Follows the three-tier action model mapped directly to vault governance zones (AUTO / PROPOSE / NEVER).
The inbox should not be a dumping ground. /triage transforms unorganized inbox notes into properly classified, tagged, and filed knowledge -- respecting governance by auto-applying only safe metadata changes and proposing structural changes for review.
/triage # Triage all inbox notes
/triage --dry-run # Show classifications only, no changes applied
Claude reads each inbox note's full content and uses its own reasoning to determine the note type. There is no NLP library or keyword matching -- classification relies on Claude's understanding of the content in context.
Classification signals (strongest to weakest):
## Installation, ## Usage suggests tool; ## Pros, ## Cons suggests decisiontype: is already set, trust it; if tags: exist, use them as classification hintsBook -- prefix strongly signals resource, Tool -- signals tool, Decision -- signals decision, Person -- signals personClaude combines these signals to assign both a type and a confidence score. Strong, unambiguous signals (e.g., file named Tool -- Docker.md with installation instructions) yield high confidence. Weak or conflicting signals yield low confidence.
| Confidence | Score | Governance Zone | Action |
|---|---|---|---|
| High | >= 0.8 | AUTO | Fill missing frontmatter (type, created, tags). Log to changelog. |
| Medium | 0.5 - 0.8 | PROPOSE | Present classification and target folder. Wait for user approval before applying changes. |
| Low | < 0.5 | REVIEW | Show the note with Claude's best guess. No action taken. User decides. |
Score calculation guidance:
Tool -- ) AND content confirms type: high (>= 0.8)Claude follows these steps when /triage is invoked:
Ensure fresh indexes: Call ensureFreshIndexes('.') from create-utils to rebuild indexes if stale (> 5 min).
Load vault index: Read .claude/indexes/vault-index.json using loadJson.
Get inbox notes: Call getInboxNotes('.', vaultIndex) from triage-utils.cjs to collect all notes in 00 - Inbox/ that need triage (excluding Daily Notes, templates, and the Inbox.md file itself).
Empty inbox check: If no inbox notes are found, report: "Inbox is clear -- nothing to triage." and stop.
Classify each note. For each inbox note, Claude reads the full content and determines:
getTargetFolder(type) from triage-utils.cjsPresent triage results grouped by confidence level:
Apply AUTO actions: For high-confidence items, call applyFrontmatterFix() from triage-utils.cjs to fill missing frontmatter fields (type, created, tags). These are safe metadata changes within the AUTO governance zone.
Collect user decisions on PROPOSED items. Present medium-confidence classifications for user review. After user approval, execute approved moves via moveNote() from triage-utils.cjs.
Re-scan: Call scan('.') from scanner.cjs after all modifications to update vault indexes.
Log actions to .claude/changelog.md -- record which notes were auto-tagged and which were moved.
When --dry-run is specified, skip steps 7-10. Show all classifications and proposed actions without applying any changes. This lets the user preview triage results before committing.
This skill maps directly to the vault's three governance zones:
Actions that /triage performs automatically for high-confidence items:
type field in frontmattercreated field (using file mtime or today's date)tags array based on content analysisThese are identical to the governance rule "fill missing frontmatter fields" -- safe metadata changes that never alter meaning.
Actions that /triage presents for user approval:
03 - Resources/)Tool -- prefix)Medium-confidence items always go through PROPOSE regardless of action type.
Actions that /triage will never perform:
Example of a typical triage report:
## Inbox Triage -- 5 notes
**Auto-applied** (high confidence)
- [[Docker Notes]] -- type: tool, tags: [docker, containers] -> filled frontmatter
- [[Meeting with Sarah]] -- type: meeting, created: 2026-03-05 -> filled frontmatter
**Proposed** (medium confidence)
- Move [[Docker Notes]] from Inbox to 03 - Resources/? (tool)
- Move [[Meeting with Sarah]] from Inbox to 01 - Projects/? (meeting)
**Needs Review** (low confidence)
- [[Random Thoughts]] -- could be zettel or daily? Please classify.
Approve proposed moves? (yes/no/select)
Notes:
type: daily in inbox root (not Daily Notes/): Propose move to 00 - Inbox/Daily Notes/ subfolder.moveNote() checks for collisions. If a file with the same name exists at the target, report the conflict and skip the move. Never overwrite.--dry-run mode: Show all classifications and proposed actions without applying any changes.File: triage-utils.cjs
Provides inbox scanning, frontmatter fixing, and file operation functions used during the execution flow:
const { getInboxNotes, applyFrontmatterFix, moveNote, getTargetFolder } = require('./.agents/skills/triage/triage-utils.cjs');
getInboxNotes(vaultRoot, vaultIndex)
Collects all notes in 00 - Inbox/ that need triage. Excludes Daily Notes subfolder, the Inbox.md file itself, and templates. Reads full file content for each qualifying note. Returns array of objects with path, name, content, frontmatter, tags, headings, links, hasType, and hasTags.
applyFrontmatterFix(vaultRoot, notePath, updates)
Modifies frontmatter fields on a note file (AUTO zone action). If no frontmatter exists, inserts a new block at the top. If frontmatter exists, updates/adds specified fields without disturbing other fields or the note body. Returns { applied: true, fields: [...] }.
moveNote(vaultRoot, sourcePath, targetFolder)
Moves a note file from one folder to another (PROPOSE zone -- only call after user approval). Checks for filename collision at target. Returns { moved: true, from, to } on success or { moved: false, reason } on collision.
getTargetFolder(type)
Returns the canonical target folder for a given note type. Delegates to create-utils.cjs getTemplateInfo for consistent mapping. Returns folder string or null for unknown types.
scan/utils.cjs -- loadJson for reading JSON indexescreate/create-utils.cjs -- getTemplateInfo for type-to-folder mapping, ensureFreshIndexes for index freshnessscan/scanner.cjs -- scan for re-scanning after modifications