An opinionated Obsidian workspace designed for Claude Code workflows. Combines personal knowledge management with AI-powered automation for research synthesis, content creation, and project tracking. Built with sensible defaults but fully customizable to match your style.
Important: Version Control Your Config
Before installing, we recommend setting up your
~/.claudedirectory in git:cd ~/.claude git init git add -A git commit -m "Initial config before installing claude-obsidian"This creates a safety checkpoint. If you don't like these configurations, you can easily revert:
cd ~/.claude git reset --hard HEAD # Revert to before installation
- Quick Start
- What's Included
- Prerequisites
- Installation
- Setting Up Obsidian
- Getting Started
- Customization
- Advanced Topics
- Reference
Get up and running in under 5 minutes:
-
Back up your config (if you have existing ~/.claude):
cd ~/.claude && git init && git add -A && git commit -m "Backup before claude-obsidian"
-
Install:
- Fresh install:
git clone https://github.com/YOUR_USERNAME/claude-obsidian ~/.claude && cd ~/.claude && ./setup.sh - Existing config: See Installation Options
- Fresh install:
-
Set up Obsidian:
./setup-obsidian.sh ~/obsidian(or your vault path) -
Try it: Run
claude codein your terminal and execute/today
For detailed installation options and configuration, see Installation.
| Skill | Command | Description |
|---|---|---|
| Today | /today |
Refresh all dashboards - daily, research, GitHub, thinking sessions |
| GitHub Dashboard | /github-dashboard |
Generate org analytics - PRs, commits, contributors, trends |
| Daily Sync | /daily-sync |
Process daily notes, extract tasks, update daily dashboard |
| Sync Dashboard | /sync-dashboard |
Update Obsidian research dashboard |
| Sync Thinking | /sync-thinking |
Update thinking sessions dashboard with stats |
| Promote Thinking | /promote-thinking |
Convert resolved thinking sessions into formal research docs |
| Ghostwrite Twitter | /ghostwrite-twitter |
Generate tweets using multi-model voice validation |
| Clean Interviews | /clean-interviews |
Standardize user interview notes, add frontmatter, aggregate insights |
| Figma to Code | /figma-to-code |
Generate React/Next.js code from Figma designs |
| Apple Notes Import | /apple-notes-import |
Import notes from Apple Notes for processing |
| Notion | /notion |
Notion integration for page operations |
| Adversarial Spec | /adversarial-spec |
Iteratively refine specs by debating with multiple LLMs |
| Agent | Purpose |
|---|---|
| thinking-partner | Explore complex problems, brainstorm solutions, rubber-duck ideas |
| writing_critic | Relentless critique of written content for style and quality |
New to the terminal? See our Terminal for Beginners guide for setup recommendations.
Required:
- Claude Code installed
- Obsidian - most skills integrate with Obsidian for dashboards and note management
- Git
- Bash 3.2+ (macOS default works)
Optional:
- GitHub CLI (
gh) - for/github-dashboardskill - Notion MCP server - for
/notionskill - Figma MCP server - for
/figma-to-codeskill
Choose the installation approach that fits your situation:
- Option A: Fresh Install - No existing ~/.claude folder, or want to start fresh
- Option B: Merge with Existing Config - Have existing CLAUDE.md, settings, or custom skills
- Option C: Cherry-pick Skills - Want specific skills without the full template
If you don't have an existing ~/.claude folder, or want to start fresh:
# Clone template directly to ~/.claude
git clone https://github.com/YOUR_USERNAME/claude-obsidian ~/.claude
cd ~/.claude
# Run setup
./setup.shIf you already have a ~/.claude folder with your own CLAUDE.md, settings, or custom skills:
# Clone to a separate location
git clone https://github.com/YOUR_USERNAME/claude-obsidian ~/code/claude-dotfiles
# Run setup in merge mode
cd ~/code/claude-dotfiles
./setup.sh --mergeThis will:
- Add new skills/agents that don't exist in your config
- Preserve all your existing files (CLAUDE.md, settings.json, custom skills)
- Prompt before overwriting any config files
- Create backups if you choose to replace files
If you only want specific skills without the full template:
# Clone to temp location
git clone https://github.com/YOUR_USERNAME/claude-obsidian /tmp/claude-dotfiles
# Copy just the skills you want
cp -r /tmp/claude-dotfiles/skills/github-dashboard ~/.claude/skills/
cp -r /tmp/claude-dotfiles/skills/ghostwrite-twitter ~/.claude/skills/
# Clean up
rm -rf /tmp/claude-dotfilesThe setup script will prompt for:
- Git name: Author name for AI commits (e.g., "Your Name (ai)")
- SSH key path: Key for signing commits (default: ~/.ssh/id_ed25519)
- Claude directory: Usually ~/.claude
- Obsidian vault path: Where your Obsidian vault lives (default: ~/obsidian)
- GitHub org: Organization for dashboard analytics (optional)
- Twitter handle: For ghostwriting skill (optional)
For scripted installations:
GIT_NAME="Your Name (ai)" \
SSH_KEY_PATH="$HOME/.ssh/id_ed25519" \
OBSIDIAN_VAULT_PATH="$HOME/obsidian" \
GITHUB_ORG="your-org" \
TWITTER_HANDLE="yourhandle" \
./setup.sh --non-interactive
# Or with merge mode:
./setup.sh --merge --non-interactive| Flag | Description |
|---|---|
--merge, -m |
Merge with existing config instead of in-place setup |
--target DIR, -t DIR |
Target directory (default: ~/.claude in merge mode) |
--force, -f |
Overwrite existing files without asking |
--dry-run, -d |
Show what would be done without making changes |
--non-interactive, -n |
Use environment variables or defaults (no prompts) |
Many skills integrate with Obsidian for note-taking and dashboard management.
Run the Obsidian setup script:
./setup-obsidian.sh
# Or specify a custom path:
./setup-obsidian.sh /path/to/your/vaultThis creates:
your-vault/
|-- .dashboard-archive/ # Dashboard snapshots
|-- .thinking-archive/ # Thinking session archives
|-- Daily Notes/ # Daily notes
|-- Research/
| |-- User interviews/ # Interview notes
|-- Writing/
| |-- Tweets/ # Tweet drafts
|-- Thinking/
| |-- Sessions/ # Thinking sessions
|-- daily-dashboard.md
|-- research-dashboard.md
|-- github-dashboard.md
|-- thinking-dashboard.md
Important: When opening your vault in Obsidian:
- Click "Open" (not "Create")
- Select "Open folder as vault"
- Navigate to your vault path (e.g., ~/obsidian)
Do NOT use "Create new vault" - this will hide the folder contents from Finder/file browsers.
The setup script creates starter dashboards. Run these skills to populate them:
/today- Refresh all dashboards at once/daily-sync- Update daily dashboard with tasks/sync-dashboard- Update research dashboard/github-dashboard- Fetch GitHub org analytics/sync-thinking- Update thinking session stats
After installation, here's how to start using the template:
For detailed workflow guidance and skill usage tips, see the Usage Guide.
-
Verify installation: Open Claude Code and check that skills are loaded with
/help -
Run your first dashboard refresh: Execute
/todayto populate all dashboards at once -
Explore individual skills:
/github-dashboard- Generate GitHub org analytics/daily-sync- Process daily notes and extract tasks/sync-dashboard- Update research dashboard/ghostwrite-twitter- Generate tweets (requires voice profile setup)
-
Customize your setup: See Customization for adding your own skills
-
Review the documentation: Check Advanced Topics for directory structure and updating
Create a new directory under skills/:
skills/my-skill/
|-- skill.json # Skill metadata
|-- SKILL.md # Skill instructions (prompt)
Example skill.json:
{
"name": "my-skill",
"description": "What this skill does",
"user_invocable": true
}Edit the CLAUDE.md.template file, then regenerate:
./setup.sh --forceOr edit CLAUDE.md directly (it will be overwritten by setup.sh unless you remove the template).
For the ghostwrite-twitter skill, create a voice profile:
-
Copy the template:
cp voice-profiles/voice-profile.template.md voice-profiles/yourhandle-twitter.md
-
Fill in your writing style, vocabulary, and example tweets
~/.claude/
|-- CLAUDE.md # Global instructions (generated from template)
|-- settings.json # Claude Code settings (generated)
|-- statusline.sh # Status line customization
|-- config/
| |-- paths.env # Path configuration (generated)
| |-- README.md
|-- skills/ # Skill definitions
| |-- today/
| |-- github-dashboard/
| |-- ...
|-- agents/ # Custom agent definitions
| |-- thinking-partner.md
| |-- writing_critic.md
|-- scripts/ # Utility scripts
|-- voice-profiles/ # Twitter voice profiles
|-- obsidian/ # Obsidian-specific config
|-- CLAUDE.md # Obsidian project instructions
|-- config/
cd ~/.claude
git pull
./setup.sh # Re-run setup to process any new templatesYour generated files (CLAUDE.md, settings.json, etc.) will only be overwritten if you use --force.
cd ~/code/claude-dotfiles # wherever you cloned the template
git pull
./setup.sh --merge # Adds new skills, preserves your customizationsThis will add any new skills or agents from the template update while preserving your existing configuration.
If you're maintaining your own fork of this template, use the sync script to pull changes from your personal config:
./sync-from-personal.sh
git status # Review changes
git add -A && git commit -m "Sync from personal config"
git pushThe sync script:
- Copies skills, agents, and scripts
- Replaces personal identifiers with template variables
- Skips runtime directories (cache, data, etc.)
- macOS-focused: Some scripts use macOS-specific paths and tools
- Obsidian integration: Dashboard skills require Obsidian vault structure
- GitHub CLI: GitHub dashboard requires
ghCLI and authentication - Twitter ghostwriting: Requires manual voice profile setup
Contributions welcome! Please:
- Fork this repository
- Create a feature branch
- Submit a pull request
For bug reports and feature requests, open an issue.
MIT License - See LICENSE for details.
Built with Claude Code