create-agent-skills 1.1.1 → 1.1.4

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/README.md CHANGED
@@ -45,6 +45,7 @@ npx create-agent-skills
45
45
  | `git-pr` | Creates well-structured pull requests |
46
46
  | `git-review` | Reviews PRs for code quality and best practices |
47
47
  | `maestro-testing` | Write E2E tests for mobile/web apps using Maestro |
48
+ | `rust-backend` | Build backend services with Rust and Clean Architecture |
48
49
  | `tailwindcss-v4` | Tailwind CSS v4 setup and migration guide |
49
50
  | `tauri-v2` | Build desktop apps with Tauri v2 + React |
50
51
  | `testing` | Helps write unit, integration, and E2E tests |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-agent-skills",
3
- "version": "1.1.1",
3
+ "version": "1.1.4",
4
4
  "description": "CLI tool to install Agent Skills for AI coding assistants",
5
5
  "main": "lib/index.js",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: git-commit
3
- description: Guide for writing effective Git commit messages following Conventional Commits specification. Use when committing code changes, writing commit messages, or ensuring consistent commit history.
3
+ description: Guide for Git commit messages and pushing code. Use when user says "commit", "push code", "push to git", "save changes to git", "git add and commit", "commit and push", or needs help writing commit messages following Conventional Commits.
4
4
  ---
5
5
 
6
6
  # Git Commit Messages
@@ -9,12 +9,17 @@ This skill provides guidance for writing clear, consistent commit messages follo
9
9
 
10
10
  ## When to Use This Skill
11
11
 
12
+ Use this skill when user requests any of these (in any language):
13
+ - "commit", "push code", "push to git", "commit và push"
14
+ - "save changes to git", "lưu code lên git"
15
+ - "git add and commit", "commit changes"
12
16
  - Writing commit messages for any code changes
13
17
  - Ensuring commit history is clean and readable
14
18
  - Following team/project commit conventions
15
19
  - Generating changelogs automatically
16
20
  - **Ensuring documentation is up-to-date with code changes**
17
21
 
22
+
18
23
  ## Pre-commit Checklist
19
24
 
20
25
  Before committing, ask yourself:
@@ -31,13 +36,16 @@ Before committing, ask yourself:
31
36
  ## Commit Message Format
32
37
 
33
38
  ```
34
- <type>(<scope>): <subject>
39
+ (emoji)<type>(<scope>): <subject>
35
40
 
36
41
  [optional body]
37
42
 
38
43
  [optional footer(s)]
39
44
  ```
40
45
 
46
+ > [!NOTE]
47
+ > **Emoji is required** for all commit messages. See the emoji mapping below.
48
+
41
49
  ### Components
42
50
 
43
51
  | Part | Required | Description |
@@ -63,23 +71,64 @@ Before committing, ask yourself:
63
71
  | `ci` | 👷 CI configuration | `ci: add GitHub Actions` |
64
72
  | `chore` | ♻️ Other maintenance | `chore: update .gitignore` |
65
73
 
74
+ ## Emoji Prefix Format (Required)
75
+
76
+ All commit messages **must** be prefixed with emojis for better visual scanning and commit categorization:
77
+
78
+ ```
79
+ (emoji)<type>(<scope>): <subject>
80
+ ```
81
+
82
+ ### Format Examples
83
+
84
+ ```bash
85
+ 🐛 fix(api): handle null response
86
+ ✨ feat(auth): add OAuth login
87
+ 📚 docs: update installation guide
88
+ 🔧 refactor(utils): simplify validation logic
89
+ 🚀 perf(query): optimize database queries
90
+ ```
91
+
92
+ ### Type to Emoji Mapping
93
+
94
+ | Type | Emoji | Unicode |
95
+ |------|-------|---------|
96
+ | `feat` | ✨ | `:sparkles:` |
97
+ | `fix` | 🐛 | `:bug:` |
98
+ | `docs` | 📚 | `:books:` |
99
+ | `style` | 🎨 | `:art:` |
100
+ | `refactor` | 🔧 | `:wrench:` |
101
+ | `perf` | 🚀 | `:rocket:` |
102
+ | `test` | 🧪 | `:test_tube:` |
103
+ | `build` | 📦 | `:package:` |
104
+ | `ci` | 👷 | `:construction_worker:` |
105
+ | `chore` | ♻️ | `:recycle:` |
106
+ | `revert` | ⏪ | `:rewind:` |
107
+ | `hotfix` | 🚑 | `:ambulance:` |
108
+ | `security` | 🔒 | `:lock:` |
109
+ | `wip` | 🚧 | `:construction:` |
110
+
111
+ > [!IMPORTANT]
112
+ > Using emojis is **required** for all commit messages. This ensures consistent commit history and makes it easier to scan and categorize changes in the git log.
113
+
66
114
  ## Subject Line Rules
