@olegkoval/agent-skills 1.42.0 → 1.42.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.
Files changed (62) hide show
  1. package/README.md +189 -119
  2. package/adapters/claude/olko-creative/skills/vinted-listing/SKILL.md +7 -1
  3. package/adapters/claude/olko-git-tools/skills/gh-cli/SKILL.md +7 -1
  4. package/adapters/claude/olko-product/skills/viral-launch/SKILL.md +6 -2
  5. package/adapters/claude/olko-reflection/skills/agent-ops-retro/scripts/mine-transcripts.mjs +46 -16
  6. package/adapters/claude/olko-reflection/skills/retro-analysis/SKILL.md +7 -1
  7. package/adapters/claude/olko-reflection/skills/wrap-up/SKILL.md +7 -1
  8. package/adapters/claude/olko-release/skills/changelog-generator/SKILL.md +6 -1
  9. package/adapters/claude/olko-release/skills/semantic-release-beta/SKILL.md +7 -1
  10. package/adapters/claude/olko-skill-meta/skills/ai-tools-setup/SKILL.md +6 -1
  11. package/adapters/claude/olko-skill-meta/skills/promptctl/SKILL.md +6 -1
  12. package/adapters/claude/olko-web-ops/skills/docs-index-keeper/SKILL.md +5 -1
  13. package/adapters/claude/olko-web-ops/skills/website-analytics-bootstrap/SKILL.md +7 -1
  14. package/adapters/cursor/olko-creative/skills/vinted-listing/SKILL.md +7 -1
  15. package/adapters/cursor/olko-git-tools/skills/gh-cli/SKILL.md +7 -1
  16. package/adapters/cursor/olko-product/skills/viral-launch/SKILL.md +6 -2
  17. package/adapters/cursor/olko-reflection/skills/agent-ops-retro/scripts/mine-transcripts.mjs +46 -16
  18. package/adapters/cursor/olko-reflection/skills/retro-analysis/SKILL.md +7 -1
  19. package/adapters/cursor/olko-reflection/skills/wrap-up/SKILL.md +7 -1
  20. package/adapters/cursor/olko-release/skills/changelog-generator/SKILL.md +6 -1
  21. package/adapters/cursor/olko-release/skills/semantic-release-beta/SKILL.md +7 -1
  22. package/adapters/cursor/olko-skill-meta/skills/ai-tools-setup/SKILL.md +6 -1
  23. package/adapters/cursor/olko-skill-meta/skills/promptctl/SKILL.md +6 -1
  24. package/adapters/cursor/olko-web-ops/skills/docs-index-keeper/SKILL.md +5 -1
  25. package/adapters/cursor/olko-web-ops/skills/website-analytics-bootstrap/SKILL.md +7 -1
  26. package/adapters/grok/olko-creative/skills/vinted-listing/SKILL.md +7 -1
  27. package/adapters/grok/olko-git-tools/skills/gh-cli/SKILL.md +7 -1
  28. package/adapters/grok/olko-product/skills/viral-launch/SKILL.md +6 -2
  29. package/adapters/grok/olko-reflection/skills/agent-ops-retro/scripts/mine-transcripts.mjs +46 -16
  30. package/adapters/grok/olko-reflection/skills/retro-analysis/SKILL.md +7 -1
  31. package/adapters/grok/olko-reflection/skills/wrap-up/SKILL.md +7 -1
  32. package/adapters/grok/olko-release/skills/changelog-generator/SKILL.md +6 -1
  33. package/adapters/grok/olko-release/skills/semantic-release-beta/SKILL.md +7 -1
  34. package/adapters/grok/olko-skill-meta/skills/ai-tools-setup/SKILL.md +6 -1
  35. package/adapters/grok/olko-skill-meta/skills/promptctl/SKILL.md +6 -1
  36. package/adapters/grok/olko-web-ops/skills/docs-index-keeper/SKILL.md +5 -1
  37. package/adapters/grok/olko-web-ops/skills/website-analytics-bootstrap/SKILL.md +7 -1
  38. package/package.json +1 -1
  39. package/plugins/olko-apple-kit/.claude-plugin/plugin.json +1 -1
  40. package/plugins/olko-creative/.claude-plugin/plugin.json +1 -1
  41. package/plugins/olko-creative/skills/vinted-listing/SKILL.md +7 -1
  42. package/plugins/olko-garmin-kit/.claude-plugin/plugin.json +1 -1
  43. package/plugins/olko-git-tools/.claude-plugin/plugin.json +1 -1
  44. package/plugins/olko-git-tools/skills/gh-cli/SKILL.md +7 -1
  45. package/plugins/olko-github-pr/.claude-plugin/plugin.json +1 -1
  46. package/plugins/olko-github-pr/skills/lekker-review/workflow.js +4 -0
  47. package/plugins/olko-obsidian/.claude-plugin/plugin.json +1 -1
  48. package/plugins/olko-product/.claude-plugin/plugin.json +1 -1
  49. package/plugins/olko-product/skills/viral-launch/SKILL.md +6 -2
  50. package/plugins/olko-reflection/.claude-plugin/plugin.json +1 -1
  51. package/plugins/olko-reflection/skills/agent-ops-retro/scripts/mine-transcripts.mjs +46 -16
  52. package/plugins/olko-reflection/skills/retro-analysis/SKILL.md +7 -1
  53. package/plugins/olko-reflection/skills/wrap-up/SKILL.md +7 -1
  54. package/plugins/olko-release/.claude-plugin/plugin.json +1 -1
  55. package/plugins/olko-release/skills/changelog-generator/SKILL.md +6 -1
  56. package/plugins/olko-release/skills/semantic-release-beta/SKILL.md +7 -1
  57. package/plugins/olko-skill-meta/.claude-plugin/plugin.json +1 -1
  58. package/plugins/olko-skill-meta/skills/ai-tools-setup/SKILL.md +6 -1
  59. package/plugins/olko-skill-meta/skills/promptctl/SKILL.md +6 -1
  60. package/plugins/olko-web-ops/.claude-plugin/plugin.json +1 -1
  61. package/plugins/olko-web-ops/skills/docs-index-keeper/SKILL.md +5 -1
  62. package/plugins/olko-web-ops/skills/website-analytics-bootstrap/SKILL.md +7 -1
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: changelog-generator
3
- description: Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
3
+ description: >
4
+ Turn git commit history into a user-facing changelog: read the commits since the last release,
5
+ categorise them, and rewrite technical messages as release notes a customer can actually read.
6
+ Use when the user asks for "a changelog", "release notes", "what changed since the last release",
7
+ "write the CHANGELOG entry", or is preparing a release and needs the notes written. For setting
8
+ up the release pipeline itself use semantic-release-beta.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Write
6
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires git history access in the target repository.
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: semantic-release-beta
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.
3
+ description: >
4
+ Set up or repair a Node.js release pipeline built on semantic-release-npm-github-publish, with a
5
+ stable channel on main and a prerelease channel on a beta branch, including the GitHub Actions
6
+ validation and npm publishing behaviour. Use when the user wants "semantic release set up", "a
7
+ beta release channel", "prerelease publishing", "automated npm publishing", or when an npm
8
+ package's releases are still manual and should become commit-driven. For writing the notes of a
9
+ single release use changelog-generator.
4
10
  license: MIT
5
11
  allowed-tools: Bash, Read, Write, Edit
6
12
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a Node.js package repository that uses git and GitHub Actions.
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: ai-tools-setup
3
- 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.'
3
+ description: >
4
+ Set up, repair, and report on the RTK+ICM+Vox AI development toolkit: installs missing tools,
5
+ fixes broken hooks and MCP config, and shows an effectiveness digest covering token savings,
6
+ memory accumulation and voice health. Use when the user says "set up my AI tools", "my hooks are
7
+ broken", "MCP is not loading", "check my toolkit", "is ICM working", "how much are these tools
8
+ saving me", or when the scheduled weekly toolkit report fires.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Edit, Write
6
11
  compatibility: Claude Code on macOS (Homebrew required)
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: promptctl
3
- description: Use promptctl for template-based prompt engineering, prompt scoring, prompt generation, and reusable prompt workflows across repositories and teams.
3
+ description: >
4
+ Manage reusable prompts with the promptctl CLI: template-based prompt engineering, prompt
5
+ generation, and scoring a prompt before it ships. Use when the user wants to "write a reusable
6
+ prompt", "score this prompt", "turn this into a prompt template", "share prompts across repos",
7
+ or names promptctl directly. For bringing an agent skill into this catalog use
8
+ add-to-my-skills.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Write
6
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires promptctl to be installed when the workflow depends on the CLI.
@@ -1,6 +1,10 @@
1
1
  ---
2
2
  name: docs-index-keeper
3
- description: Keep a repository's Markdown docs index in sync by installing and running docs-index-keeper in pre-commit hooks, CI, or one-off maintenance flows.
3
+ description: >
4
+ Keep a repository's Markdown docs index in sync with the files that actually exist, by installing
5
+ and running docs-index-keeper in a pre-commit hook, in CI, or as a one-off sweep. Use when the
6
+ user says "the docs index is stale", "update the docs index", "add a docs index check to CI",
7
+ "our doc links are out of date", or when new docs were added without being linked anywhere.
4
8
  license: MIT
5
9
  allowed-tools: Bash, Read, Write, Edit, Grep, Glob
6
10
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires shell access and Node.js 18+ when installing from npm.
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: website-analytics-bootstrap
3
- description: Set up a website's first SEO analytics loop end-to-end: persistent SerpBear rank tracking, Google Search Console, seeded keywords, read-only technical audits, and Telegram alerts on a local host or NAS.
3
+ description: >
4
+ Stand up a website's first SEO analytics loop end to end: persistent SerpBear rank tracking,
5
+ Google Search Console, seeded keywords, read-only technical audits and Telegram alerts on a local
6
+ host or NAS. Use when the user says "set up rank tracking", "this site has no analytics", "track
7
+ my keywords", "bootstrap SEO monitoring", or wants to know how a site performs in search when no
8
+ tracking exists yet. For diagnosing an existing indexing problem use
9
+ search-console-indexing-audit.
4
10
  license: MIT
