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/afk/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/afk)<a href="https://agentmods.dev/skills/kunchenguid/firstmate/afk"><img src="https://agentmods.dev/badge/skills/kunchenguid/firstmate/afk/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/afk"><img src="https://agentmods.dev/badge/skills/kunchenguid/firstmate/afk.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Rogue Agent · line 36 Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
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.00093 | $0.06996 |
| Opus 5.5 | $0.00037 | $0.02798 |
| Sonnet 5.5 | $0.00019 | $0.01399 |
| Haiku 4.5 | $0.00009 | $0.00700 |
Grade A, and why
afk 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 today.
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 — 258 lines — stays where its author put it; the contents beside it link to each section on GitHub.
afk
Away mode is a POSTURE of the one supervision session, not a second architecture.
Being away changes exactly two things: how the captain is informed, and what happens at a captain-owned decision point (hold for return, or the answer the captain's away words already gave).
It never changes the authority set.
The posture is a file, state/.afk-contract, written only by bin/fm-afk-contract.sh in the same turn as /afk; nothing infers the posture from chat.
A record carrying quiet mode (bin/fm-afk-contract.sh mode) is not this posture: the captain is present, so none of this skill's holds for a return apply to it (the quiet skill owns it).
Typing /afk is itself the go: the captain may not look at the screen again, so entry never waits for a further human response, and no read-back gates it or asks for a go.
Hold-for-return is the default and the only reach profile this release records: there is no phone channel, and the entry announcement says so aloud every time.
Entering: /afk [words]
- Write the record first, in this same turn.
Before any other work, run
bin/fm-afk-launch.sh enter --words-file <path> [--expected-return <UTC ISO 8601>] [--spend <n>](or--words <text>). It writesstate/.afk-contractat once, with no separate confirmation step, then prints the entry announcement and the record's read-back. The words are the whole mandate:bin/fm-afk-contract.shrecords them exactly as given, with no clause fields, verbs, ids, or merge-grant list, and by the captain's mandate no parser, tokenizer, classifier, or grammar reads them anywhere. Readbin/fm-afk-contract.sh --helpfor the flags rather than memorizing them. Plain/afkwith no words is a valid entry with no mandate; the announcement says no instructions were recorded. Re-invoking/afkwhile already away with no new words is a refresh and leaves the standing record untouched; new words replace the mandate at once, preserve the original session entry, and archive the superseded words for the return brief. - Per harness, after the record exists:
- Pi and pi-signed: nothing to launch; go on to the announcement.
The away daemon is no longer launched on Pi; the ordinary supervision session (
docs/pi-supervision-branch.md) keeps running with the record present, andbin/fm-afk-launch.sh startrefuses on these harnesses. With the record present main is parked: the supervision branch takes every safe actionable wake, captain outcomes accumulate for the return brief, and main's standing authority relocates to the branch through the guarded scripts (docs/pi-supervision-branch.md"Postures"); only a wake the branch declines (including a broken branch or unsafe scan) or a watcher failure wakes main./quietneeds nothing extra on Pi: the attended branch already keeps routine wakes out of this conversation, so quiet-while-present is the attended posture's own shape there. - A home that runs the supervision host (a Claude home unless
config/supervision-host-offopts it out, or a Cursor, OpenCode, omp, Grok, or Codex home withconfig/supervision-hostand no opt-out;docs/configuration.md"Supervision host"): nothing to launch for/afk; go on to the announcement. The supervision host (docs/supervision-host.md) is the away session there: it runs the branch's contract on a headless engine under the record while main is parked, andbin/fm-afk-launch.sh startandstart-nativerefuse the away daemon on that home. Ifenterprinted aSupervision host: no engine ...line, every away wake reaches this conversation instead; say so in the announcement./quietenters nothing there where the attended host runs, and otherwise still launches the daemon below (the quiet skill'squiet-checkdecides). - Harness WITH a native in-pane tracked-background tool (claude's and grok's, on a home that does not run the supervision host): run
bin/fm-afk-launch.sh start-native, then runFM_AFK_STATE_PREPARED=1 bin/fm-afk-start.shthrough that native tool. This is a deliberate no-separate-terminal exception because the harness-hosted job creates no terminal or layout mutation, and a shell launcher cannot invoke a harness-native background tool. If the native launch fails, runbin/fm-afk-launch.sh stopto roll back the prepared lifecycle. Do not wrap it innohup ... &(Codex/herdr can reap fire-and-forget shell children after a tool call returns). - Every other harness (codex, opencode, omp, and cursor on a home that does not run the supervision host, and kimi): run
bin/fm-afk-launch.sh start. It is the single owner of the daemon terminal: on pane backends it creates a NON-VISIBLE tracked terminal and passes the captain endpoint asFM_SUPERVISOR_TARGETso the daemon injects into the captain, not its own new pane (docs/herdr-backend.md "Away-mode supervisor support"). On the t3code backend there is no terminal to create, sostartrefuses and only the native path above works; a Codex captain hosted by T3 Code has no away daemon (docs/t3code-backend.md "Active limits"). Both daemon paths require the recordenterwrote and sharebin/fm-afk-start.shas the daemon entry. The daemon is presence-gated: it injects escalations only whilestate/.afkexists, and stays quiet otherwise.
- Pi and pi-signed: nothing to launch; go on to the announcement.
The away daemon is no longer launched on Pi; the ordinary supervision session (
- Announce, then read back after entry.
Relay the announcement in spirit: hold-for-return only, no phone channel, your instructions are recorded and the away session will carry them out where it can, anything it is unsure of, or that needs you, waits for your return, and destructive, irreversible, and security-sensitive actions are never pre-authorizable whatever the words say.
Then give your own plain-sentence restatement of the words in
AGENTS.mdsection 9 language - what you read them as asking for, sentence by sentence, never a numbered field list - beside the expected return, the spend cap, and the one-sentence reach announcement. Say plainly which sentence, if any, you could not act on while away (a red merge, a discard, anything on the never-set, local-only landing); it waits for their return. This read-back is informational: the record already stands, so never ask for a go or wait for a reply; a captain who wants a different reading sends/afkagain with new words. - Do not separately arm
fm-watch.shwhere the daemon runs. The daemon manages the watcher as its child; the singleton lock no-ops a stray arm harmlessly. On Pi nothing changes about arming: the supervision session's own cycle continues.
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.
- today Changed · -9 lines 84fe32d0b041
- yesterday Changed 8cf6334f9cc7
- 2d ago Changed · -12 lines 32163309b954
- 4d ago Changed · -108 tokens per session 23a26d15e4a0
- 6d ago Changed f31914bc81b3
- 9d ago Changed · +4 lines be7bb57d24d7
- 20d ago Changed · +2 lines f6452d49d288
- 24d ago Changed d8af2c6a2004
- 25d ago Changed · -1 tokens per session c1c6b627903d
- 26d ago First seen · 273 lines · 202 tokens per session scan A ee13256f75ac
afk is a skill published in the GitHub repository kunchenguid/firstmate (8,295 stars, last pushed today), licensed MIT. It adds 93 tokens to every session and 6,996 once invoked, about $0.0004 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
orbit-notion
Open Orbit briefing skill — selected by the Orbit pipeline when Notion is the user's only connected connector, or when the user explicitly scopes their daily digest to Notion. Pulls the past 24 hours of document edits, comments, mentions, and database row changes from the user's authenticated Notion connection and…
agentmail
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by your inbox assignment.
rowboat-spaces
How to work as a member of Rowboat Spaces, the team chat where people and agents work together. Load it once per session, before acting on any request that reaches you from Rowboat; it covers your setup, mentions and hand-offs, the tools, and files.
feishu
Work with Feishu or Lark bots, docs, sheets, bitables, approval flows, and OpenAPI/MCP setup without hardcoding credentials.
pinchtab-mcp
Use this skill when a task requires browser automation through PinchTab's MCP server connected to a remote browser instance. Covers navigation, element interaction, data extraction, form filling, multi-step flows, and session management via MCP tools.
mochi-remind
Handle due reminders — notify the user with natural language and mark them done.