@olegkoval/agent-skills 1.9.2 → 1.10.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 (76) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/package.json +1 -1
  3. package/packages/marketing/search-console-indexing-audit/adapters/claude/skills/search-console-indexing-audit/SKILL.md +2 -3
  4. package/packages/marketing/search-console-indexing-audit/adapters/cursor/skills/search-console-indexing-audit/SKILL.md +2 -3
  5. package/packages/marketing/search-console-indexing-audit/adapters/kiro/steering/search-console-indexing-audit.md +0 -1
  6. package/packages/marketing/search-console-indexing-audit/adapters/windsurf/rules/search-console-indexing-audit.md +0 -1
  7. package/packages/marketing/viral-launch/adapters/claude/skills/viral-launch/SKILL.md +2 -3
  8. package/packages/marketing/viral-launch/adapters/cursor/skills/viral-launch/SKILL.md +2 -3
  9. package/packages/marketing/viral-launch/adapters/kiro/steering/viral-launch.md +0 -1
  10. package/packages/marketing/viral-launch/adapters/windsurf/rules/viral-launch.md +0 -1
  11. package/packages/music/fill-music-player/adapters/claude/skills/fill-music-player/SKILL.md +2 -3
  12. package/packages/music/fill-music-player/adapters/cursor/skills/fill-music-player/SKILL.md +2 -3
  13. package/packages/music/fill-music-player/adapters/kiro/steering/fill-music-player.md +0 -1
  14. package/packages/music/fill-music-player/adapters/windsurf/rules/fill-music-player.md +0 -1
  15. package/packages/photography/gallery/adapters/claude/skills/gallery/SKILL.md +2 -3
  16. package/packages/photography/gallery/adapters/cursor/skills/gallery/SKILL.md +2 -3
  17. package/packages/photography/gallery/adapters/kiro/steering/gallery.md +0 -1
  18. package/packages/photography/gallery/adapters/windsurf/rules/gallery.md +0 -1
  19. package/packages/software-development/add-to-my-skills/adapters/claude/skills/add-to-my-skills/SKILL.md +2 -3
  20. package/packages/software-development/add-to-my-skills/adapters/cursor/skills/add-to-my-skills/SKILL.md +2 -3
  21. package/packages/software-development/add-to-my-skills/adapters/kiro/steering/add-to-my-skills.md +0 -1
  22. package/packages/software-development/add-to-my-skills/adapters/windsurf/rules/add-to-my-skills.md +0 -1
  23. package/packages/software-development/ai-tools-setup/adapters/claude/skills/ai-tools-setup/SKILL.md +2 -3
  24. package/packages/software-development/ai-tools-setup/adapters/cursor/skills/ai-tools-setup/SKILL.md +2 -3
  25. package/packages/software-development/ai-tools-setup/adapters/kiro/steering/ai-tools-setup.md +0 -1
  26. package/packages/software-development/ai-tools-setup/adapters/windsurf/rules/ai-tools-setup.md +0 -1
  27. package/packages/software-development/changelog-generator/adapters/claude/skills/changelog-generator/SKILL.md +5 -6
  28. package/packages/software-development/changelog-generator/adapters/cursor/skills/changelog-generator/SKILL.md +5 -6
  29. package/packages/software-development/changelog-generator/adapters/kiro/steering/changelog-generator.md +0 -1
  30. package/packages/software-development/changelog-generator/adapters/windsurf/rules/changelog-generator.md +0 -1
  31. package/packages/software-development/cloudflare-block-countries/adapters/claude/skills/cloudflare-block-countries/SKILL.md +2 -3
  32. package/packages/software-development/cloudflare-block-countries/adapters/cursor/skills/cloudflare-block-countries/SKILL.md +2 -3
  33. package/packages/software-development/cloudflare-block-countries/adapters/kiro/steering/cloudflare-block-countries.md +0 -1
  34. package/packages/software-development/cloudflare-block-countries/adapters/windsurf/rules/cloudflare-block-countries.md +0 -1
  35. package/packages/software-development/docs-index-keeper/adapters/claude/skills/docs-index-keeper/SKILL.md +2 -3
  36. package/packages/software-development/docs-index-keeper/adapters/cursor/skills/docs-index-keeper/SKILL.md +2 -3
  37. package/packages/software-development/docs-index-keeper/adapters/kiro/steering/docs-index-keeper.md +0 -1
  38. package/packages/software-development/docs-index-keeper/adapters/windsurf/rules/docs-index-keeper.md +0 -1
  39. package/packages/software-development/gh-cli/adapters/claude/skills/gh-cli/SKILL.md +2 -3
  40. package/packages/software-development/gh-cli/adapters/cursor/skills/gh-cli/SKILL.md +2 -3
  41. package/packages/software-development/gh-cli/adapters/kiro/steering/gh-cli.md +0 -1
  42. package/packages/software-development/gh-cli/adapters/windsurf/rules/gh-cli.md +0 -1
  43. package/packages/software-development/git-commit/adapters/claude/skills/git-commit/SKILL.md +2 -3
  44. package/packages/software-development/git-commit/adapters/cursor/skills/git-commit/SKILL.md +2 -3
  45. package/packages/software-development/git-commit/adapters/kiro/steering/git-commit.md +0 -1
  46. package/packages/software-development/git-commit/adapters/windsurf/rules/git-commit.md +0 -1
  47. package/packages/software-development/obsidian-pr-sync/adapters/claude/skills/obsidian-pr-sync/SKILL.md +2 -3
  48. package/packages/software-development/obsidian-pr-sync/adapters/cursor/skills/obsidian-pr-sync/SKILL.md +2 -3
  49. package/packages/software-development/obsidian-pr-sync/adapters/kiro/steering/obsidian-pr-sync.md +0 -1
  50. package/packages/software-development/obsidian-pr-sync/adapters/windsurf/rules/obsidian-pr-sync.md +0 -1
  51. package/packages/software-development/obsidian-task-rollover/adapters/claude/skills/obsidian-task-rollover/SKILL.md +7 -8
  52. package/packages/software-development/obsidian-task-rollover/adapters/cursor/skills/obsidian-task-rollover/SKILL.md +7 -8
  53. package/packages/software-development/obsidian-task-rollover/adapters/kiro/steering/obsidian-task-rollover.md +0 -1
  54. package/packages/software-development/obsidian-task-rollover/adapters/windsurf/rules/obsidian-task-rollover.md +0 -1
  55. package/packages/software-development/open-source-publisher/adapters/claude/skills/open-source-publisher/SKILL.md +2 -3
  56. package/packages/software-development/open-source-publisher/adapters/cursor/skills/open-source-publisher/SKILL.md +2 -3
  57. package/packages/software-development/open-source-publisher/adapters/kiro/steering/open-source-publisher.md +0 -1
  58. package/packages/software-development/open-source-publisher/adapters/windsurf/rules/open-source-publisher.md +0 -1
  59. package/packages/software-development/product-builder/adapters/claude/skills/product-builder/SKILL.md +2 -3
  60. package/packages/software-development/product-builder/adapters/cursor/skills/product-builder/SKILL.md +2 -3
  61. package/packages/software-development/product-builder/adapters/kiro/steering/product-builder.md +0 -1
  62. package/packages/software-development/product-builder/adapters/windsurf/rules/product-builder.md +0 -1
  63. package/packages/software-development/promptctl/adapters/claude/skills/promptctl/SKILL.md +2 -3
  64. package/packages/software-development/promptctl/adapters/cursor/skills/promptctl/SKILL.md +2 -3
  65. package/packages/software-development/promptctl/adapters/kiro/steering/promptctl.md +0 -1
  66. package/packages/software-development/promptctl/adapters/windsurf/rules/promptctl.md +0 -1
  67. package/packages/software-development/semantic-release-beta/adapters/claude/skills/semantic-release-beta/SKILL.md +2 -3
  68. package/packages/software-development/semantic-release-beta/adapters/cursor/skills/semantic-release-beta/SKILL.md +2 -3
  69. package/packages/software-development/semantic-release-beta/adapters/kiro/steering/semantic-release-beta.md +0 -1
  70. package/packages/software-development/semantic-release-beta/adapters/windsurf/rules/semantic-release-beta.md +0 -1
  71. package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md +2 -3
  72. package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md +2 -3
  73. package/packages/software-development/starter-rules/adapters/kiro/steering/starter-rules.md +0 -1
  74. package/packages/software-development/starter-rules/adapters/windsurf/rules/starter-rules.md +0 -1
  75. package/scripts/build-adapters.sh +11 -12
  76. package/scripts/validate-catalog.sh +16 -0
