climaybe 1.7.2 → 1.8.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/README.md +9 -7
- package/bin/version.txt +1 -1
- package/package.json +6 -7
- package/src/commands/add-cursor-skill.js +12 -7
- package/src/commands/init.js +10 -5
- package/src/cursor/rules/00-rule-index.mdc +24 -0
- package/src/cursor/rules/accessibility-rules.mdc +527 -0
- package/src/cursor/rules/commit-rules.mdc +286 -0
- package/src/cursor/rules/cursor-rule-template.mdc +66 -0
- package/src/cursor/rules/examples/section-example.liquid +52 -0
- package/src/cursor/rules/examples/snippet-example.liquid +83 -0
- package/src/cursor/rules/figma-design-system.mdc +182 -0
- package/src/cursor/rules/global-rules-reference.mdc +62 -0
- package/src/cursor/rules/javascript-standards.mdc +1125 -0
- package/src/cursor/rules/js-refactor-tasks.mdc +123 -0
- package/src/cursor/rules/linear-task-creation.mdc +105 -0
- package/src/cursor/rules/liquid-doc-rules.mdc +595 -0
- package/src/cursor/rules/liquid.mdc +228 -0
- package/src/cursor/rules/project-overview.mdc +81 -0
- package/src/cursor/rules/schemas.mdc +150 -0
- package/src/cursor/rules/sections.mdc +25 -0
- package/src/cursor/rules/snippets.mdc +134 -0
- package/src/cursor/rules/tailwindcss-rules.mdc +410 -0
- package/src/cursor/skills/accessibility-pass/SKILL.md +54 -0
- package/src/cursor/skills/changelog-release/SKILL.md +50 -0
- package/src/cursor/skills/commit/SKILL.md +27 -0
- package/src/cursor/skills/commit-in-groups/SKILL.md +55 -0
- package/src/cursor/skills/linear-create-task/SKILL.md +81 -0
- package/src/cursor/skills/liquid-doc-comments/SKILL.md +37 -0
- package/src/cursor/skills/locale-translation-prep/SKILL.md +49 -0
- package/src/cursor/skills/schema-section-change/SKILL.md +39 -0
- package/src/cursor/skills/section-from-spec/SKILL.md +39 -0
- package/src/cursor/skills/theme-check-fix/SKILL.md +47 -0
- package/src/index.js +3 -2
- package/src/lib/commit-tooling.js +0 -44
- package/src/lib/config.js +1 -1
- package/src/lib/cursor-bundle.js +47 -0
- package/src/lib/prompts.js +3 -2
- package/src/workflows/shared/version-bump.yml +5 -2
|
@@ -0,0 +1,595 @@
|
|
|
1
|
+
---
|
|
2
|
+
globs: snippets/*.liquid,blocks/*.liquid
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
# LiquidDoc Documentation Rules for Electric Maybe Shopify Theme
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
This document establishes comprehensive documentation standards for all Liquid snippets and blocks in the Electric Maybe Shopify theme project. Following these rules ensures consistent, maintainable, and developer-friendly code documentation that integrates with Shopify's LiquidDoc tooling.
|
|
9
|
+
|
|
10
|
+
## Core Documentation Standards
|
|
11
|
+
|
|
12
|
+
### Required Structure for All Liquid Files
|
|
13
|
+
Every snippet (`.liquid` files in `snippets/`) and block (`.liquid` files in `blocks/`) must include LiquidDoc documentation at the top of the file:
|
|
14
|
+
|
|
15
|
+
```liquid
|
|
16
|
+
{%- doc -%}
|
|
17
|
+
[Component description - one clear sentence explaining purpose]
|
|
18
|
+
|
|
19
|
+
[Detailed description - 2-3 sentences explaining functionality, use cases, and key features]
|
|
20
|
+
|
|
21
|
+
@param {type} param_name - Parameter description
|
|
22
|
+
@param {type} [optional_param] - Optional parameter description
|
|
23
|
+
|
|
24
|
+
@example
|
|
25
|
+
{% render 'component-name', param: value %}
|
|
26
|
+
|
|
27
|
+
@example
|
|
28
|
+
{% render 'component-name',
|
|
29
|
+
param1: value1,
|
|
30
|
+
param2: value2
|
|
31
|
+
%}
|
|
32
|
+
{%- enddoc -%}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Documentation Tag Requirements
|
|
36
|
+
- **Required**: All snippets and blocks must have `{%- doc -%}` block
|
|
37
|
+
- **Position**: Must be the first content in the file (after any initial comments)
|
|
38
|
+
- **Format**: Use `{%- doc -%}` and `{%- enddoc -%}` with whitespace control
|
|
39
|
+
- **Content**: Must include description, parameters, and at least one example
|
|
40
|
+
|
|
41
|
+
## Parameter Documentation Standards
|
|
42
|
+
|
|
43
|
+
### Parameter Format
|
|
44
|
+
```
|
|
45
|
+
@param {type} param_name - Description of the parameter
|
|
46
|
+
@param {type} [optional_param] - Optional parameter description
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Supported Parameter Types
|
|
50
|
+
- `{string}` - Text values, URLs, class names
|
|
51
|
+
- `{number}` - Numeric values, sizes, counts
|
|
52
|
+
- `{boolean}` - True/false values, flags
|
|
53
|
+
- `{object}` - Complex Liquid objects (product, collection, etc.)
|
|
54
|
+
|
|
55
|
+
### Parameter Naming Conventions
|
|
56
|
+
- Use `snake_case` for parameter names
|
|
57
|
+
- Wrap optional parameters in square brackets: `[param_name]`
|
|
58
|
+
- Use descriptive names that clearly indicate purpose
|
|
59
|
+
- Avoid abbreviations unless widely understood
|
|
60
|
+
|
|
61
|
+
### Parameter Description Requirements
|
|
62
|
+
- Clear, concise explanation of purpose
|
|
63
|
+
- Include default values when applicable
|
|
64
|
+
- Mention any constraints or limitations
|
|
65
|
+
- Reference related parameters when relevant
|
|
66
|
+
|
|
67
|
+
## Example Documentation Standards
|
|
68
|
+
|
|
69
|
+
### Example Format Requirements
|
|
70
|
+
- Include at least one basic usage example
|
|
71
|
+
- Include one complex example showing multiple parameters
|
|
72
|
+
- Use realistic, practical values
|
|
73
|
+
- Demonstrate common use cases
|
|
74
|
+
- Show proper Liquid syntax formatting
|
|
75
|
+
|
|
76
|
+
### Multi-line Example Format
|
|
77
|
+
```liquid
|
|
78
|
+
@example
|
|
79
|
+
{% render 'component-name',
|
|
80
|
+
param1: 'value1',
|
|
81
|
+
param2: 42,
|
|
82
|
+
param3: true
|
|
83
|
+
%}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Component-Specific Documentation Rules
|
|
87
|
+
|
|
88
|
+
### Atomic Components (`a--*.liquid`)
|
|
89
|
+
- Focus on reusability and flexibility
|
|
90
|
+
- Document all styling parameters
|
|
91
|
+
- Include accessibility considerations
|
|
92
|
+
- Show responsive behavior examples
|
|
93
|
+
|
|
94
|
+
### Molecular Components (`m--*.liquid`)
|
|
95
|
+
- Document composition of atomic components
|
|
96
|
+
- Explain interaction patterns
|
|
97
|
+
- Include state management parameters
|
|
98
|
+
- Show integration examples
|
|
99
|
+
|
|
100
|
+
### Section Components (`s--*.liquid`)
|
|
101
|
+
- Document layout and structure parameters
|
|
102
|
+
- Include content management parameters
|
|
103
|
+
- Show responsive breakpoint behavior
|
|
104
|
+
- Document theme customizer integration
|
|
105
|
+
|
|
106
|
+
### Block Components (`blocks/*.liquid`)
|
|
107
|
+
- Document content editing parameters
|
|
108
|
+
- Include layout and styling options
|
|
109
|
+
- Show theme editor integration
|
|
110
|
+
- Document dynamic content handling
|
|
111
|
+
|
|
112
|
+
## Accessibility Documentation
|
|
113
|
+
|
|
114
|
+
### Required Accessibility Parameters
|
|
115
|
+
For components that affect accessibility, document:
|
|
116
|
+
- `aria_label` - Screen reader text
|
|
117
|
+
- `aria_hidden` - Visibility control
|
|
118
|
+
- `role` - ARIA role attributes
|
|
119
|
+
- `tabindex` - Keyboard navigation
|
|
120
|
+
|
|
121
|
+
### Accessibility Examples
|
|
122
|
+
```liquid
|
|
123
|
+
@example
|
|
124
|
+
{% render 'a--icon',
|
|
125
|
+
icon: 'search',
|
|
126
|
+
aria_label: 'Search products',
|
|
127
|
+
class: 'sr-only'
|
|
128
|
+
%}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Performance Documentation
|
|
132
|
+
|
|
133
|
+
### Performance Parameters
|
|
134
|
+
Document performance-related parameters:
|
|
135
|
+
- `lazy_loading` - Image loading behavior
|
|
136
|
+
- `preload` - Resource preloading
|
|
137
|
+
- `debounce` - Event handling optimization
|
|
138
|
+
- `cache` - Caching behavior
|
|
139
|
+
|
|
140
|
+
## Error Handling Documentation
|
|
141
|
+
|
|
142
|
+
### Error Parameters
|
|
143
|
+
Document error handling parameters:
|
|
144
|
+
- `fallback` - Fallback content
|
|
145
|
+
- `error_message` - Error display text
|
|
146
|
+
- `required` - Parameter requirement flags
|
|
147
|
+
|
|
148
|
+
## Theme Integration Documentation
|
|
149
|
+
|
|
150
|
+
### Theme Customizer Parameters
|
|
151
|
+
Document theme editor integration:
|
|
152
|
+
- `settings` - Theme setting references
|
|
153
|
+
- `customizable` - Customization flags
|
|
154
|
+
- `presets` - Preset configurations
|
|
155
|
+
|
|
156
|
+
## Code Quality Standards
|
|
157
|
+
|
|
158
|
+
### Documentation Validation
|
|
159
|
+
- All parameters must be used in the component
|
|
160
|
+
- Parameter types must match usage
|
|
161
|
+
- Examples must be syntactically correct
|
|
162
|
+
- Descriptions must be clear and accurate
|
|
163
|
+
|
|
164
|
+
### Consistency Requirements
|
|
165
|
+
- Use consistent terminology across components
|
|
166
|
+
- Follow established naming conventions
|
|
167
|
+
- Maintain consistent formatting
|
|
168
|
+
- Use consistent example patterns
|
|
169
|
+
|
|
170
|
+
## File Organization Standards
|
|
171
|
+
|
|
172
|
+
### Documentation Structure
|
|
173
|
+
1. **Component Description** - One clear sentence
|
|
174
|
+
2. **Detailed Description** - 2-3 sentences explaining functionality
|
|
175
|
+
3. **Required Parameters** - All mandatory parameters
|
|
176
|
+
4. **Optional Parameters** - All optional parameters with defaults
|
|
177
|
+
5. **Basic Example** - Simple usage demonstration
|
|
178
|
+
6. **Advanced Example** - Complex usage with multiple parameters
|
|
179
|
+
|
|
180
|
+
### Documentation Comments
|
|
181
|
+
- Use clear, professional language
|
|
182
|
+
- Avoid technical jargon unless necessary
|
|
183
|
+
- Include practical use cases
|
|
184
|
+
- Reference related components when relevant
|
|
185
|
+
|
|
186
|
+
## Integration with Development Tools
|
|
187
|
+
|
|
188
|
+
### Theme Check Integration
|
|
189
|
+
Documentation must pass all Theme Check validations:
|
|
190
|
+
- `UniqueDocParamNames` - No duplicate parameter names
|
|
191
|
+
- `ValidDocParamTypes` - Valid parameter types
|
|
192
|
+
- `UnusedDocParam` - All documented parameters used
|
|
193
|
+
- `MissingRenderSnippetArguments` - Required parameters provided
|
|
194
|
+
|
|
195
|
+
### Editor Integration
|
|
196
|
+
Documentation enables:
|
|
197
|
+
- Hover documentation in code editors
|
|
198
|
+
- Code completion for parameters
|
|
199
|
+
- Parameter validation warnings
|
|
200
|
+
- Type checking for values
|
|
201
|
+
|
|
202
|
+
## Maintenance Standards
|
|
203
|
+
|
|
204
|
+
### Documentation Updates
|
|
205
|
+
- Update documentation when parameters change
|
|
206
|
+
- Add new parameters to documentation
|
|
207
|
+
- Remove deprecated parameters
|
|
208
|
+
- Update examples for new functionality
|
|
209
|
+
|
|
210
|
+
### Review Process
|
|
211
|
+
- Review documentation during code reviews
|
|
212
|
+
- Validate examples work correctly
|
|
213
|
+
- Ensure parameter descriptions are accurate
|
|
214
|
+
- Check for consistency across components
|
|
215
|
+
|
|
216
|
+
## Examples of Good Documentation
|
|
217
|
+
|
|
218
|
+
### Atomic Component Example
|
|
219
|
+
```liquid
|
|
220
|
+
{%- doc -%}
|
|
221
|
+
Icon component for displaying SVG icons with customizable styling and animations.
|
|
222
|
+
|
|
223
|
+
This component provides a comprehensive set of icons including social media, navigation, UI elements, and e-commerce specific icons. Icons are rendered as inline SVG with customizable colors, sizes, and stroke widths.
|
|
224
|
+
|
|
225
|
+
@param {string} icon - The icon name to display (required)
|
|
226
|
+
@param {string} [class] - Additional CSS classes to apply to the SVG element
|
|
227
|
+
@param {string} [color] - Icon color (defaults to 'currentColor')
|
|
228
|
+
@param {number} [width] - Icon width in pixels (defaults to 24)
|
|
229
|
+
@param {number} [height] - Icon height in pixels (defaults to 24)
|
|
230
|
+
@param {string} [stroke] - Stroke width classes (defaults to 'stroke-base lg:stroke-lg')
|
|
231
|
+
@param {boolean} [animate] - Whether to apply animation classes for interactive states
|
|
232
|
+
|
|
233
|
+
@example
|
|
234
|
+
{% render 'a--icon', icon: 'search' %}
|
|
235
|
+
|
|
236
|
+
@example
|
|
237
|
+
{% render 'a--icon',
|
|
238
|
+
class: 'hover:opacity-50',
|
|
239
|
+
icon: 'chevron-d',
|
|
240
|
+
color: '#000000',
|
|
241
|
+
stroke: 'stroke-lg',
|
|
242
|
+
width: 32,
|
|
243
|
+
height: 32,
|
|
244
|
+
animate: true
|
|
245
|
+
%}
|
|
246
|
+
{%- enddoc -%}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Molecular Component Example
|
|
250
|
+
```liquid
|
|
251
|
+
{%- doc -%}
|
|
252
|
+
Product card component for displaying product information in grid layouts.
|
|
253
|
+
|
|
254
|
+
This component renders a complete product card with image, title, price, and action buttons. It supports various display modes, hover effects, and responsive layouts. Includes built-in lazy loading and accessibility features.
|
|
255
|
+
|
|
256
|
+
@param {object} product - Product object from Shopify (required)
|
|
257
|
+
@param {string} [class] - Additional CSS classes for the card container
|
|
258
|
+
@param {boolean} [show_vendor] - Display vendor name (defaults to false)
|
|
259
|
+
@param {boolean} [show_rating] - Display product rating (defaults to true)
|
|
260
|
+
@param {string} [image_size] - Product image size ('small', 'medium', 'large')
|
|
261
|
+
@param {boolean} [lazy_load] - Enable lazy loading for images (defaults to true)
|
|
262
|
+
@param {string} [badge_text] - Custom badge text to display
|
|
263
|
+
|
|
264
|
+
@example
|
|
265
|
+
{% render 'm--product-card', product: product %}
|
|
266
|
+
|
|
267
|
+
@example
|
|
268
|
+
{% render 'm--product-card',
|
|
269
|
+
product: product,
|
|
270
|
+
class: 'hover:shadow-lg',
|
|
271
|
+
show_vendor: true,
|
|
272
|
+
image_size: 'large',
|
|
273
|
+
badge_text: 'New'
|
|
274
|
+
%}
|
|
275
|
+
{%- enddoc -%}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Compliance Checklist
|
|
279
|
+
|
|
280
|
+
Before committing any Liquid file, ensure:
|
|
281
|
+
|
|
282
|
+
- [ ] Documentation block is present at file top
|
|
283
|
+
- [ ] Component description is clear and concise
|
|
284
|
+
- [ ] All parameters are documented with types
|
|
285
|
+
- [ ] Optional parameters are marked with brackets
|
|
286
|
+
- [ ] At least one basic example is provided
|
|
287
|
+
- [ ] At least one advanced example is provided
|
|
288
|
+
- [ ] Parameter descriptions are accurate and helpful
|
|
289
|
+
- [ ] Examples use realistic, practical values
|
|
290
|
+
- [ ] Documentation passes Theme Check validation
|
|
291
|
+
- [ ] Accessibility parameters are documented when relevant
|
|
292
|
+
- [ ] Performance parameters are documented when relevant
|
|
293
|
+
- [ ] Error handling is documented when relevant
|
|
294
|
+
|
|
295
|
+
## References
|
|
296
|
+
|
|
297
|
+
- [Shopify LiquidDoc Documentation](https://shopify.dev/docs/storefronts/themes/tools/liquid-doc)
|
|
298
|
+
- [Theme Check Documentation](https://shopify.dev/docs/storefronts/themes/tools/theme-check)
|
|
299
|
+
- [Liquid Template Language](https://shopify.dev/docs/api/liquid)
|
|
300
|
+
- [Shopify Theme Development Best Practices](https://shopify.dev/docs/storefronts/themes/best-practices) # LiquidDoc Documentation Rules for Electric Maybe Shopify Theme
|
|
301
|
+
|
|
302
|
+
## Overview
|
|
303
|
+
This document establishes comprehensive documentation standards for all Liquid snippets and blocks in the Electric Maybe Shopify theme project. Following these rules ensures consistent, maintainable, and developer-friendly code documentation that integrates with Shopify's LiquidDoc tooling.
|
|
304
|
+
|
|
305
|
+
## Core Documentation Standards
|
|
306
|
+
|
|
307
|
+
### Required Structure for All Liquid Files
|
|
308
|
+
Every snippet (`.liquid` files in `snippets/`) and block (`.liquid` files in `blocks/`) must include LiquidDoc documentation at the top of the file:
|
|
309
|
+
|
|
310
|
+
```liquid
|
|
311
|
+
{%- doc -%}
|
|
312
|
+
[Component description - one clear sentence explaining purpose]
|
|
313
|
+
|
|
314
|
+
[Detailed description - 2-3 sentences explaining functionality, use cases, and key features]
|
|
315
|
+
|
|
316
|
+
@param {type} param_name - Parameter description
|
|
317
|
+
@param {type} [optional_param] - Optional parameter description
|
|
318
|
+
|
|
319
|
+
@example
|
|
320
|
+
{% render 'component-name', param: value %}
|
|
321
|
+
|
|
322
|
+
@example
|
|
323
|
+
{% render 'component-name',
|
|
324
|
+
param1: value1,
|
|
325
|
+
param2: value2
|
|
326
|
+
%}
|
|
327
|
+
{%- enddoc -%}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### Documentation Tag Requirements
|
|
331
|
+
- **Required**: All snippets and blocks must have `{%- doc -%}` block
|
|
332
|
+
- **Position**: Must be the first content in the file (after any initial comments)
|
|
333
|
+
- **Format**: Use `{%- doc -%}` and `{%- enddoc -%}` with whitespace control
|
|
334
|
+
- **Content**: Must include description, parameters, and at least one example
|
|
335
|
+
|
|
336
|
+
## Parameter Documentation Standards
|
|
337
|
+
|
|
338
|
+
### Parameter Format
|
|
339
|
+
```
|
|
340
|
+
@param {type} param_name - Description of the parameter
|
|
341
|
+
@param {type} [optional_param] - Optional parameter description
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Supported Parameter Types
|
|
345
|
+
- `{string}` - Text values, URLs, class names
|
|
346
|
+
- `{number}` - Numeric values, sizes, counts
|
|
347
|
+
- `{boolean}` - True/false values, flags
|
|
348
|
+
- `{object}` - Complex Liquid objects (product, collection, etc.)
|
|
349
|
+
|
|
350
|
+
### Parameter Naming Conventions
|
|
351
|
+
- Use `snake_case` for parameter names
|
|
352
|
+
- Wrap optional parameters in square brackets: `[param_name]`
|
|
353
|
+
- Use descriptive names that clearly indicate purpose
|
|
354
|
+
- Avoid abbreviations unless widely understood
|
|
355
|
+
|
|
356
|
+
### Parameter Description Requirements
|
|
357
|
+
- Clear, concise explanation of purpose
|
|
358
|
+
- Include default values when applicable
|
|
359
|
+
- Mention any constraints or limitations
|
|
360
|
+
- Reference related parameters when relevant
|
|
361
|
+
|
|
362
|
+
## Example Documentation Standards
|
|
363
|
+
|
|
364
|
+
### Example Format Requirements
|
|
365
|
+
- Include at least one basic usage example
|
|
366
|
+
- Include one complex example showing multiple parameters
|
|
367
|
+
- Use realistic, practical values
|
|
368
|
+
- Demonstrate common use cases
|
|
369
|
+
- Show proper Liquid syntax formatting
|
|
370
|
+
|
|
371
|
+
### Multi-line Example Format
|
|
372
|
+
```liquid
|
|
373
|
+
@example
|
|
374
|
+
{% render 'component-name',
|
|
375
|
+
param1: 'value1',
|
|
376
|
+
param2: 42,
|
|
377
|
+
param3: true
|
|
378
|
+
%}
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
## Component-Specific Documentation Rules
|
|
382
|
+
|
|
383
|
+
### Atomic Components (`a--*.liquid`)
|
|
384
|
+
- Focus on reusability and flexibility
|
|
385
|
+
- Document all styling parameters
|
|
386
|
+
- Include accessibility considerations
|
|
387
|
+
- Show responsive behavior examples
|
|
388
|
+
|
|
389
|
+
### Molecular Components (`m--*.liquid`)
|
|
390
|
+
- Document composition of atomic components
|
|
391
|
+
- Explain interaction patterns
|
|
392
|
+
- Include state management parameters
|
|
393
|
+
- Show integration examples
|
|
394
|
+
|
|
395
|
+
### Section Components (`s--*.liquid`)
|
|
396
|
+
- Document layout and structure parameters
|
|
397
|
+
- Include content management parameters
|
|
398
|
+
- Show responsive breakpoint behavior
|
|
399
|
+
- Document theme customizer integration
|
|
400
|
+
|
|
401
|
+
### Block Components (`blocks/*.liquid`)
|
|
402
|
+
- Document content editing parameters
|
|
403
|
+
- Include layout and styling options
|
|
404
|
+
- Show theme editor integration
|
|
405
|
+
- Document dynamic content handling
|
|
406
|
+
|
|
407
|
+
## Accessibility Documentation
|
|
408
|
+
|
|
409
|
+
### Required Accessibility Parameters
|
|
410
|
+
For components that affect accessibility, document:
|
|
411
|
+
- `aria_label` - Screen reader text
|
|
412
|
+
- `aria_hidden` - Visibility control
|
|
413
|
+
- `role` - ARIA role attributes
|
|
414
|
+
- `tabindex` - Keyboard navigation
|
|
415
|
+
|
|
416
|
+
### Accessibility Examples
|
|
417
|
+
```liquid
|
|
418
|
+
@example
|
|
419
|
+
{% render 'a--icon',
|
|
420
|
+
icon: 'search',
|
|
421
|
+
aria_label: 'Search products',
|
|
422
|
+
class: 'sr-only'
|
|
423
|
+
%}
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
## Performance Documentation
|
|
427
|
+
|
|
428
|
+
### Performance Parameters
|
|
429
|
+
Document performance-related parameters:
|
|
430
|
+
- `lazy_loading` - Image loading behavior
|
|
431
|
+
- `preload` - Resource preloading
|
|
432
|
+
- `debounce` - Event handling optimization
|
|
433
|
+
- `cache` - Caching behavior
|
|
434
|
+
|
|
435
|
+
## Error Handling Documentation
|
|
436
|
+
|
|
437
|
+
### Error Parameters
|
|
438
|
+
Document error handling parameters:
|
|
439
|
+
- `fallback` - Fallback content
|
|
440
|
+
- `error_message` - Error display text
|
|
441
|
+
- `required` - Parameter requirement flags
|
|
442
|
+
|
|
443
|
+
## Theme Integration Documentation
|
|
444
|
+
|
|
445
|
+
### Theme Customizer Parameters
|
|
446
|
+
Document theme editor integration:
|
|
447
|
+
- `settings` - Theme setting references
|
|
448
|
+
- `customizable` - Customization flags
|
|
449
|
+
- `presets` - Preset configurations
|
|
450
|
+
|
|
451
|
+
## Code Quality Standards
|
|
452
|
+
|
|
453
|
+
### Documentation Validation
|
|
454
|
+
- All parameters must be used in the component
|
|
455
|
+
- Parameter types must match usage
|
|
456
|
+
- Examples must be syntactically correct
|
|
457
|
+
- Descriptions must be clear and accurate
|
|
458
|
+
|
|
459
|
+
### Consistency Requirements
|
|
460
|
+
- Use consistent terminology across components
|
|
461
|
+
- Follow established naming conventions
|
|
462
|
+
- Maintain consistent formatting
|
|
463
|
+
- Use consistent example patterns
|
|
464
|
+
|
|
465
|
+
## File Organization Standards
|
|
466
|
+
|
|
467
|
+
### Documentation Structure
|
|
468
|
+
1. **Component Description** - One clear sentence
|
|
469
|
+
2. **Detailed Description** - 2-3 sentences explaining functionality
|
|
470
|
+
3. **Required Parameters** - All mandatory parameters
|
|
471
|
+
4. **Optional Parameters** - All optional parameters with defaults
|
|
472
|
+
5. **Basic Example** - Simple usage demonstration
|
|
473
|
+
6. **Advanced Example** - Complex usage with multiple parameters
|
|
474
|
+
|
|
475
|
+
### Documentation Comments
|
|
476
|
+
- Use clear, professional language
|
|
477
|
+
- Avoid technical jargon unless necessary
|
|
478
|
+
- Include practical use cases
|
|
479
|
+
- Reference related components when relevant
|
|
480
|
+
|
|
481
|
+
## Integration with Development Tools
|
|
482
|
+
|
|
483
|
+
### Theme Check Integration
|
|
484
|
+
Documentation must pass all Theme Check validations:
|
|
485
|
+
- `UniqueDocParamNames` - No duplicate parameter names
|
|
486
|
+
- `ValidDocParamTypes` - Valid parameter types
|
|
487
|
+
- `UnusedDocParam` - All documented parameters used
|
|
488
|
+
- `MissingRenderSnippetArguments` - Required parameters provided
|
|
489
|
+
|
|
490
|
+
### Editor Integration
|
|
491
|
+
Documentation enables:
|
|
492
|
+
- Hover documentation in code editors
|
|
493
|
+
- Code completion for parameters
|
|
494
|
+
- Parameter validation warnings
|
|
495
|
+
- Type checking for values
|
|
496
|
+
|
|
497
|
+
## Maintenance Standards
|
|
498
|
+
|
|
499
|
+
### Documentation Updates
|
|
500
|
+
- Update documentation when parameters change
|
|
501
|
+
- Add new parameters to documentation
|
|
502
|
+
- Remove deprecated parameters
|
|
503
|
+
- Update examples for new functionality
|
|
504
|
+
|
|
505
|
+
### Review Process
|
|
506
|
+
- Review documentation during code reviews
|
|
507
|
+
- Validate examples work correctly
|
|
508
|
+
- Ensure parameter descriptions are accurate
|
|
509
|
+
- Check for consistency across components
|
|
510
|
+
|
|
511
|
+
## Examples of Good Documentation
|
|
512
|
+
|
|
513
|
+
### Atomic Component Example
|
|
514
|
+
```liquid
|
|
515
|
+
{%- doc -%}
|
|
516
|
+
Icon component for displaying SVG icons with customizable styling and animations.
|
|
517
|
+
|
|
518
|
+
This component provides a comprehensive set of icons including social media, navigation, UI elements, and e-commerce specific icons. Icons are rendered as inline SVG with customizable colors, sizes, and stroke widths.
|
|
519
|
+
|
|
520
|
+
@param {string} icon - The icon name to display (required)
|
|
521
|
+
@param {string} [class] - Additional CSS classes to apply to the SVG element
|
|
522
|
+
@param {string} [color] - Icon color (defaults to 'currentColor')
|
|
523
|
+
@param {number} [width] - Icon width in pixels (defaults to 24)
|
|
524
|
+
@param {number} [height] - Icon height in pixels (defaults to 24)
|
|
525
|
+
@param {string} [stroke] - Stroke width classes (defaults to 'stroke-base lg:stroke-lg')
|
|
526
|
+
@param {boolean} [animate] - Whether to apply animation classes for interactive states
|
|
527
|
+
|
|
528
|
+
@example
|
|
529
|
+
{% render 'a--icon', icon: 'search' %}
|
|
530
|
+
|
|
531
|
+
@example
|
|
532
|
+
{% render 'a--icon',
|
|
533
|
+
class: 'hover:opacity-50',
|
|
534
|
+
icon: 'chevron-d',
|
|
535
|
+
color: '#000000',
|
|
536
|
+
stroke: 'stroke-lg',
|
|
537
|
+
width: 32,
|
|
538
|
+
height: 32,
|
|
539
|
+
animate: true
|
|
540
|
+
%}
|
|
541
|
+
{%- enddoc -%}
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
### Molecular Component Example
|
|
545
|
+
```liquid
|
|
546
|
+
{%- doc -%}
|
|
547
|
+
Product card component for displaying product information in grid layouts.
|
|
548
|
+
|
|
549
|
+
This component renders a complete product card with image, title, price, and action buttons. It supports various display modes, hover effects, and responsive layouts. Includes built-in lazy loading and accessibility features.
|
|
550
|
+
|
|
551
|
+
@param {object} product - Product object from Shopify (required)
|
|
552
|
+
@param {string} [class] - Additional CSS classes for the card container
|
|
553
|
+
@param {boolean} [show_vendor] - Display vendor name (defaults to false)
|
|
554
|
+
@param {boolean} [show_rating] - Display product rating (defaults to true)
|
|
555
|
+
@param {string} [image_size] - Product image size ('small', 'medium', 'large')
|
|
556
|
+
@param {boolean} [lazy_load] - Enable lazy loading for images (defaults to true)
|
|
557
|
+
@param {string} [badge_text] - Custom badge text to display
|
|
558
|
+
|
|
559
|
+
@example
|
|
560
|
+
{% render 'm--product-card', product: product %}
|
|
561
|
+
|
|
562
|
+
@example
|
|
563
|
+
{% render 'm--product-card',
|
|
564
|
+
product: product,
|
|
565
|
+
class: 'hover:shadow-lg',
|
|
566
|
+
show_vendor: true,
|
|
567
|
+
image_size: 'large',
|
|
568
|
+
badge_text: 'New'
|
|
569
|
+
%}
|
|
570
|
+
{%- enddoc -%}
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
## Compliance Checklist
|
|
574
|
+
|
|
575
|
+
Before committing any Liquid file, ensure:
|
|
576
|
+
|
|
577
|
+
- [ ] Documentation block is present at file top
|
|
578
|
+
- [ ] Component description is clear and concise
|
|
579
|
+
- [ ] All parameters are documented with types
|
|
580
|
+
- [ ] Optional parameters are marked with brackets
|
|
581
|
+
- [ ] At least one basic example is provided
|
|
582
|
+
- [ ] At least one advanced example is provided
|
|
583
|
+
- [ ] Parameter descriptions are accurate and helpful
|
|
584
|
+
- [ ] Examples use realistic, practical values
|
|
585
|
+
- [ ] Documentation passes Theme Check validation
|
|
586
|
+
- [ ] Accessibility parameters are documented when relevant
|
|
587
|
+
- [ ] Performance parameters are documented when relevant
|
|
588
|
+
- [ ] Error handling is documented when relevant
|
|
589
|
+
|
|
590
|
+
## References
|
|
591
|
+
|
|
592
|
+
- [Shopify LiquidDoc Documentation](https://shopify.dev/docs/storefronts/themes/tools/liquid-doc)
|
|
593
|
+
- [Theme Check Documentation](https://shopify.dev/docs/storefronts/themes/tools/theme-check)
|
|
594
|
+
- [Liquid Template Language](https://shopify.dev/docs/api/liquid)
|
|
595
|
+
- [Shopify Theme Development Best Practices](https://shopify.dev/docs/storefronts/themes/best-practices)
|