Agent skill

Pinme Email

by glitternetwork in glitternetwork/pinme

A skill your agent uses when a PinMe project (Worker TypeScript) needs to integrate email sending (sendemail).

MITAuto-check passedBackend & APIs

Install Pinme Email

skills CLI
$ npx skills add glitternetwork/pinme --skill pinme-email -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install glitternetwork/pinme pinme-email --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/glitternetwork/pinme.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/pinme-email .claude/skills/pinme-email && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pinme-email
GitHub stars
3.7k
Token cost
~1.2k tokens
SKILL.md length
156 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when a PinMe project (Worker TypeScript) needs to integrate email sending (sendemail).

  • A PinMe project (Worker TypeScript) needs to integrate email sending (sendemail)
  • SKILL.md covers Environment Variables, Send Email API and Error Handling Pattern
  • Reaches pinme.cloud; needs API_KEY
  • Tasks that involve Transactional email

What it does

Pinme Email is an agent skill from glitternetwork/pinme. Use this skill when a PinMe project (Worker TypeScript) needs to integrate email sending (sendemail). Guides AI to generate correct Worker TS code.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Transactional email. It works with TypeScript. The repository describes itself as: Deploy Your Frontend in a Single Command. Claude Code Skills supported. The licence is MIT.

When your agent uses it

  • A PinMe project (Worker TypeScript) needs to integrate email sending (sendemail)
  • Tasks that involve Transactional email

Example prompts

  • “/pinme-email”

Requirements

  • A credential in API_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 7822b05. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • pinme.cloud

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pinme Email loads about 1.2k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 156 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~40
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from glitternetwork/pinme at commit 7822b05, republished under its MIT licence (© glitternetwork). 156 words, ~1,207 tokens.

Download SKILL.mdSave it as .claude/skills/pinme-email/SKILL.md (or your agent's skills folder).
name
pinme-email
description
Use this skill when a PinMe project (Worker TypeScript) needs to integrate email sending (send_email). Guides AI to generate correct Worker TS code.

PinMe Worker Email API Integration

Guides how to call PinMe platform's email sending API in a PinMe Worker (TypeScript).

Environment Variables

The following environment variables are automatically injected when the Worker is created — no manual configuration needed:

typescript
// backend/src/worker.ts
export interface Env {
  DB: D1Database;
  API_KEY: string;      // Project API Key — used for send_email authentication
  BASE_URL?: string;    // Optional override for PinMe API base URL, defaults to https://pinme.cloud
}

API_KEY is the sole credential for the Worker to call PinMe platform APIs. When BASE_URL is not set, it defaults to https://pinme.cloud.


Send Email API

Endpoint: POST {BASE_URL}/api/v4/send_email Authentication: X-API-Key header (using env.API_KEY) Sender: Automatically set to {project_name}@pinme.cloud

Request Format
json
{
  "to": "user@example.com",
  "subject": "Your verification code",
  "html": "<p>Your code is <strong>123456</strong></p>"
}
FieldTypeRequiredDescription
tostringYesRecipient email address
subjectstringYesEmail subject
htmlstringYesHTML body
Response Format

Success (200):

json
{ "code": 200, "msg": "ok", "data": { "ok": true } }

Errors:

HTTP StatusMeaningdata.error Example
401API Key missing or invalid"X-API-Key header is required" / "Invalid API key"
400Parameter validation failed"Invalid email address" / "Subject is required"
500Email service error"Failed to send email"
Worker Example Code
typescript
async function sendEmail(env: Env, to: string, subject: string, html: string): Promise<{ ok: boolean; error?: string }> {
  const baseUrl = env.BASE_URL ?? 'https://pinme.cloud';
  const resp = await fetch(`${baseUrl}/api/v4/send_email`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': env.API_KEY,
    },
    body: JSON.stringify({ to, subject, html }),
  });

  const result = await resp.json() as { code: number; msg: string; data?: { ok?: boolean; error?: string } };

  if (resp.status !== 200 || result.code !== 200) {
    return { ok: false, error: result.data?.error || result.msg || 'Unknown error' };
  }
  return { ok: true };
}

