@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,426 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
description: "Prepare an open-source repository for public publishing with a minimal icon, social preview image, GitHub Pages site, README standardization, CI/CD checks, release hygiene, and optional donation setup."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# open-source-publisher
|
|
9
|
+
|
|
10
|
+
Use this skill to audit whether an OSS repository is ready to publish, then help only with missing or weak pieces: recognizable icon, shareable social image, GitHub Pages site, standardized README, CI/CD hygiene, release readiness, and optional donation links.
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. Inspect the repository before editing:
|
|
15
|
+
- package/tooling files: `go.mod`, `package.json`, `pyproject.toml`, `Cargo.toml`, `Makefile`, etc.
|
|
16
|
+
- current README, docs, website files, images, workflows, releases, license, funding files
|
|
17
|
+
- existing product purpose, author, install paths, examples, and public URLs
|
|
18
|
+
2. Produce a readiness audit before asking for changes:
|
|
19
|
+
- `Ready`: publish-critical pieces that already exist and look usable
|
|
20
|
+
- `Weak`: existing pieces that are present but incomplete, stale, broken, inconsistent, or below the house standard
|
|
21
|
+
- `Missing`: publish-critical pieces that do not exist
|
|
22
|
+
- `Optional`: nice-to-have pieces such as donations or extra badges
|
|
23
|
+
3. Classify the repository type before recommending changes:
|
|
24
|
+
- `library`, `CLI`, `web app`, `framework`, `docs site`, or `other`
|
|
25
|
+
- use the type to decide whether governance, packaging, or presentation work should come first
|
|
26
|
+
4. Identify maintainer identity and public home information when they affect publishing:
|
|
27
|
+
- Ask for the GitHub handle or org name if the repo will have a public owner/maintainer identity, funding links, release notes, or badges
|
|
28
|
+
- Ask for a canonical website/homepage URL if the project needs a homepage, docs site, or public project URL
|
|
29
|
+
- If `homepage`, `author`, or org metadata already exists and looks current, do not ask again
|
|
30
|
+
5. For existing usable pieces, do not propose replacement by default. Ask a change-oriented question only when useful, for example:
|
|
31
|
+
- "You already have a terminal-style GitHub Pages site. Do you want to keep it or restyle it?"
|
|
32
|
+
- "You already have an icon and social card. Do you want a refresh, or should I leave them as-is?"
|
|
33
|
+
- "You already have release automation. Do you want me to audit only, or also tighten it?"
|
|
34
|
+
6. Ask only for choices needed to fix missing or weak pieces:
|
|
35
|
+
- If GitHub Pages is missing or weak, ask for style: `oldschool linux`, `terminal`, `modern`, `brutalist`, `glassmorphism`, `y2k`, `hacker`, or custom.
|
|
36
|
+
- If donation wiring is missing, ask whether to enable it: `none`, `GitHub Sponsors`, `Ko-fi`, `Buy Me a Coffee`, `Open Collective`, `Thanks.dev`, or custom URL.
|
|
37
|
+
- If the repo has no clear product essence, ask for a one-sentence positioning statement.
|
|
38
|
+
7. Implement only approved, missing, or weak work in this order:
|
|
39
|
+
- OSS governance and support files
|
|
40
|
+
- minimal icon
|
|
41
|
+
- social preview image
|
|
42
|
+
- README standard
|
|
43
|
+
- GitHub Pages landing page
|
|
44
|
+
- GitHub Pages analytics setup, if requested
|
|
45
|
+
- CI/CD and release audit/fixes
|
|
46
|
+
- donation wiring, if requested
|
|
47
|
+
8. Validate locally and with browser/screenshots when possible.
|
|
48
|
+
9. Commit/push only when the user asks or the current task explicitly requires it.
|
|
49
|
+
|
|
50
|
+
## Readiness Audit
|
|
51
|
+
|
|
52
|
+
Treat this skill as an OSS publishing readiness checker first and an implementer second. The first response after inspection should be a concise audit with concrete evidence from the repo.
|
|
53
|
+
|
|
54
|
+
Publish-critical checklist:
|
|
55
|
+
|
|
56
|
+
- repository identity: clear project name, description, topic/keywords, author, license
|
|
57
|
+
- install path: package manager, release assets, source build, or direct download instructions
|
|
58
|
+
- maintainer identity: GitHub handle or org name when public identity is relevant
|
|
59
|
+
- public home: canonical website/homepage URL when the project needs one
|
|
60
|
+
- if either field does not exist, proceed without it and mark it as absent
|
|
61
|
+
- OSS governance: `LICENSE`, `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, support policy, issue/PR templates, changelog or release notes path
|
|
62
|
+
- README standard: centered shields, icon, title, short description, horizontal rule, essential sections
|
|
63
|
+
- icon: simple SVG mark plus rendered PNG, both committed in predictable paths
|
|
64
|
+
- social image: 1200x630 image with matching metadata, with both SVG source and rendered PNG committed when practical
|
|
65
|
+
- GitHub Pages or docs site: essential install/examples/links/SEO/Open Graph metadata
|
|
66
|
+
- GitHub Pages analytics: optional setup to track visitor patterns and engagement
|
|
67
|
+
- CI quality gates: formatter, linter/static analysis, tests, build/package check
|
|
68
|
+
- release automation: tags/releases/artifacts/package update flow, docs-only changes excluded where needed
|
|
69
|
+
- security posture: license, security notes or policy, OpenSSF Scorecard or equivalent when appropriate
|
|
70
|
+
- contribution path: issues/PR guidance, support expectations, project status
|
|
71
|
+
- donations: explicitly absent, declined, or configured
|
|
72
|
+
|
|
73
|
+
Audit output format:
|
|
74
|
+
|
|
75
|
+
```md
|
|
76
|
+
## OSS Publish Readiness
|
|
77
|
+
|
|
78
|
+
Ready
|
|
79
|
+
- README uses the house top block with test, Go Report Card, and OpenSSF shields.
|
|
80
|
+
- Release workflow builds darwin arm64/amd64 binaries and updates the Homebrew tap.
|
|
81
|
+
|
|
82
|
+
Weak
|
|
83
|
+
- Direct download examples point at a fixed release tag; latest-release URLs would age better.
|
|
84
|
+
|
|
85
|
+
Missing
|
|
86
|
+
- No `.github/FUNDING.yml`; donations are not configured.
|
|
87
|
+
|
|
88
|
+
Questions
|
|
89
|
+
- You already have a terminal-style GitHub Pages site. Keep it, or restyle it?
|
|
90
|
+
- What is the GitHub handle or org name for public attribution?
|
|
91
|
+
- What is the canonical website or homepage URL, if any?
|
|
92
|
+
- Donations are not configured. Enable them or leave them off?
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Rules:
|
|
96
|
+
|
|
97
|
+
- Do not ask for style, donations, or redesign choices before the audit.
|
|
98
|
+
- Do not overwrite existing icon, social image, README, site, workflows, or funding files unless the user approves a change or the audit classifies the item as weak.
|
|
99
|
+
- If everything publish-critical is ready, say so and offer only optional improvements.
|
|
100
|
+
- If the user asks to "run the skill" without more detail, audit first, then wait for approval before making non-trivial visual or workflow changes.
|
|
101
|
+
- Keep the audit evidence-based. Reference filenames, workflow names, package metadata, or command outputs.
|
|
102
|
+
|
|
103
|
+
## Minimal Icon
|
|
104
|
+
|
|
105
|
+
Create a simple, recognizable SVG logo from the repository's essence. Prefer `logo.svg` and also render `logo.png` so the icon can be reused in README assets, release artifacts, and platform-specific previews.
|
|
106
|
+
|
|
107
|
+
Icon rules:
|
|
108
|
+
|
|
109
|
+
- Use one clear metaphor from the project domain, not a collage.
|
|
110
|
+
- Keep the mark readable at 32px.
|
|
111
|
+
- Prefer 1-2 shapes and 1-2 accent colors.
|
|
112
|
+
- Use a simple rounded tile only when it improves favicon readability.
|
|
113
|
+
- Avoid terminal window chrome, decorative dots, random badges, and center glyph clutter unless the project itself is a terminal/window tool.
|
|
114
|
+
- Avoid generic AI tells: glass effects, bokeh/orbs, over-layered gradients, busy shadows, and unrelated emojis.
|
|
115
|
+
- If the repo has a website or homepage, ensure the icon fits that visual system.
|
|
116
|
+
|
|
117
|
+
Good icon pattern for sync/migration tools:
|
|
118
|
+
|
|
119
|
+
```svg
|
|
120
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
|
|
121
|
+
<title id="title">Project logo</title>
|
|
122
|
+
<desc id="desc">Clean sync icon made from two circular arrows.</desc>
|
|
123
|
+
<defs>
|
|
124
|
+
<linearGradient id="topArrow" x1="142" y1="118" x2="392" y2="250" gradientUnits="userSpaceOnUse">
|
|
125
|
+
<stop offset="0%" stop-color="#22c55e"/>
|
|
126
|
+
<stop offset="100%" stop-color="#38bdf8"/>
|
|
127
|
+
</linearGradient>
|
|
128
|
+
<linearGradient id="bottomArrow" x1="370" y1="394" x2="120" y2="262" gradientUnits="userSpaceOnUse">
|
|
129
|
+
<stop offset="0%" stop-color="#fb7185"/>
|
|
130
|
+
<stop offset="100%" stop-color="#f59e0b"/>
|
|
131
|
+
</linearGradient>
|
|
132
|
+
</defs>
|
|
133
|
+
<rect width="512" height="512" rx="112" fill="#0d1117"/>
|
|
134
|
+
<rect x="42" y="42" width="428" height="428" rx="96" fill="#111827" stroke="#1f2937" stroke-width="8"/>
|
|
135
|
+
<g fill="none" stroke-linecap="round" stroke-linejoin="round">
|
|
136
|
+
<path d="M142 234c13-70 74-122 147-122 52 0 99 27 126 69" stroke="url(#topArrow)" stroke-width="42"/>
|
|
137
|
+
<path d="M389 118l35 67-75 4" stroke="url(#topArrow)" stroke-width="42"/>
|
|
138
|
+
<path d="M370 278c-13 70-74 122-147 122-52 0-99-27-126-69" stroke="url(#bottomArrow)" stroke-width="42"/>
|
|
139
|
+
<path d="M123 394l-35-67 75-4" stroke="url(#bottomArrow)" stroke-width="42"/>
|
|
140
|
+
</g>
|
|
141
|
+
</svg>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Adapt the geometry and metaphor. Do not reuse the sync arrows for unrelated projects.
|
|
145
|
+
|
|
146
|
+
## Social Image
|
|
147
|
+
|
|
148
|
+
Create a 1200x630 social preview image for GitHub, Twitter/X, Slack, and link unfurls.
|
|
149
|
+
|
|
150
|
+
Recommended files:
|
|
151
|
+
|
|
152
|
+
- `social-card.svg` as the editable source
|
|
153
|
+
- `social-card.png` rendered from the SVG when render tooling is available
|
|
154
|
+
- keep both files in the repo when practical so the preview can be updated without redrawing the whole asset
|
|
155
|
+
|
|
156
|
+
Social image rules:
|
|
157
|
+
|
|
158
|
+
- Include project name, one clear value proposition, and 2-3 concrete capabilities.
|
|
159
|
+
- Keep the composition simple and calm. Large readable type beats dense feature lists.
|
|
160
|
+
- Use actual project language: commands, package name, supported platform, or primary workflow.
|
|
161
|
+
- Match the icon color system.
|
|
162
|
+
- Keep all text inside a safe margin of at least 64px.
|
|
163
|
+
- Use `og:image`, `twitter:image`, width/height meta tags, and meaningful alt text.
|
|
164
|
+
- If the repo has a homepage or canonical website, make the social card and metadata point to that URL consistently.
|
|
165
|
+
|
|
166
|
+
Render checks:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
rsvg-convert -w 1200 -h 630 social-card.svg -o social-card.png
|
|
170
|
+
file social-card.png
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Use `magick` or another renderer when `rsvg-convert` is unavailable.
|
|
174
|
+
|
|
175
|
+
## README Standard
|
|
176
|
+
|
|
177
|
+
Shape the README like the house standard used for Go packages such as `slow-query-detector` and `dcli`.
|
|
178
|
+
|
|
179
|
+
Top block:
|
|
180
|
+
|
|
181
|
+
```html
|
|
182
|
+
<p align="center">
|
|
183
|
+
<a href="..."><img src="..." alt="tests"></a>
|
|
184
|
+
<a href="..."><img src="..." alt="Go Report Card"></a>
|
|
185
|
+
<a href="..."><img src="..." alt="OpenSSF Scorecard"></a>
|
|
186
|
+
</p>
|
|
187
|
+
|
|
188
|
+
<p align="center">
|
|
189
|
+
<img src="./logo.svg" width="120" height="120" alt="project icon">
|
|
190
|
+
</p>
|
|
191
|
+
|
|
192
|
+
<h1 align="center">project-name</h1>
|
|
193
|
+
|
|
194
|
+
<p align="center">
|
|
195
|
+
Short product description<br>
|
|
196
|
+
<strong>One-line promise</strong>
|
|
197
|
+
</p>
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Choose shields from the repo's tech:
|
|
203
|
+
|
|
204
|
+
- always: test workflow badge if a test workflow exists
|
|
205
|
+
- Go: Go Report Card, OpenSSF Scorecard
|
|
206
|
+
- Node/npm: npm version, npm downloads, test workflow, OpenSSF Scorecard
|
|
207
|
+
- Python: PyPI version, Python versions, test workflow, OpenSSF Scorecard
|
|
208
|
+
- coverage: only include if coverage service is configured
|
|
209
|
+
- release: only include if releases are automated and meaningful
|
|
210
|
+
|
|
211
|
+
Recommended README sections:
|
|
212
|
+
|
|
213
|
+
1. Features
|
|
214
|
+
2. Installation
|
|
215
|
+
3. Quick Start
|
|
216
|
+
4. Configuration
|
|
217
|
+
5. Commands Reference or API Reference
|
|
218
|
+
6. System Requirements
|
|
219
|
+
7. Documentation
|
|
220
|
+
8. Use Cases
|
|
221
|
+
9. Architecture
|
|
222
|
+
10. Project Status
|
|
223
|
+
11. Security Notes
|
|
224
|
+
12. Contributing
|
|
225
|
+
13. License
|
|
226
|
+
14. Author
|
|
227
|
+
15. centered footer links
|
|
228
|
+
|
|
229
|
+
Rules:
|
|
230
|
+
|
|
231
|
+
- Keep badges centered and compact.
|
|
232
|
+
- Keep the icon centered below shields.
|
|
233
|
+
- Put a horizontal rule after the centered intro.
|
|
234
|
+
- Use current release/download URLs; prefer `/releases/latest/download/...` when stable asset names exist.
|
|
235
|
+
- Do not claim coverage, license, support, CI, or releases that are not actually present.
|
|
236
|
+
- Add or fix `LICENSE` before saying MIT/Apache/etc.
|
|
237
|
+
|
|
238
|
+
## OSS Governance
|
|
239
|
+
|
|
240
|
+
Treat governance files as first-class publishing work, not optional paperwork.
|
|
241
|
+
|
|
242
|
+
Check for, or add when appropriate:
|
|
243
|
+
|
|
244
|
+
- `LICENSE`
|
|
245
|
+
- `CONTRIBUTING.md`
|
|
246
|
+
- `SECURITY.md`
|
|
247
|
+
- `CODE_OF_CONDUCT.md`
|
|
248
|
+
- `SUPPORT.md`
|
|
249
|
+
- `.github/ISSUE_TEMPLATE/*`
|
|
250
|
+
- `.github/PULL_REQUEST_TEMPLATE.md`
|
|
251
|
+
- `CHANGELOG.md` or a release notes workflow
|
|
252
|
+
- package metadata for homepage, repository, bugs, and funding links
|
|
253
|
+
|
|
254
|
+
Rules:
|
|
255
|
+
|
|
256
|
+
- For libraries and CLIs, prioritize governance and release path before visual polish.
|
|
257
|
+
- For web apps or product sites, keep the governance checks but allow branding and landing page work to happen earlier when the public-facing experience is the main product.
|
|
258
|
+
- If a repo already has governance docs that are good enough, mark them `Ready` and move on.
|
|
259
|
+
- If the project has no maintainer/support policy, ask whether support should be community-only, maintainer-only, or commercial.
|
|
260
|
+
|
|
261
|
+
## GitHub Pages
|
|
262
|
+
|
|
263
|
+
Create a simple essential GitHub Pages site when the project lacks one or the existing one is weak.
|
|
264
|
+
|
|
265
|
+
Ask the user to choose one style first:
|
|
266
|
+
|
|
267
|
+
- `oldschool linux`
|
|
268
|
+
- `terminal`
|
|
269
|
+
- `modern`
|
|
270
|
+
- `brutalist`
|
|
271
|
+
- `glassmorphism`
|
|
272
|
+
- `y2k`
|
|
273
|
+
- `hacker`
|
|
274
|
+
- custom style
|
|
275
|
+
|
|
276
|
+
Required page content:
|
|
277
|
+
|
|
278
|
+
- project name and icon
|
|
279
|
+
- one-sentence value proposition
|
|
280
|
+
- author link
|
|
281
|
+
- install/download instructions
|
|
282
|
+
- 2-4 short examples
|
|
283
|
+
- feature summary
|
|
284
|
+
- links to GitHub, README, releases, issues
|
|
285
|
+
- SEO meta description and keywords
|
|
286
|
+
- Open Graph and Twitter meta tags
|
|
287
|
+
- social image reference
|
|
288
|
+
- footer with license and optional donation/badge links
|
|
289
|
+
|
|
290
|
+
Implementation defaults:
|
|
291
|
+
|
|
292
|
+
- Use a static `index.html` unless the repo already has a site framework.
|
|
293
|
+
- Add `CNAME` only when the user gives a domain.
|
|
294
|
+
- Add `.github/workflows/pages.yml` when Pages uses GitHub Actions or no deploy path exists.
|
|
295
|
+
- Avoid marketing fluff and oversized hero sections for developer tools. Make the first viewport useful.
|
|
296
|
+
- Use system UI fonts for body text and monospace only for commands, labels, or terminal-specific elements.
|
|
297
|
+
|
|
298
|
+
## GitHub Pages Analytics
|
|
299
|
+
|
|
300
|
+
Add basic analytics to track site visitor patterns and user behavior when the project has a GitHub Pages site.
|
|
301
|
+
|
|
302
|
+
Setup options:
|
|
303
|
+
|
|
304
|
+
- **Google Analytics** (free, detailed): Add UA or GA4 tracking ID to site `<head>`
|
|
305
|
+
- **Plausible** (simple, privacy-first, paid): Lightweight script alternative
|
|
306
|
+
- **Simple counter** (basic): Visitor count badge using Shields.io or statically-generated endpoint
|
|
307
|
+
|
|
308
|
+
Minimal Google Analytics setup for static sites:
|
|
309
|
+
|
|
310
|
+
```html
|
|
311
|
+
<script async src="https://www.googletagmanager.com/gtag/js?id=G-YOUR_ID"></script>
|
|
312
|
+
<script>
|
|
313
|
+
window.dataLayer = window.dataLayer || [];
|
|
314
|
+
function gtag(){dataLayer.push(arguments);}
|
|
315
|
+
gtag('js', new Date());
|
|
316
|
+
gtag('config', 'G-YOUR_ID');
|
|
317
|
+
</script>
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Track these essential events:
|
|
321
|
+
|
|
322
|
+
- **pageview** (automatic): Site visitors and page sections
|
|
323
|
+
- **download_release**: Clicks on install/download links (track each platform/format)
|
|
324
|
+
- **view_docs**: Navigation to documentation pages
|
|
325
|
+
- **github_click**: Click through to GitHub repo
|
|
326
|
+
- **copy_command**: Code snippet copies in examples
|
|
327
|
+
|
|
328
|
+
Optional custom events for OSS projects:
|
|
329
|
+
|
|
330
|
+
- **search_docs**: If docs site has search
|
|
331
|
+
- **view_example**: Specific example/use-case sections viewed
|
|
332
|
+
- **support_click**: Link clicks to issues, discussions, or support channels
|
|
333
|
+
|
|
334
|
+
Rules:
|
|
335
|
+
|
|
336
|
+
- Add analytics after publishing the site; do not gate site launch on analytics.
|
|
337
|
+
- If the user prefers privacy-first or no analytics, skip this step.
|
|
338
|
+
- Store analytics credentials as GitHub Pages environment secret or site config, never in git.
|
|
339
|
+
- Review monthly to catch unusual patterns or broken tracking links.
|
|
340
|
+
|
|
341
|
+
## CI/CD And Release Audit
|
|
342
|
+
|
|
343
|
+
Check whether the repository has:
|
|
344
|
+
|
|
345
|
+
- formatter check
|
|
346
|
+
- linter/static analysis
|
|
347
|
+
- tests
|
|
348
|
+
- build/package check
|
|
349
|
+
- dependency review / lockfile integrity checks
|
|
350
|
+
- secret scanning or secret prevention
|
|
351
|
+
- license scanning / OSS compliance scan
|
|
352
|
+
- SBOM or provenance generation where appropriate
|
|
353
|
+
- security scan or OpenSSF Scorecard where appropriate
|
|
354
|
+
- release automation
|
|
355
|
+
- docs/site-only path filters when release runs on `main`
|
|
356
|
+
- docs link checker or markdown validation for repo/docs sites
|
|
357
|
+
- package-specific smoke install / publish dry-run matrix
|
|
358
|
+
|
|
359
|
+
For Go projects, prefer:
|
|
360
|
+
|
|
361
|
+
```yaml
|
|
362
|
+
- go test ./... -race
|
|
363
|
+
- go vet ./...
|
|
364
|
+
- gofmt check
|
|
365
|
+
- staticcheck ./...
|
|
366
|
+
- go build ./...
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
For Node projects, prefer existing package manager scripts:
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
npm ci
|
|
373
|
+
npm run lint
|
|
374
|
+
npm test
|
|
375
|
+
npm run build
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
Release automation rules:
|
|
379
|
+
|
|
380
|
+
- Inspect existing release flow before changing it.
|
|
381
|
+
- Do not create releases for docs/site-only changes.
|
|
382
|
+
- Make Homebrew/package formulas update from real release artifacts and checksums.
|
|
383
|
+
- Use least-privilege secrets and document required secret names.
|
|
384
|
+
- If automation pushes tags, guard against rerun/version reuse.
|
|
385
|
+
- Prefer signed or attestable releases where the ecosystem supports it.
|
|
386
|
+
- Prefer release notes generation from tags or merged PRs instead of hand-written release bodies when the repo is release-heavy.
|
|
387
|
+
|
|
388
|
+
## Donations
|
|
389
|
+
|
|
390
|
+
Ask whether the user wants donations enabled.
|
|
391
|
+
|
|
392
|
+
If yes:
|
|
393
|
+
|
|
394
|
+
1. Ask for provider and URL/handle if not inferable.
|
|
395
|
+
2. Add `.github/FUNDING.yml` for GitHub-supported providers.
|
|
396
|
+
3. Add a short README Support section or footer link.
|
|
397
|
+
4. Add site footer/link only if the project has a site.
|
|
398
|
+
5. Do not invent payment handles.
|
|
399
|
+
|
|
400
|
+
Provider hints:
|
|
401
|
+
|
|
402
|
+
```yaml
|
|
403
|
+
github: username
|
|
404
|
+
ko_fi: handle
|
|
405
|
+
custom:
|
|
406
|
+
- https://example.com/support
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
## Validation
|
|
410
|
+
|
|
411
|
+
Run the checks that match the edits:
|
|
412
|
+
|
|
413
|
+
- SVG syntax: `xmllint --noout logo.svg social-card.svg`
|
|
414
|
+
- Render social image: `rsvg-convert -w 1200 -h 630 social-card.svg -o social-card.png`
|
|
415
|
+
- README links and badge URLs where practical: `curl -I`
|
|
416
|
+
- Site render: local static server plus browser/screenshot when available
|
|
417
|
+
- Repo tests/build/lint
|
|
418
|
+
- Workflow YAML parse, for example with Ruby: `ruby -e 'require "yaml"; YAML.load_file(".github/workflows/ci.yml")'`
|
|
419
|
+
- `git diff --check`
|
|
420
|
+
|
|
421
|
+
Before final response, state:
|
|
422
|
+
|
|
423
|
+
- files changed
|
|
424
|
+
- validation commands run
|
|
425
|
+
- release/donation caveats
|
|
426
|
+
- any secrets the user must configure
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
name: product-builder
|
|
3
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
4
|
license: MIT
|
|
5
|
-
|
|
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.
|
|
6
7
|
metadata:
|
|
7
8
|
author: Oleg Koval
|
|
8
9
|
tags:
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
name: product-builder
|
|
5
5
|
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.
|
|
6
6
|
license: MIT
|
|
7
|
-
|
|
7
|
+
allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
|
|
8
|
+
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.
|
|
8
9
|
metadata:
|
|
9
10
|
author: Oleg Koval
|
|
10
11
|
tags:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "olko:product-builder",
|
|
3
3
|
"version": "0.1.0",
|
|
4
|
-
"description": "Build a full-stack web application or SaaS product from a user description.",
|
|
4
|
+
"description": "Build a full-stack web application or SaaS product from a user description using production-oriented defaults.",
|
|
5
5
|
"skills": "skills/"
|
|
6
6
|
}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
name: product-builder
|
|
5
5
|
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.
|
|
6
6
|
license: MIT
|
|
7
|
-
|
|
7
|
+
allowed-tools: Bash, Read, Write, Edit, WebSearch, WebFetch
|
|
8
|
+
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.
|
|
8
9
|
metadata:
|
|
9
10
|
author: Oleg Koval
|
|
10
11
|
tags:
|
package/packages/software-development/product-builder/adapters/kiro/steering/product-builder.md
ADDED
|
@@ -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.
|