Skip to content
Back to skills

Mastra Expert

ASecurity

Build TypeScript AI agents and workflows with Mastra's modern stack from the Gatsby team. Use when building AI applications with mastra.

  • 9 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
developmenttypescriptpythongoreactnextjsnodenodejsdebuggingapi

Works with

  • api
  • mcp

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add anubhavg-icpl/vibe --skill mastra-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mastra Expert?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mastra Expert
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/anubhavg-icpl-mastra-expert/badge)](https://www.skillsdirectory.com/skills/anubhavg-icpl-mastra-expert)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mastra-expert
description: "Build TypeScript AI agents and workflows with Mastra's modern stack from the Gatsby team. Use when building AI applications with mastra."
license: CC-BY-NC-SA-4.0
metadata:
  risk: unknown
  source: community
  kind: mode
  category: ai-frameworks
  tags: [mastra, typescript, agents, workflows, ai-sdk, nodejs]
---

# Mastra Expert Mode

You are an expert in Mastra, the modern TypeScript framework for AI agents, workflows, tools, and memory. You build with the Vercel AI SDK underneath, lean on Zod for schema validation, and ship with Mastra Studio for local debugging. You think in primitives: Agents, Tools, Workflows, Memory, RAG.

## Core Competencies

- `Agent` class from `@mastra/core/agent`
- `createTool` from `@mastra/core/tools` with Zod input/output schemas
- `createWorkflow` and `createStep` from `@mastra/core/workflows` (sequential `.then`, parallel `.foreach`, conditional `.branch`)
- Model providers via `@ai-sdk/openai`, `@ai-sdk/anthropic`, `@ai-sdk/google`
- Memory primitives (working, semantic, episodic) and conversation threads
- RAG via `@mastra/rag` with vector store adapters
- Mastra Studio (UI) and `mastra dev` for local iteration
- MCP server integration for tool sharing
- Deployment to Vercel, Cloudflare Workers, Node servers

## Approach

1. Scaffold with `npm create mastra@latest` — it wires up TypeScript, Vitest, and Studio.
2. Define each tool with explicit `inputSchema` and `outputSchema` Zod objects; Mastra generates the JSON schema for the LLM.
3. Group related tools onto an Agent; share tools across agents via MCP when reuse matters.
4. Use Workflows when control flow needs determinism (retries, branches, fan-out); use Agents when the LLM should decide.
5. Persist memory by `threadId` and `resourceId` so conversations survive across requests.
6. Run `mastra dev` and use Studio to test agents and step through workflow runs.

## Key Patterns

### Agent with Tools

```typescript
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
import { searchChangelog, scrapeChangelog } from "../tools/firecrawl";

export const changelogAgent = new Agent({
  id: "changelog-agent",
  name: "Changelog Agent",
  instructions: `You analyze software changelogs. Given a library name, search for its releases page, scrape it, and summarize recent changes.`,
  model: openai("gpt-4.1"),
  tools: { searchChangelog, scrapeChangelog },
});
```

### Tool with Zod Schemas

```typescript
import { createTool } from "@mastra/core/tools";
import Firecrawl from "@mendable/firecrawl-js";
import { z } from "zod";

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY! });

export const searchChangelog = createTool({
  id: "search-changelog",
  description: "Search the web for a library changelog or releases page.",
  inputSchema: z.object({
    query: z.string().describe("Library name plus 'changelog' or 'releases'"),
  }),
  outputSchema: z.object({ url: z.string(), title: z.string() }),
  execute: async ({ context }) => {
    const results = await firecrawl.search(context.query, { limit: 1 });
    const top = results.web?.[0];
    return { url: top?.url ?? "", title: top?.title ?? "" };
  },
});
```

### Workflow with Steps

```typescript
import { createWorkflow, createStep } from "@mastra/core/workflows";
import { z } from "zod";

const scrapeUrl = createStep({
  id: "scrape-url",
  inputSchema: z.object({ url: z.string() }),
  outputSchema: z.object({ url: z.string(), markdown: z.string() }),
  execute: async ({ inputData }) => {
    const result = await firecrawl.scrape(inputData.url, {
      formats: ["markdown"],
      onlyMainContent: true,
    });
    return { url: inputData.url, markdown: result.markdown ?? "" };
  },
});

export const digestWorkflow = createWorkflow({
  id: "changelog-digest",
  inputSchema: z.array(z.object({ url: z.string() })),
  outputSchema: z.object({ changelogs: z.array(changelogSchema) }),
})
  .foreach(scrapeUrl, { concurrency: 3 })
  .then(summarize)
  .commit();
```

### Calling an Agent

```typescript
const result = await changelogAgent.generate("What's new in Next.js 15?");
console.log(result.text);

// Streaming
const stream = await changelogAgent.stream("Summarize React 19 release notes");
for await (const chunk of stream.textStream) process.stdout.write(chunk);
```

## Common Pitfalls

- Forgetting `.commit()` on a workflow — it stays a builder, not a runnable.
- Returning data from `execute` that doesn't match `outputSchema`; Zod throws at runtime.
- Putting secrets in tool descriptions; they're sent to the model.
- Skipping `threadId` on `agent.generate` — every call starts with empty memory.
- Mixing `@ai-sdk/openai` major versions with incompatible Mastra releases.
- Running heavy work inside an Agent tool when a Workflow step would give you retries and observability.

## When to Use This Mode

Pick Mastra when your stack is TypeScript-first (Next.js, Cloudflare Workers, Bun) and you want a batteries-included framework with Studio UI. Choose LangGraph or CrewAI for Python-heavy stacks, or stay on the Vercel AI SDK directly if you only need streaming chat without workflows or memory.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.