@@ -16,14 +16,10 @@ 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 injectTargets = (content, targets) => {
20
- const targetsYaml = targets.length > 0
21
- ? ` targets: [${targets.map(t => JSON.stringify(t)).join(', ')}]`
22
- : ' targets: []'
23
- if (/^ targets:/m.test(content)) {
24
- return content.replace(/^ targets:.*$/m, targetsYaml)
25
- }
26
- return content.replace(/^(metadata:)$/m, `$1\n${targetsYaml}`)
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'
27
23
  }
28
24
  const stripTrailingLineWhitespace = (content) => content.replace(/[ \t]+$/gm, '')
29
25
  const copySkillResources = (pkg, destDir) => {
@@ -193,6 +189,9 @@ for (const pkg of catalog.packages) {
193
189
 
194
190
  for (const pkg of catalog.packages) {
195
191
  const canonical = fs.readFileSync(skillPathFor(pkg), 'utf8').trimEnd()
192
+ const fm = extractFrontmatter(canonical)
193
+ if (!fm) throw new Error(`canonical SKILL.md has no frontmatter: ${skillPathFor(pkg)}`)
194
+ const body = stripTrailingLineWhitespace(stripFrontmatter(canonical).trimStart().trimEnd())
196
195
 
197
196
  if (pkg.adapters.includes('claude')) {
198
197
  const claudeDestDir = path.join(root, pkg.path, 'adapters', 'claude', 'skills', pkg.name)
@@ -209,7 +208,7 @@ for (const pkg of catalog.packages) {
209
208
  2,
210
209
  ) + '\n',
211
210
  )
212
- fs.writeFileSync(path.join(claudeDestDir, 'SKILL.md'), [generatedHeader, '', injectTargets(canonical, ['claude']), ''].join('\n'))
211
+ fs.writeFileSync(path.join(claudeDestDir, 'SKILL.md'), [fm + generatedHeader, '', body, ''].join('\n'))
213
212
  copySkillResources(pkg, claudeDestDir)
214
213
  }
215
214
 
@@ -230,12 +229,12 @@ for (const pkg of catalog.packages) {
230
229
  2,
231
230
  ) + '\n',
232
231
  )
233
- fs.writeFileSync(path.join(destDir, 'SKILL.md'), [generatedHeader, '', injectTargets(canonical, ['cursor']), ''].join('\n'))
232
+ fs.writeFileSync(path.join(destDir, 'SKILL.md'), [fm + generatedHeader, '', body, ''].join('\n'))
234
233
  copySkillResources(pkg, destDir)
235
234
  }
236
235
 
237
236
  if (pkg.adapters.includes('windsurf')) {
238
- const skillBody = stripFrontmatter(canonical).trimEnd()
237
+ const skillBody = stripFrontmatter(canonical).trimStart().trimEnd()
239
238
  const content = stripTrailingLineWhitespace([
240
239
  generatedHeader,
241
240
  '',
@@ -252,7 +251,7 @@ for (const pkg of catalog.packages) {
252
251
  }
253
252
 
254
253
  if (pkg.adapters.includes('kiro')) {
255
- const skillBody = stripFrontmatter(canonical).trimEnd()
254
+ const skillBody = stripFrontmatter(canonical).trimStart().trimEnd()
256
255
  const content = stripTrailingLineWhitespace([
257
256
  generatedHeader,
258
257
  '',
@@ -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"