// Usage in routes
async function handleSendVerification(request: Request, env: Env): Promise<Response> {
  const { email } = await request.json() as { email: string };
  const code = Math.random().toString().slice(2, 8);

  const result = await sendEmail(env, email, 'Verification Code',
    `<p>Your code is <strong>${code}</strong></p>`);

  if (!result.ok) {
    return json({ error: result.error }, 500);
  }
  return json({ ok: true });
}

Error Handling Pattern

PinMe platform API unified response format:

typescript
interface PinmeResponse<T = unknown> {
  code: number;   // 200=success, other=failure
  msg: string;    // "ok" | "error" | "invalid params"
  data?: T;       // Business data on success, may contain { error: string } on failure
}
typescript
async function callPinmeAPI<T>(url: string, apiKey: string, body: unknown): Promise<{ data?: T; error?: string }> {
  let resp: Response;
  try {
    resp = await fetch(url, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json', 'X-API-Key': apiKey },
      body: JSON.stringify(body),
    });
  } catch {
    return { error: 'Network error' };
  }

  if (!resp.ok) {
    try {
      const err = await resp.json() as PinmeResponse;
      return { error: err.data && typeof err.data === 'object' && 'error' in err.data
        ? (err.data as { error: string }).error
        : err.msg || `HTTP ${resp.status}` };
    } catch {
      return { error: `HTTP ${resp.status}` };
    }
  }

  const result = await resp.json() as PinmeResponse<T>;
  if (result.code !== 200) {
    return { error: result.data && typeof result.data === 'object' && 'error' in result.data
      ? (result.data as { error: string }).error
      : result.msg };
  }
  return { data: result.data as T };
}
Usage Example
typescript
const baseUrl = env.BASE_URL ?? 'https://pinme.cloud';

// Send email
const emailResult = await callPinmeAPI<{ ok: boolean }>(
  `${baseUrl}/api/v4/send_email`, env.API_KEY,
  { to: 'user@example.com', subject: 'Hello', html: '<p>Hi</p>' },
);
if (emailResult.error) return json({ error: emailResult.error }, 500);

© glitternetwork, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/pinme-email of glitternetwork/pinme.

Open the folder on GitHubat commit 7822b05

Compare with similar skills

Pinme Email next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pinme Email compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pinme Email this skillglitternetwork/pinme3.7k—~1.2kAutomated safety check: PassMIT
React Emailviclafouch/meme-studio1102 repos~3.6kAutomated safety check: PassMIT
E2a Integratetokencanopy/e2a193—~840Automated safety check: PassApache-2.0
Email Template Builderborghei/Claude-Skills886—~5.7kAutomated safety check: PassMIT
Templatical Email Templatestemplatical/sdk521—~870Automated safety check: PassMIT
Node Backend Development Guidelinesdiet103/claude-code-infrastructure-showcase10k2 repos~2kAutomated safety check: PassMIT

Similar skills

  • React Email

    viclafouch/meme-studio

    A skill your agent uses when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.

    110 GitHub starsUsed in 2 repos~3.6k tokens
    Backend & APIsAuto-check passed
  • E2a Integrate

    tokencanopy/e2a

    A skill your agent uses when adding e2a email capabilities to an application or codebase: outbound sending, inbound signed webhooks, REST polling, or SDK integration.

    193 GitHub stars~840 tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • Email Template Builder

    borghei/Claude-Skills

    Build email template systems with React Email or MJML: responsive layouts, dark mode, multi-provider sending, and spam score optimization.

    886 GitHub stars~5.7k tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed
  • Authors, edits, validates and previews Templatical email template JSON and helps integrate the @templatical/editor SDK into an application.

    521 GitHub stars~870 tokensUpdated today
    Writing & ContentAuto-check passed
  • Node Backend Development Guidelines

    diet103/claude-code-infrastructure-showcase

    Sets layered architecture and coding rules for Node.js, Express and TypeScript microservices, covering routes, controllers, services, repositories, Prisma, Sentry and Zod.

    10k GitHub starsUsed in 2 repos~2k tokens
    Backend & APIsAuto-check passed
  • OpenAPI to MCP Server

    mcp-use/mcp-use

    Turns an OpenAPI or Swagger spec into an MCP server with the mcp-use TypeScript SDK, mapping each operation to a tool, wiring auth, testing and deploying.

    11k GitHub stars~5.2k tokensUpdated today
    Backend & APIsAuto-check passed

More from glitternetwork/pinme

  • Pinme

    glitternetwork/pinme

    A skill your agent uses when the user mentions "pinme", or needs to upload files, store to IPFS, create/publish/deploy websites or full-stack services (including frontend pages, backend APIs…

    3.7k GitHub stars~3.8k tokensUpdated 27 days ago
    Auto-check: notes
  • Pinme Auth

    glitternetwork/pinme

    A skill your agent uses when a PinMe project (Worker TypeScript) needs to integrate user authentication — creating email/password users, verifying idtokens, querying user info, or listing users via…

    3.7k GitHub stars~2.6k tokensUpdated 27 days ago
    Auto-check passed
  • Pinme LLM

    glitternetwork/pinme

    A skill your agent uses when a PinMe project (Worker TypeScript) needs to call OpenRouter-backed LLM APIs, including models, chat/completions, streaming, or OpenRouter web search.

    3.7k GitHub stars~2.8k tokensUpdated 27 days ago
    Auto-check passed
  • Pinme R2

    glitternetwork/pinme

    A skill your agent uses when a PinMe Cloudflare Worker needs R2 object storage, including secure file or image upload, streaming download, metadata lookup, deletion, listing, Range requests, or…

    3.7k GitHub stars~3.6k tokensUpdated 27 days ago
    Auto-check passed
  • Pinme Share

    glitternetwork/pinme

    A skill your agent uses when the user wants to share, publish, or upload a static result through PinMe, especially by generating a static HTML share page for a PinMe project link, deployed…

    3.7k GitHub stars~1.2k tokensUpdated 27 days ago
    Auto-check: notes
  • Pinme Uniwebpay

    glitternetwork/pinme

    A skill your agent uses when generating, modifying, or reviewing PinMe Worker (Cloudflare Worker TypeScript) code that accepts payments through UniwebPay — payment links, products/prices, checkout…

    3.7k GitHub stars~7.3k tokensUpdated 27 days ago
    Auto-check passed

Works with

Categories

Questions about Pinme Email

What does Pinme Email do?

A skill your agent uses when a PinMe project (Worker TypeScript) needs to integrate email sending (sendemail). Pinme Email is an agent skill from glitternetwork/pinme. Use this skill when a PinMe project (Worker TypeScript) needs to integrate email sending (sendemail).

When should I use Pinme Email?

Pinme Email fits situations like: A PinMe project (Worker TypeScript) needs to integrate email sending (sendemail); tasks that involve Transactional email.

How do I install Pinme Email in Claude Code?

Run `npx skills add glitternetwork/pinme --skill pinme-email -a claude-code`. Or copy the skill folder (skills/pinme-email in glitternetwork/pinme) into .claude/skills/pinme-email in your project. Claude Code loads it when a task matches its description.

How do I install Pinme Email in Codex?

Run `npx skills add glitternetwork/pinme --skill pinme-email -a codex`. Or copy the skill folder (skills/pinme-email in glitternetwork/pinme) into .agents/skills/pinme-email in your project. Codex loads it when a task matches its description.

Can I use Pinme Email in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add glitternetwork/pinme --skill pinme-email -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pinme-email, .gemini/skills/pinme-email, .github/skills/pinme-email and .opencode/skills/pinme-email in your project.

What does Pinme Email need to run?

Going by SKILL.md and its folder, Pinme Email needs credentials named API_KEY. Our summary lists: A credential in API_KEY.

Does Pinme Email access the network?

SKILL.md names 1 domain. In commands or code: pinme.cloud; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Pinme Email safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pinme Email use?

Pinme Email is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pinme Email use?

About 1.2k tokens (SKILL.md is roughly 4.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Pinme Email?

Skills that share tags, products or a category with Pinme Email: React Email (viclafouch/meme-studio, 110 stars), E2a Integrate (tokencanopy/e2a, 193 stars), Email Template Builder (borghei/Claude-Skills, 886 stars) and Templatical Email Templates (templatical/sdk, 521 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pinme Email?

glitternetwork (a GitHub organization) maintains it in glitternetwork/pinme, which has 3,748 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on September 12, 2026.

Source: glitternetwork/pinme on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.