A personal Claude Code plugin marketplace. It currently ships two plugins, fsnotes and gh-lookup.
Lets Claude search, create, edit, and delete notes managed by the FSNotes macOS/iOS app through natural requests — "find my note about X", "make a note", "add to my X note", "delete that note".
FSNotes keeps each note as a plain Markdown file in iCloud, with a few conventions Claude would otherwise have to guess. This plugin teaches it the layout so it operates on the store reliably:
- Notes are
.markdownfiles (not.md). - The first line is a
# Titleheading; the filename usually matches. - Subfolders are notebooks. Notebook names are discovered at runtime — none are hardcoded.
- Tags are inline
#hashtagsin the body; there is no YAML frontmatter. Trash/(deleted notes) andfiles/(attachments) are reserved and are excluded from searches.
The actual logic lives in small, deterministic shell scripts under
plugins/fsnotes/scripts/, so it can be unit-tested:
fsnotes-search.sh <mode> <query> [notebook]— search bytext,title, ortag, with an optional[notebook]scoping any mode to one subfolder.folderis a body search scoped to a notebook and instead takes its arguments asfsnotes-search.sh folder <notebook> <query>.fsnotes-newpath.sh <title> [notebook]— print a safe, collision-free path for a new note (never overwrites).fsnotes-trash.sh <note-path>— move a note intoTrash/(never hard-deletes).fsnotes-lib.sh— shared helpers, sourced by the others.
A fsnotes-search subagent and the fsnotes skill wire these together so
Claude picks the right operation and returns compact results.
/plugin marketplace add olomix/cc-thingz
/plugin install fsnotes
Search uses ripgrep (rg) when
available and falls back to grep -r otherwise, emitting a one-time hint to
install it. For best performance:
brew install ripgrep
The scripts locate the FSNotes store in this order:
$FSNOTES_DIR, if set and existing.- The iCloud primary path
~/Library/Mobile Documents/iCloud~co~fluder~fsnotes/Documents. - A glob of
~/Library/Mobile Documents/*fsnotes*/Documents(used only when it resolves to exactly one match).
The FSNOTES_DIR override exists so the test suite can target a temporary
fixture directory; in normal use it is unset and the iCloud path applies.
Lets Claude look up exact gh CLI command and flag syntax — and discover
whether a gh command exists for a given task — from the locally installed
reference, instead of guessing flags from memory (which drift between gh
versions). It is an anti-hallucination guardrail: when Claude needs precise gh
syntax or suspects a command might exist, it consults the installed manual
rather than inventing flags.
The logic lives in a small, deterministic shell script under
plugins/gh-lookup/scripts/, so it can be unit-tested:
gh-lookup.sh discover <keywords...>— keyword search across all command names and one-line descriptions ingh reference, returning compact hits likegh pr merge — Merge a pull request. Answers "is there a gh command for X?" Matching is case-insensitive and requires all keywords; exit 1 means no matches.gh-lookup.sh show <command words...>— authoritative per-command detail viagh <command> --help(exact usage and flags for the installed version), e.g.gh-lookup.sh show pr merge.
A gh-lookup-search subagent and the gh-lookup skill wire these together so
Claude reaches for the manual on "what's the gh command for…", "which gh
flag…", and "is there a gh command to…" requests, returning compact results.
Requires the GitHub CLI (gh) on PATH. The discover mode relies on
gh reference, available in recent gh releases (verified against gh
v2.95.0). show (gh <command> --help) works on any version.
/plugin marketplace add olomix/cc-thingz
/plugin install gh-lookup
All gh calls go through a GH_BIN variable (GH_BIN="${GH_BIN:-gh}"). The
override exists so the test suite can point at a fake gh stub; in normal use
it is unset and the real gh on PATH applies.
shellcheck tests/fsnotes_test.sh plugins/fsnotes/scripts/*.sh
tests/fsnotes_test.sh
shellcheck tests/gh-lookup_test.sh plugins/gh-lookup/scripts/*.sh \
tests/fixtures/fake-gh.sh
tests/gh-lookup_test.sh
Tests are pure bash with no external framework. The fsnotes tests build a
temporary fixture store via FSNOTES_DIR and never touch the real iCloud
notes; the gh-lookup tests stub gh via GH_BIN and synthetic fixtures, so
they never call the real binary or the network.
MIT — see LICENSE.