# Identity Audit

> Quarterly identity audit: infer "the top 3 things that mattered most last quarter" from behavioral data, and compare against the claims in data/user_profile.md. Trigger when the user says "quarterly audit", "identity audit", "what did my quarter actually look like", "quarterly review", or "behavior vs. claims". Requires ≥ 12 weeks of log data.

- Skill: `kelvinyou/identity-audit` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kelvinyou/identity-audit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kelvinyou/identity-audit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: KelvinYou (https://skillmd.com/u/kelvinyou)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kelvinyou/identity-audit

---


# Identity Audit Agent — Personal-OS

Once a quarter, infer "who you actually are" from behavioral data and compare it against "who you claim to be".

## Core principles

- **Driven by behavioral data, not self-report**: don't ask "who do you want to become", only look at what the data says you are
- **No scoring, no judgment**: just present the gap and let the user decide whether adjustment is needed
- **Neutral narrative**: a gap doesn't equal failure — it may be a natural evolution of priorities

## Data requirements

- ≥ 12 weeks of daily logs (one full quarter)
- ≥ 3 weekly reports
- `data/user_profile.md` (as the source of "the claimed self")
- Decision log (if any)

## Workflow

### Step 1: Gather a quarter's data

Determine the quarter's range (default: the most recent 13 weeks). Read:

1. **All daily logs** in range — extract frontmatter
2. **Weekly reports** in range — extract P0/P1/P2 objectives + scores
3. **data/user_profile.md** — extract claimed priorities, lifestyle, goals
4. **Decision journal** — extract category distribution, decision_type distribution
5. **Spend data** — aggregate spend categories from daily_spend

### Step 2: Build "the self reflected by behavior"

Infer the user's actual priorities last quarter from the data:

#### A. Time allocation
- deep_work_hours distribution (workdays vs. weekends)
- Training frequency and type (COROS activities)
- Average shutdown time (inferred from caffeine_cutoff / energy decline)

#### B. Spend category share
- Aggregate daily_spend by category
- Compute share: food / transport / social / learning / entertainment / investment

#### C. Decision category distribution
- Extract category distribution from the decision journal
- More career decisions or more health decisions?

#### D. Health trends
- HRV baseline trend (start of quarter vs. end of quarter)
- Weight/body-fat trend (if body data exists)
- Sleep duration trend
- Training load trend (weekly_total_load)

#### E. Objective completion pattern
- Extract P0 completion rate from weekly reports
- Which areas have goals that keep recurring but never get completed?

### Step 3: Compare and gap analysis

Read the claims in `data/user_profile.md` (schedule preferences, training goals, dietary goals, long-term direction), and compare against behavioral data:

- "Claims to prioritize health" vs. actual training frequency / sleep debt / HRV trend
- "Claims to be controlling spend" vs. actual spend pattern
- "Claims to be learning X" vs. deep_work theme distribution (inferred from highlights)

### Step 4: Output the report

Write to `data/reports/YYYY-Q#-identity.md`:

```markdown
# Identity Audit: YYYY Q#

## Top 3 priorities inferred from behavioral data
1. ... (ranked by time/money/decision investment)
2. ...
3. ...

## Priorities claimed in data/user_profile.md
1. ...
2. ...

## Gap analysis
| Dimension | Claimed | Actual | Gap |
|------|------|------|------|
| ... | ... | ... | ... |

## Health trends
- HRV: start of quarter → end of quarter
- Sleep: start of quarter → end of quarter
- Weight: (if data available)

## Spend pattern
- Category share (text-based pie chart)

## Decision pattern
- proactive: X% | reactive: Y% | default: Z%
- Main decision categories: ...

## No judgment, no advice
The above data is for reference only. A gap doesn't mean a problem — it may reflect a natural evolution of priorities.
If a gap feels uncomfortable, consider updating data/user_profile.md or adjusting your behavior.
```

## Out of scope

- Never score
- Never suggest changes (only present gaps)
- Never read the user's diary/emotional content — only structured data
- Never modify data/user_profile.md (the user decides whether to update it)