67
115
 
68
- 1. **Use imperative mood**: "add" not "added" or "adds"
69
- 2. **No capitalization**: start lowercase
70
- 3. **No period at the end**
71
- 4. **Max 50 characters** (hard limit: 72)
72
- 5. **Be specific**: what changed, not why
116
+ 1. **Must start with emoji**: See required emoji mapping below
117
+ 2. **Use imperative mood**: "add" not "added" or "adds"
118
+ 3. **No capitalization**: start lowercase
119
+ 4. **No period at the end**
120
+ 5. **Max 50 characters** (hard limit: 72)
121
+ 6. **Be specific**: what changed, not why
73
122
 
74
123
  ```diff
75
124
  - feat: Updated the login page
76
- + feat(auth): add password reset form
125
+ + feat(auth): add password reset form
77
126
 
78
127
  - fix: bug fix
79
- + fix(cart): prevent duplicate items
128
+ + 🐛 fix(cart): prevent duplicate items
80
129
 
81
- - added new feature
82
- + feat(dashboard): add real-time notifications
130
+ - added new feature
131
+ + feat(dashboard): add real-time notifications
83
132
  ```
84
133
 
85
134
  ## Body Guidelines
@@ -90,7 +139,7 @@ Before committing, ask yourself:
90
139
  - Use bullet points for multiple changes
91
140
 
92
141
  ```
93
- feat(auth): add two-factor authentication
142
+ feat(auth): add two-factor authentication
94
143
 
95
144
  - Add TOTP-based 2FA using authenticator apps
96
145
  - Store encrypted backup codes in database
@@ -105,7 +154,7 @@ who require MFA compliance.
105
154
  ### Breaking Changes
106
155
 
107
156
  ```
108
- feat(api): change response format
157
+ feat(api)!: change response format
109
158
 
110
159
  BREAKING CHANGE: API now returns data in envelope format.
111
160
  Clients must update to extract data from `response.data`.
@@ -114,7 +163,7 @@ Clients must update to extract data from `response.data`.
114
163
  ### Issue References
115
164
 
116
165
  ```
117
- fix(login): handle expired tokens
166
+ 🐛 fix(login): handle expired tokens
118
167
 
119
168
  Closes #123
120
169
  Fixes #456
@@ -142,19 +191,19 @@ What type of change?
142
191
  ### Feature
143
192
 
144
193
  ```bash
145
- git commit -m "feat(checkout): add Apple Pay support"
194
+ git commit -m "feat(checkout): add Apple Pay support"
146
195
  ```
147
196
 
148
197
  ### Bug Fix
149
198
 
150
199
  ```bash
151
- git commit -m "fix(auth): prevent session timeout on active users"
200
+ git commit -m "🐛 fix(auth): prevent session timeout on active users"
152
201
  ```
153
202
 
154
203
  ### With Body
155
204
 
156
205
  ```bash
157
- git commit -m "refactor(api): migrate to async/await
206
+ git commit -m "🔧 refactor(api): migrate to async/await
158
207
 
159
208
  Replace callback-based API calls with async/await pattern.
160
209
  This improves readability and error handling.
@@ -165,7 +214,7 @@ Refs #234"
165
214
  ### Breaking Change
166
215
 
