Hermes Wiki
README

PKM — Personal Knowledge Management Vault

For Claude: Read this file completely before starting any task in this repository.


What This Is

This is Mihir's personal knowledge base, stored as an Obsidian vault. All knowledge lives as plain Markdown files. Obsidian reads the vault locally and renders backlinks into a visual knowledge graph — zero proprietary format, zero lock-in.

Knowledge enters this vault from two sources:

  1. Notion exports — pages exported as Markdown from Notion and dropped into the vault
  2. Hand-written Markdown — notes authored directly by Mihir

Raw files from either source are unprocessed by default. My job (Claude's job) is to process them into first-class Obsidian citizens.


How This Vault Runs

Beyond manual editing, three automated layers keep the vault growing and healthy:

  1. Hermes (AgentStack/Hermes/) — local nightly/weekly cron, runs on Mihir's own machine/VPS, not the cloud. Does structural lint (missing frontmatter, broken wikilinks, missing ## Related), auto-fixes what it safely can via fix-agent, and runs a synthesis pass (incremental bi-weekly + full-sweep monthly) that finds cross-topic connections across a scoped set of folders and writes them to Synthesis/.
  2. Cloud routines — Anthropic-hosted, cron-triggered via the /schedule skill, each running in its own isolated sandbox with a git checkout of this repo that pushes straight to master, independent of any local machine or session:
    • Weekend Vocab Scraper (Saturdays) — grows TechEnglishVocab/tech_english_vocab.mddisabled 2026-07-19 to make room in the daily Claude-usage budget for the Architecture Scheduler below
    • AI Digest Scraper (daily, 6am EST) — writes articles to AIDigest/
    • Architecture Scheduler (daily except the 1st of the month, 12pm EST) — writes fundamentals/case-studies/challenges notes to Architecture/, round-robin by flavor
  3. viewer/ — the deployed reader app at wiki.fullstackfusions.com (see "Vault Layout" below), separate from the two automation layers above. It reads and renders every note read-only, with one exception: its /Daybook view (Todo/Reminders/Calendar, ported from the Daybook mockup) can create, edit, and delete files under Todo/, Reminders/, and Events/ — the only write path in the app, committed+pushed automatically on every change.

Every automated run — Hermes and all cloud routines — logs a tagged entry to Logs/2026 ([LINT], [FIX], [VOCAB], [AIDIGEST], [ARCH], etc.), even when a run finds nothing new. Dashboard surfaces rollups of this activity (per-scheduler counts, lint findings, orphaned notes) via Obsidian Dataview.


Vault Layout

PKM/
├── README.md                  ← you are here; always read first
├── Architecture/               ← solutions/software architecture knowledge base (fundamentals, real-world case studies, design challenges)
│   ├── _index.md              ← topic hub; links to every note across its subfolders
│   ├── system_prompt.md       ← flavor rotation, note templates, Reel Script rules for this folder
│   ├── writelist.md           ← sources + topics + flavor-rotation pointer for the (future) daily cloud routine
│   ├── Fundamentals/          ← timeless concept notes, hand-curated
│   ├── CaseStudies/           ← real-world architecture breakdowns (ByteByteGo-style)
│   └── Challenges/            ← design-scenario practice notes
├── Developer/                   ← hands-on Developer/DevOps knowledge base, topic-first (AI, Auth, Networking, Languages, Security, ...); each topic/subtopic holds Fundamentals.md/CaseStudies.md/Challenges.md/Checklists.md, created lazily
│   ├── _index.md               ← topic hub; links to every topic folder
│   ├── system_prompt.md        ← topic-first structure, pillar tags, note templates, scheduler spec for this folder
│   ├── writelist.md            ← sources + pillar tags + flavor-priority pointer for the scheduler
│   └── <Topic>/                ← e.g. AI/, Auth/, Networking/, Languages/{Python,Go,TypeScript}/, Security/ — each with subtopic folders
├── CertExams/                  ← certification exam study notes, one subfolder per exam; content authored solely by Mihir (see system_prompt.md)
│   ├── _index.md               ← hub note; links to every exam subfolder
│   ├── system_prompt.md        ← Claude edits only on explicit request or via lint/fix-agent/synthesis automation
│   └── <Exam>/                ← e.g. SAA-C03/ — domain notes, practice questions, test results
│       └── _index.md          ← per-exam hub note
├── Works/                      ← tactical job-search/work-execution layer: active sprints, resume versions, client/tenure history, outreach tracking
│   ├── _index.md
│   ├── Profile/                ← who I am professionally, current stack, career trajectory (not domain-locked)
│   │   ├── _index.md
│   │   └── *.md
│   └── *.md
├── Tools/                     ← tool and technology reference notes
│   ├── _index.md
│   └── *.md
├── TechResearch/              ← deep research on specific tools, frameworks, models, papers
│   ├── _index.md              ← research index; links to all topics
│   └── <Topic>/              ← one subfolder per researched topic
│       ├── research-<topic>.md   ← primary deep-dive doc
│       └── *.md               ← companion guides, comparisons, experiments
├── BlogPosts/                 ← published/drafted blog posts, dated `YYYY-MM-DD-slug.md`
│   └── *.md
├── TechEnglishVocab/           ← living tech/professional vocabulary list, grown weekly by a cloud routine
│   └── *.md
├── Synthesis/                  ← cross-topic connections found by the synthesis agent (bi-weekly incremental, monthly full-sweep)
│   └── <slug>.md
├── CoursesDocs/                ← auto-synced mirror of the Courses project's docs (do not edit locally)
│   └── *.md
├── LocalzDocs/                 ← auto-synced mirror of the Localz project's docs (do not edit locally)
│   └── *.md
├── Prompts/                   ← reusable prompt playbooks for recurring workflows
│   └── <workflow>/           ← one subfolder per workflow (e.g. how_to_write_blogs)
│       └── *.md
├── ruff_works/                ← working notes, drafts, and comparison scratchpads
│   └── *.md
├── Todo/                      ← task items, written by hand or via the viewer's /Daybook UI; category subfolders created on demand
│   ├── .categories.json       ← dynamic category list (not a note — invisible to getAllNotes()/wikilinks)
│   └── <Category>/*.md
├── Reminders/                 ← date+time reminders (birthdays, bills, one-offs), written by hand or via /Daybook
│   └── *.md
├── Events/                    ← calendar events with start/end time, written by hand or via /Daybook
│   └── *.md
├── viewer/                    ← Next.js app that renders this vault as a website, live at wiki.fullstackfusions.com
├── <future-topic>/            ← new subject areas added over time
│   ├── _index.md
│   └── *.md
└── .obsidian/                 ← Obsidian config (do not edit manually)

Each subject area gets its own folder. Every folder has an _index.md that acts as its hub note.

Todo/, Reminders/, Events/ are an explicit exception to that rule and to the ## Related/frontmatter-mandatory conventions below: they hold ephemeral task/reminder/event items (not durable knowledge notes), written mostly through the viewer's /Daybook UI. No per-folder _index.md, no ## Related section — the /Daybook view itself is the dynamic index.

viewer/ is the one folder here that isn't vault content — it's a Next.js app that reads this repo and renders it as a browsable, mobile-installable wiki, deployed at wiki.fullstackfusions.com (Clerk-authed, VPS-hosted via viewer/deploy/rebuild.sh, see viewer/DEPLOY.md). It pulls master to pick up changes, including ones pushed by the cloud routines below — it's not something Claude edits as part of normal note-processing.

Some folders also carry a system_prompt.md — project/feature-specific instructions (trigger phrases, output structure, processing rules) that layer on top of this README's global rules. TechResearch/system_prompt.md is the original; see "System Prompts Per Project/Feature" below for the full list and the rule for using them.


Obsidian Linking Syntax

Obsidian builds its knowledge graph entirely from wikilinks embedded in Markdown:

Syntax What it does
[[Note Name]] Links to a file named Note Name.md anywhere in the vault
[[Note Name|display text]] Same link, custom label
[[Folder/Note Name]] Explicit path when names are ambiguous
#tag Adds a tag visible in Tag Pane and Graph filters

Backlinks are automatic — if note A links to note B, Obsidian shows A in B's backlink panel with no extra work.

Rule: Never use bare Markdown [text](path) links for cross-note references inside this vault. Always use [[wikilink]] syntax so Obsidian can index them.


What "Processing a File" Means

When Mihir says "process this file" or drops raw content, Claude must do all of the following:

1. Add YAML Frontmatter

Every note gets a frontmatter block at the top:

---
title: "Human-readable title"
tags: [topic, subtopic]
source: notion | self-written | web
created: YYYY-MM-DD
---

2. Clean Up the Content

  • Remove Notion export artifacts (extra blank lines, broken anchor links, Untitled headings)
  • Normalise heading levels (# for title, ## for sections, ### for sub-sections)
  • Convert any bare URLs that are cross-vault references into [[wikilinks]]
  • Identify every concept, term, service, or topic that has (or should have) its own note
  • Replace inline mentions with [[Note Name]]
  • If the target note does not exist yet, still write the wikilink — Obsidian shows it as an unresolved link and that is intentional (it marks gaps to fill)

At the bottom of every note, add:

## Related

- [[Note A]]
- [[Note B]]

List notes that are conceptually adjacent, even if not directly mentioned in the body.

5. Update the Folder Index

After creating or modifying a note, update the folder's _index.md to include a link to the new note. If _index.md does not exist, create it.


Folder Index (_index.md) Structure

---
title: "Architecture Index"
tags: [index, architecture]
---

# Architecture — Solutions & Software Architecture Knowledge Base

Hub note for all Fundamentals, CaseStudies, and Challenges notes.

## Fundamentals
- [[Fundamentals/VPC Design Patterns]]
- [[Fundamentals/Caching Layers]]

## Case Studies
- [[CaseStudies/Discord Voice Infra Scaling]]

## Challenges
- [[Challenges/Design a Rate Limiter]]

Keep indexes grouped by sub-theme. Alphabetical within each group.


Tagging Convention

Tag pattern Meaning
aws, gcp, azure Cloud provider
saa-c03, cka, ckad Certification/exam context
concept Pure theory note (no hands-on)
service A specific cloud/SaaS service
comparison Note that compares two or more things
todo Note needs more work
index Hub/index note

Add tags that are already in use before inventing new ones. Check existing notes to stay consistent.


Current Knowledge Areas

Folder Status Description
Architecture/ In progress Solutions/software architecture knowledge base — Fundamentals, real-world CaseStudies, and design Challenges; daily cloud routine planned once hand-written content proves the pattern
Developer/ Scaffolded, scheduler pending Hands-on Developer/DevOps knowledge base, topic-first (AI, Auth, Networking, Languages, Security, ...; each topic/subtopic gets Fundamentals/CaseStudies/Challenges/Checklists files, created lazily). Applies to development generally, not one project. See Developer/system_prompt
CertExams/ Active Certification exam prep, one subfolder per exam (e.g. SAA-C03/) — domain notes, practice questions, test results. Exam-scoped only; general concepts link out to Architecture/ instead of duplicating it. Content authored solely by Mihir — Claude edits only on explicit request or via the standard lint/fix-agent/synthesis automation, see CertExams/system_prompt
Tools/ Active Tool and technology reference notes
TechResearch/ Active Deep research on specific tools, frameworks, models, papers, and industry shifts
BlogPosts/ Active Published and drafted blog posts, named YYYY-MM-DD-slug.md
TechEnglishVocab/ Active Living tech/professional vocabulary list, grown weekly by a Saturday cloud routine — excluded from synthesis (no cross-topic connections to find in a word list)
Prompts/ Active Reusable prompt playbooks for recurring workflows (deep research, blog writing, idea validation)
ruff_works/ Active Working notes, rough drafts, and comparison scratchpads (work in progress)
AgentStack/ Active Agent/harness/memory architecture design for the vault's "Hermes" system
opportunities/ Active Dated notes surfacing where existing research unblocks an open project goal
Logs/ Active Raw event log + (future) compacted memory-tier hierarchy
Synthesis/ Active Cross-topic connections across Tools/, TechResearch/, BlogPosts/, CoursesDocs/, LocalzDocs/, AIDigest/, Architecture/, CertExams/, Developer/ — bi-weekly incremental pass (git-diff scoped) plus a monthly full-sweep backstop
CoursesDocs/ Active, auto-synced Mirror of the Courses project's docs — do not edit locally, edit upstream
LocalzDocs/ Active, auto-synced Mirror of the Localz project's docs — do not edit locally, edit upstream
wiki/ New, empty Graduated, cross-cutting knowledge — the vault's knowledge-graduation layer

System Prompts Per Project/Feature

Some folders have a system_prompt.md in addition to their _index.md/README.md hub note. The hub note is navigation; system_prompt.md is behavior — trigger phrases, output structure, processing rules, and file-naming conventions specific to that project/feature.

Folder system_prompt.md
TechResearch/ TechResearch/system_prompt — the original; do not edit without explicit instruction
Architecture/ Architecture/system_prompt
Developer/ Developer/system_prompt
AgentStack/ AgentStack/system_prompt
opportunities/ opportunities/system_prompt
wiki/ wiki/system_prompt
Logs/ Logs/system_prompt
CertExams/ CertExams/system_prompt

Rules Claude Must Follow in This Vault

  1. Read this README first on every session before touching any file.
  2. If the folder you're working in has a system_prompt.md, read it immediately after this README and follow it. It defines that project/feature's triggers, modes, and output rules on top of — never in place of — these global rules. Check the table above; if a folder gets a new system_prompt.md later, add it there.
  3. Never use bare [text](path) links for intra-vault references — always [[wikilinks]].
  4. Always update _index.md when adding or renaming a note.
  5. Preserve the user's original wording when cleaning up content — restructure, don't rewrite.
  6. Do not delete content without explicit instruction; mark uncertain sections with > [!todo] callouts instead.
  7. One concept per file — if a note is covering two distinct ideas, split it into two notes and link them.
  8. Frontmatter is mandatory on every note — never leave it off.
  9. Wikilink target names must match filenames exactly (case-sensitive on macOS is off by default, but treat them as case-sensitive to stay safe).

Obsidian Callout Syntax (Use These)

> [!note] Optional title
> Body text

> [!tip]
> Helpful shortcut or trick

> [!warning]
> Watch out for this

> [!todo]
> Something incomplete that needs to be filled in

Workflow for a New Batch of Notes

  1. Mihir drops raw files into the appropriate folder (or pastes content)
  2. Claude reads each file, applies all processing steps above
  3. Claude updates _index.md for that folder
  4. Claude reports: files created/modified, wikilinks added, unresolved links (gaps to fill)

Last updated: 2026-07-10

Hermes Wiki