CommunityResearch & Data Analysisgithub.com

croct-tech/agent-skills

>- Use when connecting Croct to a third-party platform or migrating to Croct from another personalization or experimentation tool. Covers Storyblok (Optimize by Croct app, @croct/plug-storyblok, Storyblok withCroct, resolveContent, croct/plug-storyblok, CroctStoriesApi), Sanity and Strapi (slot fallback, dynamic zones, metadata.contentSource), Shopify Hydrogen storefront events, Shopify custom pixel (croctPixel, PUBLIC_CROCT_SHOPIFY_PIXEL, checkout and order tracking), VTEX, Google Tag Manager data layer, Microsoft Clarity tags, HubSpot forms (hbspt.forms.create, hs-form-event), firmographic providers 6sense, Demandbase, Clearbit Reveal, and ZoomInfo WebSights (firmographics attributes, account-based audiences in CQL), and migrations from Mutiny and Ninetailed (Experience component, Contentful sunset). Triggers include cdn.croct.io/plug-integration scripts, "personalize Storyblok blocks", "track Shopify checkout", "send VTEX events", "ABM personalization", "replace Mutiny".

What is agent-skills?

agent-skills is a Claude Code agent skill that >- Use when connecting Croct to a third-party platform or migrating to Croct from another personalization or experimentation tool. Covers Storyblok (Optimize by Croct app, @croct/plug-storyblok, Storyblok withCroct, resolveContent, croct/plug-storyblok, CroctStoriesApi), Sanity and Strapi (slot fallback, dynamic zones, metadata.contentSource), Shopify Hydrogen storefront events, Shopify custom pixel (croctPixel, PUBLIC_CROCT_SHOPIFY_PIXEL, checkout and order tracking), VTEX, Google Tag Manager data layer, Microsoft Clarity tags, HubSpot forms (hbspt.forms.create, hs-form-event), firmographic providers 6sense, Demandbase, Clearbit Reveal, and ZoomInfo WebSights (firmographics attributes, account-based audiences in CQL), and migrations from Mutiny and Ninetailed (Experience component, Contentful sunset). Triggers include cdn.croct.io/plug-integration scripts, "personalize Storyblok blocks", "track Shopify checkout", "send VTEX events", "ABM personalization", "replace Mutiny".

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/croct-tech/agent-skills/tree/HEAD/skills/croct-integrate-platforms

Installed? Explore more Research & Data Analysis skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Croct platform integrations and migrations

Every integration here sits on top of a working Croct SDK. They either feed data in (events, profile attributes), send Croct data out (Clarity), or render slot content inside a platform's content (CMS, HubSpot form ID). Migrations replace another tool's flags or experiences with slots.

Pick the integration

Platform / goalWhat the integration doesInstall methodReference
StoryblokOptimize app links blocks to slots; SDK swaps linked blocks during story fetches (JS, PHP)Storyblok app + croct init or @croct/plug-storyblok / croct/plug-storyblokstoryblok.md
SanitySlot fetch with Sanity content as fallback; no Croct packagecroct init + fetchContentheadless-cms.md
StrapiMaps dynamic zone components to slots via a mapping slotcroct init + fetchContentheadless-cms.md
Shopify HydrogenAutomatic storefront events, customer identification; SDK usage lives in the croct-integrate-sdk skillcroct init (Hydrogen SDK)ecommerce.md
Shopify checkout / orders (Liquid or Hydrogen)Custom pixel tracks checkoutStarted, orderPlaced, plus custom eventsStorefront plugin + Shopify custom pixelecommerce.md
Shopify Liquid themeJavaScript SDK for content; GTM integration for events; pixel for checkoutScript tagsecommerce.md
VTEX Store Framework (VTEX IO)Forwards store events as goals and e-commerce events; enriches profilesvtex.js script or GTMecommerce.md
Google Tag Manager / GA4 data layerForwards recommended data layer events as goals and e-commerce eventsgoogle-tag-manager.js script or GTManalytics-and-crm.md
Microsoft ClarityTags Clarity sessions with Croct experiences, audiences, experiment variantsclarity.js script or GTManalytics-and-crm.md
HubSpot formsSubmission goals, profile enrichment, form ID served from a slot for testsCode around the HubSpot embedanalytics-and-crm.md
6sense, DemandbaseWrite rich firmographics attributes to the profileCroct script or GTMfirmographics.md
Clearbit Reveal, ZoomInfo WebSightsWrite company attributes to the profile via code you addGTM Custom HTMLfirmographics.md
Migrating from Mutiny, NinetailedConcept mapping and step-by-step replacement with slots, audiences, experimentscroct init + per-area slotsmigrations.md

