本文へ移動
cccskills
無料GitHub で公開

kelly-standup

Team standup board (Busabase App-in-Skill) for team leads. Use when the user invokes $kelly-standup or /kelly-standup, or asks for standup, daily standup, 晨会, daily check-in, team status board, 团队日报, blockers, who's working on what, team digest, check-in streaks, missing check-in reminders, or collecting async updates from Slack/WeCom/Discord/WhatsApp/docs into one board.

インストール方法を見る

含まれるファイル(77)

  • SKILL.md14.9 KB
  • agents/openai.yaml209 B
  • assets/screenshots/blockers-zh-CN.webp130 B
  • assets/screenshots/blockers.webp130 B
  • assets/screenshots/history-zh-CN.webp130 B
  • assets/screenshots/history.webp130 B
  • assets/screenshots/members-zh-CN.webp130 B
  • assets/screenshots/members.webp130 B
  • assets/screenshots/overview-zh-CN.webp131 B
  • assets/screenshots/overview.webp131 B
  • assets/screenshots/reminders-zh-CN.webp130 B
  • assets/screenshots/reminders.webp130 B
  • assets/screenshots/thumbs/blockers-zh-CN.webp130 B
  • assets/screenshots/thumbs/blockers.webp130 B
  • assets/screenshots/thumbs/history-zh-CN.webp130 B
  • assets/screenshots/thumbs/history.webp130 B
  • assets/screenshots/thumbs/members-zh-CN.webp130 B
  • assets/screenshots/thumbs/members.webp130 B
  • assets/screenshots/thumbs/overview-zh-CN.webp130 B
  • assets/screenshots/thumbs/overview.webp130 B
  • assets/screenshots/thumbs/reminders-zh-CN.webp130 B
  • assets/screenshots/thumbs/reminders.webp130 B
  • busabase.json876 B
  • content/_folder.json122 B
  • content/blockers/base.json1.4 KB
  • content/checkins/base.json1.7 KB
  • content/checkins/records.ndjson2.3 KB
  • content/days/base.json616 B
  • content/kelly-standup-app/_node.json142 B
  • content/kelly-standup-app/.busabaseignore194 B
  • content/kelly-standup-app/app/accent-theme.css8.0 KB
  • content/kelly-standup-app/app/accent-theme.js7.3 KB
  • content/kelly-standup-app/app/app.js21.7 KB
  • content/kelly-standup-app/app/demo-visuals.css1.5 KB
  • content/kelly-standup-app/app/demo-visuals.js3.3 KB
  • content/kelly-standup-app/app/i18n/messages.js7.7 KB
  • content/kelly-standup-app/app/index.html4.7 KB
  • content/kelly-standup-app/app/js/busabase-client.js226 B
  • content/kelly-standup-app/app/js/config.js6.2 KB
  • content/kelly-standup-app/app/js/connect-gate.js1.6 KB
  • content/kelly-standup-app/app/js/demo-visuals-data.js4.3 KB
  • content/kelly-standup-app/app/js/pagination.js4.6 KB
  • content/kelly-standup-app/app/js/providers/busabase-provider.js8.4 KB
  • content/kelly-standup-app/app/js/providers/demo-provider.js23.5 KB
  • content/kelly-standup-app/app/js/providers/index.js270 B
  • content/kelly-standup-app/app/js/runtime.js3.4 KB
  • content/kelly-standup-app/app/js/standup-model.js12.2 KB
  • content/kelly-standup-app/app/js/team-views.js17.6 KB
  • content/kelly-standup-app/app/styles/base-ui.css13.0 KB
  • content/kelly-standup-app/app/styles/editorial.css30.7 KB
  • content/kelly-standup-app/app/styles/layers.css33 B
  • content/kelly-standup-app/app/styles/shell.css9.3 KB
  • content/kelly-standup-app/app/styles/workflow.css20.5 KB
  • content/kelly-standup-app/app/vendor/busabase-airapp-gate.css6.1 KB
  • content/kelly-standup-app/app/vendor/busabase-airapp-gate.js11.2 KB
  • content/kelly-standup-app/app/vendor/busabase-airapp.js556.0 KB
  • content/kelly-standup-app/app/vendor/busabase-sdk.js849.5 KB
  • content/kelly-standup-app/package.json1.0 KB
  • content/kelly-standup-app/pnpm-lock.yaml5.2 KB
  • content/kelly-standup-app/pnpm-workspace.yaml50 B
  • content/kelly-standup-app/scripts/check-editorial.mjs6.1 KB
  • content/kelly-standup-app/scripts/check.mjs4.2 KB
  • content/kelly-standup-app/server.js3.1 KB
  • content/kelly-standup-app/test/standup-model.test.mjs7.6 KB
  • content/members/base.json1.3 KB
  • content/reminders/base.json2.8 KB
  • content/settings/base.json1.1 KB
  • package.json478 B
  • pnpm-lock.yaml4.3 KB
  • pnpm-workspace.yaml50 B
  • README.md5.6 KB
  • references/standup-schema.md8.7 KB
  • scripts/execute_decisions.mjs7.1 KB
  • scripts/ingest_updates.mjs19.5 KB
  • scripts/publish_airapp.mjs3.1 KB
  • scripts/setup.mjs6.4 KB
  • scripts/sync-content.mjs2.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Kelly Standup

