second-brain
Skill0 starsChanged 59 days agoMITView on GitHub
Shared coordination layer for all Obsidian vault work: vault config, routing rules, frontmatter standards, wikilink conventions, the obsidian__ tool surface, and machine edit policy. Use alongside any second-brain skill and to decide which specialized skill handles a capture.
25 other projects use a version of this.
Adopted by
Most recently taken up by
- 0xsarwagya/agent-skills-alycdtheir own version, first seen Nov 8, 2026
- DaraBoth/skilljmskilltheir own version, first seen Nov 8, 2026
- dmitrax/second-brain-setuptheir own version, first seen Nov 7, 2026
- gaetanbaudime-dot/Claude-skilltheir own version, first seen Nov 1, 2026
- luizsiqueira-eng/skillstheir own version, first seen Oct 20, 2026
- alycd/agent-skillstheir own version, first seen Oct 20, 2026
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 25
- coreyhaines31/makerskills★ 893same name
- NicholasSpisak/second-brain★ 718same name
- uussnn/second-brain★ 82same name
- sean-esk/second-brain-gtd★ 48same name
- calebnewtonusc/Chewbacca★ 8same name
- stancsz/second-brain★ 7same name
- josherau/claude-operating-core★ 3same name
- DaraBoth/skilljmskill★ 2same name
- dmitrax/second-brain-setup★ 2same name
- Dressi123/second-brain-skill★ 2same name
15 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- daily-journalSkill
- goalsSkill
- idea-pipelineSkill
- knowledge-baseSkill
- meeting-notesSkill
- nightly-consolidationSkill
- people-notesSkill
- project-trackingSkill
- resurfacingSkill
- shopping-listSkill
- skill-tuningSkill
- standupSkill
- task-trackingSkill
- vault-recallSkill
- weekly-reviewSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. 0 are common, 8 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 21 edited versions we read keep these.
8
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Use this skill as the shared Obsidian/vault coordination layer.
- Very specific: line 23
Call obsidian__vault_status first in any scheduled or exploratory run.
- Distinctive: line 56
An empty result is the answer: No search hits, an empty listing, or a missing daily note means the content does not exist.
- Very specific: line 59
Never write a vault file with the native file write/edit tools.
- Distinctive: line 102
Every note gets YAML frontmatter — it is the queryable data model for Obsidian Bases and any future UI, and wikilinks inside it count as …
- Very specific: line 137
Use exact project names consistently between the project note and task lines in Tasks.md.
- Distinctive: line 139
Do not turn a knowledge-base capture into a task, project decision, journal entry, or people note unless the user's wording clearly calls …
- Distinctive: line 140
Do not infer task completion from project status, or project status from task completion, unless the user says so explicitly.
- Very specific: line 150
Never rewrite, reorder, or summarize user prose, especially in Daily/ notes.
- Distinctive: line 151
Never delete. Merging means all content lands in the destination.
- Very specific: line 176
When a request crosses boundaries, use each relevant skill in order.
- Very specific: line 184
Use Knowledge Base/ for information the user wants to keep as reusable reference, not for active work state or personal diary context.
- Distinctive: line 206
Do not invent owners, dates, decisions, blockers, relationships, or factual claims.
- Very specific: line 207
If a project/person/task/topic does not exist, create it only when the user's intent is clear.
- Distinctive: line 208
Keep private/personally sensitive material inside the vault.
“Common” is measured: kept by at least 6 in 10 of the 21 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Second Brain
Use this skill as the shared Obsidian/vault coordination layer. Keep workflow-specific procedures in the specialized skills.
Vault
- The vault path and local timezone are the server's configuration (
OBSIDIAN_VAULT,VAULT_TZ), not this file's. Never assume either;obsidian__vault_statusreports today's date in the vault's timezone. - The vault is a git repository (branch
main). Git is the recovery mechanism for machine edits; automated passes snapshot before and after withobsidian__vault_snapshot.
All vault work goes through the obsidian__* tools. They talk to the vault filesystem directly — the Obsidian app does not need to be running, and no shell command is involved. Never shell out for vault work: not to a command-line vault client, not to git, cat, or ls. Those paths are gone, and the tools cover what they did.
Tools
Call obsidian__vault_status first in any scheduled or exploratory run. It answers today's date, git dirty state, note counts by type, latest synthesis and daily note, unresolved/orphan counts, and what changed in the last 24 hours — in one call, replacing a dozen exploratory reads.
| Need | Tool |
| Orientation, today's date, git state | obsidian__vault_status |
| Resolve a relative date ("next friday", "end of month") to an exact one | obsidian__date_resolve |
| Find notes by type, folder, status, change date, or staleness | obsidian__vault_list |
| Read a note or one of its sections | obsidian__vault_read |
| Full-text search | obsidian__vault_search |
| Backlinks, outgoing links, unresolved, orphans, deadends | obsidian__vault_links |
| Create a new note of any kind | obsidian__note_create |
| Add a line under a specific heading | obsidian__section_append |
| Add a dated entry to a running log | obsidian__log_append |
| Add a task | obsidian__task_add |
| Change or complete a task | obsidian__task_update |
| Find tasks by status, project, due date, or who they're waiting on | obsidian__task_query |
| Log a personal journal entry | obsidian__daily_log |
| Add, merge, or check off a checkbox item | obsidian__checklist_set |
| Record that two notes are connected | obsidian__relate |
| Log a correction the user made | obsidian__correction_log |
| See correction counts and patterns | obsidian__corrections_summary |
| Capture a line into the inbox | obsidian__inbox_add |
| Reject rate, similarity calibration, corrections, and recently ignored links in one call | obsidian__vault_signals |
| Move an item out of an inbox | obsidian__inbox_route |
| Drop an inbox line already captured elsewhere | obsidian__inbox_clear |
| Change one frontmatter field | obsidian__note_set_field |
| Turn plain-text mentions into wikilinks | obsidian__linkify |
Regenerate Standup.md | obsidian__standup_write |
| Commit the vault | obsidian__vault_snapshot |
Three rules matter more than the rest:
- Never construct a file path.
obsidian__vault_readtakes the note name as it appears in a wikilink —Wayfinder,First Last— and resolves the path itself. Passing a path you assembled by hand is how notes end up in the wrong place. - An empty result is the answer. No search hits, an empty listing, or a missing daily note means the content does not exist. Do not re-check it another way; move on.
- Never hand-compute a date from a relative phrase. "Next friday" and "end of the month" are exactly the arithmetic a model gets subtly wrong in a way nobody notices until a due date is missed. Call
obsidian__date_resolveand pass itsdateto whatever tool needs one.
Never write a vault file with the native file write/edit tools. obsidian__note_create derives the path, emits the frontmatter, and lays out the sections; obsidian__section_append fills them in.
Errors from these tools state the fix. Read the message and act on it rather than retrying the same call: a "not found" names the closest existing notes, a missing section lists the sections that exist, and a table section names its columns.
Permission Guardrails
The tool surface is the guardrail: it exposes no delete, no move, no rename, no plugin control, and no app-level commands, so those cannot happen by accident. Ask the user before doing any of them by other means:
- Permanent deletion, broad deletion, or any delete where intent is ambiguous.
- Plugin/theme/snippet install, uninstall, enable, or disable.
- Restricted mode changes.
- Sync or history restore, restart, developer/debug commands, or arbitrary
eval.
Vault Structure
Orientation only — the tools derive paths, so never hand-construct one.
Projects/ one folder per project
[Project Name]/
[Project Name].md project note, named after the project so [[Project Name]] resolves
Meeting Notes/ dated meeting notes
Docs/ drafts, research, references
People/[First Last].md one file per person, named with spaces so [[First Last]] resolves
Daily/YYYY-MM-DD.md daily journal entries
Knowledge Base/ personal factual/reference notes, organized by topic
[Topic]/[Topic] MOC.md map-of-content hub note once a topic matures
Goals/[Goal Name].md what a project or set of projects is working toward
Shopping/[Store Name].md per-store shopping lists (checkbox items)
Ideas/[Idea Name].md pre-project idea notes with scorecards
Syntheses/YYYY-MM-DD.md nightly consolidation synthesis notes
Schedule/ future calendar-related notes
Tasks.md centralized checkbox task list
Corrections.md log of corrections the user made, for counting patterns
Inbox.md quick capture for unprocessed items
Standup.md generated standup output
README.md system documentationNaming rule: name the note after the thing so wikilinks resolve. Project note = Projects/[Project Name]/[Project Name].md. Person note = People/[First Last].md. Never create a generic Overview.md-style filename; ambiguous filenames break wikilink resolution.
Frontmatter Standards
Every note gets YAML frontmatter — it is the queryable data model for Obsidian Bases and any future UI, and wikilinks inside it count as graph edges.
You do not write it. obsidian__note_create emits the correct keys for the type you ask for, quotes wikilinks in properties, and stamps created. The type enum in its schema is the list of note kinds; its fields argument takes anything extra ({"status":"On Hold","people":"Jane Doe"}). A project's goal: field holds one quoted wikilink to the Goals/ note it serves — set it with obsidian__note_set_field note="Project Name" field="goal" value="Goal Name", which also lists the project under that goal's own ## Projects section.
To change a property on a note that already exists, use obsidian__note_set_field — it edits that one line and leaves every other byte of the block alone. Which value is right is your judgment; the YAML is not, so do not hand-write it. Keys that decide where a note lives (type, created, date, project, topic) cannot be changed this way; the field enum lists what can.
status: Archived is accepted on project, person, and knowledge notes — set with obsidian__note_set_field note="[Note Name]" field="status" value="Archived" — and means the note is intentionally retired, not merely quiet. Only resurfacing sets it, and only after the user answers that a specific note should be archived; no other skill infers archival from staleness alone. A person or knowledge note has no status in its template, so the first archive adds the field rather than changing it — that is expected, not an error. obsidian__vault_list status="Archived" finds them back; obsidian__vault_list type="project" status="Active" (what standup and weekly-review use) already excludes them.
Existing notes that predate this and lack frontmatter are left as they are. obsidian__section_append never touches frontmatter.
Writing Into Notes
- A new note of any kind ->
obsidian__note_create. It derives the path from type and name, so[[Wikilinks]]to it resolve. It never overwrites a note that already has content — the call succeeds withcreated: falseand a reason, so branch on that and append instead. It refuses generic names likeOverview, and names containing#,|,[, or], which would break the wikilink to the note. - Template notes (frontmatter
template: true) are not writable by any tool. A write to one is refused, because every note later created from it would inherit the contamination. - Content under an existing heading ->
obsidian__section_append. It appends at the end of the named section, so content cannot land after the wrong heading or at the bottom of the file. When the section holds a table it appends a table row; pass the content pipe-delimited (| 2026-07-31 | Topic | Summary |) and it names the columns if you get it wrong. - A dated entry in a running log ->
obsidian__log_append. A project note's## Activity Logand an index note's## Review Logare built from### YYYY-MM-DDblocks; it writes that heading for you, keeps the newest date at the top, and merges a same-day second entry into that day's block. Pass the entry text only.obsidian__section_appendon such a section drops a bare line above the first date heading, which is not an entry and is not where a reader looks. - A journal entry ->
obsidian__daily_log. A checkbox item ->obsidian__checklist_set. A task ->obsidian__task_add.
Repeat calls are safe: identical content is skipped, and in a dated log block or a table a reworded repeat is refused too, quoting the entry it resembles.
Treat that refusal as information about yourself, not an obstacle. It means you already wrote this earlier in the turn — the write landed, and the reply you have not sent yet is the only thing still missing. Rewording and retrying is what produced three copies of one board purchase and two of one conversation on 2026-08-02. allow_similar=true is for a genuinely separate event that reads alike; obsidian__log_remove is how a mistaken entry comes back out, so no vault fix ever needs a direct file edit.
Linking Rules (Wikilinks First)
Links are the graph — backlinks, graph view, and any future UI all come from wikilinks. Every cross-reference between notes must be a wikilink, never plain text:
- Project mentions ->
[[Project Name]](resolves toProjects/[Project Name]/[Project Name].md). - Person mentions ->
[[First Last]]. - Daily note references ->
[[YYYY-MM-DD]]. - Knowledge notes ->
[[Note Title]], and link them from projects, tasks, daily notes, and people notes when they contain reusable reference. - Tasks in
Tasks.mdlink their project with[[Project Name]]inline —obsidian__task_adddoes this for you from theprojectargument. - A wikilink to a note that does not exist yet is fine — it is an intentional "unresolved link" that marks a candidate note and still shows in the graph. Do not create the target note just to satisfy the link.
obsidian__vault_links direction=unresolvedlists them.
Other shared rules:
- Use exact project names consistently between the project note and task lines in
Tasks.md.obsidian__task_addrejects a project with no note rather than creating a dangling link. - Reference tasks from project files by clear task text under
## Related Tasks. - Do not turn a knowledge-base capture into a task, project decision, journal entry, or people note unless the user's wording clearly calls for that extra routing.
- Do not infer task completion from project status, or project status from task completion, unless the user says so explicitly.
- Preserve user wording when logging journal or conversation notes, then add concise structure around it.
Edit Policy for Machine Changes
What automated passes (nightly consolidation, entity linking) may do to existing notes. Where a tool enforces the rule, it is named — that rule needs no vigilance from you.
- Allowed inline: converting a plain-text mention of an existing person, project, or knowledge note into a wikilink — exact same words, only brackets added. Enforced by
obsidian__linkify, the only tool that edits inside prose. It skips headings, code, URLs, frontmatter, and existing links, and links only the first mention per note. - Everything else is append-only:
## Relatedsections, MOC updates, synthesis notes, review-log entries. Enforced byobsidian__section_append,obsidian__log_append, andobsidian__relate, which only ever append. - Idempotent re-runs: re-running a pass over the same notes must change nothing. Enforced by every write tool skipping content already present —
obsidian__section_appenddedupes,obsidian__log_appendjoins the day's existing block instead of starting another,obsidian__task_addrejects near-duplicates,obsidian__relateskips linked targets,obsidian__checklist_setmerges into the existing line,obsidian__linkifysees its own brackets. - Never rewrite, reorder, or summarize user prose, especially in
Daily/notes. - Never delete. Merging means all content lands in the destination. Enforced by the tool surface: nothing exposed deletes a note, and only two tools remove a line at all — both bounded to inboxes, and both requiring the content to exist elsewhere first.
- Inbox routing is the one sanctioned move. Enforced by
obsidian__inbox_route, which writes the destination, verifies it, and only then removes the source line — so the item cannot end up nowhere.obsidian__inbox_clearcovers the other half: an item already captured byobsidian__task_addorobsidian__note_createis cleared by naming the note that took it. - Connections between notes are the model's judgment, not the server's.
obsidian__relatefixes the shape of a connection and caps how many one note takes in a night — inbound mirrored links included; deciding which notes are related, and writing the reason, is yours. - A bounded log stays bounded in the same write:
obsidian__log_appendwithkeep_newest=20caps a## Review Logat its 20 newest dated blocks as it appends.obsidian__section_append's ownkeep_newestcovers flat lists only, and refuses a dated section by name rather than deleting whole days around a line it cannot count. This is the only sanctioned trimming, and it is not content deletion. Standup.mdis the one generated note, replaced whole each morning byobsidian__standup_write. No other note can be replaced, and the native write tools remain off-limits everywhere including here.- Snapshot around any automated pass with
obsidian__vault_snapshot:scope="all"first to park the user's own uncommitted edits, then the defaultscope="machine"after, which commits only what the pass wrote. One reviewable commit per pass is the recovery story, and scoping is what keeps reverting it from discarding the user's work.
Routing
Route to the narrowest matching skill:
- Standup/status synthesis -> use
standup. - Questions answered from vault content ("what do I know about X", "what did Sam and I discuss", "summarize my week") -> use
vault-recall. Read-only; route any resulting changes to the owning skill. - Project creation, project status, decisions, blockers, project docs, meeting notes, project conversations -> use
project-tracking. - What a project or set of projects is working toward ("my goal this quarter is…"), linking a project to a goal, marking a goal achieved or dropped, "how is
<goal>going" -> usegoals. - A meeting transcript, a dictated recap, or bullet notes from a call/meeting (including voice bridge captures) -> use
meeting-notesto ingest it; it routes the results intoproject-tracking,task-tracking, andpeople-notes. - Task creation, status changes, due dates, waiting states, priorities, completion -> use
task-tracking. - Daily note entries, mood, energy, food, purchases, media consumed as a personal diary item, exercise, personal observations -> use
daily-journal. - Person notes, conversations, pending topics, relationship context, project associations -> use
people-notes. - Arbitrary facts, reference material, evergreen information, learning notes, how-to links, factual web/video/article captures, and topic notes that are not tied to a project/person/journal -> use
knowledge-base. - Nightly linking, inbox triage, MOC maintenance, synthesis -> use
nightly-consolidation. - "Pick up X at [store]" / store shopping items -> use
shopping-list(writes toShopping/[Store Name].md). Errands with deadlines also get a task viatask-tracking. - Product/startup idea capture, scoring, comparison, promote-to-project decisions -> use
idea-pipeline(writes toIdeas/). - Quick captures that are not clearly classifiable -> when no rule fits or the capture is ambiguous,
obsidian__inbox_addit rather than guessing.
When a request crosses boundaries, use each relevant skill in order. Example: I talked to Sam about Project X and need to send the proposal Friday should update people notes, project tracking, and task tracking.
When The User Corrects You
If the user corrects something the agent did, log it before doing anything else: obsidian__correction_log skill="task-tracking" did="marked the task done from a status update" wanted="wait for explicit completion language". One call per correction — did and wanted in plain words, naming the skill that was in play. Then apply the fix. Never re-litigate: the correction is recorded, so there is nothing left to argue.
Knowledge Base Boundary
Use Knowledge Base/ for information the user wants to keep as reusable reference, not for active work state or personal diary context.
Examples that belong in the knowledge base:
- A YouTube video about bike repair.
- A note about how espresso grind size affects extraction.
- A reference link about small-business tax deadlines.
- A factual summary of a technique, product category, recipe method, tool, framework, or concept.
Examples that do not primarily belong there:
Remind me to buy a chain tool->task-tracking.I worked on my bike today and felt great->daily-journal.Use this for the HVAC quoting project->project-tracking, optionally cross-linked toKnowledge Base/if it is reusable reference.I talked to Alex about bike repair->people-notes, optionally cross-linked if factual reference was captured.
Inbox
Use obsidian__inbox_add for unprocessed captures — it dates the entry and creates Inbox.md if needed, so triage can see staleness. Do not let items sit there when the user clearly gave enough information to route them into a project, task, daily note, person file, or knowledge-base note.
Safety
- Do not invent owners, dates, decisions, blockers, relationships, or factual claims.
- If a project/person/task/topic does not exist, create it only when the user's intent is clear. Otherwise, capture to
Inbox.mdwith a note about the ambiguity. - Keep private/personally sensitive material inside the vault; do not repeat unnecessary personal details in public or shared channels.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

