@friedbotstudio/create-baseline 0.2.0 → 0.3.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.
Files changed (88) hide show
  1. package/README.md +7 -3
  2. package/obj/template/.claude/commands/grant-push.md +19 -0
  3. package/obj/template/.claude/commands/init-project.md +26 -4
  4. package/obj/template/.claude/hooks/consent_gate_grant.mjs +107 -0
  5. package/obj/template/.claude/hooks/git_commit_guard.mjs +224 -0
  6. package/obj/template/.claude/hooks/harness_continuation.sh +101 -34
  7. package/obj/template/.claude/hooks/lib/common.mjs +283 -0
  8. package/obj/template/.claude/hooks/lib/common.sh +1 -1
  9. package/obj/template/.claude/hooks/memory_session_start.sh +20 -6
  10. package/obj/template/.claude/hooks/memory_stop.sh +161 -2
  11. package/obj/template/.claude/hooks/spec_approval_guard.sh +1 -1
  12. package/obj/template/.claude/hooks/swarm_approval_guard.sh +1 -1
  13. package/obj/template/.claude/hooks/tests/fixtures/ac008_byte_equal_reference.txt +7 -7
  14. package/obj/template/.claude/hooks/tests/fixtures/memory_stop_landmark_baseline.txt +21 -0
  15. package/obj/template/.claude/hooks/tests/fixtures/regenerate-ac008.sh +47 -0
  16. package/obj/template/.claude/hooks/tests/memory_session_start_test.sh +7 -3
  17. package/obj/template/.claude/hooks/tests/memory_stop_intent_test.sh +329 -0
  18. package/obj/template/.claude/hooks/tests/regenerate_ac008_test.sh +99 -0
  19. package/obj/template/.claude/memory/README.md +8 -3
  20. package/obj/template/.claude/memory/backlog.md +12 -0
  21. package/obj/template/.claude/project.json +6 -1
  22. package/obj/template/.claude/settings.json +3 -4
  23. package/obj/template/.claude/skills/audit-baseline/audit.sh +39 -21
  24. package/obj/template/.claude/skills/audit-baseline/tests/fixtures/_pending_opener_only.md +3 -0
  25. package/obj/template/.claude/skills/audit-baseline/tests/fixtures/preamble_full_empty_body.md +4 -0
  26. package/obj/template/.claude/skills/audit-baseline/tests/fixtures/preamble_full_with_entries.md +9 -0
  27. package/obj/template/.claude/skills/audit-baseline/tests/fixtures/preamble_no_opener.md +3 -0
  28. package/obj/template/.claude/skills/audit-baseline/tests/fixtures/preamble_opener_only.md +3 -0
  29. package/obj/template/.claude/skills/audit-baseline/tests/preamble_check_test.sh +147 -0
  30. package/obj/template/.claude/skills/chore/SKILL.md +5 -3
  31. package/obj/template/.claude/skills/commit/SKILL.md +5 -4
  32. package/obj/template/.claude/skills/copywriting/LICENSE +21 -0
  33. package/obj/template/.claude/skills/copywriting/NOTICE +23 -0
  34. package/obj/template/.claude/skills/copywriting/SKILL.md +1 -1
  35. package/obj/template/.claude/skills/design-ui/SKILL.md +23 -5
  36. package/obj/template/.claude/skills/design-ui/references/design-vs-development.md +26 -5
  37. package/obj/template/.claude/skills/design-ui/references/orchestration.md +1 -0
  38. package/obj/template/.claude/skills/design-ui/references/state-machine.md +5 -3
  39. package/obj/template/.claude/skills/documentation/LICENSE +202 -0
  40. package/obj/template/.claude/skills/documentation/NOTICE +22 -0
  41. package/obj/template/.claude/skills/google-analytics/SKILL.md +129 -0
  42. package/obj/template/.claude/skills/google-analytics/references/audiences.md +389 -0
  43. package/obj/template/.claude/skills/google-analytics/references/bigquery.md +470 -0
  44. package/obj/template/.claude/skills/google-analytics/references/custom-dimensions.md +355 -0
  45. package/obj/template/.claude/skills/google-analytics/references/custom-events.md +383 -0
  46. package/obj/template/.claude/skills/google-analytics/references/data-management.md +416 -0
  47. package/obj/template/.claude/skills/google-analytics/references/debugview.md +364 -0
  48. package/obj/template/.claude/skills/google-analytics/references/events-fundamentals.md +398 -0
  49. package/obj/template/.claude/skills/google-analytics/references/gtag.md +502 -0
  50. package/obj/template/.claude/skills/google-analytics/references/gtm-integration.md +483 -0
  51. package/obj/template/.claude/skills/google-analytics/references/measurement-protocol.md +519 -0
  52. package/obj/template/.claude/skills/google-analytics/references/privacy.md +441 -0
  53. package/obj/template/.claude/skills/google-analytics/references/recommended-events.md +464 -0
  54. package/obj/template/.claude/skills/google-analytics/references/reporting.md +397 -0
  55. package/obj/template/.claude/skills/google-analytics/references/setup.md +344 -0
  56. package/obj/template/.claude/skills/google-analytics/references/user-tracking.md +417 -0
  57. package/obj/template/.claude/skills/harness/SKILL.md +3 -1
  58. package/obj/template/.claude/skills/humanizer/LICENSE +21 -0
  59. package/obj/template/.claude/skills/humanizer/NOTICE +21 -0
  60. package/obj/template/.claude/skills/impeccable/LICENSE +202 -0
  61. package/obj/template/.claude/skills/impeccable/NOTICE +24 -0
  62. package/obj/template/.claude/skills/memory-flush/SKILL.md +20 -4
  63. package/obj/template/.claude/skills/memory-flush/sweep.py +74 -6
  64. package/obj/template/.claude/skills/memory-flush/tests/run.sh +300 -1
  65. package/obj/template/.claude/skills/optimize-seo/SKILL.md +313 -0
  66. package/obj/template/.claude/skills/optimize-seo/scripts/pagespeed.mjs +197 -0
  67. package/obj/template/.claude/skills/pagespeed-insights/LICENSE.md +37 -0
  68. package/obj/template/.claude/skills/pagespeed-insights/SKILL.md +446 -0
  69. package/obj/template/.claude/skills/pagespeed-insights/reference.md +50 -0
  70. package/obj/template/.claude/skills/tdd/SKILL.md +2 -1
  71. package/obj/template/.claude/skills/tdd/drift_check.py +180 -0
  72. package/obj/template/.claude/skills/tdd/tests/drift_check_test.sh +190 -0
  73. package/obj/template/.claude/skills/tdd/tests/run.sh +21 -0
  74. package/obj/template/.claude/skills/technical-tutorials/LICENSE +21 -0
  75. package/obj/template/.claude/skills/technical-tutorials/NOTICE +23 -0
  76. package/obj/template/.claude/skills/technical-tutorials/SKILL.md +1 -1
  77. package/obj/template/.claude/skills/triage/SKILL.md +8 -3
  78. package/obj/template/CLAUDE.md +37 -26
  79. package/obj/template/docs/init/seed.md +38 -23
  80. package/obj/template/manifest.json +80 -33
  81. package/package.json +1 -1
  82. package/src/CLAUDE.template.md +37 -26
  83. package/src/memory/backlog.template.md +12 -0
  84. package/src/project.template.json +6 -1
  85. package/src/seed.template.md +38 -23
  86. package/src/settings.template.json +3 -4
  87. package/obj/template/.claude/hooks/consent_gate_grant.sh +0 -89
  88. package/obj/template/.claude/hooks/git_commit_guard.sh +0 -93
@@ -0,0 +1,389 @@
1
+ # GA4 Audiences and Segmentation
2
+
3
+ Expert guidance for creating and managing audiences for analysis, remarketing, and personalisation.
4
+
5
+ ## Overview
6
+
7
+ Audiences in GA4 allow creation of user segments for analysis, remarketing, and personalisation based on dimensions, metrics, and events. Audiences can be exported to Google Ads for targeting and used in GA4 reports for analysis.
8
+
9
+ ## Accessing Audiences
10
+
11
+ **Path:** Admin -> Audiences
12
+
13
+ **Available Actions:**
14
+ - View all audiences
15
+ - Create new audiences
16
+ - Edit existing audiences
17
+ - View audience membership
18
+
19
+ ## Predefined Audiences
20
+
21
+ GA4 includes template audiences:
22
+
23
+ | Audience | Description |
24
+ |----------|-------------|
25
+ | All Users | All users in selected timeframe |
26
+ | Purchasers | Users who completed purchase (30 days) |
27
+ | New Users | First-time visitors |
28
+ | Returning Users | Repeat visitors |
29
+ | Recent Users | Active in last 7 days |
30
+
31
+ ### Activating Predefined Audiences
32
+
33
+ 1. Admin -> Audiences -> Create Audience
34
+ 2. Select suggested template
35
+ 3. Customise conditions if needed
36
+ 4. Save audience
37
+
38
+ ## Creating Custom Audiences
39
+
40
+ ### Basic Process
41
+
42
+ 1. Admin -> Audiences -> New Audience
43
+ 2. Choose method:
44
+ - Start from scratch
45
+ - Use suggested template
46
+ - Create predictive audience
47
+ 3. Configure audience:
48
+ - Name: Descriptive (e.g., "High-Value Shoppers")
49
+ - Description: Optional notes
50
+ - Membership duration: 1-540 days
51
+ 4. Add conditions
52
+ 5. Preview size
53
+ 6. Save
54
+
55
+ ### Condition Types
56
+
57
+ #### Dimension Filters
58
+
59
+ Filter by user or event attributes:
60
+
61
+ ```
62
+ country == "United States"
63
+ device_category == "mobile"
64
+ platform == "web"
65
+ ```
66
+
67
+ **Available Dimensions:**
68
+ - User: city, country, device_category, platform
69
+ - Event: event_name, page_location, item_id
70
+ - Custom: Any registered custom dimensions
71
+
72
+ #### Metric Filters
73
+
74
+ Filter by quantitative measures:
75
+
76
+ ```
77
+ totalRevenue > 100
78
+ sessionCount >= 3
79
+ engagementTime > 60
80
+ ```
81
+
82
+ **Available Metrics:**
83
+ - Event count
84
+ - Session count
85
+ - Revenue
86
+ - Engagement time
87
+ - Conversion count
88
+
89
+ #### Event Conditions
90
+
91
+ Include/exclude based on events:
92
+
93
+ **Include users who:**
94
+ - Have triggered specific event
95
+ - Have NOT triggered event
96
+ - Triggered event with specific parameters
97
+
98
+ **Example:** Users who triggered `purchase` with `value > 50`
99
+
100
+ #### Sequence Conditions
101
+
102
+ Build audiences based on event order:
103
+
104
+ **Example:** Users who:
105
+ 1. Viewed product (view_item)
106
+ 2. Added to cart (add_to_cart)
107
+ 3. Did NOT complete purchase (within 7 days)
108
+
109
+ ### Membership Duration
110
+
111
+ | Duration | Use Case |
112
+ |----------|----------|
113
+ | 1-7 days | Short campaigns |
114
+ | 30-90 days | Remarketing |
115
+ | 540 days | Lifetime segments |
116
+
117
+ **How it works:**
118
+ - User enters when conditions met
119
+ - Stays for duration period
120
+ - Exits after duration (unless conditions still met)
121
+
122
+ ## Audience Examples
123
+
124
+ ### High-Value Customers
125
+
126
+ ```
127
+ Conditions:
128
+ - totalRevenue > 500 (lifetime)
129
+ - purchaseCount >= 3
130
+
131
+ Membership: 540 days
132
+ ```
133
+
134
+ ### Cart Abandoners
135
+
136
+ ```
137
+ Sequence:
138
+ 1. add_to_cart (within last 7 days)
139
+ 2. Did NOT: purchase
140
+
141
+ Membership: 7 days
142
+ ```
143
+
144
+ ### Engaged Mobile Users
145
+
146
+ ```
147
+ Conditions:
148
+ - deviceCategory == "mobile"
149
+ - sessionCount >= 5 (last 30 days)
150
+ - avgEngagementTime > 60 seconds
151
+
152
+ Membership: 30 days
153
+ ```
154
+
155
+ ### Product Category Viewers
156
+
157
+ ```
158
+ Event Condition:
159
+ - view_item (last 30 days)
160
+ - item_category == "Electronics"
161
+
162
+ Membership: 30 days
163
+ ```
164
+
165
+ ### Geographic Segment
166
+
167
+ ```
168
+ Conditions:
169
+ - country == "United States"
170
+ - region == "California"
171
+
172
+ Membership: 90 days
173
+ ```
174
+
175
+ ### Newsletter Subscribers
176
+
177
+ ```
178
+ Event Condition:
179
+ - sign_up (any time)
180
+ - method == "newsletter"
181
+
182
+ Membership: 540 days
183
+ ```
184
+
185
+ ## Predictive Audiences
186
+
187
+ GA4 can create audiences based on predicted user behaviour.
188
+
189
+ ### Available Predictions
190
+
191
+ | Prediction | Description |
192
+ |------------|-------------|
193
+ | Purchase probability | Likelihood to purchase (7 days) |
194
+ | Churn probability | Likelihood to not return (7 days) |
195
+ | Revenue prediction | Expected 28-day revenue |
196
+
197
+ ### Requirements
198
+
199
+ - 1,000+ users triggering target event (28 days)
200
+ - Sufficient historical data
201
+ - Model quality threshold met
202
+
203
+ ### Creating Predictive Audience
204
+
205
+ 1. Create New Audience
206
+ 2. Choose "Predictive"
207
+ 3. Select metric (purchase probability, etc.)
208
+ 4. Set threshold (e.g., > 50% purchase probability)
209
+ 5. Save
210
+
211
+ ### Use Cases
212
+
213
+ - Target likely purchasers with ads
214
+ - Re-engage likely-to-churn users
215
+ - Focus on high-revenue potential users
216
+
217
+ ## Audience Triggers
218
+
219
+ ### What are Triggers
220
+
221
+ Actions that fire when user enters audience.
222
+
223
+ ### Supported Actions
224
+
225
+ - Send event to GA4
226
+ - Create Google Ads remarketing list
227
+ - Send to Google Ads for targeting
228
+
229
+ ### Setup
230
+
231
+ 1. Create audience
232
+ 2. In settings, add trigger
233
+ 3. Configure action (event name, Ads account)
234
+ 4. Save
235
+
236
+ ### Use Cases
237
+
238
+ - Track when users become high-value
239
+ - Send conversion events to Ads
240
+ - Real-time remarketing lists
241
+
242
+ ## Exporting to Google Ads
243
+
244
+ ### Prerequisites
245
+
246
+ - Google Ads account linked
247
+ - Admin -> Product Links -> Google Ads Links
248
+ - Minimum audience size met
249
+
250
+ ### Minimum Sizes
251
+
252
+ | Region | Minimum Users |
253
+ |--------|---------------|
254
+ | Standard | 100 active |
255
+ | EEA/UK | 1,000 active |
256
+
257
+ ### Setup
258
+
259
+ 1. Link Google Ads account
260
+ 2. In audience, enable "Ads Personalisation"
261
+ 3. Audience appears in Ads within 24-48 hours
262
+
263
+ ### Export Destinations
264
+
265
+ - Google Ads (remarketing, targeting)
266
+ - Display & Video 360
267
+ - Search Ads 360
268
+
269
+ ## Analysing Audiences
270
+
271
+ ### Viewing Audience Data
272
+
273
+ **Reports -> Realtime:**
274
+ - Active users in audience
275
+
276
+ **Reports -> User Acquisition:**
277
+ - How audience members acquired
278
+
279
+ **Explorations -> Segment Overlap:**
280
+ - Compare audiences
281
+
282
+ **Explorations -> User Lifetime:**
283
+ - LTV of audience members
284
+
285
+ ### Audience Metrics
286
+
287
+ | Metric | Description |
288
+ |--------|-------------|
289
+ | Total Users | Current members |
290
+ | New Users (7/30 days) | Recent additions |
291
+ | User Growth | Trend over time |
292
+
293
+ ## Using Audiences in Explorations
294
+
295
+ ### As Segments
296
+
297
+ 1. Open Exploration
298
+ 2. Click "+" in Segments
299
+ 3. Select audience
300
+ 4. Apply to analysis
301
+
302
+ ### Comparing Audiences
303
+
304
+ 1. Add multiple audiences as segments
305
+ 2. View side-by-side comparison
306
+ 3. Analyse differences
307
+
308
+ ## Limits and Quotas
309
+
310
+ | Limit | Standard | 360 |
311
+ |-------|----------|-----|
312
+ | Audiences per property | 100 | 400 |
313
+ | Conditions per audience | 10 | 10 |
314
+ | Membership duration max | 540 days | 540 days |
315
+
316
+ ## Common Issues
317
+
318
+ ### Audience Size Too Small
319
+
320
+ **Causes:**
321
+ - Conditions too restrictive
322
+ - Low traffic volume
323
+ - Date range too narrow
324
+
325
+ **Solutions:**
326
+ 1. Broaden conditions
327
+ 2. Increase membership duration
328
+ 3. Wait for more traffic
329
+
330
+ ### Audience Not in Google Ads
331
+
332
+ **Causes:**
333
+ - Below minimum size
334
+ - Link not configured
335
+ - Ads personalisation disabled
336
+
337
+ **Solutions:**
338
+ 1. Check audience size
339
+ 2. Verify Google Ads link
340
+ 3. Enable Ads Personalisation
341
+
342
+ ### Stale Audience Data
343
+
344
+ **Cause:** Audiences update with delay
345
+
346
+ **Solution:** Wait 24-48 hours for updates
347
+
348
+ ## Best Practices
349
+
350
+ ### Naming Conventions
351
+
352
+ Use clear, descriptive names:
353
+ - "High-Value Customers - $500+"
354
+ - "Cart Abandoners - Last 7 Days"
355
+ - "Newsletter Subscribers"
356
+
357
+ ### Documentation
358
+
359
+ Document each audience:
360
+ - Purpose
361
+ - Conditions used
362
+ - Expected size
363
+ - Use cases
364
+
365
+ ### Regular Review
366
+
367
+ - Audit audiences quarterly
368
+ - Remove unused audiences
369
+ - Update conditions as needed
370
+
371
+ ## Quick Reference
372
+
373
+ ### Audience Limits
374
+
375
+ - Maximum: 100 audiences (standard)
376
+ - Membership: 1-540 days
377
+ - Export minimum: 100 users (1,000 EEA/UK)
378
+
379
+ ### Export Destinations
380
+
381
+ - Google Ads
382
+ - Display & Video 360
383
+ - Search Ads 360
384
+
385
+ ### Predictive Options
386
+
387
+ - Purchase probability
388
+ - Churn probability
389
+ - Revenue prediction