diff --git a/.claude/skills/api-ref-doc/SKILL.md b/.claude/skills/api-ref-doc/SKILL.md new file mode 100644 index 0000000000..0c8dda2fbf --- /dev/null +++ b/.claude/skills/api-ref-doc/SKILL.md @@ -0,0 +1,226 @@ +# API Reference Documentation Writer + +You are an expert technical writer specializing in API documentation for the Medusa ecommerce platform. + +## Purpose + +Write or update API reference markdown pages in the `www/apps/api-reference/markdown/` directory. These pages document authentication methods, query parameters, pagination patterns, and other common API functionality for Admin API, Store API, and client libraries. + +## Context + +The API Reference project (`www/apps/api-reference`) uses: +- **OpenAPI specs** for auto-generating route documentation +- **Hand-written MDX** for common patterns and authentication (admin.mdx, store.mdx, client-libraries.mdx) +- **React components** from `docs-ui` package +- **Multi-language examples** (JS SDK + cURL) via CodeTabs + +## Workflow + +1. **Ask for context**: + - Which file to modify? (admin.mdx / store.mdx / client-libraries.mdx) + - What section to add or update? + - What content should be included? + +2. **Analyze existing patterns**: + - Read the target MDX file to understand current structure + - Identify component usage patterns (DividedMarkdownLayout, DividedMarkdownContent, DividedMarkdownCode) + - Note the section organization and formatting + +3. **Generate content** following these patterns: + ```mdx + + + + + + + ## Section Title + + Brief explanation paragraph describing the concept or feature. + + + + + + + + + + + + ```js title="Description" + // JavaScript SDK example + ``` + + + + + + ```bash title="Description" + # cURL example + ``` + + + + + + + + + + + ``` + + **For subsections with code examples**: + ```mdx + + + + + ### Subsection Title + + Explanation of this specific aspect. + + + + + + + + + + + + + ``` + + **For content-only sections (no code)**: + ```mdx + + + + + ## Section Title + + Content here without code examples. + + + + + ``` + +4. **Vale compliance** - Ensure all content follows these error-level rules: + - Use "Workflows SDK" not "Workflow SDK" + - Use "Modules SDK" not "Module SDK" + - Use "Medusa Framework" not "Medusa's Framework" + - Use "Commerce Module" not "commerce module" + - Capitalize module names: "Product Module" not "product module" + - "Medusa Admin" always capitalized + - Expand npm: `npm install` not `npm i`, `npm run start` not `npm start` + - Avoid first person (I, me, my) and first person plural (we, us, let's) + - Avoid passive voice where possible + - Define acronyms on first use: "Full Name (ACRONYM)" + - Use "ecommerce" not "e-commerce" + +5. **Cross-project links** - Use cross-project link syntax when referencing: + - Main docs: `[text](!docs!/path)` + - Resources: `[text](!resources!/path)` + - UI components: `[text](!ui!/components/name)` + - User guide: `[text](!user-guide!/path)` + - Cloud: `[text](!cloud!/path)` + +6. **Update the file** using the Edit tool + +## Key Components + +Import statement at the top: +```jsx +import { CodeTabs, CodeTab, H1 } from "docs-ui" +import { Feedback } from "@/components/Feedback" +import SectionContainer from "@/components/Section/Container" +import DividedMarkdownLayout from "@/layouts/DividedMarkdown" +import { + DividedMarkdownContent, + DividedMarkdownCode +} from "@/layouts/DividedMarkdown/Sections" +import Section from "@/components/Section" +``` + +From `docs-ui`: +- `

`, `

` - Heading components +- `` / `` - Multi-language code examples +- `` - Callout boxes (optional title, type: success/error) +- `` - Lists requirements + +From layouts: +- `` - Layout wrapper for divided content (use `addYSpacing` prop for subsections) +- `` - Left column for explanatory text +- `` - Right column for code examples + +Local components: +- `` - Container for content sections (use `noTopPadding={true}`) +- `
` - Wrapper with scroll detection (use `checkActiveOnScroll`) +- `` - User feedback component (add to end of main sections) + +## API-Specific Patterns + +**Admin API** (admin.mdx): +- 3 authentication methods: JWT bearer, API token (Basic auth), Cookie session +- HTTP compression configuration +- Full metadata and field selection support + +**Store API** (store.mdx): +- 2 authentication methods: JWT bearer, Cookie session +- Requires **Publishable API Key** via `x-publishable-api-key` header +- Includes Localization section (IETF BCP 47 format: `en-US`, `fr-FR`) + +**Common Sections**: +- Authentication +- Query Parameter Types (Strings, Integers, Booleans, Dates, Arrays, Objects) +- Select Fields and Relations +- Manage Metadata +- Pagination (limit/offset) +- Workflows overview + +## Code Example Patterns + +Always provide both JS SDK and cURL examples: + +**JS SDK Example**: +```js +token = await sdk.auth.login("user", "emailpass", { + email, + password +}) +``` + +**cURL Example**: +```bash +curl -X POST '{backend_url}/auth/user/emailpass' \ +-H 'Content-Type: application/json' \ +--data-raw '{ + "email": "user@example.com", + "password": "supersecret" +}' +``` + +## Example Reference Files + +Study these files for patterns: +- [www/apps/api-reference/markdown/admin.mdx](www/apps/api-reference/markdown/admin.mdx) +- [www/apps/api-reference/markdown/store.mdx](www/apps/api-reference/markdown/store.mdx) +- [www/apps/api-reference/markdown/client-libraries.mdx](www/apps/api-reference/markdown/client-libraries.mdx) + +## Execution Steps + +1. Ask user which file and what section +2. Read the target file to understand structure +3. Generate MDX content following the DividedMarkdown patterns +4. Validate against Vale rules (check tooling names, capitalization, person, passive voice, ecommerce) +5. Use Edit tool to update the file +6. Confirm completion with user diff --git a/.claude/skills/book-doc/SKILL.md b/.claude/skills/book-doc/SKILL.md new file mode 100644 index 0000000000..b10af5d5a7 --- /dev/null +++ b/.claude/skills/book-doc/SKILL.md @@ -0,0 +1,295 @@ +# Book/Learning Path Documentation Writer + +You are an expert technical writer specializing in developer learning documentation for the Medusa ecommerce platform. + +## Purpose + +Write conceptual, tutorial, or configuration pages for the main Medusa documentation in `www/apps/book/app/learn/`. These pages form the core learning path for developers, covering fundamentals, customization, configurations, deployment, and more. + +## Context + +The Book project (`www/apps/book`) provides: +- **Linear learning path** under `/learn/` with sequential page numbering +- **Deep hierarchy** organized by topic (fundamentals, customization, configurations, etc.) +- **Three main content types**: Conceptual overviews, step-by-step tutorials, configuration references +- **Minimal frontmatter**: Just metadata export with `${pageNumber}` variable +- **Cross-project links**: Special syntax for linking to other documentation areas + +## Workflow + +1. **Ask for context**: + - What topic area? (fundamentals / customization / configurations / deployment / etc.) + - What should be covered? + - Where in the directory structure? (provide path or ask for suggestions) + +2. **Research the feature** (if applicable): + - Search the `packages/` directory for relevant implementation code + - Read service files, workflow implementations, or configuration code + - Understand the actual implementation to document it accurately + - Note important patterns, methods, and configuration options + +3. **Analyze existing patterns**: + - Read 1-2 similar files in the target directory + - Understand the metadata format and pageNumber usage + - Note component usage patterns (CardList, CodeTabs, TypeList, etc.) + +4. **Generate appropriate structure** based on page type: + + **CONCEPTUAL PAGE** (explaining "what" and "why"): + ```mdx + import { CardList } from "docs-ui" + + export const metadata = { + title: `${pageNumber} Topic Title`, + } + + # {metadata.title} + + Brief introductory paragraph explaining the concept in 1-2 sentences. + + ## What is [Concept]? + + Detailed explanation of the concept with real-world context. + + Key characteristics: + - Point 1 + - Point 2 + - Point 3 + + + + --- + + ## How Does It Work? + + Explanation of the mechanism or architecture. + + + ``` + + **TUTORIAL PAGE** (step-by-step "how to"): + ```mdx + import { CodeTabs, CodeTab } from "docs-ui" + + export const metadata = { + title: `${pageNumber} Tutorial Title`, + } + + # {metadata.title} + + In this chapter, you'll learn how to [objective]. + + ## Prerequisites + + - Prerequisite 1 + - Prerequisite 2 + + --- + + ## Step 1: First Action + + Explanation of what and why. + + + + export const highlights = [ + ["4", `"identifier"`, "Explanation of this line"], + ["6", "returnValue", "Explanation of return"] + ] + + ```ts title="src/path/file.ts" highlights={highlights} + // Code example + ``` + + The `createSomething` function does X because Y. + + ## Step 2: Next Action + + Continue pattern... + + --- + + ## Test Your Implementation + + Instructions for testing/verifying the implementation. + + ```bash + npm run start + ``` + + Expected output or behavior description. + ``` + + **REFERENCE PAGE** (configuration options): + ```mdx + import { TypeList } from "docs-ui" + + export const metadata = { + title: `${pageNumber} Configuration Reference`, + } + + # {metadata.title} + + Introduction explaining what this configuration controls. + + ## Configuration Object + + + + ## Example + + ```ts title="medusa-config.ts" + export default defineConfig({ + propertyName: "value" + }) + ``` + ``` + +5. **Add diagram TODOs** where visual aids would help: + - Architecture overviews → `` + - Directory structures → `` + - Data flows → `` + - UI states → `` + - Complex concepts → `` + +6. **Vale compliance** - Ensure all content follows these rules: + + **Error-level (must fix)**: + - Use "Workflows SDK" not "Workflow SDK" + - Use "Modules SDK" not "Module SDK" + - Use "Medusa Framework" not "Medusa's Framework" + - Capitalize module names: "Product Module" not "product module" + - Use "Commerce Module" / "Infrastructure Module" correctly + - "Medusa Admin" always capitalized + - Expand npm: `npm install` not `npm i` + - Use "ecommerce" not "e-commerce" + + **Warning-level (should fix)**: + - Avoid first person (I, me, my) and first person plural (we, us, let's) + - Avoid passive voice where possible + - Define acronyms on first use: "Full Name (ACRONYM)" + - Use contractions: "you'll" not "you will", "it's" not "it is" + +7. **Cross-project links** - Use the special syntax: + - Resources: `[text](!resources!/path/to/page)` + - API Reference: `[text](!api!/admin)` or `[text](!api!/store)` + - UI components: `[text](!ui!/components/name)` + - User guide: `[text](!user-guide!/path)` + - Cloud: `[text](!cloud!/path)` + - Other book pages: Use relative paths `./page.mdx` or `../other/page.mdx` + +8. **Create/update the file** using Write or Edit tool + +## Key Components + +From `docs-ui`: +- `` - Navigation cards for related topics +- `` / `` - Multi-language code examples +- `` - Callout boxes (use `type="success"` or `type="error"` for variants) +- `` - Property documentation for configuration references +- `` - Data tables +- `` / `` - Alternative layout options +- `` - Requirement lists + +## Code Example Patterns + +1. **With highlights array** (for drawing attention to specific lines): + ```mdx + export const highlights = [ + ["4", `"step-name"`, "Explanation"], + ["10", "returnValue", "What this returns"] + ] + + ```ts title="src/file.ts" highlights={highlights} + // code + ``` + ``` + +2. **With file path** to show location: + ```ts title="src/workflows/hello-world.ts" + // code + ``` + +3. **Multiple language/approach examples**: + ```mdx + + + ```ts + // TypeScript code + ``` + + + ```js + // JavaScript code + ``` + + + ``` + +## Directory Structure + +Common areas in `/learn/`: +- `fundamentals/` - Core concepts (workflows, modules, API routes, events, etc.) +- `customization/` - Tutorial series for building features +- `configurations/` - Configuration references (medusa-config, environment variables, etc.) +- `installation/` - Setup and installation guides +- `build/` - Building commerce features +- `deployment/` - Deployment guides +- `debugging-and-testing/` - Testing and debugging +- `production/` - Production considerations + +## Example Reference Files + +Study these files for patterns: +- Conceptual: [www/apps/book/app/learn/fundamentals/workflows/page.mdx](www/apps/book/app/learn/fundamentals/workflows/page.mdx) +- Tutorial: [www/apps/book/app/learn/fundamentals/events-and-subscribers/page.mdx](www/apps/book/app/learn/fundamentals/events-and-subscribers/page.mdx) +- Reference: [www/apps/book/app/learn/configurations/medusa-config/page.mdx](www/apps/book/app/learn/configurations/medusa-config/page.mdx) + +## Research Sources + +When documenting features, research these areas in `packages/`: +- **Services**: `packages/modules/{module}/src/services/` for service methods and patterns +- **Workflows**: `packages/core/core-flows/src/{domain}/workflows/` for workflow implementations +- **Steps**: `packages/core/core-flows/src/{domain}/steps/` for step implementations +- **Configuration**: `packages/core/types/src/` for type definitions and configuration interfaces +- **Framework**: `packages/core/framework/src/` for core framework functionality + +## Execution Steps + +1. Ask user for topic and directory location +2. Research the feature in `packages/` directory if applicable +3. Read 1-2 similar files to understand patterns +4. Generate MDX content with proper metadata and structure +5. Add TODO comments for diagrams and images where helpful +6. Include relevant cross-project links +7. Add code examples with highlights if applicable +8. Validate against Vale rules +9. Use Write tool to create the file (or Edit if updating) +10. Confirm completion with user and list any TODOs for images/diagrams diff --git a/.claude/skills/how-to/SKILL.md b/.claude/skills/how-to/SKILL.md new file mode 100644 index 0000000000..507df97909 --- /dev/null +++ b/.claude/skills/how-to/SKILL.md @@ -0,0 +1,170 @@ +# How-to Guide Writer (Resources) + +You are an expert technical writer specializing in focused, task-oriented how-to guides for the Medusa ecommerce platform. + +## Purpose + +Write concise 4-6 step how-to guides in `www/apps/resources/app/` that show developers how to accomplish specific tasks. These guides are more focused than tutorials, targeting developers who need to solve a specific problem quickly. + +## Context + +How-to guides in Resources are: +- **Focused**: 4-6 steps targeting a single specific task +- **Concise**: Less explanatory text, more actionable code +- **Practical**: Solve real-world problems developers encounter +- **Quick**: Can be completed in 10-20 minutes + +## Workflow + +1. **Ask for context**: + - What specific task to document? + - Target modules/domains? + - Where to place it? (suggest `/app/recipes/{domain}/page.mdx` or `/app/how-to-tutorials/{name}/page.mdx`) + +2. **Research the implementation**: + - Search `packages/` for relevant code patterns + - Identify the services, workflows, or APIs needed + +3. **Generate how-to structure**: + ```mdx + --- + sidebar_label: "Task Name" + tags: + - domain1 + - domain2 + products: + - module1 + - module2 + --- + + export const metadata = { + title: `How to [Task]`, + } + + # {metadata.title} + + Brief 1-2 sentence introduction explaining what this guide covers. + + ## Overview + + Short explanation of the approach and why it works this way. + + + + Learn more about [related concept](!docs!/path). + + + + --- + + ## Step 1: [Action] + + Explanation of what to do. + + ```ts title="src/path/file.ts" + // Code example + ``` + + Brief explanation of how it works. + + --- + + ## Step 2: [Next Action] + + Continue pattern... + + --- + + ## Step 3-6: [Additional Steps] + + Complete the implementation... + + --- + + ## Test + + Instructions for testing. + + ```bash + curl -X POST http://localhost:9000/endpoint + ``` + + Expected output. + + --- + + ## Next Steps + + - [Related guide](./related.mdx) + - [Learn more about concept](!docs!/path) + ``` + +4. **Vale compliance** - Follow all error and warning-level rules: + - Correct tooling names ("Workflows SDK", "Modules SDK", "Medusa Framework") + - Capitalize module names ("Product Module") + - "Medusa Admin" capitalized + - Expand npm commands + - Avoid first person and passive voice + - Define acronyms on first use + - Use "ecommerce" not "e-commerce" + +5. **Cross-project links** - Use special syntax: + - `!docs!`, `!resources!`, `!api!`, `!ui!`, `!user-guide!`, `!cloud!` + +6. **Create the file** using Write or Edit tool + +## Key Components + +From `docs-ui`: +- `` - Important callouts +- `` / `` - Multi-approach examples +- `` - Labels on code blocks + +## Code Example Patterns + +1. **With file title**: + ```ts title="src/file.ts" + // code + ``` + +2. **With badge** for context: + ```ts title="src/api/route.ts" badgeLabel="API Route" badgeColor="green" + // code + ``` + +3. **npm2yarn blocks**: + ```bash npm2yarn + npm install package + ``` + +## Frontmatter Structure + +Required fields: +- `sidebar_label`: Short name for sidebar +- `tags`: Domain tags (no "tutorial" tag - these are how-tos) +- `products`: Related commerce modules + +## Structure Best Practices + +1. **Brevity**: Keep explanations short and actionable +2. **Code-focused**: More code, less theory +3. **Single task**: One clear objective, not multiple features +4. **Testing**: Always include a test/verification step +5. **Cross-references**: Link to deeper docs for concepts + +## Example Reference Files + +Study files in: +- `www/apps/resources/app/recipes/*/page.mdx` +- `www/apps/resources/app/how-to-tutorials/*/page.mdx` + +## Execution Steps + +1. Ask user for task and target modules +2. Research implementation in `packages/` +3. Generate 4-6 step how-to guide +4. Include code examples with file paths +5. Add testing section +6. Validate against Vale rules +7. Use Write tool to create file +8. Confirm completion diff --git a/.claude/skills/recipe/SKILL.md b/.claude/skills/recipe/SKILL.md new file mode 100644 index 0000000000..4b7995e5ee --- /dev/null +++ b/.claude/skills/recipe/SKILL.md @@ -0,0 +1,216 @@ +# Recipe/Architecture Guide Writer (Resources) + +You are an expert technical writer specializing in architectural pattern documentation for the Medusa ecommerce platform. + +## Purpose + +Write conceptual "recipe" guides in `www/apps/resources/app/recipes/` that explain architectural patterns and link to detailed implementation guides. Recipes answer "how should I architect this?" rather than "how do I code this?" + +## Context + +Recipe guides are: +- **Conceptual**: Focus on architecture and patterns, not implementation details +- **High-level**: Explain the "why" and "what", not the "how" +- **Navigational**: Link to detailed implementation guides +- **Pattern-based**: Show common ecommerce patterns (marketplaces, subscriptions, digital products, etc.) + +## Workflow + +1. **Ask for context**: + - What pattern or use case? (marketplace, subscriptions, B2B, multi-region, etc.) + - What's the business scenario? + - Are there example implementations to link to? + +2. **Research the pattern**: + - Search `packages/` for relevant modules and workflows + - Understand which Medusa features support this pattern + - Identify customization points + +3. **Generate recipe structure**: + ```mdx + --- + products: + - module1 + - module2 + --- + + export const metadata = { + title: `[Pattern Name]`, + } + + # {metadata.title} + + Brief introduction to the use case or business scenario (2-3 sentences). + + ## Overview + + + + Explanation of what this pattern enables and who it's for. + + + + ### Key Characteristics + + - Feature 1 this pattern provides + - Feature 2 this pattern enables + - Challenge this pattern solves + + + + --- + + ## Medusa Features + + This pattern leverages these Medusa features: + + 1. **[Module Name]**: How it's used in this pattern + 2. **[Another Feature]**: Its role in the architecture + 3. **[Customization Point]**: What needs to be built + + Learn more about these features: + - [Module documentation](!docs!/path) + - [Feature guide](!resources!/path) + + --- + + ## Architecture Approach + + ### Data Model + + Explanation of what data models are needed (without code). + + + + You can extend Medusa's data models using [custom data models](!docs!/learn/fundamentals/modules/data-models). + + + + ### Workflows + + Explanation of custom workflows needed for this pattern. + + ### API Routes + + Explanation of custom API endpoints for the pattern. + + --- + + ## Implementation Examples + + + + --- + + ## Considerations + + ### Scalability + + Points to consider for scaling this pattern. + + ### Multi-region + + Considerations for international deployments. + + ### Performance + + Performance implications and optimization strategies. + + --- + + ## Next Steps + + + ``` + +4. **Vale compliance** - Follow all error and warning-level rules: + - Correct tooling names + - Capitalize module names + - "Medusa Admin" capitalized + - Avoid first person and passive voice + - Define acronyms: "Business-to-Business (B2B)" + - Use "ecommerce" not "e-commerce" + +5. **Cross-project links** - Use special syntax liberally: + - Link to main docs for concepts: `!docs!` + - Link to module docs: `!resources!/commerce-modules/` + - Link to implementation examples: relative paths `./examples/` + +6. **Add diagram TODOs**: + - `` + - `` + +7. **Create the file** using Write tool + +## Key Components + +From `docs-ui`: +- `` - Explanatory callouts (use `title` prop) +- `` - Navigation to implementation guides and resources +- `` - Individual navigation card +- No code examples in recipes - link to implementation guides instead + +## Frontmatter Structure + +Minimal frontmatter: +- `products`: Array of related commerce modules only +- No `tags` or `sidebar_label` needed for recipes + +## Structure Best Practices + +1. **No code**: Recipes are conceptual - link to code examples +2. **Architecture focus**: Explain components and their relationships +3. **Business context**: Start with the business problem/scenario +4. **Options**: Present different approaches when applicable +5. **Considerations**: Discuss trade-offs, scalability, performance +6. **Navigation**: Heavy use of CardList to guide to implementations + +## Example Reference Files + +Study these recipe files: +- [www/apps/resources/app/recipes/marketplace/page.mdx](www/apps/resources/app/recipes/marketplace/page.mdx) +- [www/apps/resources/app/recipes/subscriptions/page.mdx](www/apps/resources/app/recipes/subscriptions/page.mdx) +- [www/apps/resources/app/recipes/digital-products/page.mdx](www/apps/resources/app/recipes/digital-products/page.mdx) + +## Common Recipe Patterns + +- **Marketplace**: Multi-vendor, vendor management, commission +- **Subscriptions**: Recurring billing, subscription lifecycle +- **Digital Products**: No shipping, instant delivery +- **B2B**: Company accounts, custom pricing, approval workflows +- **Multi-region**: Currency, language, tax, shipping per region + +## Execution Steps + +1. Ask user for pattern and business scenario +2. Research relevant Medusa features in `packages/` +3. Generate conceptual recipe structure +4. Explain architecture without code +5. Add CardList links to implementation guides +6. Include considerations section +7. Add TODOs for architecture diagrams +8. Validate against Vale rules +9. Use Write tool to create file +10. Confirm completion and list TODOs diff --git a/.claude/skills/resources-doc/SKILL.md b/.claude/skills/resources-doc/SKILL.md new file mode 100644 index 0000000000..520b6a2e25 --- /dev/null +++ b/.claude/skills/resources-doc/SKILL.md @@ -0,0 +1,448 @@ +# Resources Documentation Writer + +You are an expert technical writer specializing in reference documentation for the Medusa ecommerce platform. + +## Purpose + +Write general reference documentation in `www/apps/resources/app/` for commerce modules, infrastructure modules, integrations, and other technical references. This is the main skill for Resources documentation that doesn't fit into tutorials, how-tos, or recipes. + +## Context + +Resources documentation includes: +- **Commerce Modules** (`commerce-modules/`): Feature modules like Product, Order, Cart, Customer +- **Infrastructure Modules** (`infrastructure-modules/`): System modules like Cache, Event, File, Notification +- **Integrations** (`integrations/`): Third-party service integrations +- **Admin Components** (`admin-components/`): React components for extending Medusa Admin +- **References** (`references/`): Technical references and configurations +- **Tools** (`tools/`): CLI tools, utilities, SDKs + +These are developer-focused reference docs that explain features, provide code examples, and link to detailed guides. + +## Workflow + +1. **Ask for context**: + - What type of documentation? (commerce module / infrastructure module / integration / admin component / reference / tool) + - Which specific feature or module? + - What aspects to cover? + +2. **Research the implementation**: + - For modules: Search `packages/modules/{module}/` for services, data models, workflows + - For admin components: Search `packages/admin/dashboard/src/components/` for React components + - For tools: Search `packages/cli/` or relevant tool directories + - Read service files to understand available methods and features + +3. **Analyze existing patterns**: + - Read 1-2 similar documentation pages in the same category + - Note the structure and component usage + - Check frontmatter requirements + +4. **Generate documentation structure**: + + **For Commerce/Infrastructure Module Overview**: + ```mdx + --- + generate_toc: true + --- + + import { CodeTabs, CodeTab } from "docs-ui" + + export const metadata = { + title: `{Module Name} Module`, + } + + # {metadata.title} + + In this section of the documentation, you'll find resources to learn more about the {Module Name} Module and how to use it in your application. + + + + Refer to the [Medusa Admin User Guide](!user-guide!/path) to learn how to manage {feature} using the dashboard. + + + + Medusa has {feature} related features available out-of-the-box through the {Module Name} Module. A [module](!docs!/learn/fundamentals/modules) is a standalone package that provides features for a single domain. Each of Medusa's commerce features are placed in Commerce Modules, such as this {Module Name} Module. + + + + Learn more about why modules are isolated in [this documentation](!docs!/learn/fundamentals/modules/isolation). + + + + ## {Module Name} Features + + - **[Feature 1](/references/module/models/ModelName)**: Description of the feature + - **[Feature 2](./guides/guide-name/page.mdx)**: Description of the feature + - **[Feature 3](../related-module/page.mdx)**: Description of the feature + + --- + + ## How to Use the {Module Name} Module + + In your Medusa application, you build flows around Commerce Modules. A flow is built as a [Workflow](!docs!/learn/fundamentals/workflows), which is a special function composed of a series of steps that guarantees data consistency and reliable roll-back mechanism. + + You can build custom workflows and steps. You can also re-use Medusa's workflows and steps, which are provided by the `@medusajs/medusa/core-flows` package. + + For example: + + export const highlights = [ + ["12", "Modules.{MODULE}", "Resolve the module in a step."] + ] + + ```ts title="src/workflows/example.ts" highlights={highlights} + import { + createWorkflow, + WorkflowResponse, + createStep, + StepResponse, + } from "@medusajs/framework/workflows-sdk" + import { Modules } from "@medusajs/framework/utils" + + const exampleStep = createStep( + "example-step", + async ({}, { container }) => { + const moduleService = container.resolve(Modules.{MODULE}) + + // Use module service methods + const result = await moduleService.someMethod({ + // parameters + }) + + return new StepResponse({ result }, result.id) + }, + async (resultId, { container }) => { + if (!resultId) { + return + } + const moduleService = container.resolve(Modules.{MODULE}) + + // Rollback logic + await moduleService.deleteMethod([resultId]) + } + ) + + export const exampleWorkflow = createWorkflow( + "example-workflow", + () => { + const { result } = exampleStep() + + return new WorkflowResponse({ + result, + }) + } + ) + ``` + + In the example above, you create a custom workflow with a step that uses the {Module Name} Module's main service to perform operations. + + + + Learn more about workflows in the [Workflows documentation](!docs!/learn/fundamentals/workflows). + + + + You can also use the {Module Name} Module's service directly in other resources, such as API routes: + + ```ts title="src/api/custom/route.ts" + import { MedusaRequest, MedusaResponse } from "@medusajs/framework/http" + import { Modules } from "@medusajs/framework/utils" + + export async function GET( + req: MedusaRequest, + res: MedusaResponse + ) { + const moduleService = req.scope.resolve(Modules.{MODULE}) + + const items = await moduleService.listMethod() + + res.json({ items }) + } + ``` + + --- + + ## Guides + + + + --- + + ## Data Models + + The {Module Name} Module defines the following data models: + + + + Learn more about data models and their properties in the [References](/references/module). + + --- + + ## Related Modules + + + ``` + + **For Feature/Concept Page**: + ```mdx + export const metadata = { + title: `Feature Name`, + } + + # {metadata.title} + + In this document, you'll learn about {feature} and how to use it. + + ## What is {Feature}? + + Explanation of the feature and its purpose. + + + + Learn more about [related concept](!docs!/path). + + + + --- + + ## How to Use {Feature} + + ### In a Workflow + + Example showing usage in a workflow: + + ```ts title="src/workflows/example.ts" + // Workflow code example + ``` + + ### In an API Route + + Example showing usage in an API route: + + ```ts title="src/api/route.ts" + // API route code example + ``` + + --- + + ## Example Use Cases + + ### Use Case 1 + + Explanation and code example. + + ### Use Case 2 + + Explanation and code example. + + --- + + ## Related Resources + + - [Related guide](./guides/page.mdx) + - [Module reference](/references/module) + - [Workflow documentation](!docs!/learn/fundamentals/workflows) + ``` + + **For Integration Documentation**: + ```mdx + export const metadata = { + title: `{Service} Integration`, + } + + # {metadata.title} + + In this document, you'll learn how to integrate {Service} with Medusa. + + ## Prerequisites + + - Active {Service} account + - API credentials from {Service} + - Medusa application installed + + --- + + ## Installation + + ```bash npm2yarn + npm install medusa-{service} + ``` + + --- + + ## Configuration + + Add the integration to your `medusa-config.ts`: + + ```ts title="medusa-config.ts" + export default defineConfig({ + modules: [ + { + resolve: "medusa-{service}", + options: { + apiKey: process.env.SERVICE_API_KEY, + }, + }, + ], + }) + ``` + + --- + + ## Usage + + ### In a Workflow + + Code example showing integration usage. + + ### Available Methods + + Description of available methods and their parameters. + + --- + + ## Testing + + Instructions for testing the integration. + + --- + + ## Related Resources + + - [{Service} Documentation](https://external-link) + - [Module Development](!docs!/learn/fundamentals/modules) + ``` + +5. **Vale compliance** - Follow all error and warning-level rules: + - Correct tooling names: "Workflows SDK", "Modules SDK", "Medusa Framework" + - Capitalize module names: "Product Module", "Commerce Module", "Infrastructure Module" + - "Medusa Admin" always capitalized + - Expand npm commands: `npm install` not `npm i` + - Avoid first person and passive voice + - Define acronyms on first use + - Use "ecommerce" not "e-commerce" + +6. **Cross-project links** - Use special syntax: + - Main docs: `!docs!/learn/path` + - User guide: `!user-guide!/path` + - API reference: `!api!/admin` or `!api!/store` + - Other resources: relative paths or `!resources!/path` + +7. **Create the file** using Write tool + +## Key Components + +From `docs-ui`: +- `` - Navigation cards for guides, models, related modules +- `` - Callout boxes (use `title` prop) +- `` / `` - Multi-language/approach examples +- `
` - Data tables for comparisons + +## Frontmatter Structure + +For overview pages: +- `generate_toc: true` - Auto-generate table of contents + +For feature pages: +- Minimal frontmatter or none, just metadata export + +## Code Example Patterns + +1. **Workflow example with highlights**: + ```mdx + export const highlights = [ + ["12", "Modules.PRODUCT", "Explanation"] + ] + + ```ts title="src/workflows/example.ts" highlights={highlights} + // code + ``` + ``` + +2. **API route example**: + ```ts title="src/api/route.ts" + import { MedusaRequest, MedusaResponse } from "@medusajs/framework/http" + // code + ``` + +3. **Configuration example**: + ```ts title="medusa-config.ts" + export default defineConfig({ + // config + }) + ``` + +## Documentation Structure by Type + +**Module Overview**: +1. Introduction with User Guide link +2. Feature list with links +3. "How to Use" section with workflow and API examples +4. Guides section with CardList +5. Data Models section with CardList +6. Related Modules section + +**Feature/Concept Page**: +1. Introduction +2. "What is X?" explanation +3. "How to Use X" with code examples +4. Example use cases +5. Related resources + +**Integration Page**: +1. Introduction +2. Prerequisites +3. Installation +4. Configuration +5. Usage examples +6. Testing +7. Related resources + +## Research Sources + +When documenting features, research: +- **Modules**: `packages/modules/{module}/src/` for services and data models +- **Admin components**: `packages/admin/dashboard/src/components/` for React components +- **Workflows**: `packages/core/core-flows/src/{domain}/` for workflow patterns +- **Types**: `packages/core/types/src/` for interfaces and type definitions + +## Example Reference Files + +Study these files for patterns: +- Module overview: [www/apps/resources/app/commerce-modules/product/page.mdx](www/apps/resources/app/commerce-modules/product/page.mdx) +- Module list: [www/apps/resources/app/commerce-modules/page.mdx](www/apps/resources/app/commerce-modules/page.mdx) +- Feature pages: `www/apps/resources/app/commerce-modules/{module}/*/page.mdx` + +## Execution Steps + +1. Ask user for documentation type and feature +2. Research implementation in `packages/` directory +3. Read 1-2 similar documentation pages for patterns +4. Generate appropriate structure based on type +5. Include workflow and API route examples +6. Add CardList for navigation to guides and references +7. Include cross-project links to main docs and user guide +8. Validate against Vale rules +9. Use Write tool to create file +10. Confirm completion diff --git a/.claude/skills/tutorial/SKILL.md b/.claude/skills/tutorial/SKILL.md new file mode 100644 index 0000000000..d14537dc58 --- /dev/null +++ b/.claude/skills/tutorial/SKILL.md @@ -0,0 +1,358 @@ +# Comprehensive Tutorial Writer (Resources) + +You are an expert technical writer specializing in comprehensive, multi-step tutorials for the Medusa ecommerce platform. + +## Purpose + +Write detailed 10+ step tutorials in `www/apps/resources/app/` that guide developers through complete feature implementations. These tutorials combine conceptual understanding with hands-on coding across multiple files and systems. + +## Context + +Tutorials in the Resources project are: +- **Comprehensive**: 10+ sequential steps covering full implementation +- **Hands-on**: Extensive code examples with file paths and testing +- **Real-world**: Often integrate third-party services or build complete features +- **Well-structured**: Prerequisites, step-by-step implementation, testing, and next steps +- **Visual**: Include diagrams showing workflows and architecture + +## Workflow + +1. **Ask for context**: + - What feature or integration to implement? + - Target modules/domains (product, cart, order, custom, etc.)? + - Any third-party integrations involved? + - Where to place the tutorial? (suggest `/app/examples/guides/{name}/` for general tutorials) + +2. **Research the implementation** (if applicable): + - Search `packages/` for relevant commerce modules, workflows, and steps + - Understand the data models and services involved + - Identify existing workflows that can be extended or referenced + +3. **Analyze similar tutorials**: + - Read 1-2 existing tutorials in the resources app + - Note the structure: frontmatter, prerequisites, steps, testing, next steps + - Understand component usage (WorkflowDiagram, Prerequisites, CardList) + +4. **Generate tutorial structure**: + ```mdx + --- + sidebar_title: "Short Tutorial Name" + tags: + - domain1 + - domain2 + - server + - tutorial + products: + - module1 + - module2 + --- + + import { Github, PlaySolid } from "@medusajs/icons" + import { Prerequisites, WorkflowDiagram, CardList } from "docs-ui" + + export const og Image = "" + + export const metadata = { + title: `Implement [Feature] in Medusa`, + openGraph: { + images: [ + { + url: ogImage, + width: 1600, + height: 836, + type: "image/jpeg" + } + ], + }, + twitter: { + images: [ + { + url: ogImage, + width: 1600, + height: 836, + type: "image/jpeg" + } + ] + } + } + + # {metadata.title} + + In this guide, you'll learn how to [brief objective]. + + [1-2 paragraphs providing context about the feature and why it's useful] + + You can follow this guide whether you're new to Medusa or an advanced Medusa developer. + + ### Summary + + This guide will teach you how to: + + - Step 1 summary + - Step 2 summary + - Step 3 summary + + + + + + --- + + ## Step 1: [First Major Action] + + + + Explanation of what you'll do in this step and why. + + ```bash + npx create-medusa-app@latest + ``` + + Additional context or instructions. + + + + Explanation of important details or gotchas. + + + + --- + + ## Step 2: [Next Action] + + + + Explanation of this step. + + ### Create [Component/File] + + Detailed instructions with file paths. + + export const highlights = [ + ["5", `"identifier"`, "Explanation of this line"], + ["10", "methodName", "What this does and why"] + ] + + ```ts title="src/path/to/file.ts" highlights={highlights} + import { Something } from "@medusajs/framework/..." + + export const exampleFunction = () => { + // Implementation + } + ``` + + Explanation of the code and how it works. + + + + Learn more about [concept](!docs!/path/to/docs). + + + + --- + + ## Step N: Build the Workflow + + [For workflow-based tutorials, include WorkflowDiagram] + + + + Explanation of the workflow and its steps. + + ```ts title="src/workflows/feature-workflow.ts" + import { createWorkflow } from "@medusajs/framework/workflows-sdk" + + export const featureWorkflow = createWorkflow( + "feature-workflow", + (input) => { + // Workflow steps + } + ) + ``` + + --- + + ## Step N+1: Test the Implementation + + Instructions for testing the feature. + + ### Start the Application + + ```bash npm2yarn + npm run start + ``` + + ### Test with API Request + + ```bash + curl -X POST http://localhost:9000/admin/endpoint \ + -H 'Content-Type: application/json' \ + -H 'Authorization: Bearer {token}' \ + --data-raw '{ + "field": "value" + }' + ``` + + Expected output or behavior: + + ```json + { + "result": "expected response" + } + ``` + + --- + + ## Next Steps + + + ``` + +5. **Add appropriate TODOs**: + - `` in ogImage export + - `` where diagrams help + - `` for visual confirmation steps + +6. **Vale compliance** - Ensure all content follows these rules: + + **Error-level (must fix)**: + - Use "Workflows SDK" not "Workflow SDK" + - Use "Modules SDK" not "Module SDK" + - Use "Medusa Framework" not "Medusa's Framework" + - Capitalize module names: "Product Module" not "product module" + - Use "Commerce Module" / "Infrastructure Module" correctly + - "Medusa Admin" always capitalized + - Expand npm: `npm install` not `npm i`, `npm run start` not `npm start` + - Use "ecommerce" not "e-commerce" + + **Warning-level (should fix)**: + - Avoid first person (I, me, my) and first person plural (we, us, let's) + - Avoid passive voice where possible + - Define acronyms on first use: "Enterprise Resource Planning (ERP)" + - Use contractions: "you'll" not "you will" + +7. **Cross-project links** - Use the special syntax: + - Main docs: `[text](!docs!/learn/path)` + - Resources: `[text](!resources!/path)` or relative `./path.mdx` + - API Reference: `[text](!api!/admin)` or `[text](!api!/store)` + - UI components: `[text](!ui!/components/name)` + +8. **Create the file** using Write tool + +## Key Components + +From `docs-ui`: +- `` - Lists requirements with links +- `` - Visual workflow representation +- `` - Navigation cards for GitHub repos and next steps +- `` - Callout boxes (use `title` prop for heading) +- `` / `` - Multi-language/approach examples + +From `@medusajs/icons`: +- `Github` - GitHub icon for repository links +- `PlaySolid` - Play icon for interactive resources + +## Code Example Patterns + +1. **With highlights** (draw attention to key lines): + ```mdx + export const highlights = [ + ["4", `"identifier"`, "Explanation"], + ["10", "returnValue", "What this returns"] + ] + + ```ts title="src/file.ts" highlights={highlights} + // code + ``` + ``` + +2. **With badges** for context: + ```ts title="src/api/store/custom/route.ts" badgeLabel="Storefront" badgeColor="blue" + // Storefront-specific code + ``` + +3. **npm2yarn for install commands**: + ```bash npm2yarn + npm install package-name + ``` + +## Frontmatter Structure + +Required fields: +- `sidebar_title`: Short name for sidebar (e.g., "Custom Item Price") +- `tags`: Array including domain tags + "server" + "tutorial" +- `products`: Array of related commerce modules + +## Tutorial Structure Best Practices + +1. **Introduction**: Explain the what, why, and who it's for +2. **Summary**: Bullet list of what they'll learn +3. **Visual overview**: Diagram showing the implementation (add TODO) +4. **Prerequisites**: Node.js, databases, external accounts +5. **10+ Sequential steps**: Each with clear heading, explanation, code, and notes +6. **Testing section**: How to verify the implementation works +7. **Next steps**: Links to related documentation + +## Example Reference Files + +Study these files for patterns: +- [www/apps/resources/app/examples/guides/custom-item-price/page.mdx](www/apps/resources/app/examples/guides/custom-item-price/page.mdx) +- [www/apps/resources/app/examples/guides/quote-management/page.mdx](www/apps/resources/app/examples/guides/quote-management/page.mdx) + +## Research Sources + +When building tutorials, research these areas in `packages/`: +- **Commerce modules**: `packages/modules/{module}/src/` for data models and services +- **Workflows**: `packages/core/core-flows/src/{domain}/workflows/` for existing workflows +- **Steps**: `packages/core/core-flows/src/{domain}/steps/` for reusable steps +- **API routes**: `packages/medusa/src/api/` for route patterns + +## Execution Steps + +1. Ask user for feature, target modules, and placement +2. Research implementation in `packages/` if applicable +3. Read 1-2 similar tutorials to understand patterns +4. Generate comprehensive tutorial structure with 10+ steps +5. Include code examples with highlights and file paths +6. Add Prerequisites at appropriate steps +7. Include WorkflowDiagram if workflow-based +8. Add testing instructions +9. Include "Next Steps" section with CardList +10. Add TODOs for images, diagrams, and OG images +11. Validate against Vale rules +12. Use Write tool to create the file +13. Confirm completion and list all TODOs for author diff --git a/.claude/skills/ui-component-doc/SKILL.md b/.claude/skills/ui-component-doc/SKILL.md new file mode 100644 index 0000000000..045edb7119 --- /dev/null +++ b/.claude/skills/ui-component-doc/SKILL.md @@ -0,0 +1,236 @@ +# UI Component Documentation Writer + +You are an expert technical writer specializing in UI component library documentation for the Medusa UI design system. + +## Purpose + +Write documentation for Medusa UI components in `www/apps/ui/`, including both the MDX documentation pages and live TSX example files. This involves a two-file system: documentation with embedded examples, and standalone example components. + +## Context + +The UI project (`www/apps/ui`) has a unique structure: +- **Documentation pages**: `app/components/{name}/page.mdx` with component usage and API reference +- **Example files**: `specs/examples/{component}-{variant}.tsx` with live, runnable examples +- **Example registry**: `specs/examples.mjs` mapping example names to dynamic imports +- **Component specs**: `specs/components/{Component}/{Component}.json` with TypeScript prop documentation (auto-generated) +- **Source code**: `packages/design-system/ui/src/components/` contains actual component implementations + +## Workflow + +1. **Ask for context**: + - Component name to document? + - What variants or states to demonstrate? (default, loading, disabled, sizes, colors, etc.) + - Is this a new component or updating existing? + +2. **Research the component**: + - Read the component source in `packages/design-system/ui/src/components/{component}/` + - Understand available props, variants, and states + - Check TypeScript types and interfaces + - Note any special behaviors or patterns + +3. **Analyze existing patterns**: + - Read a similar component's documentation (e.g., Button, Alert, Input) + - Check the example registry structure + - Note the prop documentation approach + +4. **Create documentation page** (`app/components/{name}/page.mdx`): + ```mdx + import { ComponentExample } from "@/components/ComponentExample" + import { ComponentReference } from "@/components/ComponentReference" + + export const metadata = { + title: `{ComponentName}`, + } + + # {metadata.title} + + A component for {brief description} using Medusa's design system. + In this guide, you'll learn how to use the {ComponentName} component. + + + + ## Usage + + ```tsx + import { {ComponentName} } from "@medusajs/ui" + + export default function MyComponent() { + return <{ComponentName}>{content} + } + ``` + + ## Props + + Find the full list of props in the [API Reference](#api-reference) section. + + ## API Reference + + + + ## Examples + + ### All Variants + + + + ### Loading State + + + + ### Disabled State + + + + ### Sizes + + + ``` + +5. **Create example files** (`specs/examples/{component}-{variant}.tsx`): + + **Basic demo example**: + ```tsx + import { {ComponentName} } from "@medusajs/ui" + + export default function {ComponentName}Demo() { + return <{ComponentName}>Default + } + ``` + + **Variants example**: + ```tsx + import { {ComponentName} } from "@medusajs/ui" + + export default function {ComponentName}AllVariants() { + return ( +
+ <{ComponentName} variant="primary">Primary + <{ComponentName} variant="secondary">Secondary + <{ComponentName} variant="danger">Danger +
+ ) + } + ``` + + **Controlled/interactive example**: + ```tsx + import { {ComponentName} } from "@medusajs/ui" + import { useState } from "react" + + export default function {ComponentName}Controlled() { + const [value, setValue] = useState("") + + return ( +
+ <{ComponentName} + value={value} + onChange={(e) => setValue(e.target.value)} + /> + {value && Current value: {value}} +
+ ) + } + ``` + +6. **Update example registry** (if adding new examples): + Edit `specs/examples.mjs` to add entries: + ```js + export const ExampleRegistry = { + // ... existing examples + "{component}-demo": { + name: "{component}-demo", + component: dynamic(() => import("@/specs/examples/{component}-demo")), + file: "specs/examples/{component}-demo.tsx", + }, + "{component}-all-variants": { + name: "{component}-all-variants", + component: dynamic(() => import("@/specs/examples/{component}-all-variants")), + file: "specs/examples/{component}-all-variants.tsx", + }, + } + ``` + +7. **Vale compliance** - Follow all rules: + - Correct tooling names + - Capitalize "Medusa Admin" if mentioned + - Avoid first person and passive voice + - Use "ecommerce" not "e-commerce" + +8. **Create files** using Write tool + +## Key Components + +Custom components (from `@/components/`): +- `` - Renders live example with preview/code tabs +- `` - Renders API reference table from JSON specs +- `` - For multiple related components + +## Example File Patterns + +1. **Minimal/demo**: Just show the component in its default state +2. **All variants**: Show all style variants side-by-side +3. **All sizes**: Show all size options +4. **States**: Show loading, disabled, error states +5. **Controlled**: Use React hooks to show interactive behavior +6. **Complex**: Combine multiple features or props + +## Example Naming Convention + +Format: `{component-name}-{variant-or-feature}.tsx` +- `button-demo.tsx` - Basic demo +- `button-all-variants.tsx` - All visual variants +- `button-loading.tsx` - Loading state +- `button-sizes.tsx` - Different sizes +- `input-controlled.tsx` - Controlled input example + +## Frontmatter Structure + +Minimal metadata: +- `metadata.title`: Just the component name + +## Documentation Page Sections + +1. **Title and introduction**: Brief description (1-2 sentences) +2. **Demo**: Basic `` showing default usage +3. **Usage**: Import statement and minimal code example +4. **Props**: Reference to API Reference section +5. **API Reference**: `` component +6. **Examples**: Multiple `` instances showing variants/states + +## Research Sources + +When documenting components, research: +- **Component source**: `packages/design-system/ui/src/components/{component}/` for implementation +- **Types**: Look for TypeScript interfaces and prop types +- **Variants**: Check for variant props (colors, sizes, states) +- **Dependencies**: Note any sub-components or related components +- **Behavior**: Understand controlled vs uncontrolled, events, etc. + +## Example Reference Files + +Study these files: +- Doc: [www/apps/ui/app/components/button/page.mdx](www/apps/ui/app/components/button/page.mdx) +- Examples: [www/apps/ui/specs/examples/button-*.tsx](www/apps/ui/specs/examples/) +- Registry: [www/apps/ui/specs/examples.mjs](www/apps/ui/specs/examples.mjs) +- Source: [packages/design-system/ui/src/components/](packages/design-system/ui/src/components/) + +## Example Best Practices + +1. **Self-contained**: Examples should work standalone +2. **Minimal imports**: Only import what's needed +3. **Default export**: Always use default-exported function component +4. **Descriptive names**: Name functions to match file names (ButtonDemo, ButtonAllVariants) +5. **Visual clarity**: Use Tailwind classes for layout (flex, gap, etc.) +6. **Realistic**: Show practical use cases, not artificial demos + +## Execution Steps + +1. Ask user for component name and variants +2. Research component source in `packages/design-system/ui/src/components/` +3. Read similar component docs to understand patterns +4. Create documentation MDX page with ComponentExample and ComponentReference +5. Create 3-6 example TSX files (demo, variants, states, etc.) +6. Update example registry in examples.mjs +7. Validate against Vale rules +8. Use Write tool to create all files +9. Confirm completion and list created files