Kelly Followups
Overview
Kelly Followups is a Busabase Cloud App-in-Skill. Its canonical product
surface is the AirApp in Busabase, not a separate local-data product. The
same Hono source supports an explicitly requested local preview with OAuth
connection bootstrap.
It does exactly one thing, on purpose: after a meeting, record who you need
to follow up with and what needs doing; open the app any morning and see
today's list; mark each one done.
Origin
This skill exists as a worked example of the $kelly-ideas → $kelly-app-creator
handoff: a real idea ("周会太多我总忘记谁该跟进" — too many weekly meetings,
can never remember who to follow up with) was interrogated through
$kelly-ideas's BRD → MRD → PRD ladder, and the resulting PRD's own
non-goals — no full project management, no calendar sync, no notification
delivery, no team permissions — are exactly this app's scope. It is
intentionally this small; growing it into a project-management tool is a
different PRD, not a feature request on this one.
Mandatory Dependencies
- Read and follow
$busabase for connection, target Space, node discovery,
ChangeRequests, review, merge, and trusted mutations.
- Read and follow
$kelly-app-creator for the App-in-Skill artifact
contract, the UI contract, and AirApp delivery.
Busabase Resources
| Resource |
Holds |
followups |
One row per followup: who, what, when it's due, and whether it's done |
Authentication
Connection bootstrap only: BUSABASE_BASE_URL, BUSABASE_API_KEY,
BUSABASE_SPACE_ID. Everything else lives in Busabase through
busabase-sdk. Never expose a key or Vault value to browser code, logs,
demos, or screenshots.
Non-Goals (inherited from the PRD, kept deliberately)
- No multi-level tasks, no Gantt chart, no full project management.
- No calendar sync, no scheduled notification delivery — v1 is "open it and
see", not "get pinged".
- No per-user permissions — v1 shows every followup to everyone who opens it.
Do not add these as a side effect of an unrelated request. If a real need for
one of them shows up, that is a new PRD to interrogate through
$kelly-ideas, not a quiet scope creep here.
Demo Mode
?demo=1 serves a deterministic read-only set of followups — some due
today, one upcoming, one already done — so the today/all split is visible
without touching a real Space. Demo never impersonates a connection and is
labeled read-only.
Completion Criteria
- The
kelly-followups Folder and followups Base exist.
- Recording a followup takes one write; marking it done takes one write.
- A done item disappears from "Today" immediately.
- Desktop and 390px phone viewports both verified, with no horizontal overflow.
- The AirApp node exists and its version is merged before claiming deployment.
Stop Conditions
- Stop and report if Busabase is unreachable or the Space is ambiguous; never
fall back to local JSON or browser storage for domain state.
- Stop before any external side effect. This skill only writes to Busabase;
it does not send, publish, or notify anyone outside the app itself.
1---2name: kelly-followups3description: Busabase-backed App-in-Skill for one thing only — record who you need to follow up with after a meeting, see what is due today, mark it done. Use when the user invokes $kelly-followups or /kelly-followups, mentions a followup, follow-up, meeting action item, or wants a lightweight daily reminder of who to check in with, without a full project-management tool.4---56# Kelly Followups78## Overview910Kelly Followups is a Busabase Cloud App-in-Skill. Its canonical product11surface is the AirApp in Busabase, not a separate local-data product. The12same Hono source supports an explicitly requested local preview with OAuth13connection bootstrap.1415It does exactly one thing, on purpose: after a meeting, record who you need16to follow up with and what needs doing; open the app any morning and see17today's list; mark each one done.1819## Origin2021This skill exists as a worked example of the `$kelly-ideas` → `$kelly-app-creator`22handoff: a real idea ("周会太多我总忘记谁该跟进" — too many weekly meetings,23can never remember who to follow up with) was interrogated through24`$kelly-ideas`'s BRD → MRD → PRD ladder, and the resulting PRD's own25non-goals — no full project management, no calendar sync, no notification26delivery, no team permissions — are exactly this app's scope. It is27intentionally this small; growing it into a project-management tool is a28different PRD, not a feature request on this one.2930## Mandatory Dependencies31321. Read and follow `$busabase` for connection, target Space, node discovery,33 ChangeRequests, review, merge, and trusted mutations.342. Read and follow `$kelly-app-creator` for the App-in-Skill artifact35 contract, the UI contract, and AirApp delivery.3637## Busabase Resources3839| Resource | Holds |40| --- | --- |41| `followups` | One row per followup: who, what, when it's due, and whether it's done |4243## Authentication4445Connection bootstrap only: `BUSABASE_BASE_URL`, `BUSABASE_API_KEY`,46`BUSABASE_SPACE_ID`. Everything else lives in Busabase through47`busabase-sdk`. Never expose a key or Vault value to browser code, logs,48demos, or screenshots.4950## Non-Goals (inherited from the PRD, kept deliberately)5152- No multi-level tasks, no Gantt chart, no full project management.53- No calendar sync, no scheduled notification delivery — v1 is "open it and54 see", not "get pinged".55- No per-user permissions — v1 shows every followup to everyone who opens it.5657Do not add these as a side effect of an unrelated request. If a real need for58one of them shows up, that is a new PRD to interrogate through59`$kelly-ideas`, not a quiet scope creep here.6061## Demo Mode6263`?demo=1` serves a deterministic read-only set of followups — some due64today, one upcoming, one already done — so the today/all split is visible65without touching a real Space. Demo never impersonates a connection and is66labeled read-only.6768## Completion Criteria6970- The `kelly-followups` Folder and `followups` Base exist.71- Recording a followup takes one write; marking it done takes one write.72- A done item disappears from "Today" immediately.73- Desktop and 390px phone viewports both verified, with no horizontal overflow.74- The AirApp node exists and its version is merged before claiming deployment.7576## Stop Conditions7778- Stop and report if Busabase is unreachable or the Space is ambiguous; never79 fall back to local JSON or browser storage for domain state.80- Stop before any external side effect. This skill only writes to Busabase;81 it does not send, publish, or notify anyone outside the app itself.