Kelly agent builder
Public 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. Local mock config/governance UI only — it never provisions or calls any real agent.From its SKILL.md
npx -y skills add mr-kelly/skills --skill kelly-agent-builderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 4 stars4 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.
- runs commandsInstructs the agent to run 2 commands, including `skills/kelly-agent-builder/app/start.sh` and 1 more.
SKILL.md
6.6 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
Agent Builder & Governance Console
Overview
Use this skill as a platform team's local, file-backed governance console for a
catalog of mock agent configs. It never provisions or calls a real agent —
every action reads or writes a local JSON handoff file under app/.data/. This
is a generic, brand-free tool: teams define a name, a trigger/intent
description, a set of allowed tools (from a fixed catalog), an approval flag,
and a monthly call quota, and this console tracks status and usage and gates
the risky transition (draft → live) behind required-field validation.
Default interaction mode: App UI. Unless the user explicitly asks for
chat-only handling, start/reuse the local app with app/start.sh and give the
actual local URL.
App UI Screenshots
<table> <tr> <td width="50%"><img src="assets/screenshots/overview.webp" alt="Agent Builder overview"></td> <td width="50%"><img src="assets/screenshots/catalog.webp" alt="Agent Builder catalog"></td> </tr> <tr> <td><strong>Overview</strong><br>Governance summary: live agent count, aggregate quota usage, and a list of agents that need attention with reasons.</td> <td><strong>Catalog</strong><br>Sortable, searchable table of every agent config with status badges, owning team, and quota usage.</td> </tr> <tr> <td width="50%"><img src="assets/screenshots/agent-detail.webp" alt="Agent Builder agent detail"></td> <td width="50%"></td> </tr> <tr> <td><strong>Agent detail / edit</strong><br>Tool checklist, quota input, approval toggle, owning team field, trigger/intent textarea, status, and lifecycle actions (activate / pause / archive).</td> <td></td> </tr> </table>Boundary
- This is a mock governance console. It never provisions, deploys, or
calls any real agent, model, or external tool. The "allowed tools" checklist
is a fixed local catalog (
lib/tool-catalog.ts) used only for governance bookkeeping — selecting a tool here does not grant or invoke it anywhere. - The app reads and writes local files only:
app/.data/agents.json,app/.data/onboarding.json,app/.data/agent.lock. It must not call any remote system. - No brand-specific integration exists or is implied. Configure
org_nameinconfig.local.jsonfor cosmetic display only.
First Run
On invocation, start/reuse the local app with:
skills/kelly-agent-builder/app/start.sh
First run installs hono and @hono/node-server; the frontend is zero-build
vanilla. If app/.data/agents.json does not exist yet, seed a mock catalog
with:
node skills/kelly-agent-builder/scripts/generate_demo_snapshot.ts
This also writes the app/.data/onboarding.json completion marker — this
skill has no external accounts or secrets to configure, so seeding the mock
catalog for the first time is itself "setup complete."
Demo Mode
?demo=1opens a deterministic, fully offline mock catalog (8 agent configs spanning draft/live/paused/archived, one over-quota, one missing an owning team) for documentation and screenshots.lang=enorlang=zhforces UI chrome language for screenshots.- Demo API responses never read or write
app/.data/agents.json.
UI language: support English and Chinese chrome with Auto default.
Governance Rules
Read references/agent-config-schema.md before editing the app, store, or scripts. In
short:
- Draft → live (
POST /api/agents/:id/activate) is only allowed whenname,trigger_description, at least oneallowed_toolsentry, non-emptyowning_team, andmonthly_quota > 0are all present. This is enforced server-side inapp/server/store.ts#activateAgent; on failure the API returns422withmissing_fieldsand the UI surfaces the exact reason. - Archive (
POST /api/agents/:id/archive) is allowed from any status. Archived agents become read-only (PUTreturns409). - Pause (
POST /api/agents/:id/pause) is only allowed fromlive. - Needs attention = a draft with missing required fields, OR an agent
(any status) with no owning team, OR a quota-reached live agent
(
calls_this_month >= monthly_quota— reached, not strictly exceeded), ORapproval_required: truewith no owning team assigned. - PUT validation: a
PUTthat would leave an already-liveagent missing any required field (e.g. clearingowning_teamorallowed_tools) is rejected with422+missing_fields, the same gateactivateuses. Draft agents remain freely editable.
All writes persist to app/.data/agents.json; there is no approval workflow
beyond this local file and no outbound network call anywhere in this skill's
app.
Local App
app/index.html+app/app.js+app/styles.css+app/i18n/messages.js: zero-build vanilla frontend with hash routing (#/overview,#/catalog,#/agent/:id,#/agent/new,#/settings).app/server/hono.ts: platform-neutral Hono routes for state, tool catalog, and agent CRUD/lifecycle actions.app/server/store.ts: status derivation, CRUD/lifecycle helpers, and the read/write surface, all delegated tolib/data-provider/(nevernode:fsdirectly).lib/config-validation.ts: pure governance rules (missingRequiredFields,isQuotaReached,deriveAgent) shared by the server andscripts/.lib/data-provider/: theDataProvidercontract (provider-interface.ts) and the defaultlocal-file-provider.ts; selected viaKELLY_AGENT_BUILDER_DATA_PROVIDER(defaultlocal).lib/tool-catalog.ts: the fixed tool catalog (web_search,code_exec,file_read,file_write,send_email,calendar,crm_lookup,db_query,slack_post,http_request).
Safety
- Never provision or call a real agent, tool, or external system from this skill's app.
- Do not commit
config.local.json,app/.data/, orapp/.cache/. - Keep
owning_teamvalues as free text; do not validate against a real directory service.
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: 36 files
132.2 KB alongside SKILL.md, 15 of them executable
agents/
- openai.yaml268 B
app/
- app/accent-theme.css7.5 KB
- app/accent-theme.jsruns7.3 KB
- app/app.jsruns20.2 KB
- app/connect-gate.css5.3 KB
- app/i18n/messages.jsruns4.4 KB
- app/index.html4.1 KB
- app/js/agent-model.jsruns5.5 KB
- app/js/busabase-client.jsruns226 B
- app/js/config.jsruns2.4 KB
- app/js/connect-gate.jsruns9.1 KB
- app/js/providers/busabase-provider.jsruns10.0 KB
- app/js/providers/demo-provider.jsruns4.8 KB
- app/js/providers/index.jsruns270 B
- app/js/resource-provisioning.jsruns10.0 KB
- app/js/tool-catalog.jsruns1.3 KB
- app/styles.css15.1 KB
- package.json891 B
- resource-map.json426 B
- scripts/check.mjsruns1.7 KB
- server.jsruns10.4 KB
- test/agent-model.test.mjsruns3.1 KB
assets/
- screenshots/agent-detail.webp130 B
- screenshots/agent-detail-zh-CN.webp130 B
- screenshots/catalog.webp130 B
- screenshots/catalog-zh-CN.webp130 B
- screenshots/overview.webp130 B
- screenshots/overview-zh-CN.webp130 B
- screenshots/thumbs/agent-detail.webp129 B
- screenshots/thumbs/agent-detail-zh-CN.webp129 B
- screenshots/thumbs/catalog.webp130 B
- screenshots/thumbs/catalog-zh-CN.webp130 B
- screenshots/thumbs/overview.webp129 B
- screenshots/thumbs/overview-zh-CN.webp129 B
references/
- agent-config-schema.md3.6 KB
- README.md2.9 KB