UAT: SkillConfigSchema missing builtins field — spec-required built-in tool group opt-in is not supported #2117

Open
opened 2026-04-03 04:12:47 +00:00 by freemo · 1 comment
Owner

Metadata

  • Branch: fix/m8-skill-schema-builtins-field
  • Commit Message: fix(skills): add builtins field to SkillConfigSchema and Skill domain model per spec
  • Milestone: v3.7.0
  • Parent Epic: #392

Bug Report

What Was Tested

Code-level analysis of src/cleveragents/skills/schema.py against docs/specification.md skill YAML configuration section.

Expected Behavior (from spec)

The skill YAML configuration should accept a builtins field for opting into built-in tool groups provided by CleverAgents:

skill:
  name: local/devops-toolkit
  builtins:
    - group: shell_operations

The spec defines built-in tool groups as pre-packaged collections of tools provided by CleverAgents (e.g., shell_operations, file_operations, git_operations). Skills opt into these groups via the builtins field.

Actual Behavior

The SkillConfigSchema has no builtins field at all. The class has:

  • tools (named tool references)
  • inline_tools (anonymous inline tools)
  • includes (included skills)
  • mcp_servers (MCP server specs)
  • agent_skill_folders (Agent Skills folders)

But no builtins field. Because extra="forbid" is set on SkillConfigSchema, any YAML that includes builtins will fail with a Pydantic validation error.

Additionally, the Skill domain model in src/cleveragents/domain/models/core/skill.py also has no builtins field, meaning the entire built-in tool group opt-in mechanism is unimplemented.

Code Locations

  • src/cleveragents/skills/schema.py, SkillConfigSchema class — missing builtins field
  • src/cleveragents/domain/models/core/skill.py, Skill class — missing builtins field

Steps to Reproduce

  1. Create a skill YAML file using the spec-compliant builtins field:
name: local/test-skill
description: Test skill
builtins:
  - group: shell_operations
  1. Call SkillConfigSchema.from_yaml(yaml_content)
  2. Observe: Pydantic raises ValidationError: Extra inputs are not permitted for builtins

Severity

High — The built-in tool group opt-in mechanism is completely unimplemented. Users cannot use built-in tool groups in their skills as the spec requires.

Subtasks

  • Create a SkillBuiltinGroupSchema Pydantic model with a group: str field representing the built-in tool group name
  • Add a builtins: list[SkillBuiltinGroupSchema] field to SkillConfigSchema in src/cleveragents/skills/schema.py
  • Update _CAMEL_TO_SNAKE mapping dict in schema.py to include builtinsbuiltins (or camelCase equivalent if applicable)
  • Add a builtins: list[str] (or equivalent domain type) field to the Skill domain model in src/cleveragents/domain/models/core/skill.py
  • Update the skill compiler/loader to map SkillBuiltinGroupSchema entries to the Skill domain model's builtins field
  • Implement resolution of built-in tool groups during skill compilation (wire shell_operations, file_operations, git_operations, etc.)
  • Write Behave unit tests (in features/) covering spec-compliant YAML round-trip for builtins field
  • Write Robot Framework integration tests (in robot/) verifying built-in tool group opt-in end-to-end
  • Verify nox -e typecheck passes (Pyright)
  • Verify nox -e lint passes
  • Verify nox -e unit_tests passes
  • Verify nox -e coverage_report shows coverage >= 97%

Definition of Done

  • SkillConfigSchema accepts a builtins field containing a list of {group: <name>} objects per the specification
  • Skill domain model has a builtins field that carries the opted-in built-in tool group names
  • Skill YAML files using builtins are parsed and compiled without Pydantic validation errors
  • Built-in tool groups referenced via builtins are resolved and made available to the skill at runtime
  • New Behave scenarios cover the spec-compliant builtins field structure and round-trip
  • New Robot Framework integration tests verify end-to-end built-in tool group opt-in
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly (fix(skills): add builtins field to SkillConfigSchema and Skill domain model per spec), followed by a blank line, then additional detail lines
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly (fix/m8-skill-schema-builtins-field)
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done
  • All nox stages pass (nox -e lint, nox -e typecheck, nox -e unit_tests, nox -e integration_tests, nox -e coverage_report)
  • Coverage >= 97%

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: ca-uat-tester

## Metadata - **Branch**: `fix/m8-skill-schema-builtins-field` - **Commit Message**: `fix(skills): add builtins field to SkillConfigSchema and Skill domain model per spec` - **Milestone**: v3.7.0 - **Parent Epic**: #392 ## Bug Report ### What Was Tested Code-level analysis of `src/cleveragents/skills/schema.py` against `docs/specification.md` skill YAML configuration section. ### Expected Behavior (from spec) The skill YAML configuration should accept a `builtins` field for opting into built-in tool groups provided by CleverAgents: ```yaml skill: name: local/devops-toolkit builtins: - group: shell_operations ``` The spec defines built-in tool groups as pre-packaged collections of tools provided by CleverAgents (e.g., `shell_operations`, `file_operations`, `git_operations`). Skills opt into these groups via the `builtins` field. ### Actual Behavior The `SkillConfigSchema` has no `builtins` field at all. The class has: - `tools` (named tool references) - `inline_tools` (anonymous inline tools) - `includes` (included skills) - `mcp_servers` (MCP server specs) - `agent_skill_folders` (Agent Skills folders) But no `builtins` field. Because `extra="forbid"` is set on `SkillConfigSchema`, any YAML that includes `builtins` will fail with a Pydantic validation error. Additionally, the `Skill` domain model in `src/cleveragents/domain/models/core/skill.py` also has no `builtins` field, meaning the entire built-in tool group opt-in mechanism is unimplemented. ### Code Locations - `src/cleveragents/skills/schema.py`, `SkillConfigSchema` class — missing `builtins` field - `src/cleveragents/domain/models/core/skill.py`, `Skill` class — missing `builtins` field ### Steps to Reproduce 1. Create a skill YAML file using the spec-compliant `builtins` field: ```yaml name: local/test-skill description: Test skill builtins: - group: shell_operations ``` 2. Call `SkillConfigSchema.from_yaml(yaml_content)` 3. Observe: Pydantic raises `ValidationError: Extra inputs are not permitted` for `builtins` ### Severity **High** — The built-in tool group opt-in mechanism is completely unimplemented. Users cannot use built-in tool groups in their skills as the spec requires. ## Subtasks - [ ] Create a `SkillBuiltinGroupSchema` Pydantic model with a `group: str` field representing the built-in tool group name - [ ] Add a `builtins: list[SkillBuiltinGroupSchema]` field to `SkillConfigSchema` in `src/cleveragents/skills/schema.py` - [ ] Update `_CAMEL_TO_SNAKE` mapping dict in `schema.py` to include `builtins` → `builtins` (or camelCase equivalent if applicable) - [ ] Add a `builtins: list[str]` (or equivalent domain type) field to the `Skill` domain model in `src/cleveragents/domain/models/core/skill.py` - [ ] Update the skill compiler/loader to map `SkillBuiltinGroupSchema` entries to the `Skill` domain model's `builtins` field - [ ] Implement resolution of built-in tool groups during skill compilation (wire `shell_operations`, `file_operations`, `git_operations`, etc.) - [ ] Write Behave unit tests (in `features/`) covering spec-compliant YAML round-trip for `builtins` field - [ ] Write Robot Framework integration tests (in `robot/`) verifying built-in tool group opt-in end-to-end - [ ] Verify `nox -e typecheck` passes (Pyright) - [ ] Verify `nox -e lint` passes - [ ] Verify `nox -e unit_tests` passes - [ ] Verify `nox -e coverage_report` shows coverage >= 97% ## Definition of Done - [ ] `SkillConfigSchema` accepts a `builtins` field containing a list of `{group: <name>}` objects per the specification - [ ] `Skill` domain model has a `builtins` field that carries the opted-in built-in tool group names - [ ] Skill YAML files using `builtins` are parsed and compiled without Pydantic validation errors - [ ] Built-in tool groups referenced via `builtins` are resolved and made available to the skill at runtime - [ ] New Behave scenarios cover the spec-compliant `builtins` field structure and round-trip - [ ] New Robot Framework integration tests verify end-to-end built-in tool group opt-in - [ ] A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly (`fix(skills): add builtins field to SkillConfigSchema and Skill domain model per spec`), followed by a blank line, then additional detail lines - [ ] The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly (`fix/m8-skill-schema-builtins-field`) - [ ] The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done - [ ] All nox stages pass (`nox -e lint`, `nox -e typecheck`, `nox -e unit_tests`, `nox -e integration_tests`, `nox -e coverage_report`) - [ ] Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-uat-tester
freemo added this to the v3.7.0 milestone 2026-04-03 04:12:51 +00:00
freemo self-assigned this 2026-04-03 16:58:05 +00:00
Author
Owner

MoSCoW classification: Should Have

Rationale: This issue addresses a spec requirement or important quality improvement. It should be included in the milestone if possible.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: ca-project-owner

MoSCoW classification: **Should Have** Rationale: This issue addresses a spec requirement or important quality improvement. It should be included in the milestone if possible. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Blocks
#392 Epic: Actor YAML & Compiler
cleveragents/cleveragents-core
Reference
cleveragents/cleveragents-core#2117
No description provided.