medusa — правило для Cursor: сборка приложений на Medusa
Правило задаёт Cursor рамки для кода на Medusa: воркфлоу, модели данных, сервисы и админка пишутся по одному шаблону.
.cursor/rules/medusa.mdcЧто делает medusa
Файл подключается к Cursor как правило и срабатывает на файлы **/*.tsx, **/*.ts, src/**/*.ts, src/**/*.tsx, src/**/*.js, src/**/*.jsx. Автоприменение выключено, так что подхватывается оно по совпадению с этими путями, а не всегда.
Внутри — набор требований по четырём областям. В общих: ошибки бросать через MedusaError, данные брать через Query, не тянуть псевдонимы типов при импорте. В воркфлоу: определять их через @medusajs/framework/workflows-sdk, каждому воркфлоу — свой шаг, трансформации через transform, условия через when, шаги вызывать без await, а саму функцию воркфлоу не делать асинхронной. Модели данных описываются утилитой model из @medusajs/framework/utils: имена в camelCase, поля в snake case, единственный id — первичный ключ через .primaryKey(), остальные идентификаторы как text. Сервисы с моделями наследуют MedusaService, методы асинхронные. В админке запросы идут через JS SDK, стили — на TailwindCSS.
Правило рассчитано на проект, где уже стоит Medusa и принят её Workflow SDK. Если воркфлоу в коде пишутся иначе, часть требований придётся переписать под себя — иначе Cursor будет спорить с существующим стилем.
Какие задачи решает
- писать воркфлоу и шаги по правилам Medusa Workflow SDK
- описывать модели данных через утилиту
model - наследовать сервис от
MedusaService - бросать ошибки через
MedusaErrorвместо стандартных - делать запросы в админке через JS SDK
Примеры запросов агенту
- Создай воркфлоу для оформления заказа с шагом проверки остатков
- Опиши модель данных для склада с полями в snake case
- Перепиши сервис модуля так, чтобы он наследовал
MedusaService
Как установить medusa
Вручную: положить файлы
.cursor/rules/medusa.mdcВо frontmatter: description, globs, alwaysApply
Вручную: положить файлы
.claude/rules/medusa.mdПоле paths во frontmatter ограничивает файлы: globs из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.github/instructions/medusa.instructions.mdПоле applyTo задаёт, к каким файлам применять: globs из источника → applyTo
Вручную: положить файлы
.devin/rules/medusa.mdВручную: положить файлы
.clinerules/medusa.mdПо шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules
Вопросы о medusa
Как установить medusa в Cursor?
Создайте файл .cursor/rules/medusa.mdc и вставьте в него содержимое правила.
Что делает правило medusa?
Задаёт Cursor соглашения для кода на Medusa: воркфлоу, модели данных, сервисы и кастомизация админки.
На какие файлы распространяется правило?
На **/*.tsx, **/*.ts, src/**/*.ts, src/**/*.tsx, src/**/*.js, src/**/*.jsx. Автоприменение выключено.
Исходный текст
medusa.mdc · CC0-1.0
--- description: "Medusa rules and best practices. These rules should be used when building applications with Medusa." globs: **/*.tsx, **/*.ts, src/**/*.ts, src/**/*.tsx, src/**/*.js, src/**/*.jsx alwaysApply: false --- You are an expert senior software engineer specializing in modern web development, with deep expertise in TypeScript, Medusa, React.js, and TailwindCSS. # Medusa Rules ## General Rules - Don't use type aliases when importing files. - When throwing errors, always throw `MedusaError`. - Always use Query to retrieve data. ## Workflow Rules - When creating a workflow or step, always use Medusa's Workflow SDK `@medusajs/framework/workflows-sdk` to define it. - When creating a feature in an API route, scheduled job, or subscriber, always create a workflow for it. - When creating a workflow, always create a step for it. - In workflows, use `transform` for any data transformation. - In workflows, use `when` to define conditions. - Don't use `await` when calling steps. - In workflows, don't make the workflow function async. - Don't add typing to compensation function's input. - Only use steps in a workflow. ## Data Model Rules - Use the `model` utility from `@medusajs/framework/utils` to define data models. - Data model variables should be camelCase. Data model names as passed to `model.define` should be snake case. - When adding an `id` field to a data model, always make it a primary key with `.primaryKey()`. - A data model can have one `id` only, other IDs should be `text` instead. - Data model fields should be snake case. ## Service Rules - When creating a service, always make methods async. - If a module has data models, make the service extend `MedusaService`. ## Admin Customization Rules - When sending requests in admin customizations, always use Medusa's JS SDK. - Use TailwindCSS for styling. # Additional Resources - [Medusa Documentation](https://docs.medusajs.com/llms-full.txt)
© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules