mph-voice-refresh
Mine Claude Code chat transcripts for Michael Hanko's actual phrasing patterns and refresh the VOICE.md corpus.
Skill by mphinance
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/mphinance-mph-voice-refresh
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/mph-voice-refresh
What's inside
- Skill name
mph-voice-refresh- Description
- Mine Claude Code chat transcripts for Michael Hanko's actual phrasing patterns and refresh the VOICE.md corpus. Triggers on "refresh my voice", "update VOICE.md", "mine my chats for voice", "what does my voice sound like lately", "refresh voice corpus", or when mph-substack-writer output has started sounding stale/repetitive.
- License
- MIT
- Instructions
- 58 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (4)
- SKILL.md
- VOICE.md
- mine_feed.py · scripts/
- mine_voice.py · scripts/
SKILL.md (first lines)
# MPH Voice Refresh
Keeps the [VOICE.md](VOICE.md) corpus alive. Without this, the writer keeps reusing the same "Michael impersonations" until they sound canned.
## When to invoke
- User asks to refresh / update / mine the voice corpus
- User says drafts are "sounding the same" or "you keep using that phrase"
- It's been more than ~3 weeks since last refresh (check the date at the bottom of VOICE.md)
## Two sources, two miners
| Source | Script | What it captures |
|---|---|---|
| Chat transcripts (`~/.claude/projects/*/*.jsonl`) | `scripts/mine_voice.py` | Unfiltered, conversational — tics like `..`, `lol`, `or whatever`, `Ugh.`, mid-sentence self-corrections. The way Michael actually types. |
| Substack RSS feed (`mphinance.substack.com/feed`) | `scripts/mine_feed.py` | Polished, published — paired openers, contradiction-filter constructions, punchy closers. The way Michael writes for readers. |
Both write to the **same VOICE.md**, but into separate sections. Don't mix them — chat voice has tics that don't belong in a Substack draft, and published voice has constructions that would sound forced in chat.
## Flow
1. **Read current state.** Read [VOICE.md](VOICE.md) so you know what's already in the corpus and what's already retired.
2. **Run the relevant miner.**
- For chat voice refresh (most common — run every few weeks):
```
python skills/mph-voice-refresh/scripts/mine_voice.py --days 30
```
- For published voice refresh (run after Michael ships a new Substack post):
```
python skills/mph-voice-refresh/scripts/mine_feed.py --limit 8
```
- Run both back-to-back if it's been a while.
3. **Review with Michael.** Show the candidate lists. Do NOT auto-apply. Ask which additions to keep and which retirements to confirm. Voice is subjective; the miner is a candidate generator, not the authority.
4. **Apply approved changes.** Append confirmed additions to the appropriate section of VOICE.md:
- Chat candidates → "Idioms & tics" / "Sentence rhythms" / "Long-form examples"
- Feed openers/closers → "Published voice — Substack patterns"
- Confirmed Claude repeats → `RETIRED`
- Update the "Last refreshed" date at the bottom.
5. **No commits.** Leave the file dirty. Michael decides when/if to commit changes to the alpha-skills repo.
## What counts as "voice-worthy"
The miner looks for plain-string user messages (not tool results, not system reminders) that contain at least one informal marker: multi-dot punctuation (`..` / `....`), `lol`, `lmao`, `tbh`, `ngl`, `or whatever`, `kinda`, `sorta`, `I mean`, `I guess`, `wait`, `actually`, `yeah`, `damn`, `bullsh*t`, etc. It also requires length between 10 and 400 chars so we skip both one-word prompts and pasted essays.
## What counts as "stale"
Any 5-word phrase that appears in 3+ separate session transcripts (counted from assistant messages). The miner is intentionally aggressive here — better to surface a false positive Michael can ignore than miss a real tic. The user has explicitly said: "you end up reusing the same 'quotes' or whatever all the time" — this is what we're hunting.
## Hard rules
- **Never auto-apply.** Always present candidates for review.
- **Never delete the RETIRED section.** It's a permanent ban list.
- **Don't mine SSH-session transcripts** (project paths starting with `ssh-`). Those are remote work, often not in Michael's voice.From mphinance/alpha-skills, MIT.
More from mphinance/alpha-skills
- 0.650score
mph-pine
mphinance
Build TradingView Pine Script v6 indicators in Michael's house style.
SkillAFreshness: A★ 29Claude Code +9 - 0.615score
coil-scan
mphinance
Daily scanner that finds stocks sitting in the "bottom of the coil" using a dual-timeframe Williams %R Trend Exhaustion indicator, then flags the ones that…
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
breakout-trade-planner
mphinance
Generate Minervini-style breakout trade plans from VCP screener output with worst-case risk calculation, portfolio heat management, and Alpaca-compatible…
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
edge-candidate-agent
mphinance
Generate and prioritize US equity long-side edge research tickets from EOD observations, then export pipeline-ready candidate specs for…
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
edge-strategy-reviewer
mphinance
Critically review strategy drafts from edge-strategy-designer for edge plausibility, overfitting risk, sample size adequacy, and execution realism.
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
dividend-growth-pullback-screener
mphinance
Use this skill to find high-quality dividend growth stocks (12%+ annual dividend growth, 1.5%+ yield) that are experiencing temporary pullbacks, identified by…
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
economic-calendar-fetcher
mphinance
Fetch upcoming economic events and data releases using FMP API.
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
broker-mcp-selector
mphinance
Pick a broker MCP server your AI agent can actually execute trades through, and wire it up safely.
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
earnings-trade-analyzer
mphinance
Analyze recent post-earnings stocks using a 5-factor scoring system (Gap Size, Pre-Earnings Trend, Volume Trend, MA200 Position, MA50 Position).
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
edge-pipeline-orchestrator
mphinance
Orchestrate the full edge research pipeline from candidate detection through strategy design, review, revision, and export.
SkillBFreshness: B★ 29Claude Code +9 - 0.612score
downtrend-duration-analyzer
mphinance
Analyze historical downtrend durations and generate interactive HTML histograms showing typical correction lengths by sector and market cap.
SkillBFreshness: B★ 29Claude Code +9 - 0.612score
edge-concept-synthesizer
mphinance
Abstract detector tickets and hints into reusable edge concepts with thesis, invalidation signals, and strategy playbooks before strategy design/export.
SkillBFreshness: B★ 29Claude Code +9
Signals
- Stars
- 29
- Forks
- 6
- Open issues
- 0
- Last commit (this folder)
- Jun 16, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/mphinance/alpha-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from mphinance
- 0.650score
mph-pine
mphinance
Build TradingView Pine Script v6 indicators in Michael's house style.
SkillAFreshness: A★ 29Claude Code +9 - 0.615score
broker-mcp-selector
mphinance
Pick a broker MCP server your AI agent can actually execute trades through, and wire it up safely.
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
breakout-trade-planner
mphinance
Generate Minervini-style breakout trade plans from VCP screener output with worst-case risk calculation, portfolio heat management, and Alpaca-compatible…
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
earnings-trade-analyzer
mphinance
Analyze recent post-earnings stocks using a 5-factor scoring system (Gap Size, Pre-Earnings Trend, Volume Trend, MA200 Position, MA50 Position).
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
coil-scan
mphinance
Daily scanner that finds stocks sitting in the "bottom of the coil" using a dual-timeframe Williams %R Trend Exhaustion indicator, then flags the ones that…
SkillBFreshness: B★ 29Claude Code +9 - 0.615score
dividend-growth-pullback-screener
mphinance
Use this skill to find high-quality dividend growth stocks (12%+ annual dividend growth, 1.5%+ yield) that are experiencing temporary pullbacks, identified by…
SkillBFreshness: B★ 29Claude Code +9
Cite this page
mph-voice-refresh skill. Agent Mart. https://agentmart.dev/skills/mphinance-mph-voice-refresh (last updated 2026-10-24)