@olegkoval/agent-skills 1.35.0 → 1.35.2

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/README.md CHANGED
@@ -22,6 +22,7 @@ These skills are opinionated by design. They encode working defaults, preferred
22
22
  - `adapters/`: generated per-tool wrappers (Claude, Codex, Cursor, Grok, Pi, Hermes)
23
23
  - `scripts/`: sync, build, and validation helpers
24
24
  - `site/`: generator for the browsable catalog at [skills.olegkoval.com](https://skills.olegkoval.com) (`npm run build:site`)
25
+ - `docs/versioning.md`: catalog/plugin versioning and release automation contract
25
26
 
26
27
  ## Principles
27
28
 
@@ -0,0 +1,26 @@
1
+ # Versioning
2
+
3
+ This repository versions the installable catalog release, not each individual
4
+ skill. A skill is a canonical `SKILL.md` plus its resources; it is not an
5
+ independently published package. The catalog is split into installable plugins,
6
+ and every plugin in a release shares the catalog version.
7
+
8
+ The version source is `package.json`. Conventional commits on `main` and
9
+ `beta` are evaluated by semantic-release, which updates the package version,
10
+ changelog, Git tag, GitHub release, and npm publication. The generated Claude
11
+ plugin manifests receive that same version during semantic-release's `prepare`
12
+ phase from semantic-release's explicit `nextRelease.version`, before the
13
+ release commit is created. This avoids depending on the order in which release
14
+ plugins update `package.json`.
15
+
16
+ Do not add a version to an individual skill unless that skill becomes an
17
+ independently distributed package with its own compatibility and release
18
+ lifecycle.
19
+
20
+ To verify the generated state locally:
21
+
22
+ ```bash
23
+ npm run build
24
+ git diff --exit-code
25
+ npm test
26
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olegkoval/agent-skills",
3
- "version": "1.35.0",
3
+ "version": "1.35.2",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-apple-kit",
3
3
  "description": "Build and ship Apple platform apps: macOS menubar apps, App Store submissions.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-creative",
3
3
  "description": "Creative and personal projects: photo galleries, music players, listings, wiki editing.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-garmin-kit",
3
3
  "description": "Build, test and publish Garmin Connect IQ watch faces.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-git-tools",
3
3
  "description": "Everyday git and GitHub CLI operations: conventional commits, branch hygiene.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-github-pr",
3
3
  "description": "Drive GitHub pull requests to merge-ready: review-bot loops, CI fixes, descriptions, dependency triage.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-obsidian",
3
3
  "description": "Keep an Obsidian vault in sync with work: PR sync, task rollover, morning routine.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-product",
3
3
  "description": "Take a product idea to a shippable build: MVP passes, full-stack scaffolds, launch plans.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-reflection",
3
3
  "description": "Look back and improve: self-critique, retrospectives, performance review, rapid learning.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-release",
3
3
  "description": "Ship a release: semantic-release setup, changelogs, store listing copy, release-day routine.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-skill-meta",
3
3
  "description": "Author and maintain agent skills and the AI toolchain itself.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-web-ops",
3
3
  "description": "Operate a website: WAF rules, search console audits, analytics bootstrap, docs indexes.",
4
- "version": "1.34.0",
4
+ "version": "1.35.2",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -9,6 +9,7 @@ import { loadCatalog } from './scripts/lib/catalog.mjs'
9
9
  const root = process.cwd()
10
10
  const catalog = loadCatalog()
11
11
  const packageJson = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'))
12
+ const manifestVersion = process.env.RELEASE_VERSION || packageJson.version
12
13
  const MARKETPLACE = 'olko-agent-skills'
13
14
  const DESCRIPTION = 'Agent-agnostic skill catalog for Codex, Claude, Cursor, Grok, Copilot, Windsurf, Kiro, and other skill-aware tools.'
14
15
  const generatedHeader = '<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->'
@@ -48,7 +49,7 @@ for (const plugin of catalog.plugins) {
48
49
  writeJson(join(root, 'plugins', plugin.name, '.claude-plugin', 'plugin.json'), {
49
50
  name: plugin.name,
50
51
  description: plugin.description,
51
- version: packageJson.version,
52
+ version: manifestVersion,
52
53
  author: { name: 'Oleg Koval' },
53
54
  homepage: 'https://github.com/oleg-koval/agent-skills',
54
55
  repository: 'https://github.com/oleg-koval/agent-skills',
@@ -0,0 +1,10 @@
1
+ const { execFileSync } = require('node:child_process')
2
+
3
+ module.exports = {
4
+ prepare(_pluginConfig, context) {
5
+ execFileSync('npm', ['run', 'build'], {
6
+ stdio: 'inherit',
7
+ env: { ...process.env, RELEASE_VERSION: context.nextRelease.version },
8
+ })
9
+ },
10
+ }
@@ -30,6 +30,7 @@ const adapterFile = {
30
30
  }
31
31
 
32
32
  const catalog = loadCatalog()
33
+ const packageJson = JSON.parse(readFileSync('package.json', 'utf8'))
33
34
 
34
35
  // Plugin-level invariants.
35
36
  const pluginNames = new Set()
@@ -44,6 +45,13 @@ for (const plugin of catalog.plugins) {
44
45
  }
45
46
  const manifest = join('plugins', plugin.name, '.claude-plugin', 'plugin.json')
46
47
  if (!existsSync(manifest)) throw new Error(`missing generated plugin manifest: ${manifest}`)
48
+ const manifestVersion = JSON.parse(readFileSync(manifest, 'utf8')).version
49
+ if (manifestVersion !== packageJson.version) {
50
+ throw new Error(
51
+ `plugin manifest version drift for ${plugin.name}: ` +
52
+ `expected ${packageJson.version}, got ${manifestVersion}`
53
+ )
54
+ }
47
55
  }
48
56
 
49
57
  // Skill-level invariants, including the duplicate-name check.