@olegkoval/agent-skills 1.9.2 → 1.10.1
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 +1 -4
- package/.cursor-plugin/index.json +0 -15
- package/README.md +0 -10
- package/catalog/skills.json +0 -68
- package/collections/docs-tools.json +1 -1
- package/collections/git-tools.json +1 -1
- package/collections/software-development.json +0 -2
- package/package.json +1 -1
- package/packages/marketing/search-console-indexing-audit/adapters/claude/skills/search-console-indexing-audit/SKILL.md +2 -3
- package/packages/marketing/search-console-indexing-audit/adapters/cursor/skills/search-console-indexing-audit/SKILL.md +1 -2
- package/packages/marketing/search-console-indexing-audit/adapters/kiro/steering/search-console-indexing-audit.md +0 -1
- package/packages/marketing/search-console-indexing-audit/adapters/windsurf/rules/search-console-indexing-audit.md +0 -1
- package/packages/marketing/viral-launch/adapters/claude/skills/viral-launch/SKILL.md +2 -3
- package/packages/marketing/viral-launch/adapters/cursor/skills/viral-launch/SKILL.md +1 -2
- package/packages/marketing/viral-launch/adapters/kiro/steering/viral-launch.md +0 -1
- package/packages/marketing/viral-launch/adapters/windsurf/rules/viral-launch.md +0 -1
- package/packages/music/fill-music-player/adapters/claude/skills/fill-music-player/SKILL.md +2 -3
- package/packages/music/fill-music-player/adapters/cursor/skills/fill-music-player/SKILL.md +1 -2
- package/packages/music/fill-music-player/adapters/kiro/steering/fill-music-player.md +0 -1
- package/packages/music/fill-music-player/adapters/windsurf/rules/fill-music-player.md +0 -1
- package/packages/photography/gallery/adapters/claude/skills/gallery/SKILL.md +2 -3
- package/packages/photography/gallery/adapters/cursor/skills/gallery/SKILL.md +1 -2
- package/packages/photography/gallery/adapters/kiro/steering/gallery.md +0 -1
- package/packages/photography/gallery/adapters/windsurf/rules/gallery.md +0 -1
- package/packages/software-development/add-to-my-skills/adapters/claude/skills/add-to-my-skills/SKILL.md +2 -3
- package/packages/software-development/add-to-my-skills/adapters/cursor/skills/add-to-my-skills/SKILL.md +2 -3
- package/packages/software-development/add-to-my-skills/adapters/kiro/steering/add-to-my-skills.md +0 -1
- package/packages/software-development/add-to-my-skills/adapters/windsurf/rules/add-to-my-skills.md +0 -1
- package/packages/software-development/ai-tools-setup/adapters/claude/skills/ai-tools-setup/SKILL.md +2 -3
- package/packages/software-development/ai-tools-setup/adapters/cursor/skills/ai-tools-setup/SKILL.md +2 -3
- package/packages/software-development/ai-tools-setup/adapters/kiro/steering/ai-tools-setup.md +0 -1
- package/packages/software-development/ai-tools-setup/adapters/windsurf/rules/ai-tools-setup.md +0 -1
- package/packages/software-development/changelog-generator/adapters/claude/skills/changelog-generator/SKILL.md +5 -6
- package/packages/software-development/changelog-generator/adapters/cursor/skills/changelog-generator/SKILL.md +5 -6
- package/packages/software-development/changelog-generator/adapters/kiro/steering/changelog-generator.md +0 -1
- package/packages/software-development/changelog-generator/adapters/windsurf/rules/changelog-generator.md +0 -1
- package/packages/software-development/cloudflare-block-countries/adapters/claude/skills/cloudflare-block-countries/SKILL.md +2 -3
- package/packages/software-development/cloudflare-block-countries/adapters/cursor/skills/cloudflare-block-countries/SKILL.md +1 -2
- package/packages/software-development/cloudflare-block-countries/adapters/kiro/steering/cloudflare-block-countries.md +0 -1
- package/packages/software-development/cloudflare-block-countries/adapters/windsurf/rules/cloudflare-block-countries.md +0 -1
- package/packages/software-development/docs-index-keeper/adapters/claude/skills/docs-index-keeper/SKILL.md +2 -3
- package/packages/software-development/docs-index-keeper/adapters/cursor/skills/docs-index-keeper/SKILL.md +1 -2
- package/packages/software-development/docs-index-keeper/adapters/kiro/steering/docs-index-keeper.md +0 -1
- package/packages/software-development/docs-index-keeper/adapters/windsurf/rules/docs-index-keeper.md +0 -1
- package/packages/software-development/gh-cli/adapters/claude/skills/gh-cli/SKILL.md +2 -3
- package/packages/software-development/gh-cli/adapters/cursor/skills/gh-cli/SKILL.md +1 -2
- package/packages/software-development/gh-cli/adapters/kiro/steering/gh-cli.md +0 -1
- package/packages/software-development/gh-cli/adapters/windsurf/rules/gh-cli.md +0 -1
- package/packages/software-development/git-commit/adapters/claude/skills/git-commit/SKILL.md +2 -3
- package/packages/software-development/git-commit/adapters/cursor/skills/git-commit/SKILL.md +1 -2
- package/packages/software-development/git-commit/adapters/kiro/steering/git-commit.md +0 -1
- package/packages/software-development/git-commit/adapters/windsurf/rules/git-commit.md +0 -1
- package/packages/software-development/obsidian-pr-sync/adapters/claude/skills/obsidian-pr-sync/SKILL.md +2 -3
- package/packages/software-development/obsidian-pr-sync/adapters/cursor/skills/obsidian-pr-sync/SKILL.md +1 -2
- package/packages/software-development/obsidian-pr-sync/adapters/kiro/steering/obsidian-pr-sync.md +0 -1
- package/packages/software-development/obsidian-pr-sync/adapters/windsurf/rules/obsidian-pr-sync.md +0 -1
- package/packages/software-development/obsidian-task-rollover/adapters/claude/skills/obsidian-task-rollover/SKILL.md +7 -8
- package/packages/software-development/obsidian-task-rollover/adapters/cursor/skills/obsidian-task-rollover/SKILL.md +6 -7
- package/packages/software-development/obsidian-task-rollover/adapters/kiro/steering/obsidian-task-rollover.md +0 -1
- package/packages/software-development/obsidian-task-rollover/adapters/windsurf/rules/obsidian-task-rollover.md +0 -1
- package/packages/software-development/open-source-publisher/adapters/claude/skills/open-source-publisher/SKILL.md +2 -3
- package/packages/software-development/open-source-publisher/adapters/cursor/skills/open-source-publisher/SKILL.md +1 -2
- package/packages/software-development/open-source-publisher/adapters/kiro/steering/open-source-publisher.md +0 -1
- package/packages/software-development/open-source-publisher/adapters/windsurf/rules/open-source-publisher.md +0 -1
- package/packages/software-development/product-builder/adapters/claude/skills/product-builder/SKILL.md +2 -3
- package/packages/software-development/product-builder/adapters/cursor/skills/product-builder/SKILL.md +1 -2
- package/packages/software-development/product-builder/adapters/kiro/steering/product-builder.md +0 -1
- package/packages/software-development/product-builder/adapters/windsurf/rules/product-builder.md +0 -1
- package/packages/software-development/promptctl/adapters/claude/skills/promptctl/SKILL.md +2 -3
- package/packages/software-development/promptctl/adapters/cursor/skills/promptctl/SKILL.md +1 -2
- package/packages/software-development/promptctl/adapters/kiro/steering/promptctl.md +0 -1
- package/packages/software-development/promptctl/adapters/windsurf/rules/promptctl.md +0 -1
- package/packages/software-development/semantic-release-beta/adapters/claude/skills/semantic-release-beta/SKILL.md +2 -3
- package/packages/software-development/semantic-release-beta/adapters/cursor/skills/semantic-release-beta/SKILL.md +1 -2
- package/packages/software-development/semantic-release-beta/adapters/kiro/steering/semantic-release-beta.md +0 -1
- package/packages/software-development/semantic-release-beta/adapters/windsurf/rules/semantic-release-beta.md +0 -1
- package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md +2 -3
- package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md +1 -2
- package/packages/software-development/starter-rules/adapters/kiro/steering/starter-rules.md +0 -1
- package/packages/software-development/starter-rules/adapters/windsurf/rules/starter-rules.md +0 -1
- package/scripts/build-adapters.sh +15 -4
- package/scripts/validate-catalog.sh +16 -0
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
-
|
|
3
1
|
---
|
|
4
2
|
name: semantic-release-beta
|
|
5
3
|
description: Set up or update a Node.js release pipeline that uses semantic-release-npm-github-publish with a stable main channel and a prerelease beta channel on a beta branch, including GitHub Actions validation and npm publishing behavior.
|
|
@@ -17,6 +15,7 @@ metadata:
|
|
|
17
15
|
- github-actions
|
|
18
16
|
- npm
|
|
19
17
|
---
|
|
18
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
20
19
|
|
|
21
20
|
# semantic-release-beta
|
|
22
21
|
|
|
@@ -5,7 +5,6 @@ inclusion: manual
|
|
|
5
5
|
description: "Set up semantic-release-npm-github-publish with stable main releases and prerelease beta releases on a beta branch."
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
# semantic-release-beta
|
|
10
9
|
|
|
11
10
|
Use this skill when a project needs a reusable beta prerelease workflow with:
|
package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
-
|
|
3
1
|
---
|
|
4
2
|
name: starter-rules
|
|
5
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.
|
|
@@ -7,7 +5,7 @@ license: MIT
|
|
|
7
5
|
allowed-tools: Read, Bash
|
|
8
6
|
compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools.
|
|
9
7
|
metadata:
|
|
10
|
-
targets: [
|
|
8
|
+
targets: [_source-only]
|
|
11
9
|
author: Oleg Koval
|
|
12
10
|
tags:
|
|
13
11
|
- starters
|
|
@@ -17,6 +15,7 @@ metadata:
|
|
|
17
15
|
- linting
|
|
18
16
|
- pre-commit
|
|
19
17
|
---
|
|
18
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
20
19
|
|
|
21
20
|
# Starter Rules
|
|
22
21
|
|
package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
-
|
|
3
1
|
---
|
|
4
2
|
name: starter-rules
|
|
5
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.
|
|
@@ -17,6 +15,7 @@ metadata:
|
|
|
17
15
|
- linting
|
|
18
16
|
- pre-commit
|
|
19
17
|
---
|
|
18
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
20
19
|
|
|
21
20
|
# Starter Rules
|
|
22
21
|
|
|
@@ -16,6 +16,11 @@ const skillPathFor = (pkg) => path.join(root, pkg.path, 'SKILL.md')
|
|
|
16
16
|
const promptNameFor = (pkg) => `${pkg.name}.prompt.md`
|
|
17
17
|
const generatedHeader = '<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->'
|
|
18
18
|
const stripFrontmatter = (content) => content.replace(/^---\n[\s\S]*?\n---\n?/, '')
|
|
19
|
+
const extractFrontmatter = (content) => {
|
|
20
|
+
const m = content.match(/^(---\n[\s\S]*?\n---\n?)/)
|
|
21
|
+
if (!m) return ''
|
|
22
|
+
return m[1].endsWith('\n') ? m[1] : m[1] + '\n'
|
|
23
|
+
}
|
|
19
24
|
const injectTargets = (content, targets) => {
|
|
20
25
|
const targetsYaml = targets.length > 0
|
|
21
26
|
? ` targets: [${targets.map(t => JSON.stringify(t)).join(', ')}]`
|
|
@@ -193,6 +198,9 @@ for (const pkg of catalog.packages) {
|
|
|
193
198
|
|
|
194
199
|
for (const pkg of catalog.packages) {
|
|
195
200
|
const canonical = fs.readFileSync(skillPathFor(pkg), 'utf8').trimEnd()
|
|
201
|
+
const fm = extractFrontmatter(canonical)
|
|
202
|
+
if (!fm) throw new Error(`canonical SKILL.md has no frontmatter: ${skillPathFor(pkg)}`)
|
|
203
|
+
const body = stripTrailingLineWhitespace(stripFrontmatter(canonical).trimStart().trimEnd())
|
|
196
204
|
|
|
197
205
|
if (pkg.adapters.includes('claude')) {
|
|
198
206
|
const claudeDestDir = path.join(root, pkg.path, 'adapters', 'claude', 'skills', pkg.name)
|
|
@@ -209,7 +217,7 @@ for (const pkg of catalog.packages) {
|
|
|
209
217
|
2,
|
|
210
218
|
) + '\n',
|
|
211
219
|
)
|
|
212
|
-
fs.writeFileSync(path.join(claudeDestDir, 'SKILL.md'), [generatedHeader, '',
|
|
220
|
+
fs.writeFileSync(path.join(claudeDestDir, 'SKILL.md'), [fm + generatedHeader, '', body, ''].join('\n'))
|
|
213
221
|
copySkillResources(pkg, claudeDestDir)
|
|
214
222
|
}
|
|
215
223
|
|
|
@@ -230,12 +238,15 @@ for (const pkg of catalog.packages) {
|
|
|
230
238
|
2,
|
|
231
239
|
) + '\n',
|
|
232
240
|
)
|
|
233
|
-
|
|
241
|
+
const cursorCanonical = injectTargets(canonical, ['cursor'])
|
|
242
|
+
const cursorFrontmatter = extractFrontmatter(cursorCanonical)
|
|
243
|
+
const cursorBody = stripTrailingLineWhitespace(stripFrontmatter(cursorCanonical).trimStart().trimEnd())
|
|
244
|
+
fs.writeFileSync(path.join(destDir, 'SKILL.md'), [cursorFrontmatter + generatedHeader, '', cursorBody, ''].join('\n'))
|
|
234
245
|
copySkillResources(pkg, destDir)
|
|
235
246
|
}
|
|
236
247
|
|
|
237
248
|
if (pkg.adapters.includes('windsurf')) {
|
|
238
|
-
const skillBody = stripFrontmatter(canonical).trimEnd()
|
|
249
|
+
const skillBody = stripFrontmatter(canonical).trimStart().trimEnd()
|
|
239
250
|
const content = stripTrailingLineWhitespace([
|
|
240
251
|
generatedHeader,
|
|
241
252
|
'',
|
|
@@ -252,7 +263,7 @@ for (const pkg of catalog.packages) {
|
|
|
252
263
|
}
|
|
253
264
|
|
|
254
265
|
if (pkg.adapters.includes('kiro')) {
|
|
255
|
-
const skillBody = stripFrontmatter(canonical).trimEnd()
|
|
266
|
+
const skillBody = stripFrontmatter(canonical).trimStart().trimEnd()
|
|
256
267
|
const content = stripTrailingLineWhitespace([
|
|
257
268
|
generatedHeader,
|
|
258
269
|
'',
|
|
@@ -118,6 +118,22 @@ for (const pkg of catalog.packages) {
|
|
|
118
118
|
throw new Error(`stale flat package path exists: ${oldFlatPath}`)
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
+
|
|
122
|
+
// Assert every SKILL.md (canonical + adapter wrappers) has a valid closed frontmatter block
|
|
123
|
+
// Codex adapter files use README.md and are validated separately above
|
|
124
|
+
const walk = (dir) => {
|
|
125
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
126
|
+
const full = path.join(dir, entry.name)
|
|
127
|
+
if (entry.isDirectory()) walk(full)
|
|
128
|
+
else if (entry.name === 'SKILL.md') {
|
|
129
|
+
const content = fs.readFileSync(full, 'utf8')
|
|
130
|
+
if (!content.match(/^---\n[\s\S]*?\n---\n?/)) {
|
|
131
|
+
throw new Error(`SKILL.md does not have valid closed frontmatter: ${full}`)
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
walk('packages')
|
|
121
137
|
EOF
|
|
122
138
|
|
|
123
139
|
echo "catalog validation passed"
|