5
11
  allowed-tools: Bash, Read, Write, Edit
6
12
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires network access, a reachable deployment host, and owner-provided Search Console and alert credentials.
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: vinted-listing
3
- description: Create, edit, and safely publish Vinted listings through the signed-in browser, using verified item details and the owner’s original photos.
3
+ description: >
4
+ Create, edit, and safely publish a Vinted listing through the signed-in browser, using verified
5
+ item details and the owner's original photos. Suggests title, description, category, brand,
6
+ condition, colour and parcel size from the photos, saves a draft first, and requires explicit
7
+ confirmation before publishing. Use when the user wants to list, sell, relist or price an item on
8
+ Vinted, or says "put this on Vinted", "create a Vinted listing", "sell this on Vinted", "edit my
9
+ Vinted draft", or "publish that listing". Browser workflow, not an API integration.
4
10
  ---
5
11
  <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
6
12
 
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: gh-cli
3
- description: GitHub CLI (gh) comprehensive reference for repositories, issues, pull requests, Actions, projects, releases, gists, codespaces, organizations, extensions, and all GitHub operations from the command line.
3
+ description: >
4
+ Reach for the GitHub CLI (gh) to do something on GitHub from the command line: repositories,
5
+ issues, pull requests, Actions runs and logs, projects, releases, gists, codespaces, org and
6
+ extension management. Use when a task needs a gh command and the exact syntax, flag or API path
7
+ is not obvious, or the user says "use gh", "what is the gh command for", "list my PRs from the
8
+ CLI", or "query the GitHub API". For driving a PR through review bots and CI use the
9
+ olko-github-pr skills instead; this one is the command reference.
4
10
  license: MIT
5
11
  allowed-tools: Bash
6
12
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires the GitHub CLI and valid GitHub authentication.
@@ -1,7 +1,11 @@
1
1
  ---
2
-
3
2
  name: viral-launch
4
- description: Set up a project repository and launch plan for shareable marketing, public launch readiness, and growth loops without pretending virality is guaranteed.
3
+ description: >
4
+ Prepare a project for a public launch: shareable positioning, a launch-readiness pass over the
5
+ repository, and the growth loops worth building, without pretending virality is guaranteed. Use
6
+ when the user says "help me launch this", "prep for Product Hunt", "write the launch post", "make
7
+ this shareable", "launch plan", or is about to make a repo or product public. For building the
8
+ thing itself use mvp-oneshot or product-builder.
5
9
  license: MIT
6
10
  allowed-tools: Bash, Read, Write, WebSearch, WebFetch
7
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Useful for product repos, open-source packages, SaaS launches, waitlists, and creator tools.
@@ -27,7 +27,7 @@ const OUT = arg('out', './mine.json');
27
27
  const SINCE = Date.parse(`${arg('since', '')}T00:00:00Z`);
28
28
  const UNTIL = Date.parse(`${arg('until', '')}T00:00:00Z`);
29
29
 
