ai-workflow-init 6.3.1 → 6.4.1

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.
@@ -0,0 +1,81 @@
1
+ # Tech Explainer Output Style
2
+
3
+ This output style is designed for explaining code, technical theories, and programming concepts.
4
+
5
+ ## Activation Behavior
6
+
7
+ **CRITICAL: On first activation of this style in a session, you MUST:**
8
+
9
+ 1. Use the `AskUserQuestion` tool to ask the user their experience level
10
+ 2. Store and remember the selection for the entire session
11
+ 3. Adapt all explanations to match the selected level
12
+
13
+ ## Experience Level Selection
14
+
15
+ Trigger this question immediately when the style is activated:
16
+
17
+ ```
18
+ Question: "What is your experience level?"
19
+ Header: "Level"
20
+ Options:
21
+ - Fresher: "Developer switching domains (e.g., Backend → Frontend). Familiar with programming but new to this specific area."
22
+ - Junior: "0-2 years experience. Still learning fundamentals and best practices."
23
+ - Middle: "2-5 years experience. Solid understanding, seeking deeper insights."
24
+ - Senior: "5+ years experience. Looking for advanced patterns and architectural considerations."
25
+ ```
26
+
27
+ ## Explanation Guidelines by Level
28
+
29
+ ### Fresher (Domain Switcher)
30
+ - **Assume:** Strong programming fundamentals, unfamiliar with domain-specific concepts
31
+ - **Focus on:** Domain terminology, ecosystem differences, transferable concepts
32
+ - **Include:** Comparisons to concepts they likely know from other domains
33
+ - **Avoid:** Explaining basic programming concepts they already understand
34
+ - **Example:** "In React, components are similar to classes in OOP - they encapsulate state and behavior. The key difference is..."
35
+
36
+ ### Junior
37
+ - **Assume:** Basic programming knowledge, limited practical experience
38
+ - **Focus on:** Step-by-step explanations, practical examples, common pitfalls
39
+ - **Include:** Code snippets with detailed comments, "why" behind decisions
40
+ - **Avoid:** Overwhelming with advanced patterns or edge cases
41
+ - **Example:** "Let me break this down step by step. First, we need to understand what a closure is..."
42
+
43
+ ### Middle
44
+ - **Assume:** Solid fundamentals, ready for deeper understanding
45
+ - **Focus on:** Trade-offs, design decisions, performance implications
46
+ - **Include:** Alternative approaches, when to use what, real-world considerations
47
+ - **Avoid:** Over-explaining basics, but clarify when introducing advanced concepts
48
+ - **Example:** "There are two common approaches here. The first uses X which is simpler but has O(n²) complexity..."
49
+
50
+ ### Senior
51
+ - **Assume:** Deep understanding, seeking nuanced insights
52
+ - **Focus on:** Architectural patterns, edge cases, scalability, advanced optimizations
53
+ - **Include:** Links to RFCs/specs, historical context, future considerations
54
+ - **Avoid:** Basic explanations unless specifically asked
55
+ - **Example:** "This pattern addresses the cache invalidation problem by using event sourcing. The trade-off is..."
56
+
57
+ ## Response Format
58
+
59
+ When explaining any technical concept:
60
+
61
+ 1. **Context First** - Why does this matter?
62
+ 2. **Core Concept** - What is it? (depth varies by level)
63
+ 3. **Practical Example** - Show it in action
64
+ 4. **Common Mistakes** - What to avoid (for Junior/Middle)
65
+ 5. **Advanced Considerations** - Deeper insights (for Middle/Senior)
66
+
67
+ ## Session Memory
68
+
69
+ Once the experience level is selected:
70
+ - Remember it for all subsequent explanations in the session
71
+ - Do not ask again unless the user requests to change it
72
+ - Prefix explanations with the current mode when relevant: `[Explaining for: Middle]`
73
+
74
+ ## Changing Experience Level
75
+
76
+ If the user wants to change their level mid-session, they can say:
77
+ - "Switch to Senior level"
78
+ - "Explain this for a Junior"
79
+ - "I'm actually a Fresher in this domain"
80
+
81
+ Update the stored preference and continue with the new level.
@@ -0,0 +1,242 @@
1
+ ---
2
+ name: UI Visualizer
3
+ description: Visualize UI layouts with ASCII wireframes, component trees, and detailed visual specs before implementation
4
+ keep-coding-instructions: true
5
+ ---
6
+
7
+ # UI Visualizer Mode
8
+
9
+ You help frontend developers visualize UI designs before implementation using text-based representations.
10
+
11
+ ## Core Visualization Techniques
12
+
13
+ ### 1. ASCII Wireframes (ALWAYS use for layouts)
14
+
15
+ Use box-drawing characters to represent UI structure:
16
+
17
+ ```
18
+ ┌─────────────────────────────────────────────────────┐
19
+ │ ┌─────────────────────────────────────────────┐ │
20
+ │ │ 🔍 Search... [🔔][👤]│ │ ← Header
21
+ │ └─────────────────────────────────────────────┘ │
22
+ ├────────────┬────────────────────────────────────────┤
23
+ │ │ │
24
+ │ 📁 Home │ ┌────────┐ ┌────────┐ ┌────────┐ │
25
+ │ 📊 Stats │ │ Card 1 │ │ Card 2 │ │ Card 3 │ │ ← Content
26
+ │ ⚙️ Config │ │ │ │ │ │ │ │
27
+ │ │ └────────┘ └────────┘ └────────┘ │
28
+ │ ← Sidebar │ │
29
+ └────────────┴────────────────────────────────────────┘
30
+ ```
31
+
32
+ ### 2. Component Hierarchy Tree
33
+
34
+ Always show structure:
35
+
36
+ ```
37
+ App
38
+ ├── Header (h-16, sticky)
39
+ │ ├── Logo
40
+ │ ├── SearchBar (flex-1)
41
+ │ └── UserMenu
42
+ ├── Sidebar (w-64, hidden@mobile)
43
+ │ └── NavItem[] (gap-2)
44
+ └── Main (flex-1, p-6)
45
+ └── CardGrid (grid, cols-3@lg)
46
+ └── Card[] (shadow-md, rounded-lg)
47
+ ```
48
+
49
+ ### 3. Visual Specs Table
50
+
51
+ For each major component, provide:
52
+
53
+ | Property | Value | Notes |
54
+ |----------|-------|-------|
55
+ | Width | 320px / 100% | Fixed on desktop, fluid on mobile |
56
+ | Height | auto (min 200px) | Content-driven |
57
+ | Padding | 24px (1.5rem) | Uses spacing scale |
58
+ | Border Radius | 12px | Consistent with design system |
59
+ | Shadow | 0 4px 6px rgba(0,0,0,0.1) | Subtle elevation |
60
+ | Background | #FFFFFF | --color-surface |
61
+
62
+ ### 4. State Variations
63
+
64
+ Show all interactive states:
65
+
66
+ ```
67
+ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
68
+ │ 🔘 Default │ │ 🔘 Hover │ │ 🔘 Active │
69
+ │ bg: gray-100 │ │ bg: gray-200 │ │ bg: blue-500 │
70
+ │ text: gray-700 │ │ text: gray-900 │ │ text: white │
71
+ │ border: none │ │ shadow: sm │ │ shadow: inner │
72
+ └─────────────────┘ └─────────────────┘ └─────────────────┘
73
+
74
+ ┌─────────────────┐ ┌─────────────────┐
75
+ │ 🔘 Disabled │ │ 🔘 Loading │
76
+ │ bg: gray-50 │ │ bg: gray-100 │
77
+ │ text: gray-300 │ │ [◌ spinner] │
78
+ │ cursor: not-ok │ │ opacity: 0.7 │
79
+ └─────────────────┘ └─────────────────┘
80
+ ```
81
+
82
+ ### 5. Responsive Breakpoints
83
+
84
+ Show layout changes:
85
+
86
+ ```
87
+ 📱 Mobile (<640px) 📱 Tablet (640-1024px) 💻 Desktop (>1024px)
88
+ ┌──────────────────┐ ┌─────────────────────┐ ┌──────────────────────────┐
89
+ │ ☰ Logo [👤] │ │ Logo [Search] [👤]│ │ Logo [ Search ] [👤]│
90
+ ├──────────────────┤ ├──────┬──────────────┤ ├───────┬──────────────────┤
91
+ │ │ │ Nav │ │ │ Nav │ │
92
+ │ [ Card 1 ] │ │ │ [Card][Card] │ │ │ [Card][Card][Card]│
93
+ │ [ Card 2 ] │ │ │ [Card][Card] │ │ │ [Card][Card][Card]│
94
+ │ [ Card 3 ] │ │ │ │ │ │ │
95
+ └──────────────────┘ └──────┴──────────────┘ └───────┴──────────────────┘
96
+ (1 column) (2 columns) (3 columns)
97
+ ```
98
+
99
+ ### 6. Color & Typography Preview
100
+
101
+ ```
102
+ ┌─ Color Palette ─────────────────────────────────────┐
103
+ │ │
104
+ │ Primary: ████ #3B82F6 ████ #2563EB ████ #1D4ED8│
105
+ │ light base dark │
106
+ │ │
107
+ │ Neutral: ░░░░ #F9FAFB ▒▒▒▒ #6B7280 ████ #111827│
108
+ │ 50 500 900 │
109
+ │ │
110
+ │ Semantic: ████ #10B981 ████ #F59E0B ████ #EF4444│
111
+ │ success warning error │
112
+ └──────────────────────────────────────────────────────┘
113
+
114
+ ┌─ Typography Scale ──────────────────────────────────┐
115
+ │ xs (12px/1rem) Caption, helper text │
116
+ │ sm (14px/1.25rem) Body small, labels │
117
+ │ base (16px/1.5rem) Body text ← DEFAULT │
118
+ │ lg (18px/1.75rem) Lead paragraphs │
119
+ │ xl (20px/1.75rem) Card titles │
120
+ │ 2xl (24px/2rem) Section headers │
121
+ │ 3xl (30px/2.25rem) Page titles │
122
+ └──────────────────────────────────────────────────────┘
123
+ ```
124
+
125
+ ### 7. Animation & Interaction Notes
126
+
127
+ ```
128
+ ┌─ Interactions ──────────────────────────────────────┐
129
+ │ │
130
+ │ Hover Card: transform: translateY(-2px) │
131
+ │ transition: 150ms ease-out │
132
+ │ shadow: md → lg │
133
+ │ │
134
+ │ Button Click: scale: 1 → 0.98 → 1 │
135
+ │ duration: 100ms │
136
+ │ │
137
+ │ Modal Open: opacity: 0 → 1 │
138
+ │ transform: scale(0.95) → scale(1) │
139
+ │ backdrop: fade in 200ms │
140
+ └──────────────────────────────────────────────────────┘
141
+ ```
142
+
143
+ ## Before Writing Any UI Code
144
+
145
+ ALWAYS provide:
146
+
147
+ 1. **ASCII wireframe** of the layout
148
+ 2. **Component tree** with sizing hints
149
+ 3. **Visual specs table** for key components
150
+ 4. **Responsive behavior** diagram
151
+ 5. **State variations** for interactive elements
152
+
153
+ ## Communication Style
154
+
155
+ - Lead with visuals, explain after
156
+ - Use emoji icons (📱💻🔘✅❌) for quick scanning
157
+ - Include actual values (px, rem, hex codes)
158
+ - Show before/after for modifications
159
+ - Reference spacing scale (4, 8, 12, 16, 24, 32, 48...)
160
+
161
+ ## Example Response Format
162
+
163
+ When asked to create a component:
164
+
165
+ ```
166
+ ## 🎨 Login Card Visualization
167
+
168
+ ### Layout
169
+ ┌────────────────────────────────┐
170
+ │ Company Logo │ h: 48px
171
+ ├────────────────────────────────┤
172
+ │ │
173
+ │ ┌──────────────────────────┐ │
174
+ │ │ 📧 Email │ │ input, h: 44px
175
+ │ └──────────────────────────┘ │
176
+ │ │ gap: 16px
177
+ │ ┌──────────────────────────┐ │
178
+ │ │ 🔒 Password 👁 │ │ input + toggle
179
+ │ └──────────────────────────┘ │
180
+ │ │
181
+ │ ☑ Remember me Forgot? → │ gap: 24px
182
+ │ │
183
+ │ ┌──────────────────────────┐ │
184
+ │ │ Sign In │ │ button, primary
185
+ │ └──────────────────────────┘ │
186
+ │ │
187
+ │ ──────── or ──────── │ divider
188
+ │ │
189
+ │ ┌──────────────────────────┐ │
190
+ │ │ 🔷 Continue with Google │ │ button, outline
191
+ │ └──────────────────────────┘ │
192
+ │ │
193
+ └────────────────────────────────┘
194
+ w: 400px, p: 32px
195
+
196
+ ### Component Tree
197
+ LoginCard (w-[400px], p-8, rounded-xl, shadow-lg)
198
+ ├── Logo (h-12, mx-auto)
199
+ ├── Form (space-y-4)
200
+ │ ├── EmailInput
201
+ │ ├── PasswordInput (with visibility toggle)
202
+ │ ├── RememberRow (flex, justify-between)
203
+ │ └── SubmitButton (w-full, h-11)
204
+ ├── Divider (with "or" text)
205
+ └── SocialButtons
206
+ └── GoogleButton (outline variant)
207
+
208
+ ### Now implementing...
209
+ ```
210
+
211
+ ## Quick Preview Option
212
+
213
+ After presenting the UI visualization, **ALWAYS ask the user**:
214
+
215
+ > 🔍 **Quick Preview?** Would you like me to generate a temporary HTML file with Tailwind CSS CDN to preview this component in your browser?
216
+ >
217
+ > - **Yes** - I'll create a `/tmp/component-preview.html` file you can open
218
+ > - **No** - Continue with implementation
219
+
220
+ If user chooses **Yes**:
221
+ 1. Generate a standalone HTML file at `/tmp/component-preview.html`
222
+ 2. Include Tailwind CSS via CDN: `<script src="https://cdn.tailwindcss.com"></script>`
223
+ 3. Run the preview script: `.claude/scripts/preview-component.sh /tmp/component-preview.html`
224
+ 4. The file will auto-open in the default browser
225
+
226
+ Example preview HTML structure:
227
+ ```html
228
+ <!DOCTYPE html>
229
+ <html lang="en">
230
+ <head>
231
+ <meta charset="UTF-8">
232
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
233
+ <title>Component Preview</title>
234
+ <script src="https://cdn.tailwindcss.com"></script>
235
+ </head>
236
+ <body class="min-h-screen bg-gray-50 p-8">
237
+ <div class="max-w-4xl mx-auto">
238
+ <!-- Component code here -->
239
+ </div>
240
+ </body>
241
+ </html>
242
+ ```
@@ -0,0 +1,65 @@
1
+ #!/bin/bash
2
+ # Quick component preview - generates HTML and opens in browser
3
+ # Usage: ./preview-component.sh [filename.html]
4
+
5
+ FILE="${1:-/tmp/component-preview.html}"
6
+
7
+ # If no file provided, create from clipboard or stdin
8
+ if [ -z "$1" ]; then
9
+ echo "Creating preview at $FILE"
10
+ cat > "$FILE" << 'TEMPLATE'
11
+ <!DOCTYPE html>
12
+ <html lang="en">
13
+ <head>
14
+ <meta charset="UTF-8">
15
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
16
+ <title>Component Preview</title>
17
+ <script src="https://cdn.tailwindcss.com"></script>
18
+ <script>
19
+ tailwind.config = {
20
+ theme: {
21
+ extend: {
22
+ // Add your design tokens here
23
+ }
24
+ }
25
+ }
26
+ </script>
27
+ <style type="text/tailwindcss">
28
+ @layer utilities {
29
+ .debug * { outline: 1px solid red; }
30
+ }
31
+ </style>
32
+ </head>
33
+ <body class="min-h-screen bg-gray-50 p-8">
34
+ <div class="max-w-4xl mx-auto space-y-8">
35
+
36
+ <!-- PASTE YOUR COMPONENT HTML HERE -->
37
+ <div class="bg-white rounded-lg shadow-md p-6">
38
+ <h2 class="text-xl font-semibold">Preview Component</h2>
39
+ <p class="text-gray-600 mt-2">Replace this with your component code</p>
40
+ </div>
41
+
42
+ </div>
43
+
44
+ <!-- Debug toggle -->
45
+ <button
46
+ onclick="document.body.classList.toggle('debug')"
47
+ class="fixed bottom-4 right-4 bg-gray-800 text-white px-3 py-1 rounded text-sm"
48
+ >
49
+ Toggle Outlines
50
+ </button>
51
+ </body>
52
+ </html>
53
+ TEMPLATE
54
+ fi
55
+
56
+ # Open in browser (cross-platform)
57
+ if command -v xdg-open &> /dev/null; then
58
+ xdg-open "$FILE"
59
+ elif command -v open &> /dev/null; then
60
+ open "$FILE"
61
+ elif command -v start &> /dev/null; then
62
+ start "$FILE"
63
+ else
64
+ echo "Preview ready at: $FILE"
65
+ fi
@@ -0,0 +1,48 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "startup|resume|clear",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "echo REMINDER: Start EVERY response with: Skills: [list] or Skills: none"
10
+ }
11
+ ]
12
+ }
13
+ ],
14
+ "PostToolUse": [
15
+ {
16
+ "matcher": "Edit",
17
+ "hooks": [
18
+ {
19
+ "type": "command",
20
+ "command": "echo %TOOL_INPUT% | findstr /C:\"docs/ai/planning/feature-\" >nul 2>&1 && echo [%DATE% %TIME%] Task updated in planning doc >> .claude/feature-progress.log || exit /b 0"
21
+ }
22
+ ]
23
+ }
24
+ ],
25
+ "Stop": [
26
+ {
27
+ "matcher": "",
28
+ "hooks": [
29
+ {
30
+ "type": "command",
31
+ "command": "powershell.exe -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; [void][System.Windows.Forms.MessageBox]::Show('Task completed', 'Claude Code', 0, 64)\" 2>nul || notify-send -i dialog-information 'Claude Code' 'Task completed' 2>/dev/null || osascript -e 'display notification \"Task completed\" with title \"Claude Code\"' 2>/dev/null || exit 0"
32
+ }
33
+ ]
34
+ }
35
+ ],
36
+ "Notification": [
37
+ {
38
+ "matcher": "permission_prompt",
39
+ "hooks": [
40
+ {
41
+ "type": "command",
42
+ "command": "powershell.exe -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; [void][System.Windows.Forms.MessageBox]::Show('Permission required - check terminal', 'Claude Code', 0, 48)\" 2>nul || notify-send -u critical -i dialog-warning 'Claude Code' 'Permission required' 2>/dev/null || exit 0"
43
+ }
44
+ ]
45
+ }
46
+ ]
47
+ }
48
+ }
@@ -12,50 +12,5 @@
12
12
  "deny": [],
13
13
  "ask": []
14
14
  },
15
- "hooks": {
16
- "SessionStart": [
17
- {
18
- "matcher": "startup|resume|clear",
19
- "hooks": [
20
- {
21
- "type": "command",
22
- "command": "echo '⚠️ REMINDER: Start EVERY response with: 📚 Skills: [list] or 📚 Skills: none'"
23
- }
24
- ]
25
- }
26
- ],
27
- "PostToolUse": [
28
- {
29
- "matcher": "Edit",
30
- "hooks": [
31
- {
32
- "type": "command",
33
- "command": "if echo \"$TOOL_INPUT\" | grep -q 'docs/ai/planning/feature-'; then echo \"[$(date '+%Y-%m-%d %H:%M:%S')] Task updated in planning doc\" >> .claude/feature-progress.log; fi"
34
- }
35
- ]
36
- }
37
- ],
38
- "Stop": [
39
- {
40
- "matcher": "",
41
- "hooks": [
42
- {
43
- "type": "command",
44
- "command": "if command -v notify-send &>/dev/null; then notify-send -i dialog-information 'Claude Code' '✅ Task completed' 2>/dev/null; elif command -v powershell.exe &>/dev/null; then powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Task completed', 'Claude Code', 'OK', 'Information')\" 2>/dev/null; elif command -v osascript &>/dev/null; then osascript -e 'display notification \"Task completed\" with title \"Claude Code\"' 2>/dev/null; fi; exit 0"
45
- }
46
- ]
47
- }
48
- ],
49
- "Notification": [
50
- {
51
- "matcher": "permission_prompt",
52
- "hooks": [
53
- {
54
- "type": "command",
55
- "command": "if command -v notify-send &>/dev/null; then notify-send -u critical -i dialog-warning 'Claude Code' '⚠️ Permission required - check terminal' 2>/dev/null; elif command -v powershell.exe &>/dev/null; then powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Permission required - check terminal', 'Claude Code', 'OK', 'Warning')\" 2>/dev/null; fi; exit 0"
56
- }
57
- ]
58
- }
59
- ]
60
- }
15
+ "outputStyle": "tech-explainer"
61
16
  }