agentic-os
Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory
By affaan-m · 2,864 installs
npx skills add affaan-m/ecc --skill agentic-os
Source repository · Upstream listing
Agentic OS
Treat Claude Code as a persistent runtime / operating system rather than a chat session. This skill codifies the architecture used by production agentic setups: a kernel config that routes tasks to specialist agents, persistent file based memory, scheduled automation, and a JSON/markdown data layer.
When to Activate
Building a multi agent workflow inside Claude Code
Setting up persistent Claude Code automation that survives session restarts
Creating a "personal OS" or "agentic OS" for recurring tasks
User says "agentic OS", "personal OS", "multi agent", "agent coordinator", "persistent agent"
Structuring long running projects where context must survive across sessions
Architecture Overview
The Agentic OS has four layers. Each layer is a directory in your project root.
Layer Responsibilities
Layer Purpose Persistence
Kernel ( CLAUDE.md ) Identity, routing, model policies, agent registry Git tracked
Agents ( agents/ ) Specialist identities with scoped tools and memory Git tracked
Commands ( .claude/commands/ ) User facing slash commands ( /daily sync , /outreach ) Git tracked
Scripts ( scripts/ ) Python/JS daemons triggered by cron or webhooks Git tracked
State ( data/ ) Append only logs, project state, decision records Git ignored or tracked
The Kernel
CLAUDE.md is the kernel. It acts as the COO / orchestrator. Claude reads it at session start and uses it to route work.
Kernel Structure
Key Principle
The kernel should be small and declarative . Routing logic lives in plain markdown tables, not code. This makes the system inspectable and editable without debugging.
Specialist Agents
Each agent is a standalone markdown file in agents/ . Claude loads the relevant agent file when routing a task.
Agent Definition Format
Multi Agent Collaboration Pattern
When a task spans multiple agents, the kernel runs them sequentially or in parallel:
For parallel execution, use Claude Code's background task capability or shell scripts that invoke Claude Code with specific agent contexts.
Commands and Daily Workflows
Slash commands are markdown files in .claude/commands/ . They define reusable workflows.
Command Structure
Standard Command Set
Command Purpose
/daily sync Morning briefing: status, blockers, priorities
/outreach Run outreach workflow (email, LinkedIn, etc.)
/research <topic Deep research with citation tracking
/apply jobs Tailor resume + cover letter for a target role
/analytics Pull metrics from Stripe, GitHub, or custom sources
/interview prep Generate flashcards or mock interview questions
/decision <topic Log a decision with pros/cons and chosen path
Activating Commands
Place command files in .claude/commands/<command name .md . Claude Code auto discovers them. Users invoke them with /<command name .
Persistent Memory
Memory is file based. No vector DB, no Redis, no PostgreSQL. JSON and markdown files in data/ are the database.
Memory Directory Structure
Daily Log Format
Auto Reflection Pattern
At the end of each session, the kernel appends a reflection:
This creates a feedback loop that improves the system over time without code changes.
Scheduled Automation
Agentic OS tasks run on a schedule using external cron, not Claude Code's built in cron (which dies when the session ends).
macOS: LaunchAgent
Linux: systemd Timer
Cross Platform: pm2
Data Layer
The data layer is your filesystem. Use JSON for structured data and markdown for narrative content.
JSON for Structured State
Markdown for Narrative
Use markdown for anything a human reads: decisions, logs, research notes, contact records.
Schema Evolution
Never rename existing fields. Add new fields and mark old ones deprecated:
This keeps historical data readable without migration scripts.
Anti Patterns
Monolithic Single Agent
Split into specialist agents. The kernel handles routing.
Stateless Sessions
Always read data/ at session start and write back at session end.
Hardcoded Credentials
Use environment variables or a .env file loaded by scripts. Agents reference process.env.API KEY .
External Database for Simple State
Use JSON/markdown files until you have multiple concurrent users or GBs of data.
Over Engineered Routing
Keep routing declarative in CLAUDE.md markdown tables. It is inspectable, editable, and debuggable.
Best Practices
[ ] CLAUDE.md is under 200 lines and fits in context window
[ ] Each agent file is under 100 lines and focused on one domain
[ ] data/ is git ignored for sensitive logs, git tracked for decisions and specs
[ ] Commands use imperative names: /daily sync , not /run daily sync
[ ] Logs are append only; never edit past daily logs
[ ] Every agent has a Memory Scope section defining what files it reads
[ ] Reflections are written at the end of every session
[ ] Scheduled tasks use external cron (LaunchAgent, systemd, pm2), not Claude Code's session cron
[ ] Cost tracking: log API spend per session in data/logs/<date costs.json
[ ] One project = one Agentic OS. Do not share a single CLAUDE.md across unrelated projects.