30
- if (!Number.isFinite(SINCE) || !Number.isFinite(UNTIL) || UNTIL <= SINCE) {
30
+ if (!Number.isFinite(SINCE) || !Number.isFinite(UNTIL)) {
31
31
  console.error('usage: mine-transcripts.mjs --since YYYY-MM-DD --until YYYY-MM-DD [--out path] [--root dir]');
32
32
  process.exit(2);
33
33
  }
@@ -46,7 +46,23 @@ function walk(dir, out = []) {
46
46
  }
47
47
 
48
48
  // A user-role text record that is really harness output, not something a person typed.
49
- const HARNESS = /^(<system-reminder|<command-name|<command-message|<local-command|<bash-input|<bash-stdout|<user-prompt-submit-hook|<task-notification|Caveat: The messages below|\[Request interrupted)/;
49
+ // A user-role text record that is really harness output, not something a person typed.
50
+ // Each alternative below was found by a run that mis-counted. The first pass caught the
51
+ // obvious wrappers and still let 26% through: skill body dumps, image attachments,
52
+ // already-loaded stubs and permission-grant echoes all sit in human-turn position.
53
+ const HARNESS = new RegExp('^(' + [
54
+ '<system-reminder', '<command-name', '<command-message', '<local-command',
55
+ '<bash-input', '<bash-stdout', '<bash-stderr', '<user-prompt-submit-hook',
56
+ '<task-notification', '<cross-session-message',
57
+ 'Caveat: The messages below',
58
+ '\\[Request interrupted',
59
+ 'Base directory for this skill:', // a skill body dumped into the turn
60
+ 'Skill /[^ ]+ is already loaded', // re-invocation stub
61
+ 'Permission granted for:', // permission-grant echo
62
+ '\\[Image #\\d+\\]', // bare attachment
63
+ '\\[Image: source:',
64
+ '\\[Pasted text',
65
+ ].join('|') + ')');
50
66
 
51
67
  const textOf = (msg) => {
52
68
  const c = msg?.content;
@@ -68,7 +84,8 @@ const S = {
68
84
  limits: [],
69
85
  humanTurns: [],
70
86
  echoTurns: 0,
71
- interrupts: 0,
87
+ interruptsAll: 0,
88
+ interruptsMain: 0,
72
89
  compacts: 0,
73
90
  usage: { in: 0, out: 0, cacheRead: 0, cacheWrite: 0 },
74
91
  };
@@ -134,16 +151,8 @@ for (const f of files) {
134
151
 
135
152
  if (r.type === 'assistant') {
136
153
  const model = r.message?.model;
154
+ if (model) bump(S.models, model);
137
155
  const u = r.message?.usage;
138
- if (model) {
139
- const stats = S.models.get(model) || { messages: 0, in: 0, out: 0, cacheRead: 0, cacheWrite: 0 };
140
- stats.messages++;
141
- stats.in += u?.input_tokens || 0;
142
- stats.out += u?.output_tokens || 0;
143
- stats.cacheRead += u?.cache_read_input_tokens || 0;
144
- stats.cacheWrite += u?.cache_creation_input_tokens || 0;
145
- S.models.set(model, stats);
146
- }
147
156
  if (u) {
148
157
  S.usage.in += u.input_tokens || 0;
149
158
  S.usage.out += u.output_tokens || 0;
@@ -182,9 +191,12 @@ for (const f of files) {
182
191
  }
183
192
 
184
193
  const raw = textOf(r.message);
194
+ // Two scopes, two names. The first version reported the all-records count and the
195
+ // per-session count under one label `interrupts`, so the top-level figure (27) did not
196
+ // match the sum of the per-session rows (15) and neither number could be trusted.
185
197
  if (raw.includes('[Request interrupted')) {
186
- S.interrupts++;
187
- if (sess) sess.interrupts++;
198
+ S.interruptsAll++;
199
+ if (sess) { S.interruptsMain++; sess.interrupts++; }
188
200
  }
189
201
  if (!main || r.userType !== 'external' || !raw || sawToolResult) continue;
190
202
 
@@ -219,13 +231,14 @@ const report = {
219
231
  humanTurnsPerDay: byDay,
220
232
  turnsPerSession: { median: pct(0.5), p90: pct(0.9), max: humanCounts.at(-1) ?? 0 },
221
233
  shortTurnsUnder40Chars: S.humanTurns.filter((t) => t.text.trim().length < 40).length,
222
- interrupts: S.interrupts,
234
+ interruptsMainSessions: S.interruptsMain,
235
+ interruptsAllRecords: S.interruptsAll,
223
236
  compactEvents: S.compacts,
224
237
  capacityLimitEvents: S.limits.length,
225
238
  capacityLimitSamples: S.limits.slice(0, 10),
226
239
  usage: S.usage,
227
240
  cacheReadToOutputRatio: S.usage.out ? +(S.usage.cacheRead / S.usage.out).toFixed(1) : null,
228
- models: [...S.models].sort((a, b) => b[1].messages - a[1].messages),
241
+ models: [...S.models].sort((a, b) => b[1] - a[1]),
229
242
  topTools: [...S.tools].sort((a, b) => b[1] - a[1]).slice(0, 40),
230
243
  agentSpawns: [...S.agents].sort((a, b) => b[1] - a[1]),
231
244
  skillInvocations: [...S.skills].sort((a, b) => b[1] - a[1]),
@@ -233,6 +246,23 @@ const report = {
233
246
  sessions,
234
247
  };
235
248
 
249
+ // Internal consistency gate. A report whose aggregates disagree with its own rows is not
250
+ // evidence, and a previous version shipped exactly that. Fail loudly rather than emit it.
251
+ const rowInterrupts = sessions.reduce((n, s) => n + s.interrupts, 0);
252
+ const rowHuman = sessions.reduce((n, s) => n + s.human, 0);
253
+ const problems = [];
254
+ if (rowInterrupts !== report.interruptsMainSessions) {
255
+ problems.push(`interruptsMainSessions ${report.interruptsMainSessions} != sum of session rows ${rowInterrupts}`);
256
+ }
257
+ if (rowHuman !== report.humanTurnsOrganic) {
258
+ problems.push(`humanTurnsOrganic ${report.humanTurnsOrganic} != sum of session rows ${rowHuman}`);
259
+ }
260
+ if (problems.length) {
261
+ console.error('INCONSISTENT REPORT, refusing to write:\n ' + problems.join('\n '));
262
+ process.exit(3);
263
+ }
264
+ report.echoFilterVersion = 2;
265
+
236
266
  fs.writeFileSync(OUT, JSON.stringify(report, null, 1));
237
267
  fs.writeFileSync(OUT.replace(/\.json$/, '') + '-turns.json', JSON.stringify(S.humanTurns, null, 1));
238
268
 
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: retro-analysis
3
- description: Produce a recurring engineering retrospective from repository history, delivery evidence, work patterns, code-quality signals, and prior snapshots, with repository, comparison, and cross-project modes.
3
+ description: >
4
+ Produce a recurring engineering retrospective from repository history, delivery evidence, work
5
+ patterns, code-quality signals and prior snapshots, in repository, comparison or cross-project
6
+ mode. Use when the user asks for a retro over shipped work: "run a retrospective", "how did this
7
+ quarter go", "compare this month to last", "what did we ship", "engineering retro across my
8
+ repos", or when a scheduled retro job fires. This is the repository axis: for how the agents
9
+ themselves are being operated use agent-ops-retro, for a single finished change use wrap-up.
4
10
  license: MIT
5
11
  metadata:
6
12
  author: Oleg Koval
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: wrap-up
3
- description: Verify that a completed implementation matches its original objective, all applicable checks are green, and task-owned temporary files, worktrees, and local branches are safely tidied.
3
+ description: >
4
+ Close out a finished piece of work: verify the implementation actually matches its original
5
+ objective, confirm every applicable check is green, and safely tidy the temporary files,
6
+ worktrees and local branches the task created. Use when a change is believed done and the user
7
+ says "wrap up", "we are done here", "finish up", "clean up after this", "tidy the worktrees", or
8
+ before handing work off. This is the single-change axis: for a retro over repository history use
9
+ retro-analysis, for how the agents are being operated use agent-ops-retro.
4
10
  license: MIT
5
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, Grok, and other Agent Skills compatible tools.
6
12
  metadata:
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: changelog-generator
3
- description: Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
3
+ description: >
4
+ Turn git commit history into a user-facing changelog: read the commits since the last release,
5
+ categorise them, and rewrite technical messages as release notes a customer can actually read.
6
+ Use when the user asks for "a changelog", "release notes", "what changed since the last release",
7
+ "write the CHANGELOG entry", or is preparing a release and needs the notes written. For setting
8
+ up the release pipeline itself use semantic-release-beta.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Write
6
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires git history access in the target repository.
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: semantic-release-beta
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.
3
+ description: >
4
+ Set up or repair a Node.js release pipeline built on semantic-release-npm-github-publish, with a
5
+ stable channel on main and a prerelease channel on a beta branch, including the GitHub Actions
6
+ validation and npm publishing behaviour. Use when the user wants "semantic release set up", "a
7
+ beta release channel", "prerelease publishing", "automated npm publishing", or when an npm
8
+ package's releases are still manual and should become commit-driven. For writing the notes of a
9
+ single release use changelog-generator.
4
10
  license: MIT
5
11
  allowed-tools: Bash, Read, Write, Edit
6
12
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a Node.js package repository that uses git and GitHub Actions.
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: ai-tools-setup
3
- 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.'
3
+ description: >
4
+ Set up, repair, and report on the RTK+ICM+Vox AI development toolkit: installs missing tools,
5
+ fixes broken hooks and MCP config, and shows an effectiveness digest covering token savings,
6
+ memory accumulation and voice health. Use when the user says "set up my AI tools", "my hooks are
7
+ broken", "MCP is not loading", "check my toolkit", "is ICM working", "how much are these tools
8
+ saving me", or when the scheduled weekly toolkit report fires.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Edit, Write
6
11
  compatibility: Claude Code on macOS (Homebrew required)
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: promptctl
3
- description: Use promptctl for template-based prompt engineering, prompt scoring, prompt generation, and reusable prompt workflows across repositories and teams.
3
+ description: >
4
+ Manage reusable prompts with the promptctl CLI: template-based prompt engineering, prompt
5
+ generation, and scoring a prompt before it ships. Use when the user wants to "write a reusable
6
+ prompt", "score this prompt", "turn this into a prompt template", "share prompts across repos",
7
+ or names promptctl directly. For bringing an agent skill into this catalog use
8
+ add-to-my-skills.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Write
6
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires promptctl to be installed when the workflow depends on the CLI.
@@ -1,6 +1,10 @@
1
1
  ---
2
2
  name: docs-index-keeper
3
- description: Keep a repository's Markdown docs index in sync by installing and running docs-index-keeper in pre-commit hooks, CI, or one-off maintenance flows.
3
+ description: >
4
+ Keep a repository's Markdown docs index in sync with the files that actually exist, by installing
5
+ and running docs-index-keeper in a pre-commit hook, in CI, or as a one-off sweep. Use when the
6
+ user says "the docs index is stale", "update the docs index", "add a docs index check to CI",
7
+ "our doc links are out of date", or when new docs were added without being linked anywhere.
4
8
  license: MIT
5
9
  allowed-tools: Bash, Read, Write, Edit, Grep, Glob
6
10
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires shell access and Node.js 18+ when installing from npm.
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: website-analytics-bootstrap
3
- description: Set up a website's first SEO analytics loop end-to-end: persistent SerpBear rank tracking, Google Search Console, seeded keywords, read-only technical audits, and Telegram alerts on a local host or NAS.
3
+ description: >
4
+ Stand up a website's first SEO analytics loop end to end: persistent SerpBear rank tracking,
5
+ Google Search Console, seeded keywords, read-only technical audits and Telegram alerts on a local
6
+ host or NAS. Use when the user says "set up rank tracking", "this site has no analytics", "track
7
+ my keywords", "bootstrap SEO monitoring", or wants to know how a site performs in search when no
8
+ tracking exists yet. For diagnosing an existing indexing problem use
9
+ search-console-indexing-audit.
4
10
  license: MIT
5
11
  allowed-tools: Bash, Read, Write, Edit
6
12
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires network access, a reachable deployment host, and owner-provided Search Console and alert credentials.
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: vinted-listing
3
- description: Create, edit, and safely publish Vinted listings through the signed-in browser, using verified item details and the owner’s original photos.
3
+ description: >
4
+ Create, edit, and safely publish a Vinted listing through the signed-in browser, using verified
5
+ item details and the owner's original photos. Suggests title, description, category, brand,
6
+ condition, colour and parcel size from the photos, saves a draft first, and requires explicit
7
+ confirmation before publishing. Use when the user wants to list, sell, relist or price an item on
8
+ Vinted, or says "put this on Vinted", "create a Vinted listing", "sell this on Vinted", "edit my
9
+ Vinted draft", or "publish that listing". Browser workflow, not an API integration.
4
10
  ---
5
11
  <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
6
12
 
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: gh-cli
3
- description: GitHub CLI (gh) comprehensive reference for repositories, issues, pull requests, Actions, projects, releases, gists, codespaces, organizations, extensions, and all GitHub operations from the command line.
3
+ description: >
4
+ Reach for the GitHub CLI (gh) to do something on GitHub from the command line: repositories,
5
+ issues, pull requests, Actions runs and logs, projects, releases, gists, codespaces, org and
6
+ extension management. Use when a task needs a gh command and the exact syntax, flag or API path
7
+ is not obvious, or the user says "use gh", "what is the gh command for", "list my PRs from the
8
+ CLI", or "query the GitHub API". For driving a PR through review bots and CI use the
9
+ olko-github-pr skills instead; this one is the command reference.
4
10
  license: MIT
5
11
  allowed-tools: Bash
6
12
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires the GitHub CLI and valid GitHub authentication.
@@ -1,7 +1,11 @@
1
1
  ---
2
-
3
2
  name: viral-launch
4
- description: Set up a project repository and launch plan for shareable marketing, public launch readiness, and growth loops without pretending virality is guaranteed.
3
+ description: >
4
+ Prepare a project for a public launch: shareable positioning, a launch-readiness pass over the
5
+ repository, and the growth loops worth building, without pretending virality is guaranteed. Use
6
+ when the user says "help me launch this", "prep for Product Hunt", "write the launch post", "make
7
+ this shareable", "launch plan", or is about to make a repo or product public. For building the
8
+ thing itself use mvp-oneshot or product-builder.
5
9
  license: MIT
6
10
  allowed-tools: Bash, Read, Write, WebSearch, WebFetch
7
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Useful for product repos, open-source packages, SaaS launches, waitlists, and creator tools.
@@ -27,7 +27,7 @@ const OUT = arg('out', './mine.json');
27
27
  const SINCE = Date.parse(`${arg('since', '')}T00:00:00Z`);
28
28
  const UNTIL = Date.parse(`${arg('until', '')}T00:00:00Z`);
29
29
 
30
- if (!Number.isFinite(SINCE) || !Number.isFinite(UNTIL) || UNTIL <= SINCE) {
30
+ if (!Number.isFinite(SINCE) || !Number.isFinite(UNTIL)) {
31
31
  console.error('usage: mine-transcripts.mjs --since YYYY-MM-DD --until YYYY-MM-DD [--out path] [--root dir]');
32
32
  process.exit(2);
33
33
  }
@@ -46,7 +46,23 @@ function walk(dir, out = []) {
46
46
  }
47
47
 
48
48
  // A user-role text record that is really harness output, not something a person typed.
49
- const HARNESS = /^(<system-reminder|<command-name|<command-message|<local-command|<bash-input|<bash-stdout|<user-prompt-submit-hook|<task-notification|Caveat: The messages below|\[Request interrupted)/;
49
+ // A user-role text record that is really harness output, not something a person typed.
50
+ // Each alternative below was found by a run that mis-counted. The first pass caught the
51
+ // obvious wrappers and still let 26% through: skill body dumps, image attachments,
52
+ // already-loaded stubs and permission-grant echoes all sit in human-turn position.
53
+ const HARNESS = new RegExp('^(' + [
54
+ '<system-reminder', '<command-name', '<command-message', '<local-command',
55
+ '<bash-input', '<bash-stdout', '<bash-stderr', '<user-prompt-submit-hook',
56
+ '<task-notification', '<cross-session-message',
57
+ 'Caveat: The messages below',
58
+ '\\[Request interrupted',
59
+ 'Base directory for this skill:', // a skill body dumped into the turn
60
+ 'Skill /[^ ]+ is already loaded', // re-invocation stub
61
+ 'Permission granted for:', // permission-grant echo
62
+ '\\[Image #\\d+\\]', // bare attachment
63
+ '\\[Image: source:',
64
+ '\\[Pasted text',
65
+ ].join('|') + ')');
50
66
 
51
67
  const textOf = (msg) => {
52
68
  const c = msg?.content;
@@ -68,7 +84,8 @@ const S = {
68
84
  limits: [],
69
85
  humanTurns: [],
70
86
  echoTurns: 0,
71
- interrupts: 0,
87
+ interruptsAll: 0,
88
+ interruptsMain: 0,
72
89
  compacts: 0,
73
90
  usage: { in: 0, out: 0, cacheRead: 0, cacheWrite: 0 },
74
91
  };
@@ -134,16 +151,8 @@ for (const f of files) {
134
151
 
135
152
  if (r.type === 'assistant') {
136
153
  const model = r.message?.model;
154
+ if (model) bump(S.models, model);
137
155
  const u = r.message?.usage;
138
- if (model) {
139
- const stats = S.models.get(model) || { messages: 0, in: 0, out: 0, cacheRead: 0, cacheWrite: 0 };
140
- stats.messages++;
141
- stats.in += u?.input_tokens || 0;
142
- stats.out += u?.output_tokens || 0;
143
- stats.cacheRead += u?.cache_read_input_tokens || 0;
144
- stats.cacheWrite += u?.cache_creation_input_tokens || 0;
145
- S.models.set(model, stats);
146
- }
147
156
  if (u) {
148
157
  S.usage.in += u.input_tokens || 0;
149
158
  S.usage.out += u.output_tokens || 0;
@@ -182,9 +191,12 @@ for (const f of files) {
182
191
  }
183
192
 
184
193
  const raw = textOf(r.message);
194
+ // Two scopes, two names. The first version reported the all-records count and the
195
+ // per-session count under one label `interrupts`, so the top-level figure (27) did not
196
+ // match the sum of the per-session rows (15) and neither number could be trusted.
185
197
  if (raw.includes('[Request interrupted')) {
186
- S.interrupts++;
187
- if (sess) sess.interrupts++;
198
+ S.interruptsAll++;
199
+ if (sess) { S.interruptsMain++; sess.interrupts++; }
188
200
  }
189
201
  if (!main || r.userType !== 'external' || !raw || sawToolResult) continue;
190
202
 
@@ -219,13 +231,14 @@ const report = {
219
231
  humanTurnsPerDay: byDay,
220
232
  turnsPerSession: { median: pct(0.5), p90: pct(0.9), max: humanCounts.at(-1) ?? 0 },
221
233
  shortTurnsUnder40Chars: S.humanTurns.filter((t) => t.text.trim().length < 40).length,
222
- interrupts: S.interrupts,
234
+ interruptsMainSessions: S.interruptsMain,
235
+ interruptsAllRecords: S.interruptsAll,
223
236
  compactEvents: S.compacts,
224
237
  capacityLimitEvents: S.limits.length,
225
238
  capacityLimitSamples: S.limits.slice(0, 10),
226
239
  usage: S.usage,
227
240
  cacheReadToOutputRatio: S.usage.out ? +(S.usage.cacheRead / S.usage.out).toFixed(1) : null,
228
- models: [...S.models].sort((a, b) => b[1].messages - a[1].messages),
241
+ models: [...S.models].sort((a, b) => b[1] - a[1]),
229
242
  topTools: [...S.tools].sort((a, b) => b[1] - a[1]).slice(0, 40),
230
243
  agentSpawns: [...S.agents].sort((a, b) => b[1] - a[1]),
231
244
  skillInvocations: [...S.skills].sort((a, b) => b[1] - a[1]),
@@ -233,6 +246,23 @@ const report = {
233
246
  sessions,
234
247
  };
235
248
 
249
+ // Internal consistency gate. A report whose aggregates disagree with its own rows is not
250
+ // evidence, and a previous version shipped exactly that. Fail loudly rather than emit it.
251
+ const rowInterrupts = sessions.reduce((n, s) => n + s.interrupts, 0);
252
+ const rowHuman = sessions.reduce((n, s) => n + s.human, 0);
253
+ const problems = [];
254
+ if (rowInterrupts !== report.interruptsMainSessions) {
255
+ problems.push(`interruptsMainSessions ${report.interruptsMainSessions} != sum of session rows ${rowInterrupts}`);
256
+ }
257
+ if (rowHuman !== report.humanTurnsOrganic) {
258
+ problems.push(`humanTurnsOrganic ${report.humanTurnsOrganic} != sum of session rows ${rowHuman}`);
259
+ }
260
+ if (problems.length) {
261
+ console.error('INCONSISTENT REPORT, refusing to write:\n ' + problems.join('\n '));
262
+ process.exit(3);
263
+ }
264
+ report.echoFilterVersion = 2;
265
+
236
266
  fs.writeFileSync(OUT, JSON.stringify(report, null, 1));
237
267
  fs.writeFileSync(OUT.replace(/\.json$/, '') + '-turns.json', JSON.stringify(S.humanTurns, null, 1));
238
268
 
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: retro-analysis
3
- description: Produce a recurring engineering retrospective from repository history, delivery evidence, work patterns, code-quality signals, and prior snapshots, with repository, comparison, and cross-project modes.
3
+ description: >
4
+ Produce a recurring engineering retrospective from repository history, delivery evidence, work
5
+ patterns, code-quality signals and prior snapshots, in repository, comparison or cross-project
6
+ mode. Use when the user asks for a retro over shipped work: "run a retrospective", "how did this
7
+ quarter go", "compare this month to last", "what did we ship", "engineering retro across my
8
+ repos", or when a scheduled retro job fires. This is the repository axis: for how the agents
9
+ themselves are being operated use agent-ops-retro, for a single finished change use wrap-up.
4
10
  license: MIT
5
11
  metadata:
6
12
  author: Oleg Koval
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: wrap-up
3
- description: Verify that a completed implementation matches its original objective, all applicable checks are green, and task-owned temporary files, worktrees, and local branches are safely tidied.
3
+ description: >
4
+ Close out a finished piece of work: verify the implementation actually matches its original
5
+ objective, confirm every applicable check is green, and safely tidy the temporary files,
6
+ worktrees and local branches the task created. Use when a change is believed done and the user
7
+ says "wrap up", "we are done here", "finish up", "clean up after this", "tidy the worktrees", or
8
+ before handing work off. This is the single-change axis: for a retro over repository history use
9
+ retro-analysis, for how the agents are being operated use agent-ops-retro.
4
10
  license: MIT
5
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, Grok, and other Agent Skills compatible tools.
6
12
  metadata:
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: changelog-generator
3
- description: Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
3
+ description: >
4
+ Turn git commit history into a user-facing changelog: read the commits since the last release,
5
+ categorise them, and rewrite technical messages as release notes a customer can actually read.
6
+ Use when the user asks for "a changelog", "release notes", "what changed since the last release",
7
+ "write the CHANGELOG entry", or is preparing a release and needs the notes written. For setting
8
+ up the release pipeline itself use semantic-release-beta.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Write
6
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires git history access in the target repository.
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: semantic-release-beta
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.
3
+ description: >
4
+ Set up or repair a Node.js release pipeline built on semantic-release-npm-github-publish, with a
5
+ stable channel on main and a prerelease channel on a beta branch, including the GitHub Actions
6
+ validation and npm publishing behaviour. Use when the user wants "semantic release set up", "a
7
+ beta release channel", "prerelease publishing", "automated npm publishing", or when an npm
8
+ package's releases are still manual and should become commit-driven. For writing the notes of a
9
+ single release use changelog-generator.
4
10
  license: MIT
5
11
  allowed-tools: Bash, Read, Write, Edit
6
12
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a Node.js package repository that uses git and GitHub Actions.
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: ai-tools-setup
3
- 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.'
3
+ description: >
4
+ Set up, repair, and report on the RTK+ICM+Vox AI development toolkit: installs missing tools,
5
+ fixes broken hooks and MCP config, and shows an effectiveness digest covering token savings,
6
+ memory accumulation and voice health. Use when the user says "set up my AI tools", "my hooks are
7
+ broken", "MCP is not loading", "check my toolkit", "is ICM working", "how much are these tools
8
+ saving me", or when the scheduled weekly toolkit report fires.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Edit, Write
6
11
  compatibility: Claude Code on macOS (Homebrew required)
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: promptctl
3
- description: Use promptctl for template-based prompt engineering, prompt scoring, prompt generation, and reusable prompt workflows across repositories and teams.
3
+ description: >
4
+ Manage reusable prompts with the promptctl CLI: template-based prompt engineering, prompt
5
+ generation, and scoring a prompt before it ships. Use when the user wants to "write a reusable
6
+ prompt", "score this prompt", "turn this into a prompt template", "share prompts across repos",
7
+ or names promptctl directly. For bringing an agent skill into this catalog use
8
+ add-to-my-skills.
4
9
  license: MIT
5
10
  allowed-tools: Bash, Read, Write
6
11
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires promptctl to be installed when the workflow depends on the CLI.
@@ -1,6 +1,10 @@
1
1
  ---
2
2
  name: docs-index-keeper
3
- description: Keep a repository's Markdown docs index in sync by installing and running docs-index-keeper in pre-commit hooks, CI, or one-off maintenance flows.
3
+ description: >
4
+ Keep a repository's Markdown docs index in sync with the files that actually exist, by installing
5
+ and running docs-index-keeper in a pre-commit hook, in CI, or as a one-off sweep. Use when the
6
+ user says "the docs index is stale", "update the docs index", "add a docs index check to CI",
7
+ "our doc links are out of date", or when new docs were added without being linked anywhere.
4
8
  license: MIT
5
9
  allowed-tools: Bash, Read, Write, Edit, Grep, Glob
6
10
  compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires shell access and Node.js 18+ when installing from npm.