Read only the reference for the platform at hand. If the platform is not listed, the docs have no dedicated integration: say so and check https://docs.croct.com/llms.txt before improvising.

Cross-cutting rules

  1. SDK first. Every integration requires the Croct SDK on the page or server. Integration scripts do nothing without it. Set it up with croct init or see the croct-integrate-sdk skill.
  2. Prefer croct init for Storyblok, Sanity, Strapi, Hydrogen, and migrations. It detects the stack and wires the SDK (and for Storyblok JS, wraps storyblokInit with withCroct). Use the manual steps only when the user asks or the CLI cannot wire it (for example, PHP Storyblok without a supported framework).
  3. CMS content is always the fallback. Pass the existing CMS or hard-coded content as fallback so failed or slow requests render today's page. For Sanity, Strapi, and Ninetailed, ask the user where default content should live (Croct, recommended, or the CMS via metadata.contentSource === 'slot'). See headless-cms.md.
  4. Croct components mirror the CMS schema with the same attribute names, so slot content and CMS content are interchangeable in the same rendering component.
  5. Track goals before publishing any experience or experiment, or early data shows exposures with no conversions.
  6. Firmographic data is not available on the first pageview. Design account-based experiences to activate on later pageviews; use campaign, referrer, or location for the first impression.
  7. Custom attributes in CQL drop the custom. prefix: custom.firmographics.profile.industry is user's firmographics's profile's industry. Profiles allow at most 10 custom attributes. For anything beyond these examples, see the croct-cql skill.
  8. Storyblok specifics: Optimize requires the Scale plan and Storyblok vendor approval (via Croct support). Table and reference fields cannot be personalized.

CDN integration scripts

All load from https://cdn.croct.io/plug-integration/:

ScriptWhereLoad timing
google-tag-manager.js<head> or <body>, or GTMAny; replays the data layer
clarity.js<head> or <body>, or GTMAny; waits for Clarity
vtex.js<head> or <body>, or GTMAs early as possible; earlier events are lost
6sense.js, demandbase.js<head> or <body>, or GTMWaits for the provider to identify the visitor
shopify-pixel.jsLiquid layout/theme.liquid before </head>, with deferAny; registers with the SDK when it loads
shopify-pixel-tracker.jsImported inside the Shopify custom pixeln/a

GTM tag recipe (relay to the user)

For any script above offered "via GTM": Tags > New; name it (for example, Send data layer events to Croct); tag type Custom HTML; paste the <script src="..."> tag; trigger Initialization - All Pages; Save, then Submit to publish the container.

Workflow

  1. Identify the platform and goal from the table; open its reference.
  2. Confirm the prerequisites listed there (account, SDK, provider tag, plan).
  3. Make the code changes. Leave dashboard steps (Storyblok app, Shopify admin, GTM, Croct admin app) to the user as a concise checklist; the agent cannot perform them.
  4. Give the user the verification steps from the reference.

Stop and ask

  • Which SDK or framework the site uses, if the repository does not make it obvious.
  • For CMS integrations and Ninetailed: whether default content should live in Croct or the CMS.
  • For the Shopify pixel: whether it should run for all visitors or only with analytics consent. This is a legal decision for the user.
  • For firmographics: which provider they license. Do not add provider tags they do not have.

Don't

  • Don't invent attribute names for 6sense or Demandbase; use the tables in the reference.
  • Don't try to track Shopify checkout with the SDK; checkout runs no storefront scripts. Use the pixel.
  • On Hydrogen, don't expect the Shopify pixel to work on localhost, Oxygen previews, or a checkout domain that is not a subdomain of the storefront (the docs state this caveat for Hydrogen).
  • Don't use the VTEX script for FastStore; use the GTM integration.
  • Don't import audiences from Mutiny or Ninetailed; the docs say they are rewritten in CQL.
  • Don't migrate a tool the docs have no migration guide for (only Mutiny and Ninetailed exist); say so and check https://docs.croct.com/llms.txt first.

