Three things in this commit:
1. Atlas skills now agentskills.io / Hermes-compatible
- Each atlas/skills/claw-*/SKILL.md frontmatter enriched with version,
author, license, and metadata.hermes block (tags, category,
related_skills, boundaries)
- New atlas/skills/DESCRIPTION.md per Hermes category convention
- New atlas/INTEGRATION-hermes.md — step-by-step SOP to install Atlas
onto hermes-agent runtime (cp skills, fetch nuwa upstream, configure
env, wire cron, smoke test). Documents the branding override and
self-improving-loop guardrail.
2. nuwa-skill mirror prep (waiting on org-repo creation)
- scripts/mirror-nuwa-to-moments.sh — one-shot bare-clone + push --mirror
- docs/decisions/0001-mirror-nuwa-skill.md — ADR explaining the why,
the bot-token scope limitation, and the manual one-time repo creation
step required at https://git.moments.top/repo/create
3. README rewrite
- Atlas-forward navigation table ("想做什么 → 看哪里")
- Quickstart sections for browsing, running tests locally, fetching
nuwa upstream (public + air-gapped variants), and Hermes integration
- Preserved all original Vega working agreements
- Roadmap with explicit Atlas / Vega tracks
Bot account (multica-bot) lacks write:organization scope so cannot create
the nuwa-skill repo via API. After human creates the empty repo at
git.moments.top/Moments.top/nuwa-skill, run scripts/mirror-nuwa-to-moments.sh
to populate it.
4.3 KiB
4.3 KiB
| name | description | version | author | license | metadata | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| claw-customer-radar | Compute Customer Health Score, sentiment trend, RFM, decision-chain map, churn signals. Fire Andon alerts when health crosses thresholds. | 0.1.0 | Moments / Atlas team | MIT |
|
claw-customer-radar
Purpose
Atlas's third lens (after project and people). Tracks each external customer as an entity with health, sentiment trajectory, and early-warning signals.
Inputs
- Email JSON (focus on external sender domains)
state/projects/*.json(for project-health input to CHS)state/customers/*.json(existing customer cards)
Outputs
state/customers/CUST-*.json- Andon alert JSON to
state/runs/alerts.jsonwhen health crosses thresholds - New
state/customers/UNCLASSIFIED-<domain>.jsonfor unknown customer domains
Customer Health Score (CHS)
CHS = 0.4 × project_health
+ 0.3 × sentiment_trend_30d
+ 0.2 × email_frequency_normalcy
+ 0.1 × monetary_scale
Tier:
≥ 80 → 🟢 Green
60 – 79 → 🟡 Yellow
< 60 → 🔴 Red
project_health
- Per associated project: Active=1.0, Stalled=0.3, Completed (recent)=1.0, Dropped=0
- Weighted average across that customer's projects
sentiment_trend_30d
- VoC: extract customer-side quotes from Email JSON
- Sentiment scoring: per-quote score in [-1, +1] via LLM with calibrated rubric
- Trend = slope of last 30 days; convert to [0, 1] with
0.5 + slope/2
email_frequency_normalcy
- Compare last-30-day frequency to trailing-90-day baseline
- 0.5 ± deviation; ≤ 0.3 means significant drop (silence is a churn signal)
monetary_scale
- Sum of associated project amounts, normalized against this client's customer book
- Big customers tilt the score so a Yellow on a whale beats a Yellow on a small one
Sentiment Trend (separate field)
Stored as a 90-day series for chart rendering:
"情绪趋势_90d": [
{"date": "2026-02", "score": 0.7, "代表词": "期待 / 配合"},
{"date": "2026-03", "score": 0.5, "代表词": "等候 / 询问"},
{"date": "2026-04", "score": 0.2, "代表词": "催 / 失望"}
]
VoC Extraction Rules
Surface up to 5 most-impactful customer quotes per 30-day window:
- Strong negative (
再这样我就找别家,你们到底什么时候能...) - Strong positive (
做得不错,非常感谢) - Decision-maker direct intervention (boss-level customer person speaks up)
- Threats / explicit deadlines
Each quote keeps source email ID and speaker identity.
Decision Chain Map
For each customer, identify 2–5 key external people and their role:
| Role | Heuristic |
|---|---|
决策者 |
most senior title in signature; or person whose intervention shifts thread |
执行接口 |
most frequent external sender on operational topics |
用户 |
recipient of deliverables, may be silent |
阻拦者 |
person who frequently raises objections |
Churn Signals
Maintain a list of signals; populate when triggered:
| Signal | Trigger |
|---|---|
决策者亲自施压 |
Decision-maker speaks up after silence |
频率骤降 |
30d frequency < 30% of 90d baseline |
合同到期临近 |
Within 60 days of known contract end (boss-provided) |
负面 VoC 累积 |
≥ 3 strong-negative quotes in 30 days |
项目同时 stall |
≥ 2 projects with this customer in Stalled simultaneously |
关键人离职 |
Detected via OOO message + replacement signature |
Andon Alert Triggers (fire to state/runs/alerts.json)
- Tier transition Green→Yellow or Yellow→Red
- Strong-negative VoC quote
- ≥ 2 active churn signals simultaneously
Each alert includes: customer_id, trigger, source email IDs, recommended boss action, suppression-key (don't re-fire same alert within 24h of acknowledgment).
Sample Output
See state-schemas/customer.md for full example. Key fields produced:
id,name,lifecycle_stage健康度{ score, 档位, 构成 }情绪趋势_90dRFM{ Recency, Frequency, Monetary }我方接口人(cross-ref to people)客户方决策链VoC_关键原话_30d流失预警信号老板视角建议