Claude-code-minoan user-model-builder
Build complete userModels for people Claudicle collaborates with. Creates core persona files, social dossiers with voice analysis, content archives, and INDEX registration. Use when asked to create a user model, build a persona, or document someone's voice and identity.
git clone https://github.com/tdimino/claude-code-minoan
T=$(mktemp -d) && git clone --depth=1 https://github.com/tdimino/claude-code-minoan "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/core-development/user-model-builder" ~/.claude/skills/tdimino-claude-code-minoan-user-model-builder && rm -rf "$T"
skills/core-development/user-model-builder/SKILL.mdUser Model Builder
Build a complete userModel for $ARGUMENTS following the 7-phase workflow below. Each phase must complete before moving to the next. The output is a folder at
~/.claude/userModels/{name}/ containing a core persona, platform-specific dossiers, a content archive, and INDEX registration.
Phase 1: Discovery
Gather available information about the subject before creating any files.
Determine:
- Relationship to the user (collaborator, partner, observed figure)
- Publishing platforms (Substack, Twitter, blog, LinkedIn)
- Scrapeable content availability — dead domains require Wayback Machine CDX API
- Basic identity: full name, email (
if unknown), phone (~
if unknown), location, primary roles~
Ask clarifying questions if the relationship or scope is ambiguous. Proceed autonomously once direction is clear.
Phase 2: Folder & Core Persona
Create the userModel directory and core persona file.
- Create
~/.claude/userModels/{name}/ - Write
following{name}Model.mdreferences/persona-model-template.md - Frontmatter per
—references/frontmatter-schema.md
,type: user-modelcategory: persona - Required sections: Persona, Education (if known), Career Timeline, Worldview, Writing Voice (brief), Personal, Online Presence
- Adapt to subject — omit sections that don't apply, add domain-specific sections as needed
Phase 3: Content Scraping & Archive
Scrape all discoverable published content into
archive/.
Per platform:
| Platform | Tool | Archive path |
|---|---|---|
| Substack | Firecrawl | |
| Jina (Firecrawl blocks Twitter) | | |
| Dead domains | Wayback CDX API → Firecrawl | |
GDPR export via skill | |
Wayback discovery:
https://web.archive.org/cdx/search/cdx?url=DOMAIN&output=json&fl=timestamp,original&collapse=urlkey
Each archived file gets frontmatter:
--- title: "Post Title" date: YYYY-MM-DD source_url: "https://..." archived_from: "{platform}" archive_date: YYYY-MM-DD ---
Naming convention:
YYYY-MM-DD-slug.md (kebab-case slug from title).
Write
archive/INDEX.md — table of all files with dates, titles, approximate word counts.
Phase 4: Voice Analysis & Dossiers
Read the entire archived corpus before beginning analysis. Analyze each platform's content for voice, worldview, and biographical signals.
For each platform, create a social dossier following
references/social-dossier-template.md.
Frontmatter:
type: social-dossier, category: {platform}-analysis, include corpus field.
Required dossier sections:
- Source — URLs, scraping method, verification date
- Platform Profile — Handle, legal entity, tagline, cadence, engagement metrics
- Post/Content Index — Table: date, title, type, themes
- Voice Analysis — Registers, tonal range, sentence mechanics, characteristic phrases. Follow
references/voice-analysis-guide.md - Worldview Markers — Minimum 5 recurring themes with evidence
- Biographical Signals — Per-post table of facts revealed. Separate distinct events.
- Calibration Quotes — 10-15 verbatim quotes. Copy directly from archive files. Verify character-by-character: opening words, punctuation, emphasis, quote mark style. Never paraphrase.
Include a Voice Evolution section when the corpus spans 3+ years or crosses a major life transition.
Name dossiers descriptively:
{platform}-{publication-name}.md.
Phase 5: Cross-References & Registration
Wire everything together.
- Add a "Supplementary Dossiers" section to
listing all dossiers and archive{name}Model.md - Update
:~/.claude/userModels/INDEX.md- Add/update the subject's section with a Files table
- Add Data Collections subsection for archive directories
- Add Related links (Substack, LinkedIn, etc.)
Phase 6: Review
Launch a
code-reviewer subagent to audit all files against references/review-checklist.md.
Priority checks:
- Calibration quotes are verbatim (opening words, punctuation, quote style)
- Author bios are verbatim (not paraphrased)
- Biographical facts match source (names, dates, locations — distinct events not merged)
- Frontmatter schema compliance
- INDEX.md consistency with files on disk
- Cross-references resolve to real files
Fix all critical and moderate findings before declaring complete.
Automated validation:
uv run ~/.claude/skills/user-model-builder/scripts/validate_usermodel.py ~/.claude/userModels/{name}/
Phase 7: Summary
Report what was built:
- Files created (with paths)
- Corpus stats (post count, word count, date range)
- Key findings (voice registers, worldview themes, biographical discoveries)
- Suggested next steps (RLAMA collection, voice model for composition, etc.)
Reference Files
| File | Purpose |
|---|---|
| Core persona section skeleton |
| Social dossier section skeleton |
| YAML frontmatter spec for all file types |
| Open Souls voice analysis methodology |
| Post-build verification checklist |
| Structural + quote accuracy validation |