OmelasAI — CLAUDE.md Base Template
This is the mandatory foundation for every CLAUDE.md across all OmelasAI containers and projects. Every container’s CLAUDE.md MUST include all rules from this base. Container-specific and project-specific details are added AFTER this foundation.
Source of truth:
OmelasAI/claude-skillsrepo →CLAUDE-BASE.mdLast updated: 2026-03-08
1. ABSOLUTE RULES — NEVER VIOLATE
These rules apply to every Claude Code instance in the OmelasAI organization. They are not suggestions. They are hard constraints.
1.1 Claude Net — FIRST CHOICE for Messaging
When anyone says “send a message to [person/container]”, use Claude Net FIRST. This is the primary communication channel between all OmelasAI containers and team members.
| Tool | Usage | Direct Send? |
|---|---|---|
claude_net_send(to, message) |
Send message to another container | YES — send directly |
claude_net_inbox(limit?, ack?) |
Check your inbox | N/A |
claude_net_machines() |
See who’s online | N/A |
Machines: chasclaude, infoclaude, seanclaude, jazclaude, managerclaude, laptopclaude, serclaude
Rules:
- Claude Net is internal inter-container coordination — it is safe to send directly, no draft needed
- If user says “message Sean” →
claude_net_send("seanclaude", "...") - If user says “tell Jaz” →
claude_net_send("jazclaude", "...") - If user says “notify all” → send to each container individually
- Check
claude_net_machines()if unsure who is online - Check
claude_net_inbox()periodically or when asked about messages
1.2 External Communications — DRAFT ONLY, NEVER SEND
- NEVER use
send_email— ALWAYS usedraft_email. No exceptions, no edge cases. - You do NOT send emails on behalf of anyone. You ONLY create drafts for the user to review and send manually.
- This applies to ALL external communication tools: email, Slack, webhooks, SMS, push notifications, API calls to messaging services.
- If a user says “send an email to X”, you interpret that as “draft an email to X”. Always draft. Never send.
- Exception: Claude Net (Section 1.1) is internal — direct sending is allowed and expected.
1.3 External Actions — Confirm Before Executing
Any action visible to people or systems outside this container requires explicit user confirmation:
- Emails: DRAFT only. Never send.
- GitHub PRs, issues, comments: Confirm before creating or posting.
- Webhooks, external API calls: Confirm before executing.
- Production deployments: Use
/deployskill which requires confirmation. Never deploy silently. - Anything irreversible: Ask first.
General rule: If it leaves this container and reaches a human or external service, it must be a draft or require explicit confirmation before execution.
1.4 Session Persistence — NEVER Exit Claude
- Claude Code runs inside a persistent tmux session. It stays alive 24/7.
- You NEVER exit Claude. Not at end of day. Not when switching projects. Not for any reason.
/end-sessionpauses project work (commits, pushes, writes handover). Claude stays running.- If the user disconnects (brownout, device switch), the session persists. They reconnect via mosh/ssh and resume.
- There is no “exit” or “quit” or “close” command. The session is always alive.
1.5 Servers — Do NOT Access Without Permission
- You do NOT SSH to any server unless the user explicitly asks.
- You do NOT modify files on any machine other than your own container.
- Even if a task seems obvious (“deploy to production”), confirm the target server before connecting.
- When working on a remote server, state what you’re doing: “I’m now connected to [server], running [command].”
1.6 Secrets and Credentials
- NEVER commit
.envfiles, API keys, passwords, or credentials to git. - NEVER log actual secret values in OPS-LOG.md — log THAT credentials changed and WHERE, not the values.
- NEVER display secrets in output unless the user explicitly asks.
- If you notice credentials in a staged file, warn immediately and unstage.
2. STANDARD PROJECT STRUCTURE
Every OmelasAI project MUST have these files. If they don’t exist, create them.
project-root/
├── CLAUDE.md # AI context — architecture, rules, deployment, key files
├── HANDOVER.md # Last session state — auto-generated by /end-session
├── CHANGELOG.md # Significant changes log
├── OPS-LOG.md # Operational incidents — append-only, never delete entries
├── docs/
│ ├── architecture.md # System design, components, data flow
│ └── deployment.md # How to deploy, server details, commands
└── .gitignore # Must exclude: .env, node_modules/, dist/, credentials
File Purposes
| File | Owner | Rule |
|---|---|---|
CLAUDE.md |
Human + Claude | Source of truth for the project. Read FIRST before any work. |
HANDOVER.md |
/end-session |
Overwritten each session. Current state, not a log. |
CHANGELOG.md |
Human + Claude | Append-only for significant changes. |
OPS-LOG.md |
/incident |
Append-only. NEVER delete entries. Operational incidents only. |
docs/ |
Human + Claude | Living documentation. Updated when architecture changes. |
OPS-LOG.md Format
## YYYY-MM-DD — Brief descriptive title
**Problem:** What went wrong or what needed to change
**Cause:** Root cause if known
**Fix:** Exactly what was done to resolve it
**Files changed:** List of files/configs/services affected
**Prevention:** How to avoid this in future, or "N/A"
3. STANDARD WORKFLOW
Starting Work
/start-session
This loads CLAUDE.md, HANDOVER.md, OPS-LOG.md, pulls latest, shows summary. Run it FIRST.
During Work
/commit — checkpoint (repeatable)
/push — send to GitHub
/incident — log operational issues
/deploy — deploy to production (with confirmation)
/branch — manage branches
Pausing Work
/end-session
This commits, pushes, writes HANDOVER.md, updates memory. Claude stays running.
Full Workflow
/start-session → work → /commit → /push → /end-session
When Picking Up Someone Else’s Project
1. cd to their project directory (or clone it)
2. /start-session — loads their handover, ops-log, CLAUDE.md
3. Work on the issue
4. /incident — if it was an operational problem
5. /end-session — leave your own handover for next person
4. ALL SKILLS (16 commands)
Session Lifecycle
| Skill | Purpose |
|---|---|
/start-session |
Load full project context at session start |
/end-session |
Pause work — commit, push, handover. Claude stays running. |
Git Workflow
| Skill | Purpose |
|---|---|
/status |
Quick project state overview |
/commit |
Smart commit with docs hint |
/push |
Push to remote with safety checks |
/pull |
Pull with conflict detection |
/branch |
Create, switch, list, delete branches |
Operations
| Skill | Purpose |
|---|---|
/incident |
Log operational incidents to OPS-LOG.md |
/deploy |
Deploy from CLAUDE.md instructions (with confirmation) |
Documentation
| Skill | Purpose |
|---|---|
/context |
Pull DocHub context bundle |
/sync-docs |
Sync repo docs/ to DocHub |
/dochub-add |
Add project to DocHub (all 3 tiers) |
/dochub-report |
Generate coverage report |
/dochub-fix |
Fix gaps found by report |
/deploy-dochub |
Deploy DocHub platform |
Setup
| Skill | Purpose |
|---|---|
/onboard-repo |
Onboard new project to OmelasAI org |
5. GIT RULES
- All code changes MUST be committed and pushed to GitHub.
- All documentation and markdown files live in the git repo alongside the code.
- Use
/commitand/pushskills for git operations. - NEVER force push (
--force,--force-with-lease) unless the user explicitly asks. - NEVER force push to main/master — refuse even if asked.
- NEVER skip hooks (
--no-verify) unless the user explicitly asks. - NEVER amend commits unless the user explicitly asks — always create new commits.
- Commit messages use imperative mood: “Add feature” not “Added feature”.
- End every commit with:
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6. DOCUMENTATION EXPECTATIONS
During Development
- When
/commitdetects significant changes (new endpoints, architecture changes, config changes), it hints about updating docs. - When
/end-sessionruns, it writes HANDOVER.md automatically. - When operational incidents occur, use
/incidentto log them immediately.
What Gets Documented
- Architecture decisions and why they were made
- Deployment procedures and server details
- Operational incidents (credential rotations, service outages, email bans, DNS changes)
- Integration points between projects
- Key technical constraints (“DOM-only rule”, “VITE_SAAS=1”, etc.)
Where Documentation Lives
- In the git repo (
CLAUDE.md,OPS-LOG.md,docs/) — travels with the code - In DocHub (https://docs.ipnoelp.com) — browsable, searchable, API-accessible
- In Claude memory (
~/.claude/projects/*/memory/) — persistent across sessions
DocHub Three-Tier System
- Tier 1: Visual HTML overviews for humans browsing
- Tier 2: Structured markdown for developers reading
- Tier 3: JSON manifests + API for Claude CLI integration
7. INTER-CONTAINER COLLABORATION
Claude Net — See Section 1.1 (Absolute Rule)
Claude Net is the primary communication tool between containers. Full reference in Section 1.1.
Quick reminder: claude_net_send(to, message) — send directly, no draft needed.
Handoff Protocol
When someone is unavailable and their project needs work:
- Connect to their container (or clone the repo)
- Run
/start-session— loads their handover and context - Fix the issue
- Run
/incidentif it was operational - Run
/end-session— leave handover for next person - Use
claude_net_sendto notify them what was done
GitHub
- Organization: OmelasAI (private repos)
- All containers authenticate via
ghCLI - Every project has a repo in the OmelasAI org
8. REDUCING UNNECESSARY QUESTIONS
- Batch questions — ask ONE question with all needed info, not five sequential prompts.
- Don’t ask permission for routine operations — git add, git commit, file reads, grep searches.
- Do ask for decisions — architecture choices, deployment targets, destructive operations.
- Read CLAUDE.md as the authority — if it says how to deploy, just do it (with confirmation per Section 1.2).
- Don’t re-ask what’s already documented — check CLAUDE.md, HANDOVER.md, OPS-LOG.md first.
9. HOW TO USE THIS BASE TEMPLATE
Every container’s CLAUDE.md should be structured as:
# {Container/Project Name}
## Who You Are
{Container identity, owner, IP, purpose}
## CRITICAL: Operational Boundaries
{Include ALL rules from CLAUDE-BASE.md Section 1}
{Add container-specific boundaries}
## Projects
{What projects this container works on}
## Servers
{What servers this container can access}
## Container-Specific Rules
{Any additional rules unique to this container}
## {Project-specific sections as needed}
The base rules (Sections 1-8 above) are mandatory inclusions. Container-specific details are added on top.
When updating this base template, propagate changes to ALL containers:
- chasclaude (
/home/dev/.claude/CLAUDE.md) - infoclaude (
/home/dev/.claude/CLAUDE.md) - seanclaude (
/home/dev/.claude/CLAUDE.md) - jazclaude (
/home/dev/.claude/CLAUDE.md) - managerclaude (
/home/dev/.claude/CLAUDE.md)
This base template is maintained in OmelasAI/claude-skills → CLAUDE-BASE.md and should be the single source of truth for all mandatory Claude Code behavior across the organization.