Files
Evan 7881d327a5 refactor: migrate icon fields from emoji to lucide:<name> tokens (#63)
* refactor: migrate icon fields from emoji to lucide:<name> tokens

Every TOML manifest's `icon = "<emoji>"` line is replaced with
`icon = "lucide:<kebab-name>"` — a reference to a lucide-react icon,
which the librefang.ai site and dashboard render as crisp SVG. Reasons
for the switch:

- Emoji render very differently across OS/browser/font stacks; the
  registry catalog looked inconsistent from one row to the next.
- Five manifests (clip / creator / linkedin / reddit / twitter) had
  their icons stored as literal Python-style escape strings
  ("\\U0001F3AC") because the TOML parser upstream never decoded
  them. Switching away from emoji drops that class of bug entirely.
- As a drive-by, also decode the \\uXXXX accent escapes in the
  [i18n.fr] block of hands/creator/HAND.toml so "Créateur" shows
  up correctly.

87 files touched. example manifests left untouched (still "TODO").

* fix: backfill i18n name + drop the single-member email category

- Every existing [i18n.<lang>] block now has a `name` field. 60 files
  previously translated description but kept the English name
  implicitly — which rendered as "some English some Chinese" in the
  registry UI. Fill in the missing name from the English brand (or a
  known localized equivalent: DingTalk→钉钉, Feishu→飞书, Email→
  电子邮件 / メール / E-Mail / Correo / Courriel, and a handful of
  hands that have Chinese product names like 视频剪辑 Hand).
- channels/email.toml was the only item under category="email";
  reclassify it as "messaging" so the sub-category filter chip list
  on the category page isn't littered with singletons.

* feat(i18n): localize 76 agents/integrations/plugins into 7 languages

Adds full [i18n.zh], [i18n.zh-TW], [i18n.ja], [i18n.ko], [i18n.de],
[i18n.es], [i18n.fr] blocks with name + description to every manifest
that previously shipped English-only.

Coverage:
- 32 agents (academic-researcher, analyst, architect, assistant,
  code-reviewer, coder, customer-support, data-scientist, debugger,
  devops-lead, doc-writer, email-assistant, health-tracker,
  hello-world, home-automation, legal-assistant, meeting-assistant,
  ops, orchestrator, personal-finance, planner, recipe-assistant,
  recruiter, researcher, sales-assistant, security-auditor,
  social-media, test-engineer, translator, travel-planner, tutor,
  writer)
- 33 integrations (AWS, Azure, Bitbucket, Brave Search, Discord,
  Dropbox, Elasticsearch, Exa Search, Fetch, Filesystem, GCP, Git,
  GitHub, GitLab, Gmail, Google Calendar, Google Drive, Google Maps,
  Jira, Linear, Memory, MongoDB, Notion, PostgreSQL, Puppeteer, Redis,
  Sentry, Sequential Thinking, Slack, SQLite, Teams, Time, Todoist) —
  brand names kept as-is across all locales, only descriptions
  translated.
- 11 plugins (auto-summarizer, context-decay, conversation-logger,
  episodic-memory, guardrails, keyword-memory, mempalace-indexer,
  sentiment-tracker, todo-tracker, topic-memory, user-profile)

The descriptions are one-line summaries — hand-translated rather than
machine-generated, so technical terms (MCP, PR, CI/CD, etc.) stay
consistent across locales.

* feat(i18n): close remaining per-lang gaps for channels, workflows, devteam

Third pass on i18n coverage. Every non-example manifest now carries a
full set of [i18n.zh], [i18n.zh-TW], [i18n.ja], [i18n.ko], [i18n.de],
[i18n.es], [i18n.fr] blocks.

- 44 channel adapters: added French descriptions (zh/zh-TW/ja/ko/de/es
  were already present). Brand names kept as-is in all locales so users
  recognize Discord / Slack / LINE / etc. consistently.
- 22 workflows: filled zh-TW / ja / ko / de / es / fr blocks. Each
  translation mirrors the existing zh one in structure and tone so the
  catalog reads consistently across locales.
- hands/devteam/HAND.toml: added the four langs that were missing
  (zh-TW, de, es, fr).

Only the 6 templates under examples/ are left without i18n blocks on
purpose — they still contain "TODO:" placeholders.
2026-04-17 22:04:26 +09:00

103 lines
3.8 KiB
TOML

id = "customer-support"
name = "Customer Support Triage"
description = "Tiered customer support pipeline that classifies incoming requests by urgency and category, drafts an appropriate response, and escalates complex issues to a specialist."
category = "business"
tags = ["support", "triage", "customer-service", "escalation"]
[i18n.zh]
name = "客户支持分流"
description = "分级客户支持流水线,按紧急程度和类别对请求进行分类,起草相应回复,并将复杂问题升级给专家处理。"
[[parameters]]
name = "customer_message"
description = "The customer's support request or message"
param_type = "string"
required = true
[[parameters]]
name = "customer_name"
description = "Name of the customer for personalisation"
param_type = "string"
required = false
default = "Customer"
[[parameters]]
name = "product_context"
description = "Product or service context for more accurate responses"
param_type = "string"
required = false
default = ""
[[steps]]
name = "classify"
prompt_template = """
Classify the following customer support request. Determine:
1. Category: billing, technical, account, feature-request, bug-report, or general
2. Urgency: low, medium, high, critical
3. Sentiment: positive, neutral, frustrated, angry
4. Whether escalation to a human specialist is needed (true/false)
Return a structured assessment with reasoning for each classification.
Product context: {{product_context}}
Customer message:
{{customer_message}}
"""
[[steps]]
name = "draft_response"
prompt_template = """
Draft a helpful, empathetic support response for {{customer_name}} based on the classification below. The response should:
- Acknowledge the customer's concern
- Provide a clear solution or next steps
- Match the appropriate tone for the detected sentiment
- Include specific action items
Classification:
{{classify}}
Original message:
{{customer_message}}
"""
depends_on = ["classify"]
[[steps]]
name = "escalation_check"
prompt_template = """
Review the classification and drafted response below. Determine if this case requires escalation beyond automated support. If escalation is needed, prepare a concise internal handoff note for the specialist team that includes: summary, category, urgency, customer sentiment, attempted resolution, and recommended next steps.
If no escalation is needed, confirm the drafted response is complete and ready to send.
Classification:
{{classify}}
Drafted response:
{{draft_response}}
"""
depends_on = ["classify", "draft_response"]
[i18n.zh-TW]
name = "客戶支援分級"
description = "分級客戶支援流水線,按緊急程度與類別分類請求,草擬適當回覆,並將複雜問題升級給專家處理。"
[i18n.ja]
name = "カスタマーサポート トリアージ"
description = "階層型サポートパイプライン。緊急度とカテゴリで分類し、適切な回答を下書きし、複雑な案件は専門家にエスカレーション。"
[i18n.ko]
name = "고객 지원 분류"
description = "단계별 고객 지원 파이프라인. 긴급도와 카테고리로 요청을 분류하고 적절한 응답을 작성하며, 복잡한 이슈는 전문가에게 에스컬레이션."
[i18n.de]
name = "Customer-Support-Triage"
description = "Gestufte Support-Pipeline: klassifiziert Anfragen nach Dringlichkeit und Kategorie, entwirft passende Antworten und eskaliert komplexe Fälle an Spezialisten."
[i18n.es]
name = "Triage de soporte"
description = "Pipeline de soporte por niveles: clasifica solicitudes por urgencia y categoría, redacta una respuesta adecuada y escala los casos complejos a un especialista."
[i18n.fr]
name = "Triage du support client"
description = "Pipeline de support par niveaux : classe les demandes par urgence et catégorie, rédige une réponse appropriée et escalade les cas complexes à un spécialiste."