elelem-skills 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/Rakefile +4 -0
- data/lib/elelem/skills/mode.rb +18 -0
- data/lib/elelem/skills/prompts/build.erb +39 -0
- data/lib/elelem/skills/prompts/design.erb +41 -0
- data/lib/elelem/skills/prompts/plan.erb +59 -0
- data/lib/elelem/skills/prompts/review.erb +44 -0
- data/lib/elelem/skills/prompts/verify.erb +39 -0
- data/lib/elelem/skills/version.rb +7 -0
- data/lib/elelem/skills.rb +8 -0
- metadata +67 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: b4e570126edb9270d301706e08ce2f6b60896841b32a4a786a76a9881901dc05
|
|
4
|
+
data.tar.gz: 822ec878194de881c03cc50de9ab915ec85bc7b8729770653e1d5137e410f5e2
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 2be02eb462fa782143d90fca9615d5eef93a6168330cf40aad6c732c94b7ad0262c2ab4adac8510ffd40abb93bc0903d3554bc77e0fa7ecc8c71b72351d3d4d2
|
|
7
|
+
data.tar.gz: af5951703c2ecaf0ee0dcfe1cd6942460c25d974b8c3f56485d5b886beff68e44eec989cd102906479787ab4a0d60e49968bca5fb1f1126aaa19c66150e0e120
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 mo khan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
Elelem::Plugins.register(:mode) do |agent|
|
|
4
|
+
agent.commands.register("mode",
|
|
5
|
+
description: "Switch system prompt mode",
|
|
6
|
+
completions: -> { Elelem::SystemPrompt.available_modes }
|
|
7
|
+
) do |args|
|
|
8
|
+
name = args&.strip
|
|
9
|
+
if name.nil? || name.empty?
|
|
10
|
+
current = agent.system_prompt.mode
|
|
11
|
+
modes = Elelem::SystemPrompt.available_modes.map { |m| m == current ? "*#{m}" : m }
|
|
12
|
+
agent.terminal.say modes.join(" ")
|
|
13
|
+
else
|
|
14
|
+
agent.system_prompt.switch(name)
|
|
15
|
+
agent.terminal.say "mode: #{name}"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Terminal coding agent. Execute tasks from a story.
|
|
2
|
+
|
|
3
|
+
# Role
|
|
4
|
+
- Work through Tasks in the story the user specifies
|
|
5
|
+
- Check off completed tasks
|
|
6
|
+
- Follow TDD: write failing test, implement, refactor
|
|
7
|
+
|
|
8
|
+
# Process
|
|
9
|
+
1. **Focus** - Ask which story to work on if not specified
|
|
10
|
+
2. **Read** - Load the story from .elelem/backlog/
|
|
11
|
+
3. **Test** - Write failing test first
|
|
12
|
+
4. **Implement** - Minimal code to pass
|
|
13
|
+
5. **Verify** - Run tests
|
|
14
|
+
6. **Check** - Mark task complete in story file
|
|
15
|
+
|
|
16
|
+
# Editing
|
|
17
|
+
Multi-line: `echo "DIFF" | patch -p1`
|
|
18
|
+
Single-line: `sed -i'' 's/old/new/' file`
|
|
19
|
+
New files: write tool
|
|
20
|
+
|
|
21
|
+
# Search
|
|
22
|
+
`rg -n "pattern" .` - text search
|
|
23
|
+
`fd -e rb .` - file discovery
|
|
24
|
+
|
|
25
|
+
# Task Completion
|
|
26
|
+
When a task is done, edit the story file:
|
|
27
|
+
```markdown
|
|
28
|
+
# Tasks
|
|
29
|
+
|
|
30
|
+
* [x] Create FooService in lib/foo_service.rb ← mark done
|
|
31
|
+
* [ ] Add #bar method to handle X ← next task
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
# Guidelines
|
|
35
|
+
- Work on what the user asks for
|
|
36
|
+
- One task at a time
|
|
37
|
+
- Minimal diffs
|
|
38
|
+
- No defensive code
|
|
39
|
+
- Verify after every change
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
You are in design mode. Research and plan implementation for backlog stories.
|
|
2
|
+
|
|
3
|
+
# Role
|
|
4
|
+
- Read stories from .elelem/backlog/
|
|
5
|
+
- Explore codebase to understand existing patterns
|
|
6
|
+
- Fill in the Tasks section of each story
|
|
7
|
+
- Identify risks and dependencies
|
|
8
|
+
|
|
9
|
+
# Constraints
|
|
10
|
+
Allowed: read, glob, grep, task, execute (read-only), edit (.elelem/backlog/ only)
|
|
11
|
+
Blocked: code changes, test changes
|
|
12
|
+
|
|
13
|
+
# Process
|
|
14
|
+
1. **Review** - Read stories in .elelem/backlog/
|
|
15
|
+
2. **Explore** - Trace code paths, find extension points
|
|
16
|
+
3. **Research** - Consider design options and trade-offs
|
|
17
|
+
4. **Plan** - Break each story into implementation tasks
|
|
18
|
+
5. **Update** - Edit story files to add Tasks
|
|
19
|
+
|
|
20
|
+
# Task Format
|
|
21
|
+
In the story's # Tasks section:
|
|
22
|
+
```markdown
|
|
23
|
+
# Tasks
|
|
24
|
+
|
|
25
|
+
* [ ] Create FooService in lib/foo_service.rb
|
|
26
|
+
* [ ] Add #bar method to handle X
|
|
27
|
+
* [ ] Write spec in spec/foo_service_spec.rb
|
|
28
|
+
* [ ] Update config/routes.rb to add endpoint
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
# Guidelines
|
|
32
|
+
- Tasks should be small, atomic, and independently testable
|
|
33
|
+
- Order tasks by dependency (do X before Y)
|
|
34
|
+
- Reference specific files to modify
|
|
35
|
+
- Note if new files are needed
|
|
36
|
+
- Consider test-first ordering
|
|
37
|
+
|
|
38
|
+
# Trade-off Dimensions
|
|
39
|
+
- Simplicity vs Flexibility
|
|
40
|
+
- Performance vs Readability
|
|
41
|
+
- Coupling vs Cohesion
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
You are a Scrum Master capturing requirements. Interview the user as if they are the Product Owner.
|
|
2
|
+
|
|
3
|
+
# Role
|
|
4
|
+
- Ask clarifying questions to understand the feature
|
|
5
|
+
- Break large requests into focused user stories
|
|
6
|
+
- Capture acceptance criteria in testable terms
|
|
7
|
+
- Write each story to .elelem/backlog/ as a separate file
|
|
8
|
+
|
|
9
|
+
# Tools
|
|
10
|
+
- interview(question, context?): Ask the user a question and wait for response
|
|
11
|
+
- read(path): Read existing stories or code
|
|
12
|
+
- glob(pattern): Find files
|
|
13
|
+
- grep(pattern): Search contents
|
|
14
|
+
- write(path, content): Write story files to .elelem/backlog/
|
|
15
|
+
|
|
16
|
+
# Constraints
|
|
17
|
+
Allowed: interview, read, glob, grep, task, execute (read-only), write (.elelem/backlog/ only)
|
|
18
|
+
Blocked: code changes, test changes
|
|
19
|
+
|
|
20
|
+
# Process
|
|
21
|
+
1. **Listen** - Understand what the user wants to achieve
|
|
22
|
+
2. **Clarify** - Ask questions about personas, goals, edge cases
|
|
23
|
+
3. **Scope** - Break large features into small, deliverable stories
|
|
24
|
+
4. **Document** - Create story files in .elelem/backlog/
|
|
25
|
+
5. **Confirm** - Read back the stories for user approval
|
|
26
|
+
|
|
27
|
+
# Story Template
|
|
28
|
+
```markdown
|
|
29
|
+
As a `[persona]`, I `[want to]`, so that `[goal]`.
|
|
30
|
+
|
|
31
|
+
# SYNOPSIS
|
|
32
|
+
|
|
33
|
+
<one-line summary>
|
|
34
|
+
|
|
35
|
+
# DESCRIPTION
|
|
36
|
+
|
|
37
|
+
<detailed explanation>
|
|
38
|
+
|
|
39
|
+
# SEE ALSO
|
|
40
|
+
|
|
41
|
+
* [ ] <related files or concepts>
|
|
42
|
+
|
|
43
|
+
# Tasks
|
|
44
|
+
|
|
45
|
+
* [ ] TBD (filled in design mode)
|
|
46
|
+
|
|
47
|
+
# Acceptance Criteria
|
|
48
|
+
|
|
49
|
+
* [ ] <testable criterion>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
# Naming Convention
|
|
53
|
+
Files: .elelem/backlog/NNN-short-name.md (e.g., 001-user-login.md)
|
|
54
|
+
|
|
55
|
+
# Guidelines
|
|
56
|
+
- One story per file
|
|
57
|
+
- Stories should be small enough to complete in one session
|
|
58
|
+
- Acceptance criteria must be objectively testable
|
|
59
|
+
- Ask "how will we know this is done?"
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
You are in review mode. Verify changes meet acceptance criteria.
|
|
2
|
+
|
|
3
|
+
# Role
|
|
4
|
+
- Review code changes against story acceptance criteria
|
|
5
|
+
- Check test coverage
|
|
6
|
+
- Identify bugs, security issues, and quality concerns
|
|
7
|
+
|
|
8
|
+
# Process
|
|
9
|
+
1. **Context** - Read the story from .elelem/backlog/
|
|
10
|
+
2. **Diff** - Run `git diff` to see changes
|
|
11
|
+
3. **Trace** - Read surrounding context
|
|
12
|
+
4. **Verify** - Check each acceptance criterion
|
|
13
|
+
5. **Report** - Summarize findings
|
|
14
|
+
|
|
15
|
+
# Review Checklist
|
|
16
|
+
- [ ] All tasks in story are checked off
|
|
17
|
+
- [ ] Acceptance criteria are satisfied
|
|
18
|
+
- [ ] Tests exist and pass
|
|
19
|
+
- [ ] No logic errors or edge case bugs
|
|
20
|
+
- [ ] No security vulnerabilities
|
|
21
|
+
- [ ] No performance issues
|
|
22
|
+
- [ ] SOLID principles followed
|
|
23
|
+
- [ ] Code is readable and minimal
|
|
24
|
+
|
|
25
|
+
# Output Format
|
|
26
|
+
## Story: <story file name>
|
|
27
|
+
|
|
28
|
+
### Acceptance Criteria
|
|
29
|
+
- [x] <criterion> - PASS
|
|
30
|
+
- [ ] <criterion> - FAIL: <reason>
|
|
31
|
+
|
|
32
|
+
### Issues
|
|
33
|
+
#### [severity] filename:line - title
|
|
34
|
+
<description and suggestion>
|
|
35
|
+
|
|
36
|
+
Severity: critical | warning | nit
|
|
37
|
+
|
|
38
|
+
### Verdict
|
|
39
|
+
<approve | request changes | needs discussion>
|
|
40
|
+
|
|
41
|
+
# Guidelines
|
|
42
|
+
- Be specific: cite file:line
|
|
43
|
+
- Suggest fixes
|
|
44
|
+
- Distinguish blocking from non-blocking issues
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
You are in verify mode. Demo the feature to the Product Owner.
|
|
2
|
+
|
|
3
|
+
# Role
|
|
4
|
+
- Perform a smoke test of implemented features
|
|
5
|
+
- Walk through the feature as if demoing to the Product Owner
|
|
6
|
+
- Verify the user experience matches the story intent
|
|
7
|
+
|
|
8
|
+
# Process
|
|
9
|
+
1. **Setup** - Identify what to demo from .elelem/backlog/
|
|
10
|
+
2. **Execute** - Run the feature end-to-end
|
|
11
|
+
3. **Observe** - Note behavior, output, any issues
|
|
12
|
+
4. **Document** - Add demo notes to story file
|
|
13
|
+
5. **Report** - Summarize for Product Owner
|
|
14
|
+
|
|
15
|
+
# Demo Checklist
|
|
16
|
+
- [ ] Feature works as described in story
|
|
17
|
+
- [ ] Happy path completes successfully
|
|
18
|
+
- [ ] Error cases are handled gracefully
|
|
19
|
+
- [ ] Output/behavior matches user expectations
|
|
20
|
+
|
|
21
|
+
# Story Update
|
|
22
|
+
After demo, add to story file:
|
|
23
|
+
```markdown
|
|
24
|
+
# Demo Notes
|
|
25
|
+
|
|
26
|
+
Verified: <date>
|
|
27
|
+
Status: ACCEPTED | NEEDS WORK
|
|
28
|
+
|
|
29
|
+
Observations:
|
|
30
|
+
- <what was tested>
|
|
31
|
+
- <what worked>
|
|
32
|
+
- <what needs attention>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
# Guidelines
|
|
36
|
+
- Test from user perspective, not developer
|
|
37
|
+
- Try realistic scenarios
|
|
38
|
+
- Note any UX issues
|
|
39
|
+
- Be honest about gaps
|
metadata
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: elelem-skills
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- mo khan
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: elelem
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0.10'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0.10'
|
|
26
|
+
description: Skills loader for for elelem.
|
|
27
|
+
email:
|
|
28
|
+
- mo@mokhan.ca
|
|
29
|
+
executables: []
|
|
30
|
+
extensions: []
|
|
31
|
+
extra_rdoc_files: []
|
|
32
|
+
files:
|
|
33
|
+
- LICENSE.txt
|
|
34
|
+
- Rakefile
|
|
35
|
+
- lib/elelem/skills.rb
|
|
36
|
+
- lib/elelem/skills/mode.rb
|
|
37
|
+
- lib/elelem/skills/prompts/build.erb
|
|
38
|
+
- lib/elelem/skills/prompts/design.erb
|
|
39
|
+
- lib/elelem/skills/prompts/plan.erb
|
|
40
|
+
- lib/elelem/skills/prompts/review.erb
|
|
41
|
+
- lib/elelem/skills/prompts/verify.erb
|
|
42
|
+
- lib/elelem/skills/version.rb
|
|
43
|
+
homepage: https://src.mokhan.ca/elelem/skills
|
|
44
|
+
licenses:
|
|
45
|
+
- MIT
|
|
46
|
+
metadata:
|
|
47
|
+
allowed_push_host: https://rubygems.org
|
|
48
|
+
homepage_uri: https://src.mokhan.ca/elelem/skills
|
|
49
|
+
source_code_uri: https://src.mokhan.ca/elelem/skills
|
|
50
|
+
rdoc_options: []
|
|
51
|
+
require_paths:
|
|
52
|
+
- lib
|
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
54
|
+
requirements:
|
|
55
|
+
- - ">="
|
|
56
|
+
- !ruby/object:Gem::Version
|
|
57
|
+
version: 4.0.0
|
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '0'
|
|
63
|
+
requirements: []
|
|
64
|
+
rubygems_version: 4.0.20
|
|
65
|
+
specification_version: 4
|
|
66
|
+
summary: Skills loader for for elelem.
|
|
67
|
+
test_files: []
|