Dailybot Agent Skill
The Dailybot Agent Skill is a single cross-agent skill pack that installs into every major AI coding CLI with one command. Once installed, your agent has the same verbs a human teammate has — report progress, complete check-ins, send an email, kudos a colleague, post on Slack or Teams, submit a form, or announce its own health. Every sub-skill maps 1:1 to a public Dailybot API endpoint. This page is the technical reference; for the plain-English pitch, read /skills/agent-skill.
Two commands and your agent is a teammate
.agents/skills/. Everything else on this page is reference material for what happens after those two commands.Install
Prerequisites: dailybot-cli >= 1.10.0 as a baseline —>= 1.17.2 is required for the authoring surface (check-ins/forms create + config, report channels). Theagent-skill router installs the CLI on first use fromhttps://cli.dailybot.com/install.sh, verified against a SHA-256 checksum. The skill pack itself is pinned atDailybotHQ/agent-skill >= 1.8.3.
Recommended — any AI CLI
Install the CLI baseline, then add the skill to your project:
curl -fsSL https://cli.dailybot.com/install.sh | bash
npx skills add DailybotHQ/agent-skillClaude Code · Cursor · OpenAI Codex CLI · Gemini CLI
npm-based agents read .agents/skills/ directly. One install is enough:
npx skills add DailybotHQ/agent-skillGitHub Copilot · Cline · Windsurf
Any harness that reads .agents/skills/ works. Clone the skill into place:
git clone https://github.com/DailybotHQ/agent-skill \
.agents/skills/dailybot-agentManual
git clone https://github.com/DailybotHQ/agent-skill
cd agent-skill && ./setup.shInfo
DAILYBOT_AUTO_YES=1 in CI to skip the first-use CLI-install consent prompt so unattended runs never hang.Filesystem layout
Once installed, the skill lives inside your project's.agents/skills/dailybot-agent/. Per-repo policy and identity live under .dailybot/. Every file is plain text — no binaries, no bundled Node modules. Installing is a copy operation; uninstalling is rm -rf .agents/skills/dailybot-agent/.
<repo>/
├── .agents/
│ ├── skills/
│ │ └── dailybot-agent/
│ │ ├── SKILL.md # top-level router
│ │ ├── report/SKILL.md
│ │ ├── checkin/SKILL.md
│ │ ├── chat/SKILL.md
│ │ ├── kudos/SKILL.md
│ │ ├── forms/SKILL.md
│ │ ├── teams/SKILL.md
│ │ ├── health/SKILL.md
│ │ ├── email/SKILL.md
│ │ ├── conversation/SKILL.md
│ │ ├── ask/SKILL.md
│ │ ├── messages/SKILL.md
│ │ ├── workflow/SKILL.md
│ │ └── channels/SKILL.md
│ └── settings.json # optional harness hooks (Claude Code)
├── .cursor → .agents # symlink (Cursor reads hooks.json here)
├── .claude → .agents # symlink for legacy Claude Code paths
└── .dailybot/
├── profile.json # per-repo identity + policy (commit)
└── disabled # opt-out flag (commit or keep local)Authentication
The skill is a thin wrapper over the dailybot CLI. Auth is inherited from whichever credential the CLI resolves first — both credentials have identical scopes (parity is a written guarantee, no scoped-down surprises in CI).
| Source | Setup | Use case |
|---|---|---|
dailybot login | Interactive email OTP | Developer laptops, ad-hoc runs |
DAILYBOT_API_KEY | Environment variable | CI, unattended agents, headless runners |
Precedence: DAILYBOT_API_KEY wins when both are set. Verify the resolved credential with:
dailybot status --authFull details: Authentication.
Sub-skill reference
The pack exposes thirteen sub-skills, one per public Dailybot verb. Each is a thin wrapper over the corresponding dailybot CLI command — so anything you can do with the skill you can also do with the CLI directly.
| Sub-skill | CLI command | Auth | Purpose |
|---|---|---|---|
report | dailybot agent update | agent-scoped | Post a 1–3 sentence standup update |
checkin | dailybot checkin … | user-scoped | List / complete pending check-ins; authoring |
chat | dailybot chat send / update | user or org key | Send + edit bot messages on Slack/Teams/Discord/Google Chat |
kudos | dailybot kudos give | user-scoped | Recognize a teammate or a whole team |
forms | dailybot form … | user-scoped | Full response lifecycle + form authoring |
teams | dailybot team get / list | user-scoped | Resolve team names to UUIDs, list members |
health | dailybot agent health | agent-scoped | Announce online/offline, deliver pending inbox |
email | dailybot agent email send | agent-scoped | Send an email to a confirmed recipient |
conversation | dailybot conversation open | user-scoped | Open or resume a group DM thread |
ask | dailybot ask | user-scoped | Query the Dailybot AI assistant (one-shot or interactive) |
messages | dailybot agent message list | agent-scoped | Retrieve pending team messages for the agent |
workflow | dailybot workflow list / get | user-scoped | List and inspect configured workflows |
channels | dailybot channels list | user-scoped | Discover available report channels |
report — progress updates
Wraps dailybot agent update. Sends a standup-style update as the agent, crediting the running human as co-author whenever a session token is present. Rules: 1–3 sentences, WHAT + WHY, English only — never file paths, commit hashes, or branch names.
dailybot agent update "Shipped the pricing refresh — Advanced is now the recommended tier." \
--name "Cursor agent" \
--metadata '{"model":"composer-2.5"}'checkin — standups + authoring
dailybot checkin list # pending today
dailybot checkin show <uuid> # config + questions
dailybot checkin complete <uuid>
dailybot checkin history <uuid>Authoring commands (CLI >= 1.17.2): dailybot checkin create,dailybot checkin edit, dailybot checkin reset.
chat — cross-platform bot messages
Same command surface for Slack, Microsoft Teams, Discord, and Google Chat — the connected platform is resolved server-side, so the skill never has to know which chat vendor your team uses.
dailybot chat send --to @user "Text goes here"
dailybot chat send --channel "#team" --text "Text goes here"
dailybot chat update <message_uuid> --text "Edited text"kudos — recognition
dailybot kudos give --to @teammate --message "Good review on #199"
dailybot kudos give --team Engineering --message "Shipped the release form v9"forms — response lifecycle + authoring
dailybot form list # forms visible to you
dailybot form get <uuid> --json # full payload (questions + states)
dailybot form submit <uuid> --content '{...}' # create a response
dailybot form transition <uuid> <rid> qa # advance workflow state
dailybot form response get <uuid> <rid> --json # read a responseAuthoring commands (CLI >= 1.17.2): dailybot form create,dailybot form update, dailybot form delete. See the Forms API reference for the underlying HTTP surface.
teams — resolve names to UUIDs
dailybot team list
dailybot team get Engineering # case-insensitive
dailybot team get <uuid>Other sub-skills call teams internally when they need to translate a human-readable team name — you rarely invoke it directly.
health — heartbeat + inbox
A successful health check delivers any pending messages back to the agent, so long-running agents poll for team instructions with the same call that keeps them visible in the standup.
dailybot agent health --ok --message "All good"
dailybot agent health --fail --message "DB unreachable"
dailybot agent health --status --name "Claude Code"email — send an email
Consent-gated: the recipient must be pre-confirmed in the agent profile. Bounces come back as agent messages so the skill can react.
dailybot agent email send \
--to [email protected] \
--subject "Weekly summary" \
--body "..."conversation — group DMs
Opens or resumes a group DM thread on the connected chat platform. If the same participant set already has an open thread, the CLI reuses it instead of creating a duplicate.
dailybot conversation open -u @jane @bob -m "Deploy report attached"
dailybot conversation open -u @jane # reuses existing group if same peopleask — AI assistant
One-shot or interactive chat with the Dailybot AI. Supports structured JSON output for programmatic consumption, or a full-screen TUI when invoked without arguments.
dailybot ask "Summarize this week's standup responses"
dailybot ask --json # structured output
dailybot ask # interactive TUI modemessages — agent inbox
Retrieves pending messages addressed to the agent by team members. Useful for long-running agents that need to poll for human instructions between health checks.
dailybot agent message list --name "Claude Code" --pendingworkflow — inspect workflows
Read-only listing and inspection of configured Dailybot workflows. Agents use this to understand what automations are already running before proposing changes.
dailybot workflow list
dailybot workflow get <uuid> --jsonchannels — report channels
Lists the report channels (Slack, Teams, Discord, Google Chat) visible to the authenticated user. Agents call this to discover where to deliver reports and messages.
dailybot channels list --jsonRepo-level .dailybot/profile.json
Committed identity + policy for the repo. No secrets — credentials always live in DAILYBOT_API_KEY or the local session token.
{
"agent_name": "cursor-agent",
"default_metadata": {
"model": "composer-2.5"
},
"report": {
"min_interval_minutes": 20,
"nudge": {
"unreported_commits_threshold": 3,
"sustained_work_minutes": 45
}
}
}agent_name— signs every report so a mixed-agent repo (Cursor + Claude Code) is distinguishable in the standup feed.default_metadata— merged into everydailybot agent updatepayload.report.min_interval_minutes— skill-side rate-limit for reports. The server also enforces a 30-minute floor.report.nudge.*— thresholds for the local hook reminders (unreported commits, sustained work).
Warning
key field to profile.json. API keys belong in DAILYBOT_API_KEY, never in a file that gets committed.Silencing per repo
Drop an empty file to disable every skill hook + telemetry for one repo. Commit it if you want the silence to travel with the repo; keep it local if it's just for you.
touch .dailybot/disabledSession hooks
The skill ships deterministic harness hooks in two flavors — both are best-effort, local-only, and never call the network. The full lifecycle is: session-start → activity → post-commit → stop.
| Harness | Hook file | Events |
|---|---|---|
| Claude Code | .agents/settings.json | SessionStart, PostToolUse, post-commit, Stop |
| Cursor | .cursor/hooks.json | sessionStart, afterFileEdit, post-commit, stop |
On session start the hook injects any login nudge + a summary of unreported work from prior sessions. On file edits it records signals into a local per-repo ledger. On post-commit it fires a stronger commit-level signal for the report nudge heuristic. On stop it decides — from the ledger — whether to inject a "consider sending a Dailybot report" reminder into the agent's context. If the reminder fires and the agent has nothing to say,dailybot hook dismiss snoozes it for an hour.
Full spec: hooks.md in the skill repo.
Troubleshooting
Warning
agent-skill version pins the CLI, not the other way around. If a sub-skill starts failing after a CLI upgrade, upgrade the skill first (npx skills add DailybotHQ/agent-skill@latest). CLI >= 1.17.2 is required for the check-ins/forms authoring surface.dailybot: command not found— the router fell back to a manual install. Runcurl -fsSL https://cli.dailybot.com/install.sh | bashand re-run the sub-skill.401 Unauthorizedfrom any sub-skill — no auth was resolved. Rundailybot login, or exportDAILYBOT_API_KEYbefore invoking the agent.- Sub-skill doesn't appear in the harness —
.agents/skills/dailybot-agent/isn't on disk. Re-run the install command. Rate limit— you exceeded the per-agent report interval. Lower the frequency, or bumpreport.min_interval_minutesin.dailybot/profile.json.
Versioning
| Component | Minimum | Recommended |
|---|---|---|
dailybot-cli (baseline) | 1.10.0 | >=1.17.2 |
DailybotHQ/agent-skill | 1.8.3 | latest |
The agent-skill router publishes a manifest for each release; the CLI bootstrap pins itself against that manifest so a stale skill pack cannot pull in an unexpected CLI.
Go deeper
- Marketing overview at /skills/agent-skill — sub-skill catalog, features, FAQ
- Skill repo on GitHub
- Dailybot CLI reference
- Authentication
- API reference