Your agent sleeps.
The event wakes it.
An OpenCode agent schedules a wake‑up and ends its turn. A small daemon watches for the event, then queues one message back into the session.
skulk when pr-checks --repo acme/app --pr 42 --do "Fix any failures."
How it works
- WatchThe agent runs
skulkand ends its turn. - WaitThe daemon checks for the event. The session uses no tokens.
- WakeOne message lands in the session with the result.
Triggers
- in · at
- After a duration, or at a time of day
- when gh-run
- A GitHub Actions run completes
- when pr-checks
- Every check on a pull request finishes
- when npm
- A package version is published
- when exits
- A blocking command exits
- when idle
- Other agent sessions finish
- when capacity
- The machine has room for heavy work
- poll
- Any command's output changes, matches or succeeds
skulk in 2h --do "Check whether the deploy finished."
skulk when npm --package @opencode/client --tag dev --changes \
--do "Bump to the new dev version."
skulk when idle ses_perf ses_arch --do "Both agents are done. Review their branches."
skulk poll --every 2m --succeeds --do "Staging is up. Run the smoke tests." \
-- curl -fsS https://staging.example.com/health
Install
Needs Bun and OpenCode. Or build it from source.
bun add -g @kitlangton/skulk
skulk launchd > ~/Library/LaunchAgents/dev.kitlangton.skulk.plist
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/dev.kitlangton.skulk.plist
skulk status
Agent skill
Teaches any coding agent when to schedule a wake instead of sleep-polling.
npx skills add kitlangton/skulk
