@@ -26,7 +26,7 @@ permissions:
2626 contents : read
2727
2828jobs :
29- # Job 1: Validate command generation from fixtures (no API key needed)
29+ # Job 1: Validate skill generation from fixtures (no API key needed)
3030 # Runs on all events, but actual work only happens in merge_group/workflow_dispatch
3131 # This ensures the check name exists for PRs (needed for GitHub's merge queue)
3232 validate-generation :
6060 if : github.event_name != 'pull_request'
6161 run : uv run pytest tests/integration/test_fruits_workflow.py -v
6262
63- - name : Generate commands and validate structure
63+ - name : Generate skills and validate structure
6464 if : github.event_name != 'pull_request'
6565 run : |
6666 # Create a test environment
@@ -80,24 +80,27 @@ jobs:
8080 # Run deepwork install to set up the project (this also runs sync)
8181 uv run deepwork install --platform claude --path test_project
8282
83- # Validate generated commands exist
84- echo "Checking generated commands ..."
85- ls -la test_project/.claude/commands /
83+ # Validate generated skills exist
84+ echo "Checking generated skills ..."
85+ ls -la test_project/.claude/skills /
8686
87- # Verify command files exist
88- test -f test_project/.claude/commands/fruits.identify.md || (echo "Missing fruits.identify.md" && exit 1)
89- test -f test_project/.claude/commands/fruits.classify.md || (echo "Missing fruits.classify.md" && exit 1)
87+ # Verify skill directories and SKILL.md files exist
88+ # Meta-skill for the job itself
89+ test -f test_project/.claude/skills/fruits/SKILL.md || (echo "Missing fruits meta-skill" && exit 1)
90+ # Step skills
91+ test -f test_project/.claude/skills/fruits.identify/SKILL.md || (echo "Missing fruits.identify skill" && exit 1)
92+ test -f test_project/.claude/skills/fruits.classify/SKILL.md || (echo "Missing fruits.classify skill" && exit 1)
9093
91- # Verify command content
92- grep -q "# fruits.identify" test_project/.claude/commands /fruits.identify.md
93- grep -q "raw_items" test_project/.claude/commands /fruits.identify.md
94- grep -q "identified_fruits.md" test_project/.claude/commands /fruits.identify.md
94+ # Verify skill content
95+ grep -q "# fruits.identify" test_project/.claude/skills /fruits.identify/SKILL .md
96+ grep -q "raw_items" test_project/.claude/skills /fruits.identify/SKILL .md
97+ grep -q "identified_fruits.md" test_project/.claude/skills /fruits.identify/SKILL .md
9598
96- grep -q "# fruits.classify" test_project/.claude/commands /fruits.classify.md
97- grep -q "identified_fruits.md" test_project/.claude/commands /fruits.classify.md
98- grep -q "classified_fruits.md" test_project/.claude/commands /fruits.classify.md
99+ grep -q "# fruits.classify" test_project/.claude/skills /fruits.classify/SKILL .md
100+ grep -q "identified_fruits.md" test_project/.claude/skills /fruits.classify/SKILL .md
101+ grep -q "classified_fruits.md" test_project/.claude/skills /fruits.classify/SKILL .md
99102
100- echo "Command generation validated successfully!"
103+ echo "Skill generation validated successfully!"
101104
102105 # Job 2: Full end-to-end test with Claude Code
103106 # Tests the COMPLETE workflow: define job -> implement -> execute
@@ -172,8 +175,8 @@ jobs:
172175 uv run deepwork install --platform claude --path test_project
173176
174177 echo "Fresh test project setup complete"
175- echo "Available commands :"
176- ls -la test_project/.claude/commands /
178+ echo "Available skills :"
179+ ls -la test_project/.claude/skills /
177180
178181 # STEP 1: Use /deepwork_jobs.define to CREATE the fruits job
179182 - name : Create job with /deepwork_jobs.define
@@ -264,22 +267,22 @@ jobs:
264267 exit 1
265268 fi
266269
267- # Run sync to generate the slash commands
268- echo "=== Running deepwork sync to generate commands ==="
270+ # Run sync to generate the skills
271+ echo "=== Running deepwork sync to generate skills ==="
269272 cd ..
270273 uv run deepwork sync --path test_project
271274
272- echo "=== Checking generated commands ==="
273- ls -la test_project/.claude/commands /
275+ echo "=== Checking generated skills ==="
276+ ls -la test_project/.claude/skills /
274277
275- if [ -f "test_project/.claude/commands /fruits.identify.md" ] && [ -f "test_project/.claude/commands /fruits.classify.md" ]; then
276- echo "SUCCESS: Slash commands generated"
278+ if [ -f "test_project/.claude/skills /fruits.identify/SKILL .md" ] && [ -f "test_project/.claude/skills /fruits.classify/SKILL .md" ]; then
279+ echo "SUCCESS: Skills generated"
277280 else
278- echo "ERROR: Slash commands were not generated"
281+ echo "ERROR: Skills were not generated"
279282 exit 1
280283 fi
281284
282- # STEP 3: Execute the generated /fruits.identify command
285+ # STEP 3: Execute the generated /fruits.identify skill
283286 - name : Run /fruits.identify
284287 if : steps.check-key.outputs.has_key == 'true'
285288 working-directory : test_project
@@ -301,7 +304,7 @@ jobs:
301304 exit 1
302305 fi
303306
304- # STEP 4: Execute the generated /fruits.classify command
307+ # STEP 4: Execute the generated /fruits.classify skill
305308 - name : Run /fruits.classify
306309 if : steps.check-key.outputs.has_key == 'true'
307310 working-directory : test_project
@@ -368,7 +371,7 @@ jobs:
368371 name : claude-code-e2e-outputs
369372 path : |
370373 test_project/.deepwork/jobs/fruits/
371- test_project/.claude/commands /fruits.*.md
374+ test_project/.claude/skills /fruits*/
372375 test_project/identified_fruits.md
373376 test_project/classified_fruits.md
374377 retention-days : 7
0 commit comments