91 added, 63 removed. Audit A to A.
---
name: kelly-financial-services-intel
- description: "Kelly Financial Services Intel: App-in-Skill daily industry intelligence cockpit for financial services, investment advisory, and family offices. Use when the user asks about financial services, investment advisory, market explainers, client memos, family office,投顾,金融服务, or family-office scenes. Prepares news/source signals, buyer-intent interpretation, approved sales actions, and channel drafts for review before any external handoff."
+ description: "Kelly Financial Services Intel: App-in-Skill daily industry intelligence cockpit for financial services, investment advisory, and family offices (Busabase App-in-Skill). Use when the user asks about financial services, investment advisory, market explainers, client memos, family office,投顾,金融服务, or family-office scenes. Prepares news/source signals, buyer-intent interpretation, approved sales actions, and channel drafts for review before any external handoff."
---
# Kelly Financial Services Intel
## Overview
Use this skill as Kelly's daily industry-intelligence operator for **financial services, investment advisory, and family offices**.
- It turns current news sources, trend signals, competitor movement, customer questions, and buyer-intent clues into a small reviewable batch:
+ It turns current news sources, trend signals, competitor movement, customer questions, and buyer-intent clues into a small reviewable batch, held in Busabase:
- source-backed signals;
- why each signal matters to the buyer;
- sales or operating actions for today;
- draft messages/content for client memo, internal brief, advisor script;
- blocked claims that need human, legal, compliance, or domain review.
- Default interaction mode: App UI. Unless the user explicitly asks for chat-only handling, check onboarding/config, prepare or refresh the local batch, start/reuse the local app with `app/start.sh`, and give the actual local URL. Use chat-only mode only when the user says "纯聊天", "chat only", "不要打开 UI", or similar.
+ Signal/action/draft collection is a genuine external operation a browser
+ cannot perform (web browsing, source reading, buyer-intent judgment). The
+ AirApp itself only reads and writes Busabase — it never browses, posts
+ anywhere, or performs an external handoff; Kelly writes today's batch
+ directly into Busabase through `busabase-sdk` as part of the normal
+ workflow below, then reviews and decides inside the app.
+ Default interaction mode: App UI. Unless the user explicitly asks for
+ chat-only handling, check onboarding, collect/refresh today's batch, 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.
+
+ ## Mandatory Dependencies
+
+ 1. Read and follow `$kelly-app-skill-creator` for product behavior, visual quality, responsive layout, and the complete canonical `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 product contracts,
+ stop before the unavailable Busabase operation, and report the exact
+ missing dependency. Do not invent a second data backend.
+
## Product Package
- **Buyer**: financial-service founders, family office operators, analysts, and client advisors.
- **Pain**: financial teams need fast, sourced explainers and client talking points without overclaiming or giving uncontrolled advice.
- **Offer**: daily financial-services intelligence that becomes sourced internal briefs and review-first client drafts.
- **Demo source mix**: market news, regulatory updates, macro data, company announcements, portfolio themes, and client questions.
Sales framing:
> Every morning, AI watches the sources that affect your business, turns them into today's sales actions, and puts the drafts in a review queue before anything becomes official.
Do not lead with "AI platform", "agent workspace", "database", or model names. Lead with the daily business scene.
## Scene Logic
Use this skill to turn financial-market, regulatory, and client-question signals into reviewable relationship-management actions. A signal is valuable when it changes client concern, advisor preparation, risk disclosure, product education, or internal briefing priorities.
Prioritize signals in this order:
1. regulator, exchange, central-bank, tax, product, or disclosure changes with client-facing implications;
2. macro, market, company, and portfolio-theme movement that may trigger client questions;
3. competitor commentary or campaign movement that changes expectations around service, tools, or education;
4. recurring client objections that can become an evidence-backed memo or meeting agenda.
Actions should become internal briefs, client education memos, advisor talking points, risk reminders, meeting agendas, or Busabase approval batches. Block personalized investment advice, suitability conclusions, performance promises, tax/legal advice, and any trade or money movement.
## Boundary
- - The skill may browse public/current sources, reason over buyer intent, draft actions/content, validate schemas, and write local handoff files.
- - The app reads and writes local files only. It must never post content, send WhatsApp/email, mutate CRMs, scrape private systems, spend money, or perform external side effects.
+ - The skill may browse public/current sources, reason over buyer intent, draft actions/content, and write signal/action/draft/source records to Busabase.
+ - The AirApp reads and writes its own Busabase Bases only. It must never post content, send WhatsApp/email, mutate CRMs, scrape private systems, spend money, or perform any other external side effect.
- Customer-visible drafts, regulated claims, pricing promises, medical/financial/legal advice, and outbound messages are approval-required.
- - Store only the minimal source excerpts needed for review. Do not commit `config.local.json`, env files, `app/.data/`, exports, screenshots of private sources, or raw customer data.
-
- ## First Run And Onboarding
+ - Store only the minimal source excerpts needed for review. Never store crawl credentials or API keys in Busabase.
+ - Block personalized investment advice, suitability conclusions, performance promises, tax/legal advice, and any trade or money movement.
- On invocation, check `app/.data/onboarding.json` and private config readiness. If onboarding is absent/incomplete, guide setup before doing real monitoring.
+ ## Busabase Resources
- Ask for non-secret setup details only:
+ Five Bases under one application Folder (`kelly-financial-services-intel`), declared in
+ `app/app/js/config.js` and `app/resource-map.json`:
- - company/brand name, geography, language, and customer segment;
- - 3-10 public source URLs or source categories to monitor;
- - competitor names/URLs;
- - approved offer, CTA, and forbidden claims;
- - preferred channels among client memo, internal brief, advisor script;
- - whether Busabase should be the review provider later.
+ - `signals`: source-backed regulatory, macro, market, portfolio-theme, and buyer-intent signals — evidence link, why-it-matters, buyer-intent interpretation, confidence, risk badges, a suggested action, and the human decision verdict.
+ - `actions`: approved/blocked/reviewable internal brief, client education, or operating actions linked to signals, with owner, priority, reason, next step, and the human decision verdict.
+ - `drafts`: editable channel drafts (client memo / internal brief / advisor script) tied to an approved action; a human edit is stored as `edited-body` on the same row, never a separate file.
+ - `sources`: configured regulator/exchange/market-news/competitor/trend source categories, freshness, and coverage gaps.
+ - `settings`: one row (`record-id: "batch"`) holding the current batch's metadata (`batch_id`, `generated_at`, `source`, `vertical`, `buyer`, `offer`) as a JSON payload.
- Never ask for API keys or platform tokens in chat. Secrets belong in env files only.
+ Resources provision lazily through an idempotent Busabase ChangeRequest the
+ first time the app runs in a Space; see `references/ui-schema.md` for exact
+ field shapes.
- When setup is complete and the user confirms, write `app/.data/onboarding.json`:
+ ## First Run And Onboarding
- ```json
- {
- "completed": true,
- "completed_at": "ISO timestamp",
- "config_version": "1"
- }
- ```
+ On invocation, check the `signals`, `actions`, and `drafts` Bases. If all
+ are empty, guide setup before collecting a real batch: ask for
+ company/brand name, geography, language, and customer segment; 3-10 public
+ source URLs or source categories to monitor; competitor names/URLs;
+ approved offer, CTA, and forbidden claims; preferred channels among client
+ memo, internal brief, advisor script. Never ask for API keys or platform
+ tokens in chat — Busabase connection happens through the app's own Connect
+ Busabase gate.
## Local App
- Start the cockpit with:
-
- ```bash
- skills/kelly-financial-services-intel/app/start.sh
- ```
-
- The app uses local HTTP on `127.0.0.1`, preferring port `3000` through `4000`, or `KELLY_FINANCIAL_SERVICES_INTEL_UI_PORT` when set.
+ Default behavior is AirApp-first — give the user the clickable AirApp URL.
+ Start `pnpm --dir app dev` only when local preview/debugging is explicitly
+ requested.
- Required views:
+ Required app views (hash routes):
- - `#/overview`: human-attention panel, today's top signals, ready actions, blocked items, and source coverage.
- - `#/signals` and `#/signals/<id>`: source-backed signals with evidence links, buyer-intent interpretation, confidence, risk badges, and suggested next action.
- - `#/actions` and `#/actions/<id>`: approved/blocked/reviewable operating or sales actions.
- - `#/drafts` and `#/drafts/<id>`: editable client memo, internal brief, advisor script drafts with approve/request-changes/block decisions.
+ - `#/overview`: human-attention panel — today's needs-review/approved/blocked counts, top signals, and ready (approved) actions.
+ - `#/signals` and `#/signals/<id>`: source-backed signals with evidence links, buyer-intent interpretation, confidence, risk badges, and a decision panel (Approve / Request changes / Block) with a review note.
+ - `#/actions` and `#/actions/<id>`: approved/blocked/reviewable operating or sales actions with owner, priority, reason, next step, linked signals, and the same decision panel.
+ - `#/drafts` and `#/drafts/<id>`: editable client memo, internal brief, advisor script drafts with the decision panel plus a `Save revision` action that writes an edited body directly onto the draft record.
- `#/sources`: configured source categories, freshness, and gaps.
- - `#/settings`: sanitized config summary, onboarding state, provider, language, and accent color.
+ - `#/settings`: sanitized batch metadata, data provider, onboarding state.
Demo mode:
- `?demo=1`, `?demo=overview`, `?demo=signals`, `?demo=actions`, `?demo=drafts`, and `?demo=detail` load deterministic demo data.
- `lang=en` or `lang=zh` forces UI chrome language.
- - Demo API responses never read/write `app/.data/` or private config.
-
- ## File Contract
-
- Read `references/ui-schema.md` before changing the app, scripts, or generated JSON.
-
- - `app/.data/current_batch.json`: current intelligence batch.
- - `app/.data/decisions.json`: user verdicts and edits keyed by item id.
- - `app/.data/agent_tasks.json`: queued agent work for requested changes or missing evidence.
- - `app/.data/execution_report.json`: dry-run/apply handoff report.
- - `app/.data/onboarding.json`: setup marker.
- - `app/.data/agent.lock`: temporary lock while the skill writes files.
-
- Validate with:
-
- ```bash
- node skills/kelly-financial-services-intel/scripts/validate_ui_schema.ts skills/kelly-financial-services-intel/app/.data/current_batch.json
- ```
+ - Demo mode never reads or writes Busabase; decisions only mutate the in-memory demo batch.
- ## Normal Workflow
+ ## Batch Workflow
1. Detect mode. Default to App UI.
2. Browse or otherwise collect current public evidence. For news/trends, use exact dates and source URLs.
3. Build one narrow buyer scene, not a generic AI report.
- 4. Write a batch with signals, actions, drafts, and source coverage. Keep every item tied to evidence or mark it blocked.
- 5. Validate the batch.
- 6. Launch the UI for review.
- 7. Poll `agent_tasks.json` for requested changes and revise only those items.
- 8. On "execute/export approved", re-read decisions and run `scripts/execute_decisions.ts` first as a dry run. Apply only after explicit confirmation.
+ 4. Write the batch directly into Busabase through `busabase-sdk` (`bases.createChangeRequest` for each new signal/action/draft/source row, matching the field slugs in `references/ui-schema.md`; refresh the `settings` "batch" row's JSON payload with `batch_id`/`generated_at`/`source`/`vertical`/`buyer`/`offer`). Keep every item tied to evidence or mark it `blocked`.
+ 5. Open the AirApp for review.
+ 6. Poll for `request_changes` decisions (`decision-verdict` = `request_changes` on a signal/action/draft row) and revise only those items — write the revision back onto the same record.
+ 7. On "execute/export approved", run `node scripts/execute_decisions.mjs` first as a dry run. After performing any real handoff, run `node scripts/execute_decisions.mjs --apply` to mark the approved items done.
+ ## Decisions Workflow
+
+ 1. Kelly's verdicts write directly onto the item record (`status`,
+ `decision-verdict`, `decision-comment`, `decided-at`) 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. Before executing anything, run `node scripts/execute_decisions.mjs`
+ (dry-run). It prints the concrete operation for every decided
+ signal/action/draft: `mark_signal_approved`, `export_action_plan`, or
+ `handoff_content_pack` for an `approve` verdict; `queue_agent_revision`
+ for `request_changes`; `mark_blocked` for `block`; `save_human_revision`
+ for a draft's `revise`.
+ 3. After Kelly confirms the dry-run and performs the handoff somewhere
+ outside this script, run `node scripts/execute_decisions.mjs --apply` to
+ mark the approved items `done`. `request_changes`/`block` verdicts are
+ left exactly as decided — there is nothing further for the script to do.
+
## Safety Defaults
- Treat outbound messages, regulated claims, medical/financial/legal advice, pricing promises, and publishing as approval-required.
- If source evidence is weak, mark the item `blocked` or lower confidence instead of pretending.
- Preserve source language unless the workflow asks for translation.
- - Use Busabase as the later shared review provider when the workflow needs team approvals; local files remain the reference implementation.
+ - Keep every write idempotent by upserting on the item's own id field so re-running a collection pass never duplicates rows.
+ - Block personalized investment advice, suitability conclusions, performance promises, tax/legal advice, and any trade or money movement.
+
+ ## Useful Commands
+
+ ```bash
+ node skills/kelly-financial-services-intel/scripts/execute_decisions.mjs
+ node skills/kelly-financial-services-intel/scripts/execute_decisions.mjs --apply
+ pnpm --dir skills/kelly-financial-services-intel/app dev
+ ```