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

kelly-email

Busabase AirApp-first email inbox-zero operator for reviewing unread mail, drafting replies, approving archive/mark-read/send actions, and executing only explicitly approved mailbox changes across configured accounts. Use when the user invokes $kelly-email, asks to process unread email, configure an email account, generate or review an approval batch, execute approved email decisions, or reach inbox zero.

インストール方法を見る

含まれるファイル(107)

  • SKILL.md14.5 KB
  • agents/openai.yaml262 B
  • assets/screenshots/blocked-security-zh-CN.webp130 B
  • assets/screenshots/blocked-security.webp130 B
  • assets/screenshots/inbox-approval-zh-CN.webp130 B
  • assets/screenshots/inbox-approval.webp131 B
  • assets/screenshots/needs-review-zh-CN.webp131 B
  • assets/screenshots/needs-review.webp131 B
  • assets/screenshots/overview-zh-CN.webp131 B
  • assets/screenshots/overview.webp131 B
  • assets/screenshots/thumbs/blocked-security-zh-CN.webp130 B
  • assets/screenshots/thumbs/blocked-security.webp130 B
  • assets/screenshots/thumbs/inbox-approval-zh-CN.webp130 B
  • assets/screenshots/thumbs/inbox-approval.webp130 B
  • assets/screenshots/thumbs/needs-review-zh-CN.webp130 B
  • assets/screenshots/thumbs/needs-review.webp130 B
  • assets/screenshots/thumbs/overview-zh-CN.webp130 B
  • assets/screenshots/thumbs/overview.webp130 B
  • busabase.json1.2 KB
  • config.example.json9.2 KB
  • content/_folder.json124 B
  • content/contacts/base.json3.6 KB
  • content/contacts/records.ndjson434 B
  • content/kelly-email-app/_node.json165 B
  • content/kelly-email-app/.busabaseignore287 B
  • content/kelly-email-app/.gitignore39 B
  • content/kelly-email-app/app/app.js5.5 KB
  • content/kelly-email-app/app/demo-visuals.css1.5 KB
  • content/kelly-email-app/app/demo-visuals.js4.4 KB
  • content/kelly-email-app/app/i18n/messages.js34.1 KB
  • content/kelly-email-app/app/index.html16.6 KB
  • content/kelly-email-app/app/js/api.js1.0 KB
  • content/kelly-email-app/app/js/config.js6.7 KB
  • content/kelly-email-app/app/js/format.js4.9 KB
  • content/kelly-email-app/app/js/help-modal.js14.4 KB
  • content/kelly-email-app/app/js/i18n.js6.3 KB
  • content/kelly-email-app/app/js/list-detail.js22.2 KB
  • content/kelly-email-app/app/js/provider.js2.3 KB
  • content/kelly-email-app/app/js/router.js3.9 KB
  • content/kelly-email-app/app/js/runtime.js3.4 KB
  • content/kelly-email-app/app/js/setup.js9.4 KB
  • content/kelly-email-app/app/js/shell.js5.4 KB
  • content/kelly-email-app/app/js/store.js3.0 KB
  • content/kelly-email-app/app/styles/base-ui.css13.0 KB
  • content/kelly-email-app/app/styles/base.css3.6 KB
  • content/kelly-email-app/app/styles/components.css7.4 KB
  • content/kelly-email-app/app/styles/editorial.css30.7 KB
  • content/kelly-email-app/app/styles/help-modal.css8.5 KB
  • content/kelly-email-app/app/styles/layers.css306 B
  • content/kelly-email-app/app/styles/list-detail.css15.9 KB
  • content/kelly-email-app/app/styles/setup-wizard.css9.3 KB
  • content/kelly-email-app/app/styles/shell.css13.7 KB
  • content/kelly-email-app/lib/common.ts20.1 KB
  • content/kelly-email-app/lib/data-provider/busabase-client.ts11.3 KB
  • content/kelly-email-app/lib/data-provider/busabase-provider.ts16.9 KB
  • content/kelly-email-app/lib/data-provider/email-contacts.ts7.2 KB
  • content/kelly-email-app/lib/data-provider/email-records.ts13.8 KB
  • content/kelly-email-app/lib/data-provider/index.ts1001 B
  • content/kelly-email-app/lib/data-provider/provider-interface.ts4.6 KB
  • content/kelly-email-app/lib/data-provider/provider-utils.ts6.5 KB
  • content/kelly-email-app/lib/paths.ts740 B
  • content/kelly-email-app/lib/runtime-context.ts646 B
  • content/kelly-email-app/lib/types.ts7.0 KB
  • content/kelly-email-app/package.json411 B
  • content/kelly-email-app/pnpm-lock.yaml4.9 KB
  • content/kelly-email-app/pnpm-workspace.yaml71 B
  • content/kelly-email-app/scripts/check-editorial.mjs6.1 KB
  • content/kelly-email-app/scripts/check.mjs6.5 KB
  • content/kelly-email-app/server.js333 B
  • content/kelly-email-app/server/batch-store.ts1.0 KB
  • content/kelly-email-app/server/config.ts5.3 KB
  • content/kelly-email-app/server/decisions.ts819 B
  • content/kelly-email-app/server/demo-visuals.ts12.1 KB
  • content/kelly-email-app/server/demo.ts27.7 KB
  • content/kelly-email-app/server/hono.ts6.0 KB
  • content/kelly-email-app/server/local-auth.js9.5 KB
  • content/kelly-email-app/server/lock.ts230 B
  • content/kelly-email-app/server/paths.ts43 B
  • content/kelly-email-app/server/provider-status.ts668 B
  • content/kelly-email-app/server/state.ts5.2 KB
  • content/kelly-email-app/server/types.ts1.2 KB
  • content/kelly-email-app/server/utils.ts241 B
  • content/kelly-email-app/server/workflow.ts1.9 KB
  • content/kelly-email-app/test/busabase-conformance.test.mjs5.3 KB
  • content/kelly-email-app/test/email-model.test.mjs2.1 KB
  • content/kelly-email-app/test/pagination.test.mjs2.1 KB
  • content/kelly-email-app/test/runtime-report.test.mjs970 B
  • content/kelly-email-files/_node.json120 B
  • content/reviews/base.json10.6 KB
  • content/reviews/records.ndjson1.8 KB
  • content/settings/base.json1.7 KB
  • content/settings/records.ndjson221 B
  • package-lock.json25.3 KB
  • package.json660 B
  • pnpm-lock.yaml14.9 KB
  • pnpm-workspace.yaml50 B
  • README.md2.1 KB
  • references/batch-schema.md5.1 KB
  • references/inbox-accounts.md3.6 KB
  • references/support-taxonomy.md3.1 KB
  • scripts/execute_ui_decisions.ts19.6 KB
  • scripts/generate_review_batch.ts14.0 KB
  • scripts/init_busabase_schema.ts961 B
  • scripts/publish_airapp.mjs3.0 KB
  • scripts/setup.mjs6.4 KB
  • scripts/sync-content.mjs2.8 KB
  • scripts/validate_ui_schema.ts4.0 KB