167
216
  ```bash
168
- git commit -m "feat(api)!: change authentication to JWT
217
+ git commit -m "feat(api)!: change authentication to JWT
169
218
 
170
219
  BREAKING CHANGE: Session-based auth is no longer supported.
171
220
  All clients must use Bearer tokens."
@@ -0,0 +1,252 @@
1
+ ---
2
+ name: landing-page-slider
3
+ description: Creates landing pages with integrated slider/slideshow for knowledge sharing presentations. Use ONLY when user explicitly requests BOTH landing page AND slider/slideshow functionality together. NOT for regular landing pages or standalone sliders.
4
+ ---
5
+
6
+ # Landing Page Slider
7
+
8
+ Build beautiful landing pages that transform into fullscreen presentations with keyboard navigation, glassmorphism effects, and professional animations.
9
+
10
+ ## When to Use This Skill
11
+
12
+ > [!IMPORTANT]
13
+ > This skill is for projects that need **BOTH** landing page **AND** slider/slideshow functionality combined.
14
+
15
+ - User explicitly asks for "landing page with slider" or "presentation landing page"
16
+ - Building knowledge sharing pages with slideshow mode
17
+ - Creating marketing sites that can toggle into presentation mode
18
+ - NOT for: Regular landing pages, standalone carousel/sliders, simple slideshows
19
+
20
+ ## Tech Stack
21
+
22
+ | Technology | Version | Purpose |
23
+ |------------|---------|---------|
24
+ | Vite | 5+ | Build tool |
25
+ | React | 18+ | UI framework |
26
+ | Tailwind CSS | v4 | Styling (CSS-first) |
27
+ | Lucide React | Latest | Professional icons |
28
+ | Framer Motion | Latest | Animations |
29
+
30
+ ## Quick Start
31
+
32
+ ### Step 1: Create Project
33
+
34
+ ```bash
35
+ npm create vite@latest my-landing -- --template react-ts
36
+ cd my-landing
37
+ npm install
38
+ ```
39
+
40
+ ### Step 2: Install Dependencies
41
+
42
+ ```bash
43
+ npm install tailwindcss @tailwindcss/vite lucide-react framer-motion
44
+ ```
45
+
46
+ ### Step 3: Configure Vite
47
+
48
+ ```js
49
+ // vite.config.ts
50
+ import { defineConfig } from 'vite'
51
+ import react from '@vitejs/plugin-react'
52
+ import tailwindcss from '@tailwindcss/vite'
53
+
54
+ export default defineConfig({
55
+ plugins: [react(), tailwindcss()],
56
+ })
57
+ ```
58
+
59
+ ### Step 4: Setup Tailwind CSS v4
60
+
61
+ ```css
62
+ /* src/index.css */
63
+ @import "tailwindcss";
64
+
65
+ @theme {
66
+ /* Primary gradient colors using oklch for P3 display */
67
+ --color-primary: oklch(0.65 0.18 250);
68
+ --color-secondary: oklch(0.55 0.15 280);
69
+ --color-accent: oklch(0.75 0.2 160);
70
+
71
+ /* Glassmorphism colors */
72
+ --color-glass-bg: oklch(0.15 0.02 260 / 0.6);
73
+ --color-glass-border: oklch(1 0 0 / 0.1);
74
+
75
+ /* Animations */
76
+ --animate-slide-in: slide-in 0.5s ease-out;
77
+ --animate-fade-up: fade-up 0.6s ease-out;
78
+ --animate-glow: glow 2s ease-in-out infinite;
79
+ }
80
+
81
+ @keyframes slide-in {
82
+ from { transform: translateX(100%); opacity: 0; }
83
+ to { transform: translateX(0); opacity: 1; }
84
+ }
85
+
86
+ @keyframes fade-up {
87
+ from { transform: translateY(20px); opacity: 0; }
88
+ to { transform: translateY(0); opacity: 1; }
89
+ }
90
+
91
+ @keyframes glow {
92
+ 0%, 100% { box-shadow: 0 0 20px oklch(0.65 0.18 250 / 0.3); }
93
+ 50% { box-shadow: 0 0 40px oklch(0.65 0.18 250 / 0.6); }
94
+ }
95
+ ```
96
+
97
+ ## Core Components
98
+
99
+ ### 1. Slider Container
100
+
101
+ The main component that manages presentation mode and slide navigation.
102
+
103
+ Key features:
104
+ - Toggle between landing page and presentation mode
105
+ - Track current slide index
106
+ - Handle animations between slides
107
+ - Fullscreen support
108
+
109
+ ### 2. Slide Component
110
+
111
+ Individual content sections that become fullscreen slides.
112
+
113
+ Key features:
114
+ - Content areas (title, description, visuals)
115
+ - Entry/exit animations
116
+ - Glassmorphism card styling
117
+
118
+ ### 3. Keyboard Navigation Hook
119
+
120
+ Custom hook for keyboard shortcuts.
121
+
122
+ | Key | Action |
123
+ |-----|--------|
124
+ | `←` / `→` | Navigate slides |
125
+ | `Space` | Next slide |
126
+ | `Escape` | Exit presentation |
127
+ | `F` | Toggle fullscreen |
128
+ | `P` | Toggle presentation mode |
129
+
130
+ ## Glassmorphism Patterns
131
+
132
+ ### Card with Blur
133
+
134
+ ```jsx
135
+ <div className="
136
+ bg-glass-bg
137
+ backdrop-blur-xl
138
+ border border-glass-border
139
+ rounded-2xl
140
+ shadow-2xl
141
+ ">
142
+ {/* content */}
143
+ </div>
144
+ ```
145
+
146
+ ### Gradient Orbs (Background)
147
+
148
+ ```jsx
149
+ <div className="absolute inset-0 overflow-hidden -z-10">
150
+ <div className="
151
+ absolute -top-40 -right-40 w-80 h-80
152
+ bg-primary/30 rounded-full blur-3xl
153
+ " />
154
+ <div className="
155
+ absolute -bottom-40 -left-40 w-80 h-80
156
+ bg-secondary/30 rounded-full blur-3xl
157
+ " />
158
+ </div>
159
+ ```
160
+
161
+ ## Animation Patterns
162
+
163
+ ### Staggered Children (Framer Motion)
164
+
165
+ ```jsx
166
+ const container = {
167
+ hidden: { opacity: 0 },
168
+ show: {
169
+ opacity: 1,
170
+ transition: { staggerChildren: 0.1 }
171
+ }
172
+ }
173
+
174
+ const item = {
175
+ hidden: { y: 20, opacity: 0 },
176
+ show: { y: 0, opacity: 1 }
177
+ }
178
+
179
+ <motion.div variants={container} initial="hidden" animate="show">
180
+ {items.map(i => <motion.div key={i} variants={item} />)}
181
+ </motion.div>
182
+ ```
183
+
184
+ ### Slide Transitions
185
+
186
+ ```jsx
187
+ <AnimatePresence mode="wait">
188
+ <motion.div
189
+ key={currentSlide}
190
+ initial={{ x: 100, opacity: 0 }}
191
+ animate={{ x: 0, opacity: 1 }}
192
+ exit={{ x: -100, opacity: 0 }}
193
+ transition={{ duration: 0.3, ease: "easeOut" }}
194
+ >
195
+ {slides[currentSlide]}
196
+ </motion.div>
197
+ </AnimatePresence>
198
+ ```
199
+
200
+ ## Best Practices
201
+
202
+ ### Visual Excellence
203
+
204
+ 1. **Color Harmony** - Use oklch colors for consistent, vibrant gradients
205
+ 2. **Depth Layers** - Combine blur + transparency + subtle borders
206
+ 3. **Motion Purpose** - Animate to guide attention, not distract
207
+ 4. **Dark Mode First** - Glassmorphism shines on dark backgrounds
208
+
209
+ ### Performance
210
+
211
+ 1. **Lazy Load** - Load slide content on demand
212
+ 2. **will-change** - Add for animated elements
213
+ 3. **Reduce Motion** - Respect `prefers-reduced-motion`
214
+
215
+ ### Accessibility
216
+
217
+ 1. **Focus Visible** - Clear focus indicators in presentation mode
218
+ 2. **Keyboard Nav** - Full keyboard support (already built-in)
219
+ 3. **ARIA Labels** - Label navigation controls
220
+
221
+ ## Decision Tree
222
+
223
+ ```
224
+ What do you need?
225
+ ├── New landing page project
226
+ │ └── Follow Quick Start (Steps 1-4)
227
+ ├── Add slider to existing React app
228
+ │ └── Copy Slider component + hook
229
+ ├── Customize visual style
230
+ │ └── Modify @theme block in CSS
231
+ └── Change keyboard shortcuts
232
+ └── Edit useKeyboard hook
233
+ ```
234
+
235
+ ## Examples & Resources
236
+
237
+ ### Examples
238
+ - [Project Structure](./examples/project-structure.md) - Complete folder layout
239
+ - [Slider Component](./examples/slider-component.md) - Main slider logic
240
+ - [Slide Component](./examples/slide-component.md) - Individual slide + content components
241
+ - [Keyboard Hook](./examples/use-keyboard.md) - Keyboard navigation
242
+ - [Theme CSS](./examples/theme.md) - Tailwind v4 theme setup
243
+ - [Landing Page](./examples/landing-page.md) - Full page example
244
+
245
+ ## Common Mistakes
246
+
247
+ | Mistake | Solution |
248
+ |---------|----------|
249
+ | Blur not working | Ensure parent has `position: relative` or `overflow: hidden` |
250
+ | Animations janky | Add `will-change: transform` to animated elements |
251
+ | Colors look washed | Use oklch for wider gamut support |
252
+ | Keyboard not working | Check if focus is on the container element |
@@ -0,0 +1,51 @@
1
+ ```tsx
2
+ import { Slider } from './components/Slider'
3
+ import { Slide } from './components/Slider'
4
+ import { BulletList } from './components/Slider'
5
+ import { Sparkles } from 'lucide-react'
6
+
7
+ function App() {
8
+ return (
9
+ <div className="min-h-screen bg-bg-base text-text-primary">
10
+ <main>
11
+ <Slider className="min-h-screen">
12
+ {/* Slide 1 */}
13
+ <Slide
14
+ icon={Sparkles}
15
+ subtitle="Session"
16
+ title="Your Title Here"
17
+ description="Your description here."
18
+ />
19
+
20
+ {/* Slide 2 with content */}
21
+ <Slide
22
+ title="Key Points"
23
+ subtitle="Topic"
24
+ >
25
+ <BulletList items={[
26
+ { title: 'Point 1', description: 'Description 1' },
27
+ { title: 'Point 2', description: 'Description 2' },
28
+ { title: 'Point 3', description: 'Description 3' },
29
+ ]} />
30
+ </Slide>
31
+
32
+ {/* Slide 3 with split layout */}
33
+ <Slide
34
+ layout="split"
35
+ title="Split Layout"
36
+ description="Content on left, image on right"
37
+ image="/path/to/image.png"
38
+ >
39
+ <BulletList items={[
40
+ { title: 'Feature 1' },
41
+ { title: 'Feature 2' },
42
+ ]} />
43
+ </Slide>
44
+ </Slider>
45
+ </main>
46
+ </div>
47
+ )
48
+ }
49
+
50
+ export default App
51
+ ```
@@ -0,0 +1,23 @@
1
+ ```
2
+ src/
3
+ ├── components/
4
+ │ ├── Slider/
5
+ │ │ ├── index.ts # Re-exports
6
+ │ │ ├── Slider.tsx # Main slider container
7
+ │ │ ├── Slide.tsx # Individual slide component
8
+ │ │ └── SlideContent.tsx # Content components
9
+ │ └── ui/
10
+ │ └── index.ts
11
+ ├── hooks/
12
+ │ ├── index.ts
13
+ │ ├── useKeyboard.ts
14
+ │ ├── useFullscreen.ts
15
+ │ └── useSlideProgress.ts
16
+ ├── slides/
17
+ │ ├── index.ts
18
+ │ └── *.tsx # Slide files
19
+ ├── App.tsx
20
+ ├── main.tsx
21
+ ├── index.css # Tailwind v4 theme
22
+ └── vite-env.d.ts
23
+ ```