Commit 18ba6a0

mo khan <mo@mokhan.ca>
2026-09-08 05:09:51
feat: convert stale ERB prompts into bundled skills, load them by default
lib/elelem/skills/prompts/*.erb (plan/design/build/review/verify) were leftover system prompts from before the skills standard existed -- never required anywhere, and not templated (no ERB interpolation), so converting them to SKILL.md was a straight port. They now live at skills/<name>/SKILL.md, gem-root, matching the on-disk shape of ~/.agents/skills so they read the same way any other skill does. Catalog::LOAD_PATHS now scans the gem's own skills/ dir first (lowest priority -- user and project skills still shadow by name), so a bare elelem-skills install gets a usable plan/design/build/review/verify loop out of the box instead of zero skills.
1 parent 2c6aaff
Changed files (8)
lib
elelem
skills
spec
elelem
lib/elelem/skills/catalog.rb
@@ -3,7 +3,10 @@
 module Elelem
   module Skills
     class Catalog
+      GEM_SKILLS = File.expand_path("../../../skills", __dir__).freeze
+
       LOAD_PATHS = [
+        GEM_SKILLS,
         "~/.agents/skills",
         ".agents/skills"
       ].freeze
lib/elelem/skills/prompts/build.erb → skills/build/SKILL.md
@@ -1,3 +1,8 @@
+---
+name: build
+description: Execute tasks from a backlog story test-first (write failing test, implement, refactor), checking off tasks as they complete. Use when the user wants to implement a story from .elelem/backlog/.
+---
+
 Terminal coding agent. Execute tasks from a story.
 
 # Role
lib/elelem/skills/prompts/design.erb → skills/design/SKILL.md
@@ -1,3 +1,8 @@
+---
+name: design
+description: Research the codebase and fill in the Tasks section of backlog stories in .elelem/backlog/. Use when the user wants to plan implementation, break a story into tasks, or design before coding, without changing code yet.
+---
+
 You are in design mode. Research and plan implementation for backlog stories.
 
 # Role
lib/elelem/skills/prompts/plan.erb → skills/plan/SKILL.md
@@ -1,3 +1,8 @@
+---
+name: plan
+description: Interview the user as Product Owner to capture requirements as small, testable user stories in .elelem/backlog/. Use when the user wants to plan a feature, write user stories, or capture requirements before building.
+---
+
 You are a Scrum Master capturing requirements. Interview the user as if they are the Product Owner.
 
 # Role
lib/elelem/skills/prompts/review.erb → skills/review/SKILL.md
@@ -1,3 +1,8 @@
+---
+name: review
+description: Review code changes against a backlog story's acceptance criteria, checking test coverage, bugs, security, and quality, then report a verdict. Use when the user wants a code review of recent changes.
+---
+
 You are in review mode. Verify changes meet acceptance criteria.
 
 # Role
lib/elelem/skills/prompts/verify.erb → skills/verify/SKILL.md
@@ -1,3 +1,8 @@
+---
+name: verify
+description: Smoke-test an implemented feature end-to-end as if demoing to the Product Owner, then record demo notes in the backlog story. Use when the user wants to demo or verify a finished feature.
+---
+
 You are in verify mode. Demo the feature to the Product Owner.
 
 # Role
spec/elelem/skills/catalog_spec.rb
@@ -35,6 +35,14 @@ RSpec.describe Elelem::Skills::Catalog do
     end
   end
 
+  describe "GEM_SKILLS" do
+    it "bundles the plan/design/build/review/verify skills with the gem" do
+      catalog = described_class.new
+
+      expect(catalog.all.map(&:name)).to include("plan", "design", "build", "review", "verify")
+    end
+  end
+
   describe "#find" do
     it "returns nil for an unknown skill" do
       catalog = described_class.new(load_paths: [fixtures])
README.md
@@ -18,10 +18,14 @@ description: Test-driven development. Use when the user wants tests written firs
 ...body...
 ```
 
-`elelem-skills` scans:
-
-1. `~/.agents/skills/*/SKILL.md` (user-level)
-2. `.agents/skills/*/SKILL.md` (project-level, shadows user-level by name)
+`elelem-skills` scans, in this order (later paths shadow earlier ones by name):
+
+1. `skills/*/SKILL.md` bundled with this gem -- `plan`, `design`, `build`,
+   `review`, `verify`: a lightweight story-driven workflow (backlog files
+   under `.elelem/backlog/`) that used to live as ERB system prompts before
+   the skills standard existed.
+2. `~/.agents/skills/*/SKILL.md` (user-level)
+3. `.agents/skills/*/SKILL.md` (project-level)
 
 for skills, and registers a `skill` toolbox tool whose *description* is the
 skill index (name + frontmatter description for every discovered skill) --