Merge feature/agent-skills-support: Agent Skills specification support

This commit is contained in:
Dhanji R. Prasanna
2026-02-05 12:46:53 +11:00
12 changed files with 1058 additions and 12 deletions

View File

@@ -366,4 +366,49 @@ Orchestrates 7 g3 agents in sequence for codebase maintenance.
**Pipeline Order**: euler → breaker → hopper → fowler → carmack → lamport → huffman
**State Storage**: `analysis/sdlc/pipeline.json` (git-tracked)
**CLI**: `studio sdlc run [-c N]`, `studio sdlc status`, `studio sdlc reset`
**CLI**: `studio sdlc run [-c N]`, `studio sdlc status`, `studio sdlc reset`
### Agent Skills Support
Implements the Agent Skills specification (https://agentskills.io) for portable skill packages.
- `crates/g3-core/src/skills/mod.rs` [0..42] - module exports: `Skill`, `discover_skills`, `generate_skills_prompt`
- `crates/g3-core/src/skills/parser.rs` [0..363]
- `Skill` [11..30] - parsed skill struct with name, description, metadata, body, path
- `Skill::parse()` [45..100] - parses SKILL.md content with YAML frontmatter
- `Skill::from_file()` [95..105] - loads and parses from disk
- `split_frontmatter()` [107..130] - extracts YAML between `---` delimiters
- `validate_name()` [133..175] - validates 1-64 chars, lowercase+hyphens
- `crates/g3-core/src/skills/discovery.rs` [0..268]
- `discover_skills()` [28..65] - scans global, extra, workspace dirs in priority order
- `load_skills_from_dir()` [68..100] - loads SKILL.md from subdirectories
- `expand_tilde()` [120..125] - uses shellexpand for path expansion
- `crates/g3-core/src/skills/prompt.rs` [0..140]
- `generate_skills_prompt()` [12..40] - generates `<available_skills>` XML block
- `escape_xml()` [42..48] - escapes special XML characters
- `crates/g3-config/src/lib.rs`
- `SkillsConfig` [180..200] - enabled flag, extra_paths vector
- Config.skills field [13..14]
- `crates/g3-cli/src/project_files.rs`
- `discover_and_format_skills()` [180..210] - discovers skills and generates prompt section
- `combine_project_content()` [87..110] - now includes skills_content parameter
**Skill Locations** (priority order):
1. `~/.g3/skills/` (global)
2. Config extra_paths
3. `.g3/skills/` (workspace, highest priority)
**SKILL.md Format**:
```yaml
---
name: skill-name # Required: 1-64 chars, lowercase + hyphens
description: What it does # Required: 1-1024 chars
license: Apache-2.0 # Optional
compatibility: Requires X # Optional: max 500 chars
metadata: # Optional: arbitrary key-value
author: org
allowed-tools: Bash Read # Optional/experimental
---
# Skill Title
Detailed instructions...
```