--- phase: 02-integration-layer plan: 01 type: execute wave: 1 depends_on: [] files_modified: - skill/SKILL.md - tests/test_skill_md.py autonomous: true requirements: - OCLW-01 - OCLW-02 must_haves: truths: - "SKILL.md has valid YAML frontmatter with name and description fields" - "OpenClaw can load the skill successfully" - "Skill triggers on /gsd:* command patterns" artifacts: - path: "skill/SKILL.md" provides: "OpenClaw skill definition and trigger patterns" min_lines: 20 contains: "---" - path: "tests/test_skill_md.py" provides: "Tests for SKILL.md validation" exports: ["TestSkillMd"] key_links: - from: "skill/SKILL.md" to: "OpenClaw Gateway" via: "skill loading" pattern: "name:.*description:" --- Create SKILL.md with valid frontmatter that OpenClaw can load and triggers on /gsd:* commands. 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 @/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md @/home/starmen1265/.claude/get-shit-done/templates/summary.md @.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/02-integration-layer/02-CONTEXT.md @.planning/phases/02-integration-layer/02-RESEARCH.md Example frontmatter format: ```yaml --- 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. --- ``` Task 1: Create test scaffold for SKILL.md validation tests/test_skill_md.py - Test 1: SKILL.md file exists at skill/SKILL.md - Test 2: SKILL.md has valid YAML frontmatter between --- delimiters - Test 3: SKILL.md frontmatter contains `name` field - Test 4: SKILL.md frontmatter contains `description` field - Test 5: description field contains /gsd: pattern for triggering Create tests/test_skill_md.py with test class TestSkillMd containing: 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 1. skill/SKILL.md exists with valid YAML frontmatter 2. Frontmatter contains `name: gsd-openclaw` 3. Frontmatter contains `description` with /gsd:* pattern 4. All 5 tests in tests/test_skill_md.py pass After completion, create `.planning/phases/02-integration-layer/02-01-SUMMARY.md`