@olegkoval/agent-skills 1.3.2 → 1.4.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.
- package/.claude-plugin/plugin.json +2 -1
- package/.cursor-plugin/index.json +5 -0
- package/catalog/skills.json +22 -0
- package/package.json +1 -1
- package/packages/software-development/open-source-publisher/SKILL.md +45 -0
- package/packages/software-development/open-source-publisher/adapters/claude/skills/open-source-publisher/SKILL.md +45 -0
- package/packages/software-development/open-source-publisher/adapters/cursor/skills/open-source-publisher/SKILL.md +45 -0
- package/packages/software-development/starter-rules/SKILL.md +70 -0
- package/packages/software-development/starter-rules/adapters/claude/plugin.json +5 -0
- package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md +72 -0
- package/packages/software-development/starter-rules/adapters/codex/README.md +16 -0
- package/packages/software-development/starter-rules/adapters/cursor/plugin.json +5 -0
- package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md +72 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "olko-agent-skills",
|
|
3
3
|
"description": "Agent-agnostic skill catalog for Codex, Claude, Cursor, and other skill-aware tools.",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Oleg Koval"
|
|
7
7
|
},
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"./packages/music/fill-music-player",
|
|
20
20
|
"./packages/software-development/product-builder",
|
|
21
21
|
"./packages/software-development/add-to-my-skills",
|
|
22
|
+
"./packages/software-development/starter-rules",
|
|
22
23
|
"./packages/software-development/open-source-publisher",
|
|
23
24
|
"./packages/marketing/viral-launch",
|
|
24
25
|
"./packages/marketing/search-console-indexing-audit"
|
|
@@ -51,6 +51,11 @@
|
|
|
51
51
|
"source": "./packages/software-development/add-to-my-skills/adapters/cursor",
|
|
52
52
|
"description": "Copy a newly created skill into this catalog, refresh manifests, and publish the change."
|
|
53
53
|
},
|
|
54
|
+
{
|
|
55
|
+
"name": "olko:starter-rules",
|
|
56
|
+
"source": "./packages/software-development/starter-rules/adapters/cursor",
|
|
57
|
+
"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."
|
|
58
|
+
},
|
|
54
59
|
{
|
|
55
60
|
"name": "olko:open-source-publisher",
|
|
56
61
|
"source": "./packages/software-development/open-source-publisher/adapters/cursor",
|
package/catalog/skills.json
CHANGED
|
@@ -197,6 +197,28 @@
|
|
|
197
197
|
"copilot"
|
|
198
198
|
]
|
|
199
199
|
},
|
|
200
|
+
{
|
|
201
|
+
"name": "starter-rules",
|
|
202
|
+
"lookupName": "olko:starter-rules",
|
|
203
|
+
"category": "software-development",
|
|
204
|
+
"path": "packages/software-development/starter-rules",
|
|
205
|
+
"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.",
|
|
206
|
+
"tags": [
|
|
207
|
+
"starters",
|
|
208
|
+
"rules",
|
|
209
|
+
"architecture",
|
|
210
|
+
"vertical-slice",
|
|
211
|
+
"linting",
|
|
212
|
+
"pre-commit",
|
|
213
|
+
"testing"
|
|
214
|
+
],
|
|
215
|
+
"adapters": [
|
|
216
|
+
"codex",
|
|
217
|
+
"claude",
|
|
218
|
+
"cursor",
|
|
219
|
+
"copilot"
|
|
220
|
+
]
|
|
221
|
+
},
|
|
200
222
|
{
|
|
201
223
|
"name": "open-source-publisher",
|
|
202
224
|
"lookupName": "olko:open-source-publisher",
|
package/package.json
CHANGED
|
@@ -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
|
package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md
ADDED
|
@@ -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
|
+
}
|
package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md
ADDED
|
@@ -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
|