# Skill: Build a personal AI OS -- persistent memory, specialist agents, and scheduled tasks from plain files > Use this skill when recurring work (daily briefings, multi-project context, repeated role-switching) makes a single amnesiac chat session inefficient -- build a file-based "office" that survives restarts. Source: sodigi-learn -- vibecoding/lichnaya-ii-os - https://sodigi.io/learn/vibecoding/lichnaya-ii-os ## When to use - You re-explain your project context to the AI every session and are tired of it. - You have repeated daily or weekly tasks (briefings, status checks, inbox triage) that should run automatically. - You need multiple specialists (developer, copywriter, researcher) and want clear role separation. - You want the AI to accumulate knowledge over time rather than starting blank each morning. ## Core rules - Memory lives in files on disk (markdown + JSON), never only in the chat. The model re-reads files each session; it retains nothing in its "head." - The whole system is four folders: core (CLAUDE.md), agents/ (staff personas), .claude/commands/ (slash commands), data/ (memory). - Keep CLAUDE.md under 200 lines so it fits into context cleanly at every session start. - One agent, one job -- a developer agent and a copywriter agent are separate files; one jack-of-all-trades agent gets confused. - Scheduled tasks require an EXTERNAL scheduler (cron, systemd, LaunchAgent, pm2). The built-in session timer dies when the window closes. - Logs are append-only -- never rewrite yesterday's log; only add today's entry. - Secrets (API keys, passwords) never go into agent files -- use environment variables exclusively. - At the end of every session, append a short log entry: what was done, what is left. ## Procedure 1. Create CLAUDE.md as the director persona: who it is, a table of specialist roles (name / scope / trigger verbs). 2. Create agents/ with one text file per specialist: their persona, which data/ files to read at startup, what they are not allowed to do. 3. Create .claude/commands/ with slash commands for recurring tasks (e.g., /daily-sync). 4. Create data/ with subfolders: daily-logs/, projects/, decisions/, inbox/. 5. Write a project context file in data/projects/ so the AI never needs re-orientation. 6. Wire /daily-sync: read latest log, check status, read inbox/, write morning summary to daily-logs/. 7. Schedule /daily-sync via the OS external scheduler -- not via a session-level timer. 8. At session end, have the agent append a log entry automatically. ## Ready-to-use prompt ``` Set up the seed of my personal AI OS in this project. Do it step by step: 1. Create CLAUDE.md -- describe: you are the director, you hand out tasks. Add a table of three roles: developer, copywriter, researcher -- and when to call each. 2. Create a data/ folder with subfolders daily-logs/, projects/, decisions/, inbox/. In data/projects/, put a short description of my project so I never have to explain it again. 3. Create a daily-sync command in .claude/commands/. It should: read the latest log, check project status, read inbox/, write a morning summary to daily-logs/. 4. Keep memory in files only. Do NOT write passwords or keys into any files -- use environment variables. At the end of the session, append a short log: what was done and what is left. Show me the folder structure when you are done. ``` ## Pitfalls - Keeping memory only in the chat -- after a restart it is gone; everything important belongs in data/. - Making one mega-agent for everything -- it gets confused; split into specialist files. - Bloating CLAUDE.md past 200 lines -- the context fills before any real work starts. - Using the built-in session timer for scheduling -- it dies when the window closes; use an external scheduler. - Writing API keys or passwords directly into agent files -- one leaked file exposes everything. - Skipping the log-append step -- without it the system never grows and forgets everything again. - Dragging in a database for a handful of notes -- markdown and JSON are sufficient for a single user.