create-bashi-starter 1.0.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/bin/create-bashi-starter.js +198 -0
- package/package.json +26 -0
- package/template/.claude/CLAUDE.md +70 -0
- package/template/.claude/REFERENCE.md +68 -0
- package/template/.claude/agents/builder.md +48 -0
- package/template/.claude/agents/orchestrator.md +220 -0
- package/template/.claude/agents/reviewer.md +58 -0
- package/template/.claude/commands/capture-idea.md +73 -0
- package/template/.claude/commands/run-project.md +109 -0
- package/template/.claude/commands/save.md +78 -0
- package/template/.claude/commands/setup.md +73 -0
- package/template/.claude/commands/start.md +55 -0
- package/template/.claude/commands/status.md +40 -0
- package/template/.claude/hooks/lib/detect-python.sh +12 -0
- package/template/.claude/hooks/pre-bash-firewall.sh +48 -0
- package/template/.claude/hooks/pre-write-secrets-scan.sh +56 -0
- package/template/.claude/hooks/session-start.sh +54 -0
- package/template/.claude/project/EVENTS.md +29 -0
- package/template/.claude/project/IDENTITY.md +12 -0
- package/template/.claude/project/RUN_POLICY.md +59 -0
- package/template/.claude/project/STATE.md +57 -0
- package/template/.claude/project/knowledge/DECISIONS.md +21 -0
- package/template/.claude/project/knowledge/GLOSSARY.md +21 -0
- package/template/.claude/project/knowledge/OPEN_QUESTIONS.md +21 -0
- package/template/.claude/rules/context-policy.md +47 -0
- package/template/.claude/rules/orchestration-routing.md +39 -0
- package/template/.claude/rules/user-consent.md +12 -0
- package/template/.claude/settings.json +51 -0
- package/template/.claude/skills/REGISTRY.md +23 -0
- package/template/.claude/skills/code-review/SKILL.md +251 -0
- package/template/.claude/skills/deployment/SKILL.md +301 -0
- package/template/.claude/skills/frontend-dev/SKILL.md +192 -0
- package/template/.claude/skills/plan-from-idea/SKILL.md +85 -0
- package/template/.claude/skills/prd-to-tasks/SKILL.md +207 -0
- package/template/.claude/skills/prd-writing/SKILL.md +226 -0
- package/template/.claudeignore +14 -0
- package/template/FRAMEWORK_VERSION +1 -0
- package/template/README.md +95 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: SKL-0021
|
|
3
|
+
name: Deployment
|
|
4
|
+
description: |
|
|
5
|
+
Ship workflow: merge main, run tests, review diff, auto-changelog, bisectable
|
|
6
|
+
commits, push, and create PR. Use this skill when deployment is requested,
|
|
7
|
+
a release is ready to ship, or the user says "ship it."
|
|
8
|
+
version: 3.0
|
|
9
|
+
owner: builder
|
|
10
|
+
triggers:
|
|
11
|
+
- DEPLOYMENT_REQUESTED
|
|
12
|
+
- SHIP_REQUESTED
|
|
13
|
+
inputs:
|
|
14
|
+
- Task description (from active task or event)
|
|
15
|
+
- .claude/project/STATE.md
|
|
16
|
+
- .claude/project/knowledge/DECISIONS.md
|
|
17
|
+
- TODOS.md (if exists)
|
|
18
|
+
- CHANGELOG.md (if exists)
|
|
19
|
+
- VERSION (if exists)
|
|
20
|
+
outputs:
|
|
21
|
+
- Code committed, pushed, and PR created
|
|
22
|
+
- CHANGELOG.md updated
|
|
23
|
+
- VERSION bumped
|
|
24
|
+
- TODOS.md updated (completed items marked)
|
|
25
|
+
- .claude/project/STATE.md (updated)
|
|
26
|
+
tags:
|
|
27
|
+
- deployment
|
|
28
|
+
- release
|
|
29
|
+
- ship
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# Skill: Deployment & Ship
|
|
33
|
+
|
|
34
|
+
## Metadata
|
|
35
|
+
|
|
36
|
+
| Field | Value |
|
|
37
|
+
|-------|-------|
|
|
38
|
+
| **Skill ID** | SKL-0021 |
|
|
39
|
+
| **Version** | 3.0 |
|
|
40
|
+
| **Owner** | builder |
|
|
41
|
+
| **Inputs** | Task description, STATE.md, DECISIONS.md, TODOS.md |
|
|
42
|
+
| **Outputs** | Commits, PR, CHANGELOG, VERSION, TODOS.md, STATE.md |
|
|
43
|
+
| **Triggers** | `DEPLOYMENT_REQUESTED`, `SHIP_REQUESTED` |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Purpose
|
|
48
|
+
|
|
49
|
+
Take code from a feature branch and land it: merge main, test, review, version bump, changelog, commit, push, PR.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Cognitive Mode
|
|
54
|
+
|
|
55
|
+
**Release Engineer.** You are methodical, cautious, and thorough. Every step has a reason. Tests must pass. Reviews must clear. Nothing ships without evidence it works.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Ship Mode
|
|
60
|
+
|
|
61
|
+
> The user said "ship it" or triggered `SHIP_REQUESTED`. Run straight through. Only stop for blockers.
|
|
62
|
+
|
|
63
|
+
**Only stop for:**
|
|
64
|
+
- On `main` branch (abort)
|
|
65
|
+
- Merge conflicts that can't be auto-resolved
|
|
66
|
+
- Test failures
|
|
67
|
+
- CRITICAL review findings where user chooses to fix
|
|
68
|
+
- MINOR/MAJOR version bump decisions
|
|
69
|
+
|
|
70
|
+
**Never stop for:**
|
|
71
|
+
- Uncommitted changes (include them)
|
|
72
|
+
- CHANGELOG content (auto-generate)
|
|
73
|
+
- Commit message approval (auto-commit)
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Ship Procedure
|
|
78
|
+
|
|
79
|
+
### Step 1 --- Pre-flight
|
|
80
|
+
|
|
81
|
+
1. Check the current branch. If on `main`, **abort**: "You're on main. Ship from a feature branch."
|
|
82
|
+
2. Run `git status` (never use `-uall`). Uncommitted changes are always included.
|
|
83
|
+
3. Run `git diff main...HEAD --stat` and `git log main..HEAD --oneline` to understand what's being shipped.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
### Step 2 --- Merge origin/main
|
|
88
|
+
|
|
89
|
+
Fetch and merge so tests run against the merged state:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
git fetch origin main && git merge origin/main --no-edit
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**If merge conflicts:** Try to auto-resolve simple ones (VERSION, CHANGELOG ordering). If complex, **STOP** and show them.
|
|
96
|
+
|
|
97
|
+
**If already up to date:** Continue silently.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Step 3 --- Run Tests
|
|
102
|
+
|
|
103
|
+
Detect and run the project's test suite:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Detect test runner
|
|
107
|
+
if [ -f "package.json" ]; then npm test 2>&1 | tee /tmp/ship_tests.txt; fi
|
|
108
|
+
if [ -f "pytest.ini" ] || [ -f "setup.py" ]; then pytest 2>&1 | tee /tmp/ship_tests.txt; fi
|
|
109
|
+
if [ -f "Gemfile" ]; then bundle exec rspec 2>&1 | tee /tmp/ship_tests.txt; fi
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
If no test runner is detected, note it and continue (many early projects don't have tests yet).
|
|
113
|
+
|
|
114
|
+
**If any test fails:** Show the failures and **STOP**. Do not proceed.
|
|
115
|
+
|
|
116
|
+
**If all pass:** Note the counts briefly and continue.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Step 4 --- Pre-Landing Review
|
|
121
|
+
|
|
122
|
+
Run a lightweight review of the diff:
|
|
123
|
+
|
|
124
|
+
1. Run `git diff origin/main` to get the full diff.
|
|
125
|
+
2. Apply a two-pass review:
|
|
126
|
+
- **Pass 1 (CRITICAL):** Security vulnerabilities, hardcoded secrets, data safety issues, trust boundary violations
|
|
127
|
+
- **Pass 2 (INFORMATIONAL):** Code quality, consistency, test gaps
|
|
128
|
+
|
|
129
|
+
3. Output: `Pre-Landing Review: N issues (X critical, Y informational)`
|
|
130
|
+
|
|
131
|
+
4. **If CRITICAL issues found:** For EACH, present individually with:
|
|
132
|
+
- Problem + recommended fix
|
|
133
|
+
- Options: A) Fix it now, B) Acknowledge and ship anyway, C) False positive
|
|
134
|
+
- If user chose A on any: apply fixes, commit them, then **re-run tests** (Step 3) before continuing.
|
|
135
|
+
|
|
136
|
+
5. **If no critical issues:** Continue.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### Step 5 --- Version Bump
|
|
141
|
+
|
|
142
|
+
**If a VERSION file exists:**
|
|
143
|
+
|
|
144
|
+
1. Read the current version.
|
|
145
|
+
2. Auto-decide bump level:
|
|
146
|
+
- Count lines changed: `git diff origin/main...HEAD --stat | tail -1`
|
|
147
|
+
- **PATCH** (default): Most changes --- bug fixes, small-medium features
|
|
148
|
+
- **MINOR**: Ask the user --- only for major features or significant changes
|
|
149
|
+
- **MAJOR**: Ask the user --- only for milestones or breaking changes
|
|
150
|
+
3. Write the new version to VERSION.
|
|
151
|
+
|
|
152
|
+
**If no VERSION file exists:** Skip this step.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
### Step 6 --- Auto-Generate CHANGELOG
|
|
157
|
+
|
|
158
|
+
1. Read `CHANGELOG.md` header (if exists) to match format. If no CHANGELOG exists, create one.
|
|
159
|
+
2. Generate entry from all commits on the branch:
|
|
160
|
+
- `git log main..HEAD --oneline` for commit history
|
|
161
|
+
- `git diff main...HEAD` for the full diff
|
|
162
|
+
3. Categorize changes:
|
|
163
|
+
- `### Added` --- new features
|
|
164
|
+
- `### Changed` --- changes to existing functionality
|
|
165
|
+
- `### Fixed` --- bug fixes
|
|
166
|
+
- `### Removed` --- removed features
|
|
167
|
+
4. Write concise, descriptive bullet points.
|
|
168
|
+
5. Insert after the file header, dated today.
|
|
169
|
+
6. Format: `## [version] - YYYY-MM-DD` (use version from Step 5, or "Unreleased" if no VERSION file).
|
|
170
|
+
|
|
171
|
+
**Do NOT ask the user to describe changes.** Infer from the diff and commits.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### Step 7 --- TODOS.md Cross-Reference
|
|
176
|
+
|
|
177
|
+
If `TODOS.md` exists:
|
|
178
|
+
|
|
179
|
+
1. Read the file.
|
|
180
|
+
2. Use the diff and commit history to detect completed TODOs:
|
|
181
|
+
- Match commit messages against TODO descriptions
|
|
182
|
+
- Check if files referenced in TODOs appear in the diff
|
|
183
|
+
- **Be conservative** --- only mark as complete with clear evidence
|
|
184
|
+
3. Move completed items to the `## Completed` section with: `**Completed:** vX.Y.Z (YYYY-MM-DD)`
|
|
185
|
+
4. Output: `TODOS.md: N items marked complete. M items remaining.`
|
|
186
|
+
|
|
187
|
+
If `TODOS.md` doesn't exist, skip silently.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### Step 8 --- Commit (Bisectable Chunks)
|
|
192
|
+
|
|
193
|
+
**Goal:** Create small, logical commits that work with `git bisect`.
|
|
194
|
+
|
|
195
|
+
1. Analyze the diff and group changes into logical commits. Each commit = one coherent change (not one file, one logical unit).
|
|
196
|
+
|
|
197
|
+
2. **Commit ordering** (earlier first):
|
|
198
|
+
- **Infrastructure:** migrations, config, routes
|
|
199
|
+
- **Core logic:** models, services, utilities (with their tests)
|
|
200
|
+
- **UI/presentation:** controllers, views, components (with their tests)
|
|
201
|
+
- **Metadata:** VERSION + CHANGELOG (always the final commit)
|
|
202
|
+
|
|
203
|
+
3. **Rules:**
|
|
204
|
+
- A module and its test file go in the same commit
|
|
205
|
+
- Each commit must be independently valid --- no broken imports
|
|
206
|
+
- If total diff is small (<50 lines across <4 files), a single commit is fine
|
|
207
|
+
- Order commits so dependencies come first
|
|
208
|
+
|
|
209
|
+
4. Compose commit messages:
|
|
210
|
+
- First line: `<type>: <summary>` (type = feat/fix/chore/refactor/docs)
|
|
211
|
+
- Only the **final commit** (VERSION + CHANGELOG) gets the co-author trailer:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
git commit -m "$(cat <<'EOF'
|
|
215
|
+
chore: bump version and changelog (vX.Y.Z)
|
|
216
|
+
|
|
217
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
218
|
+
EOF
|
|
219
|
+
)"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
### Step 9 --- Push
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
git push -u origin <branch-name>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Never force push.**
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
### Step 10 --- Create PR
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
gh pr create --title "<type>: <summary>" --body "$(cat <<'EOF'
|
|
238
|
+
## Summary
|
|
239
|
+
<bullet points from CHANGELOG>
|
|
240
|
+
|
|
241
|
+
## Pre-Landing Review
|
|
242
|
+
<findings from Step 4, or "No issues found.">
|
|
243
|
+
|
|
244
|
+
## TODOS
|
|
245
|
+
<completed items, or "No TODO items completed in this PR.">
|
|
246
|
+
|
|
247
|
+
## Test plan
|
|
248
|
+
- [x] All tests pass
|
|
249
|
+
|
|
250
|
+
Generated with [Claude Code](https://claude.com/claude-code)
|
|
251
|
+
EOF
|
|
252
|
+
)"
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Output the PR URL** --- this is the final output.
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
### Step 11 --- Update STATE.md
|
|
260
|
+
|
|
261
|
+
Record: version shipped, PR URL, files changed, TODOS completed.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Constraints
|
|
266
|
+
|
|
267
|
+
- Never force pushes
|
|
268
|
+
- Never commits secrets or real env var values
|
|
269
|
+
- Never ships without running tests
|
|
270
|
+
- Never skips the pre-landing review
|
|
271
|
+
- Ship Mode is non-interactive by default --- only stops for blockers
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Primary Agent
|
|
276
|
+
|
|
277
|
+
builder
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Definition of Done
|
|
282
|
+
|
|
283
|
+
- [ ] Pre-flight check passed (not on main, diff exists)
|
|
284
|
+
- [ ] origin/main merged
|
|
285
|
+
- [ ] Tests pass
|
|
286
|
+
- [ ] Pre-landing review completed
|
|
287
|
+
- [ ] VERSION bumped (if VERSION file exists)
|
|
288
|
+
- [ ] CHANGELOG generated
|
|
289
|
+
- [ ] TODOS.md cross-referenced
|
|
290
|
+
- [ ] Commits are bisectable and logically grouped
|
|
291
|
+
- [ ] Pushed to remote
|
|
292
|
+
- [ ] PR created with summary
|
|
293
|
+
- [ ] STATE.md updated
|
|
294
|
+
|
|
295
|
+
## Output Contract
|
|
296
|
+
|
|
297
|
+
| Field | Value |
|
|
298
|
+
|-------|-------|
|
|
299
|
+
| **Artifacts** | Commits pushed, PR created, `CHANGELOG.md` updated, `VERSION` bumped |
|
|
300
|
+
| **State Update** | `.claude/project/STATE.md` --- mark task complete, log files modified |
|
|
301
|
+
| **Handoff Event** | `TASK_COMPLETED` (terminal step in pipeline) |
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: SKL-0005
|
|
3
|
+
name: Frontend Development
|
|
4
|
+
description: |
|
|
5
|
+
Build web UI components, pages, and styling. Includes a mandatory Visual
|
|
6
|
+
Polish pass that adds scroll animations, micro-interactions, typography
|
|
7
|
+
rhythm, and design depth. Use this skill when a frontend task is ready for
|
|
8
|
+
implementation, including React components, CSS, layouts, and responsive design.
|
|
9
|
+
version: 2.0
|
|
10
|
+
owner: builder
|
|
11
|
+
triggers:
|
|
12
|
+
- FRONTEND_TASK_READY
|
|
13
|
+
inputs:
|
|
14
|
+
- Task description (from STATE.md)
|
|
15
|
+
- .claude/project/knowledge/DECISIONS.md
|
|
16
|
+
- Existing frontend files
|
|
17
|
+
- docs/PRD.md (for brand/tone context)
|
|
18
|
+
outputs:
|
|
19
|
+
- Frontend component/page files
|
|
20
|
+
- .claude/project/STATE.md (updated)
|
|
21
|
+
tags:
|
|
22
|
+
- building
|
|
23
|
+
- frontend
|
|
24
|
+
- ui
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Skill: Frontend Development
|
|
28
|
+
|
|
29
|
+
## Metadata
|
|
30
|
+
|
|
31
|
+
| Field | Value |
|
|
32
|
+
|-------|-------|
|
|
33
|
+
| **Skill ID** | SKL-0005 |
|
|
34
|
+
| **Version** | 2.0 |
|
|
35
|
+
| **Owner** | builder |
|
|
36
|
+
| **Inputs** | Task description, DECISIONS.md, existing frontend files, PRD |
|
|
37
|
+
| **Outputs** | Frontend files, STATE.md updated |
|
|
38
|
+
| **Triggers** | `FRONTEND_TASK_READY` |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Purpose
|
|
43
|
+
|
|
44
|
+
Build user interfaces that work correctly AND look exceptional. Correctness (responsive, accessible, all states handled) is the floor, not the ceiling. Every page and component must pass a Visual Polish check before it's considered done.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Procedure
|
|
49
|
+
|
|
50
|
+
### Step 1 --- Read Context
|
|
51
|
+
|
|
52
|
+
1. **Read DECISIONS.md** --- identify framework (React/Next.js, Vue, Astro, vanilla), styling approach (Tailwind, CSS modules), component library (shadcn/ui, Radix, etc.).
|
|
53
|
+
2. **Read PRD** --- extract brand tone, target audience, and visual expectations.
|
|
54
|
+
3. **Scan existing code** --- identify conventions, color tokens, font choices, animation patterns already in use.
|
|
55
|
+
|
|
56
|
+
### Step 2 --- Understand the Task
|
|
57
|
+
|
|
58
|
+
- What does this UI do? Who uses it? What data does it display or collect?
|
|
59
|
+
- What is the emotional tone? (professional, playful, luxurious, minimal, bold)
|
|
60
|
+
- Is this a hero page (high visual impact) or a utility screen (functional first)?
|
|
61
|
+
|
|
62
|
+
### Step 3 --- Build the Component/Page
|
|
63
|
+
|
|
64
|
+
Core implementation:
|
|
65
|
+
- Match existing file structure and naming conventions
|
|
66
|
+
- Mobile-first responsive design
|
|
67
|
+
- Accessible markup (semantic HTML, ARIA labels, keyboard navigation)
|
|
68
|
+
- No hardcoded data --- use props, state, or labeled placeholders
|
|
69
|
+
- Handle all states: loading, error, empty, populated
|
|
70
|
+
|
|
71
|
+
### Step 4 --- Visual Polish Pass (Mandatory)
|
|
72
|
+
|
|
73
|
+
After the component works correctly, apply these checks. **This step is not optional.**
|
|
74
|
+
|
|
75
|
+
#### 4A. Typography Rhythm
|
|
76
|
+
|
|
77
|
+
| Check | What to Do |
|
|
78
|
+
|-------|-----------|
|
|
79
|
+
| Font pairing | Use a deliberate serif + sans-serif pairing OR a single family with weight contrast. Never rely on system defaults alone. |
|
|
80
|
+
| Size scale | Headings should have clear hierarchy --- at least 3 distinct sizes with noticeable jumps (not 16px -> 18px -> 20px). |
|
|
81
|
+
| Line height | Body text: 1.5-1.7. Headings: 1.1-1.3. Tight headings + relaxed body creates rhythm. |
|
|
82
|
+
| Letter spacing | Uppercase labels need positive tracking (0.05-0.15em). Large headings can use slight negative tracking. |
|
|
83
|
+
| One "wow" text moment | At least one headline, quote, or stat should be oversized, italic, or styled distinctly to break the grid. |
|
|
84
|
+
|
|
85
|
+
#### 4B. Scroll Animations
|
|
86
|
+
|
|
87
|
+
| Check | What to Do |
|
|
88
|
+
|-------|-----------|
|
|
89
|
+
| Section reveals | Content sections should animate in on scroll --- fade-up, slide-in, or scale. Use Framer Motion, AOS, or CSS `@keyframes` with Intersection Observer. |
|
|
90
|
+
| Staggered children | Lists, grids, and card groups should stagger their entrance (50-100ms delay between items). |
|
|
91
|
+
| Parallax (optional) | Hero images or background elements can scroll at a different rate for depth. Use sparingly --- one parallax element max. |
|
|
92
|
+
| Respect `prefers-reduced-motion` | Wrap all animations in a motion-preference check. Users who disable motion see instant renders. |
|
|
93
|
+
|
|
94
|
+
#### 4C. Micro-Interactions
|
|
95
|
+
|
|
96
|
+
| Check | What to Do |
|
|
97
|
+
|-------|-----------|
|
|
98
|
+
| Button hover | Buttons should have a visible hover state beyond color change --- slight scale (1.02-1.05), shadow lift, or fill animation. |
|
|
99
|
+
| Image hover | Gallery/portfolio images should respond to hover --- zoom, overlay fade, or caption reveal. |
|
|
100
|
+
| Focus indicators | Interactive elements need visible focus rings that match the design language (not default browser blue). |
|
|
101
|
+
| Transitions | All state changes (hover, active, focus, open/close) should use `transition-all duration-200` minimum. No instant snaps. |
|
|
102
|
+
| Cursor | Consider `cursor-pointer` on all clickable non-link elements. |
|
|
103
|
+
|
|
104
|
+
#### 4D. Visual Depth
|
|
105
|
+
|
|
106
|
+
| Check | What to Do |
|
|
107
|
+
|-------|-----------|
|
|
108
|
+
| Layering | At least one section should have overlapping elements --- a card that bleeds over a section boundary, text over an image, or a floating accent. |
|
|
109
|
+
| Shadows | Cards and elevated elements need subtle shadows (`shadow-sm` to `shadow-lg`). Avoid flat designs where everything is on the same plane. |
|
|
110
|
+
| Gradients | Use subtle background gradients to separate sections instead of hard color blocks. Gradient overlays on hero images add depth. |
|
|
111
|
+
| Texture (optional) | Subtle noise/grain overlay, dot patterns, or background shapes can add personality. Don't overdo it --- one texture element per page. |
|
|
112
|
+
| Whitespace | Generous padding between sections (py-16 to py-24). Tight spacing looks cheap; breathing room looks premium. |
|
|
113
|
+
|
|
114
|
+
#### 4E. Color & Contrast
|
|
115
|
+
|
|
116
|
+
| Check | What to Do |
|
|
117
|
+
|-------|-----------|
|
|
118
|
+
| Limited palette | 1 primary, 1 accent, 2-3 neutrals. More than 5 colors looks chaotic. |
|
|
119
|
+
| Contrast ratio | Text on backgrounds must meet WCAG 2.1 AA (4.5:1 normal, 3:1 large). |
|
|
120
|
+
| Dark sections | At least one section should use an inverted color scheme (dark background, light text) for visual variety. |
|
|
121
|
+
| Accent usage | The accent color should appear sparingly --- CTAs, highlights, decorative elements. Not on large surfaces. |
|
|
122
|
+
|
|
123
|
+
#### 4F. Component Library
|
|
124
|
+
|
|
125
|
+
When a project uses shadcn/ui, Radix, or a similar component library:
|
|
126
|
+
- **Use it.** Don't rebuild what exists.
|
|
127
|
+
- Customize through the theme/token layer, not by overriding styles.
|
|
128
|
+
- When no library is specified, **suggest shadcn/ui for React/Next.js projects** --- it provides beautiful defaults with Tailwind customization. Log this to DECISIONS.md.
|
|
129
|
+
|
|
130
|
+
### Step 5 --- Final Quality Check
|
|
131
|
+
|
|
132
|
+
Before marking done, verify:
|
|
133
|
+
- Does the page look good at 320px, 768px, and 1440px?
|
|
134
|
+
- Does it look polished in both light and dark modes (if applicable)?
|
|
135
|
+
- Is there at least one visual "moment" that makes someone pause? (a hero animation, a beautiful card grid, an unexpected typographic treatment)
|
|
136
|
+
- Would you screenshot this and put it in a portfolio?
|
|
137
|
+
|
|
138
|
+
### Step 6 --- Update STATE.md
|
|
139
|
+
|
|
140
|
+
Record files created and note the visual approach taken (for consistency across future pages).
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Constraints
|
|
145
|
+
|
|
146
|
+
- Never modifies backend, API, or database files
|
|
147
|
+
- Never hardcodes data that should come from an API or prop
|
|
148
|
+
- Always logs new framework/library decisions to DECISIONS.md
|
|
149
|
+
- Visual Polish (Step 4) is mandatory --- never skip it, even for "simple" pages
|
|
150
|
+
- Respect existing design language --- polish should enhance the current direction, not introduce a conflicting aesthetic
|
|
151
|
+
- Animations must respect `prefers-reduced-motion`
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Deployment Reference
|
|
156
|
+
|
|
157
|
+
| Target | Tool | Notes |
|
|
158
|
+
|--------|------|-------|
|
|
159
|
+
| Static/SPA | Vercel | Zero config for React/Next.js |
|
|
160
|
+
| Static/SPA | Netlify | Drag and drop or Git deploy |
|
|
161
|
+
| Next.js/SSR | Vercel | Native support |
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Primary Agent
|
|
166
|
+
|
|
167
|
+
builder
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Definition of Done
|
|
172
|
+
|
|
173
|
+
- [ ] Framework and styling confirmed from DECISIONS.md
|
|
174
|
+
- [ ] Component handles loading, error, empty, populated states
|
|
175
|
+
- [ ] Mobile-first responsive layout (tested at 320px, 768px, 1440px)
|
|
176
|
+
- [ ] Accessible markup (semantic HTML, ARIA, keyboard nav, focus indicators)
|
|
177
|
+
- [ ] Matches existing project conventions
|
|
178
|
+
- [ ] **Typography rhythm applied** (hierarchy, pairing, one "wow" moment)
|
|
179
|
+
- [ ] **Scroll animations added** (section reveals, staggered children, reduced-motion respected)
|
|
180
|
+
- [ ] **Micro-interactions present** (button hover, image hover, transitions on all state changes)
|
|
181
|
+
- [ ] **Visual depth achieved** (shadows, layering, gradients, generous whitespace)
|
|
182
|
+
- [ ] **Color palette limited and contrast-checked**
|
|
183
|
+
- [ ] At least one visual moment that would make someone pause
|
|
184
|
+
- [ ] STATE.md updated
|
|
185
|
+
|
|
186
|
+
## Output Contract
|
|
187
|
+
|
|
188
|
+
| Field | Value |
|
|
189
|
+
|-------|-------|
|
|
190
|
+
| **Artifacts** | Frontend component/page files (components, pages, styles, assets) |
|
|
191
|
+
| **State Update** | `.claude/project/STATE.md` --- mark task complete, log files modified |
|
|
192
|
+
| **Handoff Event** | `TASK_COMPLETED` (ready for code review) |
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: SKL-0001
|
|
3
|
+
name: Plan From Idea
|
|
4
|
+
description: |
|
|
5
|
+
Transform a captured project idea into an actionable plan with PRD and task
|
|
6
|
+
breakdown. Use this skill when a new idea has been captured and needs to be
|
|
7
|
+
developed into a structured project plan.
|
|
8
|
+
version: 1.0
|
|
9
|
+
owner: Orchestrator
|
|
10
|
+
triggers:
|
|
11
|
+
- IDEA_CAPTURED
|
|
12
|
+
inputs:
|
|
13
|
+
- Idea description (from event or user input)
|
|
14
|
+
outputs:
|
|
15
|
+
- docs/PRD.md
|
|
16
|
+
- .claude/project/STATE.md (Next Task Queue updated)
|
|
17
|
+
tags:
|
|
18
|
+
- planning
|
|
19
|
+
- ideation
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Skill: Plan From Idea
|
|
23
|
+
|
|
24
|
+
## Metadata
|
|
25
|
+
|
|
26
|
+
| Field | Value |
|
|
27
|
+
|-------|-------|
|
|
28
|
+
| **Skill ID** | SKL-0001 |
|
|
29
|
+
| **Version** | 1.0 |
|
|
30
|
+
| **Owner** | Orchestrator |
|
|
31
|
+
| **Inputs** | Idea description (from event or user input) |
|
|
32
|
+
| **Outputs** | PRD stub (`docs/PRD.md` or equivalent), initial task queue items |
|
|
33
|
+
| **Triggers** | `IDEA_CAPTURED` |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Purpose
|
|
38
|
+
|
|
39
|
+
Turn a rough idea into a structured plan. This skill takes a freeform idea description and produces:
|
|
40
|
+
1. A short PRD (Product Requirements Document) stub.
|
|
41
|
+
2. An initial set of tasks added to the Next Task Queue in STATE.md.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Procedure
|
|
46
|
+
|
|
47
|
+
1. **Read the idea** from the event description or user input.
|
|
48
|
+
2. **Create a PRD stub** at `docs/PRD.md` (or the project's preferred location) with:
|
|
49
|
+
- Project name
|
|
50
|
+
- One-sentence summary
|
|
51
|
+
- Target audience
|
|
52
|
+
- Core features (3-5 bullet points)
|
|
53
|
+
- Out of scope (2-3 items)
|
|
54
|
+
- Success criteria
|
|
55
|
+
3. **Generate 3-5 initial tasks** based on the PRD and add them to the Next Task Queue in `STATE.md`. Use the canonical task format from `.claude/project/knowledge/TASK-FORMAT.md`: `| # | Task | Priority | Skill |`. Assign Skill IDs by cross-referencing `REGISTRY.md` (use `---` if no skill clearly applies).
|
|
56
|
+
4. **Log a decision** in `DECISIONS.md` noting the project direction chosen.
|
|
57
|
+
5. **Update STATE.md** with outputs produced and files modified.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Primary Agent
|
|
62
|
+
|
|
63
|
+
Orchestrator
|
|
64
|
+
|
|
65
|
+
## Review
|
|
66
|
+
|
|
67
|
+
None required for v1. The user reviews the PRD and task queue after execution.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Definition of Done
|
|
72
|
+
|
|
73
|
+
- [ ] PRD stub exists at `docs/PRD.md` (or equivalent project brief)
|
|
74
|
+
- [ ] At least 3 tasks are added to the Next Task Queue
|
|
75
|
+
- [ ] STATE.md is updated with outputs and files modified
|
|
76
|
+
- [ ] Decision logged in DECISIONS.md
|
|
77
|
+
|
|
78
|
+
## Output Contract
|
|
79
|
+
|
|
80
|
+
| Field | Value |
|
|
81
|
+
|-------|-------|
|
|
82
|
+
| **Artifacts** | Actionable plan in `.claude/project/STATE.md` (Next Task Queue seeded), PRD stub at `docs/PRD.md`, event emitted |
|
|
83
|
+
| **State Update** | `.claude/project/STATE.md` --- mark task complete, log files modified |
|
|
84
|
+
| **Decision Log** | `.claude/project/knowledge/DECISIONS.md` --- project direction chosen |
|
|
85
|
+
| **Handoff Event** | `PRD_CREATION_REQUESTED` (triggers PRD writing via SKL-0004) |
|