firstmate is an agent distribution that lets one coding agent coordinate a crew of autonomous agents working in separate git worktrees. It is for running parallel fixes, investigations, plans, and audits while receiving completed pull requests, merges, or reports through one supervising agent. The catalogue entries provide skills, hooks, instructions, and settings for operating this workflow.
Borrowing it
Nothing to install: this file belongs to kunchenguid/firstmate. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/kunchenguid/firstmate/main/.agents/skills/bootstrap-diagnostics/SKILL.mdgit clone --depth 1 https://github.com/kunchenguid/firstmateWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kunchenguid/firstmate/bootstrap-diagnostics)<a href="https://agentmods.dev/skills/kunchenguid/firstmate/bootstrap-diagnostics"><img src="https://agentmods.dev/badge/skills/kunchenguid/firstmate/bootstrap-diagnostics/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kunchenguid/firstmate/bootstrap-diagnostics"><img src="https://agentmods.dev/badge/skills/kunchenguid/firstmate/bootstrap-diagnostics.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00172 | $0.03194 |
| Opus 5.5 | $0.00069 | $0.01278 |
| Sonnet 5.5 | $0.00034 | $0.00639 |
| Haiku 4.5 | $0.00017 | $0.00319 |
Grade A, and why
bootstrap-diagnostics scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 80 lines — stays where its author put it; the contents beside it link to each section on GitHub.
bootstrap-diagnostics
Handle each printed line as below, before dispatching work that depends on it.
The line formats themselves are owned by bin/fm-bootstrap.sh's header; this playbook owns the response to actionable lines.
The session-start rules in session-start-recovery still bind: detect, then consent, then install or upgrade - never change a tool the captain has not approved in this session - and no work is dispatched until the tools it needs are present and GitHub auth is good.
When any diagnostic needs captain attention, report the plain consequence and requested action using AGENTS.md section 9's captain-facing translation contract; do not name the diagnostic label unless the captain needs to paste it into a command or issue.
MISSING: <tool> (install: <command>)- the tool is absent; list the missing tools to the captain with a one-line purpose each plus the printed install commands, wait for consent (one approval may cover the list), then runbin/fm-bootstrap.sh install <approved tools...>. An installed tool below its floor, or one missing a required capability, reportsOUTDATED:instead.OUTDATED: <tool> (installed: <version|unparseable>; requires <floor|capability>; upgrade: <command>)- the tool is present but below what this home needs, so it is an upgrade request, not an install. Report the installed version and the printedupgrade:command and wait for the same consent rule before running it; a printed command that is the tool's own installer means that tool ships no self-updater yet, so the upgrade reuses its install command.bin/fm-bootstrap.showns the floor policy, and never argue the floor down to whatever the home happens to have installed. Forno-mistakes, the floor is 1.46.0 because this repo's PR gate requires structured pipeline attestation that older builds do not write. Fortreehouse, the requirement istreehouse get --leasesupport. Fortasks-axi, the requirement also covers the separate feature probe (bin/fm-tasks-axi-lib.showns the definition);config/backlog-backend=manualonly suppresses the verboseBOOTSTRAP_INFO: tasks-axi availablefact, not this report. Forquota-axi, bootstrap requires it because firstmate reads its current output directly before resolving every crew-dispatch profile array; without it, report the requirement and do not choose around an unexamined candidate.PRESENTATION_UNAVAILABLE: lavish-axi ...- explain that visual presentation is unavailable and continue nonvisual work with plain-text decisions and reports; do not hold unrelated dispatch for installation consent. Do not use Lavish until it satisfies the floor owned bybin/fm-bootstrap.sh; when visual work needs it, request consent for the printed install or upgrade command, then rerun bootstrap to confirm compatibility before using it. Scout briefs check the same floor when scaffolded and ask for a text report instead of a Lavish loop, so scaffold a visual scout only after that rerun confirms compatibility.MISSING_MANUAL: <tool> (instructions: <url>)- tell the captain why the tool is required and give them the printed instructions URL, but do not pass the tool tobin/fm-bootstrap.sh install; wait for the captain to complete the manual installation, then rerun session start to confirm the dependency is present.BACKEND_INVALID: <name> (known: <names>)- the resolved runtime backend has no verified dependency or lifecycle contract, so do not dispatch work until the invalidFM_BACKENDorconfig/backendvalue is corrected to one of the listed backends.NEEDS_GH_AUTH- ask the captain to run! gh auth login(interactive; you cannot run it for them). This probe now arrives from the deferred network stage, so it is also how an unreachable network shows up:ghcannot validate its token offline and reports the same failure. Confirm reachability before asking the captain to re-authenticate a credential that may be fine.NETWORK_CHECKS: <what did not complete>; rerun <command>- the deferred network stage itself could not finish, so the checks it names are simply unknown, not failed. Rerun the printed command; it is idempotent and re-derives every finding. Ahit the ...s boundline means one of those checks is slow or unreachable - most often a remote secondmate host - and the stage stopped rather than letting it wedge; arecorded fleet lock holder changedline means lock line 1 no longer names the pid that requested the sweeps, because another session took the lock or this session re-anchored it, so they were skipped and belong to whichever session holds the lock now.TANGLE: <remediation>- the primary checkout is stranded on a feature branch instead of its default branch;AGENTS.mdsection 8 explains why this guard exists and what it protects. The work is safe on that branch ref; restore the primary to its default branch with the printedgit -C <root> checkout <default>, then re-validate that branch in a proper worktree. This is the only sanctioned firstmate-initiated git write to the primary, and it is a non-destructive branch switch that strands nothing.STARTUP_MEMORY_BUDGET: invalid config/startup-memory-budget - <reason>- the visible startup-memory budget is not a safe one-line positive decimal file; do not infer the default or propagate it. Correct the local primary file, then rerun session start so the normal convergence path can deliver the validated value to secondmate homes.CREW_DISPATCH: invalid config/crew-dispatch.json - <reason>- the optional dispatch profile file exists but failed low-cost bootstrap validation; stop profile-based dispatch, report the actionable error, and require correction of the malformed schema, unverified harness name, or invalid harness/effort pair rather than falling back around it or selecting a bad profile.FLEET_SYNC: <repo>: skipped: <reason>- a benign one-off skip (offline, no origin, local-only); bootstrap continued, investigate only if it blocks work. A skip can also report the bounded fleet-refresh timeout (FM_FLEET_SYNC_BOOTSTRAP_TIMEOUT, or a fleet-size-aware default with a 20 second floor); a timeout never blocks startup.skipped: registry entry does not resolve to a delivery postureis the one skip that is not one-off: the clone is left alone on every bootstrap untildata/projects.mdis corrected, so run the printedbin/fm-project-mode.sh <repo>to read the refusal and fix the entry.FLEET_SYNC: <repo>: recovered: <detail>- the clone had drifted onto a clean detached HEAD holding no unique commits and the sync self-healed it (re-attached the default branch and fast-forwarded); no action needed, it is reported only so the self-heal is visible.FLEET_SYNC: <repo>: STUCK: on <state>, N commits behind <base> - needs attention- the clone is dirty, on a non-default branch, detached with unique commits, or diverged, so the sync left it untouched (never forcing or discarding); it will keep falling behind until you look. A loud STUCK, especially a growing N across bootstraps, means that clone needs hands-on attention; dispatch a crewmate or resolve it before it strands work.HOME_SUMMARY: this home has never published state/home-summary.jsonor... has not been republished since <stamp>- this home's structured summary publication has failed repeatedly, and the line carries the failure count and the newest recorded reason fromstate/.home-summary-refresh.log. Publication is deliberately best-effort, so it cannot change another session-start, spawn, teardown, or watcher-poll result, and the watcher runs it detached so a slow attempt cannot delay the liveness beacon. Read the named record for the recorded reasons, then reproduce with a directbin/fm-home-summary-refresh.sh(no--best-effort, which is what keeps the failure quiet) so the refresh error reaches you. A recorded deadline means the complete refresh did not finish insideFM_HOME_SUMMARY_TIMEOUT, so inspect lock acquisition and producer completion before validation or publication, and fix the blocked phase rather than raising this load-bearing bound.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago Changed · +3 lines · +3 tokens per session bdf323752aea
- 4d ago Changed · -1 lines · -16 tokens per session dc3a3a953e4a
- 7d ago Changed d977755dae4c
- 27d ago Changed 968ae87f4908
- 1mo ago Changed · +1 lines 78769f53179d
- 1mo ago Changed · +3 lines 6babab02592a
- 1mo ago Changed · +3 lines · +5 tokens per session 08ec5999344d
- 1mo ago Changed 32919518388b
- 1mo ago Changed · +2 lines 44df25f54d0c
- 1mo ago First seen · 69 lines · 180 tokens per session scan A 24178cac2d69
bootstrap-diagnostics is a skill published in the GitHub repository kunchenguid/firstmate (8,295 stars, last pushed today), licensed MIT. It adds 172 tokens to every session and 3,194 once invoked, about $0.0007 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
debug-optimize-lcp
Guides debugging and optimizing Largest Contentful Paint (LCP) using Chrome DevTools MCP tools. Use this skill whenever the user asks about LCP performance, slow page loads, Core Web Vitals optimization, or wants to understand why their page's main content takes too long to appear. Also use when the user mentions…
systematic-debugging
Use when debugging a failing test, build error, or runtime issue that isn't immediately obvious. Guides a 4-phase root cause analysis instead of random fix attempts.
log-error-digest
Analyze log files to troubleshoot errors, identify peak error periods, and produce error clustering, frequency statistics, and time distribution reports. Supports JSON, syslog, and Nginx formats with automatic detection. Use when a user uploads a .log file and asks to analyze errors, find patterns, debug issues, or…
deck-retro
Run a fully local agent-deck retrospective over the user's own transcripts, Recall index and logs. Use when a user wants to find recurring failures or take their own finding from investigation through synthetic reproduction, a user-filed issue, a test-first fix and contributor PR handoff. Also use for weekly usage…
cwv-optimizer
Diagnose and fix Core Web Vitals issues on AEM Edge Delivery Services pages. Goes deeper than generic CWV advice by understanding EDS-specific performance patterns including the 100KB LCP budget, E-L-D loading phases, block rendering behavior, and third-party script impact. Produces specific fixes for LCP, CLS, and…
incident-response-incident-response
Coordinate production incident triage, mitigation, investigation, recovery, and follow-up. Use when responding to outages or other incidents that require structured operational coordination.