Skip to content
Back to skills

Email Triage

ASecurity

Use when the user asks for inbox-level email triage or processing. Do not use for ordinary email access, sending, or analysis of a single message.

  • 4 stars
  • 0 votes
  • 0 copies
  • 6 views
  • Added September 2, 2026
ai-agentsdebuggingsecurity

Works with

  • cli
  • mcp

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add MoeenNehzati/famulus --skill email-triage --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Email Triage?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Email Triage
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/moeennehzati-email-triage/badge)](https://www.skillsdirectory.com/skills/moeennehzati-email-triage)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: email-triage
description: >-
  Use when the user asks for inbox-level email triage or processing. Do not use for ordinary email access, sending, or analysis of a single message.
---

<!-- BEGIN BLUEPRINT INTERFACES -->
> Generated from `blueprint.yaml`. Do not edit this block by hand.

Executable Interfaces:

Send the required `caller` (caller skill), `interface`, `version`, and `arguments`; optional `dry_run` defaults to false. Compact uses ordered `positionals` plus an option mapping; ordered raw argv uses `positionals: []` plus every argv token in list `options`. Never mix forms.
- `email-triage._rtx.interface.fetch-filtered-envelopes` — Fetch email envelopes for one account through email-client and emit only envelopes strictly after the triage watermark.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `short-account`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {"--after": "YYYY-MM-DD", "--dedup-against": "todo|triage", "--rescan-after": "ISO_CUTOFF", "-a": "account"}, "positionals": [], "stdin": null}
    Required options: ["--after", "-a"]; positional arity: 0..0; stdin: forbidden
  - Alternative: `long-account`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {"--account": "account", "--after": "YYYY-MM-DD", "--dedup-against": "todo|triage", "--rescan-after": "ISO_CUTOFF"}, "positionals": [], "stdin": null}
    Required options: ["--account", "--after"]; positional arity: 0..0; stdin: forbidden
- `email-triage._rtx.interface.scripts-clear-failure` — Clear a latched triage failure after its cause is fixed, without advancing the watermark.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {}, "positionals": ["reason"], "stdin": null}
    Required options: []; positional arity: 0..unbounded; stdin: forbidden
- `email-triage._rtx.interface.scripts-filter-envelopes` — Filter JSON envelopes (from email-client's mail-list, piped via stdin) to those strictly after the triage watermark.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {"-a": "account"}, "positionals": [], "stdin": null}
    Required options: ["-a"]; positional arity: 0..0; stdin: permitted
- `email-triage._rtx.interface.scripts-finalize-triage` — Ordered, idempotent finalization of one triage run — writes metrics, then (only on success and only if no failure is latched) advances the watermark, recording the run id so a replayed call is a safe no-op.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {"--accounts": "a,b", "--added-todo": "N", "--added-triage": "N", "--deduped": "N", "--run-id": "id", "--skipped": "N", "--total-scanned": "N"}, "positionals": [], "stdin": null}
    Required options: ["--added-todo", "--added-triage", "--run-id", "--skipped", "--total-scanned"]; positional arity: 0..0; stdin: forbidden
- `email-triage._rtx.interface.scripts-get-cutoff` — Return the cutoff date for the current triage run, with a fallback if no watermark exists.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {}, "positionals": [], "stdin": null}
    Required options: []; positional arity: 0..unbounded; stdin: forbidden
- `email-triage._rtx.interface.scripts-log-decision` — Append a triage classification decision for one email to triage.log.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {}, "positionals": ["account", "id", "from", "subject", "DECISION", "reason"], "stdin": null}
    Required options: []; positional arity: 6..6; stdin: forbidden
- `email-triage._rtx.interface.scripts-mark-failure` — Record that this triage run failed, so update-watermark refuses to advance and the scheduled health check reports it.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {}, "positionals": ["reason"], "stdin": null}
    Required options: []; positional arity: 0..unbounded; stdin: forbidden
- `email-triage._rtx.interface.scripts-prune-log` — Drop triage.log entries older than 30 days and print a one-line summary.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {}, "positionals": [], "stdin": null}
    Required options: []; positional arity: 0..unbounded; stdin: forbidden
- `email-triage._rtx.interface.scripts-update-watermark` — Advance the triage watermark to the current timestamp. Refuses if scripts-mark-failure was called earlier in this run.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {}, "positionals": [], "stdin": null}
    Required options: []; positional arity: 0..unbounded; stdin: forbidden
- `email-triage._rtx.interface.scripts-write-metrics` — Write metrics from a triage run (emails scanned, added to lists, skipped, deduped) to status.json for visibility and debugging.
  - Caller: `email-triage`
  - Version: 1
  - Security level: 2
  - Alternative: `owner`
    Arguments JSON (replace labels with actual values). Omit optional positionals and options that are not needed.
    {"options": {"--accounts": "TEXT", "--added-todo": "N", "--added-triage": "N", "--deduped": "N", "--skipped": "N", "--total-scanned": "N"}, "positionals": [], "stdin": null}
    Required options: ["--added-todo", "--added-triage", "--skipped", "--total-scanned"]; positional arity: 0..0; stdin: forbidden

Instruction Interfaces:

These are LLM-readable instruction surfaces. Read and follow them directly; do not invoke the MCP server for them.
- `email-triage.source.instructions-triage.interface.triage@2` — Scans emails received since the last triage run and routes extracted action items to the right list.
<!-- END BLUEPRINT INTERFACES -->
# Email Triage

Use `email-triage.interface.triage` for every request within this skill's trigger
scope. Load that interface's detailed instructions and begin triage directly.

Files in this skill

  • CHANGES.md2.6 KB
  • DEBUGGING.md4 KB
  • SKILL.md7.3 KB
  • _rtx/__init__.py59 B
  • _rtx/_decision_sink.py2.6 KB
  • _rtx/_envelope_gate.py7.2 KB
  • _rtx/_failure_clearer.py1.8 KB
  • _rtx/_failure_sentinel.py1.9 KB
  • _rtx/_finalize_run.py6.3 KB
  • _rtx/_log_compactor.py3.3 KB
  • _rtx/_mail_envelope_stream.py4.4 KB
  • _rtx/_rescan_filter.py2.6 KB
  • _rtx/_watermark_floor.py3.5 KB
  • _rtx/_watermark_writer.py5.4 KB
  • _rtx/_write_metrics.py3.9 KB
  • _rtx/blueprint.yaml6.7 KB
  • _rtx/blueprints/rtx-decision-sink.yaml6.3 KB
  • _rtx/blueprints/rtx-envelope-gate.yaml6.2 KB
  • _rtx/blueprints/rtx-failure-clearer.yaml4.6 KB
  • _rtx/blueprints/rtx-failure-sentinel.yaml4.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.