What - the GitHub capability: expanding # issue references typed in chat, plus the gh/git helpers the scheduler reuses.
Why - both depend on the gh CLI and a GitHub remote, which may be missing, so they stay optional and degrade to a no-op.
How - issues/ implements the GitHub port in internal/agent/domain by shelling out to gh. setup/ keeps the workflow version pins for
the scheduler's rendered workflow plus CommandRunner/RealRunner, its gh/git execution port. The root package holds the shared
GITHUB_TOKEN/GH_TOKEN credential lookup (Token) and the unauthenticated rate-limit sentinel (ErrRateLimited) that the gateway
supervisor and the skills/plugins installers reuse.
How it plugs in
issues/ resolves the repository's open issues and expands #N into the issue's title, body and recent comments.
setup/ keeps the version pins for the scheduler's rendered workflow and the command runner its store and poller wrap.
Installing or updating the OpenTask workflow is the agent's job now: mention the /opentask skills catalog skill in a normal chat turn and
the agent does the install itself. The CLI ships no dedicated flow for it.
There is deliberately no built-in GitHub tool. Bash with the gh CLI and the /scm shortcuts are the supported paths.
var ErrRateLimited = errors.New("GitHub API rate limit exceeded (60 req/hour for unauthenticated requests) - set GITHUB_TOKEN (or GH_TOKEN) to raise the limit to 5,000/hour, or try again later")
ErrRateLimited is returned when the GitHub API answers 403 or 429 because
the unauthenticated 60 requests/hour quota is exhausted.
Token returns the GitHub token from the environment, preferring GITHUB_TOKEN
and falling back to GH_TOKEN (matching the gh CLI). It returns "" when
neither is set.