5.8 KiB
5.8 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | |||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 02-integration-layer | 01 | execute | 1 |
|
true |
|
|
Purpose: Define the skill entry point for OpenClaw's skill registry. The SKILL.md file is the "face" of the gsd-openclaw skill that OpenClaw loads to understand when to invoke this skill.
Output:
- skill/SKILL.md - OpenClaw skill definition
- tests/test_skill_md.py - Validation tests
<execution_context> @/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md @/home/starmen1265/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/02-integration-layer/02-CONTEXT.md @.planning/phases/02-integration-layer/02-RESEARCH.mdExample frontmatter format:
---
name: gsd-openclaw
description: GSD project management via /gsd:* commands. Triggers on /gsd:new-project, /gsd:plan, /gsd:status, /gsd:use and other GSD slash commands.
---
1. test_skill_md_exists():
- Assert skill/SKILL.md file exists
- Use Path(__file__).parent.parent / "skill" / "SKILL.md"
2. test_skill_md_has_valid_frontmatter():
- Read file content
- Assert content starts with "---\n"
- Assert second "---" delimiter exists
- Use yaml.safe_load() to parse frontmatter (import yaml)
3. test_skill_md_has_name_field():
- Parse frontmatter
- Assert "name" key exists
- Assert name is non-empty string
4. test_skill_md_has_description_field():
- Parse frontmatter
- Assert "description" key exists
- Assert description is non-empty string
5. test_skill_md_description_contains_gsd_pattern():
- Parse frontmatter
- Assert "/gsd:" appears in description (for trigger matching)
Follow test pattern from tests/test_state_manager.py (class-based, clear docstrings).
Add yaml to test dependencies if needed (should be available via pytest).
pytest tests/test_skill_md.py -v
- tests/test_skill_md.py exists with 5 passing tests
- All tests fail initially (no SKILL.md yet)
Task 2: Create SKILL.md with valid frontmatter
skill/SKILL.md
- Test: All tests in test_skill_md.py pass
Create skill/SKILL.md with:
1. YAML frontmatter (between --- delimiters):
- name: gsd-openclaw
- description: GSD project management via /gsd:* commands. Triggers on /gsd:new-project, /gsd:plan, /gsd:status, /gsd:use and other GSD slash commands.
2. Markdown content body (after frontmatter):
- Title: # GSD-OpenClaw Skill
- "## When to Use" section explaining trigger patterns
- "## Commands" table with supported /gsd:* commands
- "## Project Context" section explaining /gsd:use command
User decision (LOCKED): Only /gsd:* command triggers, no natural language.
Commands to document in table:
| Command | Description |
| /gsd:new-project <name> | Create a new GSD project |
| /gsd:use <project> | Switch to a project context |
| /gsd:status | Show current project status |
| /gsd:plan | Run planning phase |
| /gsd:ship | Ship the current phase |
| /gsd:help | Show available commands |
Follow dev-workflow/SKILL.md structure as reference.
pytest tests/test_skill_md.py -v
- skill/SKILL.md exists with valid YAML frontmatter
- All 5 tests in test_skill_md.py pass
- SKILL.md has name, description fields with /gsd: trigger pattern
- Run pytest tests/test_skill_md.py -v (all tests pass)
- Verify SKILL.md can be parsed as valid YAML
- Verify description contains /gsd: pattern for OpenClaw trigger matching
<success_criteria>
- skill/SKILL.md exists with valid YAML frontmatter
- Frontmatter contains
name: gsd-openclaw - Frontmatter contains
descriptionwith /gsd:* pattern - All 5 tests in tests/test_skill_md.py pass </success_criteria>