Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ agent-skill/
├── teams/SKILL.md ← team-name resolver (used by kudos + chat)
├── forms/SKILL.md
├── channels/SKILL.md ← report-channel discovery (UUIDs for --report-channel on forms/check-ins)
└── chat/SKILL.md ← Slack/Teams/Discord/Google Chat bot messages (CLI >= 1.13.0; latest on PyPI)
└── chat/SKILL.md ← Slack/Teams/Discord/Google Chat bot messages (CLI >= 3.8.0; latest on PyPI)
```

The hard rule: **anything you put outside `skills/dailybot/` is invisible
Expand Down
22 changes: 14 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@

Give your AI coding agent the ability to report progress, check for messages,
send emails, announce status, complete check-ins, give kudos, submit forms,
and **send chat messages on Slack / Teams / Discord / Google Chat** (with
report-style threads and in-place edits) — all through Dailybot. Your team
sees what the agent accomplished, sends instructions, and stays coordinated
across humans and agents.
**send chat messages on Slack / Teams / Discord / Google Chat** (with
report-style threads, interactive buttons, and in-place edits), and **trigger
workflows** — all through Dailybot. Your team sees what the agent
accomplished, sends instructions, and stays coordinated across humans and
agents.

- **License:** [MIT](LICENSE)
- **Security policy:** [SECURITY.md](SECURITY.md)
Expand All @@ -26,7 +27,8 @@ across humans and agents.
| **dailybot-checkin** | Full check-in lifecycle: list/status, complete, inspect questions & schedule, response history, edit/reset a response, and backfill or future-date — all headless with `--json`. Works with a login session **or** an API key (`dailybot-cli >= 1.15.0`). |
| **dailybot-kudos** | Give kudos to a teammate to recognize their contributions. Team-visible recognition through Dailybot. |
| **dailybot-forms** | List and submit form responses (feedback surveys, retros, pulse checks). Works with a login session **or** an API key (`dailybot-cli >= 1.15.0`). |
| **dailybot-chat** | Send and edit bot messages on the team's connected chat platform (Slack / Microsoft Teams / Discord / Google Chat). DMs, channels, or whole teams; report-style threads (headline + replies in one call); edit the parent or any thread reply afterward. Requires `dailybot-cli >= 1.13.0`. |
| **dailybot-chat** | Send and edit bot messages on the team's connected chat platform (Slack / Microsoft Teams / Discord / Google Chat). DMs, channels, or whole teams; report-style threads (headline + replies in one call); interactive buttons (approval flows, workflow triggers, modals, callbacks); edit the parent or any thread reply afterward. Requires `dailybot-cli >= 3.8.0`. |
| **dailybot-workflow** | List, inspect, and trigger Dailybot workflows (`workflow list` / `get` / `trigger`, with `--filter api_trigger` and optional `--payload`). Plan-gated feature. Requires `dailybot-cli >= 3.8.0`. |
| **dailybot-ask** | Ask the Dailybot AI a question headlessly — `dailybot ask "..."` prints the answer to stdout (or `--json`). The primary way an agent queries the Dailybot AI with only an API key. Requires `dailybot-cli >= 1.15.0`. |

A root **dailybot** meta-skill acts as a router — it describes all
Expand Down Expand Up @@ -109,7 +111,8 @@ right sub-skill:
- "Complete my check-in" → **dailybot-checkin**
- "Give kudos to Jane" / "kudos al equipo Engineering" → **dailybot-kudos**
- "Fill out the feedback form" → **dailybot-forms**
- "Send a Slack message to #releases" / "DM Sergio in chat" / "post a deploy report with the changelog in a thread" → **dailybot-chat**
- "Send a Slack message to #releases" / "DM Sergio in chat" / "post a deploy report with the changelog in a thread" / "send an approval request with buttons" → **dailybot-chat**
- "Trigger the deploy workflow" / "list my workflows" → **dailybot-workflow**

Or invoke directly: `/dailybot_report`. The messages, email, and health
skills are agent-only — the agent uses them autonomously without a slash
Expand Down Expand Up @@ -233,7 +236,9 @@ All outbound calls go to `api.dailybot.com` over HTTPS:
| `POST /v1/kudos/` | `dailybot-kudos` skill | `X-API-KEY` or Bearer, `receivers` list, content |
| `GET /v1/teams/` | `dailybot-teams` skill (team-name resolution; used by kudos + chat) | `X-API-KEY` **or** Bearer |
| `POST /v1/cli/chat/completions/` | `dailybot-ask` skill | `X-API-KEY` **or** Bearer; `{message}` → AI answer; 30 req/min per key |
| `POST /v1/send-message/` | `dailybot-chat` skill | **Either** `X-API-KEY` (org-wide) **or** Bearer token (login, role-scoped). Targets users/channels/teams, optional `thread_responses[]` for replies, optional `bot_message_id` to edit a previous message (parent or reply) |
| `POST /v1/send-message/` | `dailybot-chat` skill | **Either** `X-API-KEY` (org-wide) **or** Bearer token (login, role-scoped). Targets users/channels/teams, optional `thread_responses[]` for replies, optional `bot_message_id` to edit a previous message (parent or reply), optional `buttons[]` for interactive buttons |
| `GET /v1/workflows/` | `dailybot-workflow` skill (list/get) | `X-API-KEY` **or** Bearer |
| `POST /v1/workflows/<uuid>/trigger/` | `dailybot-workflow` skill (trigger) | `X-API-KEY` **or** Bearer; optional `{payload}` JSON object (≤8 KiB) |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ships? public surface. This adds POST /v1/workflows/<uuid>/trigger/ (and, one row up, buttons[] on /v1/send-message/) to the README's outbound-calls table, but docs/API_REFERENCE.md — the canonical public API reference served standalone at www.dailybot.com/skill.md — still documents only GET /v1/workflows/ and a buttons-less send-message. Per AGENTS.md (DON'T #13), the public API ref must track the same surface as the runtime SKILL.md files. An agent working from API_REFERENCE.md alone won't discover workflow trigger or interactive buttons. Mirror the new endpoint, the buttons[] field, and the new button_* / workflow_* error codes into docs/API_REFERENCE.md.

| `https://cli.dailybot.com/install.sh{,.sha256}` | CLI install on first session, with consent | None (download only) |

