.cursor/skills/develop-b24-frontend/SKILL.md
Develop frontend applications for Битрикс24 using Nuxt 3, Битрикс24 UI Kit, and JS SDK. Use this skill when you need to create pages, components, or interact with Битрикс24 API from the frontend.
npx skillsauth add rustams/inbound develop-b24-frontendInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
ALWAYS use B24 UI Kit (@bitrix24/b24ui-nuxt) and b24icons (@bitrix24/b24icons-vue) for all design, layout, styling, and UI components. Do NOT use Nuxt UI, Tailwind UI, custom design systems, or other component libraries — even when the task says "improve design" or "make it prettier". B24 components ensure consistency with the Битрикс24 portal and correct iframe behavior.
The frontend is built with Nuxt 3 and uses @bitrix24/b24ui-nuxt (UI Kit) and @bitrix24/b24jssdk-nuxt (JS SDK).
frontend/app/pages/: Application pages (must end with .client.vue for client-side rendering).frontend/app/components/: Reusable components.frontend/app/stores/: Pinia stores for state management.frontend/app/composables/: Shared logic (e.g., useApiStore, useAppInit, useSetupHelpers).ALWAYS use B24 prefixed components from @bitrix24/b24ui-nuxt. Do NOT use standard HTML elements or other UI libraries if a B24 component exists.
<template>
<B24App> <!-- Mandatory wrapper -->
<B24Card>
<template #header>
<h3 class="text-lg font-semibold">Title</h3>
</template>
<B24Form :state="state" @submit="onSubmit">
<B24FormField label="Name" name="name" required>
<B24Input v-model="state.name" />
</B24FormField>
<B24Button type="submit" color="air-primary" :loading="isLoading">
Save
</B24Button>
</B24Form>
</B24Card>
</B24App>
</template>
<B24Button color="air-primary" /><B24Input />, <B24Select />, <B24Textarea /><B24Card>, <B24Container>, <B24SidebarLayout><B24Toast /> (use useToast()), <B24Modal />, <B24Alert />Use the SDK to interact with Битрикс24.
// In a component or composable
const { $initializeB24Frame } = useNuxtApp()
const $b24 = await $initializeB24Frame()
// Single method
const result = await $b24.callMethod('crm.deal.get', { id: 123 })
// Batch method
const batch = await $b24.callBatch({
deals: { method: 'crm.deal.list', params: { select: ['ID', 'TITLE'] } },
users: { method: 'user.get', params: { ID: 1 } }
})
const data = batch.getData()
// Open slider
const url = $b24.slider.getUrl('/crm/deal/details/123/')
await $b24.slider.openPath(url)
// Select user
const user = await $b24.dialog.selectUser()
Use stores for API interaction and global state.
// stores/api.ts
const apiStore = useApiStore()
await apiStore.init($b24) // Initialize with B24 frame
const data = await apiStore.getList() // Call backend API
$api (wrapper around $fetch with JWT).apiStore and useAppInit.If full update of the media template succeeds on a second run but custom stages (e.g. MEDIA_EXPIRING) are missing or warnings appear on the first run on a new smart process, treat this as a backend CRM stage sync issue, not a missing frontend snapshot. Typical Bitrix message (RU): cannot create an intermediate stage after a successful one — caused by SORT of template intermediates vs portal SUCCESS/FAIL SORT, fixed in Python (media_template_apply._apply_stages clamp). See develop-b24-python skill section CRM smart-process stages (media template installer) for cause, code locations, tests, and Docker logging notes. When investigating, use API response warnings / backend logs rather than guessing empty template data in the UI alone.
.client.vue as the app runs in an iframe.<B24App>.try/catch and useToast() to show errors.@bitrix24/b24icons-vue.tools
This skill should be used when the user asks to "design agent tools", "create tool descriptions", "reduce tool complexity", "implement MCP tools", or mentions tool consolidation, architectural reduction, tool naming conventions, or agent-tool interfaces.
development
This skill should be used when the user asks to "start an LLM project", "design batch pipeline", "evaluate task-model fit", "structure agent project", or mentions pipeline architecture, agent-assisted development, cost estimation, or choosing between LLM and traditional approaches.
development
PM skill for Claude Code, Codex, Cursor, and Windsurf. Diagnoses SaaS metrics, critiques PRDs, plans roadmaps, runs discovery, coaches PM career transitions, and pressure-tests AI product decisions. Six knowledge domains, 12 templates, 30+ frameworks, and an opinionated interaction style that labels assumptions and names tradeoffs.
development
Understand the Битрикс24 Starter Kit project structure. Use this skill to find where specific code (frontend, backend, infrastructure) is located.