Agent skill

Cache Notes

by benoror in benoror/obsidianos_work

Fetch & embed AI transcripts as Obsidian callouts. An agent skill from benoror/obsidianos_work.

MITAuto-check passedDocuments & Office

Install Cache Notes

skills CLI
$ npx skills add benoror/obsidianos_work --skill cache-notes -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install benoror/obsidianos_work cache-notes --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/benoror/obsidianos_work.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/cache-notes .claude/skills/cache-notes && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cache-notes
GitHub stars
165
Token cost
~2.7k tokens
SKILL.md length
1,217 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
MIT

At a glance

Fetch & embed AI transcripts as Obsidian callouts. An agent skill from benoror/obsidianos_work.

  • Works in 3 steps: Extract document ID from the Google Docs… → Run gws in the terminal to fetch the… → Prefer gws docs documents get with…
  • Tasks that involve Cloud office suites
  • SKILL.md covers Usage, How It Works, Frontmatter Convention and Provider: Gemini (Google Docs), plus 7 more sections
  • Reaches docs.google.com and otter.ai

What it does

Cache Notes is an agent skill from benoror/obsidianos_work. Fetch & embed AI transcripts as Obsidian callouts. Args: <path, all, refresh <path. Prompts for URLs if empty.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Requires Obsidian CLI (property:read/set, outline, base:query) with Obsidian running, gws CLI for Google Docs/Drive (read-only), and Meetings.base…

It sits in Documents & Office, covering Cloud office suites. It works with Obsidian, Google Docs and Google Workspace. The repository describes itself as: ObsidianOS - Work Vault. The licence is MIT.

When your agent uses it

  • Tasks that involve Cloud office suites

Example prompts

  • “/cache-notes”

