@olegkoval/agent-skills 1.3.2 → 1.5.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.
Files changed (19) hide show
  1. package/.claude-plugin/plugin.json +3 -1
  2. package/.cursor-plugin/index.json +10 -0
  3. package/catalog/skills.json +45 -0
  4. package/package.json +1 -1
  5. package/packages/software-development/ai-tools-setup/SKILL.md +274 -0
  6. package/packages/software-development/ai-tools-setup/adapters/claude/plugin.json +5 -0
  7. package/packages/software-development/ai-tools-setup/adapters/claude/skills/ai-tools-setup/SKILL.md +276 -0
  8. package/packages/software-development/ai-tools-setup/adapters/codex/README.md +3 -0
  9. package/packages/software-development/ai-tools-setup/adapters/cursor/plugin.json +6 -0
  10. package/packages/software-development/ai-tools-setup/adapters/cursor/skills/ai-tools-setup/SKILL.md +276 -0
  11. package/packages/software-development/open-source-publisher/SKILL.md +45 -0
  12. package/packages/software-development/open-source-publisher/adapters/claude/skills/open-source-publisher/SKILL.md +45 -0
  13. package/packages/software-development/open-source-publisher/adapters/cursor/skills/open-source-publisher/SKILL.md +45 -0
  14. package/packages/software-development/starter-rules/SKILL.md +70 -0
  15. package/packages/software-development/starter-rules/adapters/claude/plugin.json +5 -0
  16. package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md +72 -0
  17. package/packages/software-development/starter-rules/adapters/codex/README.md +16 -0
  18. package/packages/software-development/starter-rules/adapters/cursor/plugin.json +5 -0
  19. package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md +72 -0