SKILL.md(原文)

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

Kelly Email

Product Contract

Kelly Email is a Busabase Cloud App-in-Skill. Its canonical product surface is the AirApp in Busabase, not a separate local-data product and not a chat-only review mode. The same Hono source supports an explicitly requested local preview with OAuth connection bootstrap.

The system has two deliberately separate sides:

  • The AirApp is the human review desk. It reads settings and review rows, shows sanitized account context, and writes reviewable ChangeRequests for human decisions.
  • The trusted skill process scans IMAP, drafts replies, applies explicitly approved IMAP/SMTP actions, and writes execution outcomes.

The AirApp must never scan mailboxes, send mail, archive, mark read, delete, label, approve a ChangeRequest, or merge a ChangeRequest. An AirApp decision only proposes a Busabase change. The trusted process remains the sole owner of mailbox side effects.

Default behavior is AirApp-first. Unless the user explicitly asks only for explanation or configuration help, update the Busabase batch and give the user the clickable AirApp URL. Start localhost only when local preview/debugging is explicitly requested; it uses the same Busabase resources and never offers another data provider.

Busabase Resources

All durable state belongs to the declared resources under the Kelly Email Folder:

  • kelly-email-reviews-v3: structured email review rows, drafts, decisions, and execution outcomes.
  • kelly-email-contacts-v3: structured derived contacts.
  • kelly-email-settings-v3: non-secret account configuration, Vault reference names, agent lock, and scan state.
  • kelly-email-files-v3: email HTML and attachment artifacts.
  • busabase:vault/kelly-email: IMAP/SMTP secret values.

The last resolved Space and resource IDs live in app/resource-map.json and app/app/js/config.js. Treat them as scoped hints for that Space, not global identity. A local OAuth preview selects its Space before any resource access; deployed AirApp uses its ambient Space. On NOT_FOUND, discover the declared root slug with ownership metadata and lazily provision within the selected Space.

The app lazily materializes its declared Folder, Bases, and Drive when they are absent. It must verify ownership metadata (appId, resourceKey, schemaVersion) before adopting an existing same-slug node. A mismatch is a conflict, never permission to overwrite or move somebody else's resource.

Configuration is the kelly-email-config record in Email Settings. Its payload field follows config.example.json. Store only non-secret settings and Vault reference names in the record. Never store secret values, OAuth tokens, API keys, cookies, or passwords in a Base, Drive, source file, chat, screenshot, log, or execution report.

