KB-OS — Knowledge Base Operating System
Section titled “KB-OS — Knowledge Base Operating System”The unified vault at D:\FSS\KB\ is the operating system for managing Talbot’s businesses and (eventually) personal domains. It is the single source of truth for all information — providing clear context for AI agents and humans operating at any scope, from a single department to the full multi-business picture.
Vault Layout
Section titled “Vault Layout”D:\FSS\KB\├── Core\ — Cross-business: governance, AI, processes, logs, misc├── MBR\ — myBetterRates├── SDC\ — $MART DEBT Coach├── FSS\ — Talbot Stevens└── .obsidian\ — Vault config (plugins, themes, settings — one for all)Key rule: Content that applies to two or more businesses lives in Core\. Content specific to one business lives in that business’s folder.
Navigation Entry Points
Section titled “Navigation Entry Points”| File | Purpose |
|---|---|
Core\CONSTITUTION.md | Vault charter — mission, structure rules, governing principles |
Core\DASHBOARD.md | Operational hub — current focus, recent decisions, active projects |
<Biz>\<Dept>\JOB_DESCRIPTION.md | Dept scope, responsibilities, and SSOT links |
Start at CONSTITUTION to understand the whole; start at DASHBOARD for current work.
DASHBOARD.md vs Folder Note: DASHBOARD.md is reserved for elevated hubs — vault root, business roots, an Ongoing-Project home, or a purpose-built dept index (e.g. Core/AI/Skills/DASHBOARD.md). Ordinary content folders use a Folder Note instead (Waypoint-generated, see Folder Notes.md) — cheap, auto-maintained, the right default everywhere else. Where a folder is both (an Ongoing-Project home that’s also an ordinary Obsidian folder), DASHBOARD.md wins and serves double duty — no separate Folder Note is created for it. Worked example: Core/Processes/Projects/KB-OS/DASHBOARD.md.
Standard Department Structure
Section titled “Standard Department Structure”Each business (MBR, SDC, FSS) uses a dept-first layout:
| Folder | Contains |
|---|---|
Strategy\ | Identity, positioning, IP, competitive analysis |
IT\ | Systems, processes, dev standards, UX |
Mktg\ | Brand, content, distribution, growth |
Offerings\ | Products, services, pricing |
Notes\ or Misc\ | Notes without a clear dept home |
_WorkingOn\ | Active tasks, projects, research |
Not every dept exists until there’s content to put in it (activate on first need).
Core Departments
Section titled “Core Departments”| Dept | Contents |
|---|---|
AI\ | Claude Code, skills, prompting guides, AI tool notes |
Cancer50\ | Cross-business pledge coordination |
IT\ | Cross-business IT (apps, infrastructure) |
Logs\ | AI, Branding, Dev, Decisions, Projects, Snapshots, System logs |
Misc\ | Clippings, Glossary, meeting notes, miscellaneous |
Processes\ | SMTM, KB-OS, Software Dev, cheatsheets |
Utils\ | Custom and external utility references |
Task Management (SMTM)
Section titled “Task Management (SMTM)”Full guide: Core\Processes\Simple Markdown Task Management\SMTM_System.md
Key rules (SMTM v5.2+ dept routing):
- Dept-owned tasks:
<Biz>\<Dept>\Tasks\<Name>.md(e.g.Core\IT\Tasks\,Core\Processes\Tasks\) — no date prefix - KB-native Ongoing Project tasks: self-contained in
Core\<Dept>\Projects\<name>\Tasks\(e.g. KB-OS) - Cross-dept / vault-level tasks:
Core\_WorkingOn\Tasks\<Name>.md; master tracker:Core\_WorkingOn\Tasks\_active.md - Logs:
YYYY-MM-DD_Description.mdin the owning dept’sLogs\(date prefix on logs, not tasks) - Scratch:
_WorkingOn\Tasks\_tmp.mdper business — Talbot’s personal scratch space, never modified by AI without explicit request - Scaffold a new Task: right-click any
Tasks\folder → New File — the SMTM Templater wizard fires via file regex.*/Tasks/.*(v5.4) and auto-registers the task /task-startand/task-continueauto-load the owning dept’s charter chain (JOB_DESCRIPTION → Staff file → project STATUS) from the task’s path (2026-07-09); team org chart:Agent-Team.md
Ideas Workflow (Capture-Routing)
Section titled “Ideas Workflow (Capture-Routing)”Full guide: Core\Processes\Capture-Routing.md (consolidated from Core\Ideas-Workflow.md, 2026-07-09)
Summary:
- Capture — bullet in appropriate
<Dept>\Inbox.md(or_tmp.mdwhen routing uncertain) - Promote — when ready to act, convert to TaskNote in
<Dept>\Tasks\<Name>.md - Archive — completed/parked tasks move to
<Dept>\Tasks\archive\YYYY-MM\
Mobile capture: Obsidian mobile → dept Inbox directly.
Conventions
Section titled “Conventions”| Rule | Detail |
|---|---|
| Folder Notes (Waypoint) | Ordinary content folders get a Folder Note (Waypoint-generated MOC) — see Folder Notes.md. Elevated hubs (vault/business root, Ongoing-Project home, dept index) use DASHBOARD.md instead. |
Misc\ per business | Notes without a clear dept home go here, not spread across folders. |
| Wikilinks | Use bare filename (no path prefix) for stability across restructures — path-prefixed links break on folder rename. Exception: when the same filename exists in more than one vault location (DASHBOARD.md, Focus.md, Vision.md, Strategic Plan.md, UPGRADES.md, …), always path-qualify: [Focus](/mbr/_workingon/focus/) — bare links resolve first-occurrence-wins, non-deterministically. |
| SSOT | One home per concept. Never copy content to a second location — create a pointer instead. |
| Git | Single repo at D:\FSS\KB\. Commit after any session that adds substantive content. |
AI Agent Usage
Section titled “AI Agent Usage”CLAUDE.md files — each _WorkingOn\ has a CLAUDE.md providing project-specific context to Claude Code sessions. The global ~/.claude/CLAUDE.md sets cross-project behavior.
Graphify — knowledge graph lives at Core\Misc\graphify-out\. To regenerate:
- Run
/graphifyfrom the main Claude Code session (not a background agent — API key required) .graphifyignoreat vault root excludes plugin JS,.git\, graphify-out itself
Claude Code entry points:
- Vault-level work: open session in
D:\FSS\KB\ - MBR work: open session in
D:\FSS\KB\MBR\_WorkingOn\(picks upCLAUDE.mdthere) - Core/cross-business: open in
D:\FSS\KB\Core\_WorkingOn\
Git Repository
Section titled “Git Repository”Single repo initialized 2026-06-09 at D:\FSS\KB\. Initial commit: b157a9e (791 files).
.gitignore excludes: **/graphify-out/, workspace.json, plugin compiled JS, OS artifacts.
.gitattributes: * text=auto (normalizes CRLF/LF across platforms).
No remote configured — local-only as of 2026-06-09.
Obsidian Bases plugin (core plugin — Settings → Core plugins → Bases)
Section titled “Obsidian Bases plugin (core plugin — Settings → Core plugins → Bases)”| Issue | Wrong | Correct |
|---|---|---|
| Code fence name | ```bases (plural) | ```base (singular) |
| Filter format | property/condition/value YAML (Dataview style) | Expression syntax |
| Equality filter | status = "ready" | status == "ready" (double ==) |
| Not-equal filter | — | status != "complete" |
| Grouping | groupBy: risk (not supported) | Sort by field — no native groupBy |
| Folder scope | from: "_WorkingOn/Tasks" | file.inFolder("_WorkingOn/Tasks") in filters |
| Column selection | properties: [...] in code block (ignored) | Click Properties (≡) in table toolbar — Obsidian writes order: |
| Nested boolean groups | and: list containing a nested or: sub-list | Confirmed broken (2026-07-07): a Core/DASHBOARD.md query nesting or: under and: rendered as a table but silently ignored the recency filter — every matching file showed regardless of file.mtime. Splitting into two separate flat and:-only blocks (no nesting) fixed it immediately, with the exact same file.mtime filter unchanged. Always use flat and: lists — one block/view per distinct path scope instead of or:-combining paths. |
| Relative date filter | — | Confirmed working (2026-07-07): file.mtime > now() - "14 days" filters correctly when used in a flat and: list (no nested or:). The date arithmetic itself was never the problem — see Nested boolean groups above. |
Minimal working Bases block:
filters: and: - file.inFolder("_WorkingOn/Tasks") - status != "complete"views: - type: table name: All Active Tasks sort: - property: risk direction: DESCDeviating from this structure causes silent failure — the block renders as raw text with no error message.