
medusajs-developer
Specialized agent for MedusaJS v2.15+ development including custom modules, API routes, data models, workflows, scheduled jobs, and third-party integrations. Provides expert guidance on commerce platform architecture and plugin development.
- Installs
- 73
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/greedychipmunk/agent-skills --skill medusajs-developer- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads medusajs-developer automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
MedusaJS Developer Agent Skill
An expert agent specializing in MedusaJS v2.15+ development, focusing on building scalable e-commerce solutions with custom modules, API integrations, and third-party plugins.
Core Capabilities
1. Custom Module Development
- Data Models: Create and manage data models using MedusaJS DML
- Module Services: Implement service layers with automatic CRUD operations
- Module Configuration: Set up proper module structure and exports
- Database Migrations: Generate and manage database schema changes
2. API Route Development
- Custom Endpoints: Create REST API routes in
src/api/[route-name]/route.ts - HTTP Methods: Implement GET, POST, PUT, DELETE handlers
- Request/Response Handling: Manage MedusaRequest and MedusaResponse objects
- Authentication: Integrate with MedusaJS auth systems
3. Commerce Module Integration
- 18 Built-in Modules: Work with API Key, Auth, Cart, Customer, Order, Payment, Product, Pricing, Promotion, Tax, and more
- Module Links: Create relationships between different modules
- Custom Fields: Extend existing modules with additional data fields
- Module Composition: Combine multiple modules for complex workflows
4. Workflow & Automation
- Scheduled Jobs: Create recurring tasks with cron expressions
- Event Handling: Implement subscribers for asynchronous operations
- Business Logic: Orchestrate complex commerce workflows
- Background Processing: Handle long-running operations efficiently
5. Third-Party Integrations
- Payment Providers: Integrate custom payment gateways
- External APIs: Connect with shipping, tax, and inventory services
- Webhooks: Handle incoming webhooks from external systems
- Data Synchronization: Sync data with external platforms
Medusa v2.15+ Updates
Auth & Security
- Medusa v2.15+ includes built-in MFA primitives for auth flows.
- Prefer module-managed TOTP, SMS, and recovery code challenges instead of rolling your own OTP storage.
- Wire MFA into the Auth module by treating it as part of sign-in, enrollment, challenge, verify, and recovery flows.
// Pseudocode: branch on auth result and ask the Auth module to challenge/verify MFA
const result = await authModule.authenticate(credentials)
if (result.mfa_required) {
await authModule.mfa.challenge({
user_id: result.user_id,
method: "totp", // "sms" | "recovery_code"
})
}
Promotions
- Promotion workflows can consume context hooks for conditional application.
- Pass contextual data such as
customer_group,sales_channel_id,region, or campaign metadata through workflows so promotion rules can evaluate it. - Example: apply a wholesale promotion only when
context.customer_group === "wholesale".
Catalog Search
- Products now support native SKU search.
- Use SKU filters in product search requests when looking up variants by merchant-facing or fulfillment-facing identifiers.
- Example: search by SKU and keyword together to narrow a catalog query.
GET /store/products?query=hoodie&sku=HD-001-BLK-M
Cloud & Platform
- Use
mcloud proxyfor secure local-to-cloud tunneling when debugging Cloud environments or testing webhooks against a local app. - Use it when a third-party service needs a public callback URL but you want to keep the backend local.
Data Model Notes
- Float attributes are now aligned in the data model; prefer the updated attribute types when modeling custom number fields.
Critical Migration Notes
- Medusa v2.15.2 includes the MikroORM v6.6.12 security update and fixes the v6.13.6 snapshot regression.
- If you're on v2.13.6+, upgrade before running production migrations and clean stale snapshots first:
npx medusa db:migrate --clean-snapshots
- Pin all
@medusajs/*packages to the same release line during the upgrade and avoid partial version drift.
Development Patterns
Module Structure
// src/modules/my-module/models/post.ts
import { model } from "@medusajs/framework/utils"
const Post = model.define("post", {
id: model.id().primaryKey(),
title: model.text(),
content: model.text().nullable(),
published: model.boolean().default(false)
})
export default Post
API Route Example
// src/api/posts/route.ts
import { MedusaRequest, MedusaResponse } from "@medusajs/framework/http"
export const GET = async (req: MedusaRequest, res: MedusaResponse) => {
const postService = req.scope.resolve("postService")
const posts = await postService.listPosts()
res.json({ posts })
}
export const POST = async (req: MedusaRequest, res: MedusaResponse) => {
const postService = req.scope.resolve("postService")
const post = await postService.createPost(req.body)
res.json({ post })
}
Scheduled Job Example
// src/jobs/sync-inventory.ts
import { MedusaContainer } from "@medusajs/framework/types"
export default async function syncInventoryJob(container: MedusaContainer) {
const inventoryService = container.resolve("inventoryService")
await inventoryService.syncWithExternalProvider()
}
export const config = {
name: "sync-inventory",
schedule: "0 */6 * * *" // Every 6 hours
}
Best Practices
1. Project Setup
- Use MedusaJS CLI for project initialization
- Follow TypeScript best practices
- Implement proper error handling
- Set up comprehensive testing
2. Module Design
- Keep modules focused on single domains
- Use clear naming conventions
- Implement proper validation
- Document module interfaces
3. API Design
- Follow RESTful conventions
- Use proper HTTP status codes
- Implement pagination for list endpoints
- Validate input data thoroughly
4. Performance Optimization
- Use database indexes appropriately
- Implement caching strategies
- Optimize database queries
- Handle large datasets efficiently
5. Integration Patterns
- Use environment variables for configuration
- Implement retry mechanisms for external calls
- Handle rate limiting gracefully
- Log integration activities properly
Common Tasks
Creating a New Module
- Create module directory structure
- Define data models with proper relationships
- Implement service layer with business logic
- Generate and run database migrations
- Create API routes for module operations
- Add comprehensive tests
Setting Up Third-Party Integration
- Install necessary dependencies
- Configure environment variables
- Create service for external API communication
- Implement webhook handlers if needed
- Add error handling and logging
- Test integration thoroughly
Implementing Custom Workflow
- Identify business process steps
- Create necessary data models
- Implement workflow orchestration
- Add event handlers for state changes
- Create monitoring and alerting
- Document workflow behavior
Troubleshooting
Common Issues
- Migration Failures: Check model definitions and database constraints
- Service Resolution: Verify module exports and dependency injection
- API Errors: Validate request/response formats and authentication
- Performance Issues: Analyze database queries and implement caching
Debugging Strategies
- Use MedusaJS debugging tools
- Check application logs for errors
- Verify database schema matches models
- Test API endpoints with proper headers
- Monitor external service responses
Code Templates
This skill includes production-ready code templates in the templates/ directory based on official MedusaJS documentation and best practices.
Available Templates
module-complete.ts
Complete custom module structure with:
- Multiple data models with various property types
- One-to-many and many-to-many relationships
- Main service with custom methods
- Additional services with dependency injection
Use case: Creating custom modules (Blog, Brand, Restaurant, etc.)
api-route-complete.ts
Complete REST API route with:
- GET, POST, PUT, DELETE handlers
- Zod validation schemas
- Authentication and validation middlewares
- Error handling and logging
- Query integration for related data
Use case: Exposing module functionality via API endpoints
workflow-complete.ts
Complete workflow with:
- Multiple steps with compensation functions
- Data transformation between steps
- Conditional execution
- Integration with Medusa modules
Use case: Complex business logic with rollback requirements
subscriber-complete.ts
Event subscriber patterns:
- Basic event handling
- Workflow execution in subscribers
- Multi-event subscribers
- Retry logic and error handling
Use case: Responding to Medusa events (order.placed, product.created, etc.)
module-link.ts
Module link patterns:
- Basic links between modules
- List links (one-to-many)
- Custom columns in link tables
- Creating, dismissing, and querying links
Use case: Creating relationships between different modules
scheduled-job.ts
Scheduled job patterns:
- Basic scheduled tasks
- Batch processing
- External API integration
- Common cron patterns
Use case: Recurring automated tasks (sync, cleanup, reports)
Template Usage Example
# Copy template to your project
cp templates/module-complete.ts src/modules/brand/
# Customize for your needs
# - Rename identifiers
# - Add/remove properties
# - Implement business logic
# Generate and run migrations
./scripts/generate-migration.sh brand
./scripts/run-migrations.sh
Common Template Combinations
E-commerce Extension:
- module-complete.ts → Create custom module
- module-link.ts → Link to Product module
- api-route-complete.ts → Create API endpoints
- workflow-complete.ts → Implement business logic
- subscriber-complete.ts → Handle events
Data Synchronization:
- workflow-complete.ts → Sync workflow
- scheduled-job.ts → Run periodically
- subscriber-complete.ts → Trigger on events
See templates/README.md for detailed documentation, best practices, and more examples.
Helper Scripts
This skill includes a collection of helper scripts in the scripts/ directory to streamline common MedusaJS development tasks.
Database Management Scripts
db-setup.sh
Creates a database, runs migrations, and syncs links in one command.
./scripts/db-setup.sh [database-name]
Example:
./scripts/db-setup.sh medusa-store
generate-migration.sh
Generates migration files for specified modules.
./scripts/generate-migration.sh <module-name> [additional-modules...]
Examples:
./scripts/generate-migration.sh blog
./scripts/generate-migration.sh blog product-custom
run-migrations.sh
Runs all pending migrations with optional flags to skip links or data migrations.
./scripts/run-migrations.sh [--skip-links] [--skip-data]
Examples:
./scripts/run-migrations.sh
./scripts/run-migrations.sh --skip-links
rollback-migration.sh
Reverts the last migration for specified modules with safety confirmation.
./scripts/rollback-migration.sh <module-name> [additional-modules...]
Development & Build Scripts
dev-server.sh
Starts the Medusa application in development mode with hot reloading.
./scripts/dev-server.sh [--host HOST] [--port PORT]
Examples:
./scripts/dev-server.sh
./scripts/dev-server.sh --host 0.0.0.0 --port 9001
build-production.sh
Creates a production-ready build of the Medusa application or admin only.
./scripts/build-production.sh [--admin-only]
Examples:
./scripts/build-production.sh
./scripts/build-production.sh --admin-only
start-production.sh
Starts the built Medusa application in production mode.
./scripts/start-production.sh
predeploy.sh
Runs migrations and syncs links before deployment (for CI/CD pipelines).
./scripts/predeploy.sh
Testing Scripts
setup-testing.sh
Installs and configures Jest and Medusa testing tools, creates test directories and configuration files.
./scripts/setup-testing.sh
run-tests.sh
Runs integration and unit tests with options for different test types.
./scripts/run-tests.sh [http|modules|unit|all]
Examples:
./scripts/run-tests.sh all
./scripts/run-tests.sh http
./scripts/run-tests.sh modules
./scripts/run-tests.sh unit
Scaffolding Scripts
create-module.sh
Creates the basic structure for a new custom module with service and model directories.
./scripts/create-module.sh <module-name>
Example:
./scripts/create-module.sh blog
Generated Structure:
src/modules/<module-name>/
├── index.ts
├── service.ts
├── models/
└── __tests__/
create-api-route.sh
Creates a new API route with basic CRUD operations (GET, POST, PUT, DELETE).
./scripts/create-api-route.sh <route-name>
Example:
./scripts/create-api-route.sh posts
Generated Endpoints:
GET /api/<route-name>- List all itemsPOST /api/<route-name>- Create new itemGET /api/<route-name>/:id- Get single itemPUT /api/<route-name>/:id- Update itemDELETE /api/<route-name>/:id- Delete item
create-scheduled-job.sh
Creates a new scheduled job with cron configuration template.
./scripts/create-scheduled-job.sh <job-name>
Example:
./scripts/create-scheduled-job.sh sync-inventory
Common Cron Patterns:
"0 0 * * *"- Daily at midnight"0 */6 * * *"- Every 6 hours"*/15 * * * *"- Every 15 minutes"0 9 * * 1"- Every Monday at 9 AM
Plugin Development Scripts
plugin-develop.sh
Starts a development server for a plugin with auto-reload (run from plugin directory).
./scripts/plugin-develop.sh
plugin-build.sh
Builds a plugin for publishing to NPM (run from plugin directory).
./scripts/plugin-build.sh
Common Workflows
Creating a New Feature Module
# 1. Create the module structure
./scripts/create-module.sh my-feature
# 2. Add data models in src/modules/my-feature/models/
# 3. Update service.ts with your models
# 4. Generate migrations
./scripts/generate-migration.sh my-feature
# 5. Run migrations
./scripts/run-migrations.sh
# 6. Create API routes
./scripts/create-api-route.sh my-feature
# 7. Write tests
# Add tests in src/modules/my-feature/__tests__/
# 8. Run tests
./scripts/run-tests.sh modules
Setting Up a New Project
# 1. Create new project
npx create-medusa-app@latest my-store
# 2. Setup database
./scripts/db-setup.sh my-store-db
# 3. Setup testing environment
./scripts/setup-testing.sh
# 4. Start development server
./scripts/dev-server.sh
Deployment Workflow
# 1. Run tests
./scripts/run-tests.sh all
# 2. Build for production
./scripts/build-production.sh
# 3. In CI/CD pipeline, run predeploy
./scripts/predeploy.sh
# 4. Start production server
./scripts/start-production.sh
Resources
- Official MedusaJS Documentation
- Community Discord and Forums
- GitHub Repository and Examples
- Plugin Marketplace
- Developer Tools and CLI Commands
This skill enables comprehensive MedusaJS development with focus on maintainable, scalable e-commerce solutions.
Version: 2.0 Last Updated: May 2026
FAQ
What does the medusajs-developer skill do?
Specialized agent for MedusaJS v2.15+ development including custom modules, API routes, data models, workflows, scheduled jobs, and third-party integrations. Provides expert guidance on commerce platform architecture and plugin development.
How do I install medusajs-developer?
Run npx skills add https://github.com/greedychipmunk/agent-skills --skill medusajs-developer in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/medusajs-developer/ (personal) or .claude/skills/medusajs-developer/ (project).
Which AI agents can use medusajs-developer?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is medusajs-developer safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains medusajs-developer?
It is published by greedychipmunk in greedychipmunk/agent-skills. It has 73 recorded installs.
More from greedychipmunk/agent-skills
roblox-game-development
greedychipmunk/agent-skills
Use this skill for any Roblox related tasks
angularjs-unit-testing
greedychipmunk/agent-skills
Use this skill for AngularJS unit testing, maintenance, and migration tasks
nextjs-developer
greedychipmunk/agent-skills
Expert Next.js development with App Router, Server Components, and modern React patterns
supabase-developer
greedychipmunk/agent-skills
Expert Supabase development with PostgreSQL, authentication, Row Level Security, Storage, Edge Functions, and Realtime subscriptions
docker
greedychipmunk/agent-skills
Build, run, debug, and manage Docker containers, images, compose files, networking, volumes, registries, Buildx/Bake, Scout/SBOM, Swarm, and Docker AI tooling. Use when the user mentions docker, containers, containerizing, Dockerfile, compose, image registry, volumes, or any docker subcommand.
Popular backend & apis skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entra-app-registration
microsoft/azure-skills
Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.
google-agents-cli-adk-code
google/agents-cli
This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).
embedded-captions
heygen-com/hyperframes
Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.
entra-agent-id
microsoft/azure-skills
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).
neon
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.