Afk banner
wickdninja wickdninja

Afk

Communication community

Description

Claude Code skill to drive coding sessions from your phone (Slack or iMessage). One thread per session, sentinel-based disambiguation, backoff-aware polling.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

afk

A [Claude Code][claude-code] skill for driving coding sessions from your phone when you step away from the keyboard.

You tell Claude where you're going (`/loop /afk ship the routing fix`), Claude posts a thread, and you drive the rest from Slack or iMessage. Milestones get posted, questions get asked, replies get parsed. No babysitting, no mid-dinner "is it done yet" anxiety.

How it looks

**Slack thread (default transport)** — one thread per session, triage a whole queue of worktrees from the channel timeline:

![Slack AFK session](docs/slack-session.png)

**iMessage / SMS (single-session)** — good for when you're truly off-wifi or don't want to open Slack on your phone:

![iMessage AFK session](docs/imessage-session.png)

In both cases your sends and Claude's sends appear under the same account, so the skill uses a `🤖 ` sentinel prefix to tell them apart. No polling your own posts into an infinite loop.

**iMessage gotcha**: if your Mac and iPhone are signed into the same Apple ID, every message in `chat.db` is marked `is_from_me=1` — including yours. The sentinel is the only reliable filter; the skill detects this case at session start and pins to sentinel-only filtering.

Quick install (user-scoped)

git clone https://github.com/wickdninja/afk.git ~/.claude/skills/afk

Or into a specific project:

git clone https://github.com/wickdninja/afk.git /.claude/skills/afk

The skill is invoked as `/afk` inside Claude Code, always wrapped in `/loop` so the [`ScheduleWakeup`][scheduled-wakeup] harness can do the polling:

/loop /afk                               # resume or inherit from current terminal context
/loop /afk                         # explicit task
/loop /afk --transport=imessage    # drive via iMessage/SMS instead of Slack

Configuration

Transport identity lives in user-local config so this repo stays clean.

Slack (`~/.claude/afk/slack.json`)

{
  "user_id":        "U0123