# Domain Hr

> HR & operations rules: SCD current-record filtering, issue resolution metrics.

- Skill: `signalpilot-labs/domain-hr` (Agent Skill)
- Install (CLI): `npx skillmds@latest add signalpilot-labs/domain-hr`
- Raw SKILL.md: https://api.skillmd.com/api/skills/signalpilot-labs/domain-hr/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: signalpilot-labs (https://skillmd.com/u/signalpilot-labs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/signalpilot-labs/domain-hr

---


# HR & Operations

## Driving Table

When aggregating workforce or issue metrics, drive FROM the fact/event table (issues, tickets, time_entries), not the dimension table (employees, teams, projects). Employees with zero activity MUST NOT appear in activity reports - they have no data to aggregate.

Exception: if a parent/entity table exists whose primary key matches the
GROUP BY key AND some parent rows have no matching children in the detail
table, drive FROM the parent and LEFT JOIN the detail. Parent rows with
zero children must appear with count=0, not be silently dropped.

## SCD (Slowly Changing Dimensions)

Tables with `_fivetran_start`/`_fivetran_end` or `valid_from`/`valid_to` columns track historical state. You MUST filter to the current record before aggregating.

Current record: `_fivetran_end = '9999-12-31'` OR `_fivetran_end IS NULL` - verify the sentinel value by querying 3-5 rows before assuming.

For `_fivetran_active` columns, always use `WHERE COALESCE(_fivetran_active, true)` - never `WHERE _fivetran_active = true` because NULL values (meaning "active") would be filtered out.

NEVER aggregate across all historical rows without filtering to current records first - doing so double-counts entities that changed state.

## Issue Resolution Metrics

Include ONLY closed issues in resolution time calculations - open issues have no close timestamp.

NEVER substitute `current_date` for a missing close timestamp - this produces artificially inflated resolution times that corrupt the metric.

