Deep-dive into every subfolder · Naming conventions · File templates · When-to-create rules
These principles govern every folder and file decision. Sourced from Anthropic's context engineering guidance, OpenClaw conventions, ADR best practices, and our own hard-won lessons.
ls output should understand what a directory contains without opening any files. No abbreviations, no numbered prefixes (except ADRs), no jargon. knowledge/people/ beats 01-Knowledge-Base/CRM/.governance/frameworks/architecture-v2.html = 2 levels. Good. System_OS/plans/checkpoint-reviews/sweep-2026-04-09-073201.md = 3 levels. Borderline.governance/ or knowledge/.agents/*/SOUL.md always exists. projects/*/README.md always exists. No exceptions.YYYY-MM-DD-*. This sorts chronologically by default and makes cleanup trivial (find -mtime +30).archive/ with a date prefix. Git history is the backup, but archive/ is the human-readable record. The only exception: transient logs older than the rotation window.skills/. Memory in memory/. Convention-based, not config-based.decisions/ as numbered markdown files. Lightweight, version-controlled, greppable. MADR template: Status, Context, Decision, Consequences.governance/decisions/ explaining the changegovernance/. Update DECISIONS.md log.agents/shogun/skills/lessons.md, not in governance. Governance is for universal rules only.knowledge/staging/inbound/knowledge/staging/classified/ with metadata tagpeople/, org → orgs/, meeting → transcripts/source, date, tagsknowledge/ may be .gitignored if repo size is a concern (475MB). In that case, sync via rclone or Obsidian Sync. The world-model API is the primary access path regardless.mkdir agents/<name>/SOUL.md — identity, role, principles, constraints. Required.CLAUDE.md — workspace orientation, vault access rules, load order. Required.memory/ — daily logs will go here automaticallyskills/ if the agent has operational knowledgegovernance/ roster (if permanent agent, not a sub-agent)mkdir ops/mailbox/<name>/inbox/CLAUDE.md routing tableSOUL.md + CLAUDE.md in every agent dir. No exceptions. These two files ARE the agent.memory/YYYY-MM-DD.md for daily logs. MEMORY.md at agent root for curated long-term. memory/captures/ for task captures. memory/heartbeat-state.json for operational state.skills/ for operational knowledge. These are NOT OpenClaw SKILL.md skills (those live in ~/.openclaw/workspace/skills/). These are agent-specific reference docs.archive/.ops/mailbox/ for cross-agent communication.projects/projects/agents/<name>/projects/projects/. Better to be visible than buried.mkdir projects/<project-slug>/README.md from template (see Templates tab). Required.plan.md — execution plan, phases, timelinemkdir decisions/ artifacts/archive/projects/<slug>/ after 30 days.ops/scripts/mailbox_send.sh to auto-formatops/mailbox/<recipient>/inbox/ls ops/staging/from-pat/ and ops/staging/from-external/ops/staging/processed/ if needs further workops/logs/rotated/ops/ is permanent. Mailbox messages are consumed. Logs are rotated. Briefs are regenerated. Staging files move to their final home. If it needs to persist, it doesn't belong in ops/.Consistency makes the system navigable. These rules are non-negotiable.
| Type | Convention | Example | Notes |
|---|---|---|---|
| Directories | lowercase-kebab-case/ |
orcrist-capture/ |
No spaces, no underscores, no capitals. Exception: agent identity files (SOUL.md etc.) |
| Identity files | UPPERCASE.md |
SOUL.md, CLAUDE.md, README.md |
Convention from OpenClaw + GitHub. These are "read me first" files. |
| Governance files | UPPER_SNAKE_CASE.md |
SYSTEM_LESSONS.md |
Signals authority. These files have constitutional weight. |
| Daily logs | YYYY-MM-DD.md |
2026-04-11.md |
Sorts chronologically. One file per day per agent. |
| Transcripts | YYYY-MM-DD-slug.md |
2026-03-15-orcrist-weekly.md |
Date first for sorting. Slug for identification. |
| Briefs | type-brief-YYYY-MM-DD.html |
morning-brief-2026-04-11.html |
Type prefix for filtering. Date for sorting. |
| ADRs | NNNN-slug.md |
0001-vault-restructure.md |
MADR convention. Sequential numbering. Never renumber. |
| Mailbox messages | YYYYMMDD_HHMMSS_from_subject.md |
20260411_233500_shogun_vault-restructure.md |
Timestamp + sender + slug. Auto-generated by mailbox_send.sh. |
| People (CRM) | firstname-lastname.md |
serge-glushenko.md |
Lowercase kebab. One file per person. |
| Orgs | org-name.md |
deus-x-defense.md |
Lowercase kebab. Full name, not abbreviation. |
| Skills (agent) | topic.md |
lessons.md, protocol.md |
Lowercase, descriptive, no date prefix (these are evergreen). |
| Scripts | verb-noun.sh |
mailbox-send.sh, log-rotate.sh |
Action-oriented naming. Always executable. |
| Archive dirs | YYYY-MM-DD-description/ |
2026-04-10-cockpit-recon/ |
Date prefix required. Description of what was archived. |
source, date, tags, type (person|org|transcript|digest|reference)from, to, priority, timestamp, subject, status, typeCopy-paste these when creating new files. They enforce consistency.
# Project Name
**Owner:** [agent name]
**Participants:** [agent1, agent2]
**Status:** Active | On Hold | Complete
**Created:** YYYY-MM-DD
**Linear:** [link if tracked]
## Description
One paragraph: what this project does and why.
## Current Phase
What's happening now. Key milestones.
## Decisions
Link to decisions/ dir or inline key decisions.
## Links
- Slack channel: #channel
- Dashboard: [URL]
- Related projects: [links]
# NNNN — Decision Title
**Status:** Proposed | Accepted | Deprecated
**Date:** YYYY-MM-DD
**Author:** [agent or Pat]
## Context
What is the issue? Why does a decision need to be made?
## Decision
What was decided. Be specific.
## Consequences
What happens as a result. Both positive and negative.
## Alternatives Considered
What else was considered and why it was rejected.
# SOUL.md — [Agent Name]
**Agent:** [Name] | **Version:** 1.0
**Runtime:** [OpenClaw | Claude Code | Hermes]
## Identity
- **Name:** [Name]
- **Role:** [One-line description]
- **Commander:** Patrick R. Madden (Pat)
## Principles
1. [Principle 1]
2. [Principle 2]
3. [Principle 3]
## Constraints
- [What this agent cannot do]
- [Boundaries of authority]
## Workspace
- Own dir: agents/[name]/
- Read access: [list]
- Write access: [list]
# agents/[name]/ — [Role Description]
## Identity
This is **[Name]**'s workspace.
Load order: SOUL.md → skills/ as needed
**Commander:** Patrick R. Madden (Pat)
**Role:** [Role description]
## Vault Access
| Directory | Access | Purpose |
|-----------|--------|---------|
| governance/ | Read | Universal rules |
| knowledge/ | Read (via API) | Reference data |
| agents/[name]/ | Read-write | Own workspace |
| projects/ | Read-write | Cross-agent work |
| ops/ | [scope] | [purpose] |
## Key Files
| File | Purpose |
|------|---------|
| SOUL.md | Identity kernel |
| memory/ | Operational memory |
| skills/ | Operational knowledge |
---
type: person
source: [CRM | transcript | manual]
date: YYYY-MM-DD
tags: [tag1, tag2]
---
# Firstname Lastname
**Role:** [Title] at [Company]
**Relationship:** [How Pat knows them]
**Last Contact:** YYYY-MM-DD
## Context
Key information about this person.
## Notes
Running notes from interactions.
---
from: [sender-agent]
to: [recipient-agent]
priority: P0|P1|P2
timestamp: YYYY-MM-DDTHH:MM:SSZ
subject: [kebab-case-slug]
status: unread
type: request|acknowledgment|status|done
---
## [Subject]
[Body of message]
### Requested Action
[What you need the recipient to do]
### Deadline
[When, if applicable]