### Per-repo opt-out
Expand Down Expand Up @@ -319,7 +324,8 @@ agent-skill/
├── kudos/SKILL.md — user + team recognition (user-scoped)
├── teams/SKILL.md — team listing + name resolver (shared with kudos + chat)
├── forms/SKILL.md — form submission (user-scoped)
└── chat/SKILL.md — Slack/Teams/Discord/Google Chat bot messages (CLI >= 1.13.0; latest on PyPI)
├── workflow/SKILL.md — workflow list, inspect, and trigger (plan-gated)
└── chat/SKILL.md — Slack/Teams/Discord/Google Chat bot messages (CLI >= 3.8.0; latest on PyPI)
```

## Execution Paths
Expand Down
48 changes: 26 additions & 22 deletions skills/dailybot/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dailybot
description: Official Dailybot agent skill pack — report progress, check messages, send emails, announce agent status, complete check-ins, give kudos (to users or teams), resolve teams, run the full forms lifecycle (list, submit, update, transition between workflow states), **author check-ins and forms from scratch** (create/configure questions, workflow states, permissions, reminders, scheduling, AI settings, sharing), send/edit chat messages on the team's Slack/Teams/Discord/Google Chat (including report-style threads and sending as a user's identity), open (or reuse) a Slack group DM with the bot and post a report to it, ask the Dailybot AI a question headlessly, **and browse/read the workspace** — who am I / my org / a user's profile (`me` / `org` / `user get`), browse the kudos feed + the org-wide feed + wall of fame, and list/read workflows — all with shared pagination / search / date-range filters. Also **manages per-repo API keys** through the opt-in `.dailybot/env.json` file (dailybot env add/use/show/list/remove/off/on — CLI 3.7.0+) so a developer can be "logged into different orgs in different repos" simultaneously. Routes to the right sub-skill based on intent. Use when the developer mentions Dailybot or wants to interact with their team.
description: Official Dailybot agent skill pack — report progress, check messages, send emails, announce agent status, complete check-ins, give kudos (to users or teams), resolve teams, run the full forms lifecycle (list, submit, update, transition between workflow states), **author check-ins and forms from scratch** (create/configure questions, workflow states, permissions, reminders, scheduling, AI settings, sharing), send/edit chat messages on the team's Slack/Teams/Discord/Google Chat (including report-style threads, sending as a user's identity, and interactive buttons with approval flows, workflow triggers, modals, and callbacks), open (or reuse) a Slack group DM with the bot and post a report to it, ask the Dailybot AI a question headlessly, **and browse/read/trigger the workspace** — who am I / my org / a user's profile (`me` / `org` / `user get`), browse the kudos feed + the org-wide feed + wall of fame, list/read workflows, and trigger API-triggerable workflows with optional payloads — all with shared pagination / search / date-range filters. Also **manages per-repo API keys** through the opt-in `.dailybot/env.json` file (dailybot env add/use/show/list/remove/off/on — pack baseline `>= 3.8.0`) so a developer can be "logged into different orgs in different repos" simultaneously. Routes to the right sub-skill based on intent. Use when the developer mentions Dailybot or wants to interact with their team.
version: "3.10.4"
documentation_url: https://www.dailybot.com/skill.md
user-invocable: true
Expand Down Expand Up @@ -30,7 +30,7 @@ no network fetch is required** to know what to do. Run first-run setup in order:
the `dailybot` CLI is the integration surface. If it is missing, follow
[`shared/auth.md`](shared/auth.md) — it proposes the checksum-verified
installer and installs **only after the developer confirms**. Confirm with
`dailybot --version` (minimum `>= 3.7.0` — the skill-pack baseline for
`dailybot --version` (minimum `>= 3.8.0` — the skill-pack baseline for
every sub-skill).
2. **Authenticate.** `dailybot login` (email OTP) **or** set `DAILYBOT_API_KEY` —
see [`shared/auth.md`](shared/auth.md). Credentials are stored owner-only
Expand Down Expand Up @@ -66,9 +66,9 @@ Thirteen coordinated capabilities, with smart routing between them:
| **Kudos** | `dailybot-kudos` | Recognize a teammate or a whole team — **plus browsing (read)**: `kudos list` the recognition feed (filter received/given), `kudos org` the whole org's feed (admin-only), and `kudos wall-of-fame` leaderboard |
| **Teams** | `dailybot-teams` | List teams, inspect members, resolve a team name → UUID (used as a resolver by other skills) — **plus account context**: `dailybot me` (who am I / role), `dailybot org` (which org), and `dailybot user get` (one user's profile) |
| **Forms** | `dailybot-forms` | List, submit, update, or transition forms — including workflow-state forms with audience permissions (`form list` is now **org-scoped** by default, with `--mine` to narrow to your own; list + responses support pagination / search / date filters) — **plus authoring**: create/configure a form (workflow states, permissions, anonymous/public/approval, ChatOps command) and manage its questions |
| **Workflows** | `dailybot-workflow` | Developer wants to **read** the org's workflows — `workflow list` (paginated/searchable) and `workflow get`. Read-only; writes are web-app only. Plan-gated |
| **Workflows** | `dailybot-workflow` | Developer wants to **read or trigger** the org's workflows — `workflow list` (paginated/searchable, with `--filter api_trigger`), `workflow get`, and `workflow trigger` (fire an API-triggerable workflow with an optional JSON payload). Creating/editing workflows is web-app only. Plan-gated |
| **Report channels** | `dailybot-channels` | Discover report-channel UUIDs to attach to forms/check-ins with `--report-channel` |
| **Per-repo API keys** | `dailybot-env` | Configure `.dailybot/env.json` — an **opt-in, gitignored** file that carries API keys + URLs for one or more environments (live, local, staging) so the developer can be "logged into different orgs in different repos". `dailybot env add / use / show / list / remove / off / on`. CLI >= 3.7.0 |
| **Per-repo API keys** | `dailybot-env` | Configure `.dailybot/env.json` — an **opt-in, gitignored** file that carries API keys + URLs for one or more environments (live, local, staging) so the developer can be "logged into different orgs in different repos". `dailybot env add / use / show / list / remove / off / on`. Pack baseline (`>= 3.8.0`) |

## Install

Expand All @@ -86,7 +86,7 @@ reporting, ships **inside this skill** — follow **[Start here (first run)](#st

## Required Dailybot CLI version

> **Baseline: `dailybot-cli >= 3.7.0`** for **every** sub-skill in the pack —
> **Baseline: `dailybot-cli >= 3.8.0`** for **every** sub-skill in the pack —
> one single floor, no per-sub-skill exceptions. Recommended install / upgrade
> target: **latest release** — `dailybot upgrade` (or `pip install
> --upgrade dailybot-cli`) always satisfies it.
Expand All @@ -98,30 +98,32 @@ reporting, ships **inside this skill** — follow **[Start here (first run)](#st
> upgrade`) installs today; run `dailybot version --check` to see the exact
> number. Everything this pack documents — reporting, hooks, chat, the AI `ask`
> command, check-in and form authoring, the browse/read surface (`me` / `org` /
> `user get`, kudos browsing, workflows), the shared list query flags, and the
> machine-readable error codes — is available at this floor.
> `user get`, kudos browsing, workflows), interactive chat buttons (approvals,
> workflow triggers, modals, callbacks), `workflow trigger`, the shared list
> query flags, and the machine-readable error codes — is available at this floor.

