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