LifeOS USER Tree Structure and Personal Configuration Templates: A Complete Guide
The LifeOS USER tree is a private git repository at ~/.config/LIFEOS/USER that stores all personal data and configuration templates, safely isolated from the public system code and never overwritten during upgrades.
The danielmiessler/LifeOS repository separates system code from user data through a strict directory architecture. All personal state lives in the USER treeβa symlinked private repository that lets you customize identity, goals, assistant behavior, and skill configurations without touching public source files. This guide explains the canonical structure and how to leverage personal configuration templates effectively.
LifeOS USER Tree Structure Overview
The USER tree follows a deliberate scaffolding pattern with blank template files you populate after installation. As documented in README.md, the installer only adds new template files without overwriting your edits during upgradesγ/README.mdβ L117-L119γ.
LIFEOS/USER/
ββ ARCHITECTURE_SUMMARY.md # Auto-generated routing table
ββ CONFIG/
β ββ OPERATIONAL_RULES.md # Global policy for hooks, safety-gates
β ββ LIFEOS_CONFIG.toml # Runtime configuration (user-overridden)
β ββ CREDENTIALS/ # Private API keys (never shipped)
ββ PRINCIPAL/
β ββ PRINCIPAL_IDENTITY.md # Core identity (name, values, story)
β ββ WRITINGSTYLE.md # Personal voice for generative tasks
β ββ RHETORICALSTYLE.md
β ββ ... # Optional resume, pronunciations, etc.
ββ DIGITAL_ASSISTANT/
β ββ DA_IDENTITY.md # Assistant's persona
β ββ DA_MEMORY.md # Persistent memory for the assistant
ββ TELOS/
β ββ TELOS.md # Primary life-context (goals, beliefs)
β ββ PRINCIPAL_TELOS.md # Auto-generated derivative
β ββ MISSION.md
β ββ GOALS.md
β ββ CURRENT_STATE/ # Snapshots of present reality
β ββ IDEAL_STATE/ # Desired future state
ββ CUSTOMIZATIONS/
β ββ SKILLS/
β ββ WriteStory/ # Skill-specific config
β ββ ThreatModel/ # Private data for security modeling
β ββ LocalIntelligence/ # Personal news-source preferences
β ββ ... # One folder per installed skill
ββ WORK/
β ββ PROJECTS.md
β ββ ... # Project-specific artifacts
ββ FINANCES/
β ββ ACCOUNTS.md
β ββ TAXES.md
β ββ ... # Budget, investments
ββ ... # HEALTH, GEAR, etc.
Key USER Tree Directories Explained
TELOS/ β Your Life Operating System
The TELOS directory stores goals, beliefs, and state definitions. The TELOS.md file serves as the single source of truth for personal context. Skills reference this to align outputs with your values and priorities.
Template location: LifeOS/install/USER/TELOS/TELOS.md
PRINCIPAL/ β Identity and Voice Configuration
The PRINCIPAL directory contains your core identity and stylistic preferences. The WRITINGSTYLE.md template biases generative output across all skills that produce text.
Key templates:
PRINCIPAL_IDENTITY.mdβ Core identity (name, values, story)WRITINGSTYLE.mdβ Tone, vocabulary, structural preferencesRHETORICALSTYLE.mdβ Argumentation patterns
DIGITAL_ASSISTANT/ β AI Persona and Memory
The DIGITAL_ASSISTANT directory defines your AI assistant's behavior. DA_IDENTITY.md sets the persona, while DA_MEMORY.md persists context across sessions.
CUSTOMIZATIONS/SKILLS/ β Per-Skill Private Data
The CUSTOMIZATIONS/SKILLS directory contains one subdirectory per installed skill. Each skill reads its configuration from here, keeping private data separate from system code.
How to Use Personal Configuration Templates
Initial Installation and Scaffolding
When you run the LifeOS installer, it executes the ScaffoldUser tool to populate your private repository:
# During initial setup
./install.sh
# Or apply updates to add new templates (never overwrites existing files)
bun Tools/ScaffoldUser.ts --apply
The ScaffoldUser.ts tool adds only missing filesβyour existing customizations remain untouchedγ/LifeOS/Workflows/Update.mdβ L30-L31γ.
Editing Templates for Customization
Modify any template directly with your preferred editor. Changes take effect immediately for skills that read those files.
Example: Customizing writing style
vim ~/.claude/LIFEOS/USER/PRINCIPAL/WRITINGSTYLE.md
# Writing Style
- Tone: conversational, direct, occasionally humorous
- Vocabulary: precise technical terms explained in plain English
- Structure preference: problem-solution format with numbered steps
- Avoid: passive voice, filler words, corporate jargon
Skills like WriteStory and Remotion read this file to bias generated contentγ/skills/Remotion/Workflows/GeneratedContentVideo.mdβ L33-L34γ.
Applying Templates to Specific Skills
Skills declare their expected USER tree paths in their SKILL.md files. The ThreatModel skill, for example, expects data at LIFEOS/USER/SECURITY/THREATMODEL/γ/skills/ThreatModel/SKILL.mdβ L23-L24γ.
Creating a custom risk register:
mkdir -p ~/.claude/LIFEOS/USER/SECURITY/THREATMODEL
cat > ~/.claude/LIFEOS/USER/SECURITY/THREATMODEL/risk-register.json <<'EOF'
{
"infrastructure": {
"owner": "platform-team",
"impact": 4,
"likelihood": 3,
"mitigation": "automated patching, segmented networks"
},
"supply-chain": {
"owner": "security-team",
"impact": 5,
"likelihood": 2,
"mitigation": "signed artifacts, dependency scanning"
}
}
EOF
Running LifeOS run ThreatModel incorporates this data via RiskRegister.ts, which defaults to the USER tree locationγ/skills/ThreatModel/Tools/RiskRegister.tsβ L6-L7γγ/skills/ThreatModel/Tools/RiskRegister.tsβ L65-L66γ.
Programmatic Template Access
From TypeScript tools, read USER templates using standard filesystem operations:
import { readFileSync } from "fs";
import { join } from "path";
const USER_ROOT = join(process.env.HOME!, ".claude", "LIFEOS", "USER");
// Load personal writing style for generative tasks
const stylePath = join(USER_ROOT, "PRINCIPAL", "WRITINGSTYLE.md");
const writingStyle = readFileSync(stylePath, "utf-8");
// Extract structured preferences
const preferences = writingStyle
.split("\n")
.filter(line => line.startsWith("- "))
.map(line => line.slice(2).trim());
console.log("Active writing preferences:", preferences);
Safe Upgrades and Template Recovery
The upgrade mechanism guarantees configuration preservation. If you need to restore a default template, delete the file and rescaffold:
# Remove corrupted or unwanted customization
rm ~/.claude/LIFEOS/USER/PRINCIPAL/WRITINGSTYLE.md
# Restore default template (only affects missing files)
bun Tools/ScaffoldUser.ts --apply
Configuration Files Reference
| File | Purpose | Location in Source |
|---|---|---|
OPERATIONAL_RULES.md |
Safety-gate definitions for hook behavior | LifeOS/install/USER/CONFIG/OPERATIONAL_RULES.md |
LIFEOS_CONFIG.toml |
Runtime configuration overrides | LifeOS/install/USER/CONFIG/LIFEOS_CONFIG.toml |
TELOS.md |
Primary life context (goals, beliefs) | LifeOS/install/USER/TELOS/TELOS.md |
PRINCIPAL_IDENTITY.md |
Core identity for interview workflows | LifeOS/install/USER/PRINCIPAL/PRINCIPAL_IDENTITY.md |
DA_IDENTITY.md |
Assistant persona definition | LifeOS/install/USER/DIGITAL_ASSISTANT/DA_IDENTITY.md |
Summary
- USER tree location:
~/.config/LIFEOS/USER(symlinked atLIFEOS/USER) keeps personal data isolated from public system code. - Template editing: Modify markdown/yaml files in
PRINCIPAL/,TELOS/,CONFIG/, orCUSTOMIZATIONS/SKILLS/to personalize behavior. - Skill integration: Skills reference USER paths via their
SKILL.mddeclarations and load configurations at runtime. - Upgrade safety:
ScaffoldUser.tsonly adds missing templatesβexisting files are never overwritten.
Frequently Asked Questions
Where is my LifeOS USER directory physically stored?
Your USER directory lives at ~/.config/LIFEOS/USER as a private git repository. The LIFEOS/USER path in your working directory is a symlink to this location. This design ensures personal data never commits to the public LifeOS repository while remaining accessible to all system tools.
Will installing LifeOS updates overwrite my personal configurations?
No. The ScaffoldUser.ts tool explicitly checks for existing files and only adds missing templatesγ/README.mdβ L117-L119γ. Your edits to TELOS.md, WRITINGSTYLE.md, skill configurations, and all other USER tree files persist across upgrades indefinitely.
How do I add custom configuration for a new skill I installed?
Create a directory under LIFEOS/USER/CUSTOMIZATIONS/SKILLS/ matching the skill name. Add a config.yaml, PREFERENCES.md, or whatever the skill's SKILL.md documentation specifies. The skill will automatically detect and load your configuration on next execution.
Can multiple machines share the same LifeOS USER configuration?
Yes. Since the USER tree is a standard git repository at ~/.config/LIFEOS/USER, you can push to a private remote and clone it on other machines. Run bun Tools/ScaffoldUser.ts --apply on each new installation to ensure any newly added system templates are present without disrupting your synced customizations.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too β