Busabase authentication is ambient inside the deployed AirApp, which must not show OAuth, API-key, Base URL, provider, hosting, or Space controls. Standalone loopback preview uses browser OAuth without exposing tokens; after OAuth it auto-selects a single/open-source Space or requires a native selector when several Spaces are accessible. It performs no app-resource read or initialization before selection. Agent-side Busabase tooling uses the user's existing credentials and explicit target Space. Mailbox credentials are resolved from authorized Vault references only.

Runtime Contract

The canonical app project is app/ and follows the Busabase AirApp runtime contract:

  • Hono server with vanilla HTML, CSS, and JavaScript.
  • app/package.json has exact start: node server.js.
  • Exact-pinned latest supported busabase-sdk.
  • No React, Vite, bundler, build step, local JSON provider, local handoff files, or alternate local product mode.
  • Browser assets live under app/app/ and use relative asset URLs.
  • Persistent config and state flow through busabase-sdk; filesystem reads are only for packaged static assets.

When changing the product, update the canonical app/ source first and submit an AirApp ChangeRequest in Busabase. Do not approve or merge that AirApp CR unless the user explicitly identifies and authorizes it. Return a clickable Inbox review URL.

UI Contract

Preserve the established approval-desk layout and visual quality:

  • Desktop uses a stable sidebar, dense list, and detail pane.
  • Mobile uses one-column navigation with explicit list/detail transitions and no horizontal overflow.
  • The top of the sidebar explains what needs human attention; primary filters are All, Needs Review, Approved, Done, and Blocked.
  • Categories are badges on messages, not primary navigation.
  • Help & Settings contains Guide, Files, Accounts, Profile, Style, Knowledge, Config, and appearance controls.
  • Onboarding is a full-screen readiness gate showing declared resources, Settings configuration, and Vault reference readiness. It never asks users to copy IDs or create nodes manually.
  • Show original email text. If operator and sender languages differ, add translation as a separate helper instead of replacing the original.
  • Use a stable Review #n per current batch so chat edits such as “改 2” resolve unambiguously.
  • Keep human input lightweight: one review note, plus an editable draft only when a draft exists or a send decision is being reviewed.
  • Poll state automatically, but do not redraw while the user is editing a non-search input.

Screenshots in assets/screenshots/ define the expected product character. Refresh them when a material UI change is merged.

Operating Rules

  • Require explicit approval before reading or processing a live email batch. Invoking the skill alone is not approval.
  • Declare accounts, folders/labels, unread-only scope, time window or query, review quota, intended actions, cleanup policy, identity rules, and stop condition.
  • Require separate explicit approval before every send or mailbox-changing action unless the user granted a precise standing approval for low-risk cleanup within the batch.
  • Treat every message as sensitive. Quote only what is necessary and never expose unrelated thread contents.
  • Track account, mailbox group, original recipient, sender, thread/message identifiers, received time, category, risk, status, and next action.
  • Separate physical mailboxes from outbound identities. Select reply_as from original recipient, thread history, brand/product, customer domain, and customer language. Ask when ambiguous.
  • Deduplicate aliases that reach the same physical mailbox using Message-ID/thread headers and mailbox_group_id.
  • Never assume a universal Archive folder. Resolve archive targets from each mailbox's category/risk routing. If no target is configured, block and ask.
  • Use configured knowledge before making product, pricing, billing, legal, security, roadmap, or policy claims. Ask when evidence is missing.
  • For Chinese operators, use Chinese for operator-facing notes and UI recommendations; preserve customer text and reply in the customer's language when clear.

Batch Approval Gate

Before reading live mail, propose:

Batch plan:
- Accounts:
- Scope: unread support threads
- Folders / query / time window:
- Review quota:
- Auto-cleanup policy:
- Actions: triage / draft / prepare send-ready / execute approved
- Stop condition: one batch / account done / user stops
- Identity rules:

Please approve before I process this batch.

Allowed before approval: explain workflow, inspect declared Busabase readiness, prepare a configuration ChangeRequest, propose a batch, and ask non-secret clarifying questions.

Not allowed before approval: search/read/summarize/classify live mail, open attachments, draft from live mail, send, mark, archive, delete, label, unsubscribe, or move messages.

After triage, the AirApp is the approval surface. For each proposed action show the review reference, account, subject, reply identity, action, customer-visible draft or mailbox mutation, and risk. “Approve all” applies only to the exact latest visible proposal set.

Onboarding

Before a scan, verify:

  1. Declared Folder, Reviews Base, Contacts Base, Settings Base, and Drive exist and match ownership metadata.
  2. Email Settings contains a kelly-email-config record with at least one mailbox.
  3. Every IMAP/SMTP endpoint names a Vault reference.
  4. The trusted runtime can resolve all referenced Vault secrets.

