ver0.5
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
---
|
||||
type: reference
|
||||
status: active
|
||||
created: 2026-06-02
|
||||
updated: 2026-06-07
|
||||
tags: [agent, bootstrap, system]
|
||||
agent_written: true
|
||||
source_notes: []
|
||||
---
|
||||
|
||||
# BOOTSTRAP.md
|
||||
|
||||
## Purpose
|
||||
This is the **first file any agent reads** when operating against this vault. It does two things:
|
||||
|
||||
1. **Checks** that the required files and folders exist.
|
||||
2. **Generates** anything that is missing, using the templates and conventions below.
|
||||
|
||||
Day-to-day operating procedure is **not** defined here — it is owned by the echo-memory skill (see section 3). Run the bootstrap preflight at the start of a session, then follow the skill. The check is cheap, idempotent, and safe to repeat.
|
||||
|
||||
---
|
||||
|
||||
## 1. Preflight Check
|
||||
|
||||
Verify the following exist. Treat each as `[ ]` until confirmed, then `[x]`. If a path is missing, jump to the matching entry in section 2 (Repair) before continuing.
|
||||
|
||||
### Root control docs
|
||||
- [ ] `CLAUDE.md` — operating contract and session protocol
|
||||
- [ ] `BOOTSTRAP.md` — this file
|
||||
- [ ] `STRUCTURE.md` — layout, taxonomy, frontmatter standard
|
||||
- [ ] `index.md` — navigation hub
|
||||
- [ ] `README.md` — human-facing overview
|
||||
- [ ] `.env.example` — config template for REST/API clients
|
||||
|
||||
### Required folders
|
||||
- [ ] `inbox/` (with `captures/`, `imports/`, `processing-log/`)
|
||||
- [ ] `journal/` (with `daily/`, `weekly/`, `monthly/`, `templates/`)
|
||||
- [ ] `projects/` (with `active/`, `incubating/`, `on-hold/`, `archived/`)
|
||||
- [ ] `areas/` (with `business/`, `personal/`, `learning/`, `systems/`)
|
||||
- [ ] `resources/` (with `concepts/`, `references/`, `people/`, `meetings/`, `source-material/`)
|
||||
- [ ] `decisions/` (with `by-date/`; `by-project/` is **deprecated** — see note below)
|
||||
- [ ] `reviews/` (with `weekly/`, `monthly/`, `quarterly/`, `annual/`)
|
||||
- [ ] `archive/` (with `notes/`, `projects/`, `imports/`)
|
||||
- [ ] `_agent/` (see agent subtree below)
|
||||
|
||||
> **`decisions/by-project/` is deprecated** (0.4.0). Decision notes go in `decisions/by-date/YYYY-MM-DD-<slug>.md`; if a decision belongs to an active project, mirror it as a `[[wikilink]]` under that project's `## Key Decisions` heading rather than creating a topical by-project file.
|
||||
|
||||
### Required `_agent/` subtree
|
||||
- [ ] `_agent/context/` — active context bundles
|
||||
- [ ] `_agent/memory/working/` — short-lived working memory
|
||||
- [ ] `_agent/memory/episodic/` — event/session-derived memory
|
||||
- [ ] `_agent/memory/semantic/` — durable facts, patterns, preferences
|
||||
- [ ] `_agent/sessions/` — session logs
|
||||
- [ ] `_agent/templates/` — note templates
|
||||
- [ ] `_agent/heartbeat/` — liveness / scheduled-run markers
|
||||
- [ ] `_agent/skills/` (with `active/`, `archived/`)
|
||||
- [ ] `_agent/outputs/` (with `briefs/`, `drafts/`, `summaries/`, `synthesis/`)
|
||||
|
||||
### Required templates
|
||||
- [ ] `_agent/templates/session-log-template.md`
|
||||
- [ ] `_agent/templates/context-bundle-template.md`
|
||||
- [ ] `_agent/templates/working-memory-template.md`
|
||||
- [ ] `_agent/templates/semantic-memory-template.md`
|
||||
- [ ] `journal/templates/daily-note-template.md`
|
||||
- [ ] `journal/templates/weekly-review-template.md`
|
||||
- [ ] `projects/project-template.md`
|
||||
- [ ] `decisions/decision-template.md`
|
||||
|
||||
### Anchor notes (recommended, not blocking)
|
||||
- [ ] `_agent/context/current-context.md`
|
||||
- [ ] `_agent/memory/semantic/operator-preferences.md`
|
||||
- [ ] today's daily note in `journal/daily/YYYY-MM-DD.md`
|
||||
|
||||
A quick way to list the tree for comparison:
|
||||
|
||||
```bash
|
||||
find . -type d | sort # folders
|
||||
find . -type f -name '*.md' | sort # notes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Repair (generate what's missing)
|
||||
|
||||
Only create what is missing. **Never overwrite an existing file** during bootstrap — that violates the additive-update principle in [[CLAUDE]]. If a file exists but looks malformed, flag it in the session log instead of replacing it.
|
||||
|
||||
### Missing folders
|
||||
Create the folder and add a one-line `README.md` inside any leaf folder that would otherwise be empty (Obsidian and git both ignore empty dirs):
|
||||
|
||||
```bash
|
||||
mkdir -p "<path>"
|
||||
```
|
||||
|
||||
### Missing root control docs
|
||||
- `STRUCTURE.md`, `README.md`, `.env.example` — if absent, note it and reconstruct from the conventions in this file and [[STRUCTURE]]. Do not invent secrets in `.env.example`; use placeholders only.
|
||||
- `index.md` — rebuild as a link hub pointing at the Start Here docs, active context, operator preferences, and the most recent daily note / session log.
|
||||
|
||||
### Missing templates
|
||||
Recreate from the canonical frontmatter (section 4). Each template is just frontmatter plus the section headings its note type uses.
|
||||
|
||||
### Missing anchor notes
|
||||
- `_agent/context/current-context.md` — create an empty context bundle (type `context-bundle`) scoped to the current task.
|
||||
- today's daily note — create from `journal/templates/daily-note-template.md`.
|
||||
- `operator-preferences.md` — only create if you have evidence to record; do not fabricate preferences.
|
||||
|
||||
### After repair
|
||||
Append a line to the daily note's **Agent Log** and write/refresh a session log in `_agent/sessions/` recording what was generated.
|
||||
|
||||
---
|
||||
|
||||
## 3. How to Operate (after preflight)
|
||||
|
||||
Day-to-day operating procedure is owned by the **echo-memory skill** (`SKILL.md`; canonical source `git.alwisp.com/jason/echo`), not this file. The skill defines: session loading order, search-first-before-write, Inbox Triage, Scope Switching, doc-map-before-first-PATCH, the resilient daily-note Agent Log procedure, idempotent appends, and the monthly Vault Health pass. **If this file and the skill ever disagree on procedure, the skill is authoritative.** BOOTSTRAP's job is limited to the structure preflight (section 1) and repair (section 2).
|
||||
|
||||
The durable reference below binds regardless of client:
|
||||
|
||||
### Memory model (where things live)
|
||||
- **Working** → `_agent/memory/working/` — transient, time-boxed.
|
||||
- **Episodic** → `_agent/memory/episodic/` — what happened, when.
|
||||
- **Semantic** → `_agent/memory/semantic/` — durable facts, patterns, preferences.
|
||||
- **Context bundles** → `_agent/context/` — task-focused reading lists and state.
|
||||
|
||||
### Safety rules (from [[CLAUDE]])
|
||||
- Do not fabricate facts, relationships, or prior decisions.
|
||||
- Do not mass-restructure the vault unless explicitly asked.
|
||||
- Do not delete notes unless deletion is explicitly requested and clearly safe.
|
||||
- Do not store secrets or API keys inside the vault.
|
||||
- Default to additive updates and explicit status changes.
|
||||
|
||||
---
|
||||
|
||||
## 4. Canonical Frontmatter
|
||||
|
||||
Every note carries this block. Fill what applies; leave the rest empty rather than guessing.
|
||||
|
||||
```yaml
|
||||
---
|
||||
type: # one of the note types in STRUCTURE.md
|
||||
status: # active | draft | done | archived
|
||||
created: # YYYY-MM-DD
|
||||
updated: # YYYY-MM-DD
|
||||
tags: []
|
||||
agent_written: false
|
||||
source_notes: [] # plain relative paths as strings — NEVER [[wikilinks]]
|
||||
---
|
||||
```
|
||||
|
||||
Agent-generated notes set `agent_written: true` and list their `source_notes`. This is the key signal that separates agent-managed content from human-authored content.
|
||||
|
||||
> **No `[[wikilinks]]` in frontmatter.** YAML interprets `[[...]]` as nested lists, so wiki
|
||||
> links in frontmatter break — they do not render as clickable links in Obsidian's reading
|
||||
> view. Put every cross-reference in a **`## Related`** section in the note **body** as a
|
||||
> bulleted list of `[[links]]`. Frontmatter holds scalar/string metadata only; `source_notes`
|
||||
> values are plain relative paths, not links. (The older `related:` frontmatter field has
|
||||
> been retired for this reason.)
|
||||
|
||||
---
|
||||
|
||||
## 5. REST / API Readiness
|
||||
|
||||
Future clients (Obsidian Local REST API, CoWork plugin) may operate without filesystem access. Keep the bootstrap contract portable: stable paths, parseable frontmatter, durable titles, and all state stored in notes rather than hidden conversation memory. Config for those clients lives in a local `.env` derived from `.env.example` — never committed with real values.
|
||||
|
||||
---
|
||||
|
||||
_This file is the entry point. If you change folder conventions or required files, update both this manifest and [[STRUCTURE]] so they stay in sync._
|
||||
|
||||
## Related
|
||||
- [[CLAUDE]]
|
||||
- [[STRUCTURE]]
|
||||
- [[index]]
|
||||
@@ -0,0 +1,42 @@
|
||||
# CLAUDE.md
|
||||
|
||||
## Purpose
|
||||
This vault is a shared memory substrate for human work, Claude Code sessions, and future agent clients that access the vault through the Obsidian Local REST API or a CoWork plugin integration. The vault must remain readable by humans, writable by agents, and structured enough that tools can reliably navigate, synthesize, and update knowledge over time.
|
||||
|
||||
## Core Principles
|
||||
- Treat the vault as the system of record for long-term memory, not as a scratchpad.
|
||||
- Prefer Markdown, YAML frontmatter, wiki-links, and stable folder conventions over proprietary structures.
|
||||
- Write notes so both humans and agents can understand them without hidden context.
|
||||
- Preserve history instead of silently overwriting important decisions, summaries, or inferred preferences.
|
||||
- Keep agent-managed content clearly separated from human-authored content when possible.
|
||||
- Default to additive updates, explicit status changes, and traceable summaries.
|
||||
- Optimize for portability so the same vault can work with Claude Code, CoWork, MCP-compatible tools, REST API clients, and future agents.
|
||||
|
||||
## What This Agent Is
|
||||
You are an agent operating against an Obsidian vault that functions as an AI second brain. Your role is to read context, synthesize across notes, create structured outputs, update memory carefully, and leave durable traces of work in the vault rather than keeping important state inside the conversation only.
|
||||
|
||||
## Bootstrap (Start Here)
|
||||
Before anything else in a new session, read [[BOOTSTRAP]] (`BOOTSTRAP.md`) and run its structure preflight, repairing any missing files/folders. Never overwrite existing files during bootstrap — generate only what is missing.
|
||||
|
||||
## Operating Contract
|
||||
Day-to-day procedure is defined by the **echo-memory skill** (`SKILL.md`; canonical source `git.alwisp.com/jason/echo`), not by this file. The skill owns: session loading order, search-first-before-write, Inbox Triage, Scope Switching, doc-map-before-first-PATCH, idempotent appends, the resilient daily-note Agent Log procedure, and the monthly Vault Health pass. Run the [[BOOTSTRAP]] preflight first, then follow the skill. **If this file and the skill disagree on procedure, the skill is authoritative.** The principles, memory model, and safety rules in this file are durable and bind regardless of client.
|
||||
|
||||
## Memory Model
|
||||
- Working memory: `_agent/memory/working/`
|
||||
- Episodic memory: `_agent/memory/episodic/`
|
||||
- Semantic memory: `_agent/memory/semantic/`
|
||||
- Task-focused context bundles: `_agent/context/`
|
||||
|
||||
## REST/API Readiness
|
||||
Assume future clients may interact through the Obsidian Local REST API instead of direct filesystem access. Keep paths predictable, frontmatter parseable, titles stable, and state stored in notes rather than hidden memory.
|
||||
|
||||
## Safety
|
||||
- Do not fabricate facts, relationships, or prior decisions.
|
||||
- Do not mass-restructure the vault unless explicitly asked.
|
||||
- Do not delete notes unless deletion is explicitly requested and clearly safe.
|
||||
- Do not store secrets or API keys inside the vault.
|
||||
|
||||
## Related
|
||||
- [[BOOTSTRAP]]
|
||||
- [[STRUCTURE]]
|
||||
- [[index]]
|
||||
@@ -0,0 +1,17 @@
|
||||
# ECHO Memory Vault
|
||||
|
||||
ECHO is an Obsidian-based memory vault serving as the persistent second brain for Jason Stedwell — operator and architect. It is designed for Claude/CoWork sessions, Claude Code, and any client speaking the Obsidian Local REST API.
|
||||
|
||||
## Included
|
||||
- Root control docs: `CLAUDE.md`, `STRUCTURE.md`, `BOOTSTRAP.md`
|
||||
- Core knowledge folders (inbox, journal, projects, areas, resources, decisions, reviews, archive)
|
||||
- Agent memory and session folders (`_agent/`)
|
||||
- Canonical templates and seed anchor notes
|
||||
- `index.md` navigation hub
|
||||
- `.env.example` for REST client config
|
||||
|
||||
## Operating logic
|
||||
Day-to-day procedure is owned by the **echo-memory skill** (canonical source `git.alwisp.com/jason/echo`), not the control docs in this vault. `CLAUDE.md` and `BOOTSTRAP.md` cover principles, structure, and safety; the skill is authoritative on procedure.
|
||||
|
||||
## Lineage
|
||||
ECHO is the successor to Jason's earlier obsidian-memory system and a sibling of the goldbrain vault built for Bryan Gilliom. Same conventions, different operator: in ECHO, "the operator" is Jason.
|
||||
@@ -0,0 +1,78 @@
|
||||
# STRUCTURE.md
|
||||
|
||||
## Purpose
|
||||
This document defines the vault layout, note taxonomy, naming conventions, and frontmatter templates for a memory storage vault designed for Claude Code today and future CoWork plugin access through the Obsidian Local REST API.
|
||||
|
||||
## Recommended Vault Layout
|
||||
|
||||
```text
|
||||
vault/
|
||||
├── CLAUDE.md
|
||||
├── STRUCTURE.md
|
||||
├── BOOTSTRAP.md
|
||||
├── index.md
|
||||
├── README.md
|
||||
├── inbox/
|
||||
├── journal/
|
||||
├── projects/
|
||||
├── areas/
|
||||
├── resources/
|
||||
├── decisions/
|
||||
├── reviews/
|
||||
├── _agent/
|
||||
└── archive/
|
||||
```
|
||||
|
||||
## Note Types
|
||||
- daily-note
|
||||
- weekly-note
|
||||
- monthly-note
|
||||
- project
|
||||
- project-update
|
||||
- area
|
||||
- concept
|
||||
- reference
|
||||
- person
|
||||
- meeting
|
||||
- decision
|
||||
- review
|
||||
- session-log
|
||||
- working-memory
|
||||
- episodic-memory
|
||||
- semantic-memory
|
||||
- context-bundle
|
||||
- skill
|
||||
- draft
|
||||
- inbox-item
|
||||
|
||||
## Project Lifecycle
|
||||
Project notes live in one of four subfolders by state, and `frontmatter.status` MUST match the folder:
|
||||
|
||||
- `projects/active/` — `status: active` (current work)
|
||||
- `projects/incubating/` — `status: incubating` (idea stage)
|
||||
- `projects/on-hold/` — `status: on-hold` (paused but kept)
|
||||
- `projects/archived/` — `status: archived` (done/abandoned)
|
||||
|
||||
Promotion between states = move the file **and** update `status`. Before creating a new project note, search all four subfolders for the slug (the echo-memory skill's mandatory search-first rule) — a duplicate in a non-active folder is the most common drift bug.
|
||||
|
||||
## Decisions
|
||||
Decision notes live in `decisions/by-date/YYYY-MM-DD-<slug>.md`. `decisions/by-project/` is **deprecated** — instead, mirror a project-relevant decision as a `[[wikilink]]` under that project's `## Key Decisions` heading.
|
||||
|
||||
## Core Frontmatter
|
||||
```yaml
|
||||
---
|
||||
type:
|
||||
status:
|
||||
created:
|
||||
updated:
|
||||
tags: []
|
||||
agent_written: false
|
||||
source_notes: [] # plain relative paths as strings — NEVER [[wikilinks]]
|
||||
---
|
||||
```
|
||||
|
||||
> **No `[[wikilinks]]` in frontmatter.** YAML parses `[[...]]` as nested lists, so wiki
|
||||
> links placed in frontmatter (e.g. an old `related:` field) silently break and do not
|
||||
> render as clickable links. All cross-references go in a **`## Related`** section in the
|
||||
> note **body**, as a bulleted list of `[[links]]`. Keep frontmatter to scalar/string
|
||||
> metadata only. `source_notes`, when used, holds plain relative path strings, not links.
|
||||
@@ -0,0 +1,3 @@
|
||||
Backup of ECHO vault root control docs as they existed before the 0.5.0 self-bootstrap migration (2026-06-07).
|
||||
These were deleted from the live vault; their logic now lives in the echo-memory plugin.
|
||||
README.md here is the OLD verbose version (replaced in-vault by a thin signpost).
|
||||
@@ -0,0 +1,18 @@
|
||||
# Vault Index
|
||||
|
||||
## Start Here
|
||||
- [[README]]
|
||||
- [[CLAUDE]]
|
||||
- [[STRUCTURE]]
|
||||
- [[BOOTSTRAP]]
|
||||
|
||||
## Operational Notes
|
||||
- [[_agent/context/current-context]] — active scope & priorities
|
||||
- [[_agent/memory/semantic/operator-preferences]] — durable operator profile
|
||||
- Latest daily note: `journal/daily/` (most recent by date)
|
||||
- Latest session log: `_agent/sessions/` (most recent by filename)
|
||||
|
||||
## Reference Notes
|
||||
- [[resources/concepts/agent-memory-model]]
|
||||
- [[resources/references/obsidian-local-rest-api]]
|
||||
- [[resources/people/jason-stedwell]]
|
||||
Reference in New Issue
Block a user