### Why this minimum

`3.7.0` is the release that completed the auth story this pack relies on:
the `env` sub-skill's `dailybot env` command group and `.dailybot/env.json`
per-repo credentials (with the wire-preference guarantee that a repo-local
key beats the global Bearer session), the hardened refuse-if-tracked guard,
and every earlier surface the pack documents (reporting, hooks, chat, forms
and check-in authoring, kudos, teams, workflows, `ask`, the shared list
query flags, and the machine-readable error codes). Pinning one single
floor keeps agent behavior predictable — no per-sub-skill version matrix.

If `dailybot --version` reports below 3.7.0, ask the developer to run
`dailybot upgrade` (or `pip install --upgrade 'dailybot-cli>=3.7.0'`)
`3.8.0` is the release that shipped the interactive-button contract on
`dailybot chat send` / `update` (`--buttons`, approval / workflow-button
flags, modals, callbacks) and `dailybot workflow trigger` (plus
`workflow list --filter api_trigger`). It also includes everything earlier
floors already covered: `.dailybot/env.json` per-repo credentials (from
3.7.0), reporting, hooks, forms and check-in authoring, kudos, teams,
`ask`, the shared list query flags, and the machine-readable error codes.
Pinning one single floor keeps agent behavior predictable — no per-sub-skill
version matrix.

