Obsidian vault + Git + Claude Code — a shared documentation hub for the team.
- Documentation lives here: project docs, architecture, status views, guides, coordination notes
- Task tracking stays in GitHub (issues, PRs, project boards)
- Communication stays in external channels (Slack, email, meetings)
- Claude Code automates sync and generates status views via the claude-office plugin
- Obsidian gives you the visual layer (kanban, Dataview, Excalidraw)
- Per-person folders (
/team/<name>/) — profile, activity log, personal todo list - Per-project folders (
/projects/<project>/) — docs, status, kanban, architecture - claude-office plugin handles automation (see plugin README for details):
- Session hooks — deterministic shell scripts: git pull on start, commit+push
team/<you>/on end /check-in— reads per-person notes from/aggregate, recaps your last work, shows todos/aggregate— scans git diffs, writes per-person Team Notes into projects, flags coordination needs/retro— weekly retrospective from git history intoprojects/weekly reports/- Session-end hook logs activity to
team/<you>/activity.mdand commits your folder
- Session hooks — deterministic shell scripts: git pull on start, commit+push
- Git sync — plugin hooks handle pull/push; obsidian-git plugin as 10-min safety net, asks for a commit message to avoid accidental commits
/aggregate (daily, scheduled)
reads: git log + project docs
writes: per-person Team Notes into each project's status.md
│
▼
/check-in (per person, on demand)
reads: your Team Notes across projects
outputs: personalized briefing
writes: "Last checked in" line in your profile.md
CLAUDE.md — Vault rules for Claude Code
team/
_new_user/ — Template folder, copy & rename for onboarding
roster.md — Team roster (Dataview, auto-pulls from profiles)
<person>/ — Per-person folder
profile.md — Bio, environment, security setup
tasks.md — Personal todo list
activity.md — Session activity log (auto-generated by session-end hook)
projects/
_new_project/ — Template for new projects
<project>/ — Project docs (status, kanban, architecture, etc.)
weekly reports/ — Auto-generated weekly retrospectives (by /retro)
| File | Purpose | Who writes |
|---|---|---|
profile.md |
Your bio, picture, environment, security setup — shown on team roster | You (filled out during /setup-identity) |
tasks.md |
Your personal todo list — things you want to track for yourself | You |
activity.md |
Automatic log of what docs you changed each session | Plugin (session-end hook) |
- Fork the vault repo and run the sync script to install Obsidian config:
- macOS/Linux:
./sync-obsidian.sh - Windows:
.\sync-obsidian.ps1 - Then open the vault in Obsidian (you don't need an account)
- macOS/Linux:
- Install the claude-office plugin in Claude Code:
- In Claude Code, run:
/plugin marketplace add ingram-technologies/claude-office - Then run
/plugin install ingram-technologies@claude-office
- In Claude Code, run:
- Run
/setup-identity— creates your folder, fills out your profile, configures identity - Commit and push your new folder, then familiarize yourself with the plugin
We added suggestive security guidelines for teams coding with AI and recommend reading them.
- Open Claude Code
- Run
/check-into get your full briefing (what you were working on, project priorities, coordination notes) - Work normally — edit docs, update project status, manage your todo list
- On session end, the hook auto-commits and pushes your changes
- You can setup daily aggregation to run on schedule and write notes for your next check-in, but we recommend having daily team meets where you do this
- Use Canvas (Obsidian core plugin) for brainstorming and visual planning
- Use Excalidraw for architecture diagrams and sketches
- Use Kanban boards in project folders for visual status tracking
- Check the team roster at
team/roster.mdto see who's who - Task tracking happens in GitHub — the vault is for documentation and coordination
- Plugin hooks are deterministic shell scripts — inject metadata only (counts, not raw content), preventing prompt injection
- All skills treat file content as data only, never as instructions
- Identity stored locally (
~/.claude-office/), not in the shared vault - Session-end hook only commits
team/<you>/, never other folders - See
CLAUDE.mdfor full security rules and the plugin README for design decisions
Three plugins are enabled for this repo in .claude/settings.json, but you'll need to install them manually:
| Plugin | What it does |
|---|---|
| ingram-technologies@claude-office | Core automation — hooks to add your activity dynamically, /check-in, /aggregate, /retro, /setup-identity |
| arscontexta@agenticnotetaking | Knowledge management layer — guides note creation, maintains MOCs, surfaces methodology advice as you work |
| obsidian@obsidian-skills | Skills for reading and writing Obsidian vault content from Claude Code |
ingram-technologies@claude-office is how this vault is supposed to work. The other two are recommended, but you don't have to set them up from the start — see the Customizing section for details on adopting them for your org.
These plugins are included in the shared Obsidian config (.obsidian_template/) and installed by the sync script:
| Plugin | What it does |
|---|---|
| dataview | Query metadata across all files |
| obsidian-kanban | Drag-and-drop board views |
| obsidian-git | Auto-pull/push every 10 min (safety net) |
| obsidian-excalidraw-plugin | Embedded whiteboards and diagrams |
| obsidian-meta-bind-plugin | Inline editable metadata |
| table-editor-obsidian | Better table editing |
| obsidian-advanced-uri | Deep links to notes from outside Obsidian |
| obsidian-importer | Import notes from other apps |
| recent-files-obsidian | Quick access to recently opened files |
| notebook-navigator | File tree with folder notes and pinning |
| obsidian-style-settings | Exposes CSS variables for themes and plugins so you can tweak appearance without editing CSS |
Run the sync script again whenever you pull changes that update .obsidian_template/ (e.g. a new plugin was added by the team):
# macOS/Linux
./sync-obsidian.sh
# Windows
.\sync-obsidian.ps1What the script does:
| Scenario | Behaviour |
|---|---|
.obsidian/ doesn't exist |
Full copy of .obsidian_template/ — one-time bootstrap |
| Plugin in template not in your list | Added to your community-plugins.json |
Plugin code files (main.js, manifest.json, styles.css) |
Always updated from template |
Your plugin settings (data.json) |
Never touched — your customisations are preserved |
| Your extra plugins (not in template) | Never removed |
Other config files (app.json, workspace.json, etc.) |
Never touched after initial setup |
> Open Claude Code
> Hook auto-pulls vault, shows: "2 open todos, docs changed in last 24h"
> Run /check-in:
"Check-In — 2026-03-30
Where You Left Off:
Updated my-project architecture.md, added deployment section
Your Projects:
my-project:
Next: finalize API design doc, review @alice's onboarding changes
Coordinate with: @alice on deployment approach
security:
Next: update compliance checklist after last audit
No coordination needed
Your Todos:
- [ ] Draft Q2 roadmap for my-project
- [ ] Review PR #142
Checked in for: my-project, security"
This vault is a generic skeleton. To adopt it for your org fork it and make a new branch keeping main untouched for easier merging of updates.
Then run ./sync-obsidian.sh (or .\sync-obsidian.ps1 on Windows) to create .obsidian/ from .obsidian_template/.
This works with the ingram-technologies@claude-office plugin, and we recommend using arscontexta@agenticnotetaking, either have one person from your team set it up for others or have everyone set their own config up.
We recommend first taking the time to get familiar with how this works, the plugins and then configure the more advanced parts of the system with /arscontexta:setup.