BenAI Obsidian Plugin assistant — manages sessions, daily routines, tasks, memory, resources, output styles, and meeting intelligence. Mode-aware (professional, business). Handles resume, compress, preserve, daily review, task management, resources, style switching, and meeting transcript processing. Use when user says "resume", "compress", "morning review", "tasks", "resources", "output style", "meeting", "transcript", or runs /assistant.
From obsidiannpx claudepluginhub naveedharri/benai-skillsThis skill uses the workspace's default tool permissions.
references/obsidian-cli.mdreferences/obsidian-formatting.mdreferences/style-blog-post.mdreferences/style-conversation.mdreferences/style-email.mdreferences/style-meeting-summary.mdreferences/style-quick-reply.mdreferences/style-report.mdreferences/style-sop.mdreferences/style-youtube-script.mdreferences/template-evening.mdreferences/template-meeting-note.mdreferences/template-morning-business.mdreferences/template-morning.mdreferences/template-weekly-business.mdreferences/template-weekly.md./claude.md or ./CLAUDE.md exists in the current working directory/setup to bootstrap your vault." — then stopRead the claude.md file and check for os-mode in the frontmatter or first few lines:
os-mode: business → Business modeos-mode: professional or not specified → Solopreneurs/Professionals mode (default)The detected mode affects routing, file paths, review templates, and available features throughout this skill.
Match the user's intent to the right section:
| User says... | Go to |
|---|---|
| "resume", "start session", "pick up where I left off" | Resume Session |
| "save", "compress", "end session", "wrap up session" | Compress / Save Session |
| "remember this", "preserve", "save permanently" | Preserve Knowledge |
| "morning", "evening", "daily review", "weekly review" | Daily Review |
| "task", "to-do", "create task", "check tasks" | Task Management |
| "output style", "writing style", "switch style" | Output Styles |
| "save this prompt", "swipe file", "framework", "template", "resources" | Resources |
| "meeting", "transcript", "action items", "Fireflies", "sync meetings" | Meeting Intelligence |
If unclear, show this table and ask what they need.
When Obsidian is running, use the CLI for vault operations — it triggers Obsidian events and keeps the UI in sync:
obsidian read file="Note Name" # Read a note
obsidian create name="Note" content="..." # Create a note
obsidian append file="Note" content="..." # Append to a note
obsidian daily:read # Read today's daily note
obsidian daily:append content="..." # Append to daily note
obsidian search query="term" limit=10 # Search vault
obsidian tasks # List tasks
obsidian property:set file="Note" key="status" value="done"
Check if available: which obsidian. If unavailable, fall back to direct file read/write.
For full CLI reference, read references/obsidian-cli.md.
All vault notes MUST use OFM syntax. Key rules:
[[Note]], [[Note|Display Text]], [[Note#Heading]] — never markdown links for internal notes> [!type] Title — use for visual structure (tip, warning, important, question, todo, success)![[Note]], ![[image.png|300]]==text==%%hidden%%For full reference, read references/obsidian-formatting.md.
The vault structure depends on the detected mode.
claude.md -- Root config (os-mode: professional)
.claude/output-styles/ -- Output style definitions
Context/me.md -- Who the user is
Context/strategy.md -- Vision, goals, monthly focus (optional)
Context/business.md -- Company context (optional)
Context/team.md -- Team members (optional)
Context/brand.md -- Voice and tone (optional)
Projects/*/README.md -- Active project contexts
Intelligence/meetings/ -- Meeting transcripts and insights
Intelligence/competitors/ -- Competitive intelligence
Intelligence/decisions/ -- Decision records
Intelligence/archive/ -- Archived content
Daily/ -- Daily journals and session logs
Resources/ -- Prompts, frameworks, swipe files, templates
Skills/ -- Skill-specific references: strategy, voice, reference material (user-editable)
TaskNotes/Tasks/ -- Task files (managed by TaskNotes plugin)
claude.md -- Root config (os-mode: business)
.claude/output-styles/ -- Output style definitions (+ sop.md, report.md)
Context/operator.md -- Who operates this vault (role, authority)
Context/organization.md -- Company info, org structure
Context/team.md -- Team members (always created)
Context/strategy.md -- OKRs, department goals (always created)
Context/brand.md -- Voice and tone (optional)
Context/stakeholders.md -- Vendors, partners, investors (optional)
Projects/*/README.md -- Active project contexts
Departments/*/README.md -- Department charters, KPIs, SOPs
Teams/*/README.md -- Team overviews, members, goals, rituals
Teams/*/{person}.md -- Person profiles (role, working style, notes)
Intelligence/meetings/ -- Meeting transcripts (+ board-reviews, all-hands, cross-team)
Intelligence/competitors/ -- Competitive intelligence
Intelligence/processes/ -- Org-wide SOPs, runbooks
Intelligence/decisions/ -- Decision records
Intelligence/archive/ -- Archived content
Daily/ -- Work logs and session logs
Onboarding/ -- Onboarding documentation
Resources/ -- Prompts, frameworks, swipe files, templates
Skills/ -- Skill-specific references: strategy, voice, reference material (user-editable)
TaskNotes/Tasks/ -- Task files (managed by TaskNotes plugin)
Reconstruct full context so the user picks up where they left off.
Context/me.md, glob Projects/*/README.md, scan Context/strategy.md if it existsContext/operator.md, Context/organization.md, glob Projects/*/README.md, glob Departments/*/README.md, scan Context/strategy.md
Prefer obsidian read if CLI is available; otherwise read files directly.Daily/ (sorted by filename date). With a number arg: last N notes. With a keyword arg: last 3 + obsidian search query="keyword" across all daily notes. Read Quick Reference sections first (low token cost); dig deeper only if needed.obsidian tasks (if CLI available)curl -s "http://127.0.0.1:8080/api/tasks?status=open"Context/strategy.md has content, scan for active goals and approaching milestonesWelcome back, [name].
**Last session** (date): [Brief summary — link [[projects]] mentioned]
**In Progress**: [[Project-A]] — [task], [[Project-B]] — [task]
**Pending**: [[Project-Name]] — [items left over]
**Upcoming**: [[Project-Name]] — [deadlines, milestones]
What would you like to focus on today?
Business mode: also include department status and OKR progress if available.Daily/YYYY-MM-DD.md with a "Current Session" section. Prefer obsidian daily:append if CLI available.Save everything valuable from the current session so future sessions can pick up seamlessly.
Daily/YYYY-MM-DD.md (prefer obsidian daily:append if CLI available):
## Session Log: HH:MM — [Topic Summary]
### Quick Reference
**Topics:** [comma-separated — use [[wikilinks]] for projects and people]
**Projects:** [[Project-Name]], [[Project-Name]]
**Outcome:** [what was accomplished]
**Duration:** [approximate]
> [!important] Decisions Made
> - [[Project-Name]] — [Decision — reasoning]
> [!tip] Key Learnings
> - [Learning — link [[related notes]] when applicable]
> [!info] Solutions & Fixes
> - [[Project-Name]] — [Problem -> Solution]
### Files Modified
- [file path — what changed]
> [!todo] Pending Tasks
> - [ ] [[Project-Name]] — [Task]
### Raw Session Summary
[Condensed summary — use [[wikilinks]] for every project, person, and vault note mentioned]
Only include YAML frontmatter if creating a new file. Keep Quick Reference to 5-6 lines max (it's designed for fast AI scanning on resume). Every project, person, and vault note reference MUST use [[wikilinks]] — this is what builds the graph.Context/me.md, project updates → Projects/{name}/, strategy changes → Context/strategy.mdContext/operator.md, org updates → Context/organization.md, department updates → Departments/{name}/, team/person info → Teams/{team-name}/, process updates → Intelligence/processes/Skills/{skill-name}/Context/me.md → Intelligence/archive/me-archive-YYYY-MM.mdContext/operator.md → Intelligence/archive/operator-archive-YYYY-MM.mdSave durable knowledge that persists indefinitely (unlike compress, which saves session context).
Solopreneurs/Professionals mode routing:
| Type | File |
|---|---|
| User preferences, style, habits | Context/me.md |
| Project info | Route to the right file in Projects/{name}/ (see Project Intelligence) |
| Business insight | Context/business.md |
| Strategy and goals | Context/strategy.md |
| Competitive insight | Intelligence/competitors/{name}.md |
| Market insight | Intelligence/market/{topic}.md |
| Decision with reasoning | Intelligence/decisions/YYYY-MM-DD-{title}.md |
| Reusable content (prompts, frameworks, templates) | Resources/ |
| Skill-specific content (references, strategy for a skill) | Skills/{skill-name}/ |
| Rules for assistant behavior | Root claude.md (Rules section) |
Business mode routing:
| Type | File |
|---|---|
| Operator preferences, work style | Context/operator.md |
| Org structure, company info | Context/organization.md |
| Team member info | Context/team.md |
| Strategy, OKRs, goals | Context/strategy.md |
| Brand, voice, tone | Context/brand.md |
| Vendor/partner/investor info | Context/stakeholders.md |
| Department info, charter, KPIs | Departments/{name}/README.md |
| Department SOP | Departments/{name}/sops/{name}.md |
| Team info, goals, rituals | Teams/{team-name}/README.md |
| Person profile, role, working style | Teams/{team-name}/{person}.md |
| Org-wide process/runbook | Intelligence/processes/{name}.md |
| Project info | Route to the right file in Projects/{name}/ (see Project Intelligence) |
| Competitive insight | Intelligence/competitors/{name}.md |
| Market insight | Intelligence/market/{topic}.md |
| Decision with reasoning | Intelligence/decisions/YYYY-MM-DD-{title}.md |
| Onboarding docs | Onboarding/{name}.md |
| Reusable content | Resources/ |
| Org document templates | Resources/templates/ |
| Skill-specific content (references, strategy for a skill) | Skills/{skill-name}/ |
| Rules for assistant behavior | Root claude.md (Rules section) |
When the user corrects you, automatically add a rule to claude.md under the Rules section. Don't ask — just do it and confirm what was added.
Morning check-in, evening reflection, and weekly review routines. Templates differ by mode.
| Review | Solopreneurs/Professionals | Business |
|---|---|---|
| Morning | references/template-morning.md | references/template-morning-business.md |
| Evening | references/template-evening.md | references/template-evening.md |
| Weekly | references/template-weekly.md | references/template-weekly-business.md |
Read the appropriate template before generating the review.
Daily/Projects/ for approaching deadlinesDepartments/ for department status, upcoming meetingsDaily/YYYY-MM-DD Morning.md with appropriate frontmatterDaily/YYYY-MM-DD Evening.md with appropriate frontmatterProjects/ for movementContext/strategy.md — flag goals with no active projectDaily/YYYY-MM-DD Weekly Review.md with appropriate frontmatterTwo interfaces available for task management. Try in order:
obsidian tasks # List all tasks
obsidian daily:append content="- [ ] Task" # Quick task in daily note
TaskNotes runs as an Obsidian plugin with an HTTP API on localhost:8080. Tasks are stored as markdown files in TaskNotes/Tasks/.
curl -s --max-time 2 "http://127.0.0.1:8080/api/tasks" > /dev/null 2>&1 && echo "API running" || echo "API not available"
If neither is available: "Task system isn't responding. Make sure Obsidian is open." Do NOT fall back to file-based task creation.
Base URL: http://127.0.0.1:8080/api
| Operation | Method | Endpoint | Body |
|---|---|---|---|
| List all | GET | /tasks | — |
| List by status | GET | /tasks?status=open | — |
| Create | POST | /tasks | {"title", "status", "priority", "due", "scheduled", "projects", "contexts", "tags"} |
| Update | PUT | /tasks/Tasks/task-name.md | {"status": "in-progress"} |
| Complete | PUT | /tasks/Tasks/task-name.md | {"status": "done"} |
| Delete | DELETE | /tasks/Tasks/task-name.md | — |
| Options | GET | /options | — |
open (default), in-progress, donenone, low, normal (default), highdue (YYYY-MM-DD), scheduled (YYYY-MM-DD), projects (array), contexts (array), tags (array), timeEstimate (minutes), blockedBy (array of task paths)title and statusdue dates when user mentions a deadlineprojects when clearly related to a known projectOutput styles define how the assistant communicates. Styles are bundled as reference files within this skill (references/style-*.md). Users can override or add custom styles in .claude/output-styles/.
All modes:
| Style | Reference File | Use When |
|---|---|---|
| Conversation | references/style-conversation.md | Default — chat, brainstorming, Q&A |
| YouTube Script | references/style-youtube-script.md | Video scripts |
| Blog Post | references/style-blog-post.md | Long-form articles |
| Quick Reply | references/style-quick-reply.md | DMs, short messages |
references/style-email.md | Professional emails | |
| Meeting Summary | references/style-meeting-summary.md | Meeting transcripts |
Business mode only:
| Style | Reference File | Use When |
|---|---|---|
| SOP | references/style-sop.md | Standard operating procedures |
| Report | references/style-report.md | Business reports for stakeholders |
.claude/output-styles/{style-name}.md exists in the vault, use that (user override)references/style-{style-name}.md from this skill's referencesconversation style unless told otherwiseyoutube-script stylemeeting-summaryconversation.claude/output-styles/[style-name].md with sections: Identity, Tone, Format, Rules, ExamplesUser voice from the primary context file is applied ON TOP of the active style. Style files define structure; preferences define personality. If Context/brand.md exists (Solopreneurs/Professionals / Business modes), also apply brand guidelines.
.claude/output-styles/ first for user overrides, then fall back to bundled referencesResources/ is the user's personal library — swipe files, prompts, frameworks, templates, and reference material.
When the user shares reusable content (a great prompt, a framework, a template, reference material):
Resources/ with a descriptive filenameResources/prompts/, Resources/frameworks/, Resources/swipe/)Resources/templates/tags: in frontmatter so resources surface in Bases queriesWhen the user asks for a saved prompt, framework, or template:
Resources/: ls Resources/grep -rl "keyword" Resources/[[wikilinks]] to reference resources from project notes or daily notesProjects are not flat README-only folders. They are living, structured directories that grow as information accumulates. The assistant manages project structure intelligently.
When the user mentions something about a project, analyze what it is and route it to the right place:
| Content type | Route to |
|---|---|
| Status update, overview change, deadline | Projects/{name}/README.md |
| Research finding, competitor analysis | Projects/{name}/research/{topic}.md |
| Spec, requirement, brief | Projects/{name}/specs/{name}.md |
| Draft, script, written content | Projects/{name}/drafts/{name}.md |
| Idea, brainstorm | Projects/{name}/ideas/{name}.md |
| Working notes, scratchpad | Projects/{name}/notes/{name}.md |
| Feedback, review comments | Projects/{name}/feedback/{name}.md |
| Meeting notes specific to project | Projects/{name}/meetings/{date}-{topic}.md |
Don't pre-create empty directories. When content arrives that needs a subdir:
mkdir -p Projects/{name}/research/)README.md to reference the new content if appropriateThe README.md is the entry point — a project overview with links to deeper content. When subdirectories grow:
research/ for competitor analysis")When loading a project's context (during resume or when the user mentions a project):
Projects/{name}/README.md firstls Projects/{name}/grep to scan across project files when searching for specific infoREADME.mdIntelligence/archive/{name}/README.md frontmatter (status: on-hold, status: completed)When the user shares a URL for context (articles, docs, reference material):
defuddle parse <url> --md
Defuddle strips clutter and returns clean markdown — much more token-efficient than raw web fetching. If defuddle is not installed, fall back to standard web fetch.
Process meeting transcripts, extract decisions and action items, sync from Fireflies, and file meeting notes in the right folder.
USE WHEN the user:
Ask or infer from context. Available types depend on mode:
Solopreneurs/Professionals mode:
| Meeting Type | Save to | Focus |
|---|---|---|
| Team standup | Intelligence/meetings/team-standups/ | What each person did, doing today, blockers. Keep brief. |
| Client call | Intelligence/meetings/client-calls/ | Client requests, decisions, next steps. Check folder for history. |
| One-on-one | Intelligence/meetings/one-on-ones/ | Development, feedback, goals. More personal tone. |
| General | Intelligence/meetings/general/ | Full meeting summary structure. |
| Custom type | Intelligence/meetings/[custom-folder]/ | As appropriate. |
Business mode:
| Meeting Type | Save to | Focus |
|---|---|---|
| Team standup | Intelligence/meetings/team-standups/ | What each person did, doing today, blockers. Keep brief. |
| Client call | Intelligence/meetings/client-calls/ | Client requests, decisions, next steps. Check folder for history. |
| One-on-one | Intelligence/meetings/one-on-ones/ | Development, feedback, goals. More personal tone. |
| Board review | Intelligence/meetings/board-reviews/ | Board decisions, investor updates, governance. Formal tone. |
| All-hands | Intelligence/meetings/all-hands/ | Company-wide announcements, Q&A, culture. Summarize key messages. |
| Cross-team | Intelligence/meetings/cross-team/ | Cross-department coordination, dependencies, shared priorities. |
| General | Intelligence/meetings/general/ | Full meeting summary structure. |
| Custom type | Intelligence/meetings/[custom-folder]/ | As appropriate. |
Read .claude/output-styles/meeting-summary.md and follow its format exactly. If the file doesn't exist, use the template at references/template-meeting-note.md. Read the template before creating any meeting note.
Save as Intelligence/meetings/[type]/YYYY-MM-DD Meeting Title.md with frontmatter:
---
type: meeting
subtype: team-standup | client-call | one-on-one | board-review | all-hands | cross-team | general
date: YYYY-MM-DD
time: HH:MM
participants: [[[Person A]], [[Person B]]]
duration: X minutes
source: manual | fireflies
status: processed
---
Body structure (uses Obsidian callouts for visual structure):
# Meeting: [Title] — YYYY-MM-DD
## Participants
- [[Person A]]
- [[Person B]]
## Summary
[2-3 sentence overview]
> [!important] Key Decisions
> - [Decision 1]
> - [Decision 2]
> [!todo] Action Items
> - [ ] [[Person A]] — [Task] (by [date])
> - [ ] [[Person B]] — [Task] (by [date])
## Discussion Notes
### [Topic 1]
[Summary of discussion]
> [!question] Open Questions
> - [Unresolved item 1]
> [!info] Follow-up
> - Next meeting: [date/time if mentioned]
> - Prepare: [items to prepare]
Use [[wikilinks]] for participants and project references — this creates automatic backlinks in Obsidian.
Business mode additions:
> [!warning] Governance Items callout for board-level decisions> [!info] Company Announcements callout> [!todo] Department Dependencies callout with cross-team action items[[Departments]] when applicableAutomatically create a task for each action item using the TaskNotes API (see Task Management). Tag with ["meeting"]. If the API is unavailable, skip silently — action items are already in the meeting note.
If the meeting relates to a known project (check Projects/*/README.md):
project: [Project Name] to frontmatterBusiness mode: also check Departments/*/README.md and add department: to frontmatter if applicable.
MCP Server (Business Plan): Check .claude/settings.json for a fireflies entry under mcpServers. If configured, use fireflies_list_transcripts and fireflies_get_transcript to sync unprocessed transcripts. Process each through Steps 1-6.
Manual Export (Free Plan): Have user export from app.fireflies.ai (Download > JSON or DOCX), paste content or drop file. Process through Steps 1-6.
Claude Connector: Users with Claude Pro/Max and Fireflies Business can connect via Claude Settings > Connectors.
# Obsidian CLI (preferred)
obsidian search query="Person Name" limit=10
# Fallback: grep
grep -rl "Person Name" Intelligence/meetings/
Query by frontmatter: participants, project, department, date, subtype, source.
[[wikilinks]] for participants and projectssource: fireflies in frontmatterProjects/*/README.md. After responding, route any new knowledge to the right vault file (see Preserve Knowledge routing table).obsidian CLI commands before falling back to direct file access or HTTP APIs.[[wikilink]]. This is what builds the Obsidian graph. Not just internal links — every reference: tasks, daily notes, session logs, meeting notes, decisions, context files. If it's a name that exists (or could exist) as a vault note, wrap it in [[]].claude.md. Don't ask — just save and report.Daily/YYYY-MM-DD.md is the most-read memory file — always keep it current.http://127.0.0.1:8080) → skip. If unavailable, note it and continue without task data.Never ask the user for permission to save. When meaningful information comes up — learnings, preferences, project updates, corrections, action items — save it to the right vault file immediately. After saving, briefly report what was saved and where. The user should never have to say "yes, save that."
Do NOT:
[[wikilinks]][markdown](links) for internal vault notes — always use [[wikilinks]]# Title heading that duplicates the filename — Obsidian shows the filename as titlegrep for frontmatter or obsidian search