Loading...
Loading...
Guidance for implementing Knock in-app UI in a web app, with a focus on setting up, rendering, and debugging Knock guides in React.
npx skill4agent add knocklabs/skills in-app-ui-<framework>KnockProviderKnockGuideProvideruseGuideuseGuidesFramework scope: right now this skill only covers React (). If the user is building with Vue, Svelte, plain JS, React Native, iOS, or Android, stop and ask how they'd like to proceed — do not adapt the React rules to another client SDK on your own.@knocklabs/react
rules/feeds-vs-guides.mdKnockProviderrules/setup-guide-providers-react.mdknock whoamiknock loginknock whoamiknock environment listdevelopmentproduction<env-slug>--environment <env-slug>knockchannelIdknock channel list --json | jq -r '.[] | select(.key == "knock-guide") | .id'--environmentchannelIdapiKeyuser.idapiKeychannelIdKnockProviderKnockGuideProviderreadyToTargetknock guide list --environment <env-slug> --jsonkeynameschema_key"changelog-card"knock message-type get <schema_key> --environment <env-slug> --jsonknock guide newknock guide push --environment <env-slug>cardbannermodalrules/rendering-guides-react.mdpk_rules/rendering-guides-react.mdknock guide list --environment <env-slug> --jsonkeyschema_keyknock message-type get <schema_key> --environment <env-slug> --jsonuseGuideuseGuidesmarkAsSeenmarkAsInteractedmarkAsArchivedrules/debugging-guides.md?knock_guide_toolbar=truerules/feeds-vs-guides.mdrules/setup-guide-providers-react.mdKnockProviderKnockGuideProviderrules/rendering-guides-react.mduseGuideuseGuidesrules/debugging-guides.md<KnockProvider
apiKey={process.env.NEXT_PUBLIC_KNOCK_API_KEY}
user={{ id: currentUser.id }}
>
<KnockGuideProvider
channelId={process.env.NEXT_PUBLIC_KNOCK_GUIDE_CHANNEL_ID}
readyToTarget
listenForUpdates
>
{children}
</KnockGuideProvider>
</KnockProvider>knock whoamiknock loginknock environment listproductiondevelopment--environment <env-slug>knockdevelopmentapiKeypk_...user.idchannelIdknock channel list--environmentknock channel list --json | jq -r '.[] | select(.key == "knock-guide") | .id'knock-guidein_app_guiderules/setup-guide-providers-react.mduseGuide({ type })useGuide({ key })useGuides({ type })useGuideContext()step.markAsSeen()useEffectstepstep.markAsInteracted()step.markAsArchived()?knock_guide_toolbar=trueKnockProviderreadyToTargetuseGuide<T>markAsSeenmarkAsInteractedmarkAsArchived