Skip to content

feat: ship the kagent-tools skills with a k8s-agent, and add skills to the agent template form - #3554

Open
danielle-mustillo wants to merge 6 commits into
mainfrom
danielle-mustillo/k8s-agent-skills
Open

danielle-mustillo wants to merge 6 commits into
mainfrom
danielle-mustillo/k8s-agent-skills

Conversation

@danielle-mustillo

@danielle-mustillo danielle-mustillo commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Why

A new kagent install has no example agent and no skills to start from, and the UI has no way to add a skill to an agent. Today skills can only be set with kubectl.

What changed

Built-ins in the chart. A new builtins values group gives a new install a starting point:

  • builtins.harness: a Go ADK Harness named kagent on the chart's worker pool.
  • builtins.k8sAgent: an Agent named k8s-agent on that Harness. It uses the kagent-tools Kubernetes tools and the k8s-troubleshooting skill. Tools that change the cluster wait for approval.
  • builtins.skills: the skills the UI offers. builtins.skills.image with builtins.skills.list offers skills from another image instead.
  • builtins.enabled: false turns all three off. Each also has its own enabled.

The Harness and the Agent need substrateWorkerPool.create, which kagent install sets.

Skills come from kagent-tools. kagent does not build a skills image of its own.

  • The kagent-tools dependency goes from 0.3.0 to 0.3.1, the first release that ships skills, so the skills match the tool server the chart deploys.
  • The UI offers three of them: k8s-troubleshooting, helm-release-management and istio-traffic-debugging. The image's other skills need Argo Rollouts, Cilium, Kubescape or Prometheus, so the list leaves them out.
  • helm/kagent/files/builtin-skills.json holds the list and the kagent-tools image pinned by digest. make builtin-skills-catalog regenerates it from the image.
  • The chart passes the list to the UI as KAGENT_UI_BUILTIN_SKILLS. global.imageRegistry mirrors the image.

Skills in the agent template form.

  • A user can pick a built-in skill, or add their own from an OCI image (pinned by digest), Git (URL and full commit) or S3 (with object version), with an optional path.
  • Saving writes spec.skills. The form rejects what the CRD or the runtime would reject, and each message names the skill.
  • A built-in skill saved from an older kagent-tools image shows "Older version" and an Update button.
  • plugins and promptTemplate, which the form does not show, are kept on save.

Limits

  • A Git or S3 skill source keeps an Agent from becoming Ready until fix(substrate): let the golden actor fetch git and S3 skill sources #3435 merges. The form offers them anyway.
  • A skill only names tools. An Agent a user builds must also bind the tools its skills use.
  • helm upgrade --reuse-values from an older release keeps the old chart's defaults, which have no builtins values. The chart then renders no built-ins instead of failing. --reset-then-reuse-values picks up the new defaults and turns them on.
  • CI e2e sets builtins.harness.enabled: false, because the lifecycle suite applies its own Harness named kagent. CI also turns kagent-tools off, so CI does not run k8s-agent.

Testing

  • helm unittest helm/kagent: 378 tests pass.
  • yarn typecheck, vitest (810 tests), the UI entrypoint Go tests and the mock Playwright agent-templates journey pass.
  • On a Kind cluster running this chart:
    • The UI serves the three skills, and the agent template form lists them.
    • k8s-agent is Ready with its skill from ghcr.io/kagent-dev/kagent/tools@sha256:607cb0ac…. Asked about a crash-looping pod, it called load_skill for k8s-troubleshooting and got the kagent-tools text back.
    • builtins.enabled=false removed the Harness, the Agent and the UI skill list. Turning it back on restored them, and k8s-agent became Ready again.
    • An upgrade from main with --reuse-values succeeded with no built-ins. A following --reset-then-reuse-values upgrade brought them back, and k8s-agent became Ready.