App UI Screenshots

<table> <tr> <td width="50%"><img src="assets/screenshots/overview.webp" alt="Kelly Standup today board"></td> <td width="50%"><img src="assets/screenshots/blockers.webp" alt="Kelly Standup blockers"></td> </tr> <tr> <td><strong>Today board</strong><br>Daily standup at a glance: team digest, participation count, and per-member yesterday/today/blockers cards with source badges.</td> <td><strong>Blockers</strong><br>All blockers across the team with severity, age, and agent-suggested next actions.</td> </tr> <tr> <td width="50%"><img src="assets/screenshots/members.webp" alt="Kelly Standup members"></td> <td width="50%"><img src="assets/screenshots/reminders.webp" alt="Kelly Standup reminders"></td> </tr> <tr> <td><strong>Members</strong><br>Team roster with check-in streaks, 30-day participation, open blockers, and per-member update timelines.</td> <td><strong>Reminders</strong><br>Approval-gated nudges for missing check-ins — drafted by the agent, sent only after review.</td> </tr> </table>

Overview

Use this skill as Kelly's team standup desk: see at a glance what everyone is working on each day. Team members post async updates wherever they already talk — Slack, WeCom, Discord, WhatsApp, a shared doc, or pasted text. Turning that raw material into structured updates (yesterday / today / blockers / mood) is LLM work the agent does in conversation; scripts/ingest_updates.mjs is the trusted step that validates the resulting payload and writes it into Busabase (no browser can read a chat export or call a chat API with secrets). The AirApp shows today's per-member cards, participation, the blocker list, past days, and a reminder review queue for chasing missing check-ins. scripts/execute_decisions.mjs turns approved reminders into a concrete send plan; it never sends anything itself.

There is deliberately no scheduling or cron inside this skill. It is invoked on demand: when the user asks for standup, the agent collects whatever updates exist at that moment, ingests them, and opens the board. Recurring behavior belongs to the user's own habits or external schedulers, never to this skill.