Requirements

  • Compatibility (from SKILL.md): Requires Obsidian CLI (property:read/set, outline, base:query) with Obsidian running, gws CLI for Google Docs/Drive (read-only), and Meetings.base (CachePending view). QMD optional fallback. See [google-workspace-cli](../_shared/google-workspace-cli.md).

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Extract document ID from the Google Docs URL in Notes:.
  2. Run gws in the terminal to fetch the document (read-only). See google-workspace-cli for exact commands.
  3. Prefer gws docs documents get with includeTabsContent: true and parse the JSON into text (optionally inserting --- TAB: … --- separators…

What it can do on your machine

Read from SKILL.md and the folder at commit 3c7923e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml and markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • docs.google.com
    • otter.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires Obsidian CLI (property:read/set, outline, base:query) with Obsidian running, gws CLI for Google Docs/Drive (read-only), and Meetings.base (CachePending view). QMD optional fallback. See [google-workspace-cli](../_shared/google-workspace-cli.md).

    From compatibility in the SKILL.md frontmatter.

Context cost

Cache Notes loads about 2.7k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 1,217 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~31
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from benoror/obsidianos_work at commit 3c7923e, republished under its MIT licence (© benoror). 1,217 words, ~2,696 tokens.

Download SKILL.mdSave it as .claude/skills/cache-notes/SKILL.md (or your agent's skills folder).
name
cache-notes
description
Fetch & embed AI transcripts as Obsidian callouts. Args: <path>, all, refresh <path>. Prompts for URLs if empty.
compatibility
Requires Obsidian CLI (property:read/set, outline, base:query) with Obsidian running, gws CLI for Google Docs/Drive (read-only), and Meetings.base (CachePending view). QMD optional fallback. See [google-workspace-cli](../_shared/google-workspace-cli.md).
license
MIT

Cache Notes

Usage

  • /cache-notes all — Scan all meetings with Notes: links that haven't been cached yet, fetch and embed them.
  • /cache-notes <path> — Cache notes for a specific meeting file.
  • /cache-notes refresh <path> — Re-fetch and overwrite existing cached content for a file.

If the target file has an empty Notes: property (no URLs yet), run /mail-transcripts first when doing a full wrap (see meeting Mode C) — it may populate Notes: from the Gemini inbox mail. If still empty, prompt the user to paste the external resource URLs (Google Docs, Otter.ai, etc.). Add them to the Notes: frontmatter, then proceed with fetching and caching as normal.

How It Works

Supported external transcript providers are Google Docs (Gemini notes) and Otter.ai. When a URL from either provider appears in frontmatter Notes:, the agent fetches the transcript using that provider's instructions and embeds it as collapsible Obsidian callouts in the meeting note. A NotesCached: frontmatter timestamp marks the file as cached.

Frontmatter Convention

Before caching:

yaml
Notes:
  - https://docs.google.com/document/d/{id}/edit?tab=t.{tab}
  - https://otter.ai/u/{id}

After caching:

yaml
Notes:
  - https://docs.google.com/document/d/{id}/edit?tab=t.{tab}
  - https://otter.ai/u/{id}
NotesCached: 2026-02-25T15:00:00+00:00

Provider: Gemini (Google Docs)

Fetching
  1. Extract document ID from the Google Docs URL in Notes:.
  2. Run gws in the terminal to fetch the document (read-only). See google-workspace-cli for exact commands.
  3. Prefer gws docs documents get with includeTabsContent: true and parse the JSON into text (optionally inserting --- TAB: … --- separators from tab titles), or gws drive files export with mimeType: text/plain for a simpler single stream. Parsed content should mirror the old tab layout where needed: --- TAB: Notes ---, --- TAB: Transcript ---.
Parsing the Notes Tab

Gemini notes have a consistent structure. Parse into three sections:

SectionStarts afterEnds beforeCallout
Summary + DetailsSummary headingSuggested next steps heading[!gemini_notes]
Suggested next stepsSuggested next steps headingGemini disclaimer footer[!gemini_todos]
Transcript--- TAB: Transcript ---End of content[!gemini_transcript]

Strip the Gemini disclaimer footer — lines starting with "You should review Gemini's" or "Please provide feedback" are noise. Do not include them.

Output Format

All cached content goes under a top-level ## 🤖 AI Notes section appended after frontmatter. Each provider gets its own ### {Provider} subsection. Callouts are nested under the provider heading.

markdown
## 🤖 AI Notes

### Gemini

> [!gemini_notes]- Summary & Details
> ### Summary
> {summary text}
>
> ### Details
> {details as bullet points}

> [!gemini_todos]- Suggested Next Steps
> - {next step 1}
> - {next step 2}

> [!gemini_transcript]- Transcript
> {transcript content, if available}

### Otter

> [!otter_notes]- Summary & Details
> ...

Formatting rules for callout content:

  • Every line inside a callout must start with > .
  • Preserve markdown formatting (bold, bullet points, headings) inside callouts.
  • Keep the - after the callout type (e.g. [!gemini_notes]-) — this makes it collapsed by default in Obsidian.
  • Blank lines between callouts (no > prefix) to separate them.
  • If transcript tab is not available, omit the [!gemini_transcript] callout entirely.
  • The ## 🤖 AI Notes heading is created once. Provider subsections are added beneath it.
  • If the file already has user-written content between frontmatter --- and ## 🤖 AI Notes, preserve it. Always append ## 🤖 AI Notes at the end of the file.

Provider: Otter.ai

Otter.ai is a supported external transcript provider (same as Google Docs). Whenever an Otter.ai URL is present in Notes:, follow this provider's instructions to fetch the transcript and embed it. The cached output uses the same structure as other providers: a subsection under ## 🤖 AI Notes with collapsible callouts. Expected callout types:

  • [!otter_notes]- — Summary and details
  • [!otter_todos]- — Suggested next steps / key topics
  • [!otter_transcript]- — Full transcript (if available)

Implementation: Use the otter-fetch skill — ask the user to paste the JSON from GET .../speech?otid=..., then run parse_otter.js (or parse inline) to produce the callouts above and append them.

Workflow

Mode: Specific file (/cache-notes <path>)
  1. Read frontmatter only. Check Notes: and NotesCached: via obsidian property:read (see frontmatter-mutations). To check whether the body already has an ## 🤖 AI Notes section without reading the whole file, run obsidian outline path="<file>" format=json and look for that heading — much cheaper than a full Read on large transcript files.
  2. If Notes: is empty or absent, prompt the user to paste the external resource URL(s). Set them via obsidian property:set name=Notes value='["<url1>","<url2>"]' type=list path="<file>", then continue.
  3. If NotesCached: exists and this is not a refresh, inform the user and stop.
  4. Verify each URL before caching (see URL Verification below).
  5. For each URL in Notes:, fetch and parse by provider:
    • Google Docs: Extract document ID, fetch via gws (see google-workspace-cli), parse into sections per Provider: Gemini.
    • Otter.ai: Use otter-fetch (user pastes JSON from GET .../speech?otid=...; run otter-fetch/parse_otter.js or parse inline), then append the resulting callout block.
  6. Build the callout blocks from all fetched content.
  7. If the file already has callout blocks (refresh mode), replace them. Otherwise append under ## 🤖 AI Notes after frontmatter --- (see Output Format).
  8. Set NotesCached: timestamp: obsidian property:set name=NotesCached value="$(date +%FT%T%z)" type=datetime path="<file>". See frontmatter-mutations.
Show full SKILL.md (485 more words)Show less
Mode: All (/cache-notes all)
  1. Discover uncached files via the live Base view: obsidian base:query path=Meetings.base view=CachePending format=paths. Returns only files with Notes populated but no NotesCached: — exactly the work queue. (The /note-status pending --step=cache delegation in Detecting Uncached Files is the fallback when Meetings.base is unavailable.)
  2. Present the list to the user with count. Ask for confirmation before proceeding.
  3. Process each file per the specific-file workflow above.
  4. Report results: successes, failures, and any skipped (e.g. provider not yet implemented).

URL Verification

Before caching, verify that each external resource actually corresponds to the meeting note. This prevents accidentally caching the wrong document when a user pastes an incorrect URL.

How it works
  1. Extract the meeting date from the note. Try these sources in order until one yields a date:
    • Filename date pattern (any format — see Date Parsing below)
    • created: frontmatter timestamp
  2. Fetch the document title from Drive metadata via gws drive files get (name field), e.g. "Daily Standup - 2026/02/24 09:43 EST - Notes by Gemini" — same string you would have seen in older MCP File: lines.
  3. Extract the date from the doc title (any format — see Date Parsing below).
  4. Compare: normalize both dates to YYYY-MM-DD and check equality.
    • If the dates match, proceed silently.
    • If the dates don't match, warn the user:
⚠️ Date mismatch for Meetings/Engineering/Scrum/2026-02-24.md:
   Note date:     2026-02-24
   Doc title:     "Daily Standup - 2026/02/26 09:41 EST - Notes by Gemini"
   Doc date:      2026-02-26

Wrong document? [Continue anyway / Skip this URL / Replace URL]
  1. If no date is found in the doc title, fall back to a title similarity check — warn if the doc title has no obvious overlap with the meeting note's title (e.g. a "Sprint Retro" doc linked to a "Daily Standup" note).
  2. In batch mode (/cache-notes all or /meeting wrap pending), collect all mismatches and present them together before proceeding, rather than interrupting one by one.
Date Parsing

See date-filter § "Date Parsing" for the full list of recognized formats and ambiguity rules.

Skip verification

Verification is skipped for:

  • refresh mode (the URL was already verified on first cache)
  • Non-Google Docs URLs (Otter.ai, etc.)

Detecting Uncached Files

Delegate to /note-status pending --step=cache. That skill handles discovery, frontmatter checks, and the dependency chain (only notes with Notes: containing a supported provider URL are considered actionable for caching). See /note-status § Dependency Chain for the full rules.

Refresh Mode

/cache-notes refresh <path>:

  • Delete the entire ## 🤖 AI Notes section and everything below it.
  • Re-fetch all providers and re-build the section.
  • Update NotesCached: timestamp.

Offer to Commit

See /commit. Skip when called as part of a sequence (e.g. /meeting wrap).

Important Notes

  • Use obsidian property:set for frontmatter writes (Notes:, NotesCached:) — see frontmatter-mutations; never hand-roll StrReplace against frontmatter anchors. Body content (the callout blocks) is still appended/replaced with Edit/Write.
  • The Notes: URLs should NOT be modified — they remain as the canonical source links.
  • NotesCached: is the single indicator that caching was done. No other markers.
  • For all mode, process in batches and report progress to the user.
  • Gemini anonymizes some speakers as "someone in [location]" — this is expected; /fill-participants handles name resolution separately.

© benoror, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/cache-notes of benoror/obsidianos_work.

Open the folder on GitHubat commit 3c7923e

Compare with similar skills

Cache Notes next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cache Notes compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cache Notes this skillbenoror/obsidianos_work165—~2.7kAutomated safety check: PassMIT
Managing Google Workspacetaylorwilsdon/google_workspace_mcp3.3k—~2.9kAutomated safety check: PassMIT
Gdoc To Markdowniurykrieger/claude-bedrock1051 repos~3.8kAutomated safety check: NotesMIT
Auth Preflightai-analyst-lab/ai-analyst304—~3.1kAutomated safety check: PassMIT
Chart To Driveai-analyst-lab/ai-analyst304—~1.4kAutomated safety check: PassMIT
Google Workspaceespennilsen/pi122—~3.4kAutomated safety check: PassMIT

Similar skills

  • Managing Google Workspace

    taylorwilsdon/google_workspace_mcp

    Manages Google Workspace operations across 12 services (Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Contacts, Chat, Apps Script, Custom Search).

    3.3k GitHub stars~2.9k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Gdoc To Markdown

    iurykrieger/claude-bedrock

    Internal fetcher module for Google Docs and Sheets. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub starsUsed in 1 repo~3.8k tokens
    Documents & OfficeAuto-check: notes
  • Auth Preflight

    ai-analyst-lab/ai-analyst

    Verify Google Workspace MCP authentication at the start of any session that needs Google APIs (Docs, Slides, Drive).

    304 GitHub stars~3.1k tokensUpdated 6 days ago
    Documents & OfficeAuto-check passed
  • Chart To Drive

    ai-analyst-lab/ai-analyst

    Standardized workflow for uploading local chart PNGs to Google Drive and making them available for insertion into Google Docs and Slides.

    304 GitHub stars~1.4k tokensUpdated 6 days ago
    Documents & OfficeAuto-check passed
  • Google Workspace

    espennilsen/pi

    Manage Google Workspace via the gws CLI — Drive, Gmail, Sheets, Docs, Slides, People, Chat, Meet, Forms, and cross-service workflows.

    122 GitHub stars~3.4k tokensUpdated 15 days ago
    Documents & OfficeAuto-check passed
  • Gws Docs Write

    googleworkspace/cli

    Google Docs: Append text to a document.

    31k GitHub starsUsed in 1 repo~281 tokens
    Documents & OfficeAuto-check passed

More from benoror/obsidianos_work

All 18 skills in this repo
  • Qmd

    benoror/obsidianos_work

    Search vault notes by keyword or meaning. An agent skill from benoror/obsidianos_work.

    165 GitHub stars~858 tokensUpdated 3 mo ago
    Auto-check passed
  • Fill Participants

    benoror/obsidianos_work

    Resolve and fill Participants frontmatter + link unlinked names in body.

    165 GitHub stars~1.6k tokensUpdated 3 mo ago
    Auto-check passed
  • Followup Todos

    benoror/obsidianos_work

    Extract action items as plain markdown bullets (with confirmation).

    165 GitHub stars~1.8k tokensUpdated 3 mo ago
    Auto-check passed
  • Last 1on1

    benoror/obsidianos_work

    Show when you last had a 1:1 with each direct report / peer, sorted by recency.

    165 GitHub stars~732 tokensUpdated 3 mo ago
    Auto-check passed
  • Mail Transcripts

    benoror/obsidianos_work

    Gmail AI transcript notifications → meeting Notes: URLs + mark read.

    165 GitHub stars~1k tokensUpdated 3 mo ago
    Auto-check passed
  • Meeting

    benoror/obsidianos_work

    Create or wrap meeting notes. An agent skill from benoror/obsidianos_work.

    165 GitHub stars~2k tokensUpdated 3 mo ago
    Auto-check passed

Questions about Cache Notes

What does Cache Notes do?

Fetch & embed AI transcripts as Obsidian callouts. An agent skill from benoror/obsidianos_work. Cache Notes is an agent skill from benoror/obsidianos_work. Fetch & embed AI transcripts as Obsidian callouts.

When should I use Cache Notes?

Cache Notes fits situations like: tasks that involve Cloud office suites.

How do I install Cache Notes in Claude Code?

Run `npx skills add benoror/obsidianos_work --skill cache-notes -a claude-code`. Or copy the skill folder (.agents/skills/cache-notes in benoror/obsidianos_work) into .claude/skills/cache-notes in your project. Claude Code loads it when a task matches its description.

How do I install Cache Notes in Codex?

Run `npx skills add benoror/obsidianos_work --skill cache-notes -a codex`. Or copy the skill folder (.agents/skills/cache-notes in benoror/obsidianos_work) into .agents/skills/cache-notes in your project. Codex loads it when a task matches its description.

Can I use Cache Notes in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add benoror/obsidianos_work --skill cache-notes -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cache-notes, .gemini/skills/cache-notes, .github/skills/cache-notes and .opencode/skills/cache-notes in your project.

What does Cache Notes need to run?

SKILL.md names no scripts, command-line tools or credentials: Cache Notes is instructions for the agent only. Compatibility (from SKILL.md): Requires Obsidian CLI (property:read/set, outline, base:query) with Obsidian running, gws CLI for Google Docs/Drive (read-only), and Meetings.base (CachePending view). QMD optional fallback. See [google-workspace-cli](../_shared/google-workspace-cli.md)..

Does Cache Notes access the network?

SKILL.md names 2 domains. In commands or code: docs.google.com and otter.ai; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Cache Notes safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Cache Notes use?

Cache Notes is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cache Notes use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Cache Notes?

Skills that share tags, products or a category with Cache Notes: Managing Google Workspace (taylorwilsdon/google_workspace_mcp, 3.3k stars), Gdoc To Markdown (iurykrieger/claude-bedrock, 105 stars), Auth Preflight (ai-analyst-lab/ai-analyst, 304 stars) and Chart To Drive (ai-analyst-lab/ai-analyst, 304 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cache Notes?

benoror (a GitHub user) maintains it in benoror/obsidianos_work, which has 165 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on June 11, 2026.

Source: benoror/obsidianos_work on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.