From mz-knowledge
ALWAYS invoke when triaging inbox fleeting notes in a fast batch with promote/merge/discard/defer decisions. Triggers: triage inbox, fleeting review, clear inbox, batch decide.
npx claudepluginhub doctormozg/claude-pipelines --plugin mz-knowledgeThis skill is limited to using the following tools:
Discipline skill that runs a 30-second triage pump over a small batch of fleeting inbox notes. The `triage-scorer` agent scores each note with a deterministic heuristic ladder and proposes a default decision from a closed vocabulary (`promote | merge | discard | defer`). The user accepts the defaults wholesale or overrides individual decisions. Merge targets are never chosen by the agent — the ...
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Edits, creates, cleans, and formats spreadsheet files (.xlsx, .xlsm, .csv, .tsv) with zero formula errors, professional styling, and financial model standards like color coding.
Share bugs, ideas, or general feedback.
Discipline skill that runs a 30-second triage pump over a small batch of fleeting inbox notes. The triage-scorer agent scores each note with a deterministic heuristic ladder and proposes a default decision from a closed vocabulary (promote | merge | discard | defer). The user accepts the defaults wholesale or overrides individual decisions. Merge targets are never chosen by the agent — the user names them explicitly.
Edit directly.process-notes.[[wikilinks]] between existing notes — use vault-connect..mz/task/inbox/| Phase | Goal | Details |
|---|---|---|
| 0 | Setup | Inline below |
| 1 | Score batch | phases/score_batch.md |
| 1.5 | User approval — decisions | Inline below |
| 2 | Execute decisions | phases/execute_decisions.md |
Resolve the vault path. Resolve the vault path with precedence: $ARGUMENTS → OBSIDIAN_VAULT_PATH env → MZ_VAULT_PATH env → walk up from cwd to the nearest .obsidian/ directory.
Resolve the permanent-notes folder. Read <vault>/CLAUDE.md. Extract the permanent-notes folder name from it (e.g., 04 - Permanent/). If CLAUDE.md is absent or does not declare the permanent-notes folder, ask the user via AskUserQuestion: What is your vault's permanent-notes folder path (relative to vault root)? Store the answer in state.md under the key PERMANENT_FOLDER. Never hardcode a fallback path.
Resolve the batch. Glob <vault>/<INBOX_FOLDER>/*.md sorted by mtime ascending; take the first BATCH_SIZE notes. If zero notes are found, update state.md to Status: empty_inbox and tell the user the inbox is empty, then stop.
Create the task directory. Derive task_name = <YYYY_MM_DD>_vault-triage_<slug> where <YYYY_MM_DD> is today's date (underscores) and <slug> is a short mode tag (e.g., weekly); on same-day collision append _v2, _v3. Create TASK_DIR<task_name>/ on disk. Write state.md with Status: running, Phase: 0, Started: <ISO timestamp>, Vault: <absolute path>, PERMANENT_FOLDER: <resolved path>, BatchPaths: <list of absolute paths>.
This orchestrator (not a subagent) must present the triage proposals to the user via AskUserQuestion. This step is interactive and must not be delegated.
Before presenting, Read .mz/task/<task_name>/triage_batch.md in full and capture its contents into the orchestrator's context. Present the full verbatim contents of triage_batch.md — each note's title, preview, proposed decision, and rationale. Do not substitute a path, summary, or placeholder for the artifact content — present the full verbatim text.
Before invoking AskUserQuestion, emit a text block to the user:
**Triage batch ready for review**
Inbox batch of N notes scored and proposed for triage decisions (promote/merge/discard/defer).
- **Approve** → proceed to Phase 2 and execute all proposed decisions
- **Reject** → abort the triage session, no vault changes
- **Feedback** → override individual decisions and re-present for approval
Format the question body as:
Triage batch ready for review (N notes).
<verbatim contents of triage_batch.md>
Type **Approve** to proceed, **Reject** to cancel, or type your feedback.
The user may also reply with an override list such as 1=discard, 3=merge::Target Note Name. Each override binds to the note's index in the batch.
Response handling:
decisions_approved, proceed to Phase 2 with the default decision map from triage_batch.md.aborted_by_user and stop.merge decision in the override list, require merge::<target note name> syntax; if the user writes just merge without a target, re-ask for the missing target via AskUserQuestion. This is a loop — repeat until explicit approval. Never proceed to Phase 2 without the user's explicit approval or an unambiguous override map.review_after frontmatter field and keep the note in the inbox.Techniques: delegated to phase files — see Phase Overview table above.
| Rationalization | Rebuttal |
|---|---|
| "Auto-discard all stubs without showing them to the user." | "Even stubs might represent intentional micro-notes; every discard must be approved." |
| "Pick the merge target automatically from the most-similar note." | "Merge target requires user intent; the agent proposes, the user names the target." |
| "Process the whole inbox in one pass, don't cap at 7." | "BATCH_SIZE = 7 keeps each session under 30 seconds; larger batches cause decision fatigue and erode the quality of every decision." |
proposed_merge_target: null and requiring the user to name it.BATCH_SIZE (7) notes in a session — batching prevents decision fatigue.Verification: delegated to phase files — see Phase Overview table above.