@@ -0,0 +1,276 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ name: ai-tools-setup
5
+ description: 'Set up, repair, and report on the RTK+ICM+Vox AI development toolkit. Installs missing tools, fixes broken hooks and MCP config, and shows an effectiveness digest — token savings, memory accumulation, voice health — on demand or as a scheduled weekly report.'
6
+ license: MIT
7
+ allowed-tools: Bash, Read, Edit, Write
8
+ compatibility: Claude Code on macOS (Homebrew required)
9
+ metadata:
10
+ author: Oleg Koval
11
+ tags:
12
+ - rtk
13
+ - icm
14
+ - vox
15
+ - setup
16
+ - hooks
17
+ - digest
18
+ - ai-tools
19
+ - productivity
20
+ ---
21
+
22
+ # AI Tools Setup — RTK + ICM + Vox
23
+
24
+ Install, repair, and measure the RTK+ICM+Vox toolkit for Claude Code.
25
+
26
+ ## What This Skill Does
27
+
28
+ | Mode | When to use |
29
+ |------|-------------|
30
+ | **Setup** | First install on a new machine |
31
+ | **Repair** | Something broke — hooks missing, MCP not loading |
32
+ | **Digest** | Weekly check: token savings, memory health, voice stats |
33
+
34
+ ## Tools in the Bundle
35
+
36
+ | Tool | Version | Purpose |
37
+ |------|---------|---------|
38
+ | **RTK** | latest | Compresses CLI output by ~89% before it reaches the model |
39
+ | **ICM** | latest | Persistent SQLite memory across sessions (knowledge graph + hybrid search) |
40
+ | **Vox** | latest | Spoken task notifications via local TTS — zero API calls |
41
+
42
+ ---
43
+
44
+ ## Step 1: Detect Current State
45
+
46
+ Run this to see what is installed and what is missing:
47
+
48
+ ```bash
49
+ echo "=== Binary check ===" && \
50
+ (rtk --version 2>/dev/null && echo "RTK: ok") || echo "RTK: MISSING" && \
51
+ (icm --version 2>/dev/null && echo "ICM: ok") || echo "ICM: MISSING" && \
52
+ (vox --version 2>/dev/null && echo "Vox: ok") || echo "Vox: MISSING"
53
+
54
+ echo "=== RTK hook ===" && \
55
+ grep -c '"rtk hook claude"' ~/.claude/settings.json 2>/dev/null \
56
+ && echo "RTK hook: ok" || echo "RTK hook: MISSING"
57
+
58
+ echo "=== ICM hooks ===" && \
59
+ grep -c '"icm hook' ~/.claude/settings.json 2>/dev/null \
60
+ && echo "ICM hooks: ok" || echo "ICM hooks: MISSING"
61
+
62
+ echo "=== ICM MCP ===" && \
63
+ python3 -c "import json; d=json.load(open(open('$HOME/.claude.json').name)); print('ICM MCP: ok' if 'icm' in d.get('mcpServers',{}) else 'ICM MCP: MISSING')" 2>/dev/null || echo "ICM MCP: MISSING"
64
+
65
+ echo "=== Vox MCP ===" && \
66
+ python3 -c "import json; d=json.load(open(open('$HOME/.claude.json').name)); print('Vox MCP: ok' if 'vox' in d.get('mcpServers',{}) else 'Vox MCP: MISSING')" 2>/dev/null || echo "Vox MCP: MISSING"
67
+
68
+ echo "=== ICM CLAUDE.md ===" && \
69
+ grep -c 'icm:start' ~/.claude/CLAUDE.md 2>/dev/null \
70
+ && echo "ICM CLAUDE.md: ok" || echo "ICM CLAUDE.md: MISSING"
71
+ ```
72
+
73
+ Read the output and determine which of the following repair steps are needed.
74
+
75
+ ---
76
+
77
+ ## Step 2: Install Missing Binaries
78
+
79
+ Only run for tools that showed MISSING above.
80
+
81
+ **RTK:**
82
+ ```bash
83
+ brew install rtk
84
+ rtk --version
85
+ ```
86
+
87
+ **ICM:**
88
+ ```bash
89
+ brew install rtk-ai/tap/icm
90
+ icm --version
91
+ ```
92
+
93
+ **Vox:**
94
+ ```bash
95
+ brew install rtk-ai/tap/vox
96
+ vox --version
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Step 3: Repair Hooks
102
+
103
+ ### RTK hook missing
104
+
105
+ Add the `PreToolUse` RTK hook to `~/.claude/settings.json`. Read the file first, then add inside the existing `"hooks"` block (or create one):
106
+
107
+ ```json
108
+ "PreToolUse": [
109
+ {
110
+ "matcher": "Bash",
111
+ "hooks": [{ "type": "command", "command": "rtk hook claude" }]
112
+ }
113
+ ]
114
+ ```
115
+
116
+ Then verify: `grep -c '"rtk hook claude"' ~/.claude/settings.json`
117
+
118
+ ### ICM hooks missing
119
+
120
+ Run:
121
+ ```bash
122
+ icm init --mode hook
123
+ ```
124
+
125
+ This adds `PreToolUse`, `PostToolUse`, `PreCompact`, `UserPromptSubmit`, `SessionStart`, `SessionEnd` hooks automatically.
126
+
127
+ ### Vox Stop hook missing
128
+
129
+ Run:
130
+ ```bash
131
+ vox init --mode cli
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Step 4: Repair MCP Servers
137
+
138
+ ### ICM MCP missing
139
+
140
+ ```bash
141
+ icm init --mode mcp
142
+ ```
143
+
144
+ ### Vox MCP missing
145
+
146
+ ```bash
147
+ vox init --mode mcp
148
+ ```
149
+
150
+ Verify both by checking `~/.claude.json`:
151
+ ```bash
152
+ python3 -c "import json; d=json.load(open('$HOME/.claude.json')); print(list(d.get('mcpServers',{}).keys()))"
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Step 5: Repair CLAUDE.md Instructions
158
+
159
+ If ICM instructions are missing from `~/.claude/CLAUDE.md`:
160
+
161
+ ```bash
162
+ icm init --mode cli
163
+ ```
164
+
165
+ Then move the block from wherever `icm init` placed it into `~/.claude/CLAUDE.md` (the global file), and remove it from any project-local files.
166
+
167
+ ---
168
+
169
+ ## Step 6: Effectiveness Digest
170
+
171
+ Run this report to see how the toolkit is performing. Good to run weekly.
172
+
173
+ ```bash
174
+ echo "=============================="
175
+ echo " AI TOOLS EFFECTIVENESS"
176
+ echo "=============================="
177
+ echo ""
178
+ echo "--- RTK: Token Savings ---"
179
+ rtk gain 2>/dev/null || echo "No data yet (run some commands first)"
180
+ echo ""
181
+ echo "--- ICM: Memory Health ---"
182
+ icm health 2>/dev/null || echo "No memories yet"
183
+ echo ""
184
+ echo "--- ICM: Topics ---"
185
+ icm topics 2>/dev/null || echo "No topics yet"
186
+ echo ""
187
+ echo "--- Vox: Usage ---"
188
+ vox stats 2>/dev/null || echo "No stats yet"
189
+ echo ""
190
+ echo "=============================="
191
+ ```
192
+
193
+ ### What healthy output looks like
194
+
195
+ - **RTK**: `Tokens saved: 5M+ (85%+)` across `500+ commands` — if savings are low, run `rtk discover` to find uncovered commands
196
+ - **ICM**: Topics like `decisions-*`, `errors-resolved`, `preferences` with recent timestamps — if empty, start storing manually with `icm store`
197
+ - **Vox**: Non-zero speak count means the Stop hook fired
198
+
199
+ ---
200
+
201
+ ## Step 7 (Optional): Schedule a Weekly Digest
202
+
203
+ To get a weekly automated report without having to remember to run this skill:
204
+
205
+ ```bash
206
+ # Create a weekly digest script
207
+ cat > ~/ai-tools-digest.sh << 'EOF'
208
+ #!/bin/bash
209
+ echo "=== Weekly AI Tools Digest — $(date) ===" | tee -a ~/ai-tools-digest.log
210
+ echo "" | tee -a ~/ai-tools-digest.log
211
+ rtk gain 2>/dev/null | tee -a ~/ai-tools-digest.log
212
+ echo "" | tee -a ~/ai-tools-digest.log
213
+ icm health 2>/dev/null | tee -a ~/ai-tools-digest.log
214
+ echo "" | tee -a ~/ai-tools-digest.log
215
+ icm topics 2>/dev/null | tee -a ~/ai-tools-digest.log
216
+ # Speak the summary if Vox is available
217
+ vox "Weekly digest complete. Check your log." 2>/dev/null || true
218
+ EOF
219
+ chmod +x ~/ai-tools-digest.sh
220
+ ```
221
+
222
+ Then set up a weekly launchd job (macOS):
223
+
224
+ ```bash
225
+ cat > ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist << 'EOF'
226
+ <?xml version="1.0" encoding="UTF-8"?>
227
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
228
+ <plist version="1.0">
229
+ <dict>
230
+ <key>Label</key>
231
+ <string>com.oleg.ai-tools-digest</string>
232
+ <key>ProgramArguments</key>
233
+ <array>
234
+ <string>/bin/bash</string>
235
+ <string>/Users/oleg.koval/ai-tools-digest.sh</string>
236
+ </array>
237
+ <key>StartCalendarInterval</key>
238
+ <dict>
239
+ <key>Weekday</key>
240
+ <integer>1</integer>
241
+ <key>Hour</key>
242
+ <integer>9</integer>
243
+ <key>Minute</key>
244
+ <integer>0</integer>
245
+ </dict>
246
+ <key>StandardOutPath</key>
247
+ <string>/tmp/ai-tools-digest.log</string>
248
+ <key>StandardErrorPath</key>
249
+ <string>/tmp/ai-tools-digest.err</string>
250
+ </dict>
251
+ </plist>
252
+ EOF
253
+
254
+ launchctl load ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist
255
+ echo "Weekly digest scheduled for Mondays at 9am"
256
+ ```
257
+
258
+ To view the digest log anytime: `cat ~/ai-tools-digest.log`
259
+
260
+ To unload: `launchctl unload ~/Library/LaunchAgents/com.oleg.ai-tools-digest.plist`
261
+
262
+ ---
263
+
264
+ ## Quick Reference
265
+
266
+ | Command | What it does |
267
+ |---------|-------------|
268
+ | `rtk gain` | Total tokens saved to date |
269
+ | `rtk discover` | Find commands not yet covered by RTK |
270
+ | `icm topics` | List all memory topic buckets |
271
+ | `icm health` | Memory hygiene — stale, redundant, decay stats |
272
+ | `icm recall "query"` | Search memories semantically |
273
+ | `icm store -t topic -c "content" -i high` | Store a memory manually |
274
+ | `vox "text"` | Speak text immediately |
275
+ | `vox stats` | Usage stats for the Vox backend |
276
+ | `cat ~/ai-tools-digest.log` | View scheduled digest history |
@@ -52,6 +52,7 @@ Use this skill to audit whether an OSS repository is ready to publish, then help
52
52
  - social preview image
53
53
  - README standard
54
54
  - GitHub Pages landing page
55
+ - GitHub Pages analytics setup, if requested
55
56
  - CI/CD and release audit/fixes
56
57
  - donation wiring, if requested
57
58
  8. Validate locally and with browser/screenshots when possible.
@@ -73,6 +74,7 @@ Publish-critical checklist:
73
74
  - icon: simple SVG mark plus rendered PNG, both committed in predictable paths
74
75
  - social image: 1200x630 image with matching metadata, with both SVG source and rendered PNG committed when practical
75
76
  - GitHub Pages or docs site: essential install/examples/links/SEO/Open Graph metadata
77
+ - GitHub Pages analytics: optional setup to track visitor patterns and engagement
76
78
  - CI quality gates: formatter, linter/static analysis, tests, build/package check
77
79
  - release automation: tags/releases/artifacts/package update flow, docs-only changes excluded where needed
78
80
  - security posture: license, security notes or policy, OpenSSF Scorecard or equivalent when appropriate
@@ -304,6 +306,49 @@ Implementation defaults:
304
306
  - Avoid marketing fluff and oversized hero sections for developer tools. Make the first viewport useful.
305
307
  - Use system UI fonts for body text and monospace only for commands, labels, or terminal-specific elements.
306
308
 
309
+ ## GitHub Pages Analytics
310
+
311
+ Add basic analytics to track site visitor patterns and user behavior when the project has a GitHub Pages site.
312
+
313
+ Setup options:
314
+
315
+ - **Google Analytics** (free, detailed): Add UA or GA4 tracking ID to site `<head>`
316
+ - **Plausible** (simple, privacy-first, paid): Lightweight script alternative
317
+ - **Simple counter** (basic): Visitor count badge using Shields.io or statically-generated endpoint
318
+
319
+ Minimal Google Analytics setup for static sites:
320
+
321
+ ```html
322
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-YOUR_ID"></script>
323
+ <script>
324
+ window.dataLayer = window.dataLayer || [];
325
+ function gtag(){dataLayer.push(arguments);}
326
+ gtag('js', new Date());
327
+ gtag('config', 'G-YOUR_ID');
328
+ </script>
329
+ ```
330
+
331
+ Track these essential events:
332
+
333
+ - **pageview** (automatic): Site visitors and page sections
334
+ - **download_release**: Clicks on install/download links (track each platform/format)
335
+ - **view_docs**: Navigation to documentation pages
336
+ - **github_click**: Click through to GitHub repo
337
+ - **copy_command**: Code snippet copies in examples
338
+
339
+ Optional custom events for OSS projects:
340
+
341
+ - **search_docs**: If docs site has search
342
+ - **view_example**: Specific example/use-case sections viewed
343
+ - **support_click**: Link clicks to issues, discussions, or support channels
344
+
345
+ Rules:
346
+
347
+ - Add analytics after publishing the site; do not gate site launch on analytics.
348
+ - If the user prefers privacy-first or no analytics, skip this step.
349
+ - Store analytics credentials as GitHub Pages environment secret or site config, never in git.
350
+ - Review monthly to catch unusual patterns or broken tracking links.
351
+
307
352
  ## CI/CD And Release Audit
308
353
 
309
354
  Check whether the repository has:
@@ -54,6 +54,7 @@ Use this skill to audit whether an OSS repository is ready to publish, then help
54
54
  - social preview image
55
55
  - README standard
56
56
  - GitHub Pages landing page
57
+ - GitHub Pages analytics setup, if requested
57
58
  - CI/CD and release audit/fixes
58
59
  - donation wiring, if requested
59
60
  8. Validate locally and with browser/screenshots when possible.
@@ -75,6 +76,7 @@ Publish-critical checklist:
75
76
  - icon: simple SVG mark plus rendered PNG, both committed in predictable paths
76
77
  - social image: 1200x630 image with matching metadata, with both SVG source and rendered PNG committed when practical
77
78
  - GitHub Pages or docs site: essential install/examples/links/SEO/Open Graph metadata
79
+ - GitHub Pages analytics: optional setup to track visitor patterns and engagement
78
80
  - CI quality gates: formatter, linter/static analysis, tests, build/package check
79
81
  - release automation: tags/releases/artifacts/package update flow, docs-only changes excluded where needed
80
82
  - security posture: license, security notes or policy, OpenSSF Scorecard or equivalent when appropriate
@@ -306,6 +308,49 @@ Implementation defaults:
306
308
  - Avoid marketing fluff and oversized hero sections for developer tools. Make the first viewport useful.
307
309
  - Use system UI fonts for body text and monospace only for commands, labels, or terminal-specific elements.
308
310
 
311
+ ## GitHub Pages Analytics
312
+
313
+ Add basic analytics to track site visitor patterns and user behavior when the project has a GitHub Pages site.
314
+
315
+ Setup options:
316
+
317
+ - **Google Analytics** (free, detailed): Add UA or GA4 tracking ID to site `<head>`
318
+ - **Plausible** (simple, privacy-first, paid): Lightweight script alternative
319
+ - **Simple counter** (basic): Visitor count badge using Shields.io or statically-generated endpoint
320
+
321
+ Minimal Google Analytics setup for static sites:
322
+
323
+ ```html
324
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-YOUR_ID"></script>
325
+ <script>
326
+ window.dataLayer = window.dataLayer || [];
327
+ function gtag(){dataLayer.push(arguments);}
328
+ gtag('js', new Date());
329
+ gtag('config', 'G-YOUR_ID');
330
+ </script>
331
+ ```
332
+
333
+ Track these essential events:
334
+
335
+ - **pageview** (automatic): Site visitors and page sections
336
+ - **download_release**: Clicks on install/download links (track each platform/format)
337
+ - **view_docs**: Navigation to documentation pages
338
+ - **github_click**: Click through to GitHub repo
339
+ - **copy_command**: Code snippet copies in examples
340
+
341
+ Optional custom events for OSS projects:
342
+
343
+ - **search_docs**: If docs site has search
344
+ - **view_example**: Specific example/use-case sections viewed
345
+ - **support_click**: Link clicks to issues, discussions, or support channels
346
+
347
+ Rules:
348
+
349
+ - Add analytics after publishing the site; do not gate site launch on analytics.
350
+ - If the user prefers privacy-first or no analytics, skip this step.
351
+ - Store analytics credentials as GitHub Pages environment secret or site config, never in git.
352
+ - Review monthly to catch unusual patterns or broken tracking links.
353
+
309
354
  ## CI/CD And Release Audit
310
355
 
311
356
  Check whether the repository has:
@@ -54,6 +54,7 @@ Use this skill to audit whether an OSS repository is ready to publish, then help
54
54
  - social preview image
55
55
  - README standard
56
56
  - GitHub Pages landing page
57
+ - GitHub Pages analytics setup, if requested
57
58
  - CI/CD and release audit/fixes
58
59
  - donation wiring, if requested
59
60
  8. Validate locally and with browser/screenshots when possible.
@@ -75,6 +76,7 @@ Publish-critical checklist:
75
76
  - icon: simple SVG mark plus rendered PNG, both committed in predictable paths
76
77
  - social image: 1200x630 image with matching metadata, with both SVG source and rendered PNG committed when practical
77
78
  - GitHub Pages or docs site: essential install/examples/links/SEO/Open Graph metadata
79
+ - GitHub Pages analytics: optional setup to track visitor patterns and engagement
78
80
  - CI quality gates: formatter, linter/static analysis, tests, build/package check
79
81
  - release automation: tags/releases/artifacts/package update flow, docs-only changes excluded where needed
80
82
  - security posture: license, security notes or policy, OpenSSF Scorecard or equivalent when appropriate
@@ -306,6 +308,49 @@ Implementation defaults:
306
308
  - Avoid marketing fluff and oversized hero sections for developer tools. Make the first viewport useful.
307
309
  - Use system UI fonts for body text and monospace only for commands, labels, or terminal-specific elements.
308
310
 
311
+ ## GitHub Pages Analytics
312
+
313
+ Add basic analytics to track site visitor patterns and user behavior when the project has a GitHub Pages site.
314
+
315
+ Setup options:
316
+
317
+ - **Google Analytics** (free, detailed): Add UA or GA4 tracking ID to site `<head>`
318
+ - **Plausible** (simple, privacy-first, paid): Lightweight script alternative
319
+ - **Simple counter** (basic): Visitor count badge using Shields.io or statically-generated endpoint
320
+
321
+ Minimal Google Analytics setup for static sites:
322
+
323
+ ```html
324
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-YOUR_ID"></script>
325
+ <script>
326
+ window.dataLayer = window.dataLayer || [];
327
+ function gtag(){dataLayer.push(arguments);}
328
+ gtag('js', new Date());
329
+ gtag('config', 'G-YOUR_ID');
330
+ </script>
331
+ ```
332
+
333
+ Track these essential events:
334
+
335
+ - **pageview** (automatic): Site visitors and page sections
336
+ - **download_release**: Clicks on install/download links (track each platform/format)
337
+ - **view_docs**: Navigation to documentation pages
338
+ - **github_click**: Click through to GitHub repo
339
+ - **copy_command**: Code snippet copies in examples
340
+
341
+ Optional custom events for OSS projects:
342
+
343
+ - **search_docs**: If docs site has search
344
+ - **view_example**: Specific example/use-case sections viewed
345
+ - **support_click**: Link clicks to issues, discussions, or support channels
346
+
347
+ Rules:
348
+
349
+ - Add analytics after publishing the site; do not gate site launch on analytics.
350
+ - If the user prefers privacy-first or no analytics, skip this step.
351
+ - Store analytics credentials as GitHub Pages environment secret or site config, never in git.
352
+ - Review monthly to catch unusual patterns or broken tracking links.
353
+
309
354
  ## CI/CD And Release Audit
310
355
 
311
356
  Check whether the repository has:
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: starter-rules
3
+ description: Load and enforce the hard rules every oleg-koval/* starter must obey. Use when starting or auditing work in saas-init, ts-npm-starter, go-starter, py-starter, or any future oleg-koval template repo. Covers functional style, 300-line file cap, E2E > unit tests, pre-commit hooks, no-comment policy, KISS/DRY/SOLID, and Vertical Slice as default architecture for SaaS/app starters.
4
+ license: MIT
5
+ compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools.
6
+ metadata:
7
+ author: Oleg Koval
8
+ tags:
9
+ - starters
10
+ - rules
11
+ - architecture
12
+ - vertical-slice
13
+ - linting
14
+ - pre-commit
15
+ ---
16
+
17
+ # Starter Rules
18
+
19
+ ## Overview
20
+
21
+ Load the canonical hard rules for every `oleg-koval/*` starter repo and verify the current repo complies with them. Produces a compliance report and a list of gaps to fix.
22
+
23
+ ## When to Use
24
+
25
+ - Starting a new coding session in any `oleg-koval/*` template repo
26
+ - Auditing an existing starter for rule compliance before a release or PR merge
27
+ - Onboarding a new contributor (human or AI) to a starter
28
+ - After a large refactor, to verify rules have not been silently violated
29
+
30
+ Do not use for repos outside the `oleg-koval` namespace unless they explicitly reference `RULES.md`.
31
+
32
+ ## Workflow
33
+
34
+ 1. **Load the rules** — read `RULES.md` from the repo root. If absent, fetch it from `https://github.com/oleg-koval/starters/blob/main/RULES.md` and note that the starter is missing a local copy.
35
+
36
+ 2. **Apply §2 hard rules** — for the current task or PR diff, verify:
37
+ - No file exceeds 300 lines (`find . -name '*.ts' -o -name '*.py' -o -name '*.go' | xargs wc -l | awk '$1 > 300 && $2 != "total"'`)
38
+ - No functions produce side effects outside of boundary layers
39
+ - New code has no WHAT-comments; WHY-comments are one line max
40
+ - Tests are E2E-first; unit tests only for pure logic with non-trivial branching
41
+
42
+ 3. **Verify hooks and lint** — check that pre-commit hooks are installed and configured:
43
+ - TypeScript: `cat .eslintrc* | grep max-lines` and `cat package.json | grep -A5 '"lint-staged"\|"husky"\|"lefthook"'`
44
+ - Python: `cat .pre-commit-config.yaml` and check for `ruff` + format hooks
45
+ - Go: `cat .golangci.yml` or `.pre-commit-config.yaml` and check for `golangci-lint` + `gofmt`
46
+
47
+ 4. **Check architecture** — for app/SaaS starters: confirm feature code is organized as vertical slices (feature directory contains handler + DTO + service + tests together). For library starters: skip.
48
+
49
+ 5. **Report gaps** — list any violations found in steps 2–4. For each gap:
50
+ - Name the rule (e.g., "§2.2 file length")
51
+ - Name the file and line count or violation
52
+ - Propose the minimal fix
53
+
54
+ 6. **Fix on request** — if the user asks to fix the gaps, apply them one at a time, smallest change first. Do not refactor beyond what the rule requires.
55
+
56
+ ## Reference
57
+
58
+ Full rule details: [`RULES.md`](./RULES.md)
59
+
60
+ Architecture options and future starters: `RULES.md §3`
61
+
62
+ Unix principles: `RULES.md §4`
63
+
64
+ ## Verification
65
+
66
+ - [ ] `RULES.md` was read from the repo root (or fetched and absence noted)
67
+ - [ ] File length check ran with zero violations, or violations were listed
68
+ - [ ] Pre-commit hooks verified as installed and configured
69
+ - [ ] Compliance report produced listing passed checks and gaps
70
+ - [ ] Any fixes applied do not exceed the scope of the violated rule
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "olko-starter-rules",
3
+ "description": "Load and enforce hard rules for every oleg-koval/* starter: 300-line files, E2E tests, pre-commit hooks, Vertical Slice architecture, no comments, KISS/DRY/SOLID.",
4
+ "skills": "./skills"
5
+ }
@@ -0,0 +1,72 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ name: starter-rules
5
+ description: Load and enforce the hard rules every oleg-koval/* starter must obey. Use when starting or auditing work in saas-init, ts-npm-starter, go-starter, py-starter, or any future oleg-koval template repo. Covers functional style, 300-line file cap, E2E > unit tests, pre-commit hooks, no-comment policy, KISS/DRY/SOLID, and Vertical Slice as default architecture for SaaS/app starters.
6
+ license: MIT
7
+ compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools.
8
+ metadata:
9
+ author: Oleg Koval
10
+ tags:
11
+ - starters
12
+ - rules
13
+ - architecture
14
+ - vertical-slice
15
+ - linting
16
+ - pre-commit
17
+ ---
18
+
19
+ # Starter Rules
20
+
21
+ ## Overview
22
+
23
+ Load the canonical hard rules for every `oleg-koval/*` starter repo and verify the current repo complies with them. Produces a compliance report and a list of gaps to fix.
24
+
25
+ ## When to Use
26
+
27
+ - Starting a new coding session in any `oleg-koval/*` template repo
28
+ - Auditing an existing starter for rule compliance before a release or PR merge
29
+ - Onboarding a new contributor (human or AI) to a starter
30
+ - After a large refactor, to verify rules have not been silently violated
31
+
32
+ Do not use for repos outside the `oleg-koval` namespace unless they explicitly reference `RULES.md`.
33
+
34
+ ## Workflow
35
+
36
+ 1. **Load the rules** — read `RULES.md` from the repo root. If absent, fetch it from `https://github.com/oleg-koval/starters/blob/main/RULES.md` and note that the starter is missing a local copy.
37
+
38
+ 2. **Apply §2 hard rules** — for the current task or PR diff, verify:
39
+ - No file exceeds 300 lines (`find . -name '*.ts' -o -name '*.py' -o -name '*.go' | xargs wc -l | awk '$1 > 300 && $2 != "total"'`)
40
+ - No functions produce side effects outside of boundary layers
41
+ - New code has no WHAT-comments; WHY-comments are one line max
42
+ - Tests are E2E-first; unit tests only for pure logic with non-trivial branching
43
+
44
+ 3. **Verify hooks and lint** — check that pre-commit hooks are installed and configured:
45
+ - TypeScript: `cat .eslintrc* | grep max-lines` and `cat package.json | grep -A5 '"lint-staged"\|"husky"\|"lefthook"'`
46
+ - Python: `cat .pre-commit-config.yaml` and check for `ruff` + format hooks
47
+ - Go: `cat .golangci.yml` or `.pre-commit-config.yaml` and check for `golangci-lint` + `gofmt`
48
+
49
+ 4. **Check architecture** — for app/SaaS starters: confirm feature code is organized as vertical slices (feature directory contains handler + DTO + service + tests together). For library starters: skip.
50
+
51
+ 5. **Report gaps** — list any violations found in steps 2–4. For each gap:
52
+ - Name the rule (e.g., "§2.2 file length")
53
+ - Name the file and line count or violation
54
+ - Propose the minimal fix
55
+
56
+ 6. **Fix on request** — if the user asks to fix the gaps, apply them one at a time, smallest change first. Do not refactor beyond what the rule requires.
57
+
58
+ ## Reference
59
+
60
+ Full rule details: [`RULES.md`](./RULES.md)
61
+
62
+ Architecture options and future starters: `RULES.md §3`
63
+
64
+ Unix principles: `RULES.md §4`
65
+
66
+ ## Verification
67
+
68
+ - [ ] `RULES.md` was read from the repo root (or fetched and absence noted)
69
+ - [ ] File length check ran with zero violations, or violations were listed
70
+ - [ ] Pre-commit hooks verified as installed and configured
71
+ - [ ] Compliance report produced listing passed checks and gaps
72
+ - [ ] Any fixes applied do not exceed the scope of the violated rule
@@ -0,0 +1,16 @@
1
+ # Codex Adapter for starter-rules
2
+
3
+ This is a Codex-specific adapter for the `olko:starter-rules` skill.
4
+ The canonical skill definition is in `../../../SKILL.md`.
5
+
6
+ ## Usage
7
+
8
+ Invoke in a Codex session:
9
+
10
+ ```
11
+ Use the olko:starter-rules skill to load and enforce hard rules in this starter repo.
12
+ ```
13
+
14
+ ## Workflow
15
+
16
+ See `../../../SKILL.md` for the full workflow.
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "starter-rules",
3
+ "description": "Load and enforce hard rules for every oleg-koval/* starter: 300-line files, E2E tests, pre-commit hooks, Vertical Slice architecture, no comments, KISS/DRY/SOLID.",
4
+ "rules": ["packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md"]
5
+ }