feat(skills): add inherited agent skill allowlists (#59992)

Merged via squash.

Prepared head SHA: 6f60779a57
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
Gustavo Madeira Santana
2026-04-03 13:41:28 -04:00
committed by GitHub
parent 04f59a7227
commit ddd250d130
37 changed files with 910 additions and 60 deletions

View File

@@ -2627,6 +2627,12 @@ export const GENERATED_BASE_CONFIG_SCHEMA = {
workspace: {
type: "string",
},
skills: {
type: "array",
items: {
type: "string",
},
},
repoRoot: {
type: "string",
},
@@ -20387,7 +20393,7 @@ export const GENERATED_BASE_CONFIG_SCHEMA = {
},
"agents.list.*.skills": {
label: "Agent Skill Filter",
help: "Optional allowlist of skills for this agent (omit = all skills; empty = no skills).",
help: "Optional allowlist of skills for this agent. If omitted, the agent inherits agents.defaults.skills when set; otherwise skills stay unrestricted. Set [] for no skills. An explicit list fully replaces inherited defaults instead of merging with them.",
tags: ["advanced"],
},
"agents.list[].runtime": {
@@ -21778,6 +21784,11 @@ export const GENERATED_BASE_CONFIG_SCHEMA = {
help: "Debounce window in milliseconds for coalescing rapid skill file changes before reload logic runs. Increase to reduce reload churn on frequent writes, or lower for faster edit feedback.",
tags: ["performance", "automation"],
},
"agents.defaults.skills": {
label: "Skills",
help: "Optional default skill allowlist inherited by agents that omit agents.list[].skills. Omit for unrestricted skills, set [] to give inheriting agents no skills, and remember explicit agents.list[].skills replaces this default instead of merging with it.",
tags: ["advanced"],
},
"agents.defaults.workspace": {
label: "Workspace",
help: "Default workspace path exposed to agent runtime tools for filesystem context and repo-aware behavior. Set this explicitly when running from wrappers so path resolution stays deterministic.",
@@ -23914,7 +23925,7 @@ export const GENERATED_BASE_CONFIG_SCHEMA = {
},
"agents.list[].skills": {
label: "Agent Skill Filter",
help: "Optional allowlist of skills for this agent (omit = all skills; empty = no skills).",
help: "Optional allowlist of skills for this agent. If omitted, the agent inherits agents.defaults.skills when set; otherwise skills stay unrestricted. Set [] for no skills. An explicit list fully replaces inherited defaults instead of merging with them.",
tags: ["advanced"],
},
"agents.list[].identity.avatar": {