Kelly agent observability
Busabase App-in-Skill dashboard visualizing a generated MOCK fleet of LLM agents running behind a shared AI gateway for a generic organization. Use when the user invokes $kelly-agent-observability or /kelly-agent-observability, wants to review agent health, call volume, latency, error rates, cost, or trace-level chain breaks across an agent fleet. This is a demo/reference dashboard over a generated mock fleet snapshot seeded into Busabase by a trusted script — never a live monitoring integration, never a real gateway or real agents.From its SKILL.md
npx -y skills add mr-kelly/skills --skill kelly-agent-observabilityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
10.5 KB, as published. Nobody here has run it
Agent Fleet Observability Desk
Overview
Kelly Agent Observability 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 gives an operator a read-mostly dashboard over a MOCK fleet of LLM agents running behind a shared AI gateway for a generic organization: per-agent call volume, latency (p50/p95), error/failure rate, cost, an hourly call-volume sparkline, and a Trace Detail view that highlights exactly where a chain of tool calls broke.
This skill was never a live monitoring integration, even before this
conversion — there is no real gateway, no real agents, and no real telemetry
anywhere. The fleet snapshot (agents + metrics + traces) is generated by a
deterministic, seeded function and written into Busabase by a trusted
skill-root script (scripts/generate_fleet_data.mjs); the AirApp itself only
ever reads whatever was last generated there. The only human action is
narrow: append an "acknowledge" / "needs investigation" handoff note to an
agent or trace — always a brand-new row in the handoffs Base, never a field
update on the agent/trace's own record.
Default behavior is AirApp-first. Unless the user explicitly asks only for
explanation, ensure the mock fleet exists (run the seed script below if the
agents Base is empty) 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. Use
chat-only mode only when the user says "纯聊天", "chat only", "no UI", or
similar.
This is deliberately generic and brand-free: agent names are generic archetypes (Booking Assistant, Support Triage, etc.) for a generic organization ("your organization", "the fleet") — no real company or product appears anywhere in the code, config, or seed data.
Mandatory Dependencies
- Read and follow
$kelly-app-skill-creatorfor product behavior, visual quality, responsive layout, and the complete canonicalcontent/kelly-agent-observability-app/artifact. - Read and follow
$busabasefor connection, target Space, node discovery, ChangeRequests, review, and merge behavior. - Read and follow
$busabase-app-creatorfor resource modeling, AirApp runtime limits, security, validation, and deployment.
If a dependency is unavailable, preserve this skill's artifact and product contracts, stop before the unavailable Busabase operation, and report the exact missing dependency. Do not invent a second data backend.
App UI Screenshots
<table> <tr> <td width="50%"><img src="assets/screenshots/overview.webp" alt="Fleet overview"></td> <td width="50%"><img src="assets/screenshots/agent-health.webp" alt="Agent health table"></td> </tr> <tr> <td><strong>Fleet Overview</strong><br>Total calls, total cost, degraded/critical/healthy agent counts, and a per-agent sparkline card grid.</td> <td><strong>Agent Health</strong><br>Sortable table with call volume, p50/p95 latency, error rate, cost, and a status badge per agent.</td> </tr> <tr> <td width="50%"><img src="assets/screenshots/trace-detail.webp" alt="Trace detail with chain break"></td> <td width="50%"><img src="assets/screenshots/overview.zh-CN.webp" alt="Fleet overview in Chinese"></td> </tr> <tr> <td><strong>Trace Detail</strong><br>Ordered step timeline for one trace; the step where the chain broke is visually flagged.</td> <td><strong>Chinese UI</strong><br>Full zh-CN chrome via the language toggle or <code>lang=zh</code>.</td> </tr> </table>Boundary
- Read-mostly dashboard over a generated mock fleet. NEVER contact any real agent gateway, LLM provider, or third-party API. There is no live monitoring integration in this skill by design.
- Agents and traces are never created or edited by the AirApp; they enter
Busabase only through the trusted
scripts/generate_fleet_data.mjsseed script, the same waykelly-portfolio-health's contracts enter through an external sync process the app doesn't control. - The only Base the AirApp itself ever writes to is
handoffs, and only ever by creating a brand-new row (an acknowledge / needs-investigation note) — never a field update on an agent or trace record. - Never reference any real company, brand, or production system. Agent names are generic archetypes for a generic organization ("your organization", "the fleet").
Busabase Resources
Four Bases under one application Folder (kelly-agent-observability),
declared in content/kelly-agent-observability-app/app/js/config.js and the generated template sidecars under content/:
agents: one row per mock agent archetype (8 rows) — identity plus the latest rolled-up health metrics (status, call volume, p50/p95 latency, error rate, cost) and a 48h hourly call/error series (JSON array). Written only by the trusted generator script.traces: one row per mock trace (ordered tool-call chain), capped to fit under the 100-record read limit (8 agents × 10 traces = 80 by default).steps(JSON array) carries the ordered timeline;broke-at-step-idflags exactly where a broken chain stopped. Written only by the trusted generator script.handoffs: append-only human-in-the-loop log — an acknowledge / needs-investigation note against one agent or trace. The only Base the AirApp itself ever writes to.settings: sanitized fleet-generation metadata (schema version, seed, generated-at), one row keyed bykind.
Resources provision lazily through an idempotent Busabase ChangeRequest the
first time the app runs in a Space; see references/fleet-schema.md for
exact field shapes.
First Run And Onboarding
On invocation, check the agents Base. If it's empty, run the trusted seed
script to generate the mock fleet:
node skills/kelly-agent-observability/scripts/generate_fleet_data.mjs --apply
There are no credentials to collect — this skill never calls an external system, so onboarding is just running the seed script once.
Local App
Default behavior is AirApp-first — give the user the clickable AirApp URL.
Start pnpm --dir content/kelly-agent-observability-app dev only when local preview/debugging is explicitly
requested.
Required app views (hash routes):
#/overview: total calls (24h), total cost (today), degraded/critical/ healthy agent counts, and a per-agent card grid with a call-volume sparkline.#/agents: sortable Agent Health table (call volume, p50/p95 latency, error rate, cost, status badge).#/agents/<agent_id>: agent detail — metrics, sparkline, recent traces, and a handoff form (acknowledge / needs investigation).#/traces/<trace_id>: trace detail — ordered step timeline with the chain-break step visually flagged, and a handoff form.#/handoffs: history of recorded handoffs.#/settings: data provider and status-threshold summary.
Demo Mode
?demo=1opens a deterministic, fully offline mock fleet (8 agents, 48h of hourly buckets, 16 traces per agent) for documentation and screenshots. It never reads or writes Busabase and never claims a real connection; demo handoff submissions only update the in-memory list already rendered.?demo=agentsand?demo=traceselect named mock scenes (agent health table, a broken trace).lang=enorlang=zhforces UI chrome language for screenshots.
UI language: support English and Chinese chrome with Auto default.
Fleet Generation Model
content/kelly-agent-observability-app/app/js/fleet-model.js (generateFleetData/summarizeFleet) is ported
verbatim from the retired lib/generate.ts:
- Per-agent profile — a fixed "personality" (volume, latency base/jitter, error tendency, cost per call) per agent archetype, so the fleet reads as varied, not random noise.
- Hourly buckets — 48 hours of calls/errors per agent on a business-hours-ish curve, seeded per agent.
- Status —
statusFor(error_rate_pct, p95_latency_ms):criticalat error rate ≥ 8% or p95 ≥ 8000ms,degradedat ≥ 3% or ≥ 4000ms, elsehealthy. - Traces — an ordered tool-call chain per trace; a trace can "break" mid
chain (
status: error,broke_at_step_idset to the last step), with the break probability tied to the agent's error tendency.
Same seed + same "now" + same tracesPerAgent always produces bit-identical
output — this is the property scripts/generate_fleet_data.mjs and the demo
provider both rely on.
Handoffs
The one human action — acknowledge or flag "needs investigation" on an agent
or trace, with a free-text note — writes a brand-new row into the handoffs
Base via busabase-sdk, never a field update on the agent/trace record
itself:
- 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, per the AirApp boundary in
$busabase-app-creator.
Safety
- Never invent a real incident or real company data; this is illustrative mock telemetry only.
- Keep all writes scoped to the
handoffsBase. No external network calls anywhere in this skill. - Redact nothing sensitive is collected here — there are no credentials in this skill.
Useful Commands
node skills/kelly-agent-observability/scripts/generate_fleet_data.mjs --apply
pnpm --dir skills/kelly-agent-observability/content/kelly-agent-observability-app dev
Execution reports
Re-read the active provider's decisions immediately before any approved execution. Record each concrete operation, target, status, timestamp, and error in the provider-backed execution report; keep app actions local-only.
What ships with it: 42 files
140.3 KB alongside SKILL.md, 16 of them executable
agents/
- openai.yaml251 B
app/
- accent-theme.css7.5 KB
- accent-theme.jsruns7.3 KB
- app.jsruns25.6 KB
- i18n/en.json2.7 KB
- i18n/messages.jsruns599 B
- i18n/zh-CN.json2.8 KB
- index.html4.2 KB
- server/demo.tsruns971 B
- server/hono.tsruns6.1 KB
- server/index.tsruns773 B
- server/launcher.tsruns2.9 KB
- server/paths.tsruns826 B
- server/setup.tsruns6.3 KB
- server/store.tsruns3.0 KB
- setup-gate.css4.5 KB
- setup-gate.jsruns8.8 KB
- start.shruns721 B
- styles/layers.css24 B
- styles/shell.css23.9 KB
- styles/workflow.css5.9 KB
assets/
- screenshots/agent-health.webp130 B
- screenshots/agent-health.zh-CN.webp130 B
- screenshots/handoff.webp130 B
- screenshots/overview.webp130 B
- screenshots/overview.zh-CN.webp130 B
- screenshots/thumbs/agent-health.webp130 B
- screenshots/thumbs/agent-health.zh-CN.webp130 B
- screenshots/thumbs/handoff.webp130 B
- screenshots/thumbs/overview.webp130 B
- screenshots/thumbs/overview.zh-CN.webp130 B
- screenshots/thumbs/trace-detail.webp130 B
- screenshots/trace-detail.webp130 B
lib/
- generate.tsruns11.2 KB
- types.tsruns1.9 KB
references/
- fleet-schema.md2.3 KB
- config.example.json279 B
- .gitignore132 B
- package.json708 B
- README.md4.7 KB
2 more files not listed here. See all 42 in the repository.
Gives 0 of the 12 instructions most context ai engineering skills give
Counted across 1,328 of the 2,349 authors here whose files we hold, read 2026-09-06
- Dispatch a fresh subagent for each taskin 76 of 1328, across 59 files
- Perform spec compliance review before code quality reviewin 44 of 1328, across 34 files
- Dispatch a final code reviewer after all tasksin 38 of 1328, across 26 files
- Answer subagent questions before allowing implementationin 36 of 1328, across 26 files
- Use the least powerful model capable of the taskin 33 of 1328, across 26 files
- Create a TodoWrite list for all tasksin 32 of 1328, across 22 files
- Perform a task review after each implementationin 31 of 1328, across 24 files
- Extract all tasks and context from the planin 29 of 1328, across 20 files
- Provide full task text to subagentsin 28 of 1328, across 20 files
- Use git worktrees for isolated workspacesin 25 of 1328, across 20 files
- Specify the model explicitly when dispatching a subagentin 23 of 1328, across 18 files
- Execute all tasks from the plan without stoppingin 21 of 1328, across 16 files
Said here and by no other author read
- Check if agents base is empty on invocation
- Run seed script if agents base is empty
- Provide clickable airapp url to user
- Start local preview only when explicitly requested
- Append handoff notes as new rows in handoffs base
- Support english and chinese ui chrome
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.