devpersona

Claude Code, Codex CLI and Gemini CLI keep a record of every session on your disk. devpersona reads that record through one shared adapter and builds a profile in three layers: usage numbers, a persona card that cites its evidence, and concrete suggestions. The scanner makes no network calls.

Agents read
Claude Code, Codex CLI, Gemini CLI
Selftest
15 fixtures
Network calls
none
Dependencies
none
Licence
MIT

Example output

This is abridged from a real run of node scripts/scan.mjs --md on the machine this site was built on. Project names are generalised. Every number is what the scanner printed. The scan made no network calls.

# Coding agent usage profile

Source: Claude Code, Codex CLI · 187 sessions scanned

## Totals

| Projects            | 53    |
| Sessions            | 187   |
| Human prompts       | 644   |
| Tool calls          | 15072 |
| Tool errors         | 609   |
| Permission denials  | 55    |

## Work rhythm

- Peak hours: 11:00 (95), 16:00 (82), 15:00 (80)
- Peak days: Monday (184), Friday (151), Tuesday (106)

## Projects (by prompt count)

| Project        | Agents             | Prompts | Languages             |
|----------------|--------------------|---------|-----------------------|
| aspnet-lob-app | claude-code        | 85      | C#, JavaScript, Razor |
| media-pipeline | claude-code, codex | 78      | Markdown, Python      |
| client-site    | codex              | 57      | HTML, CSS, JavaScript |

> This report was generated entirely locally; no data left this machine.

Projects are grouped by working directory, so a project worked on in two agents, like the pipeline above, appears once with the agents named and is never counted twice. The adapter layer is one file you can open, and --selftest runs the command classifier against 15 fixtures without reading your data.

Install

# once
> /plugin marketplace add halilneed/plugins

# the plugin
> /plugin install devpersona@hailneed

# and try it
> /devpersona:analyze

The marketplace id is hailneed, which is why the install line ends in @hailneed.

  • Claude Code and Node.js 18 or newer.
  • No dependencies, no build step, no API key, no account.
  • It also runs standalone: node scripts/scan.mjs --md gives you the numbers without the plugin.
  • The scan can be scoped: --agent codex limits it to one agent, --days 90 narrows the window and --lang tr switches the report to Turkish.

Commands

/devpersona:stats

The numeric usage profile: projects, sessions, prompts, tool calls, errors, permission denials and your peak hours. It prints numbers only, with no interpretation.

/devpersona:analyze

A persona card covering your stack, working style, communication style, strengths and risk patterns, written to ~/.claude/persona/persona.md. Every observation cites the evidence it came from: the numbers, the project memory files and a small prompt sample.

/devpersona:advise

Turns the card into concrete suggestions: agent skills worth authoring (drafts included), coding-habit fixes and architecture recommendations. Narrow it with skills, code or architecture. Each suggestion cites its evidence.

What it does and does not do

  • It makes no network calls. The scanner only reads files already on your disk, and scan.mjs contains no fetch and no sockets.
  • The default output has no raw chat text, only numbers, file names and session titles. Session titles are short AI-generated summaries of chat content, so read a report through before you share it.
  • Prompt samples are printed only on request. --prompts <project> prints them to your terminal and nowhere else.
  • Interpretation stays in your session. The persona card is written by the Claude Code session you already run, with no second model and no service in between.
  • The classifier can be tested: --selftest runs 15 fixtures without touching your history or the network, and prints the score.
  • MIT-licensed (LICENSE). No account, no signup, no telemetry.

Why it stays local

There is no devpersona Cloud, and none is planned. A profile built from your own chat history should not sit in someone else’s dashboard.

  • There are no network calls, and no code path that could phone home.
  • There is no telemetry and no account. Nobody learns that you ran it, including me.
  • The card is a file on your disk, ~/.claude/persona/persona.md. You can edit it, share it or delete it.

For new plugins and build notes by email, subscribe on the writing page.