--- name: claw-people-observer description: Compute observation cards for each person — project density, response time, BARS behavior tags, CCAR critical incidents, ONA centrality, 9-Box performance dimension. NEVER assigns potential or final ratings — those are boss-only. version: 0.1.0 author: Moments / Atlas team license: MIT metadata: hermes: category: atlas tags: [people-analytics, 9-box, bars, ccar, ona, atlas] related_skills: [claw-email-parser, claw-project-tracker, claw-report-writer] boundaries: - never_assign_9box_potential - never_assign_topgrading_grade - never_recommend_pip_or_termination --- # claw-people-observer ## Purpose Build the people layer of Atlas. For each internal person who appears in the email graph, compute a multi-framework observation card. Surface signals to the boss; never write verdicts. ## Hard Boundary This skill **does not assign**: - 9-Box potential dimension (boss only) - A/B/C player labels (boss only) - Performance Improvement Plan triggers (boss only) - Hire/fire recommendations (always boss) This skill **does compute**: - Activity-based metrics (active project count, stalled ratio, response time) - Behavior tags with BARS anchors and email-ID evidence - CCAR critical incidents (auto-detected positive + negative events) - ONA centrality (information broker score, isolation index) The 9-Box performance dimension is auto-estimated as a *suggestion* (with a "boss to confirm" flag); never as a final answer. ## Inputs - Updated Email JSON since last run - `state/projects/*.json` (for project-density and stall-ratio computation) - `boss_skill.md` (BARS anchors live in the Decision Heuristics layer) ## Outputs - `state/people/.json` (see schema) - Append to `state/audit/people_signals.csv` for each new behavior tag ## Computation Notes ### Project density / stalled ratio - Density = count of distinct project_ids where person appears in last 30 days - Stalled ratio = stalled_projects / active_projects - Threshold for "overload" warning: density > 6 AND stalled_ratio > 0.3 ### Response time - For threads where person is Responsible, compute median time between (boss/customer message asking for action) → (their reply) - Surface only the median; do not surface individual slow replies (avoid micro-management trap) ### BARS tags - Pull anchor list from `boss_skill.md > Decision Heuristics` - For each tag, scan recent thread events for matching anchor text or pattern - Always include source email ID ### CCAR critical incidents - Auto-detect: project completion ahead of schedule, customer-side praise, customer-side complaint, escalation refused, deadline missed - Window: rolling 30 days ### ONA centrality - Build directed graph: from→to+cc per email, weight = message count - Compute betweenness centrality + degree centrality + isolation index (= 1 / unique_correspondents) - Refresh weekly (heavy compute), cache in `state/people/_ona_cache.json` ### 9-Box auto-estimate - Performance dimension: composite of (completion rate, response time, customer-side sentiment when this person is Responsible) - Potential dimension: **never auto-estimated**; field is `null` until boss writes it ## Failure Modes | Failure | Behavior | |---------|---------| | Person has no Responsible projects | Card still created with sparse data; flag `data_sparse: true` | | Identity collision suspected | Surface in `state/people/_to_merge.json`; do not auto-merge | | Boss explicitly disagrees with a behavior tag | Tag retired; rule that produced it surfaces in next quarterly distillation review | ## Sample Output ```json { "name": "张三", "产出指标": { "active_projects": 8, "completed_30d": 2, "stalled_ratio": 0.375, "avg_response_hours": 27, "客户主动催办次数_30d": 4 }, "行为标签_BARS": [ { "维度": "主动性", "锚点": "客户首次催才回应", "评分": 2, "依据邮件": ["msg-abc"], "rule_ref": "BARS-proactivity-3" } ], "关键事件_CCAR_30d": [ {"date": "2026-04-22", "事件": "PRJ-001 客户投诉,未升级", "性质": "负向", "source_email_ids": ["msg-xyz"]} ], "网络中心度_ONA": { "信息中介度": 0.42, "孤立指数": 0.18, "解读": "中等枢纽,未被孤立" }, "9_box_自动估": { "performance": "中下", "潜力": null, "建议象限": "Solid Performer 或 Underperformer,看潜力定", "boss_to_confirm": true }, "Topgrading_建议": null } ```