# Mastra Skills

> Use when building or working with Mastra agents - establishes best practices for agent development, tool creation, and workflow orchestration

- Skill: `majiayu000/mastra-skills` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/mastra-skills`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/mastra-skills/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/mastra-skills

---


# Mastra Skills

**Core principle:** Build composable, observable, and testable AI agents.

## When to Use This Skill

**Always use when:**
- Creating new Mastra agents
- Implementing agent tools
- Setting up workflows
- Debugging agent behavior
- Integrating external APIs with agents

**Don't use for:**
- Non-agent-related code
- Pure frontend components without agent interaction

## Documentation Quick Links

- **[reference.md](./reference.md)** - Official API documentation links
- **[examples.md](./examples.md)** - Official examples and how to use them
- **Official Mastra Docs** - https://mastra.ai/docs/

## Development Checklist

When creating a new agent, use TodoWrite to track:

- [ ] Define clear agent purpose and capabilities
- [ ] Identify required tools and integrations
- [ ] Plan observability and logging strategy
- [ ] Design agent memory and state management
- [ ] Consider error handling and fallbacks
- [ ] Write tests for key scenarios

## Essential Requirements

### Every Agent Must Have

1. **Clear purpose and instructions** - Specific, not generic
2. **Descriptive name** - Not 'agent1' or 'myAgent'
3. **Appropriate model selection** - Choose based on task complexity
4. **Explicit tool registration** - No implicit assumptions

### Every Tool Must Have

1. **Descriptive ID** - Clear what it does
2. **Clear description** - For the LLM to understand
3. **Zod schema validation** - Type-safe inputs
4. **Error handling** - Never let tools crash agents
5. **Logging** - For debugging and observability

### Every Workflow Must Have

1. **Clear trigger schema** - Validated inputs
2. **Proper step sequencing** - Sequential vs parallel
3. **Error handling** - In each step
4. **Observability hooks** - beforeAll/afterAll for logging

## Core Patterns

### Basic Agent

```typescript
import { Agent } from '@mastra/core';

const agent = new Agent({
  name: 'descriptive-name',
  instructions: 'Clear, specific instructions',
  model: {
    provider: 'ANTHROPIC',
    name: 'claude-sonnet-4-5',
  },
  tools: { /* ... */ },
});
```

📚 **More details:** [reference.md](./reference.md) | https://mastra.ai/docs/agents/

### Basic Tool

```typescript
import { z } from 'zod';

const tool = {
  id: 'descriptive-id',
  description: 'What this tool does',
  inputSchema: z.object({
    param: z.string().describe('Parameter description'),
  }),
  execute: async ({ context }) => {
    try {
      const result = await operation();
      return { success: true, data: result };
    } catch (error) {
      logger.error('Operation failed', { error, context });
      return { success: false, error: error.message };
    }
  },
};
```

📚 **More examples:** [examples.md](./examples.md) | https://mastra.ai/docs/tools/

### Basic Workflow

```typescript
import { Workflow } from '@mastra/core';

const workflow = new Workflow({
  name: 'workflow-name',
  triggerSchema: z.object({ input: z.string() }),
});

workflow
  .step({ id: 'step1', execute: async () => { /* ... */ } })
  .then({ id: 'step2', execute: async () => { /* ... */ } })
  .commit();
```

📚 **More examples:** [examples.md](./examples.md) | https://mastra.ai/docs/workflows/

## Red Flags - Stop If You See

- Agent without clear purpose
- Tools without input validation
- No error handling in tools
- Missing observability/logging
- Hardcoded credentials
- No rate limiting for external APIs
- Unbounded memory growth

## Common Rationalizations

| Excuse | Reality |
|--------|---------|
| "Agent instructions don't need to be specific" | Vague instructions → unpredictable behavior |
| "Error handling adds complexity" | Unhandled errors → crashed agents |
| "We can add observability later" | Can't debug what you can't observe |
| "Tool schemas are optional" | Invalid inputs → runtime failures |

## Integration Checklist

When integrating external services, use TodoWrite to track:

- [ ] Create typed tool interface
- [ ] Add input validation with Zod
- [ ] Implement error handling
- [ ] Add logging for debugging
- [ ] Consider rate limiting
- [ ] Handle authentication securely
- [ ] Test with edge cases
- [ ] Document tool usage

## Testing Requirements

```typescript
// Unit test for tools
describe('myTool', () => {
  it('should handle valid input', async () => {
    const result = await myTool.execute({
      context: { param: 'test' },
      mastra: mockMastra,
    });
    expect(result.success).toBe(true);
  });
});

// Integration test for agents
describe('myAgent', () => {
  it('should respond to queries', async () => {
    const response = await myAgent.generate([
      { role: 'user', content: 'test query' }
    ]);
    expect(response.role).toBe('assistant');
  });
});
```

📚 **More examples:** [examples.md](./examples.md)

## Quick Workflow

1. **Need API details?** → Check [reference.md](./reference.md)
2. **Need examples?** → Check [examples.md](./examples.md)
3. **Building something?** → Follow checklists above, use TodoWrite
4. **Stuck?** → Check official docs at https://mastra.ai/docs/

## Final Rule

```
Every agent must have:
1. Clear purpose and instructions
2. Type-safe tools with validation
3. Error handling and observability
4. Tests covering key scenarios
```

Follow these principles for reliable, maintainable Mastra agents.

