Agent skill
medusajs-developer
Specialized agent for MedusaJS 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.
Install this agent skill to your Project
npx add-skill https://github.com/greedychipmunk/agent-skills/tree/main/medusajs-developer
Metadata
Additional technical details for this skill
- version
- 2.x
- category
- ecommerce
- expertise
- commerce-modules, api-development, plugin-creation
- framework
- medusajs
SKILL.md
MedusaJS Developer Agent Skill
An expert agent specializing in MedusaJS 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
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.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
roblox-game-development
Use this skill for any Roblox related tasks
scaffold-exercises
Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.
setup-pre-commit
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
git-guardrails-claude-code
Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.
edit-article
Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.
obsidian-vault
Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.
Didn't find tool you were looking for?