Use
friskme # last 30 days, every agent found; asks before any model call
friskme --agent codex # only Codex sessions
friskme --agent claude,pi # only Claude Code and Pi sessions
friskme --analyzer codex # label with codex exec instead of claude -p
friskme --analyzer pi --model claude-haiku-5-5 # label with pi -p
friskme --yes --since 2w # no prompt, last two weeks
friskme --project my-repo # only sessions whose project path contains "my-repo"
friskme --no-llm # deterministic sections only, nothing sent anywhere
friskme --json > report.json # machine-readable; the summary goes to stderr
Other options:
--agent claude,codex,pi: which agents to read (default: every agent whose session folder exists)--analyzer claude|codex|pi: which CLI names intents (default:claudeif logged in, elsecodex;pionly when asked)--max-sessions <n>--model <name>: the analyzer’s model (defaulthaikuforclaude; Codex’s own default forcodex; pi’s default model forpi, which acceptsprovider/idand a:<thinking>suffix)--out <dir>(default./frisk-report)--no-sensitive: skip the secrets and personal-data scan--pii-model,--pii-model-scope prompts|all: see Sensitive data--reveal: show secrets and personal data unmasked in the report (see below)friskme cache clearfriskme models list|download|remove
While it runs, friskme keeps one live status line on stderr: what it is doing now, progress counts and time spent in that step. The line animates only in an interactive terminal. When stderr is piped, under CI, or with TERM=dumb, friskme prints only its plain log lines.
Output:
frisk-report/report.html: one self-contained page, with no external assets.frisk-report/report.json: the same data.frisk-report/skills/<intent>/SKILL.md: draft skills. friskme never installs them. Read one, edit it, then copy it to~/.claude/skills/<name>/SKILL.md(Claude Code)~/.codex/skills/<name>/SKILL.md(Codex) or~/.pi/agent/skills/<name>/SKILL.md(Pi) if you want it.