MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Run the PiFinder app headlessly and drive it like a user — launch it with no pygame window or physical display, send keypad presses to navigate menus, capture the screen as a PNG, read live state…
$ npx skills add brickbots/PiFinder --skill pifinder-remote -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install brickbots/PiFinder pifinder-remote --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/pifinder-remote .claude/skills/pifinder-remote && rm -rf skills-srcUse ~/.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/
Install the "pifinder-remote" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/pifinder-remote into .claude/skills/pifinder-remote/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pifinder-remote", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/brickbots/PiFinder/tree/release/.claude/skills/pifinder-remoteType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add brickbots/PiFinder --skill pifinder-remote -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install brickbots/PiFinder pifinder-remote --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/pifinder-remote .agents/skills/pifinder-remote && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pifinder-remote" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/pifinder-remote into .agents/skills/pifinder-remote/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pifinder-remote", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add brickbots/PiFinder --skill pifinder-remote -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install brickbots/PiFinder pifinder-remote --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/pifinder-remote .cursor/skills/pifinder-remote && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pifinder-remote" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/pifinder-remote into .cursor/skills/pifinder-remote/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pifinder-remote", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/brickbots/PiFinder.git --path .claude/skills/pifinder-remote--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add brickbots/PiFinder --skill pifinder-remote -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install brickbots/PiFinder pifinder-remote --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/pifinder-remote .gemini/skills/pifinder-remote && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pifinder-remote" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/pifinder-remote into .gemini/skills/pifinder-remote/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pifinder-remote", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install brickbots/PiFinder pifinder-remoteInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add brickbots/PiFinder --skill pifinder-remote -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/pifinder-remote .github/skills/pifinder-remote && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pifinder-remote" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/pifinder-remote into .github/skills/pifinder-remote/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pifinder-remote", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add brickbots/PiFinder --skill pifinder-remote -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install brickbots/PiFinder pifinder-remote --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brickbots/PiFinder.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/pifinder-remote .opencode/skills/pifinder-remote && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pifinder-remote" agent skill from https://github.com/brickbots/PiFinder/tree/release/.claude/skills/pifinder-remote into .opencode/skills/pifinder-remote/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pifinder-remote", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pifinder-remoteRun the PiFinder app headlessly and drive it like a user — launch it with no pygame window or physical display, send keypad presses to navigate menus, capture the screen as a PNG, read live state…
Pifinder Remote is an agent skill from brickbots/PiFinder. Run the PiFinder app headlessly and drive it like a user — launch it with no pygame window or physical display, send keypad presses to navigate menus, capture the screen as a PNG, read live state (plate solve, location, IMU, SQM), and stop it cleanly. Use this whenever you need to actually operate or observe the running PiFinder UI rather than just read its code: "launch/start/run PiFinder", "navigate to <menu/screen", "take a screenshot of PiFinder", "press UP/DOWN/SQUARE", "what's on the PiFinder screen", "what…
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/pf_remote.py`).
It works with Python. The repository describes itself as: A plate solving telescope finder based around a Raspberry PI and RPI HQ Camera. The licence is GPL-3.0.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 3775008. It shows what the files ask for, not the result of running them.
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.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3gitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pifinder Remote loads about 2.5k tokens when it runs. Until then it costs about 194 tokens; SKILL.md has 1,159 words of instructions outside code blocks.
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.
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); the scripts in this folder are not scanned.
The full file from brickbots/PiFinder at commit 3775008, republished under its GPL-3.0 licence (© brickbots). 1,159 words, ~2,508 tokens.
.claude/skills/pifinder-remote/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.PiFinder normally renders to a physical OLED/LCD (or a pygame emulator window) and is driven by a hardware keypad. This skill runs it in a headless mode — no pygame, no SDL window, no hardware — while still rendering every frame, and drives it entirely over PiFinder's HTTP API. That lets you launch the app, navigate its menus, see exactly what's on screen, read its live state, and shut it down, all from the command line.
Everything goes through one helper: scripts/pf_remote.py (Python standard
library only — runs under any python3; it finds and uses the PiFinder venv
itself when launching). Run python3 <skill>/scripts/pf_remote.py -h for the
full command list.
S=.claude/skills/pifinder-remote/scripts/pf_remote.py # adjust path as needed
python3 $S launch # start cedar + headless PiFinder (rev4, 176x176), wait for API
python3 $S launch -fb # ...with the rev4 battery icon + a simulated discharge
python3 $S launch --display headless # the 128x128 v3/v2.5 panel instead
python3 $S screen -o /tmp/pf.png # capture the current screen as PNG
python3 $S key DOWN DOWN RIGHT # send keypad presses, in order
python3 $S status # aggregated live state as JSON
python3 $S stop # graceful shutdown, then guaranteed teardownAfter launch succeeds, the other commands find the running instance (URL +
PIDs) from a small state file in the temp dir — you don't need to pass the URL.
Read the PNG that screen writes (use the Read tool on the path it prints)
to see the UI; that is how you "look at" PiFinder.
| Command | What it does |
|---|---|
launch | Starts cedar-detect-server then PiFinder headless (-fh --camera debug --keyboard none --display headless_176 -x), in its own process group, and waits until /api/status answers. Records state for the other commands. --display {headless_176,headless,headless_320} picks the panel — default headless_176, rev4's 176×176; headless is the 128×128 panel on v3/v2.5. -fb/--fakebattery adds the rev4 battery monitor: the title-bar battery icon plus a full simulated discharge (low-battery warnings, blind-floor shutdown). |
screen [-o PATH] | Saves GET /api/screen (the live display) as a PNG and prints the path. 176×176 by default, 128×128 under --display headless. |
key BTN [BTN ...] | POSTs each button to /api/key in order (default 0.4s apart, --delay to change). |
status / solution / location | Pretty-prints GET /api/status / /api/solution / /api/location. |
get PATH | GETs any other endpoint, e.g. get /api/imu, get /api/sqm. |
stop | Best-effort graceful /api/stop, then escalates to SIGTERM/SIGKILL on the process group so nothing is orphaned. |
kill | Skips the graceful step; force-kills the recorded process groups (recovery). |
logs [-n N] | Tails the captured PiFinder and cedar startup logs (first place to look if launch fails). |
ready | Polls until the API answers; useful after a manual launch. |
PiFinder has a small keypad. Pass these names to key (case-sensitive), or a
raw integer keycode:
UP DOWN LEFT RIGHT PLUS MINUS SQUARELNG_LEFT LNG_UP LNG_DOWN LNG_RIGHT LNG_SQUAREALT_UP ALT_DOWN ALT_LEFT ALT_RIGHT ALT_PLUS ALT_MINUS ALT_SQUARE ALT_0key 1 2 3Navigation model: RIGHT (or SQUARE) generally drills into the highlighted
item, LEFT goes back, UP/DOWN move the selection, LNG_LEFT returns to
the top menu. After any input, take a fresh screen to confirm what happened —
the screen is the ground truth, menu order changes between versions.
--display headless_176, which
selects the in-memory DisplayHeadless176 driver (python/PiFinder/displays.py,
backed by luma.core.device.dummy). It renders at 176×176 with rev4's
Layout176 font and spacing profile, so what you capture matches the real
rev4 panel rather than merely being scaled up. --display headless gives the
128×128 DisplayHeadless used by v3/v2.5. The UI render loop already calls
shared_state.set_screen() beside every hardware draw, so the current frame
is always available at GET /api/screen regardless of display driver. No
pygame/SDL/X is needed.--keyboard none runs a no-op keyboard process; POST /api/key
injects into the same keyboard_queue the main loop reads, so menu
navigation behaves exactly as with the real keypad.--camera debug, PiFinder cycles through
sample frames and cedar-detect-server + the solver produce real plate
solves, so status/solution return live RA/Dec/constellation.while True loops, aren't daemonized, and don't watch a stop flag.
Clean shutdown depends on SIGINT reaching the whole process group at once
(what a terminal Ctrl-C does). POST /api/stop does that from inside the app,
which reliably stops the worker processes — but the main process can still
hang in its teardown (a multiprocessing-manager shutdown race). So launch
starts PiFinder in its own session/process group, isolated from the
launcher, and stop escalates with SIGTERM→SIGKILL on that group after
a short grace period. stop returns as soon as the process is actually gone.
This guarantees no orphaned processes even when the graceful path stalls.A fresh worktree (one created via git worktree add or EnterWorktree) is
missing two things PiFinder needs to start, because git worktrees only check
out tracked files and don't share git-ignored files or submodule contents with
the main checkout. Copy them in from the main checkout before the first
launch:
astro_data/hip_main.dat (~53 MB) is git-ignored
(see python/.gitignore) but required by UIChart / UIAlign. The chart
screen will crash on construction if it's missing.tetra3 submodule — python/PiFinder/tetra3/ is a git submodule
(https://github.com/smroid/cedar-solve). git submodule update --init
inside a worktree typically fails ("Unable to find current revision in
submodule path") because the submodule's git metadata isn't replicated to
the worktree. Copying the populated directory in from the main checkout is
the reliable path.Both copies are one-time per worktree. Run from the worktree root:
# Adjust MAIN to point at the main checkout (typically three dirs up from a
# .claude/worktrees/<name>/ worktree).
MAIN=../../..
cp "$MAIN/astro_data/hip_main.dat" astro_data/
cp -R "$MAIN/python/PiFinder/tetra3/." python/PiFinder/tetra3/Venv: the worktree has no venv of its own and pf_remote.py launch only
auto-discovers a venv inside the repo it was invoked from (python/venv,
python/.venv, .venv, venv) — it does not cross into the main checkout
to find one. So activate the main checkout's venv in your shell before
launching, so pf_remote inherits it via sys.executable:
source "$MAIN/python/venv/bin/activate" # or python/.venv if that's where yours isAlternatively, point pf_remote.py at the main checkout with --repo "$MAIN" so it finds the venv there — but then it also runs PiFinder from
that checkout, not your worktree, which defeats the purpose.
launch waits up to --timeout seconds (default 90) for the API. The first
launch in a fresh checkout rebuilds the catalog cache (~90s, one time); later
launches come up in a few seconds. If it times out:
python3 $S logs — read the PiFinder/cedar startup logs.python/venv or python/.venv) and the object DB
is present (astro_data/pifinder_objects.db).astro_data/hip_main.dat and
python/PiFinder/tetra3/ are populated — see "Running in a git worktree".launch probes both and
records the winner. Pass --base-url http://host:port to override.python3 $S kill clears it.--repo /path/to/PiFinder or the PIFINDER_REPO env var.headless display driver and the POST /api/stop endpoint
(python/PiFinder/api_extensions.py). They're already in this branch.--display headless, and is rendered mostly in the red channel (PiFinder's
night-vision palette); that's expected, not a rendering bug.-fh emulates rev3: no battery process and no title-bar battery
icon. Add -fb when the shot or check involves the battery.© brickbots, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in .claude/skills/pifinder-remote of brickbots/PiFinder.
Open the folder on GitHubat commit 3775008
Pifinder Remote 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pifinder Remote this skillbrickbots/PiFinder | 250 | — | ~2.5k | Automated safety check: Pass | GPL-3.0 | |
| MCP Server Builderanthropics/skills | 180k | 64 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| PDF Processinganthropics/skills | 180k | 48 repos | ~2k | Automated safety check: Pass | Proprietary | |
| NotebookLM Research AssistantPleasePrompto/notebooklm-skill | 7.8k | 14 repos | ~2.4k | Automated safety check: Notes | MIT | |
| Manim Video Productionbrowser-use/video-use | 28k | 6 repos | ~3k | Automated safety check: Pass | MIT | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
anthropics/skills
Handles everyday PDF jobs in Python and on the command line: extract text and tables, merge, split, rotate, watermark, fill forms, encrypt and OCR.
PleasePrompto/notebooklm-skill
Lets Claude Code ask questions of your Google NotebookLM notebooks through browser automation and return answers grounded in your uploaded sources.
browser-use/video-use
Produces math and technical explainer videos with Manim Community Edition: concept animations, equation derivations, algorithm walkthroughs and data stories.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
hugohe3/ppt-master
Generates editable PowerPoint decks, rebuilds slides from images, fills .pptx templates and polishes existing presentations through routed workflows.
brickbots/PiFinder
Author and edit PiFinder's user-facing documentation in the project's house style.
brickbots/PiFinder
PiFinder's internationalization (i18n) workflow — marking strings for translation, running the Babel extract/update/compile pipeline, adding or updating language translations, and filling in missing…
Works with
Run the PiFinder app headlessly and drive it like a user — launch it with no pygame window or physical display, send keypad presses to navigate menus, capture the screen as a PNG, read live state…. Pifinder Remote is an agent skill from brickbots/PiFinder. Run the PiFinder app headlessly and drive it like a user — launch it with no pygame window or physical display, send keypad presses to navigate menus, capture the screen as a PNG, read live state (plate solve, location, IMU, SQM), and stop it cleanly.
Pifinder Remote fits situations like: verify UI-affecting changes by running the app and looking at the screen.
Run `npx skills add brickbots/PiFinder --skill pifinder-remote -a claude-code`. Or copy the skill folder (.claude/skills/pifinder-remote in brickbots/PiFinder) into .claude/skills/pifinder-remote in your project. Claude Code loads it when a task matches its description.
Run `npx skills add brickbots/PiFinder --skill pifinder-remote -a codex`. Or copy the skill folder (.claude/skills/pifinder-remote in brickbots/PiFinder) into .agents/skills/pifinder-remote in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add brickbots/PiFinder --skill pifinder-remote -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pifinder-remote, .gemini/skills/pifinder-remote, .github/skills/pifinder-remote and .opencode/skills/pifinder-remote in your project.
Going by SKILL.md and its folder, Pifinder Remote needs Python for the scripts in its folder and the command-line tools its instructions call (python3 and git). Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Pifinder Remote is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pifinder Remote: MCP Server Builder (anthropics/skills, 180k stars), PDF Processing (anthropics/skills, 180k stars), NotebookLM Research Assistant (PleasePrompto/notebooklm-skill, 7.8k stars) and Manim Video Production (browser-use/video-use, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
brickbots (a GitHub user) maintains it in brickbots/PiFinder, which has 250 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.
Source: brickbots/PiFinder on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.