Default behavior is AirApp-first. Unless the user explicitly asks only for explanation, collect and ingest the latest updates and give the user the clickable AirApp URL (or the local preview URL when local preview is explicitly requested). Use chat-only mode only when the user says "纯聊天", "chat only", "不要打开 UI", or similar; then present the board as text and reminders as numbered items (Reminder #1) directly in the conversation.

The AirApp itself never talks to Slack/WeCom/Discord/WhatsApp/email. It reads and writes Busabase records only. Both external-input directions are genuinely trusted-process-only, since a browser cannot parse an arbitrary chat export or hold chat-platform credentials: scripts/ingest_updates.mjs writes the agent-parsed check-ins/blockers/reminders into Busabase, and scripts/execute_decisions.mjs is the one place that plans an approved reminder's send operation — sending the actual message stays outside the app, via kelly-messenger / kelly-email, after human approval.

Mandatory Dependencies

  1. Read and follow $kelly-app-skill-creator for product behavior, visual quality, responsive layout, and the complete canonical content/kelly-standup-app/ artifact.
  2. Read and follow $busabase for connection, target Space, node discovery, ChangeRequests, review, and merge behavior.
  3. Read and follow $busabase-app-creator for resource modeling, AirApp runtime limits, security, validation, and deployment.

If a dependency is unavailable, preserve this skill's local artifact and product contracts, stop before the unavailable Busabase operation, and report the exact missing dependency. Do not invent a second data backend.

Boundary

  • The skill may read team-consented channels only (kelly-messenger snapshots, chat exports the user provides, shared docs, pasted text), parse them, and write the resulting structured updates and drafted reminders to Busabase via scripts/ingest_updates.mjs.
  • Ingestion parses only what the team has agreed to share for standup. Store the minimum: structured items plus a short raw-excerpt for provenance — never whole chat logs, and no member PII beyond name/role/timezone/channel that the team shares.
  • The AirApp reads and writes Busabase records only. It must never send messages, call a chat/email API, or perform any other external side effect.
  • Reminders (nudges for missing check-ins, blocker escalations) are approval-required: the agent drafts them, the human approves in the app, scripts/execute_decisions.mjs plans the send operation, and sending happens outside the app via kelly-messenger / kelly-email. Member contacts live only in env vars referenced by contact-env on the member record — the AirApp never reads or displays the value, only whether the name is configured.
  • Treat chat exports, member contact values, and Busabase credentials as sensitive. Never commit them.

Busabase Resources

Six Bases under one application Folder (kelly-standup), declared in content/kelly-standup-app/app/js/config.js and the generated template sidecars under content/:

  • members: team roster — name, role, timezone, channel, active, contact-env (an env var name, never a value), notes.
  • days: one row per recorded standup day — digest paragraph and who is on leave.
  • checkins: one row per member per day — yesterday/today lists, blockers (nested JSON, matching the per-update blocker shape used across the team board), mood, submitted-at, source, raw excerpt.
  • blockers: the blocker registry, deduplicated across days by content hash — severity, status, suggested action, raised/resolved dates.
  • reminders: the review queue — type, target member, channel, title, reason, editable draft, workflow status, the human verdict fields (decision-action/decision-note/decided-at), and the execution plan (execution-status/execution-operations/execution-detail) written by scripts/execute_decisions.mjs.
  • settings: one row (record-id: "team") with team name/timezone/workdays, digest style, and standup questions.

Resources provision lazily through an idempotent Busabase ChangeRequest the first time the app runs in a Space; see references/standup-schema.md for exact field shapes. Streaks, 30-day participation, per-day participation, and the missing-today/open-blockers metrics are all recomputed client-side from these Bases on every read — never stored.

First Run And Onboarding

On invocation, check the settings Base for a team row. If it is absent, guide setup before collecting real updates: ask, turn by turn, for the team profile (name, timezone, workdays), members (name, role, timezone, and which channel each posts standups in, plus which env var holds their contact for reminders), the standup questions (default: yesterday / today / blockers), and digest style. Never ask the user to paste contact values or secrets into chat; they belong only in local env files, referenced by contact-env names. Write the team profile and roster with:

node skills/kelly-standup/scripts/ingest_updates.mjs onboarding-payload.json --apply

where onboarding-payload.json carries team, members, and a date (any recent workday — the payload shape always requires one; updates/reminders can be empty on this first run). See references/standup-schema.md.

Local App

Default behavior is AirApp-first — give the user the clickable AirApp URL. Start pnpm --dir content/kelly-standup-app dev only when local preview/debugging is explicitly requested.

Required app views (hash routes):

  • #/today (default): today's board — human-attention panel (missing check-ins, open blockers, reminders awaiting approval), the agent-written team digest paragraph, participation stat (e.g. 6/8 submitted) with an inline bar, then per-member cards: avatar initial, name + role, submitted time + source badge, Yesterday / Today / Blockers sections (blockers highlighted by severity), mood dot. Missing members get a visually distinct "not submitted" card with their last check-in date and a link to the drafted reminder; on-leave members get an on-leave card.
  • #/members and #/members/<id>: roster — name, role, timezone, channel, check-in streak, 30-day participation, open blocker count, last submission. Detail shows a day-by-day timeline of recent updates, the member's open blockers, and notes.
  • #/blockers: all blockers across the team — severity badge, owner, raised date, age, status (open/resolved, filterable), the linked day, and the agent-suggested next action per blocker.
  • #/reminders: the review queue with workflow states needs_review / changes_requested / approved / done / blocked. Each card shows the stable ref (Reminder #1), type badge (missing check-in / blocker escalation), target member, channel badge, the reason, an editable message draft, a Review note, and approve / request changes / revise (save note) / block buttons that write the verdict directly onto the reminder record. Approved items are planned by scripts/execute_decisions.mjs and sent by the agent outside the app via kelly-messenger / kelly-email.
  • #/history and #/history/<date>: recent days with an inline-SVG participation bar and one-line digest; selecting a date shows that day's full board (same card layout as today).
  • #/settings: sanitized config — team profile, members with contact-env readiness booleans, standup questions, workdays, digest style, and onboarding state. Never exposes contact values or secrets.

Demo mode:

  • ?demo=today, ?demo=members, ?demo=blockers, ?demo=history, and ?demo=detail (a member's update timeline) select named mock scenes.
  • lang=en or lang=zh forces UI chrome language; with lang=zh the demo content itself (中文姓名、角色、日报内容、阻塞、摘要、提醒草稿) is meaningfully localized for Chinese screenshots.
  • Deep links such as /?demo=today&lang=zh#/today must work.
  • Demo mode never reads or writes Busabase.

UI language: English and Chinese chrome with Auto default (browser language), plus an explicit selector persisted locally. Keep real member names and update content in their original language.

Collection Workflow

Invoked on demand — there is NO cron and NO scheduler in this skill. Each run:

  1. Ask where today's updates live (or use what the user already provided): the kelly-messenger local snapshot, a Slack/WeCom/Discord/WhatsApp export, a shared doc, or text pasted into chat. Raw material stays outside git.
  2. Parsing is LLM work: split the raw material into one update per member, mapped to existing member-ids on the roster — yesterday[], today[], blockers[] (each with severity, and status: "resolved" when a member says a previous blocker is cleared), optional mood, submitted_at, source, and a short raw_excerpt. Note members on leave in on_leave[].
  3. Write the digest: a short agent-written paragraph summarizing the day (what shipped, what is blocked, who is missing), included as digest in the payload.
  4. Draft reminders for missing check-ins or aging high blockers as reminders[] payload items (needs_review by default).
  5. Merge deterministically with node scripts/ingest_updates.mjs <payload.json> --apply. The script validates against the roster, upserts checkins by member + date (re-ingesting is idempotent), dedupes blockers by content hash and applies resolve transitions, upserts reminders with stable content-hash ids (resetting to needs_review only when a reminder's content actually changed, preserving a human's pending decision otherwise), and upserts the day's digest/on_leave list. Omit --apply first to see a dry-run validation summary.
  6. Give the user the AirApp URL (or local preview URL) pointed at #/today.

Reminder Workflow

  1. The user reviews drafted reminders in #/reminders and decides via approve / request changes / revise (save note) / block — written directly onto the reminder record through busabase-sdk. From a standalone local preview the write merges immediately (trusted operator); from the deployed AirApp it creates a pending ChangeRequest for the trusted process to merge.
  2. For a reminder moved to changes_requested, re-draft the message per the review note and re-ingest with scripts/ingest_updates.mjs --apply so the item returns to needs_review.
  3. On "execute" / "send approved reminders": run node scripts/execute_decisions.mjs --apply to re-read approved reminders from Busabase and write a concrete send_reminder plan (channel, target, contact-env readiness, message draft) onto each — it performs no external side effect. Then send the actual messages via kelly-messenger / kelly-email using the contact-env referenced contacts, and record the outcome back onto the reminder (e.g. via a follow-up ingest_updates.mjs note, or by editing the record directly).
  4. Never send a reminder that is not approved, and never plan/send an already-done reminder twice — scripts/execute_decisions.mjs only acts on status: "approved".

Safety Defaults

  • Treat every outbound nudge as approval-required, human-visible communication: friendly tone, no shaming, no manager-speak the user did not approve.
  • Store only structured updates and short excerpts; keep raw exports outside git and outside Busabase.
  • Expose only contact-env names (never contact values) in UI state, logs, and reports; scripts/execute_decisions.mjs is the only process that checks whether the referenced env var is actually set.
  • Keep merges idempotent: stable member ids, blocker content hashes, reminder content-hash ids, so repeated ingests do not duplicate work.
  • If the UI and schema disagree, stop and fix the schema or UI before executing anything.

Useful Commands

node skills/kelly-standup/scripts/ingest_updates.mjs payload.json
node skills/kelly-standup/scripts/ingest_updates.mjs payload.json --apply
node skills/kelly-standup/scripts/execute_decisions.mjs
node skills/kelly-standup/scripts/execute_decisions.mjs --apply
pnpm --dir skills/kelly-standup/content/kelly-standup-app dev

In normal use, invoke /kelly-standup, let the skill ingest today's updates, and open the AirApp.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Align all AI coding agents to a single source of truth. AGENTS.md for rules, .agents/skills/ for skills, symlinks for everything else. Use when setting up a repo for multiple agents, or when links are missing, broken, or out of date.

日本語の概要は準備中です。原文の説明を表示しています。

mr-kelly/skills52026年10月2日 更新

Read, answer and post on the Buda community forum at community.buda.im through its /api/v1/community REST API. Lists categories and posts, reads a thread with its replies, searches, and publishes posts and replies behind an explicit confirmation. Use when the user invokes $buda-community or /buda-community, asks what is happening in the Buda community, wants an unanswered question triaged or answered, or wants something posted or announced there.

日本語の概要は準備中です。原文の説明を表示しています。

mr-kelly/skills52026年10月2日 更新

Read, answer and post on the Busabase community forum at community.busabase.com through its /api/v1/community REST API. Lists categories and posts, reads a thread with its replies, searches, and publishes posts and replies behind an explicit confirmation. Use when the user invokes $busabase-community or /busabase-community, asks what is happening in the Busabase community, wants an unanswered question triaged or answered, or wants something posted or announced there.

日本語の概要は準備中です。原文の説明を表示しています。

mr-kelly/skills52026年10月2日 更新

kelly-ads

無料

Ad-campaign command desk (投放指挥台, Busabase App-in-Skill) for a cross-border e-commerce seller running Amazon Ads, Meta (FB/IG), TikTok Ads, and Google Ads. Use when the user invokes $kelly-ads or /kelly-ads, or asks about 投放, ad campaigns, ad spend, ACOS, ROAS, Amazon Ads, TikTok ads, Meta ads, Google Ads, search terms, negative keywords, bid adjustment, budget pacing, CPC spikes, rejected ads, ad anomaly detection, 广告优化, or reviewing agent-proposed adjustment cards (negative keyword, bid down/up, pause target, budget shift, creative refresh).

日本語の概要は準備中です。原文の説明を表示しています。

mr-kelly/skills52026年10月2日 更新

Busabase-backed App-in-Skill low-code agent configuration and governance console for a platform team. Use when the user invokes $kelly-agent-builder or /kelly-agent-builder, wants to review or edit a catalog of mock LLM agent configs, check quota usage, find configs that need attention, move a draft to live, pause a live agent, or archive an agent. Mock config/governance console only — it never provisions or calls any real agent.

日本語の概要は準備中です。原文の説明を表示しています。

mr-kelly/skills52026年10月2日 更新

Review board (Busabase App-in-Skill) that runs a fixed suite of mock test cases against a baseline vs candidate agent version and surfaces rubric-scored regressions before a release. Use when the user invokes $kelly-agent-eval or /kelly-agent-eval, wants to review agent-version regressions, compare baseline vs candidate quality, triage a release, or record a release approve/block decision. Deterministic mock rubric scores only — not a real LLM-judge call, and it never deploys anything.

日本語の概要は準備中です。原文の説明を表示しています。

mr-kelly/skills52026年10月2日 更新

mr-kelly のスキルをすべて見る

このスキルの問題を報告する