From 5b418a6bfce33aa17bd49af49745abe655315cde Mon Sep 17 00:00:00 2001 From: Sergio Alexander Florez Galeano Date: Tue, 14 Jul 2026 13:17:42 +0000 Subject: [PATCH] chore(skills): sync vendored dailybot skill pack to v3.10.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Dogfood sync of .agents/skills/dailybot/ to the freshly released DailybotHQ/agent-skill v3.10.3, which documents the real kudos wall-of-fame JSON payload shape (nested user names, paginated leaderboard envelope, caller position) and pins the human-rendering fix to dailybot-cli v3.7.2. ## Change Log - Sync all vendored SKILL.md files to v3.10.3 (frontmatter bump + the new wall-of-fame payload reference in kudos/SKILL.md) - Recover the env sub-skill: the broad `env/` gitignore rule (meant for Python virtualenvs) was silently swallowing .agents/skills/dailybot/env/, so it was never committed even though AGENTS.md and the catalog reference /dailybot-env. Virtualenv ignore patterns are now anchored to the repo root (/env/, /venv/, /.venv/) and the sub-skill is vendored for the first time - Bump the pack version reference in AGENTS.md and .agents/docs/skills_agents_catalog.md to v3.10.3 - docker/local/cli: raise the dev-container CLI floor to >=3.7.2 (the release that fixed the wall-of-fame rendering) ## Risks - None at runtime — vendored docs + local dev tooling only; no source or packaging changes. Anchoring the virtualenv ignore patterns only affects developers with a nested env/ virtualenv (unconventional) Co-Authored-By: Claude Fable 5 --- .agents/docs/skills_agents_catalog.md | 2 +- .agents/skills/dailybot/SKILL.md | 2 +- .agents/skills/dailybot/ask/SKILL.md | 2 +- .agents/skills/dailybot/channels/SKILL.md | 2 +- .agents/skills/dailybot/chat/SKILL.md | 2 +- .agents/skills/dailybot/checkin/SKILL.md | 2 +- .agents/skills/dailybot/conversation/SKILL.md | 2 +- .agents/skills/dailybot/email/SKILL.md | 2 +- .agents/skills/dailybot/env/SKILL.md | 168 ++++++++++++++++++ .agents/skills/dailybot/forms/SKILL.md | 2 +- .../dailybot/forms/_custom-template/SKILL.md | 2 +- .agents/skills/dailybot/health/SKILL.md | 2 +- .agents/skills/dailybot/kudos/SKILL.md | 39 +++- .agents/skills/dailybot/messages/SKILL.md | 2 +- .agents/skills/dailybot/report/SKILL.md | 2 +- .agents/skills/dailybot/teams/SKILL.md | 2 +- .agents/skills/dailybot/workflow/SKILL.md | 2 +- .gitignore | 9 +- AGENTS.md | 2 +- docker/local/cli/Dockerfile | 2 +- 20 files changed, 228 insertions(+), 22 deletions(-) create mode 100644 .agents/skills/dailybot/env/SKILL.md diff --git a/.agents/docs/skills_agents_catalog.md b/.agents/docs/skills_agents_catalog.md index 849d293..09b9978 100644 --- a/.agents/docs/skills_agents_catalog.md +++ b/.agents/docs/skills_agents_catalog.md @@ -18,7 +18,7 @@ Slash commands. Invoked as `/` (Claude Code) or `#` (Codex/Cursor/Ge ### Dailybot agent skill pack (vendored from [`DailybotHQ/agent-skill`](https://github.com/DailybotHQ/agent-skill)) -The full pack lives under [`.agents/skills/dailybot/`](../skills/dailybot/) (router + fourteen sub-skills; vendored at **v3.10.2**). Every sub-skill requires `dailybot-cli >= 3.7.0` — the pack baseline. The router auto-routes by intent — read [`skills/dailybot/SKILL.md`](../skills/dailybot/SKILL.md) and let it pick the right sub-skill. Direct sub-skill entry points: +The full pack lives under [`.agents/skills/dailybot/`](../skills/dailybot/) (router + fourteen sub-skills; vendored at **v3.10.3**). Every sub-skill requires `dailybot-cli >= 3.7.0` — the pack baseline. The router auto-routes by intent — read [`skills/dailybot/SKILL.md`](../skills/dailybot/SKILL.md) and let it pick the right sub-skill. Direct sub-skill entry points: | Slug | Procedure | Use when | |------|-----------|----------| diff --git a/.agents/skills/dailybot/SKILL.md b/.agents/skills/dailybot/SKILL.md index 92b579f..37cff99 100644 --- a/.agents/skills/dailybot/SKILL.md +++ b/.agents/skills/dailybot/SKILL.md @@ -1,7 +1,7 @@ --- 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. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"📡","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/ask/SKILL.md b/.agents/skills/dailybot/ask/SKILL.md index ded8541..41f7ad7 100644 --- a/.agents/skills/dailybot/ask/SKILL.md +++ b/.agents/skills/dailybot/ask/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-ask description: Ask the Dailybot AI a question from the terminal and read the answer, non-interactively. Runs headless — a single `dailybot ask ""` prints the assistant's reply to stdout (or structured JSON with `--json`), so an autonomous agent (Claude Code, CI, a bot) can query the Dailybot AI with only an API key. Use when the developer or agent says "ask Dailybot ...", "query the Dailybot AI", "what does Dailybot say about ...", or wants a one-shot answer from Dailybot's assistant. Distinct from dailybot-chat (bot messages to Slack/Teams) and dailybot-report (progress to the dashboard). -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"🤖","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/channels/SKILL.md b/.agents/skills/dailybot/channels/SKILL.md index c24532e..825edb1 100644 --- a/.agents/skills/dailybot/channels/SKILL.md +++ b/.agents/skills/dailybot/channels/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-channels description: Discover the report channels (Slack/Teams/Discord/Google Chat) available to you via Dailybot, so their UUIDs can be attached to forms and check-ins with --report-channel. Use when the developer needs a channel UUID for form/check-in authoring. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"📣","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/chat/SKILL.md b/.agents/skills/dailybot/chat/SKILL.md index d22f99e..76a2218 100644 --- a/.agents/skills/dailybot/chat/SKILL.md +++ b/.agents/skills/dailybot/chat/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-chat description: Send and edit Dailybot bot messages on the team's connected chat platform (Slack, Microsoft Teams, Discord, Google Chat) — to user DMs, channels, or whole teams. Supports report-style threads (one headline + replies, in one call) and editing the parent or any reply afterward. Use when the developer says "send a message to my Slack channel", "ping the team in chat", "post the deploy report to #releases", or wants to update a previously sent bot message. Works headless for agents. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"💬","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/checkin/SKILL.md b/.agents/skills/dailybot/checkin/SKILL.md index 0fc948b..1a5b213 100644 --- a/.agents/skills/dailybot/checkin/SKILL.md +++ b/.agents/skills/dailybot/checkin/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-checkin description: Drive the full check-in lifecycle via Dailybot — list and complete pending check-ins, see pending/completed status for a day, inspect a check-in's questions and schedule, browse response history, edit or reset a submitted response, and backfill or future-date responses. Also authors check-ins — create and configure a check-in (schedule, participants, reminders, privacy, smart/AI) and manage its questions (types, report titles, variations, conditional logic). Works headless with an API key. Use when the developer asks to fill in their standup, answer daily questions, check what check-ins they have, edit or reset a check-in, review past responses, or create/configure a check-in. Do not use for free-text progress reports — those go through dailybot-report. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"✅","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/conversation/SKILL.md b/.agents/skills/dailybot/conversation/SKILL.md index 2bf6db3..eb017a2 100644 --- a/.agents/skills/dailybot/conversation/SKILL.md +++ b/.agents/skills/dailybot/conversation/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-conversation description: Open (or idempotently reuse) a private Slack group DM (MPIM) that includes the Dailybot bot, then optionally post a message or report to it. Use when the developer wants to start a Slack group with specific teammates plus the bot — e.g. "open a group DM with Jane and Bob and send them the analysis report". Slack only, org-admin only. Distinct from dailybot-chat (which posts to existing channels/DMs) and dailybot-channels (which discovers report-channel UUIDs). -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"👥","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/email/SKILL.md b/.agents/skills/dailybot/email/SKILL.md index aa9e528..9770a81 100644 --- a/.agents/skills/dailybot/email/SKILL.md +++ b/.agents/skills/dailybot/email/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-email description: Send emails to a confirmed recipient via Dailybot on behalf of the agent. Use for notifications, summaries, follow-ups, or any communication the developer asks you to send. Always confirm recipients with the developer before sending — never guess addresses. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: false metadata: {"openclaw":{"emoji":"📧","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/env/SKILL.md b/.agents/skills/dailybot/env/SKILL.md new file mode 100644 index 0000000..70a65d7 --- /dev/null +++ b/.agents/skills/dailybot/env/SKILL.md @@ -0,0 +1,168 @@ +--- +name: dailybot-env +description: Manage per-repo API key overrides in `.dailybot/env.json` — an opt-in, gitignored file that carries API keys + optional URLs for one or more environments (live, local, staging). One profile is active at a time; when set, it overrides `DAILYBOT_API_KEY`, `config.json`, and the login Bearer session for the enclosing repo. Use when the developer wants to be "logged into different orgs in different repos" simultaneously, needs a local dev key just for this project, or wants to toggle between staging and prod without touching global config or env vars. Requires CLI >= 3.7.0. +version: "3.10.3" +documentation_url: https://www.dailybot.com/skill.md +user-invocable: true +metadata: {"openclaw":{"emoji":"🔑","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} +allowed-tools: Bash, Read, Grep, Glob +--- + +# Dailybot per-repo API key override (`env.json`) + +> **Requires `dailybot-cli >= 3.7.0`** — the `dailybot env` command group and the `.dailybot/env.json` loader are new in that release. If `dailybot --version` reports below 3.7.0, ask the developer to run `dailybot upgrade` before continuing. See [`../SKILL.md` § Required Dailybot CLI version](../SKILL.md#required-dailybot-cli-version). + +This sub-skill lets an agent configure and manage `/.dailybot/env.json` — an **opt-in, gitignored** file that pins API keys + URL overrides per environment (live, local, staging) for the enclosing repo. When a profile is *active*, it overrides `DAILYBOT_API_KEY`, `config.json`, and the login Bearer session **only for that repo**. + +> **The full workflow, schema, security rules, and worked examples live in [`../shared/env-json.md`](../shared/env-json.md).** Read it first — it is the single source of truth. This file is the routing entry-point and quick-reference. + +## When to use + +Route here when the developer says any of: + +- *"I want a local API key just for this project."* +- *"How do I test against staging without breaking my prod login?"* +- *"Can I be in org A in this repo and org B in another repo?"* +- *"Set up per-project Dailybot credentials for me."* +- *"Switch this repo to my localhost Dailybot instance."* + +**Do not** route here when: + +- The developer is in CI. Use `DAILYBOT_API_KEY` as an env var — leaves no on-disk secret. +- The developer wants team-shared *identity* (agent name, default metadata). That's `.dailybot/profile.json` — see [`../shared/repo-profile.md`](../shared/repo-profile.md). +- The developer has one Dailybot org and a working login session. `dailybot login` + global config is simpler. + +## Pre-flight — before writing anything + +1. **Confirm the CLI supports `env`** (>= 3.7.0): + + ```bash + dailybot env --help >/dev/null 2>&1 || { + echo "This feature requires dailybot-cli >= 3.7.0. Run: dailybot upgrade" >&2 + exit 1 + } + ``` + +2. **Ensure the repo's `.gitignore` covers `.dailybot/*`.** The Dailybot skill pack expects this pattern: + + ```gitignore + .dailybot/* + !.dailybot/profile.json + ``` + + If missing, add it (creating `.gitignore` if needed): + + ```bash + grep -q '^\.dailybot/\*' .gitignore 2>/dev/null || cat >> .gitignore <<'EOF' + + # Dailybot per-repo state (env.json contains API keys — never commit it) + .dailybot/* + !.dailybot/profile.json + EOF + ``` + + If the developer skips this step and later commits `env.json`, the CLI will refuse to load it and print an actionable error. `dailybot env add` also fires a soft warning when the file isn't gitignored yet. + +## The commands (quick reference) + +```bash +# CREATE a profile (creates the file if needed; first profile auto-becomes active) +dailybot env add --name NAME --key KEY [--api-url URL] [--app-url URL] + +# SWITCH active profile +dailybot env use NAME # switch active +dailybot env use "" # clear active (fall through to global auth) + +# INSPECT +dailybot env show # resolved profile (API key masked) +dailybot env list # all profiles, active marked + +# DELETE +dailybot env remove NAME [--yes] + +# KILL SWITCH (preserves active) +dailybot env off # disable the file +dailybot env on # re-enable +``` + +All API keys are masked in output (`sk_l****`). The CLI never echoes the full key back. + +## Common recipes + +### First-time setup for a local dev org + +```bash +dailybot env add \ + --name local \ + --key sk_local_xxxxxxxx \ + --api-url http://localhost:8000 \ + --app-url http://localhost:8090 + +dailybot env show # verify +``` + +Because this is the first profile, it becomes active automatically. Every subsequent `dailybot` command in this repo now talks to `http://localhost:8000`. Other repos are unaffected. + +### Toggle between staging and prod + +```bash +dailybot env add --name prod --key sk_prod_xxxx # first → auto-active +dailybot env add --name staging --key sk_staging_yyyy \ + --api-url https://staging-api.example.com + +dailybot env use staging # switch to staging for bug repro +# ... work in staging ... +dailybot env use prod # switch back +``` + +### Temporarily disable env.json without losing setup + +```bash +dailybot env off # env.json ignored; CLI falls through to global auth +# ... test something with your global login ... +dailybot env on # restores the previously active profile +``` + +`env off` sets `disabled: true` at the top level; `active` is preserved so `env on` instantly restores the previous selection. + +### Delete a profile + +```bash +dailybot env remove staging --yes +# If 'staging' was active, active is cleared and the CLI falls back to +# global auth until you run `dailybot env use ` again. +``` + +## Security — what an agent must never do + +1. **Never `cat` or otherwise print raw `env.json`.** It contains API keys. Use `dailybot env show` / `dailybot env list` — they mask. +2. **Never suggest committing `env.json`.** The CLI has a fatal `RepoEnvError` guard that fires on load if the file is tracked. +3. **Never write API keys into `.dailybot/profile.json`.** That is a hard error in the CLI. `env.json` is the ONLY sanctioned place inside `.dailybot/` for credentials. +4. **If the developer accidentally committed `env.json`**: tell them to rotate every key immediately (assume compromise), then `git rm --cached` + fix `.gitignore` + rewrite `env.json` with newly generated keys. Do NOT try to `git filter-repo` the leak away — assume the world has seen the keys. + +Full four-layer protection story (gitignore, `0o600`, fatal refuse-if-tracked, write-time gitignore warning): see [`../shared/env-json.md` § Security](../shared/env-json.md#security--non-negotiable-rules). + +## Interaction with existing auth (short version) + +| Existing flow | Effect when env.json is active in this repo | +|---|---| +| `dailybot login` | Still writes Bearer to `credentials.json`. env.json wins **inside this repo**. Other repos use the Bearer normally. | +| `dailybot logout` | Unaffected — only clears Bearer. env.json remains intact. | +| `dailybot config key=...` | Still works globally. env.json sits above it in precedence. | +| `DAILYBOT_API_KEY` env var | Still works. env.json beats it inside a repo. | +| `.dailybot/profile.json` | Orthogonal — still signs reports (identity). env.json provides credentials + URLs. Both can be present. | + +Precedence order (full table in [`../shared/env-json.md` § Auth resolution order](../shared/env-json.md#auth-resolution-order-updated-in-cli-370)). + +## Troubleshooting (quick reference) + +- **"The CLI is not using my env.json."** → `dailybot env show`; check `disabled`, `active`, and the walk-up path. Are you overriding with `--profile` / `--api-url` / `--app-url` flags? +- **"The CLI refuses to run and complains about tracked env.json."** → run the exact fix printed in the error message. Staged-but-uncommitted counts as tracked. (`dailybot hook *` commands print the error but still run and exit 0 — by design, per their harness contract.) +- **"I edited env.json by hand and now nothing works."** → `dailybot env show` surfaces schema warnings; if unrecoverable, delete the file and re-add profiles via `dailybot env add`. +- **"I set `disabled: "true"` and it's still active."** → `disabled` must be a JSON boolean; the CLI warns and treats a string as `false`. Use `dailybot env off`. + +## See also + +- [`../shared/env-json.md`](../shared/env-json.md) — full schema, precedence, security posture, worked examples. +- [`../shared/repo-profile.md`](../shared/repo-profile.md) — the sibling `profile.json` file (agent identity, tracked in git). +- [`../shared/auth.md`](../shared/auth.md) — general authentication flow (OTP login, API key alternatives, CLI installation). diff --git a/.agents/skills/dailybot/forms/SKILL.md b/.agents/skills/dailybot/forms/SKILL.md index 5e55e53..c472a13 100644 --- a/.agents/skills/dailybot/forms/SKILL.md +++ b/.agents/skills/dailybot/forms/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-forms description: List, inspect, submit, update, and transition form responses via Dailybot — including forms with workflow states and audience-scoped permissions. Also authors forms — create and configure a form (workflow states, permissions, anonymous/public/approval, ChatOps command) and manage its questions (types, report titles, variations, conditional logic). Use when the developer wants to see available forms, fill out a survey, continue an in-progress response, move a response between states, read prior responses, or create/configure a form. Do not use for daily check-ins — those go through dailybot-checkin. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"📋","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/forms/_custom-template/SKILL.md b/.agents/skills/dailybot/forms/_custom-template/SKILL.md index cfd3fe1..68fdbad 100644 --- a/.agents/skills/dailybot/forms/_custom-template/SKILL.md +++ b/.agents/skills/dailybot/forms/_custom-template/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-custom-form-template description: STARTER TEMPLATE — do not consume this file in place. Copy it to .agents/skills/dailybot-custom//SKILL.md in your own repo, then customize. This is the bootstrap skeleton for authoring a per-form custom skill that the universal dailybot-forms resolver will load from .dailybot/profile.json. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: false allowed-tools: Bash, Read, Grep, Glob diff --git a/.agents/skills/dailybot/health/SKILL.md b/.agents/skills/dailybot/health/SKILL.md index 0ba280f..96b7bc2 100644 --- a/.agents/skills/dailybot/health/SKILL.md +++ b/.agents/skills/dailybot/health/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-health description: Announce agent online/offline status to Dailybot and receive pending messages from the team. Use for long-running or scheduled agents to stay visible and pick up instructions. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: false metadata: {"openclaw":{"emoji":"💚","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/kudos/SKILL.md b/.agents/skills/dailybot/kudos/SKILL.md index f862019..b0a4014 100644 --- a/.agents/skills/dailybot/kudos/SKILL.md +++ b/.agents/skills/dailybot/kudos/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-kudos description: Give kudos to a teammate or to an entire team via Dailybot to recognize their contributions. Use when the developer wants to thank or recognize one person, or recognize a whole team (e.g. "kudos al equipo Engineering"). Do not use for general progress reports — those go through dailybot-report. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"🏆","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} @@ -93,6 +93,43 @@ Returns the recognition leaderboard — the top receiver, the top giver, and the ranked leaderboard entries. `--limit N` caps the number of leaderboard entries returned. +**Parse the payload carefully — three fields are commonly misread:** + +- Every person is **nested under a `user` key** — the name lives at + `top_receiver.user.full_name` (and likewise in `top_giver` and in every + leaderboard entry), **not** at a top-level `full_name`. +- `leaderboard` is itself a **paginated envelope** `{count, next, previous, + results}` — the ranked entries are in `leaderboard.results`, and the total + ranked members is `leaderboard.count` (do not count the envelope's keys). +- `leaderboard_summary` is the **caller's own standing**: `{position, total}`. + +```json +{ + "top_receiver": { "user": { "uuid": "…", "full_name": "…", "image": "…" }, + "kudos_received": 11, "kudos_given": 5, + "total_plus_kudos_received": 18, "total_plus_kudos_given": 2 }, + "top_giver": { "user": { "…": "…" }, "kudos_given": 14 }, + "dna_distribution": [ { "company_value": { "id": "…", "value": "…", "emoji": "…" }, + "count": 10, "percentage": 38.5 } ], + "leaderboard": { "count": 11, "next": false, "previous": false, + "results": [ { "position": 1, "user": { "…": "…" }, + "score": 11, "total_plus_kudos": 18 } ] }, + "leaderboard_summary": { "position": 1, "total": 11 } +} +``` + +`dna_distribution` breaks the kudos down by the org's company values. + +> **Version note:** the human (non-`--json`) rendering of this command was +> fixed in [`dailybot-cli` v3.7.2](https://github.com/DailybotHQ/cli/releases/tag/v3.7.2) +> ([DailybotHQ/cli#71](https://github.com/DailybotHQ/cli/pull/71), on +> [PyPI](https://pypi.org/project/dailybot-cli/)) — since that release it shows +> the full wall of fame: top receiver/giver with counts, the caller's position, +> the company-values distribution, and the ranked leaderboard table. Older CLI +> versions render an incomplete summary panel (dashes instead of names), so +> always prefer `--json` when parsing, and suggest `dailybot upgrade` if the +> developer sees dashes. + --- ## When to Use diff --git a/.agents/skills/dailybot/messages/SKILL.md b/.agents/skills/dailybot/messages/SKILL.md index 64c6a3f..7663b54 100644 --- a/.agents/skills/dailybot/messages/SKILL.md +++ b/.agents/skills/dailybot/messages/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-messages description: Check for pending messages and instructions from your team via Dailybot. Use when starting a work session, when idle, or when asked what to work on next. Messages are instructions that should influence your work. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: false metadata: {"openclaw":{"emoji":"📬","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/report/SKILL.md b/.agents/skills/dailybot/report/SKILL.md index c9afaa9..c849f8f 100644 --- a/.agents/skills/dailybot/report/SKILL.md +++ b/.agents/skills/dailybot/report/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-report description: Report work progress to Dailybot. Activate after completing a discrete task or subtask, or after any batch of edits that modifies 3 or more files. Compose a standup-style update describing what changed and why. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"📡","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/teams/SKILL.md b/.agents/skills/dailybot/teams/SKILL.md index 0294264..dae65ca 100644 --- a/.agents/skills/dailybot/teams/SKILL.md +++ b/.agents/skills/dailybot/teams/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-teams description: Read and resolve teams visible to the authenticated user. Use when the developer references a team by name (for kudos targeting, member lookup, or routing context) and an agent needs to obtain its UUID. Other Dailybot skills (kudos, messages) delegate team-name resolution to this skill rather than duplicating the logic. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"👥","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.agents/skills/dailybot/workflow/SKILL.md b/.agents/skills/dailybot/workflow/SKILL.md index b557ee1..9a052b3 100644 --- a/.agents/skills/dailybot/workflow/SKILL.md +++ b/.agents/skills/dailybot/workflow/SKILL.md @@ -1,7 +1,7 @@ --- name: dailybot-workflow description: List and inspect Dailybot workflows (read-only) — enumerate the workflows configured for the organization and read one workflow's configuration. Use when the developer asks "list my workflows", "show workflows", or "what's in the release workflow?". Writes are done in the Dailybot web app; this skill only reads. Plan-gated feature. -version: "3.10.2" +version: "3.10.3" documentation_url: https://www.dailybot.com/skill.md user-invocable: true metadata: {"openclaw":{"emoji":"🔀","homepage":"https://dailybot.com","requires":{"anyBins":["dailybot","curl"]},"primaryEnv":"DAILYBOT_API_KEY","install":[{"id":"cli-install-script","kind":"download","url":"https://cli.dailybot.com/install.sh","label":"Install Dailybot CLI (official script — preferred on Linux/macOS)"},{"id":"pip","kind":"pip","package":"dailybot-cli","bins":["dailybot"],"label":"Install Dailybot CLI via pip (fallback if binary fails)"}]}} diff --git a/.gitignore b/.gitignore index fc54e7f..b0980e5 100644 --- a/.gitignore +++ b/.gitignore @@ -8,10 +8,11 @@ build/ *.egg *.spec -# Virtual environments -.venv/ -venv/ -env/ +# Virtual environments (anchored to the repo root — a bare `env/` would also +# swallow the vendored `.agents/skills/dailybot/env/` sub-skill) +/.venv/ +/venv/ +/env/ # IDE .idea/ diff --git a/AGENTS.md b/AGENTS.md index d694c80..57d8f51 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -487,7 +487,7 @@ dailybot agent update --name "Claude Code" --milestone \ --metadata '{"model":"claude-opus-4-7","plan":"PLAN_agent_profiles","repo":"cli"}' ``` -Full philosophy, what to report, and what to skip: [.agents/skills/dailybot/report/SKILL.md](.agents/skills/dailybot/report/SKILL.md) (part of the vendored Dailybot agent skill pack at `.agents/skills/dailybot/`, **v3.10.2**, which also ships the `chat` (incl. `--send-as-user`/`--send-as-me`), the `conversation` sub-skill (open/reuse a Slack group DM with the bot and post a report, `conversation open`), `kudos` (give + browse: `list`/`org`/`wall-of-fame`), `teams` (+ account context `me`/`org`/`user get`), `channels`, the read-only `workflow` (`list`/`get`), the full `forms` (org-scoped `list` + `--mine`) / `checkin` **authoring** sub-skills, and the `env` sub-skill (per-repo API keys via the opt-in, gitignored `.dailybot/env.json`) — plus the shared list pagination/search/date filters and machine-readable error-code reference. The whole pack requires `dailybot-cli >= 3.7.0` (single baseline)). Key rules: +Full philosophy, what to report, and what to skip: [.agents/skills/dailybot/report/SKILL.md](.agents/skills/dailybot/report/SKILL.md) (part of the vendored Dailybot agent skill pack at `.agents/skills/dailybot/`, **v3.10.3**, which also ships the `chat` (incl. `--send-as-user`/`--send-as-me`), the `conversation` sub-skill (open/reuse a Slack group DM with the bot and post a report, `conversation open`), `kudos` (give + browse: `list`/`org`/`wall-of-fame`), `teams` (+ account context `me`/`org`/`user get`), `channels`, the read-only `workflow` (`list`/`get`), the full `forms` (org-scoped `list` + `--mine`) / `checkin` **authoring** sub-skills, and the `env` sub-skill (per-repo API keys via the opt-in, gitignored `.dailybot/env.json`) — plus the shared list pagination/search/date filters and machine-readable error-code reference. The whole pack requires `dailybot-cli >= 3.7.0` (single baseline)). Key rules: - 1–3 sentences, **always in English** - Focus on WHAT + WHY, never "Agent completed…" diff --git a/docker/local/cli/Dockerfile b/docker/local/cli/Dockerfile index b2bc666..7dbe742 100644 --- a/docker/local/cli/Dockerfile +++ b/docker/local/cli/Dockerfile @@ -46,7 +46,7 @@ RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | d # dev-user). `-f` makes an HTTP error a non-zero curl exit instead of piping an error # page into bash; the `SHELL … pipefail` above makes a failing curl abort the build. # install.sh itself runs `set -euo pipefail`, so failures inside it abort too. -RUN curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION='>=3.7.0' bash +RUN curl -fsSL https://cli.dailybot.com/install.sh | DAILYBOT_VERSION='>=3.7.2' bash # Install all Python dev/runtime deps from the repo's lock file. # This single COPY/RUN pair is the only build cache layer pip touches — it