AGENTS.md
Instructions for AI coding agents (Claude, Cursor, Copilot, etc.) working in this repository.
Repository Overview
This is an Obsidian vault (personal knowledge base), not a traditional software project. There is no build system, test suite, or linting configuration. The repository contains markdown files organized as a digital garden for learning about computer architecture, systems, and machine learning.
Learning-First Collaboration (CRITICAL)
The primary goal of agents working in this vault is to help the owner LEARN, not to produce content for them.
This is a personal knowledge base. The value comes from the owner synthesizing and writing their own understanding. Agents that write finished notes undermine this goal.
Default behavior for note requests
When asked to “write a note” or “create a note” on a topic:
- DO NOT write finished prose or complete explanations
- DO create an atomic skeleton (see below)
- DO ask Socratic questions to help the owner reason through the topic
- DO offer to clarify concepts or answer specific questions as they write
Writing atomic skeleton notes
Atomic means: one concept per note. If a topic has multiple facets, create multiple linked notes—not one big note with many sections.
Anti-pattern (monolithic):
# Dogs
## Breeds
(content about breeds)
## Training
(content about training)
## Zoomies
(content about zoomies)
## Why They're Good Boys
(content about good boys)Good pattern (hub + atomic stubs):
# dogs.md (hub)
A [[domestication|domesticated]] [[mammal]] known for loyalty, wet noses, and [[zoomies]].
See also: [[dog-breed]], [[dog-training]], [[why-dogs-are-good-boys]]Then create separate atomic notes: dog-breed.md, dog-training.md, zoomies.md, why-dogs-are-good-boys.md.
Each atomic skeleton note should have:
- Proper frontmatter (title, date, tags,
draft: true, aliases if applicable) - One-line definition immediately after frontmatter
- 1-2 HTML comment prompts with Socratic questions
- Wikilinks to related concepts (existing or to-be-created)
- Minimal structure—just enough to orient the owner
Template for atomic knowledge note:
---
title: Concept Name
date: YYYY-MM-DD
tags:
- relevant-tag
draft: true
---
One-line definition using [[wikilinks]] to related concepts.
<!-- Prompting question to guide the owner's thinking -->
Key points (if needed):
- Point with [[link]]
- Point with [[link]]
See also:
- [[related-concept]]
- [[another-concept]]When to create multiple notes:
- The topic has distinct sub-concepts (e.g.,
cuda.md→cuda-arch.md,cuda-model.md) - A section would be long enough to stand alone
- The sub-topic is referenced from multiple places
Reference examples in this vault:
knowledge/cuda.md— hub note pointing to arch/model/platformknowledge/vector-databases.md— hub note linking to ANN, similarity metrics, RAGknowledge/llm.md— concise definition with linksknowledge/embedding.md— atomic, two sentences
When full content IS appropriate
Only write substantial content when:
- The owner explicitly requests it (e.g., “write this for me”, “fill this in”, “just give me the full note”)
- The task is purely mechanical (fixing formatting, adding frontmatter)
- The owner asks for a specific fact or definition to unblock themselves
Coaching over drafting
- Push the owner to reason and write notes themselves
- Prefer prompts and questions (Socratic style) over producing finished prose
- If the owner seems stuck, offer an outline or a single starting sentence—not a complete note
- Celebrate incomplete/wrong drafts as part of the learning process
Build/Lint/Test Commands
None applicable. This is a content repository, not a code project.
To preview the site locally using Quartz (if configured):
npx quartz build --serveContent Structure
Five main content areas, each with a metaphorical theme:
| Directory | Theme | Purpose |
|---|---|---|
knowledge/ | ”The thumb drive” | Interconnected technical notes (knowledge graph) |
essays/ | ”The leather journal” | Polished long-form writing for public consumption |
notes/ | ”The sticky notes” | WIP items, rough drafts, miscellaneous |
reviews/ | ”The stack of papers” | Paper/article reviews (Prof. Gibbons format) |
mind.md | ”The smudged whiteboard” | Current thoughts and activities |
Other root files: index.md (landing page), about.md (bio/contact).
Markdown Style Guidelines
Required Frontmatter
Every markdown file MUST include YAML frontmatter:
---
title: Page Title
date: YYYY-MM-DD
tags:
- tag1
- tag2
draft: false
---Essential fields:
title- Explicit page title (do not rely on filename)date- Creation date inYYYY-MM-DDformattags- Use list format, not inline arraydraft-truefor WIP,falsefor published
Optional fields:
aliases- Alternative names for the noteenableToc- Setfalseto hide table of contentsdescription- For link previews
Obsidian Flavored Markdown
Wikilinks (required for internal links):
[[page-name]] # Basic link
[[page-name|display text]] # With custom display text
[[folder/page-name]] # With pathEmbeds:
![[image.png]] # Embed image
![[image.png|200]] # With width constraint
![[note-name]] # Embed another noteCallouts (for reviews):
> [!abstract]
>
> Summary text here.
> [!info]
>
> Additional context.Formatting Conventions
- Bold for key terms when first introduced:
**Compute Unified Device Architecture** - Use LaTeX for math:
$inline$or$$block$$ - Markdown tables for structured data
- Keep paragraphs concise; prefer bullet points for lists
- External links use standard markdown:
[text](url) - Avoid placing wikilinks (e.g.
[[some-note]]) inside fenced code blocks; Obsidian will render them as plain text (not clickable). Prefer normal prose, lists, or tables for link-heavy “flows”. - No emojis unless contextually appropriate (casual notes like mind.md are exceptions)
Naming Conventions
Files:
- Use lowercase kebab-case:
cuda-thread-block.md - Split complex topics into multiple linked notes:
cuda.md→cuda-arch.md,cuda-model.md - No spaces or special characters in filenames
Tags:
- Lowercase with hyphens:
machine-learning,gpu,self - Be consistent with existing tags
Writing Philosophy
- Networked thought: Link extensively between notes using wikilinks
- Atomic notes: Small, focused notes on single concepts
- Iterative improvement: Being wrong/incomplete is acceptable
- Public by default: Content is meant to be shareable
Content-Specific Guidelines
Knowledge Entries (knowledge/)
- Start with a one-line definition or explanation
- Link to related concepts immediately
- Use wikilinks for any mentioned concept that has (or should have) its own note
- Keep entries focused; split into sub-notes when topics grow complex
Essays (essays/)
- Longer-form, more polished writing
- Include personal voice and reflection
- Cite sources with links
Reviews (reviews/)
Follow Prof. Phil Gibbons’ format:
---
title: Paper Title (Authors, Year)
tags:
- topic
---
**Link**: URL
> [!abstract]
>
> One-line summary
## Three important things
### 1) First point
### 2) Second point
### 3) Third point
## Glaring deficiency
## ConclusionNotes (notes/)
- WIP and rough content lives here
- Less strict formatting requirements
- Set
draft: truein frontmatter until ready to publish
Agent Tasks
Agents in this vault may be asked to:
- Provide knowledge/insights - Research and explain topics; may require extensive searching and reasoning
- Improve writing - Clean up language, fix phrasing, improve Obsidian Markdown formatting
- Search existing notes - Help recall information or combine multiple notes for new insights
Do’s and Don’ts
Do:
- Add frontmatter to any new file
- Use wikilinks for internal references
- Create small, focused notes
- Link liberally between concepts
- Tag content appropriately
- Maintain the metaphorical theme of each section
Don’t:
- Create large monolithic documents
- Use standard markdown links for internal references (use wikilinks)
- Forget the
datefield in frontmatter - Leave notes without tags
- Use inconsistent tag formats (stick to lowercase-hyphenated)
File Validation Checklist
Before considering a file complete:
- Frontmatter present with all essential fields
-
datein YYYY-MM-DD format -
tagsin list format - Internal links use wikilink syntax
- Images use embed syntax with optional size
- File named in lowercase kebab-case
- Content links to related existing notes