If resources are absent, use lazy provisioning. Do not ask the user to hand-create nodes or paste IDs.

If account configuration is absent, collect only non-secret details: mailbox address, aliases, IMAP/SMTP host/port/security/username, folders, mailbox group, outbound identities, display names, routing rules, profile, brands, URLs, style, and knowledge sources. Create a reviewable record CR in Email Settings based on config.example.json.

If secrets are absent, name the exact Vault keys to add. Never ask the user to paste the values into chat.

Do not scan mail until onboarding is ready.

Inbox-Zero Workflow

  1. Verify onboarding and propose the bounded batch plan.
  2. Wait for explicit approval.
  3. Write the Busabase agent lock and clear it in finally.
  4. Run scripts/generate_review_batch.ts for the approved scope. Use --mailbox <mailbox-id> to limit secret checks and reads to one physical mailbox, and --recipient <email> when the support identity shares a mailbox with aliases; the recipient filter is applied by IMAP before message bodies are downloaded. It writes Reviews/Contacts/Settings/Drive through the provider.
  5. Treat its rule classification as a conservative prefilter, not final judgment.
  6. Perform an Agent Semantic Classification Pass using the message, thread context, taxonomy, account rules, and user preferences.
  7. Correct keyword false positives and write classification_method: agent_review with concise evidence and confidence.
  8. Give every Needs Review item a brief: background, why it needs review, and a recommended next step.
  9. Return the clickable AirApp URL and wait for the user to review.
  10. When asked to execute, run scripts/execute_ui_decisions.ts. Read only materialized, explicitly approved decisions; use --dry-run when unsure.
  11. Apply only approved IMAP/SMTP actions and write an execution report to Reviews.
  12. Summarize executed, blocked, failed, and remaining work.

The scan script is a trusted producer and may auto-merge its own review/contact/lock/scan-state records. AirApp writes are always review-first. A decision that is still in an unmerged CR is not approval and must not be executed.

Classification And Quota

Default goal: all unread support-related threads in approved accounts. Every thread ends as one of:

  • reply_needed
  • escalate
  • waiting_on_customer
  • waiting_on_user
  • no_reply_cleanup
  • not_support

Default scan stops when Needs Review reaches 5 or no in-scope unread mail remains. Low-risk notifications may continue within an explicitly approved cleanup policy and do not consume the review quota.

Always surface real customer intent, money, refunds, billing disputes, access problems, complaints, sales/partnership, privacy/security, unresolved technical alerts, attachments, course/homework/feedback, and unclear messages from real people.

Do not infer high risk from isolated keywords or tracking parameters. Judge sender, subject, visible intent, thread context, and requested action together.

After cleanup, report total, counts by category, and a compact list with account, UID/message identifier, sender/domain, short subject, and reason. Scan audit state belongs in the kelly-email-scan-state Settings record, never a local cache.

Decision Semantics

Supported decisions are defined in references/batch-schema.md, including archive, mark read, draft reply, send reply, keep unread, no action, needs review, and revise.

  • draft_reply is an approved agent task, not a mailbox mutation. After drafting, return the item to Needs Review for wording approval.
  • archive and mark_read may execute after the corresponding materialized AirApp approval unless risk_policy.block_by_default explicitly requires another override.
  • send_reply always requires an explicit materialized send decision and a non-empty approved draft. Broad cleanup approval never authorizes sending.
  • Preserve In-Reply-To and References headers. Include only a short relevant quote unless the user requests a clean reply.
  • When archiving after send, use the configured category/risk folder and mark read; never hardcode Archive.

Reply Quality

Write customer replies for minimal editing:

  • Lead with the answer or useful conclusion.
  • Use short paragraphs and only useful bullets.
  • Do not repeat the request unless clarity requires it.
  • Include only relevant links, caveats, contacts, and next steps.
  • Keep routine support to 60-120 words, sales/customer replies to 100-180, and complex technical replies to 180-300 with a short summary first.
  • For angry customers or escalation, acknowledge briefly and state the next step without over-explaining.
  • Do not promise refunds, discounts, custom work, roadmap dates, legal/compliance outcomes, or security conclusions without evidence and approval.

For coupon or broken merge-tag replies, include the verified code and CTA URL. If either is unavailable, ask before sending.

References

  • Read references/inbox-accounts.md for account routing, aliases, labels, and per-account rules.
  • Read references/support-taxonomy.md for classification, priority, and reusable support notes.
  • Read references/batch-schema.md before changing review fields, workflow states, or decision semantics.
  • Use config.example.json as the Settings Base payload template, never as a configured mailbox and never as a place for secret values.

レビュー

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

同じリポジトリのスキル

概要と使いどころ

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 のスキルをすべて見る

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