If `dailybot --version` reports below 3.8.0, ask the developer to run
`dailybot upgrade` (or `pip install --upgrade 'dailybot-cli>=3.8.0'`)
before using any sub-skill.

### Checking the installed version

```bash
# Single-line, scriptable
dailybot --version
# → dailybot 3.7.0 (Python 3.12.4)
# → dailybot 3.8.0 (Python 3.12.4)

# Multi-line panel: version, Python runtime, install path, release notes link
dailybot version
Expand All @@ -141,15 +143,15 @@ Homebrew / Linux binary / editable dev) and either runs the right command in a
subprocess or prints the exact command for installs the CLI shouldn't drive.
`dailybot upgrade --dry-run` previews without executing.

If the developer is below the pack baseline (`dailybot-cli >= 3.7.0`),
If the developer is below the pack baseline (`dailybot-cli >= 3.8.0`),
ask them to run `dailybot upgrade` once, then resume. Do not retry CLI
commands in a loop while the upgrade is pending.

### Direct install commands

| Channel | Command |
|---------|---------|
| pip | `pip install 'dailybot-cli>=3.7.0'` (the pack baseline) |
| pip | `pip install 'dailybot-cli>=3.8.0'` (the pack baseline) |
| Homebrew | `brew install dailybothq/tap/dailybot` |
| Universal installer (Linux / macOS / WSL2 / Git Bash) | `curl -fsSL https://cli.dailybot.com/install.sh \| bash` |
| Windows PowerShell (when WSL2 / Git Bash unavailable) | `irm https://cli.dailybot.com/install.ps1 \| iex` |
Expand All @@ -174,7 +176,7 @@ Full safety story (SHA-256 sidecar, cross-origin diff, optional cosign): see

