firstmate: Skill for Claude Code

.agents/skills/afk/SKILL.md

afk is a skill for Claude Code from kunchenguid/firstmate. It costs 93 tokens per session (6,996 once invoked), scanned A, original, MIT.

An away-mode supervisor for a coding-agent session. It records that the main operator is away and lets a background supervisor handle routine events while sending important issues back.

In plain words
What is it for?
It helps start and track the away-mode state, run the sub-supervisor daemon, and batch escalations for later review.
Why use it?
It prevents routine background activity from repeatedly interrupting the person supervising the agent.

Skill for Claude Code

Written for Claude Code: user-invocable in frontmatter. Also seen: mentions Claude Code; installed under .agents/ (shared by several agents); mentions AGENTS.md.

This is kunchenguid/firstmate's own configuration. It tells Claude Code how to work on firstmate itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything firstmate configures →

About the project

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.

kunchenguid/firstmate · 8,295 stars · on GitHub

Reuse

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.

Copy the file
curl -O https://raw.githubusercontent.com/kunchenguid/firstmate/main/.agents/skills/afk/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/kunchenguid/firstmate

Made for: Claude Code.

Wrote 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.

agentmods badge for afk

README.md
[![agentmods](https://agentmods.dev/badge/skills/kunchenguid/firstmate/afk/github.svg)](https://agentmods.dev/skills/kunchenguid/firstmate/afk)
Your own site
<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.

agentmods 80×15 button for afk

Your own site · 80×15
<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>
Per session 93 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 6,996 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
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.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured today against content hash 84fe32d0b041, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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.

.agents/skills/afk/SKILL.md · 258 lines

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]

  1. 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 writes state/.afk-contract at 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.sh records 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. Read bin/fm-afk-contract.sh --help for the flags rather than memorizing them. Plain /afk with no words is a valid entry with no mandate; the announcement says no instructions were recorded. Re-invoking /afk while 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.
  2. 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, and bin/fm-afk-launch.sh start refuses 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. /quiet needs 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-off opts it out, or a Cursor, OpenCode, omp, Grok, or Codex home with config/supervision-host and 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, and bin/fm-afk-launch.sh start and start-native refuse the away daemon on that home. If enter printed a Supervision host: no engine ... line, every away wake reaches this conversation instead; say so in the announcement. /quiet enters nothing there where the attended host runs, and otherwise still launches the daemon below (the quiet skill's quiet-check decides).
    • 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 run FM_AFK_STATE_PREPARED=1 bin/fm-afk-start.sh through 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, run bin/fm-afk-launch.sh stop to roll back the prepared lifecycle. Do not wrap it in nohup ... & (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 as FM_SUPERVISOR_TARGET so 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, so start refuses 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 record enter wrote and share bin/fm-afk-start.sh as the daemon entry. The daemon is presence-gated: it injects escalations only while state/.afk exists, and stays quiet otherwise.
  3. 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.md section 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 /afk again with new words.
  4. Do not separately arm fm-watch.sh where 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.

Read the full file on GitHub · 258 lines

Changes

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.

  1. today Changed · -9 lines 84fe32d0b041
  2. yesterday Changed 8cf6334f9cc7
  3. 2d ago Changed · -12 lines 32163309b954
  4. 4d ago Changed · -108 tokens per session 23a26d15e4a0
  5. 6d ago Changed f31914bc81b3
  6. 9d ago Changed · +4 lines be7bb57d24d7
  7. 20d ago Changed · +2 lines f6452d49d288
  8. 24d ago Changed d8af2c6a2004
  9. 25d ago Changed · -1 tokens per session c1c6b627903d
  10. 26d ago First seen · 273 lines · 202 tokens per session scan A ee13256f75ac

Subscribe to this mod's changes

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.