moai-adk 0.4.7__py3-none-any.whl → 0.4.10__py3-none-any.whl
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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +188 -954
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +4 -5
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +2 -2
- moai_adk/templates/.claude/agents/alfred/git-manager.md +2 -2
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +3 -3
- moai_adk/templates/.claude/agents/alfred/project-manager.md +6 -6
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +4 -6
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +36 -36
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +2 -2
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +2 -2
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +3 -3
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +5 -5
- moai_adk/templates/.claude/commands/alfred/0-project.md +98 -42
- moai_adk/templates/.claude/commands/alfred/1-plan.md +7 -7
- moai_adk/templates/.claude/commands/alfred/2-run.md +36 -36
- moai_adk/templates/.claude/commands/alfred/3-sync.md +10 -10
- moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +313 -0
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +14 -1
- moai_adk/templates/.claude/hooks/alfred/core/__init__.py +117 -33
- moai_adk/templates/.claude/hooks/alfred/handlers/session.py +8 -9
- moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +6 -6
- moai_adk/templates/.claude/hooks/alfred/handlers/user.py +5 -4
- moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +175 -0
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +1 -1
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +1 -1
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +1 -1
- moai_adk/templates/.claude/settings.json +42 -2
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +480 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +257 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +120 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +249 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +278 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +287 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +232 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +296 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +243 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +271 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +261 -35
- moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +15 -15
- moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +33 -33
- moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +438 -42
- moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +129 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +1300 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk/templates/CLAUDE.md +111 -92
- {moai_adk-0.4.7.dist-info → moai_adk-0.4.10.dist-info}/METADATA +542 -150
- {moai_adk-0.4.7.dist-info → moai_adk-0.4.10.dist-info}/RECORD +65 -73
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +0 -635
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +0 -992
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/reference.md +0 -801
- moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +0 -121
- moai_adk/templates/.claude/skills/moai-claude-code/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-claude-code/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +0 -332
- moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +0 -384
- moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +0 -363
- moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +0 -595
- moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +0 -496
- moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-clojure/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-clojure/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-haskell/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-haskell/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-julia/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-julia/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-lua/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-lua/reference.md +0 -30
- {moai_adk-0.4.7.dist-info → moai_adk-0.4.10.dist-info}/WHEEL +0 -0
- {moai_adk-0.4.7.dist-info → moai_adk-0.4.10.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.4.7.dist-info → moai_adk-0.4.10.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Creating and Optimizing Claude Code Skills"
|
|
3
|
+
description: "Design reusable knowledge capsules with progressive disclosure (metadata → content → resources). Apply freedom levels (high/medium/low), create examples, validate YAML. Use when building domain-specific guidance or automating recurring patterns."
|
|
4
|
+
allowed-tools: "Read, Write, Edit, Glob, Bash"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Creating and Optimizing Claude Code Skills
|
|
8
|
+
|
|
9
|
+
Skills are modular, reusable knowledge capsules that load via Progressive Disclosure. They combine templates, patterns, and best practices without blocking user workflow.
|
|
10
|
+
|
|
11
|
+
## Skill File Structure
|
|
12
|
+
|
|
13
|
+
**Location**: `.claude/skills/skill-name/`
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
skill-name/
|
|
17
|
+
├── SKILL.md # Main instructions (~400 lines)
|
|
18
|
+
├── reference.md # Detailed reference (optional)
|
|
19
|
+
├── examples.md # Real-world examples (optional)
|
|
20
|
+
├── CHECKLIST.md # Validation guide (optional)
|
|
21
|
+
├── scripts/ # Utility scripts
|
|
22
|
+
│ ├── validator.sh
|
|
23
|
+
│ └── formatter.py
|
|
24
|
+
└── templates/ # Reusable templates
|
|
25
|
+
├── config.json
|
|
26
|
+
└── main.md
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## YAML Frontmatter
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
---
|
|
33
|
+
name: "Skill Name (Gerund + Domain)"
|
|
34
|
+
description: "[Capability]. Use when [trigger 1], [trigger 2], [trigger 3]."
|
|
35
|
+
allowed-tools: "Read, Write, Bash(python:*)"
|
|
36
|
+
---
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Field Rules
|
|
40
|
+
|
|
41
|
+
| Field | Max | Format | Example |
|
|
42
|
+
|-------|-----|--------|---------|
|
|
43
|
+
| `name` | 64 chars | Gerund + Domain | "Processing CSV Files with Python" |
|
|
44
|
+
| `description` | 1024 chars | 3rd person, 3+ triggers | "Extract data, validate schema, merge datasets. Use when processing CSV, Excel files, or data cleaning." |
|
|
45
|
+
| `allowed-tools` | — | Comma-separated minimal list | "Read, Bash(python:*), Bash(grep:*)" |
|
|
46
|
+
|
|
47
|
+
## Freedom Level Framework
|
|
48
|
+
|
|
49
|
+
| Freedom | % | Use Case | Content Style |
|
|
50
|
+
|---------|---|----------|----------------|
|
|
51
|
+
| **High** | 20-30% | Flexible, creative | Principles, trade-offs, decision trees |
|
|
52
|
+
| **Medium** | 50-60% | Standard patterns | Pseudocode, flowcharts, templates |
|
|
53
|
+
| **Low** | 10-20% | Deterministic, error-prone | Scripts, error handling, validation |
|
|
54
|
+
|
|
55
|
+
### High-Freedom: Architecture Design
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
## Architecture Trade-offs
|
|
59
|
+
|
|
60
|
+
| Pattern | Pros | Cons | When |
|
|
61
|
+
|---------|------|------|------|
|
|
62
|
+
| Monolith | Simple, unified | Scales poorly | MVP, <10 people |
|
|
63
|
+
| Microservices | Scalable, independent | Complex, distributed tracing | 10+ teams |
|
|
64
|
+
| Serverless | Zero ops, elastic | Cold starts, vendor lock-in | Event-driven |
|
|
65
|
+
|
|
66
|
+
Choose based on:
|
|
67
|
+
1. **Team size**: Monolith if <5 devs
|
|
68
|
+
2. **Scale**: Microservices if >10M requests/month
|
|
69
|
+
3. **Budget**: Serverless if unpredictable workload
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Medium-Freedom: Data Validation Pattern
|
|
73
|
+
|
|
74
|
+
```pseudocode
|
|
75
|
+
## Validation Workflow
|
|
76
|
+
|
|
77
|
+
1. Load data source (CSV, JSON, API)
|
|
78
|
+
2. For each record:
|
|
79
|
+
a. Check required fields exist
|
|
80
|
+
b. Validate data types
|
|
81
|
+
c. Verify constraints (range, format)
|
|
82
|
+
d. Check references (foreign keys)
|
|
83
|
+
3. Collect errors with row numbers
|
|
84
|
+
4. Report summary + fix suggestions
|
|
85
|
+
5. Proceed only if all errors fixed
|
|
86
|
+
|
|
87
|
+
## Example: CSV Validation
|
|
88
|
+
- Input: data.csv
|
|
89
|
+
- Schema: validators/schema.json
|
|
90
|
+
- Output: validation_report.json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Low-Freedom: Security Validator Script
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
#!/usr/bin/env python3
|
|
97
|
+
"""Validate code for OWASP Top 10 risks"""
|
|
98
|
+
import re
|
|
99
|
+
import sys
|
|
100
|
+
|
|
101
|
+
PATTERNS = [
|
|
102
|
+
(r"eval\(", "OWASP-A1: Code injection risk"),
|
|
103
|
+
(r"SELECT.*\$", "OWASP-A3: SQL injection risk"),
|
|
104
|
+
(r"os\.system\(", "OWASP-A6: Command injection risk"),
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
def validate_file(filepath):
|
|
108
|
+
with open(filepath) as f:
|
|
109
|
+
content = f.read()
|
|
110
|
+
|
|
111
|
+
issues = []
|
|
112
|
+
for pattern, risk in PATTERNS:
|
|
113
|
+
if re.search(pattern, content):
|
|
114
|
+
issues.append(risk)
|
|
115
|
+
|
|
116
|
+
return issues
|
|
117
|
+
|
|
118
|
+
if __name__ == "__main__":
|
|
119
|
+
for filepath in sys.argv[1:]:
|
|
120
|
+
issues = validate_file(filepath)
|
|
121
|
+
if issues:
|
|
122
|
+
print(f"⚠️ {filepath}:")
|
|
123
|
+
for issue in issues:
|
|
124
|
+
print(f" • {issue}")
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Progressive Disclosure Pattern
|
|
128
|
+
|
|
129
|
+
**Level 1**: Metadata (always loaded)
|
|
130
|
+
```yaml
|
|
131
|
+
name: "Database Query Optimization"
|
|
132
|
+
description: "Profile slow queries, analyze execution plans, suggest indexes..."
|
|
133
|
+
allowed-tools: "Read, Bash(sqlite3:*)"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Level 2**: Main content (on demand)
|
|
137
|
+
- Overview + quick start
|
|
138
|
+
- 3-4 core patterns
|
|
139
|
+
- Decision tree
|
|
140
|
+
|
|
141
|
+
**Level 3**: Resources (when referenced)
|
|
142
|
+
- `reference.md` — Detailed specs
|
|
143
|
+
- `examples.md` — Real-world scenarios
|
|
144
|
+
- `scripts/` — Utility tools
|
|
145
|
+
|
|
146
|
+
## Skill Discovery Keywords
|
|
147
|
+
|
|
148
|
+
Embed in description for auto-activation:
|
|
149
|
+
|
|
150
|
+
✅ **DO** include:
|
|
151
|
+
- Problem domain: "CSV", "SQL", "React", "API"
|
|
152
|
+
- Operation: "parsing", "validation", "optimization", "debugging"
|
|
153
|
+
- Tech stack: "Python", "TypeScript", "Go"
|
|
154
|
+
|
|
155
|
+
Example description:
|
|
156
|
+
```
|
|
157
|
+
"Parse CSV files, validate data schemas, clean datasets.
|
|
158
|
+
Use when processing CSV, Excel, JSON data or when user mentions
|
|
159
|
+
data cleaning, validation, or transformation."
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Medium-Freedom: Example Skill Template
|
|
163
|
+
|
|
164
|
+
```yaml
|
|
165
|
+
---
|
|
166
|
+
name: "Testing React Components with Vitest"
|
|
167
|
+
description: "Write unit tests for React components, mock hooks, test async behavior. Use when testing React components, setting up Vitest, or debugging test failures."
|
|
168
|
+
allowed-tools: "Read, Write, Bash(npm:*), Bash(npm run:*)"
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
# Testing React Components with Vitest
|
|
172
|
+
|
|
173
|
+
## Quick Start
|
|
174
|
+
|
|
175
|
+
1. Install: `npm install -D vitest @testing-library/react`
|
|
176
|
+
2. Create test: `src/Component.test.tsx`
|
|
177
|
+
3. Run: `npm run test`
|
|
178
|
+
|
|
179
|
+
## Core Patterns
|
|
180
|
+
|
|
181
|
+
### Pattern 1: Basic Component Test
|
|
182
|
+
```typescript
|
|
183
|
+
import { render, screen } from '@testing-library/react'
|
|
184
|
+
import { Button } from './Button'
|
|
185
|
+
|
|
186
|
+
it('renders button with text', () => {
|
|
187
|
+
render(<Button>Click me</Button>)
|
|
188
|
+
expect(screen.getByText('Click me')).toBeInTheDocument()
|
|
189
|
+
})
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Pattern 2: Mock Hooks
|
|
193
|
+
```typescript
|
|
194
|
+
import { useUserStore } from './store'
|
|
195
|
+
|
|
196
|
+
vi.mock('./store', () => ({
|
|
197
|
+
useUserStore: vi.fn(() => ({ user: null }))
|
|
198
|
+
}))
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Examples
|
|
202
|
+
|
|
203
|
+
See [examples.md](examples.md) for integration with Redux, React Query, form testing.
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Skill Validation Checklist
|
|
207
|
+
|
|
208
|
+
- [ ] `name` is specific (not "React Helper")
|
|
209
|
+
- [ ] `description` includes 3+ discovery keywords
|
|
210
|
+
- [ ] Main content ≤ 500 lines
|
|
211
|
+
- [ ] At least 2 concrete examples
|
|
212
|
+
- [ ] Progressive Disclosure applied (metadata → content → resources)
|
|
213
|
+
- [ ] Freedom levels mixed appropriately
|
|
214
|
+
- [ ] No hardcoded paths or time-sensitive data
|
|
215
|
+
- [ ] YAML frontmatter is valid
|
|
216
|
+
- [ ] Paths use forward slashes (`/` not `\`)
|
|
217
|
+
|
|
218
|
+
## Skill Optimization Patterns
|
|
219
|
+
|
|
220
|
+
### Anti-pattern 1: Too Generic
|
|
221
|
+
```yaml
|
|
222
|
+
❌ name: "Python Helper"
|
|
223
|
+
✅ name: "Testing Python Code with pytest"
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Anti-pattern 2: No Examples
|
|
227
|
+
```yaml
|
|
228
|
+
❌ Only principles, no code samples
|
|
229
|
+
✅ Each concept has working example
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Anti-pattern 3: Nested Files
|
|
233
|
+
```yaml
|
|
234
|
+
❌ docs/api/v2/reference/security.md
|
|
235
|
+
✅ reference.md (one level)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Anti-pattern 4: Absolute Paths
|
|
239
|
+
```yaml
|
|
240
|
+
❌ /Users/name/project/config.json
|
|
241
|
+
✅ ./config.json or ${PROJECT_DIR}/config.json
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## Best Practices
|
|
245
|
+
|
|
246
|
+
✅ **DO**:
|
|
247
|
+
- Keep < 500 lines per SKILL.md
|
|
248
|
+
- Use relative paths with forward slashes
|
|
249
|
+
- Provide working code examples
|
|
250
|
+
- Design for reusability across projects
|
|
251
|
+
- Include both success and error paths
|
|
252
|
+
|
|
253
|
+
❌ **DON'T**:
|
|
254
|
+
- Mix too many domains (split into separate Skills)
|
|
255
|
+
- Explain fundamentals (trust Claude already knows)
|
|
256
|
+
- Create nested directory structures
|
|
257
|
+
- Include time-sensitive info (dates, versions)
|
|
258
|
+
- Use Windows-style paths
|
|
259
|
+
|
|
260
|
+
## Skill Lifecycle
|
|
261
|
+
|
|
262
|
+
1. **Create**: Design persona, scope, freedom levels
|
|
263
|
+
2. **Implement**: Write SKILL.md + examples
|
|
264
|
+
3. **Test**: Verify with Haiku, Sonnet, Opus
|
|
265
|
+
4. **Deploy**: Add to `.claude/skills/`
|
|
266
|
+
5. **Iterate**: Get feedback, update as needed
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
**Reference**: Claude Code Skills official documentation
|
|
271
|
+
**Version**: 1.0.0
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Skill Name (Gerund + Domain)"
|
|
3
|
+
description: "[Capability]. Use when [trigger 1], [trigger 2], [trigger 3]."
|
|
4
|
+
allowed-tools: "Read, Write, Bash(python:*)"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill Name
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
## Core Patterns
|
|
12
|
+
|
|
13
|
+
## Examples
|
|
14
|
+
|
|
15
|
+
See examples.md for real-world scenarios.
|
|
@@ -1,52 +1,278 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Skill Factory Examples
|
|
2
|
+
|
|
3
|
+
> Real-world skill creation scenarios
|
|
2
4
|
|
|
3
5
|
_Last updated: 2025-10-22_
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Example 1: Creating a Python Testing Skill (Complete Workflow)
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
### Phase 1: Discovery (15 min)
|
|
12
|
+
|
|
13
|
+
**Problem Statement**:
|
|
14
|
+
"Developers need guidance on Python testing best practices with pytest, coverage, and fixtures."
|
|
15
|
+
|
|
16
|
+
**Trigger Keywords**:
|
|
17
|
+
`python`, `pytest`, `testing`, `fixtures`, `coverage`, `unittest`, `tdd`
|
|
18
|
+
|
|
19
|
+
**Reference URLs**:
|
|
20
|
+
- https://docs.pytest.org/en/stable/
|
|
21
|
+
- https://coverage.readthedocs.io/
|
|
22
|
+
- https://realpython.com/pytest-python-testing/
|
|
13
23
|
|
|
14
|
-
|
|
15
|
-
→ skill-factory uses WebSearch for latest TypeScript versions
|
|
16
|
-
→ Fetches official docs: https://typescriptlang.org/docs
|
|
17
|
-
→ Validates tool versions (TypeScript 5.7, Vitest 2.1, etc.)
|
|
24
|
+
**Target Tier**: Language (moai-lang-python-testing)
|
|
18
25
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### Phase 2: Design (20 min)
|
|
29
|
+
|
|
30
|
+
**Metadata**:
|
|
31
|
+
```yaml
|
|
32
|
+
---
|
|
33
|
+
name: Testing Python Applications with pytest
|
|
34
|
+
description: Write and run Python tests using pytest, manage fixtures, measure coverage, and integrate with CI/CD. Use when testing Python code, setting up test environments, or when the user mentions pytest, coverage, fixtures, or TDD.
|
|
35
|
+
allowed-tools: Read, Bash
|
|
36
|
+
---
|
|
24
37
|
```
|
|
25
38
|
|
|
26
|
-
|
|
39
|
+
**Content Outline**:
|
|
40
|
+
```
|
|
41
|
+
1. Introduction (High Freedom - 10%)
|
|
42
|
+
- Why pytest over unittest
|
|
43
|
+
- Testing philosophy
|
|
27
44
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
45
|
+
2. Core Concepts (Medium Freedom - 40%)
|
|
46
|
+
- Test discovery patterns
|
|
47
|
+
- Fixture usage
|
|
48
|
+
- Parametrization
|
|
49
|
+
- Mocking strategies
|
|
50
|
+
|
|
51
|
+
3. Examples (Medium Freedom - 30%)
|
|
52
|
+
- Simple unit test
|
|
53
|
+
- Fixture example
|
|
54
|
+
- Parametrized test
|
|
55
|
+
- Integration test
|
|
56
|
+
|
|
57
|
+
4. Coverage & CI (Low Freedom - 20%)
|
|
58
|
+
- Coverage command
|
|
59
|
+
- CI configuration (GitHub Actions)
|
|
36
60
|
```
|
|
37
61
|
|
|
38
|
-
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### Phase 3: Production (60 min)
|
|
65
|
+
|
|
66
|
+
**SKILL.md Excerpt**:
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
# Testing Python Applications with pytest
|
|
70
|
+
|
|
71
|
+
## Quick Start
|
|
39
72
|
|
|
40
73
|
```bash
|
|
41
|
-
#
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
74
|
+
# Install pytest
|
|
75
|
+
pip install pytest pytest-cov
|
|
76
|
+
|
|
77
|
+
# Run tests
|
|
78
|
+
pytest
|
|
79
|
+
|
|
80
|
+
# With coverage
|
|
81
|
+
pytest --cov=src --cov-report=term-missing
|
|
48
82
|
```
|
|
49
83
|
|
|
84
|
+
## Core Concepts
|
|
85
|
+
|
|
86
|
+
### Test Discovery
|
|
87
|
+
|
|
88
|
+
pytest automatically discovers tests matching these patterns:
|
|
89
|
+
- Files: `test_*.py` or `*_test.py`
|
|
90
|
+
- Functions: `test_*`
|
|
91
|
+
- Classes: `Test*`
|
|
92
|
+
|
|
93
|
+
### Fixtures
|
|
94
|
+
|
|
95
|
+
Fixtures provide reusable test setup:
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
import pytest
|
|
99
|
+
|
|
100
|
+
@pytest.fixture
|
|
101
|
+
def user_data():
|
|
102
|
+
return {"name": "Alice", "age": 30}
|
|
103
|
+
|
|
104
|
+
def test_user_creation(user_data):
|
|
105
|
+
assert user_data["name"] == "Alice"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
For complete reference, see [reference.md](reference.md).
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**reference.md Excerpt**:
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
# pytest Reference
|
|
115
|
+
|
|
116
|
+
## Fixture Scopes
|
|
117
|
+
|
|
118
|
+
- `function` (default): Run once per test function
|
|
119
|
+
- `class`: Run once per test class
|
|
120
|
+
- `module`: Run once per module
|
|
121
|
+
- `session`: Run once per test session
|
|
122
|
+
|
|
123
|
+
## Parametrization
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
@pytest.mark.parametrize("input,expected", [
|
|
127
|
+
(2, 4),
|
|
128
|
+
(3, 9),
|
|
129
|
+
(4, 16),
|
|
130
|
+
])
|
|
131
|
+
def test_square(input, expected):
|
|
132
|
+
assert input ** 2 == expected
|
|
133
|
+
```
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**examples.md Excerpt**:
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
# pytest Examples
|
|
140
|
+
|
|
141
|
+
## Example 1: API Testing with Fixtures
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
import pytest
|
|
145
|
+
import requests
|
|
146
|
+
|
|
147
|
+
@pytest.fixture
|
|
148
|
+
def api_client():
|
|
149
|
+
return requests.Session()
|
|
150
|
+
|
|
151
|
+
@pytest.fixture
|
|
152
|
+
def base_url():
|
|
153
|
+
return "https://api.example.com"
|
|
154
|
+
|
|
155
|
+
def test_get_user(api_client, base_url):
|
|
156
|
+
response = api_client.get(f"{base_url}/users/1")
|
|
157
|
+
assert response.status_code == 200
|
|
158
|
+
assert "id" in response.json()
|
|
159
|
+
```
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
### Phase 4: Validation (20 min)
|
|
165
|
+
|
|
166
|
+
**Checklist Results**:
|
|
167
|
+
- ✅ Name: 45 characters (gerund format)
|
|
168
|
+
- ✅ Description: 256 characters (includes 7 keywords)
|
|
169
|
+
- ✅ SKILL.md: 420 lines
|
|
170
|
+
- ✅ Examples: 4 scenarios included
|
|
171
|
+
- ✅ Tested with Haiku and Sonnet
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Example 2: Creating a Git Workflow Skill (Abbreviated)
|
|
176
|
+
|
|
177
|
+
### Discovery
|
|
178
|
+
|
|
179
|
+
**Problem**: "Developers need GitFlow automation with commit conventions and PR templates."
|
|
180
|
+
|
|
181
|
+
**Keywords**: `git`, `gitflow`, `commit`, `pr`, `pull request`, `branch`, `merge`
|
|
182
|
+
|
|
183
|
+
### Design
|
|
184
|
+
|
|
185
|
+
```yaml
|
|
186
|
+
name: Automating Git Workflows with GitFlow
|
|
187
|
+
description: Manage Git branches using GitFlow, write conventional commits, create pull requests, and automate releases. Use when working with Git repositories, feature branches, or when the user mentions GitFlow, commits, or pull requests.
|
|
188
|
+
allowed-tools: Read, Bash
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Content Structure
|
|
192
|
+
- 35% High Freedom: Branch strategy philosophy
|
|
193
|
+
- 45% Medium Freedom: Commit patterns, PR templates
|
|
194
|
+
- 20% Low Freedom: Git commands, automation scripts
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Example 3: Creating a Security Scanning Skill (Abbreviated)
|
|
199
|
+
|
|
200
|
+
### Discovery
|
|
201
|
+
|
|
202
|
+
**Problem**: "Projects need automated security scanning for dependencies and SAST."
|
|
203
|
+
|
|
204
|
+
**Keywords**: `security`, `sast`, `vulnerabilities`, `dependencies`, `owasp`, `audit`
|
|
205
|
+
|
|
206
|
+
### Design
|
|
207
|
+
|
|
208
|
+
```yaml
|
|
209
|
+
name: Securing Applications with SAST and Dependency Scanning
|
|
210
|
+
description: Run static application security testing (SAST), scan dependencies for vulnerabilities, enforce OWASP Top 10 compliance, and integrate security checks into CI/CD. Use when performing security audits, scanning for vulnerabilities, or when the user mentions SAST, OWASP, or security scanning.
|
|
211
|
+
allowed-tools: Read, Bash
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Freedom Breakdown
|
|
215
|
+
- 25% High: Security principles, threat modeling
|
|
216
|
+
- 35% Medium: Scanning patterns, report interpretation
|
|
217
|
+
- 40% Low: Specific scanning commands per language
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Common Skill Creation Mistakes
|
|
222
|
+
|
|
223
|
+
### Mistake 1: Too Generic
|
|
224
|
+
|
|
225
|
+
❌ **Bad Name**: "Python Helper"
|
|
226
|
+
✅ **Good Name**: "Testing Python Applications with pytest"
|
|
227
|
+
|
|
228
|
+
### Mistake 2: Missing Keywords
|
|
229
|
+
|
|
230
|
+
❌ **Bad Description**: "Helps with Python testing."
|
|
231
|
+
✅ **Good Description**: "Write and run Python tests using pytest, fixtures, parametrization, and coverage reporting."
|
|
232
|
+
|
|
233
|
+
### Mistake 3: No Examples
|
|
234
|
+
|
|
235
|
+
❌ **Bad Practice**: Only provide theory and no code examples
|
|
236
|
+
✅ **Good Practice**: Include 3-4 complete, runnable examples
|
|
237
|
+
|
|
238
|
+
### Mistake 4: Outdated Information
|
|
239
|
+
|
|
240
|
+
❌ **Bad**: "Use Python 2.7 with unittest"
|
|
241
|
+
✅ **Good**: "Use Python 3.11+ with pytest (latest stable version)"
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Skill Creation Time Estimates
|
|
246
|
+
|
|
247
|
+
| Skill Complexity | Discovery | Design | Production | Validation | Total |
|
|
248
|
+
|-----------------|-----------|---------|-----------|------------|-------|
|
|
249
|
+
| **Simple** (single tool) | 10 min | 15 min | 30 min | 10 min | ~1 hour |
|
|
250
|
+
| **Medium** (multi-tool, 3-5 examples) | 15 min | 20 min | 60 min | 20 min | ~2 hours |
|
|
251
|
+
| **Complex** (multi-domain, 5+ examples) | 30 min | 30 min | 90 min | 30 min | ~3 hours |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Quick Skill Creation Checklist
|
|
256
|
+
|
|
257
|
+
- [ ] Problem statement (1-2 sentences)
|
|
258
|
+
- [ ] 5+ trigger keywords identified
|
|
259
|
+
- [ ] 3+ reference URLs collected
|
|
260
|
+
- [ ] Name written (gerund + domain, ≤64 chars)
|
|
261
|
+
- [ ] Description written (capabilities + triggers, ≤1024 chars)
|
|
262
|
+
- [ ] Allowed tools listed (minimal set)
|
|
263
|
+
- [ ] Content outline (High/Medium/Low freedom %)
|
|
264
|
+
- [ ] SKILL.md written (≤500 lines)
|
|
265
|
+
- [ ] reference.md created (detailed docs)
|
|
266
|
+
- [ ] examples.md created (3-4 scenarios)
|
|
267
|
+
- [ ] CHECKLIST.md validation passed
|
|
268
|
+
- [ ] Tested with Haiku and Sonnet
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
**For complete skill creation reference, see [reference.md](reference.md)**
|
|
273
|
+
|
|
50
274
|
---
|
|
51
275
|
|
|
52
|
-
|
|
276
|
+
**Last Updated**: 2025-10-22
|
|
277
|
+
**Examples**: 3 complete workflows + mistake patterns
|
|
278
|
+
**Maintained by**: MoAI-ADK Foundation Team
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Interactive Discovery: TUI-Based Skill Requirement Gathering
|
|
2
2
|
|
|
3
|
-
This guide covers using **moai-alfred-
|
|
3
|
+
This guide covers using **moai-alfred-interactive-questions** Skill to engage users through interactive dialogue and clarify Skill requirements.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -242,13 +242,13 @@ framework_versions = {
|
|
|
242
242
|
|
|
243
243
|
**Available Stable Version Matrix** (referenced as source of truth):
|
|
244
244
|
|
|
245
|
-
| Framework
|
|
246
|
-
|
|
247
|
-
| **Python**
|
|
248
|
-
| **Node.js** | 23.0.0 | 22.11.0
|
|
249
|
-
| **Go**
|
|
250
|
-
| **Rust**
|
|
251
|
-
| **Java**
|
|
245
|
+
| Framework | Latest | LTS | EOL Date | Ref |
|
|
246
|
+
| ----------- | ------ | ---------- | ------------- | -------------------------------------- |
|
|
247
|
+
| **Python** | 3.13.1 | 3.12.7 | 3.12: 2028-10 | [python.org](https://python.org) |
|
|
248
|
+
| **Node.js** | 23.0.0 | 22.11.0 | 22.x: 2025-10 | [nodejs.org](https://nodejs.org) |
|
|
249
|
+
| **Go** | 1.23.3 | 1.22.x | 1.22: 2025-02 | [golang.org](https://golang.org) |
|
|
250
|
+
| **Rust** | 1.82.0 | MSRV: 1.70 | N/A | [rust-lang.org](https://rust-lang.org) |
|
|
251
|
+
| **Java** | 23.0.1 | 21.0.x | 21: 2028-09 | [oracle.com](https://oracle.com) |
|
|
252
252
|
|
|
253
253
|
**When This Survey Is Needed**:
|
|
254
254
|
- ✅ Creating a new Skill (always)
|
|
@@ -501,12 +501,12 @@ WebSearch findings INFORM the Skill
|
|
|
501
501
|
|
|
502
502
|
Map survey answers to research queries:
|
|
503
503
|
|
|
504
|
-
| Survey Answer | WebSearch Topic | Example Query
|
|
505
|
-
|
|
506
|
-
| Python 3.12
|
|
507
|
-
| Async testing | Modern pattern
|
|
508
|
-
| Performance
|
|
509
|
-
| Security
|
|
504
|
+
| Survey Answer | WebSearch Topic | Example Query |
|
|
505
|
+
| ------------- | --------------- | ----------------------------------- |
|
|
506
|
+
| Python 3.12 | Latest version | "Python 3.12 best practices 2025" |
|
|
507
|
+
| Async testing | Modern pattern | "async/await testing patterns 2025" |
|
|
508
|
+
| Performance | Optimization | "performance profiling tools 2025" |
|
|
509
|
+
| Security | Compliance | "OWASP security patterns 2025" |
|
|
510
510
|
|
|
511
511
|
---
|
|
512
512
|
|
|
@@ -515,7 +515,7 @@ Map survey answers to research queries:
|
|
|
515
515
|
- [SKILL.md](SKILL.md) — Main Skill framework
|
|
516
516
|
- [WEB-RESEARCH.md](WEB-RESEARCH.md) — Using discoveries in research
|
|
517
517
|
- [skill-factory.md](../../agents/alfred/skill-factory.md) — Sub-Agent orchestration
|
|
518
|
-
- `moai-alfred-
|
|
518
|
+
- `moai-alfred-interactive-questions` Skill — TUI implementation
|
|
519
519
|
|
|
520
520
|
---
|
|
521
521
|
|