Skip to content

Commit cc332ad

Browse files
committed
feat: add /handoff /inbox /ack as dedicated top-level slash commands
Three thin alias skills that pass arguments straight through to the underlying session-absorb subcommands. They give users single-word slash commands instead of having to remember /absorb pass-through syntax. - /handoff [args] runs session-absorb handoff - /inbox [args] runs session-absorb inbox - /ack <id> [--note] runs session-absorb ack Each skill is ~30 lines: frontmatter (name, description, argument-hint) plus a short routing block and quick examples. Descriptions are scoped to "Use when the user types /<name>" so they don't auto-fire on unrelated mentions. Wired into command_install so future installs pick them up alongside the existing /absorb alias. Onboarding footer updated to list the new slash commands.
1 parent 8d256a4 commit cc332ad

4 files changed

Lines changed: 117 additions & 2 deletions

File tree

skills/claude/ack/SKILL.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
name: ack
3+
description: Use when the user types /ack with a handoff id. Pass-through alias for `session-absorb ack` - marks a pending handoff as absorbed and records the acknowledgment timestamp and session id.
4+
argument-hint: "<handoff-id> [--note TEXT]"
5+
---
6+
7+
# Ack
8+
9+
Thin alias for `session-absorb ack`. Marks a handoff as absorbed.
10+
11+
## Routing
12+
13+
Pass arguments straight through:
14+
15+
```bash
16+
$HOME/.local/bin/session-absorb ack {{ARGUMENTS}}
17+
```
18+
19+
Task: {{ARGUMENTS}}
20+
21+
## Quick examples
22+
23+
```bash
24+
# Acknowledge handoff #3
25+
/ack 3
26+
27+
# Acknowledge with a note back to the source
28+
/ack 3 --note "picked it up, continuing now"
29+
```
30+
31+
To see what's pending in your inbox first, use `/inbox`.

skills/claude/handoff/SKILL.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
name: handoff
3+
description: Use when the user types /handoff. Pass-through alias for `session-absorb handoff` - writes a structured handoff brief (with optional --done / --pending / --blocked notes), logs it to the inbox, and optionally launches the receiving session.
4+
argument-hint: "[--target-cli claude|codex] [--done TEXT] [--pending TEXT] [--blocked TEXT] [--require-ack] [--no-launch] [...]"
5+
---
6+
7+
# Handoff
8+
9+
Thin alias for `session-absorb handoff`. Same behavior, shorter to type.
10+
11+
## Routing
12+
13+
Pass arguments straight through:
14+
15+
```bash
16+
$HOME/.local/bin/session-absorb handoff {{ARGUMENTS}}
17+
```
18+
19+
Task: {{ARGUMENTS}}
20+
21+
## Quick examples
22+
23+
```bash
24+
# End-of-day async handoff to whoever opens this cwd next
25+
/handoff --no-launch --target-cwd "$(pwd)" --done "API routes done" --pending "frontend wiring" --blocked "Stripe key"
26+
27+
# Cross-CLI handoff with explicit ack required
28+
/handoff --target-cli claude --require-ack --done "refactor complete"
29+
30+
# Same-CLI structured handoff that opens a fork
31+
/handoff --done "schema migrated" --pending "backfill job"
32+
```
33+
34+
For the full flag list, run `session-absorb handoff --help` or see `~/.claude/skills/session-absorb/SKILL.md` and the project docs.
35+
36+
For a click-driven flow that picks the source session for you, use `/absorb` and choose 🎯 More then 📦 Handoff.

skills/claude/inbox/SKILL.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
name: inbox
3+
description: Use when the user types /inbox. Pass-through alias for `session-absorb inbox` - lists pending handoffs targeted at the current session, cwd, or CLI. Defaults to the current context via CLAUDE_CODE_SESSION_ID and $PWD.
4+
argument-hint: "[--source claude|codex|all] [--cwd PATH] [--show-all] [--json] [--limit N]"
5+
---
6+
7+
# Inbox
8+
9+
Thin alias for `session-absorb inbox`. Shows pending handoffs targeted at you.
10+
11+
## Routing
12+
13+
Pass arguments straight through:
14+
15+
```bash
16+
$HOME/.local/bin/session-absorb inbox {{ARGUMENTS}}
17+
```
18+
19+
Task: {{ARGUMENTS}}
20+
21+
## Quick examples
22+
23+
```bash
24+
# Pending handoffs for this session / cwd / CLI
25+
/inbox
26+
27+
# Include already-acknowledged ones
28+
/inbox --show-all
29+
30+
# Machine-readable
31+
/inbox --json
32+
33+
# Filter by another cwd
34+
/inbox --cwd ~/proj/api
35+
```
36+
37+
Match rules: a handoff appears in your inbox if its `target_cli`, `target_cwd` (prefix match against your `$PWD`), and `target_session_id` are either null or match your current context.
38+
39+
To acknowledge one, use `/ack <handoff-id>`.

skills/shared/session_absorb_core.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3356,6 +3356,12 @@ def command_install(args: argparse.Namespace) -> int:
33563356
results.append(
33573357
install_skill_copy(claude_alias_source, CLAUDE_HOME / "skills" / "absorb")
33583358
)
3359+
for alias_name in ("handoff", "inbox", "ack"):
3360+
alias_source = repo_root / "skills" / "claude" / alias_name
3361+
if alias_source.exists():
3362+
results.append(
3363+
install_skill_copy(alias_source, CLAUDE_HOME / "skills" / alias_name)
3364+
)
33593365
print("\n".join(results))
33603366
print()
33613367
print("--- Onboarding ---")
@@ -3372,8 +3378,11 @@ def command_install(args: argparse.Namespace) -> int:
33723378
print(" !sa fork-myself # fork the CURRENT session into new Terminal")
33733379
print(" !sa list --active-only # list active sessions")
33743380
print()
3375-
print(" For a clickable in-chat picker (slow but conversational):")
3376-
print(" /absorb")
3381+
print(" Slash commands available in Claude Code:")
3382+
print(" /absorb # click picker, default daily flow")
3383+
print(" /handoff # write a structured handoff (with --done / --pending / --blocked)")
3384+
print(" /inbox # see pending handoffs targeted at this session / cwd / CLI")
3385+
print(" /ack <id> # acknowledge a handoff so the source knows it landed")
33773386
print()
33783387
print("Full reference: see docs/reference.md or run `session-absorb --help`.")
33793388
return 0

0 commit comments

Comments
 (0)