@olegkoval/agent-skills 1.17.0 → 1.18.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 (56) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.grok-plugin/index.json +120 -0
  4. package/README.md +26 -3
  5. package/catalog/skills.json +46 -23
  6. package/package.json +3 -2
  7. package/packages/marketing/search-console-indexing-audit/adapters/grok/plugin.json +6 -0
  8. package/packages/marketing/search-console-indexing-audit/adapters/grok/skills/search-console-indexing-audit/SKILL.md +69 -0
  9. package/packages/marketing/search-console-indexing-audit/adapters/grok/skills/search-console-indexing-audit/scripts/summarize_gsc_coverage.py +151 -0
  10. package/packages/marketing/viral-launch/adapters/grok/plugin.json +6 -0
  11. package/packages/marketing/viral-launch/adapters/grok/skills/viral-launch/SKILL.md +105 -0
  12. package/packages/music/fill-music-player/adapters/grok/plugin.json +6 -0
  13. package/packages/music/fill-music-player/adapters/grok/skills/fill-music-player/SKILL.md +111 -0
  14. package/packages/photography/gallery/adapters/grok/plugin.json +6 -0
  15. package/packages/photography/gallery/adapters/grok/skills/gallery/SKILL.md +237 -0
  16. package/packages/software-development/apple-store-submit/adapters/grok/plugin.json +6 -0
  17. package/packages/software-development/apple-store-submit/adapters/grok/skills/apple-store-submit/SKILL.md +158 -0
  18. package/packages/software-development/cloudflare-block-countries/adapters/grok/plugin.json +6 -0
  19. package/packages/software-development/cloudflare-block-countries/adapters/grok/skills/cloudflare-block-countries/SKILL.md +177 -0
  20. package/packages/software-development/crash-course/adapters/grok/plugin.json +6 -0
  21. package/packages/software-development/crash-course/adapters/grok/skills/crash-course/SKILL.md +271 -0
  22. package/packages/software-development/docs-index-keeper/adapters/grok/plugin.json +6 -0
  23. package/packages/software-development/docs-index-keeper/adapters/grok/skills/docs-index-keeper/SKILL.md +65 -0
  24. package/packages/software-development/gh-cli/adapters/grok/plugin.json +6 -0
  25. package/packages/software-development/gh-cli/adapters/grok/skills/gh-cli/SKILL.md +2200 -0
  26. package/packages/software-development/git-commit/adapters/grok/plugin.json +6 -0
  27. package/packages/software-development/git-commit/adapters/grok/skills/git-commit/SKILL.md +133 -0
  28. package/packages/software-development/macos-menubar-app/adapters/grok/plugin.json +6 -0
  29. package/packages/software-development/macos-menubar-app/adapters/grok/skills/macos-menubar-app/SKILL.md +238 -0
  30. package/packages/software-development/mvp-oneshot/adapters/grok/plugin.json +6 -0
  31. package/packages/software-development/mvp-oneshot/adapters/grok/skills/mvp-oneshot/SKILL.md +176 -0
  32. package/packages/software-development/obsidian-pr-sync/adapters/grok/plugin.json +6 -0
  33. package/packages/software-development/obsidian-pr-sync/adapters/grok/skills/obsidian-pr-sync/SKILL.md +154 -0
  34. package/packages/software-development/obsidian-task-rollover/adapters/grok/plugin.json +6 -0
  35. package/packages/software-development/obsidian-task-rollover/adapters/grok/skills/obsidian-task-rollover/SKILL.md +198 -0
  36. package/packages/software-development/open-source-publisher/adapters/grok/plugin.json +6 -0
  37. package/packages/software-development/open-source-publisher/adapters/grok/skills/open-source-publisher/SKILL.md +471 -0
  38. package/packages/software-development/product-builder/adapters/grok/plugin.json +6 -0
  39. package/packages/software-development/product-builder/adapters/grok/skills/product-builder/SKILL.md +224 -0
  40. package/packages/software-development/promptctl/adapters/grok/plugin.json +6 -0
  41. package/packages/software-development/promptctl/adapters/grok/skills/promptctl/SKILL.md +90 -0
  42. package/packages/software-development/relay/adapters/grok/plugin.json +6 -0
  43. package/packages/software-development/relay/adapters/grok/skills/relay/SKILL.md +117 -0
  44. package/packages/software-development/review-past-performance/adapters/grok/plugin.json +6 -0
  45. package/packages/software-development/review-past-performance/adapters/grok/skills/review-past-performance/SKILL.md +212 -0
  46. package/packages/software-development/self-critique/adapters/grok/plugin.json +6 -0
  47. package/packages/software-development/self-critique/adapters/grok/skills/self-critique/SKILL.md +149 -0
  48. package/packages/software-development/self-critique/adapters/grok/skills/self-critique/scripts/critique-nudge.mjs +57 -0
  49. package/packages/software-development/semantic-release-beta/adapters/grok/plugin.json +6 -0
  50. package/packages/software-development/semantic-release-beta/adapters/grok/skills/semantic-release-beta/SKILL.md +59 -0
  51. package/packages/software-development/skill-budget-audit/adapters/grok/plugin.json +6 -0
  52. package/packages/software-development/skill-budget-audit/adapters/grok/skills/skill-budget-audit/SKILL.md +146 -0
  53. package/packages/software-development/starter-rules/adapters/grok/plugin.json +6 -0
  54. package/packages/software-development/starter-rules/adapters/grok/skills/starter-rules/SKILL.md +73 -0
  55. package/scripts/build-adapters.sh +47 -4
  56. package/scripts/validate-catalog.sh +10 -0
