feat(appkit): Agent Skills v1 — SKILL.md progressive disclosure (SDK, 1/2 of #532) - #543
feat(appkit): Agent Skills v1 — SKILL.md progressive disclosure (SDK, 1/2 of #532)#543MarioCadenas wants to merge 3 commits into
Conversation
SDK half of #532 (split 1/2). Skills engine (parse/load/resolve/render/read), agent-definition skills: wiring, agents-plugin integration (load_skill + read_skill_file tools, catalog resolution, clientConfig), the appkit-ui useAgentChat /skill surface, and docs. Playground/template fixtures follow in 2/2. Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
📦 Bundle size reportCompared against
|
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 959 KB (+54 KB) | 334 KB (+17 KB) |
| Type declarations | 352 KB (+7.7 KB) | 123 KB (+3.0 KB) |
| Source maps | 1.9 MB (+100 KB) | 625 KB (+29 KB) |
| Other | 11 KB | 3.7 KB |
| Total | 3.2 MB (+162 KB) | 1.1 MB (+49 KB) |
Per-entry composition (own code — deps external (as shipped))
| Entry | Initial (gz) | Lazy (gz) | Total (gz) | node_modules (min) | Own code (min) |
|---|---|---|---|---|---|
. |
93 KB (+4.9 KB) | 2.5 KB | 96 KB (+4.9 KB) | external | 306 KB (+17 KB) |
./beta |
61 KB (+11 KB) | 457 B | 61 KB (+11 KB) | external | 182 KB (+35 KB) |
./testing |
17 KB | 0 B | 17 KB | external | 50 KB |
./tsdown |
520 B | 0 B | 520 B | external | 813 B |
./type-generator |
21 KB | 0 B | 21 KB | external | 61 KB |
Chunks:
| Entry | Chunk | Load | Size (gz) |
|---|---|---|---|
. |
index.js |
initial | 89 KB |
. |
utils.js |
initial | 4.0 KB |
. |
remote-tunnel-manager.js |
lazy | 2.5 KB |
./beta |
beta.js |
initial | 45 KB |
./beta |
stream-manager.js |
initial | 5.8 KB |
./beta |
wide-event-emitter.js |
initial | 3.2 KB |
./beta |
databricks.js |
initial | 3.0 KB |
./beta |
configuration.js |
initial | 2.1 KB |
./beta |
service-context.js |
initial | 1.3 KB |
./beta |
client.js |
initial | 434 B |
./beta |
client-options.js |
initial | 220 B |
./beta |
supervisor-api.js |
lazy | 192 B |
./beta |
databricks.js |
lazy | 142 B |
./beta |
index.js |
lazy | 123 B |
./testing |
index.js |
initial | 17 KB |
./tsdown |
index.js |
initial | 520 B |
./type-generator |
index.js |
initial | 21 KB |
@databricks/appkit-ui
npm tarball (packed): 349 KB (+889 B) — gzipped download (dist + bin; excludes release-only docs/NOTICE).
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 394 KB (+560 B) | 132 KB (+250 B) |
| Type declarations | 229 KB (+332 B) | 84 KB (+139 B) |
| Source maps | 765 KB (+1.4 KB) | 253 KB (+559 B) |
| CSS | 16 KB | 3.2 KB |
| Total | 1.4 MB (+2.3 KB) | 472 KB (+948 B) |
Per-entry composition (consumer bundle — deps bundled, peerDeps external)
| Entry | Initial (gz) | Lazy (gz) | Total (gz) | node_modules (min) | Own code (min) |
|---|---|---|---|---|---|
./js |
5.3 KB | 49 KB | 55 KB | 208 KB | 14 KB |
./js/beta |
20 B | 0 B | 20 B | 0 B | 0 B |
./react |
432 KB (+144 B) | 49 KB | 481 KB (+144 B) | 1.3 MB | 177 KB (+258 B) |
./react/beta |
1.0 KB | 0 B | 1.0 KB | 0 B | 1.9 KB |
Chunks:
| Entry | Chunk | Load | Size (gz) |
|---|---|---|---|
./js |
index.js |
initial | 5.2 KB |
./js |
chunk |
initial | 120 B |
./js |
apache-arrow |
lazy | 49 KB |
./js/beta |
beta.js |
initial | 20 B |
./react |
index.js |
initial | 430 KB |
./react |
tslib |
initial | 2.1 KB |
./react |
apache-arrow |
lazy | 49 KB |
./react/beta |
beta.js |
initial | 1.0 KB |
template/appkit.plugins.json is generated from the plugin manifests; it must travel with the agents manifest.json change (skills volume resource) or CI's sync:template check fails. Was mis-bucketed into the 2/2 fixtures PR. Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
🤖 AppKit PR bot🔬 Run evalsStart an eval for this PR from the evals-monitor app: Go to Evals Monitor → 📦 Try this PR's app templateScaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh run download 32488765156 -R databricks/appkit -n appkit-template-0.64.0-pr.04f9fc9-split-532-sdk-feature-543 -D appkit-pr-543 \
&& unzip -o "appkit-pr-543/appkit-template-0.64.0-pr.04f9fc9-split-532-sdk-feature-543.zip" -d "appkit-pr-543" \
&& databricks apps init --template "appkit-pr-543"The template pins |
Review follow-ups on #543: - parallelize UC-volume skill reads (network-bound) via Promise.all; per-skill failures still skip individually and sorted order is preserved - extract the useAgentChat slash-command parse into a named resolveSkill helper (appkit-ui) - delete 18 stale biome-ignore comments — post-oxlint migration, and no-explicit-any is off in .oxlintrc.json, so they suppressed nothing Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
|
Collapsed into #547 for an easier review/merge handoff while I'm on vacation. #547 now contains the Skills SDK (this PR), the playground/template fixtures (#544), and the agents-plugin refactor, based directly on |
Summary
SDK half of #532 (Agent Skills v1), split 1 of 2. Runtime SKILL.md progressive disclosure for the
agentsplugin.core/agent/skills/): parse, load, resolve-catalog, render, read-resource, typesskills:frontmatter on agent defs (frontmatter.ts,load-agents.ts,types.ts)plugins/agents/):load_skill/read_skill_filebuilt-in tools; catalog resolution (per-agent auto-visible + global opt-in + collision → qualifiedagent:/bundle:names);clientConfigskill catalogappkit-uiuseAgentChat/skillautocompleteplugins/agents.md+ generated API refsMerge order
Merges first (no dependencies). PR 2/2 (playground + template fixtures) stacks on this branch and auto-retargets to
mainonce this merges.Split from #532
Cleanly rebased onto current
main— includes #485 (defineManifest), merged intoagents.ts. Verified locally:pnpm --filter=@databricks/appkit typecheck→ exit 0, 0 errors.25 files: appkit + appkit-ui source/tests + docs.