Live docs

  • Index: https://docs.croct.com/llms.txt
  • Any page as markdown: append .md, e.g. https://docs.croct.com/immersion/integrations/ecommerce/vtex.md
  • Search: https://docs.croct.com/api/search.md?term=<terms>

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

croct-tech/agent-skills

>- Use when writing, reading, reviewing, or debugging Croct's Contextual Query Language (CQL): audience criteria, `croct.evaluate()` / `useEvaluation` / `<Personalization query>` / Next.js `cql` tag queries, Evaluation API `query` bodies (`/client/web/evaluate`, `/external/web/evaluate`), and dynamic content values (`"type": "dynamic"`, `"expression"`). Covers context variables (user, session, page, location, campaign, cart, device, browser, context, now/today), data types and conversions, accessors and selectors (`'s`, `property X of`, `[1st]`, `[*]`, `[...]`), tests (`is`, `matches`, `is like`, `contains either`, `is between`, `is defined`, `is returning`), quantifiers (`some ... satisfies`), macros, modifiers, event expressions (`user has viewed a page`, `user has abandoned a cart`, `user has completed goal`), audience estimation, and recipes. Triggers: "write an audience", "target mobile users in New York", "CQL syntax error", "audience never matches", "unavailable estimate".

croct-tech/agent-skills

>- Use when installing or using a Croct SDK in application code: rendering slot content, evaluating CQL queries, server or client fetching, prerendering, identifying users, app ID / API key env vars, testing, or debugging. Covers JavaScript (`@croct/plug`, `croct.fetch`, `croct.evaluate`), React (`@croct/plug-react`, `<CroctProvider>`, `useContent`, `<Slot>`, `useEvaluation`, `useCroct`), Next.js (`@croct/plug-next`, `fetchContent`, `cql`, middleware/proxy, `NEXT_PUBLIC_CROCT_APP_ID`, `CROCT_API_KEY`), Vue (`@croct/plug-vue`), Nuxt (`@croct/plug-nuxt`), Shopify Hydrogen (`@croct/plug-hydrogen`), PHP (`croct/plug-php`), Laravel, Symfony, and Drupal. Triggers: slot IDs like `home-hero@1`, `SlotContent`, "Croct is not plugged in", "initial content is required for server-side rendering", "Did you forget to configure Croct's middleware?", CORS errors.

croct-tech/agent-skills

>- Use when designing or changing Croct content models: regular vs union components, what becomes a component, slot, structure, or primitive attribute; writing component schema JSON (`structure`, `union`, `reference`, `text`, `number`, `boolean`, `list`, `@croct/file`, `@croct/richText` rich text, `format`, `choices`, `optional`, `private`, `position`); writing content definition JSON (`static`/`dynamic` values, `nullable`, `default`, `{{placeholder}}` paths); slot default, localized, experience, experiment, or content group content; schema limit errors (30 attributes, 6 nesting levels, 10 union members, complexity score 50); component versioning and breaking changes (`home-hero@2`); refactoring (duplicate and modify, duplicate and replace, flatten and merge); Markdown in text attributes with `@croct/md-lite`. Phrasings: "model content for a hero", "add an attribute to the banner component", "support variations", "component is too complex", "localize the hero", "translations", `preferredLocale`.

croct-tech/agent-skills

>- Use when planning or implementing personalization or A/B testing with Croct: creating an experience (audience, slots, content, priority, scheduling, drafts), adding an experiment (A/B/n, primary goal ID, traffic allocation, variants, cross-device consistency), wiring the code it needs (slots, `croct.track('goalCompleted', {goalId})`, `orderPlaced`, `leadGenerated`, `userSignedUp`), server-side feature-flag experiments, redirect experiments, personalization recipes (UTM campaigns, ABM, search terms, location, free shipping, interests, blog readers, leads, customers, organic intent, HubSpot forms), or reading the experience, experiment, application, or workspace dashboards (probability to be best, potential loss, "Experiment in progress", "Recommended winner", "No clear winner", "Track your goal"). Phrasings: "personalize the hero for LinkedIn visitors", "A/B test this CTA", "which variant won?", "why does my experiment show no conversions?".

Related Skills