@@ -0,0 +1,224 @@
1
+ ---
2
+ name: product-builder
3
+ description: Use when a user asks to build a full-stack web application, SaaS product, dashboard, or any complete working app from a description. Generates production-ready code with auth, database, API, UI, and tests instead of asking clarifying questions. Activates on "build me X", "create an app that", or any product-building request.
4
+ license: MIT
5
+ allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
6
+ compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires a writable application repository and a stack compatible with the generated implementation.
7
+ metadata:
8
+ targets: [_source-only]
9
+ author: Oleg Koval
10
+ tags:
11
+ - product
12
+ - full-stack
13
+ - saas
14
+ - web-app
15
+ - builder
16
+ - nextjs
17
+ ---
18
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
19
+
20
+ # Product Builder
21
+
22
+ You are a full-stack product builder. Your goal: **build real, working products — not prototypes**.
23
+
24
+ ## Core Philosophy
25
+
26
+ - **Ship immediately** — No explanations, no questions about architecture. Code first.
27
+ - **Full-stack defaults** — Every product includes auth, database, APIs, and UI.
28
+ - **Real code patterns** — Use production-ready patterns, not toy examples.
29
+ - **Minimal diffs** — Change only what's necessary. Respect existing code.
30
+
31
+ ## When a user asks to "build X"
32
+
33
+ You MUST:
34
+ 1. Generate a working product, not a skeleton
35
+ 2. Include authentication
36
+ 3. Include database schema with migrations
37
+ 4. Include API routes with input validation
38
+ 5. Include a polished, responsive UI
39
+ 6. Include tests
40
+
41
+ You MUST NOT:
42
+ - Ask "what framework do you want?"
43
+ - Ask "should we use a database?"
44
+ - Ask "how many features?"
45
+ - Create TODO comments for later implementation
46
+
47
+ ## Default Tech Stack
48
+
49
+ | Layer | Technology |
50
+ |-------|-----------|
51
+ | **Framework** | Next.js 14 (App Router) |
52
+ | **Language** | TypeScript (strict) |
53
+ | **Styling** | Tailwind CSS + shadcn/ui |
54
+ | **Database** | Prisma + PostgreSQL |
55
+ | **Auth** | NextAuth.js |
56
+ | **Validation** | Zod |
57
+ | **State** | React Query + Zustand |
58
+ | **Testing** | Vitest + React Testing Library + Playwright |
59
+
60
+ The user can override any of these. If the project already uses a different stack, follow the existing stack.
61
+
62
+ ## Specialist Domains
63
+
64
+ When building a product, apply expertise from these domains as needed:
65
+
66
+ ### UI Design
67
+ - Tailwind CSS utility-first, mobile-first responsive
68
+ - shadcn/ui components over custom solutions
69
+ - Dark mode support with `class` strategy
70
+ - Accessibility: semantic HTML, ARIA labels, keyboard nav, WCAG AA contrast
71
+ - Animations with Framer Motion or CSS transitions
72
+ - Component pattern: `cn()` utility for conditional classes
73
+
74
+ ### Database Architecture
75
+ - Prisma schema with proper indexes and relations
76
+ - Multi-tenant patterns when applicable (org-scoped data)
77
+ - Referential integrity and cascade rules
78
+ - Query optimization: use `select` and `include` deliberately
79
+ - Migration strategy: always generate and review migrations
80
+ - Audit fields: `createdAt`, `updatedAt` on every model
81
+
82
+ ### API Design
83
+ - Consistent response format: `{ success: true, data }` / `{ success: false, error: { code, message } }`
84
+ - Zod validation schemas for all inputs
85
+ - Proper HTTP status codes (201 for creation, 400 for validation, 401/403 for auth)
86
+ - Pagination: `page`, `limit`, `total`, `totalPages`
87
+ - Rate limiting for public endpoints
88
+ - Server Actions for form submissions
89
+
90
+ ### Testing
91
+ - Vitest for unit and integration tests
92
+ - React Testing Library for component tests
93
+ - Playwright for E2E tests
94
+ - Test critical paths: auth flows, CRUD operations, edge cases
95
+ - Mock external services, not internal code
96
+ - Factories/fixtures for test data
97
+
98
+ ## Code Quality Standards
99
+
100
+ - TypeScript strict mode, no `any` types without justification
101
+ - Error boundaries and proper error handling at every layer
102
+ - Security-first: validate inputs, sanitize outputs, check permissions
103
+ - Performance: memoize expensive renders, optimize queries, pagination
104
+ - Accessibility: semantic HTML, ARIA labels, keyboard navigation
105
+
106
+ ## File Organization
107
+
108
+ ```
109
+ app/
110
+ (auth)/ # Auth routes group
111
+ login/page.tsx
112
+ register/page.tsx
113
+ (app)/ # Protected routes group
114
+ dashboard/page.tsx
115
+ settings/page.tsx
116
+ api/ # API routes
117
+ auth/route.ts
118
+ [resource]/route.ts
119
+ actions/ # Server actions
120
+ lib/
121
+ db.ts # Database client
122
+ auth.ts # Auth config
123
+ api-response.ts # Response helpers
124
+ validation.ts # Zod schemas
125
+ components/
126
+ ui/ # shadcn/ui components
127
+ forms/ # Form components
128
+ layouts/ # Layout components
129
+ prisma/
130
+ schema.prisma
131
+ migrations/
132
+ __tests__/
133
+ unit/
134
+ integration/
135
+ e2e/
136
+ ```
137
+
138
+ ## API Response Pattern
139
+
140
+ ```typescript
141
+ // lib/api-response.ts
142
+ export type ApiResponse<T = unknown> =
143
+ | { success: true; data: T }
144
+ | { success: false; error: { code: string; message: string; details?: Record<string, string[]> } };
145
+
146
+ export function successResponse<T>(data: T): ApiResponse<T> {
147
+ return { success: true, data };
148
+ }
149
+
150
+ export function errorResponse(code: string, message: string, details?: Record<string, string[]>): ApiResponse<never> {
151
+ return { success: false, error: { code, message, details } };
152
+ }
153
+ ```
154
+
155
+ ## Route Handler Pattern
156
+
157
+ ```typescript
158
+ // app/api/posts/route.ts
159
+ import { NextRequest, NextResponse } from 'next/server';
160
+ import { z } from 'zod';
161
+ import { prisma } from '@/lib/db';
162
+ import { auth } from '@/lib/auth';
163
+ import { successResponse, errorResponse } from '@/lib/api';
164
+
165
+ const createPostSchema = z.object({
166
+ title: z.string().min(1).max(200),
167
+ content: z.string().min(1),
168
+ status: z.enum(['DRAFT', 'PUBLISHED']).default('DRAFT'),
169
+ });
170
+
171
+ export async function POST(request: NextRequest) {
172
+ const session = await auth();
173
+ if (!session?.user) {
174
+ return NextResponse.json(errorResponse('UNAUTHORIZED', 'Authentication required'), { status: 401 });
175
+ }
176
+
177
+ const body = await request.json();
178
+ const result = createPostSchema.safeParse(body);
179
+
180
+ if (!result.success) {
181
+ return NextResponse.json(
182
+ errorResponse('VALIDATION_ERROR', 'Invalid input', result.error.flatten().fieldErrors),
183
+ { status: 400 },
184
+ );
185
+ }
186
+
187
+ const post = await prisma.post.create({
188
+ data: { ...result.data, authorId: session.user.id },
189
+ });
190
+
191
+ return NextResponse.json(successResponse(post), { status: 201 });
192
+ }
193
+ ```
194
+
195
+ ## Component Pattern
196
+
197
+ ```typescript
198
+ import { cn } from '@/lib/utils';
199
+
200
+ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
201
+ children: React.ReactNode;
202
+ }
203
+
204
+ export function Card({ className, ...props }: CardProps) {
205
+ return (
206
+ <div
207
+ className={cn(
208
+ 'rounded-lg border border-slate-200 bg-white p-6 shadow-sm',
209
+ 'dark:border-slate-800 dark:bg-slate-950',
210
+ className,
211
+ )}
212
+ {...props}
213
+ />
214
+ );
215
+ }
216
+ ```
217
+
218
+ ## When Stuck or Uncertain
219
+
220
+ Do not ask the user. Execute using best practices from the relevant domain. Default to the simplest solution that works.
221
+
222
+ ## Example Prompts
223
+
224
+ See [examples.md](examples.md) for ready-to-use prompts covering SaaS dashboards, e-commerce, project management, AI chat apps, and more.
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "olko:promptctl",
3
+ "version": "0.1.0",
4
+ "description": "Use promptctl for template-based prompt engineering, scoring, and workflow automation.",
5
+ "skills": "skills/"
6
+ }
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: promptctl
3
+ description: Use promptctl for template-based prompt engineering, prompt scoring, prompt generation, and reusable prompt workflows across repositories and teams.
4
+ license: MIT
5
+ allowed-tools: Bash, Read, Write
6
+ 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.
7
+ metadata:
8
+ targets: [_source-only]
9
+ author: Oleg Koval
10
+ tags:
11
+ - prompts
12
+ - prompt-engineering
13
+ - templates
14
+ - cli
15
+ ---
16
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
17
+
18
+ # promptctl — Template-Based Prompt Engineering
19
+
20
+ promptctl is a CLI for version control and testing of LLM prompt templates. It treats prompts like code: template them, version them, score them, and share them across your team.
21
+
22
+ ## When to suggest promptctl
23
+
24
+ Suggest using promptctl when the user:
25
+ - Repeatedly copies the same type of prompt (code review, debug analysis, architecture notes)
26
+ - Wants to share prompt conventions across a team or repo
27
+ - Needs CI/CD gates on prompt quality
28
+ - Wants to improve prompt quality without an LLM (offline rule-based enhance)
29
+ - Asks about structuring or scoring a prompt
30
+
31
+ ## Core commands
32
+
33
+ ```
34
+ promptctl review --file=src/auth.ts # Code review prompt
35
+ promptctl debug --file=src/handler.go # Systematic debug analysis
36
+ promptctl arch --file=docs/design.md # Architecture decision record
37
+ promptctl commit # Conventional commit message
38
+ promptctl explain --file=src/parser.ts # Code explanation
39
+
40
+ promptctl list # See all available templates
41
+ promptctl score prompts/ # Score prompt files 0-100
42
+ promptctl fix prompts/ # Auto-fix low-scoring prompts
43
+ promptctl create "review auth for security" # Create prompt from raw intent (offline)
44
+ ```
45
+
46
+ ## Pi integration commands
47
+
48
+ When the user is inside pi:
49
+ - `/promptctl review --file=src/auth.ts` — renders the review template and injects it as the next user message
50
+ - `/quick-templates` — lists all available templates
51
+ - `/cost-score <file>` — scores a prompt file on structure and clarity
52
+ - The `promptctl_apply` tool can be called by the LLM directly to render a template
53
+
54
+ ## Key capabilities
55
+
56
+ - Templates are YAML files with `{{.variable}}` substitution — stored in `~/.promptctl/templates/` or `.promptctl/templates/` in your project
57
+ - `--file=path` auto-populates `{{.file_content}}`, `{{.file_name}}`, `{{.file_ext}}`
58
+ - Prompt scoring (0–100) on: structure, clarity, constraints, persona
59
+ - Offline rule-based enhance (`promptctl create`) — no API key or network needed
60
+ - JSON output and exit codes for CI pipelines (`promptctl score --min-score=80`)
61
+ - Direct LLM send (`promptctl send review --file=main.go`) with Anthropic/OpenAI support
62
+
63
+ ## Example workflows
64
+
65
+ **Code review in pi:**
66
+ ```
67
+ /promptctl review --file=src/payments.ts --focus=security
68
+ ```
69
+
70
+ **Debug analysis:**
71
+ ```
72
+ /promptctl debug --file=src/worker.go --error="context deadline exceeded"
73
+ ```
74
+
75
+ **Improve a prompt file:**
76
+ ```
77
+ promptctl score my-prompt.md
78
+ promptctl fix my-prompt.md
79
+ ```
80
+
81
+ **Create a new structured prompt from intent (offline):**
82
+ ```
83
+ promptctl create "analyze this Go function for race conditions"
84
+ ```
85
+
86
+ ## Resources
87
+
88
+ - GitHub: https://github.com/oleg-koval/promptctl
89
+ - Website: https://prompt-ctl.com
90
+ - Install: `brew tap oleg-koval/tap && brew install promptctl`
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "olko:relay",
3
+ "version": "0.1.0",
4
+ "description": "Use claude-relay to run long or rate-limit-prone tasks autonomously across subscription accounts.",
5
+ "skills": "skills/"
6
+ }
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: relay
3
+ description: >
4
+ Use claude-relay to run a long or rate-limit-prone task autonomously across subscription accounts.
5
+ Invoke this skill whenever the user says "use relay", "run this with relay", "do this overnight",
6
+ "run this autonomously", "use relay for X", or has a multi-hour / multi-step task they want to
7
+ hand off completely. Also use proactively when a task looks like it will take many turns and the
8
+ user hasn't thought about rate limits yet. Guides goal writing, picks the right flags, and starts
9
+ the run.
10
+ license: MIT
11
+ allowed-tools: Bash, Read, Write
12
+ metadata:
13
+ author: Oleg Koval
14
+ tags:
15
+ - relay
16
+ - autonomous
17
+ - rate-limits
18
+ - claude-relay
19
+ ---
20
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
21
+
22
+ # relay
23
+
24
+ Runs a task **unattended** using `claude-relay`: drives `claude -p` in a headless loop, writes a
25
+ handoff summary when one account's limit approaches, and switches to the next account automatically.
26
+ You watch logs; relay handles the rest.
27
+
28
+ Binary: `claude-relay` (alias `relay` if added to shell). Config: `~/.claude-relay/relay.config.json`.
29
+
30
+ ---
31
+
32
+ ## Step 1 — Decide: relay or inline?
33
+
34
+ **Use relay when:**
35
+ - Task will take many turns or hours (big refactor, migration, research + implementation)
36
+ - The user wants to hand it off and walk away
37
+ - Rate limits are a real concern (long-running or token-heavy)
38
+
39
+ **Stay inline when:**
40
+ - Task is quick (< ~10 turns)
41
+ - User wants to review each step
42
+ - Task needs interactive input that relay can't provide
43
+
44
+ ---
45
+
46
+ ## Step 2 — Write the goal
47
+
48
+ A relay goal is a self-contained spec a fresh Claude agent can execute cold. Write it to
49
+ `/tmp/relay-goal-<short-name>.md`. It must include:
50
+
51
+ - **What to do** — concrete deliverables, not vague intent
52
+ - **How to verify** — the exact command proving success (`npm test`, `curl /api/health`, etc.)
53
+ - **Scope** — explicit list of what NOT to do (no commits, no PRs, no migrations — unless stated)
54
+ - **Key files** — paths the agent should read first if the context isn't obvious
55
+
56
+ **Template:**
57
+ ```markdown
58
+ ## Goal
59
+ <1-3 sentences: the deliverable>
60
+
61
+ ## Success criteria
62
+ Run `<command>` and confirm it exits 0 / returns the expected result.
63
+
64
+ ## Scope
65
+ - DO: <explicit list>
66
+ - DO NOT: open PRs / push commits / run migrations / touch unrelated files
67
+
68
+ ## Key files
69
+ - <path> — <why it matters>
70
+ ```
71
+
72
+ Good goals are specific. "Add input validation to all POST routes in `app/api/`" beats "improve the API".
73
+
74
+ ---
75
+
76
+ ## Step 3 — Pick flags
77
+
78
+ | Situation | Flag |
79
+ |-----------|------|
80
+ | Task needs uncommitted changes, local `.env`, or a local database | `--in-place` |
81
+ | Everything is committed; task is self-contained | *(default — isolated git worktree)* |
82
+
83
+ When in doubt: if the repo has a `.env` or `node_modules` the task depends on, use `--in-place`.
84
+
85
+ ---
86
+
87
+ ## Step 4 — Run
88
+
89
+ ```bash
90
+ claude-relay run /tmp/relay-goal-<name>.md <absolute-path-to-repo> [--in-place]
91
+ ```
92
+
93
+ Relay logs stream to stderr. The run ends when the agent outputs `RELAY_TASK_COMPLETE` on its own
94
+ line, or hits a hard cap (400 turns / 48h wall clock).
95
+
96
+ ---
97
+
98
+ ## Step 5 — Tell the user
99
+
100
+ After starting, report:
101
+ - The exact command you ran
102
+ - What to watch for: `RELAY_TASK_COMPLETE` in logs, or `claude-relay status --config ~/.claude-relay/relay.config.json`
103
+ - The flag you picked and why (especially if you chose `--in-place`)
104
+
105
+ ---
106
+
107
+ ## Health check
108
+
109
+ If anything seems misconfigured:
110
+ ```bash
111
+ claude-relay doctor --config ~/.claude-relay/relay.config.json
112
+ ```
113
+
114
+ Should show ✓ for both account slots. If a slot shows ✗, tell the user to run:
115
+ ```bash
116
+ claude-relay login <email> # must have claude.ai open in browser as that account first
117
+ ```
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "olko:review-past-performance",
3
+ "version": "0.1.0",
4
+ "description": "Self-improvement loop that pulls the last 24h of ICM memories, git history, and skill analytics to detect repeated mistakes, slow workflows, and missing coverage, then proposes 1-3 concrete improvements.",
5
+ "skills": "skills/"
6
+ }
@@ -0,0 +1,212 @@
1
+ ---
2
+ name: review-past-performance
3
+ description: 'Self-improvement loop for coding sessions. Pulls the last 24h of ICM memories, git history, and available transcripts; detects patterns like repeated mistakes, slow workflows, untested changes, or missing skills; then proposes 1-3 concrete improvements (new skills, prompt tweaks, eval criteria). Nothing is written until you approve. Use when asked to "review my performance", "self-improve", "what am I repeating", "review past performance", or "what should I fix in my workflow".'
4
+ license: MIT
5
+ allowed-tools: Bash, Read, Write, Grep, Glob, AskUserQuestion
6
+ compatibility: Claude Code, Codex, Cursor, and other Agent Skills compatible tools. Requires ICM (https://github.com/rtk-ai/icm) for memory recall; degrades gracefully to git log + gstack analytics when ICM is unavailable.
7
+ metadata:
8
+ author: Oleg Koval
9
+ tags:
10
+ - self-improvement
11
+ - performance-review
12
+ - icm
13
+ - skills
14
+ - workflow
15
+ - ai-tools
16
+ ---
17
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
18
+
19
+ # /review-past-performance
20
+
21
+ Self-improvement loop. Analyze recent sessions, find durable patterns, propose fixes.
22
+
23
+ ## Step 1 — Gather raw signals (run in parallel)
24
+
25
+ ```bash
26
+ # A: ICM memories from last 24h
27
+ icm recall "mistakes errors repeated workflow" --limit 10 2>/dev/null || echo "ICM_UNAVAILABLE"
28
+ icm recall "completed task feature fix" --limit 10 2>/dev/null || echo "ICM_UNAVAILABLE"
29
+ ```
30
+
31
+ ```bash
32
+ # B: Git activity last 24h across all repos the user works in
33
+ git log --all --since="24 hours ago" --oneline --author="$(git config user.email 2>/dev/null)" 2>/dev/null | head -30 || echo "NO_GIT"
34
+ ```
35
+
36
+ ```bash
37
+ # C: ICM transcripts (last 3 sessions)
38
+ icm transcript search "" --limit 3 2>/dev/null || echo "TRANSCRIPTS_UNAVAILABLE"
39
+ ```
40
+
41
+ ```bash
42
+ # D: Skill usage from gstack analytics (what skills were run, outcomes)
43
+ tail -50 ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null | jq -c 'select(.ts > (now - 86400 | todate))' 2>/dev/null || \
44
+ tail -50 ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null | head -20 || echo "NO_ANALYTICS"
45
+ ```
46
+
47
+ ```bash
48
+ # E: ICM errors-resolved topic (what broke and was fixed)
49
+ icm recall "error" -t "errors-resolved" --limit 5 2>/dev/null || echo "NO_ERROR_MEMORIES"
50
+ ```
51
+
52
+ ```bash
53
+ # F: Recent learnings (gstack)
54
+ _GSTACK_HOME="${GSTACK_HOME:-$HOME/.gstack}"
55
+ eval "$($HOME/.slate/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true
56
+ _LEARN_FILE="$_GSTACK_HOME/projects/${SLUG:-unknown}/learnings.jsonl"
57
+ [ -f "$_LEARN_FILE" ] && tail -20 "$_LEARN_FILE" || echo "NO_LEARNINGS"
58
+ ```
59
+
60
+ ## Step 2 — Synthesize patterns
61
+
62
+ Read all signals. Classify findings into these categories:
63
+
64
+ **Repeated mistakes** — same error, same fix, same confusion appearing more than once in the signals. E.g., always forgetting to handle null on a specific field, always hitting the same linting error.
65
+
66
+ **Slow workflows** — multi-step sequences that took many tool calls but could be a single skill. E.g., always doing manual `git log` + `grep` + read 3 files before every PR review.
67
+
68
+ **Missing coverage** — areas where work was done but no test was written or no memory was stored.
69
+
70
+ **Underused skills** — skills that would have applied but were not invoked (check skill-usage.jsonl gaps vs. git activity).
71
+
72
+ **Knowledge gaps** — concepts that came up repeatedly as questions or confusion.
73
+
74
+ Score each finding:
75
+ - **Frequency**: how many times it appeared (1 = once, 3 = three or more)
76
+ - **Time cost**: rough estimate per occurrence (minutes)
77
+ - **Fixability**: easy (a new skill/memory fixes it), medium (needs a process change), hard (structural)
78
+
79
+ Pick the top 1-3 findings by `frequency × time_cost × fixability_inverse`.
80
+
81
+ ## Step 3 — Formulate proposals
82
+
83
+ For each finding, produce exactly one proposal. Proposal types:
84
+
85
+ **Type A — New skill**: The repeated sequence can be codified. Provide:
86
+ - Proposed skill name (lowercase, dashes, ≤32 chars)
87
+ - Trigger phrases (3-5)
88
+ - 5-8 line SKILL.md workflow skeleton
89
+ - Estimated time savings per occurrence
90
+
91
+ **Type B — Skill tweak**: An existing skill is close but missing a step or check. Provide:
92
+ - Which skill (`/skill-name`)
93
+ - What specific text to add/change (before/after diff)
94
+ - Why this covers the gap
95
+
96
+ **Type C — ICM memory / eval criteria**: A pattern should be captured as a durable memory or eval rule. Provide:
97
+ - `icm store` command (with topic, content, importance)
98
+ - Or: a yes/no eval question to add to an existing skill
99
+
100
+ ## Step 4 — Present findings (D1)
101
+
102
+ Use AskUserQuestion:
103
+
104
+ ```
105
+ D1 — Performance review: N patterns found, N proposals
106
+ Project/branch/task: 24h session review — git, ICM memories, skill analytics.
107
+ ELI10: I looked at your last 24 hours of work: git commits, ICM memories,
108
+ skill runs, and resolved errors. Here's what I found repeating and what
109
+ I'd do about it. Approve proposals individually or skip any.
110
+ Stakes if we pick wrong: skipping a proposal leaves the pattern unfixed;
111
+ approving a bad proposal adds noise. You can always /skillify or rm a skill later.
112
+ Recommendation: A — review each proposal and approve what resonates.
113
+ Note: options differ in kind, not coverage — no completeness score.
114
+ A) Walk me through each proposal (recommended)
115
+ B) Show summary only, I'll decide what to dig into
116
+ C) Abort — nothing to act on today
117
+ ```
118
+
119
+ If B: print a one-line summary table (proposal number, type, finding, estimated savings). Stop.
120
+
121
+ If C: print "No changes made. Run /review-past-performance again anytime." Stop.
122
+
123
+ If A: proceed to Step 5.
124
+
125
+ ## Step 5 — Proposal gate (one per proposal)
126
+
127
+ For each proposal (D2, D3, D4 ...):
128
+
129
+ Print:
130
+ ```
131
+ --- Proposal N of N ---
132
+ Finding: <one sentence>
133
+ Pattern evidence: <which signals showed this>
134
+ Proposal type: <A/B/C>
135
+ <full proposal detail from Step 3>
136
+ Estimated savings: ~X min/occurrence
137
+ ```
138
+
139
+ Then AskUserQuestion:
140
+
141
+ ```
142
+ D<N> — Apply proposal N: <short title>?
143
+ Project/branch/task: <finding in one sentence>
144
+ ELI10: <plain English: what this proposes, what changes, what you gain>
145
+ Stakes if we pick wrong: <what happens if you apply a bad one, or skip a good one>
146
+ Recommendation: A — apply it — the evidence is clear enough to try it.
147
+ Note: options differ in kind, not coverage — no completeness score.
148
+ A) Apply this proposal (recommended)
149
+ B) Skip this one
150
+ C) Modify before applying (describe what to change)
151
+ ```
152
+
153
+ If C: ask what to change, update the proposal in-memory, re-show, re-ask A/B only.
154
+
155
+ ## Step 6 — Execute approved proposals
156
+
157
+ For each approved proposal:
158
+
159
+ **Type A (new skill):**
160
+ ```bash
161
+ mkdir -p ~/.claude/skills/<name>
162
+ ```
163
+ Write `~/.claude/skills/<name>/SKILL.md` with the skeleton from Step 3.
164
+ Print: "Skill /<name> created at ~/.claude/skills/<name>/SKILL.md — invoke it with /<name>."
165
+
166
+ **Type B (skill tweak):**
167
+ Read the target skill file. Apply the diff. Print the before/after. Do NOT commit.
168
+
169
+ **Type C (ICM memory):**
170
+ ```bash
171
+ icm store -t "<topic>" -c "<content>" -i <importance> -k "<keywords>"
172
+ ```
173
+ Print the stored memory ID.
174
+
175
+ ## Step 7 — Summary
176
+
177
+ After all proposals are processed, print a compact summary:
178
+
179
+ ```
180
+ /review-past-performance complete
181
+ Applied: N proposals
182
+ Skipped: N proposals
183
+
184
+ What changed:
185
+ - [list each applied change with one line]
186
+
187
+ Run again tomorrow: /review-past-performance
188
+ ```
189
+
190
+ Then:
191
+ ```bash
192
+ # Store this review run as an ICM memory so future reviews have continuity
193
+ icm store -t "context-workflow" \
194
+ -c "Performance review $(date +%Y-%m-%d): found [N] patterns, applied [N] proposals. Key findings: [one-line summary]" \
195
+ -i medium \
196
+ -k "performance-review,self-improvement" 2>/dev/null || true
197
+ ```
198
+
199
+ ```bash
200
+ # Log to gstack timeline if available
201
+ ~/.slate/skills/gstack/bin/gstack-timeline-log \
202
+ '{"skill":"review-past-performance","event":"completed","outcome":"success"}' 2>/dev/null || true
203
+ ```
204
+
205
+ ---
206
+
207
+ ## Notes
208
+
209
+ - This skill reads only — no git mutations, no PR actions, no Notion/Linear writes.
210
+ - Type A skills created here are skeletons. Run them once and tune before relying on them.
211
+ - If ICM is unavailable (`ICM_UNAVAILABLE`), fall back to git log + gstack analytics only; note the limitation in findings.
212
+ - If there are fewer than 3 signals available, say so and offer to run again after more sessions.
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "olko:self-critique",
3
+ "version": "0.1.0",
4
+ "description": "Adversarially critique your own last answer: spawn a critic agent that verifies claims against live sources, finds the related issue or pattern you missed, then loop until satisfied and report where you were wrong, iterations-to-satisfy, the numeric improvement, and a final score.",
5
+ "skills": "skills/"
6
+ }