bundled-skills/apple-notes-search/SKILL.md
Semantic + keyword search and connection-discovery across the user's own Apple Notes via the apple-notes MCP server. Use when the user wants to find, recall, or synthesize something from their notes, or surface non-obvious bridges/related notes. macOS, on-device.
npx skillsauth add FrancoStino/opencode-skills-antigravity apple-notes-searchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
apple-notes is an MCP server for semantic search and connection-discovery across the
user's own Apple Notes — hybrid search, Swanson-ABC bridges, entity threads, and cited
synthesis over everything they've written. Embeddings, search, BM25, clustering, and
bridges run on-device; only synthesis generation calls an LLM (local OR cloud,
the user's choice).
This skill covers (1) the one-time setup you must walk the user through, and (2) which tool to reach for, since the server exposes many.
If apple-notes tools are not available, the server isn't registered yet — do the
Setup below before anything else. If tools exist but a search returns "not indexed"
or empty, run index-notes first (see Ranking caveats).
The server reads Apple Notes' SQLite store directly, so the bun binary needs Full Disk Access. Steps, in order:
brew install oven-sh/bun/bungit clone https://github.com/connerkward/mcp-apple-notes
cd mcp-apple-notes
git checkout <reviewed-tag-or-commit>
bun install
which bun, then open System Settings →
Privacy & Security → Full Disk Access, click +, and add that exact bun binary
path (commonly /opt/homebrew/bin/bun or /usr/local/bin/bun). Without this the
server cannot read NoteStore.sqlite and every call fails with a permissions error.
(bun install's postinstall tries to open this pane automatically.)claude mcp add apple-notes -- bun /absolute/path/to/mcp-apple-notes/index.ts --stdioclaude_desktop_config.json:
{ "mcpServers": { "apple-notes": {
"command": "/Users/<you>/.bun/bin/bun",
"args": ["/Users/<you>/mcp-apple-notes/index.ts", "--stdio"] } } }
/plugin marketplace add connerkward/ckw-skills then /plugin install apple-notes@connerkward.index-notes). First index of ~1,800 notes takes a few seconds.| Tool | Use when |
|------|----------|
| index-notes | First run, or to force a rebuild. Background job with live progress. |
| search-notes | Default search. Hybrid semantic + BM25, re-ranked. Optional folder, modifiedAfter, modifiedBefore. "What did I write about X." |
| find-notes | Exact substring match (like the Apple Notes search box). Use when the user wants a literal string, not meaning. Optional folder, date range. |
| get-note | Fetch one full note by title (fuzzy fallback). |
| list-notes | Notes by recency. Optional folder, date range, limit. |
| list-folders | All folders + note counts. |
| list-tags / search-by-tag | #hashtag inventory / notes carrying a given tag. |
| related-notes | Notes related to a given one via shared tags, [[wikilinks]], and vector similarity. "Show me related notes." |
| bridge-notes | Swanson-ABC bridges — non-obvious connections: pairs (A, C) not directly similar but both strongly tied to a shared intermediary B. "Find non-obvious connections across my notes." Optional folder, limit. No LLM. |
| feed | Ranked evidence-first connection stream (bridges + abstraction pairs + entity threads) as JSON. Optional limit. |
| entity-notes / list-entities | "Where else do I talk about Mercedes?" Entity chips → notes by mention weight. Needs the optional entity graph db (~/.mcp-apple-notes/layered_graph.db); if absent these report how to generate it. |
| get-tables | Pull pipe/tab tables out of a note. |
| create-note / update-note | Create or edit a note. |
| check-changes | Did notes change since last index? (does not trigger re-index) |
| index-health | Sync status, last-indexed time, note count. Run this if results seem stale. |
For "synthesize what I think about X" the synthesis lives in the web app endpoint
(GET /api/synthesize?q= at http://localhost:3741/ when run with bun index.ts),
which writes a grounded answer with inline [n] citations back to source notes.
index-notes.score = RRF(vector, BM25) × title_boost × recency_factor.recent, latest, today) auto-shift to a 1-day recency
half-life at 70% weight; normal queries keep relevance primary (90-day half-life, 10%).SYNTH_BASE_URL=http://localhost:1234/v1 SYNTH_MODEL=<model> OPENAI_API_KEY=local,
notes stay on-device) or real OpenAI (funded OPENAI_API_KEY, defaults to gpt-4o-mini).
Everything else — embeddings, search, BM25, clustering, bridges, entities — is on-device.check-changes, index-health, or a rerun after background indexing catches up.Fork of RafalWilinski/mcp-apple-notes; this fork reads SQLite + protobuf directly and adds bridges, entities, feed, and synthesis. Authored by Conner K Ward. License MIT.
data-ai
Snapshot a site's SEO state and detect ranking, indexation, metadata, canonical, robots, schema, and on-page regressions over time.
development
Coordinate focused subagents on substantial work, keep their ownership non-overlapping, and integrate verified results. Use for large-scope Codex tasks; keep trivial work with the coordinator.
data-ai
Use when an owner asks to find a cofounder or project partner. Assess only that agent's own owner and rank only approved profiles other agents posted for their own owners.
devops
Install, configure, verify, repair, update, and uninstall Hyprland on Fedora Linux with GPU-aware detection (NVIDIA/AMD/Intel).