Community연구 & 데이터 분석github.com

croct-tech/agent-skills

Croct를 타사 플랫폼에 연결하거나 다른 개인화/실험 도구에서 Croct로 마이그레이션할 때 사용합니다. Storyblok, Shopify, VTEX, GTM, HubSpot 등 다양한 통합과 마이그레이션을 지원합니다.

agent-skills란 무엇인가요?

이 스킬은 Croct 개인화 플랫폼을 다양한 타사 서비스 및 CMS와 통합하거나 기존 도구에서 Croct로 마이그레이션하는 과정을 안내합니다. Storyblok, Sanity, Strapi, Shopify, VTEX, Google Tag Manager, Microsoft Clarity, HubSpot, 6sense, Demandbase, Clearbit Reveal, ZoomInfo 등 폭넓은 플랫폼을 지원하며, Mutiny나 Ninetailed에서의 마이그레이션도 포함됩니다. 각 통합은 Croct SDK가 사전에 설정되어 있어야 하며, CMS의 기존 콘텐츠를 fallback으로 사용하여 장애에도 안전하게 동작합니다. Storyblok Optimize 앱, Shopify Hydrogen SDK, VTEX 스토어 이벤트, GTM 데이터 레이어 등 각 플랫폼에 특화된 설치 방법과 참조 문서를 제공합니다. 또한, 커스텀 이벤트 추적, 계정 기반 개인화(ABM)를 위한 firmographic 속성 설정, 그리고 마이그레이션 시 개념 매핑과 단계별 대체 방법을 상세히 설명합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/croct-tech/agent-skills/tree/HEAD/skills/croct-integrate-platforms

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

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?".

관련 스킬