Recording
codewhale-hq/Codewhale
Capture screenshots on registered computers, record on macOS or HarmonyOS, and manage saved captures.
Aircraft forensics from open public records — tail-number dossiers, fleet research, model-level safety, and NTSB event archaeology.
$ npx skills add mvanhorn/printing-press-library --skill pp-airframe -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvanhorn/printing-press-library pp-airframe --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/mvanhorn/printing-press-library.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli-skills/pp-airframe .claude/skills/pp-airframe && 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 "pp-airframe" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-airframe into .claude/skills/pp-airframe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-airframe", 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/mvanhorn/printing-press-library/tree/main/cli-skills/pp-airframeType 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 mvanhorn/printing-press-library --skill pp-airframe -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvanhorn/printing-press-library pp-airframe --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cli-skills/pp-airframe .agents/skills/pp-airframe && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pp-airframe" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-airframe into .agents/skills/pp-airframe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-airframe", 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 mvanhorn/printing-press-library --skill pp-airframe -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvanhorn/printing-press-library pp-airframe --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cli-skills/pp-airframe .cursor/skills/pp-airframe && 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 "pp-airframe" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-airframe into .cursor/skills/pp-airframe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-airframe", 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/mvanhorn/printing-press-library.git --path cli-skills/pp-airframe--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 mvanhorn/printing-press-library --skill pp-airframe -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvanhorn/printing-press-library pp-airframe --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cli-skills/pp-airframe .gemini/skills/pp-airframe && 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 "pp-airframe" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-airframe into .gemini/skills/pp-airframe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-airframe", 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 mvanhorn/printing-press-library pp-airframeInstalls 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 mvanhorn/printing-press-library --skill pp-airframe -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .github/skills && cp -r skills-src/cli-skills/pp-airframe .github/skills/pp-airframe && 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 "pp-airframe" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-airframe into .github/skills/pp-airframe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-airframe", 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 mvanhorn/printing-press-library --skill pp-airframe -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mvanhorn/printing-press-library pp-airframe --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cli-skills/pp-airframe .opencode/skills/pp-airframe && 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 "pp-airframe" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-airframe into .opencode/skills/pp-airframe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-airframe", 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.
pp-airframeAircraft forensics from open public records — tail-number dossiers, fleet research, model-level safety, and NTSB event archaeology.
Pp Airframe is an agent skill from mvanhorn/printing-press-library. Aircraft forensics from open public records — tail-number dossiers, fleet research, model-level safety, and NTSB event archaeology. Trigger phrases: look up tail number, who owns this plane N…, what aircraft does <company own, safety record of <aircraft model, accident history for, crash history for <aircraft model, find aircraft registered to, NTSB event ERA…, use airframe, run airframe. Secondary (day-of only, requires flight-goat + within 72hr of departure): is UA<flight safe, what plane is <flight.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Official library of CLIs generated by the CLI Printing Press. Endorsed, tested, and community-contributed. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 76de244. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
goaptdnfnpxbrewFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From 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.
Pp Airframe loads about 2.9k tokens when it runs. Until then it costs about 137 tokens; SKILL.md has 1,422 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 noted patterns worth knowing about, such as sudo or a known installer.
u / Debian (`ID=ubuntu`, `ID=debian`) | `sudo apt update && sudo apt install -y mdbtools` || Fedora (`ID=fedora`) | `sudo dnf install -y mdbtools` |(`ID=rhel`/`ID=rocky`/`ID=almalinux`) | `sudo dnf install -y mdbtools` |allowed-tools: Read, BashAutomated 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.
The full file from mvanhorn/printing-press-library at commit 76de244, republished under its Apache-2.0 licence (© mvanhorn). 1,422 words, ~2,938 tokens.
.claude/skills/pp-airframe/SKILL.md (or your agent's skills folder).<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/developer-tools/airframe/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
This skill drives the airframe-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:npx -y @mvanhorn/printing-press-library install airframe --cli-onlyairframe-pp-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer):
go install github.com/mvanhorn/printing-press-library/library/developer-tools/airframe/cmd/airframe-pp-cli@latestIf --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
| Tier | Dataset | Install requirement | Answers questions like |
|---|---|---|---|
| 1 | FAA Aircraft Registry | none — just airframe-pp-cli | "Who owns N12345?" • "How old is this plane?" • "What aircraft does Berkshire Hathaway own?" • "What type is this Mode-S code?" |
| 2 | NTSB CAROL accident database | mdbtools package | "How safe is a Cessna 172?" • "Crash history for the Boeing 737 MAX 8" • "Has tail N12345 ever been in an incident?" • "Probable cause of event ERA22LA001" |
airframe flight <ident> additionally requires flight-goat-pp-cli installed + FLIGHT_GOAT_API_KEY_AUTH set, and only works within ~72 hours of departure (airlines don't assign a specific tail to a flight before then). For pre-purchase or pre-booking "is my flight safe" questions, use a Tier 2 model-level lookup with the equipment type from the booking site.
Before answering any user question, run:
airframe-pp-cli doctor --jsonParse the JSON to determine:
db_exists — has the user ever synced?sync_meta — which sources (faa_master, ntsb_avall) are present and how fresh?mdbtools.detected — can we serve Tier 2 questions?flight_goat.detected — can we serve flight <ident> questions?Branch from here based on what the user actually asked.
Example: "Who owns N628TS?" but airframe-pp-cli doctor shows db_exists=false or sync_meta is empty.
airframe-pp-cli sync for them.Just answer it directly:
airframe-pp-cli tail N628TS
airframe-pp-cli owner "Berkshire" --limit 20mdbtools is missingThis is the most important branch — handle it with care.
Surface a clear explanation:
"To answer that, I need NTSB accident data, which requires the
mdbtoolspackage (NTSB ships their data in Microsoft Access format). It's a one-time install — would you like me to install it for you?"
If the user says yes, detect their OS and run the right command:
# Detect OS
uname -s # → "Darwin" for macOS, "Linux" for Linux
# Detect Linux distribution if Linux
cat /etc/os-release 2>/dev/null | grep -E '^ID='Then propose before running:
| OS detected | Command to run |
|---|---|
macOS (Darwin) | brew install mdbtools |
Ubuntu / Debian (ID=ubuntu, ID=debian) | sudo apt update && sudo apt install -y mdbtools |
Fedora (ID=fedora) | sudo dnf install -y mdbtools |
RHEL / Rocky / Alma (ID=rhel/ID=rocky/ID=almalinux) | sudo dnf install -y mdbtools |
Arch (ID=arch) | yay -S --noconfirm mdbtools (AUR — needs yay or paru; if neither is present, tell the user to install one first) |
Important: never run sudo commands without first showing the user what you plan to run and confirming. The --noconfirm for yay is OK because the user has already opted in once.
After mdbtools installs, run:
airframe-pp-cli sync --source allThen answer the original question.
mdbtools is present but NTSB hasn't been synceddoctor shows mdbtools.detected=true, but sync_meta has no ntsb_avall row.
Tell the user: "I have the NTSB ingest tool installed but haven't synced the data yet. Would you like me to run that now? It's ~90 MB and takes about a minute."
If yes:
airframe-pp-cli sync --source ntsbExamples: "Is UA1234 safe?", "What plane will I be on for AA200?", "Is my flight on DL5678 tomorrow OK?"
Critical context: Airlines don't assign a specific tail to a flight until ~48–72 hours before departure. If the user is more than 72 hours from their flight (or shopping a ticket they haven't booked yet), looking up the specific tail is impossible — there is no tail yet. Don't burn a flight-goat call on it.
Step 1 — establish when the flight is. Ask the user (or infer from context):
"When is the flight? Tail assignments are made 48–72 hours before departure — if you're shopping or it's further out than that, I'll point you at the model-level safety lookup instead, which is more reliable for that horizon."
Step 2 — branch:
Flight is >72 hours away or hypothetical → recommend the model-level fallback. Most airline booking sites tell you the equipment type (e.g. "Boeing 737 MAX 8" or "Airbus A321neo"). Run:
airframe-pp-cli model "Boeing 737 MAX 8"This answers the user's underlying question ("is the type of plane I'll be on safe?") and needs no flight-goat at all. (It still needs Tier 2 / mdbtools for safety data — fall through to branch C if missing.)
Flight is ≤72 hours away OR the user is asking about a flight that already happened (post-incident research) → proceed with flight-goat resolution. Continue to step 3.
Step 3 — flight-goat present? If not, install it.
If flight_goat.detected=false, tell the user:
"To resolve a specific flight ident (like UA1234) to a tail number, I need
flight-goat-pp-cli. Would you like me to install it? It also requires a FlightAware AeroAPI key — that part you'll need to provide."
If yes:
go install github.com/mvanhorn/printing-press-library/library/travel/flight-goat/cmd/flight-goat-pp-cli@latestStep 4 — FLIGHT_GOAT_API_KEY_AUTH set? If not, explain the cost.
If the env var is unset, tell the user that flight-goat routes through FlightAware's AeroAPI (paid service) and they'll need to sign up at flightaware.com/aeroapi to get a key. Don't push past without explicit direction.
Step 5 — run the lookup.
airframe-pp-cli flight UA1234Note that the result may include multiple recent tails that have flown the same ident over the past 14 days — flight-goat returns the history, not just the next scheduled flight. For post-incident research, look at the date-aligned tail; for pre-departure curiosity, look at the most recent one.
| Command | Tier | What it does |
|---|---|---|
sync [flags] | both | Download bulk data, replace local tables, VACUUM |
tail <N-number> | 1 (+2 enriches) | Aircraft dossier + accident history |
owner "<name>" | 1 | Aircraft fleet by registered owner |
model "<make> [model]" | 2 | Aggregate NTSB events by model |
event <event-id> | 2 | One NTSB event |
flight <ident> | 1 + flight-goat | Resolve ident → tail → enrich |
search "<query>" | 1+2 + --with-fts | FTS5 search |
doctor | — | Health check |
All commands accept --json, --select <dotted-path>, and --db-path.
For fast classification of what the user is asking. Most user questions are answered by Tier 1 or Tier 2 alone — the flight-goat path is the exception, not the rule.
Tier 1 phrases → just need FAA sync
<company> own", "<company> fleet"Tier 2 phrases → need NTSB + mdbtools
<aircraft model>", "is the <model> safe", "safety record of <model>"<model>", "crash history of <model>"<state> this year"<region> last <period>"Tier 1 + flight-goat phrases → require ident resolution and only work within ~72 hours of departure
For any "is my flight safe" / "what plane will I be on" question, always ask when the flight is first. If the user is shopping or the flight is more than 72 hours out, redirect to a model-level lookup (airframe-pp-cli model "<equipment-type>") using the equipment type from the user's booking site. Most airline booking pages display the aircraft type for every flight at search time.
--agent (= --json --compact --no-input --no-color --yes) is the default mode for programmatic consumption. The envelope is {meta, results} matching sec-edgar. Use --select results.aircraft.owner_name to extract a single field.
flight requires a paid AeroAPI key via flight-goat. FAA + NTSB are free; ident-to-tail resolution is what costs.© mvanhorn, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in cli-skills/pp-airframe of mvanhorn/printing-press-library.
Open the folder on GitHubat commit 76de244
Pp Airframe 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 |
|---|---|---|---|---|---|---|
| Pp Airframe this skillmvanhorn/printing-press-library | 2.1k | — | ~2.9k | Automated safety check: Notes | Apache-2.0 | |
| Recordingcodewhale-hq/Codewhale | 41k | — | ~540 | Automated safety check: Pass | MIT | |
| Architecture Decision Recordsaffaan-m/ECC | 276k | 4 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Digital Forensicssickn33/agentic-awesome-skills | 47k | 1 repos | ~495 | Automated safety check: Pass | MIT | |
| Digital Forensicszhaoxuya520/reverse-skill | 40k | 2 repos | ~389 | Automated safety check: Warn | MIT | |
| Performing Sqlite Database Forensicsmukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~3.6k | Automated safety check: Warn | Apache-2.0 |
codewhale-hq/Codewhale
Capture screenshots on registered computers, record on macOS or HarmonyOS, and manage saved captures.
affaan-m/ECC
Capture architectural decisions as numbered ADR markdown files in docs/adr/ with context, alternatives considered, consequences, and an index README.
sickn33/agentic-awesome-skills
Authorized digital forensics: memory dumps, disk timelines, PCAP investigation, artifact triage, and incident-response evidence preservation.
zhaoxuya520/reverse-skill
A skill your agent uses for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.
mukul975/Anthropic-Cybersecurity-Skills
Performs forensic analysis of SQLite databases by examining B-tree page structures, recovering deleted records from freelist pages and Write-Ahead Log (WAL) files, decoding encoded timestamps, and…
affaan-m/ECC
在Claude Code会话期间,将做出的架构决策捕获为结构化的架构决策记录(ADR)。自动检测决策时刻,记录上下文、考虑的替代方案和理由。维护一个ADR日志,以便未来的开发人员理解代码库为何以当前方式构建。
mvanhorn/printing-press-library
Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.
mvanhorn/printing-press-library
Search, browse, and download Google Fonts from the terminal via the gfonts CLI.
mvanhorn/printing-press-library
The free, offline Trigger phrases: search 1688 for, find a factory on 1688 for, wholesale price on 1688 for, who is the cheapest supplier on 1688 for, compare 1688 suppliers for, use 1688, run 1688.
mvanhorn/printing-press-library
Inspect known Activity Japan plan IDs or URLs, compare dated prices and sessions, check language-sitemap coverage, and hand off to canonical booking pages.
mvanhorn/printing-press-library
Every Admin By Request portal action, plus a local SQLite mirror of audit, events, inventory and requests for ad-hoc...
mvanhorn/printing-press-library
macOS screen capture, window recording, GIF conversion, and agent evidence bundles from the terminal.
Aircraft forensics from open public records — tail-number dossiers, fleet research, model-level safety, and NTSB event archaeology. Pp Airframe is an agent skill from mvanhorn/printing-press-library. Aircraft forensics from open public records — tail-number dossiers, fleet research, model-level safety, and NTSB event archaeology.
Pp Airframe fits situations like: phrases: look up tail number; who owns this plane N…; what aircraft does <company own; safety record of <aircraft model.
Run `npx skills add mvanhorn/printing-press-library --skill pp-airframe -a claude-code`. Or copy the skill folder (cli-skills/pp-airframe in mvanhorn/printing-press-library) into .claude/skills/pp-airframe in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvanhorn/printing-press-library --skill pp-airframe -a codex`. Or copy the skill folder (cli-skills/pp-airframe in mvanhorn/printing-press-library) into .agents/skills/pp-airframe 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 mvanhorn/printing-press-library --skill pp-airframe -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pp-airframe, .gemini/skills/pp-airframe, .github/skills/pp-airframe and .opencode/skills/pp-airframe in your project.
Going by SKILL.md and its folder, Pp Airframe needs the command-line tools its instructions call (go, apt, dnf, npx and brew). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Bash.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (runs commands with sudo; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Pp Airframe is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 Pp Airframe: Recording (codewhale-hq/Codewhale, 41k stars), Architecture Decision Records (affaan-m/ECC, 276k stars), Digital Forensics (sickn33/agentic-awesome-skills, 47k stars) and Digital Forensics (zhaoxuya520/reverse-skill, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mvanhorn (a GitHub user) maintains it in mvanhorn/printing-press-library, which has 2,056 GitHub stars. The repository holds 506 skills in this directory. The repository was last updated on October 9, 2026.
Source: mvanhorn/printing-press-library on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.