Skip to content

feat(appkit): Agent Skills v1 — SKILL.md progressive disclosure (SDK, 1/2 of #532) - #543

Closed
MarioCadenas wants to merge 3 commits into
mainfrom
split/532/sdk-feature
Closed

feat(appkit): Agent Skills v1 — SKILL.md progressive disclosure (SDK, 1/2 of #532)#543
MarioCadenas wants to merge 3 commits into
mainfrom
split/532/sdk-feature

Conversation

@MarioCadenas

Copy link
Copy Markdown
Collaborator

Summary

SDK half of #532 (Agent Skills v1), split 1 of 2. Runtime SKILL.md progressive disclosure for the agents plugin.

  • Skills engine (core/agent/skills/): parse, load, resolve-catalog, render, read-resource, types
  • Agent-definition wiring: skills: frontmatter on agent defs (frontmatter.ts, load-agents.ts, types.ts)
  • Plugin integration (plugins/agents/): load_skill / read_skill_file built-in tools; catalog resolution (per-agent auto-visible + global opt-in + collision → qualified agent:/bundle: names); clientConfig skill catalog
  • Client surface: appkit-ui useAgentChat /skill autocomplete
  • Docs: plugins/agents.md + generated API refs

Merge order

Merges first (no dependencies). PR 2/2 (playground + template fixtures) stacks on this branch and auto-retargets to main once this merges.

Split from #532

Cleanly rebased onto current main — includes #485 (defineManifest), merged into agents.ts. Verified locally: pnpm --filter=@databricks/appkit typecheck → exit 0, 0 errors.

25 files: appkit + appkit-ui source/tests + docs.

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>
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

📦 Bundle size report

Compared against bundle-size-baseline.json (main).

@databricks/appkit

npm tarball (packed): 931 KB (+44 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

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>
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

🤖 AppKit PR bot

🔬 Run evals

Start an eval for this PR from the evals-monitor app: Go to Evals Monitor →

📦 Try this PR's app template

Scaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh auth login — and the Databricks 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 @databricks/appkit and @databricks/appkit-ui to tarballs built from this branch, so the scaffolded app runs against this PR's code.

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>
@MarioCadenas

Copy link
Copy Markdown
Collaborator Author

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 main — one squash-merge instead of a 3-PR stack that would each need a rebase under this repo's squash-only merge. Commits preserved in #547.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant