@getvitops/cli 8.3.0-alpha.3 → 8.3.0-alpha.5
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/CHANGELOG.md +51 -0
- package/dist/cli.mjs +218 -29
- package/dist/cli.mjs.map +1 -1
- package/package.json +3 -3
- package/skill/SKILL.md +5 -54
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getvitops/cli",
|
|
3
|
-
"version": "8.3.0-alpha.
|
|
3
|
+
"version": "8.3.0-alpha.5",
|
|
4
4
|
"description": "CLI for the Vitops design-system generator: generate, init, and validate a design-system.json.",
|
|
5
5
|
"homepage": "https://docs.vitops.ca",
|
|
6
6
|
"bugs": "https://github.com/getvitops/design-system/issues",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"access": "public"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@getvitops/generator": "8.3.0-alpha.
|
|
33
|
-
"@getvitops/utils": "8.3.0-alpha.
|
|
32
|
+
"@getvitops/generator": "8.3.0-alpha.5",
|
|
33
|
+
"@getvitops/utils": "8.3.0-alpha.5"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {},
|
|
36
36
|
"engines": {
|
package/skill/SKILL.md
CHANGED
|
@@ -5,12 +5,10 @@ description: >-
|
|
|
5
5
|
styling or authoring pages or components (choosing utility/pattern classes,
|
|
6
6
|
colours, spacing, typography), when editing design-system.json (tokens,
|
|
7
7
|
palette, patterns, scales, animations), when generating output (vitops
|
|
8
|
-
generate --format tailwind|css|bricks), when asking what the design system
|
|
9
|
-
provides on a given platform (Tailwind vs Bricks vs standalone CSS)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
notifications, the generated privacy policy / terms / cookie notice, and
|
|
13
|
-
Google Search Console onboarding or post-deploy indexing.
|
|
8
|
+
generate --format tailwind|css|bricks), or when asking what the design system
|
|
9
|
+
provides on a given platform (Tailwind vs Bricks vs standalone CSS). Consent
|
|
10
|
+
gating, ad tracking, legal documents and Search Console have their own skills
|
|
11
|
+
or `vitops docs` topics.
|
|
14
12
|
---
|
|
15
13
|
|
|
16
14
|
# Vitops design system
|
|
@@ -278,51 +276,4 @@ where no provider covers the family.
|
|
|
278
276
|
refresh the AGENTS.md pointer block. The links point into the installed package and
|
|
279
277
|
survive version bumps; re-run only if they were deleted.
|
|
280
278
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
If the site has a consent gate, **every** non-essential third party goes through it. Run
|
|
284
|
-
`vitops docs consent` before wiring one up — the failure modes here are silent and legal.
|
|
285
|
-
The four that bite:
|
|
286
|
-
|
|
287
|
-
- **A gated tag must render inert.** `type="text/plain"` + `data-consent="<category>"` +
|
|
288
|
-
the URL on `data-src` (never `src`), plus `data-consent-cookies` naming what it sets so
|
|
289
|
-
a revoke can clear them. Given a live `src` the browser fetches the library immediately
|
|
290
|
-
and the gate is decorative — an undecided visitor's page must issue **no** third-party
|
|
291
|
-
request.
|
|
292
|
-
- **Use `require()`, not `granted()`, when you want permission.** `granted()` is passive:
|
|
293
|
-
it never raises the banner, so on a site where nothing else demands that category it is a
|
|
294
|
-
**permanent silent no-op** and your write never happens. `require()` registers the demand,
|
|
295
|
-
which is what makes the banner appear. `request()` is the promise form.
|
|
296
|
-
- **No `window.vitopsConsent` means the site has no gate — store freely.** It does not mean
|
|
297
|
-
denied. (A synchronous stub in `<head>` covers the window before the runtime loads, so
|
|
298
|
-
absence is reliable. Listen for the `vitops:consent` event rather than calling
|
|
299
|
-
`subscribe()`, which the stub lacks.)
|
|
300
|
-
- **Patch exactly the categories you put on screen.** `acceptAll()` / `rejectAll()` mean
|
|
301
|
-
literally every optional category — using one to answer a single-category prompt records
|
|
302
|
-
consent nobody gave. "Not asked" is a third value (`null`), distinct from declined, and
|
|
303
|
-
only it can be re-prompted.
|
|
304
|
-
|
|
305
|
-
The banner is **demand-driven**: it appears when something actually asks, not on first visit.
|
|
306
|
-
A site whose only analytics provider is cookieless never interrupts anyone. Don't "fix" a
|
|
307
|
-
missing banner by forcing it to show — find out what should have demanded a category.
|
|
308
|
-
|
|
309
|
-
Whatever loads must match what the **generated cookie notice** discloses; the Astro
|
|
310
|
-
integration warns when they disagree, and that is a compliance defect, not a doc nit.
|
|
311
|
-
|
|
312
|
-
## Conversion tracking
|
|
313
|
-
|
|
314
|
-
`vitops docs tracking`. `site.tracking.enabled` captures ad click IDs and UTMs from the
|
|
315
|
-
landing URL into the first-party `_ac` cookie; a conversion route reads it back and notifies
|
|
316
|
-
via `site.notifications`. Points worth holding:
|
|
317
|
-
|
|
318
|
-
- `_ac` is a 90-day identifier, so it waits on `marketing` (or `site.tracking.category`) and
|
|
319
|
-
the capture **`require()`s** it — see above.
|
|
320
|
-
- Only an arrival actually carrying a click ID or UTM asks; organic visitors are never
|
|
321
|
-
interrupted.
|
|
322
|
-
- The read is synchronous and the _write_ is what waits — the click ID exists only in the
|
|
323
|
-
landing URL, so it cannot be deferred.
|
|
324
|
-
- Only the `email` channel (Cloudflare Email Sending) is implemented. Its sending domain must
|
|
325
|
-
be onboarded with `wrangler email sending enable <domain>` or every send fails; the tool
|
|
326
|
-
surfaces that error verbatim rather than as "send failed".
|
|
327
|
-
- `--dry`-style planning is pure and reports **why** anything was skipped. A silently unsent
|
|
328
|
-
notification is indistinguishable from no conversion, so never leave one unexplained.
|
|
279
|
+
Consent gating of third-party tags: the `vitops-consent` skill. Ad pixels and conversions: `vitops-ads`.
|