Every install method defaults to the latest release but can pin an exact
version — useful when a developer needs to reproduce a known-good setup or
pin the `3.7.0` pack baseline (the installer scripts, `pip`, and Homebrew all
pin the `3.8.0` pack baseline (the installer scripts, `pip`, and Homebrew all
accept a version pin):

| Channel | Pin a version |
Expand Down Expand Up @@ -241,8 +243,10 @@ the full step-by-step workflow.
| "who am I?", "what's my role?", "which org am I in?", "show a user's profile" | **Teams** → read [`teams/SKILL.md`](teams/SKILL.md) § Step 4.5 (`me` / `org` / `user get`) |
| "browse kudos", "kudos I received / gave", "org kudos stats", "who's on the wall of fame?" | **Kudos** → read [`kudos/SKILL.md`](kudos/SKILL.md) § Browsing kudos |
| "list my workflows", "show workflows", "what's in workflow X?" | **Workflows** → read [`workflow/SKILL.md`](workflow/SKILL.md) |
| "trigger the deploy workflow", "fire automation X", "run workflow `<uuid>`", "trigger workflow with payload" | **Workflows** → read [`workflow/SKILL.md`](workflow/SKILL.md) § Step 4 (Trigger) |
| "which channels can Dailybot post to?", "list report channels", "I need a channel UUID for the form / check-in" | **Channels** → read [`channels/SKILL.md`](channels/SKILL.md) |
| "send a Slack message", "DM someone in chat", "post the deploy report to a channel (with a thread)", "edit that chat message I just sent", "ping the Engineering team in chat" | **Chat** → read [`chat/SKILL.md`](chat/SKILL.md) |
| "send an approval request with buttons", "post a message with interactive buttons", "add a workflow button to a message", "send a message with approve/reject" | **Chat** → read [`chat/SKILL.md`](chat/SKILL.md) § Buttons |
| "send this to a channel as me", "post as `<user>` in Slack", "send the message with someone's identity" | **Chat** → read [`chat/SKILL.md`](chat/SKILL.md) § Send as a user's identity (`--send-as-user` / `--send-as-me`) |
| "open a group DM with Jane and Bob", "start a Slack group with the release team and the bot", "open a group with `<user>` and send them this report", "get me a channel with these people" | **Conversations** → read [`conversation/SKILL.md`](conversation/SKILL.md) |
| "list my forms", "which forms does the org have?", "only my own forms" (`--mine`) | **Forms** → read [`forms/SKILL.md`](forms/SKILL.md) |
Expand Down
4 changes: 2 additions & 2 deletions skills/dailybot/ask/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ allowed-tools: Bash, Read, Grep, Glob

# Dailybot Ask

> **Requires `dailybot-cli >= 3.7.0`** (the skill-pack baseline) — the `dailybot ask`
> **Requires `dailybot-cli >= 3.8.0`** (the skill-pack baseline) — the `dailybot ask`
> command and full API-key parity on the AI chat. On much older CLIs the AI chat only
> exists as the interactive TUI (`dailybot interactive`) and requires a login
> session. If `dailybot ask --help` is not recognized, ask the developer to run
Expand Down Expand Up @@ -59,7 +59,7 @@ Read and follow the authentication steps in [`../shared/auth.md`](../shared/auth
The AI chat accepts **either** a login session **or** an org API key — an agent
with only `DAILYBOT_API_KEY` set can use `dailybot ask` directly.

Confirm the command exists (`dailybot-cli >= 3.7.0`):
Confirm the command exists (`dailybot-cli >= 3.8.0`):

```bash
dailybot ask --help 2>&1 | head -1
Expand Down
4 changes: 2 additions & 2 deletions skills/dailybot/channels/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ allowed-tools: Bash, Read, Grep, Glob

# Dailybot Report Channels

> **Requires `dailybot-cli >= 3.7.0`** (the skill-pack baseline). The `dailybot channels list`
> **Requires `dailybot-cli >= 3.8.0`** (the skill-pack baseline). The `dailybot channels list`

This comment was marked as outdated.

> command is available at this floor. If `dailybot --version` reports below
> 3.7.0, ask the developer to run `dailybot upgrade`. See
> 3.8.0, ask the developer to run `dailybot upgrade`. See
> [`../SKILL.md` § Required Dailybot CLI version](../SKILL.md#required-dailybot-cli-version).

Report channels are the Slack / Microsoft Teams / Discord / Google Chat
Expand Down
Loading
Loading