User model builder
Skill tdimino/claude-code-minoan/skills/core-development/user-model-builder
A curated ~/.claude/ configuration for professional development workflows — 90+ skills, 46 hooks, and CLI tools
npx -y skills add tdimino/claude-code-minoan --skill user-model-builderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
5.7 KB, as published. Nobody here has run it
User 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
{name}Model.mdfollowingreferences/persona-model-template.md - Frontmatter per
references/frontmatter-schema.md—type: user-model,category: 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 | archive/substack/YYYY-MM-DD-slug.md |
| Jina (Firecrawl blocks Twitter) | archive/tweets/ | |
| Dead domains | Wayback CDX API → Firecrawl | archive/{platform}/ |
GDPR export via linkedin-export skill | archive/linkedin/ |
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
{name}Model.mdlisting all dossiers and archive - 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 |
|---|---|
references/persona-model-template.md | Core persona section skeleton |
references/social-dossier-template.md | Social dossier section skeleton |
references/frontmatter-schema.md | YAML frontmatter spec for all file types |
references/voice-analysis-guide.md | Open Souls voice analysis methodology |
references/review-checklist.md | Post-build verification checklist |
scripts/validate_usermodel.py | Structural + quote accuracy validation |