@olegkoval/agent-skills 1.6.0 → 1.7.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.
- package/.claude-plugin/plugin.json +1 -1
- package/.kiro/steering/add-to-my-skills.md +78 -0
- package/.kiro/steering/ai-tools-setup.md +263 -0
- package/.kiro/steering/changelog-generator.md +106 -0
- package/.kiro/steering/cloudflare-block-countries.md +167 -0
- package/.kiro/steering/docs-index-keeper.md +53 -0
- package/.kiro/steering/fill-music-player.md +101 -0
- package/.kiro/steering/gallery.md +228 -0
- package/.kiro/steering/gh-cli.md +2190 -0
- package/.kiro/steering/git-commit.md +125 -0
- package/.kiro/steering/open-source-publisher.md +427 -0
- package/.kiro/steering/product-builder.md +213 -0
- package/.kiro/steering/promptctl.md +81 -0
- package/.kiro/steering/search-console-indexing-audit.md +57 -0
- package/.kiro/steering/semantic-release-beta.md +48 -0
- package/.kiro/steering/starter-rules.md +62 -0
- package/.kiro/steering/viral-launch.md +92 -0
- package/.windsurf/rules/add-to-my-skills.md +77 -0
- package/.windsurf/rules/ai-tools-setup.md +262 -0
- package/.windsurf/rules/changelog-generator.md +105 -0
- package/.windsurf/rules/cloudflare-block-countries.md +166 -0
- package/.windsurf/rules/docs-index-keeper.md +52 -0
- package/.windsurf/rules/fill-music-player.md +100 -0
- package/.windsurf/rules/gallery.md +227 -0
- package/.windsurf/rules/gh-cli.md +2189 -0
- package/.windsurf/rules/git-commit.md +124 -0
- package/.windsurf/rules/open-source-publisher.md +426 -0
- package/.windsurf/rules/product-builder.md +212 -0
- package/.windsurf/rules/promptctl.md +80 -0
- package/.windsurf/rules/search-console-indexing-audit.md +56 -0
- package/.windsurf/rules/semantic-release-beta.md +47 -0
- package/.windsurf/rules/starter-rules.md +61 -0
- package/.windsurf/rules/viral-launch.md +91 -0
- package/README.md +67 -14
- package/catalog/skills.json +48 -16
- package/docs/skill-anatomy.md +10 -6
- package/package.json +3 -1
- package/packages/marketing/search-console-indexing-audit/SKILL.md +3 -0
- package/packages/marketing/search-console-indexing-audit/adapters/claude/skills/search-console-indexing-audit/SKILL.md +3 -0
- package/packages/marketing/search-console-indexing-audit/adapters/cursor/plugin.json +1 -1
- package/packages/marketing/search-console-indexing-audit/adapters/cursor/skills/search-console-indexing-audit/SKILL.md +3 -0
- package/packages/marketing/search-console-indexing-audit/adapters/kiro/steering/search-console-indexing-audit.md +57 -0
- package/packages/marketing/search-console-indexing-audit/adapters/windsurf/rules/search-console-indexing-audit.md +56 -0
- package/packages/marketing/viral-launch/SKILL.md +3 -1
- package/packages/marketing/viral-launch/adapters/claude/skills/viral-launch/SKILL.md +3 -1
- package/packages/marketing/viral-launch/adapters/cursor/skills/viral-launch/SKILL.md +3 -1
- package/packages/marketing/viral-launch/adapters/kiro/steering/viral-launch.md +92 -0
- package/packages/marketing/viral-launch/adapters/windsurf/rules/viral-launch.md +91 -0
- package/packages/music/fill-music-player/SKILL.md +2 -1
- package/packages/music/fill-music-player/adapters/claude/skills/fill-music-player/SKILL.md +2 -1
- package/packages/music/fill-music-player/adapters/cursor/plugin.json +1 -1
- package/packages/music/fill-music-player/adapters/cursor/skills/fill-music-player/SKILL.md +2 -1
- package/packages/music/fill-music-player/adapters/kiro/steering/fill-music-player.md +101 -0
- package/packages/music/fill-music-player/adapters/windsurf/rules/fill-music-player.md +100 -0
- package/packages/photography/gallery/SKILL.md +3 -1
- package/packages/photography/gallery/adapters/claude/skills/gallery/SKILL.md +3 -1
- package/packages/photography/gallery/adapters/cursor/skills/gallery/SKILL.md +3 -1
- package/packages/photography/gallery/adapters/kiro/steering/gallery.md +228 -0
- package/packages/photography/gallery/adapters/windsurf/rules/gallery.md +227 -0
- package/packages/software-development/add-to-my-skills/SKILL.md +2 -1
- package/packages/software-development/add-to-my-skills/adapters/claude/skills/add-to-my-skills/SKILL.md +2 -1
- package/packages/software-development/add-to-my-skills/adapters/cursor/skills/add-to-my-skills/SKILL.md +2 -1
- package/packages/software-development/add-to-my-skills/adapters/kiro/steering/add-to-my-skills.md +78 -0
- package/packages/software-development/add-to-my-skills/adapters/windsurf/rules/add-to-my-skills.md +77 -0
- package/packages/software-development/ai-tools-setup/adapters/kiro/steering/ai-tools-setup.md +263 -0
- package/packages/software-development/ai-tools-setup/adapters/windsurf/rules/ai-tools-setup.md +262 -0
- package/packages/software-development/changelog-generator/SKILL.md +3 -1
- package/packages/software-development/changelog-generator/adapters/claude/skills/changelog-generator/SKILL.md +3 -1
- package/packages/software-development/changelog-generator/adapters/cursor/skills/changelog-generator/SKILL.md +3 -1
- package/packages/software-development/changelog-generator/adapters/kiro/steering/changelog-generator.md +106 -0
- package/packages/software-development/changelog-generator/adapters/windsurf/rules/changelog-generator.md +105 -0
- package/packages/software-development/cloudflare-block-countries/SKILL.md +1 -1
- package/packages/software-development/cloudflare-block-countries/adapters/claude/skills/cloudflare-block-countries/SKILL.md +1 -1
- package/packages/software-development/cloudflare-block-countries/adapters/cursor/skills/cloudflare-block-countries/SKILL.md +1 -1
- package/packages/software-development/cloudflare-block-countries/adapters/kiro/steering/cloudflare-block-countries.md +167 -0
- package/packages/software-development/cloudflare-block-countries/adapters/windsurf/rules/cloudflare-block-countries.md +166 -0
- package/packages/software-development/docs-index-keeper/SKILL.md +2 -1
- package/packages/software-development/docs-index-keeper/adapters/claude/skills/docs-index-keeper/SKILL.md +2 -1
- package/packages/software-development/docs-index-keeper/adapters/cursor/plugin.json +1 -1
- package/packages/software-development/docs-index-keeper/adapters/cursor/skills/docs-index-keeper/SKILL.md +2 -1
- package/packages/software-development/docs-index-keeper/adapters/kiro/steering/docs-index-keeper.md +53 -0
- package/packages/software-development/docs-index-keeper/adapters/windsurf/rules/docs-index-keeper.md +52 -0
- package/packages/software-development/gh-cli/SKILL.md +3 -1
- package/packages/software-development/gh-cli/adapters/claude/skills/gh-cli/SKILL.md +3 -1
- package/packages/software-development/gh-cli/adapters/cursor/skills/gh-cli/SKILL.md +3 -1
- package/packages/software-development/gh-cli/adapters/kiro/steering/gh-cli.md +2190 -0
- package/packages/software-development/gh-cli/adapters/windsurf/rules/gh-cli.md +2189 -0
- package/packages/software-development/git-commit/SKILL.md +1 -1
- package/packages/software-development/git-commit/adapters/claude/skills/git-commit/SKILL.md +1 -1
- package/packages/software-development/git-commit/adapters/cursor/skills/git-commit/SKILL.md +1 -1
- package/packages/software-development/git-commit/adapters/kiro/steering/git-commit.md +125 -0
- package/packages/software-development/git-commit/adapters/windsurf/rules/git-commit.md +124 -0
- package/packages/software-development/open-source-publisher/SKILL.md +2 -1
- package/packages/software-development/open-source-publisher/adapters/claude/skills/open-source-publisher/SKILL.md +2 -1
- package/packages/software-development/open-source-publisher/adapters/cursor/skills/open-source-publisher/SKILL.md +2 -1
- package/packages/software-development/open-source-publisher/adapters/kiro/steering/open-source-publisher.md +427 -0
- package/packages/software-development/open-source-publisher/adapters/windsurf/rules/open-source-publisher.md +426 -0
- package/packages/software-development/product-builder/SKILL.md +2 -1
- package/packages/software-development/product-builder/adapters/claude/skills/product-builder/SKILL.md +2 -1
- package/packages/software-development/product-builder/adapters/cursor/plugin.json +1 -1
- package/packages/software-development/product-builder/adapters/cursor/skills/product-builder/SKILL.md +2 -1
- package/packages/software-development/product-builder/adapters/kiro/steering/product-builder.md +213 -0
- package/packages/software-development/product-builder/adapters/windsurf/rules/product-builder.md +212 -0
- package/packages/software-development/promptctl/SKILL.md +3 -1
- package/packages/software-development/promptctl/adapters/claude/skills/promptctl/SKILL.md +3 -1
- package/packages/software-development/promptctl/adapters/cursor/skills/promptctl/SKILL.md +3 -1
- package/packages/software-development/promptctl/adapters/kiro/steering/promptctl.md +81 -0
- package/packages/software-development/promptctl/adapters/windsurf/rules/promptctl.md +80 -0
- package/packages/software-development/semantic-release-beta/SKILL.md +3 -1
- package/packages/software-development/semantic-release-beta/adapters/claude/skills/semantic-release-beta/SKILL.md +3 -1
- package/packages/software-development/semantic-release-beta/adapters/cursor/skills/semantic-release-beta/SKILL.md +3 -1
- package/packages/software-development/semantic-release-beta/adapters/kiro/steering/semantic-release-beta.md +48 -0
- package/packages/software-development/semantic-release-beta/adapters/windsurf/rules/semantic-release-beta.md +47 -0
- package/packages/software-development/starter-rules/SKILL.md +2 -1
- package/packages/software-development/starter-rules/adapters/claude/skills/starter-rules/SKILL.md +2 -1
- package/packages/software-development/starter-rules/adapters/cursor/plugin.json +3 -2
- package/packages/software-development/starter-rules/adapters/cursor/skills/starter-rules/SKILL.md +2 -1
- package/packages/software-development/starter-rules/adapters/kiro/steering/starter-rules.md +62 -0
- package/packages/software-development/starter-rules/adapters/windsurf/rules/starter-rules.md +61 -0
- package/scripts/build-adapters.sh +97 -8
- package/scripts/validate-catalog.sh +4 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
inclusion: manual
|
|
5
|
+
description: "Build a full-stack web application or SaaS product from a user description using production-oriented defaults."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Product Builder
|
|
10
|
+
|
|
11
|
+
You are a full-stack product builder. Your goal: **build real, working products — not prototypes**.
|
|
12
|
+
|
|
13
|
+
## Core Philosophy
|
|
14
|
+
|
|
15
|
+
- **Ship immediately** — No explanations, no questions about architecture. Code first.
|
|
16
|
+
- **Full-stack defaults** — Every product includes auth, database, APIs, and UI.
|
|
17
|
+
- **Real code patterns** — Use production-ready patterns, not toy examples.
|
|
18
|
+
- **Minimal diffs** — Change only what's necessary. Respect existing code.
|
|
19
|
+
|
|
20
|
+
## When a user asks to "build X"
|
|
21
|
+
|
|
22
|
+
You MUST:
|
|
23
|
+
1. Generate a working product, not a skeleton
|
|
24
|
+
2. Include authentication
|
|
25
|
+
3. Include database schema with migrations
|
|
26
|
+
4. Include API routes with input validation
|
|
27
|
+
5. Include a polished, responsive UI
|
|
28
|
+
6. Include tests
|
|
29
|
+
|
|
30
|
+
You MUST NOT:
|
|
31
|
+
- Ask "what framework do you want?"
|
|
32
|
+
- Ask "should we use a database?"
|
|
33
|
+
- Ask "how many features?"
|
|
34
|
+
- Create TODO comments for later implementation
|
|
35
|
+
|
|
36
|
+
## Default Tech Stack
|
|
37
|
+
|
|
38
|
+
| Layer | Technology |
|
|
39
|
+
|-------|-----------|
|
|
40
|
+
| **Framework** | Next.js 14 (App Router) |
|
|
41
|
+
| **Language** | TypeScript (strict) |
|
|
42
|
+
| **Styling** | Tailwind CSS + shadcn/ui |
|
|
43
|
+
| **Database** | Prisma + PostgreSQL |
|
|
44
|
+
| **Auth** | NextAuth.js |
|
|
45
|
+
| **Validation** | Zod |
|
|
46
|
+
| **State** | React Query + Zustand |
|
|
47
|
+
| **Testing** | Vitest + React Testing Library + Playwright |
|
|
48
|
+
|
|
49
|
+
The user can override any of these. If the project already uses a different stack, follow the existing stack.
|
|
50
|
+
|
|
51
|
+
## Specialist Domains
|
|
52
|
+
|
|
53
|
+
When building a product, apply expertise from these domains as needed:
|
|
54
|
+
|
|
55
|
+
### UI Design
|
|
56
|
+
- Tailwind CSS utility-first, mobile-first responsive
|
|
57
|
+
- shadcn/ui components over custom solutions
|
|
58
|
+
- Dark mode support with `class` strategy
|
|
59
|
+
- Accessibility: semantic HTML, ARIA labels, keyboard nav, WCAG AA contrast
|
|
60
|
+
- Animations with Framer Motion or CSS transitions
|
|
61
|
+
- Component pattern: `cn()` utility for conditional classes
|
|
62
|
+
|
|
63
|
+
### Database Architecture
|
|
64
|
+
- Prisma schema with proper indexes and relations
|
|
65
|
+
- Multi-tenant patterns when applicable (org-scoped data)
|
|
66
|
+
- Referential integrity and cascade rules
|
|
67
|
+
- Query optimization: use `select` and `include` deliberately
|
|
68
|
+
- Migration strategy: always generate and review migrations
|
|
69
|
+
- Audit fields: `createdAt`, `updatedAt` on every model
|
|
70
|
+
|
|
71
|
+
### API Design
|
|
72
|
+
- Consistent response format: `{ success: true, data }` / `{ success: false, error: { code, message } }`
|
|
73
|
+
- Zod validation schemas for all inputs
|
|
74
|
+
- Proper HTTP status codes (201 for creation, 400 for validation, 401/403 for auth)
|
|
75
|
+
- Pagination: `page`, `limit`, `total`, `totalPages`
|
|
76
|
+
- Rate limiting for public endpoints
|
|
77
|
+
- Server Actions for form submissions
|
|
78
|
+
|
|
79
|
+
### Testing
|
|
80
|
+
- Vitest for unit and integration tests
|
|
81
|
+
- React Testing Library for component tests
|
|
82
|
+
- Playwright for E2E tests
|
|
83
|
+
- Test critical paths: auth flows, CRUD operations, edge cases
|
|
84
|
+
- Mock external services, not internal code
|
|
85
|
+
- Factories/fixtures for test data
|
|
86
|
+
|
|
87
|
+
## Code Quality Standards
|
|
88
|
+
|
|
89
|
+
- TypeScript strict mode, no `any` types without justification
|
|
90
|
+
- Error boundaries and proper error handling at every layer
|
|
91
|
+
- Security-first: validate inputs, sanitize outputs, check permissions
|
|
92
|
+
- Performance: memoize expensive renders, optimize queries, pagination
|
|
93
|
+
- Accessibility: semantic HTML, ARIA labels, keyboard navigation
|
|
94
|
+
|
|
95
|
+
## File Organization
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
app/
|
|
99
|
+
(auth)/ # Auth routes group
|
|
100
|
+
login/page.tsx
|
|
101
|
+
register/page.tsx
|
|
102
|
+
(app)/ # Protected routes group
|
|
103
|
+
dashboard/page.tsx
|
|
104
|
+
settings/page.tsx
|
|
105
|
+
api/ # API routes
|
|
106
|
+
auth/route.ts
|
|
107
|
+
[resource]/route.ts
|
|
108
|
+
actions/ # Server actions
|
|
109
|
+
lib/
|
|
110
|
+
db.ts # Database client
|
|
111
|
+
auth.ts # Auth config
|
|
112
|
+
api-response.ts # Response helpers
|
|
113
|
+
validation.ts # Zod schemas
|
|
114
|
+
components/
|
|
115
|
+
ui/ # shadcn/ui components
|
|
116
|
+
forms/ # Form components
|
|
117
|
+
layouts/ # Layout components
|
|
118
|
+
prisma/
|
|
119
|
+
schema.prisma
|
|
120
|
+
migrations/
|
|
121
|
+
__tests__/
|
|
122
|
+
unit/
|
|
123
|
+
integration/
|
|
124
|
+
e2e/
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## API Response Pattern
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// lib/api-response.ts
|
|
131
|
+
export type ApiResponse<T = unknown> =
|
|
132
|
+
| { success: true; data: T }
|
|
133
|
+
| { success: false; error: { code: string; message: string; details?: Record<string, string[]> } };
|
|
134
|
+
|
|
135
|
+
export function successResponse<T>(data: T): ApiResponse<T> {
|
|
136
|
+
return { success: true, data };
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export function errorResponse(code: string, message: string, details?: Record<string, string[]>): ApiResponse<never> {
|
|
140
|
+
return { success: false, error: { code, message, details } };
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Route Handler Pattern
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
// app/api/posts/route.ts
|
|
148
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
149
|
+
import { z } from 'zod';
|
|
150
|
+
import { prisma } from '@/lib/db';
|
|
151
|
+
import { auth } from '@/lib/auth';
|
|
152
|
+
import { successResponse, errorResponse } from '@/lib/api';
|
|
153
|
+
|
|
154
|
+
const createPostSchema = z.object({
|
|
155
|
+
title: z.string().min(1).max(200),
|
|
156
|
+
content: z.string().min(1),
|
|
157
|
+
status: z.enum(['DRAFT', 'PUBLISHED']).default('DRAFT'),
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
export async function POST(request: NextRequest) {
|
|
161
|
+
const session = await auth();
|
|
162
|
+
if (!session?.user) {
|
|
163
|
+
return NextResponse.json(errorResponse('UNAUTHORIZED', 'Authentication required'), { status: 401 });
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const body = await request.json();
|
|
167
|
+
const result = createPostSchema.safeParse(body);
|
|
168
|
+
|
|
169
|
+
if (!result.success) {
|
|
170
|
+
return NextResponse.json(
|
|
171
|
+
errorResponse('VALIDATION_ERROR', 'Invalid input', result.error.flatten().fieldErrors),
|
|
172
|
+
{ status: 400 },
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const post = await prisma.post.create({
|
|
177
|
+
data: { ...result.data, authorId: session.user.id },
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
return NextResponse.json(successResponse(post), { status: 201 });
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Component Pattern
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
import { cn } from '@/lib/utils';
|
|
188
|
+
|
|
189
|
+
interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
190
|
+
children: React.ReactNode;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export function Card({ className, ...props }: CardProps) {
|
|
194
|
+
return (
|
|
195
|
+
<div
|
|
196
|
+
className={cn(
|
|
197
|
+
'rounded-lg border border-slate-200 bg-white p-6 shadow-sm',
|
|
198
|
+
'dark:border-slate-800 dark:bg-slate-950',
|
|
199
|
+
className,
|
|
200
|
+
)}
|
|
201
|
+
{...props}
|
|
202
|
+
/>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## When Stuck or Uncertain
|
|
208
|
+
|
|
209
|
+
Do not ask the user. Execute using best practices from the relevant domain. Default to the simplest solution that works.
|
|
210
|
+
|
|
211
|
+
## Example Prompts
|
|
212
|
+
|
|
213
|
+
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,81 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
inclusion: manual
|
|
5
|
+
description: "Use promptctl for template-based prompt engineering, scoring, and workflow automation."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# promptctl — Template-Based Prompt Engineering
|
|
10
|
+
|
|
11
|
+
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.
|
|
12
|
+
|
|
13
|
+
## When to suggest promptctl
|
|
14
|
+
|
|
15
|
+
Suggest using promptctl when the user:
|
|
16
|
+
- Repeatedly copies the same type of prompt (code review, debug analysis, architecture notes)
|
|
17
|
+
- Wants to share prompt conventions across a team or repo
|
|
18
|
+
- Needs CI/CD gates on prompt quality
|
|
19
|
+
- Wants to improve prompt quality without an LLM (offline rule-based enhance)
|
|
20
|
+
- Asks about structuring or scoring a prompt
|
|
21
|
+
|
|
22
|
+
## Core commands
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
promptctl review --file=src/auth.ts # Code review prompt
|
|
26
|
+
promptctl debug --file=src/handler.go # Systematic debug analysis
|
|
27
|
+
promptctl arch --file=docs/design.md # Architecture decision record
|
|
28
|
+
promptctl commit # Conventional commit message
|
|
29
|
+
promptctl explain --file=src/parser.ts # Code explanation
|
|
30
|
+
|
|
31
|
+
promptctl list # See all available templates
|
|
32
|
+
promptctl score prompts/ # Score prompt files 0-100
|
|
33
|
+
promptctl fix prompts/ # Auto-fix low-scoring prompts
|
|
34
|
+
promptctl create "review auth for security" # Create prompt from raw intent (offline)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Pi integration commands
|
|
38
|
+
|
|
39
|
+
When the user is inside pi:
|
|
40
|
+
- `/promptctl review --file=src/auth.ts` — renders the review template and injects it as the next user message
|
|
41
|
+
- `/quick-templates` — lists all available templates
|
|
42
|
+
- `/cost-score <file>` — scores a prompt file on structure and clarity
|
|
43
|
+
- The `promptctl_apply` tool can be called by the LLM directly to render a template
|
|
44
|
+
|
|
45
|
+
## Key capabilities
|
|
46
|
+
|
|
47
|
+
- Templates are YAML files with `{{.variable}}` substitution — stored in `~/.promptctl/templates/` or `.promptctl/templates/` in your project
|
|
48
|
+
- `--file=path` auto-populates `{{.file_content}}`, `{{.file_name}}`, `{{.file_ext}}`
|
|
49
|
+
- Prompt scoring (0–100) on: structure, clarity, constraints, persona
|
|
50
|
+
- Offline rule-based enhance (`promptctl create`) — no API key or network needed
|
|
51
|
+
- JSON output and exit codes for CI pipelines (`promptctl score --min-score=80`)
|
|
52
|
+
- Direct LLM send (`promptctl send review --file=main.go`) with Anthropic/OpenAI support
|
|
53
|
+
|
|
54
|
+
## Example workflows
|
|
55
|
+
|
|
56
|
+
**Code review in pi:**
|
|
57
|
+
```
|
|
58
|
+
/promptctl review --file=src/payments.ts --focus=security
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Debug analysis:**
|
|
62
|
+
```
|
|
63
|
+
/promptctl debug --file=src/worker.go --error="context deadline exceeded"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Improve a prompt file:**
|
|
67
|
+
```
|
|
68
|
+
promptctl score my-prompt.md
|
|
69
|
+
promptctl fix my-prompt.md
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Create a new structured prompt from intent (offline):**
|
|
73
|
+
```
|
|
74
|
+
promptctl create "analyze this Go function for race conditions"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Resources
|
|
78
|
+
|
|
79
|
+
- GitHub: https://github.com/oleg-koval/promptctl
|
|
80
|
+
- Website: https://prompt-ctl.com
|
|
81
|
+
- Install: `brew tap oleg-koval/tap && brew install promptctl`
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
inclusion: manual
|
|
5
|
+
description: "Analyze Google Search Console Coverage CSV exports and correlate them with sitemap, robots, canonical, redirect, and noindex signals."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# search-console-indexing-audit
|
|
10
|
+
|
|
11
|
+
Use this skill to turn Google Search Console Coverage exports into a concrete indexing fix plan.
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. Read the export directory first:
|
|
16
|
+
- `Chart.csv` for indexed/not-indexed trend and impressions
|
|
17
|
+
- `Metadata.csv` for property context such as sitemap scope
|
|
18
|
+
- `Critical issues.csv` and `Non-critical issues.csv` for issue buckets
|
|
19
|
+
2. Run the summarizer when the standard CSV files are present:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
python3 <skill-dir>/scripts/summarize_gsc_coverage.py <export-dir>
|
|
23
|
+
python3 <skill-dir>/scripts/summarize_gsc_coverage.py <export-dir> --json
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
3. Inspect the target repo for SEO sources of truth:
|
|
27
|
+
- sitemap generation and whether listed URLs are canonical, indexable HTML pages
|
|
28
|
+
- robots rules, sitemap URL, and host hints
|
|
29
|
+
- canonical metadata, `metadataBase`, Open Graph URL base, and per-route `noindex`
|
|
30
|
+
- redirects across apex/www, http/https, trailing slash, moved routes, and legacy paths
|
|
31
|
+
4. Check live URLs when network access is available:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
curl -sS -I https://example.com/sitemap.xml
|
|
35
|
+
curl -sS https://example.com/sitemap.xml
|
|
36
|
+
curl -sS https://example.com/robots.txt
|
|
37
|
+
curl -sS https://example.com/page | rg -o '<link rel="canonical"[^>]*>|<meta name="robots"[^>]*>'
|
|
38
|
+
curl -sS -I -L --max-redirs 5 https://example.com/page
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
5. Map GSC buckets to fixes:
|
|
42
|
+
- `Page with redirect`: remove redirected URLs from sitemap and canonicals; submit only final 200 URLs.
|
|
43
|
+
- `Redirect error`: inspect redirect chains, protocol/host loops, blocked destinations, and non-200 final responses.
|
|
44
|
+
- `Alternate page with proper canonical tag`: usually acceptable; verify sitemap does not include alternates.
|
|
45
|
+
- `Discovered - currently not indexed`: improve crawl signals first: clean sitemap, canonical consistency, internal links, content quality, stable 200 responses, and lastmod accuracy.
|
|
46
|
+
- `Excluded by noindex`: verify it is intentional and keep those URLs out of sitemap.
|
|
47
|
+
|
|
48
|
+
## Output
|
|
49
|
+
|
|
50
|
+
Report:
|
|
51
|
+
|
|
52
|
+
- Export summary: date range, indexed/not-indexed trend, issue buckets, and limitations.
|
|
53
|
+
- Likely root cause, with evidence from files or live HTTP responses.
|
|
54
|
+
- Prioritized fixes, smallest reliable change first.
|
|
55
|
+
- Verification steps for local tests, build, live sitemap/robots/canonical checks, and Search Console validation.
|
|
56
|
+
|
|
57
|
+
Call out when the export is aggregate-only and does not contain affected URL examples. Do not infer exact URLs unless the CSVs or live sitemap provide them.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
inclusion: manual
|
|
5
|
+
description: "Set up semantic-release-npm-github-publish with stable main releases and prerelease beta releases on a beta branch."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# semantic-release-beta
|
|
10
|
+
|
|
11
|
+
Use this skill when a project needs a reusable beta prerelease workflow with:
|
|
12
|
+
|
|
13
|
+
- `semantic-release`
|
|
14
|
+
- `semantic-release-npm-github-publish`
|
|
15
|
+
- GitHub Actions
|
|
16
|
+
- a stable `main` branch
|
|
17
|
+
- a prerelease `beta` branch
|
|
18
|
+
- npm publishing with `beta` prerelease versions
|
|
19
|
+
- changelog generation, GitHub releases, npm publishing, and release commits through the maintained preset
|
|
20
|
+
|
|
21
|
+
## Trigger phrases
|
|
22
|
+
|
|
23
|
+
- add a beta release workflow
|
|
24
|
+
- publish prereleases from a `beta` branch
|
|
25
|
+
- set up `semantic-release` with `main` and `beta`
|
|
26
|
+
- use `semantic-release-npm-github-publish`
|
|
27
|
+
- add release validation or dry-run checks in CI
|
|
28
|
+
|
|
29
|
+
## Workflow
|
|
30
|
+
|
|
31
|
+
1. Inspect the repository first.
|
|
32
|
+
2. Install or update `semantic-release`, `semantic-release-npm-github-publish`, and the peer plugins expected by the preset.
|
|
33
|
+
3. Configure the repo-local semantic-release file to extend `semantic-release-npm-github-publish` and set branches explicitly:
|
|
34
|
+
- `main` for stable releases
|
|
35
|
+
- `{ name: "beta", channel: "beta", prerelease: "beta" }` for prereleases
|
|
36
|
+
4. Add scripts if missing:
|
|
37
|
+
- `semantic-release`: `semantic-release`
|
|
38
|
+
- `release:dry-run`: `semantic-release --dry-run --no-ci`
|
|
39
|
+
5. Update GitHub Actions to test both `main` and `beta`, validate npm auth, and run release dry-run before real releases.
|
|
40
|
+
6. Preserve existing package manager and Node version policy unless the repo needs the preset's supported Node range.
|
|
41
|
+
7. Use repo-local plugin composition instead of this preset only when the project needs different plugins, different release rules, or full control over plugin upgrade timing.
|
|
42
|
+
|
|
43
|
+
## References
|
|
44
|
+
|
|
45
|
+
- `references/preset.md`
|
|
46
|
+
- `references/node-semantic-release.md`
|
|
47
|
+
- `references/github-actions.md`
|
|
48
|
+
- `references/validation.md`
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
inclusion: manual
|
|
5
|
+
description: "Load and enforce hard rules for every oleg-koval/* starter: 300-line files, E2E tests, pre-commit hooks, Vertical Slice architecture, no comments, KISS/DRY/SOLID."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Starter Rules
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
Load the canonical hard rules for every `oleg-koval/*` starter repo and verify the current repo complies with them. Produces a compliance report and a list of gaps to fix.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
- Starting a new coding session in any `oleg-koval/*` template repo
|
|
18
|
+
- Auditing an existing starter for rule compliance before a release or PR merge
|
|
19
|
+
- Onboarding a new contributor (human or AI) to a starter
|
|
20
|
+
- After a large refactor, to verify rules have not been silently violated
|
|
21
|
+
|
|
22
|
+
Do not use for repos outside the `oleg-koval` namespace unless they explicitly reference `RULES.md`.
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
1. **Load the rules** — read `RULES.md` from the repo root. If absent, fetch it from `https://github.com/oleg-koval/starters/blob/main/RULES.md` and note that the starter is missing a local copy.
|
|
27
|
+
|
|
28
|
+
2. **Apply §2 hard rules** — for the current task or PR diff, verify:
|
|
29
|
+
- No file exceeds 300 lines (`find . -name '*.ts' -o -name '*.py' -o -name '*.go' | xargs wc -l | awk '$1 > 300 && $2 != "total"'`)
|
|
30
|
+
- No functions produce side effects outside of boundary layers
|
|
31
|
+
- New code has no WHAT-comments; WHY-comments are one line max
|
|
32
|
+
- Tests are E2E-first; unit tests only for pure logic with non-trivial branching
|
|
33
|
+
|
|
34
|
+
3. **Verify hooks and lint** — check that pre-commit hooks are installed and configured:
|
|
35
|
+
- TypeScript: `cat .eslintrc* | grep max-lines` and `cat package.json | grep -A5 '"lint-staged"\|"husky"\|"lefthook"'`
|
|
36
|
+
- Python: `cat .pre-commit-config.yaml` and check for `ruff` + format hooks
|
|
37
|
+
- Go: `cat .golangci.yml` or `.pre-commit-config.yaml` and check for `golangci-lint` + `gofmt`
|
|
38
|
+
|
|
39
|
+
4. **Check architecture** — for app/SaaS starters: confirm feature code is organized as vertical slices (feature directory contains handler + DTO + service + tests together). For library starters: skip.
|
|
40
|
+
|
|
41
|
+
5. **Report gaps** — list any violations found in steps 2–4. For each gap:
|
|
42
|
+
- Name the rule (e.g., "§2.2 file length")
|
|
43
|
+
- Name the file and line count or violation
|
|
44
|
+
- Propose the minimal fix
|
|
45
|
+
|
|
46
|
+
6. **Fix on request** — if the user asks to fix the gaps, apply them one at a time, smallest change first. Do not refactor beyond what the rule requires.
|
|
47
|
+
|
|
48
|
+
## Reference
|
|
49
|
+
|
|
50
|
+
Full rule details: [`RULES.md`](./RULES.md)
|
|
51
|
+
|
|
52
|
+
Architecture options and future starters: `RULES.md §3`
|
|
53
|
+
|
|
54
|
+
Unix principles: `RULES.md §4`
|
|
55
|
+
|
|
56
|
+
## Verification
|
|
57
|
+
|
|
58
|
+
- [ ] `RULES.md` was read from the repo root (or fetched and absence noted)
|
|
59
|
+
- [ ] File length check ran with zero violations, or violations were listed
|
|
60
|
+
- [ ] Pre-commit hooks verified as installed and configured
|
|
61
|
+
- [ ] Compliance report produced listing passed checks and gaps
|
|
62
|
+
- [ ] Any fixes applied do not exceed the scope of the violated rule
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
inclusion: manual
|
|
5
|
+
description: "Set up a project repository and launch plan for shareable marketing, public launch readiness, and growth loops."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# viral-launch
|
|
10
|
+
|
|
11
|
+
Use this skill when a user wants to launch a project, make a repo marketable, improve discoverability, or build shareable launch assets.
|
|
12
|
+
|
|
13
|
+
This skill is opinionated: virality is not a promise. The goal is to make the project easy to understand, easy to share, and easy to act on.
|
|
14
|
+
|
|
15
|
+
## Trigger phrases
|
|
16
|
+
|
|
17
|
+
- make this repo launch-ready
|
|
18
|
+
- set this up to go viral
|
|
19
|
+
- prepare a product launch
|
|
20
|
+
- create marketing assets for this project
|
|
21
|
+
- improve the README for launch
|
|
22
|
+
- prepare Product Hunt / Hacker News / X / LinkedIn launch copy
|
|
23
|
+
- set up an open-source repo for growth
|
|
24
|
+
|
|
25
|
+
## Workflow
|
|
26
|
+
|
|
27
|
+
1. Inspect the project first:
|
|
28
|
+
- product purpose
|
|
29
|
+
- target user
|
|
30
|
+
- core use case
|
|
31
|
+
- current README and docs
|
|
32
|
+
- install or demo path
|
|
33
|
+
- screenshots, videos, or visual proof
|
|
34
|
+
- analytics or waitlist capture if present
|
|
35
|
+
2. Define the launch angle in one sentence:
|
|
36
|
+
- who it is for
|
|
37
|
+
- what painful job it solves
|
|
38
|
+
- why now
|
|
39
|
+
- what makes it different
|
|
40
|
+
3. Make the repo launch-ready:
|
|
41
|
+
- clear README headline and first paragraph
|
|
42
|
+
- demo or quickstart within the first screen
|
|
43
|
+
- installation steps that work from a clean checkout
|
|
44
|
+
- screenshots, GIF, or demo link where possible
|
|
45
|
+
- feature list based on outcomes, not implementation trivia
|
|
46
|
+
- examples for the highest-intent use cases
|
|
47
|
+
- badges only when they add trust
|
|
48
|
+
- license, contributing notes, and issue templates when useful
|
|
49
|
+
4. Create launch assets:
|
|
50
|
+
- short tagline
|
|
51
|
+
- 1-paragraph announcement
|
|
52
|
+
- 5 social post variants
|
|
53
|
+
- Product Hunt tagline and description when relevant
|
|
54
|
+
- Hacker News title candidates when relevant
|
|
55
|
+
- launch email or DM when relevant
|
|
56
|
+
- creator/influencer outreach list criteria, not spam copy
|
|
57
|
+
5. Design share loops:
|
|
58
|
+
- a reason users would show the output to someone else
|
|
59
|
+
- a public artifact worth linking
|
|
60
|
+
- a before/after demo
|
|
61
|
+
- a template, benchmark, checklist, or gallery that can travel
|
|
62
|
+
- referral or waitlist loop only if it fits the product
|
|
63
|
+
6. Define proof and metrics:
|
|
64
|
+
- activation event
|
|
65
|
+
- share event
|
|
66
|
+
- conversion event
|
|
67
|
+
- retention proxy
|
|
68
|
+
- launch-day dashboard or simple tracking checklist
|
|
69
|
+
7. Keep claims grounded:
|
|
70
|
+
- do not invent traction, logos, benchmarks, testimonials, or user counts
|
|
71
|
+
- mark assumptions explicitly
|
|
72
|
+
- prefer specific proof over hype
|
|
73
|
+
- avoid dark patterns and spam
|
|
74
|
+
|
|
75
|
+
## Output format
|
|
76
|
+
|
|
77
|
+
When planning, produce:
|
|
78
|
+
|
|
79
|
+
- Launch angle
|
|
80
|
+
- Repo changes
|
|
81
|
+
- Launch assets
|
|
82
|
+
- Share loops
|
|
83
|
+
- Metrics
|
|
84
|
+
- Risks and assumptions
|
|
85
|
+
- Next actions
|
|
86
|
+
|
|
87
|
+
When editing a repository, make the smallest useful set of changes first, then validate by reading the README from a new user's perspective.
|
|
88
|
+
|
|
89
|
+
## References
|
|
90
|
+
|
|
91
|
+
- `references/launch-checklist.md`
|
|
92
|
+
- `references/external-skills.md`
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
description: "Copy a newly created skill into this catalog, refresh manifests, and publish the change."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Add to My Skills
|
|
9
|
+
|
|
10
|
+
Use this skill when a skill was created in another repository and needs to be copied into this catalog as a first-class package.
|
|
11
|
+
|
|
12
|
+
## Outcome
|
|
13
|
+
|
|
14
|
+
Bring the source skill into `packages/software-development/`, register it in the catalog, refresh generated docs and adapters, and publish the change with a git commit and push.
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
|
|
18
|
+
- The user created a new `SKILL.md` in another repo and wants it added here
|
|
19
|
+
- The user wants this catalog to become the canonical home for that skill
|
|
20
|
+
- The user wants the README, generated manifests, commit, and push handled in one pass
|
|
21
|
+
|
|
22
|
+
## Clarify Before Acting
|
|
23
|
+
|
|
24
|
+
If any of these are unclear, ask up to 3 questions in one batch before editing:
|
|
25
|
+
|
|
26
|
+
- Source repo or source skill path
|
|
27
|
+
- Final skill name if it should differ from the source
|
|
28
|
+
- Destination branch or remote if the push target is unclear
|
|
29
|
+
|
|
30
|
+
Default assumptions when not specified:
|
|
31
|
+
|
|
32
|
+
- Copy the source skill as a new canonical package in `packages/software-development/<skill-name>/`
|
|
33
|
+
- Keep the source skill name unless the user asks to rename it
|
|
34
|
+
- Use this repository as the destination
|
|
35
|
+
- Commit with a conventional commit message and push to the current branch's upstream
|
|
36
|
+
|
|
37
|
+
## Workflow
|
|
38
|
+
|
|
39
|
+
1. Inspect the source skill:
|
|
40
|
+
- locate the source `SKILL.md`
|
|
41
|
+
- copy any supporting `references/`, `scripts/`, or `assets/` files that the skill needs
|
|
42
|
+
- note any repo-specific assumptions that need to be rewritten for this catalog
|
|
43
|
+
2. Choose the package location:
|
|
44
|
+
- default to `packages/software-development/<skill-name>/`
|
|
45
|
+
- ensure the package directory name matches the `name` frontmatter value
|
|
46
|
+
3. Create or update the canonical package:
|
|
47
|
+
- write `SKILL.md` first
|
|
48
|
+
- keep the frontmatter accurate and concise
|
|
49
|
+
- make the workflow explicit, actionable, and self-contained
|
|
50
|
+
4. Register the package in the repository inventory:
|
|
51
|
+
- add the package to `catalog/skills.json`
|
|
52
|
+
- add it to the appropriate collection file if it belongs in a bundle
|
|
53
|
+
- update `README.md` so the package list, counts, and usage examples stay current
|
|
54
|
+
5. Refresh generated outputs:
|
|
55
|
+
- run `./scripts/build-adapters.sh`
|
|
56
|
+
- run `./scripts/validate-catalog.sh`
|
|
57
|
+
6. Verify the new package actually exists:
|
|
58
|
+
- confirm `packages/software-development/<skill-name>/SKILL.md`
|
|
59
|
+
- confirm generated adapter files and prompt files were created
|
|
60
|
+
7. Commit and push:
|
|
61
|
+
- inspect `git status`
|
|
62
|
+
- commit the change with a conventional message
|
|
63
|
+
- push to the current upstream branch
|
|
64
|
+
|
|
65
|
+
## Git Safety
|
|
66
|
+
|
|
67
|
+
- Never overwrite unrelated changes
|
|
68
|
+
- Never force push unless the user explicitly asks
|
|
69
|
+
- Never commit secrets copied from the source repo
|
|
70
|
+
- If the source skill is incomplete or ambiguous, stop and ask for clarification instead of guessing
|
|
71
|
+
|
|
72
|
+
## Verification
|
|
73
|
+
|
|
74
|
+
- `./scripts/build-adapters.sh` completes successfully
|
|
75
|
+
- `./scripts/validate-catalog.sh` passes
|
|
76
|
+
- `git status` shows only the intended package, catalog, README, and generated files
|
|
77
|
+
- `git push` succeeds to the expected remote
|