Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/channinglua/prax-agent/support-digestnpx skills add ChanningLua/prax-agent --skill support-digestgit clone --depth 1 https://github.com/ChanningLua/prax-agentWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00031 | $0.02127 |
| Opus 5 | $0.00015 | $0.01064 |
| Sonnet 5 | $0.00006 | $0.00425 |
| Haiku 4.5 | $0.00003 | $0.00213 |
Grade A, and why
support-digest scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 211 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Support Ticket Digest
痛点:PM 每天早上要花 20 分钟翻昨天 200 条客服工单,才能知道"哪个 feature 坑多"、"有没有新涌出的抱怨"。这个 skill 把翻 ticket 的动作自动化,所有数据留在本地,不调任何外部 API,方便合规严格的团队。
何时触发
- cron 每天早上 9 点跑
- 用户手动:"生成昨日客服简报"
- 客服系统 CSV/JSON 导出到指定目录触发 hook
输入
- 必需:
.prax/inbox/tickets-<YYYY-MM-DD>.json(或.csv也支持)- 标准字段:
id / created_at / status / category / subject / body / customer_email / severity - 字段缺失时尽量宽容,但
id / created_at / body必须有
- 标准字段:
- 可选:
.prax/support-digest.yaml配置(见下方)
Prax 不负责从 Zendesk / Freshdesk 拉数据——export 是 IT 或客服负责人的事。skill 只做本地文件处理。
输出
.prax/vault/support/<YYYY-MM-DD>/digest.md
外加原始统计数据的结构化副本:
.prax/vault/support/<YYYY-MM-DD>/stats.json
用于下游工具(BI、周报生成等)复用。
工作流程
Step 1:定位输入
# 最新的 tickets 文件
ls -t .prax/inbox/tickets-*.{json,csv} 2>/dev/null | head -1
没找到 → 停下来告诉用户:"请把昨日工单导出为 JSON/CSV 放到 .prax/inbox/tickets-YYYY-MM-DD.json"。
Step 2:加载 + 脱敏
读进来后立刻脱敏用户信息:
| 字段 | 脱敏规则 |
|---|---|
customer_email |
[email protected] → f***@b***.com |
customer_phone |
13812345678 → 138****5678 |
| body 里的 email | 正则替换同上 |
| body 里的手机/银行卡号 | 正则识别,全替换成 [REDACTED] |
| body 里出现的 SSN / 身份证号 | 全替换成 [REDACTED] |
脱敏后才进入后续处理——避免不小心把 PII 写进 digest。
Step 3:分类统计
按 category 字段(或从 subject 启发式推断)聚类:
- 计数:今日 vs 昨日 vs 过去 7 天均值
- 热度:新增占比(category_today / category_7d_avg)
- 严重程度:
severity=high的占比 - 新类别:今日有而过去 7 天没出现过的 category
Step 4:识别 top issues
抽取前 5 条"关注度高"的工单,标准(按分数降序):
| 信号 | 分数 |
|---|---|
| severity=high | +3 |
| status=escalated / status=re-opened | +2 |
| 同一 category 今日数量 > 7d_avg × 2 | +2 |
| body 包含 "refund" / "退款" / "退费" | +2 |
| body 包含 "lawyer" / "律师" / "投诉" / "举报" | +3 |
| response_time > 24h(如果有此字段) | +1 |
取前 5 条,每条附脱敏后的 body 摘录(≤ 100 字)。
Step 5:趋势识别
对比"今日 vs 过去 7 天均值":
- 📈 涨幅 > 50% 的 category:列出来
- 📉 跌幅 > 50% 的 category:列出来(有时代表问题解决了)
- 🆕 今日首次出现:全列
Step 6:写 digest
模板:
---
date: 2026-04-22
ticket_count: 187
category_count: 12
highlights_count: 5
generated_at: 2026-04-22T09:05:00+08:00
---
# 客服简报 · 2026-04-22
## 总览(一句话)
昨日共 **187** 条工单,比 7 日均值 +12%;`billing` 类翻倍,`auth` 类回落。
## 今日亮点(top 5)
### 1. [high] Billing — duplicate charge
- 工单数:23(占 12%)
- 代表性摘要:"On 4-20 I was charged twice for the Pro plan. Please refund immediately."
- 建议 owner:@finance-ops
### 2. [escalated] 登录流 — OAuth timeout
- ...
## 趋势
### 📈 涨
- `billing`:23 vs 7d 均值 11(+109%)
- `mobile-app-crash`:8 vs 3(+167%)
### 📉 跌
- `auth`:12 vs 19(-37%)
### 🆕 新出现
- `integration-slack`(6 条)
## 分类统计
| Category | Today | 7d avg | Δ |
|---|---|---|---|
| billing | 23 | 11 | +12 |
| auth | 12 | 19 | -7 |
| ...|
## 报告位置
- Raw 脱敏 JSON:`.prax/vault/support/2026-04-22/tickets-redacted.json`
- Stats:`.prax/vault/support/2026-04-22/stats.json`
- 原始文件已归档到:`.prax/inbox/archive/tickets-2026-04-22.json`
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 211 lines · 31 tokens per session scan A a4855375207c
support-digest is a skill published in the GitHub repository ChanningLua/prax-agent (272 stars, last pushed 1mo ago), licensed MIT. It adds 31 tokens to every session and 2,127 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
start9-frontend
Start9 house style for every Angular + Taiga UI web frontend (StartOS ui/setup-wizard, StartWRT, StartTunnel, brochure-marketplace, start9-store, ops-server, support-server). Use BEFORE writing or reviewing any frontend code in these apps — components, templates, styles/CSS, forms, dialogs/toasts, routing, state, DI…
designer_guide
Guidance for creating and editing designs using the designer tool.
agents_guide
Guidance for delegating focused work to child Agents.
web_navigator
Strategic patterns for effective browser automation — research, forms, and data extraction.
data_analyst
Analyses datasets with professional rigour — statistical summaries, clear narratives, and well-chosen visualisations.
humanizer
Write in a natural, human tone — no AI-speak, no filler, no corporate fluff.