@github-actions github-actions Bot added the enhancement New feature or request label Nov 6, 2026
@danielle-mustillo
danielle-mustillo force-pushed the danielle-mustillo/k8s-agent-skills branch from 819f7ed to 29f2818 Compare November 6, 2026 14:37
@danielle-mustillo danielle-mustillo changed the title feat: ship kagent skills with a k8s-agent, and add skills to the agent template form feat: ship the kagent-tools skills with a k8s-agent, and add skills to the agent template form Nov 6, 2026
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 6, 2026
@danielle-mustillo
danielle-mustillo force-pushed the danielle-mustillo/k8s-agent-skills branch from 29f2818 to eb66003 Compare November 6, 2026 15:09
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 6, 2026
…ols skills

The chart now creates a default Go ADK Harness and a k8s Agent on it. The
Agent uses the kagent-tools Kubernetes tools, with tools that change the
cluster behind approval, and the k8s-troubleshooting skill.

The skill comes from the kagent-tools image that the chart already deploys.
The chart packages files/builtin-skills.json, which pins that image by
digest and lists the skills in it. make builtin-skills-catalog regenerates
the file from the image. Bump kagent-tools to 0.3.1, the release that ships
the skills.

Signed-off-by: Danielle Mustillo <danielle.mustillo@solo.io>
The UI ConfigMap passes the catalog as KAGENT_UI_BUILTIN_SKILLS, so the UI
can offer the built-in skills when a user builds an agent.

Signed-off-by: Danielle Mustillo <danielle.mustillo@solo.io>
The UI image writes KAGENT_UI_BUILTIN_SKILLS into env-config.js as
BUILTIN_SKILLS, and runtimeConfig parses it into a typed catalog. A
missing or invalid catalog means the UI offers no built-in skills.

Signed-off-by: Danielle Mustillo <danielle.mustillo@solo.io>
A user building an agent can now add one of the built-in skills or their
own skill from an OCI image, a Git commit or an S3 object version. The
form owns spec.skills and checks the same rules as the CRD. A row that
holds a built-in skill unchanged shows as a kagent skill with its
description. The mock backend serves a built-in catalog, and the agent
templates journey adds both kinds of skill and reads them back.

Signed-off-by: Danielle Mustillo <danielle.mustillo@solo.io>
…roller

A live spec builds an AgentTemplate with a kagent skill and an OCI, a Git
and an S3 skill through the form. It reads spec.skills back from the
controller, keeps them through an edit, and refuses a short Git commit and
a name with a slash. A second test builds an Agent with only the kagent
skill and checks in chat that load_skill returns the skill's text.

Signed-off-by: Danielle Mustillo <danielle.mustillo@solo.io>
@danielle-mustillo
danielle-mustillo force-pushed the danielle-mustillo/k8s-agent-skills branch from eb66003 to 543e5fc Compare November 6, 2026 15:20
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Nov 6, 2026
Signed-off-by: Danielle Mustillo <danielle.mustillo@solo.io>
@danielle-mustillo

danielle-mustillo commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor Author
  • Agent template form: before, there is no way to add a skill. After, a Skills field adds a built-in kagent skill (k8s-troubleshooting) from the chart's catalog, or your own OCI, Git or S3 skill.
  • Agent template details: before, a template's skills are hidden behind a notice saying to use kubectl. After, each skill is listed with its full source.
  • Fresh Helm install: before, there is no Harness and no Agent. After, the chart ships Harness kagent and a Ready k8s-agent with the k8s-troubleshooting skill from the kagent-tools image.
pr3554-reel.mp4

Screenshots

Before: new template form has no Skills field before-template-form-skills
After: Skills field with a kagent skill after-template-form-skills
Before: template's skills hidden behind a notice before-template-details-skills
After: template details list both skills in full after-template-details-skills

Written by 🤖

@danielle-mustillo
danielle-mustillo marked this pull request as ready for review November 6, 2026 16:12
@danielle-mustillo
danielle-mustillo requested a review from a team as a code owner November 6, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant