agent-zero/tools/skills_tool.py.dox.md
Alessandro 53ad7ba2dc Persist loaded skills through compaction
Store explicitly loaded skill IDs as chat-wide context data while keeping full skill bodies in normal tool-result history. Reattach any loaded skill body that is no longer visible after compaction by reimporting the current skill from its source, without revision hashes or protocol reinjection.

Update compaction and summary prompts to preserve loaded skill names only, refresh DOX contracts, and add focused coverage for context-data persistence, legacy agent-data migration, duplicate suppression, and post-compaction reattachment.
2026-06-23 16:32:21 +02:00

3 KiB

skills_tool.py DOX

Purpose

  • Own the skills_tool.py agent tool.
  • This module searches, loads, and lists Agent Zero skills for the agent.
  • Keep this file-level DOX profile synchronized with skills_tool.py because this directory is intentionally flat.

Ownership

  • skills_tool.py owns the runtime implementation.
  • skills_tool.py.dox.md owns durable notes about responsibilities, contracts, side effects, and verification for that implementation.
  • Classes:
  • SkillsTool (Tool)
    • get_log_object(self)
    • async before_execution(self, **kwargs)
    • async execute(self, **kwargs) -> Response
    • _visible_skill_loaded(self, skill_name: str) -> bool
  • Top-level functions:
  • max_loaded_skills() -> int
  • Notable constants/configuration names: DATA_NAME_LOADED_SKILLS.

Runtime Contracts

  • Tool modules must define helpers.tool.Tool subclasses and return helpers.tool.Response from execute(...).
  • Update this file whenever tool arguments, output shape, break_loop behavior, intervention handling, prompt instructions, or side effects change.
  • SkillsTool is a Tool.
  • SkillsTool defines execute(...).
  • Loading a skill appends the full skill body as a normal tool-result history message with skill_instructions metadata containing name, path, source, and content visibility.
  • Loaded skill IDs are stored in chat-wide context data.
  • Duplicate loads omit the full body when the same skill name remains visible in model history.
  • Observed side-effect areas: filesystem reads, filesystem deletion, settings/state persistence, chat history persistence.
  • Imported dependency areas include: __future__, helpers, helpers.print_style, helpers.tool, pathlib, typing.

Key Concepts

  • Important called helpers/classes observed in the source: str.strip.lower.replace, skill_name.strip, super.get_log_object, self._normalize_skill_name, self.get_log_object, skills_helper.list_skills, join, skills_helper.search_skills, skills_helper.find_skill, skills_helper.load_skill_for_agent, skills_helper.add_loaded_skill_name, skills_helper.skill_instruction_name, skill.path.resolve, Path, resolved.read_text, skill_name.startswith, skill_name.endswith, self._current_action, self.agent.context.log.log, Response, strip, target.is_absolute.
  • Keep request/response, tool, or helper semantics documented here at the same time as source changes.

Work Guidance

  • Keep tool output concise, model-readable, and safe for history persistence.
  • Coordinate argument or behavior changes with prompt tool instructions and skill guidance.
  • Respect intervention flow for long-running, external, or user-visible operations.

Verification

  • Run targeted tool and prompt-contract tests for changed behavior; smoke-test agent execution when no focused test exists.
  • Related tests observed by source search:
    • tests/test_document_query_plugin.py
    • tests/test_tool_action_contracts.py

Child DOX Index

No child DOX files.