feat: replace Python skills with Agent Skills standard#55
Merged
Conversation
Remove the Python-based skills system (`.py` modules with `execute()`, `parameters_schema`, `SkillContext`) and replace it with the Agent Skills standard — SKILL.md files with YAML frontmatter + markdown instructions that the coordinator reads on demand. Removed: - `SkillContext`, `Skill` dataclass, `_make_skill_wrapper()` - Python module loading via `importlib` - Skills as callable tools in the ToolRegistry Added: - `SkillMetadata` dataclass and `load_skill_metadata()` loader - YAML frontmatter parsing (name, description) via pyyaml - BFS discovery from `.agents/skills/` directories (max depth 6) - Parent directory walking from cwd upward (finds repo-root skills) - `~/.agents/skills/` for user-global skills - `_render_skills_section()` in system prompt - 21 tests covering discovery, parsing, validation, edge cases - pyyaml>=6.0 as explicit dependency The `.agents/skills/` path matches the Codex CLI convention, so skills written for Codex work in team-harness without changes. Progressive disclosure: only name+description are loaded at startup; the coordinator reads full SKILL.md content via its read_file tool when needed. Breaking change: the `skills` parameter of `build_system_prompt()` now expects `list[SkillMetadata]` instead of a list of Python skill objects. The parameter name and position are unchanged for backward compatibility. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces the Python-based skills system with the Agent Skills standard — the same format used by Codex, Claude Code, Gemini CLI, Cursor, Copilot, and 30+ other tools.
What was removed
importlib-based.pyskill files)Skilldataclass withexecute()andparameters_schemaSkillContextwithread_file/write_filehelpers_make_skill_wrapper()and skills-as-tools registration inToolRegistry~/.team-harness/skills/and<cwd>/skills/scan pathsWhat was added
SkillMetadatadataclass (name, description, path, skill_dir)load_skill_metadata()— discoversSKILL.mdfiles from.agents/skills/directoriespyyaml(name + description)cwdupward (finds repo-root skills from nested dirs)~/.agents/skills/for user-global skills (matches Codex convention)_render_skills_section()in the coordinator system promptpyyaml>=6.0as explicit dependencyHow it works
Discovery (startup): Scan
.agents/skills/in the cwd and parent directories, then~/.agents/skills/. Parse only YAML frontmatter (name + description). Project skills override global skills of the same name.System prompt: Skill names and descriptions are listed under a
## Skillsheading with instructions for the coordinator to read the fullSKILL.mdvia itsread_filetool when relevant.Activation: The coordinator decides when to read a skill's full instructions. No special activation machinery — progressive disclosure via the standard file tools.
Cross-tool compatibility: The
.agents/skills/path andSKILL.mdformat match Codex CLI, so skills are interoperable.Breaking changes
.pyskill files in~/.team-harness/skills/and<cwd>/skills/are no longer loadedbuild_system_prompt()skillsparameter now expectslist[SkillMetadata](position unchanged)Files changed (15)
pyproject.tomlpyyaml>=6.0src/team_harness/skills/loader.pysrc/team_harness/skills/__init__.pysrc/team_harness/config.py~/.agents/skills/src/team_harness/coordinator/system_prompt.py_render_skills_section()src/team_harness/harness.pysrc/team_harness/cli.pysrc/tests/test_skills.pysrc/tests/test_system_prompt.pysrc/tests/test_harness.pysrc/tests/test_cli.pysrc/tests/test_integration.pysrc/tests/test_config.pyREADME.mduv.lockTest plan
.agents/skills/test-skill/SKILL.mdand verify discovery inth repl🤖 Generated with Claude Code