Token导航 LogoToken导航TokenDH.com
研究检索external-servicegithub未标认证来源可访问许可证需确认审计提醒

action-creator动作创造者

Agent Skill

action-creator 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,560

周安装

67

GitHub Stars

2,318

下载量

547
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:action-creator(动作创造者)
来源仓库:https://github.com/anthropics/claude-agent-sdk-demos
仓库路径:skills/action-creator
安装命令:
npx skills add https://github.com/anthropics/claude-agent-sdk-demos --skill action-creator
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/anthropics/claude-agent-sdk-demos --skill action-creator

简介

该技能用于生成可点击执行的 TypeScript 操作模板,支持用户自定义工作流自动化。

  • 适用于创建针对特定客户、供应商或业务流程的一键式操作,如发送提醒或转发任务。
  • 通过定义参数化动作,将重复性邮件或沟通任务转化为可复用组件。
  • 使用前需在 agent/custom_scri 目录下配置 TypeScript 文件,并确保宿主环境支持运行时执行。
  • 注意权限范围,避免在敏感上下文中自动触发外部通信或数据修改操作。

SKILL.md

Action Creator

Creates TypeScript action template files that define reusable, user-specific operations users can execute with one click in the chat interface.

When to Use This Skill

Use this skill when the user wants to:

  • Create reusable actions for their specific workflows ("I often need to send payment reminders to ACME Corp")
  • Set up one-click operations for their vendors/customers ("Forward bugs to engineering team")
  • Automate repetitive email tasks with their specific context ("Archive newsletters from TechCrunch/Morning Brew")
  • Build personalized email management tools for their business processes

Key difference from listeners: Actions are user-triggered (clicked in chat), while listeners are event-triggered (automatic).

How Actions Work

Actions are TypeScript files in agent/custom_scripts/actions/ that:

  1. Export a config object defining the template metadata and parameter schema
  2. Export a handler function that executes the operation with given parameters
  3. Use ActionContext methods to perform operations (email API, send emails, call AI, etc.)

The agent creates action instances during conversation by providing specific parameters to these templates, which appear as clickable buttons in the chat.

Creating an Action Template

1. Understand User-Specific Workflow

Parse the user's request to identify:

  • User context: Who are their specific vendors/customers/teams?
  • Operation: What specific action do they need? (send to ACME Corp, forward to engineering team, etc.)
  • Parameters: What varies per execution? (invoice number, priority level, days old)
  • Frequency: How often will they use this?

2. Write the Action Template File

Create a file in agent/custom_scripts/actions/ with this structure:

import type { ActionTemplate, ActionContext, ActionResult } from "../types";

export const config: ActionTemplate = {
  id: "unique_action_id",                    // kebab-case, user-specific
  name: "Human Readable Name",                // For UI display
  description: "What this action does",       // Explain the operation
  icon: "📨",                                 // Optional emoji icon
  parameterSchema: {
    type: "object",
    properties: {
      paramName: {
        type: "string",                      // or "number", "boolean"
        description: "Parameter description",
        enum: ["option1", "option2"],        // Optional: restrict values
        default: "defaultValue"              // Optional: default value
      }
    },
    required: ["paramName"]                  // List required parameters
  }
};

export async function handler(
  params: Record<string, any>,
  context: ActionContext
): Promise<ActionResult> {
  const { paramName } = params;

  context.log(`Starting action: ${config.name}`);

  try {
    // 1. Perform operations using context methods
    // 2. Use AI for intelligent processing if needed
    // 3. Update emails, send emails, etc.

    context.notify("Action completed successfully", {
      type: "success",
      priority: "normal"
    });

    return {
      success: true,
      message: "Action completed successfully",
      data: { /* optional structured data */ },
      refreshInbox: true  // Optional: refresh inbox after action
    };
  } catch (error: any) {
    context.log(`Action failed: ${error}`, "error");
    return {
      success: false,
      message: `Failed: ${error.message}`
    };
  }
}

3. File Naming Convention

Use kebab-case that reflects the user-specific operation:

  • send-payment-reminder-to-acme.ts (not send-email.ts)
  • forward-bugs-to-engineering.ts (not forward-email.ts)
  • archive-newsletters-from-techcrunch.ts (not archive-emails.ts)
  • summarize-weekly-updates-from-ceo.ts (not summarize-emails.ts)

Important: Templates should be specific to the user's actual workflows, vendors, teams, and processes.

4. Available Context Methods

The ActionContext provides these capabilities:

// Email API operations
const emails = await context.emailAPI.getInbox({ limit: 30, includeRead: false });
const results = await context.emailAPI.searchEmails({ from: "sender@example.com" });
const results = await context.emailAPI.searchWithGmailQuery("from:sender after:2024/01/01");
const emails = await context.emailAPI.getEmailsByIds(["id1", "id2"]);
const email = await context.emailAPI.getEmailById("email-id");

// Direct email operations
await context.archiveEmail(emailId);
await context.starEmail(emailId);
await context.unstarEmail(emailId);
await context.markAsRead(emailId);
await context.markAsUnread(emailId);
await context.addLabel(emailId, "label-name");
await context.removeLabel(emailId, "label-name");

// Send emails
const result = await context.sendEmail({
  to: "recipient@example.com",
  subject: "Email subject",
  body: "Email body content",
  cc: "cc@example.com",           // Optional
  bcc: "bcc@example.com",          // Optional
  replyTo: "reply@example.com"     // Optional
});

// AI-powered processing
const analysis = await context.callAgent<ResultType>({
  prompt: "Analyze this email and extract key info...",
  systemPrompt: "You are an expert at...",  // Optional
  tools: ["Read", "WebSearch"],              // Optional
  maxTokens: 2000                            // Optional
});

// Session messaging (inject into chat)
context.addUserMessage("User said this");
context.addAssistantMessage("Assistant responds");
context.addSystemMessage("System notification");

// Notifications
context.notify("Operation completed", {
  priority: "high" | "normal" | "low",
  type: "info" | "success" | "warning" | "error"
});

// External API access
const response = await context.fetch("https://api.example.com/data");
const data = await response.json();

// Logging (visible in server logs)
context.log("Info message", "info");
context.log("Warning message", "warn");
context.log("Error message", "error");

Action Result

Always return an ActionResult object:

return {
  success: true,                          // Required: boolean
  message: "Human-readable result",       // Required: string
  data: { key: "value" },                // Optional: structured data
  suggestedActions: [],                   // Optional: follow-up actions
  refreshInbox: true                      // Optional: refresh inbox
};

Examples and Templates

Reference the template files for common patterns:

Best Practices

  1. User-Specific Templates: Create templates tailored to user's actual vendors, customers, teams, and processes
  2. Descriptive Naming: Use specific names that reflect the operation (not generic like "send-email")
  3. Rich Parameter Schemas: Define clear parameter types with descriptions
  4. AI-Powered: Use context.callAgent() for intelligent processing
  5. Error Handling: Always wrap operations in try-catch and return meaningful errors
  6. Clear Messages: Return human-readable success/failure messages
  7. Idempotency: Design handlers to be safely re-runnable when possible
  8. Logging: Use context.log() for debugging and audit trail

Parameter Schema Guidelines

Define parameters using JSON Schema:

parameterSchema: {
  type: "object",
  properties: {
    // String parameter
    emailId: {
      type: "string",
      description: "Email ID to process"
    },

    // Number parameter with default
    daysOld: {
      type: "number",
      description: "Number of days old",
      default: 30
    },

    // Enum parameter (dropdown)
    priority: {
      type: "string",
      description: "Priority level",
      enum: ["P0 - Critical", "P1 - High", "P2 - Medium", "P3 - Low"]
    },

    // Boolean parameter
    sendNotification: {
      type: "boolean",
      description: "Send notification when complete"
    }
  },
  required: ["emailId", "priority"]  // List required params
}

Creating the File

When the user requests an action template:

  1. Clarify user-specific context:

- Who are their vendors/customers/teams? - What are their specific workflows? - What parameters vary per execution?

  1. Write the TypeScript file in agent/custom_scripts/actions/
  2. Use Write tool to create the file with:

- Proper imports from "../types" - User-specific config (not generic) - Parameter schema with all required fields - Handler with error handling - Clear success/failure messages

  1. Test parameters: Ensure all required parameters are defined
  2. Confirm with user that the action matches their workflow

Common Patterns

1. Send Email to Specific Recipient

User-specific → Compose email with template → Send → Return result

const body = `Hi ${recipientName},
Your invoice ${invoiceNumber} for ${amount} is ${daysPastDue} days past due...`;

await context.sendEmail({
  to: "accounts.payable@acmecorp.com",
  subject: `Payment Reminder: Invoice ${invoiceNumber}`,
  body
});

2. Bulk Email Operation

Search emails → Filter → Apply operation to each → Return count

const emails = await context.emailAPI.searchWithGmailQuery(query);
for (const email of emails) {
  await context.archiveEmail(email.messageId);
}
return { success: true, message: `Archived ${emails.length} emails` };

3. AI-Powered Email Processing

Get email → Call AI to analyze → Use AI result → Take action → Return summary

const email = await context.emailAPI.getEmailById(emailId);
const analysis = await context.callAgent({
  prompt: `Analyze this bug report: ${email.body}...`,
  maxTokens: 1000
});
await context.sendEmail({ to: "engineering@company.com", ... });

4. Email Forwarding with Enhancement

Get email → AI analysis → Compose enhanced forward → Send → Label original

const email = await context.emailAPI.getEmailById(emailId);
const analysis = await context.callAgent({ /* analyze */ });
await context.sendEmail({
  to: "team@company.com",
  subject: `[${priority}] ${email.subject}`,
  body: `AI Analysis:\n${analysis}\n\nOriginal:\n${email.body}`
});
await context.addLabel(emailId, "FORWARDED");

Type Imports

Always import types from the correct location:

import type { ActionTemplate, ActionContext, ActionResult } from "../types";

// ActionTemplate: Template metadata and parameter schema
// ActionContext: Runtime context with all capabilities
// ActionResult: Return type for handler function

How Users Trigger Actions

After you create an action template:

  1. Agent discovers template: During conversation, agent reads available actions
  2. Agent creates instance: Agent provides specific parameters for user's situation
  3. User sees button: Action instance appears as clickable button in chat
  4. User clicks: Action executes with pre-filled parameters
  5. Result appears: Success/failure message shown in chat

Example flow:

User: "I need to follow up on the ACME invoice"
Agent: [searches emails, finds Invoice #2024-001 is 15 days overdue]
Agent: Creates action instance with parameters:
  {
    templateId: "send_payment_reminder_acme",
    params: { invoiceNumber: "INV-2024-001", amount: "$5,000", daysPastDue: 15 }
  }
User: [sees button "Send payment reminder to ACME Corp for Invoice #2024-001"]
User: [clicks button]
Action: Executes, sends email, returns "Payment reminder sent to ACME Corp"

Reference

Full specification: See project root ACTIONS_SPEC.md for complete details on:

  • Complete type definitions
  • ActionsManager implementation
  • WebSocket protocol
  • Frontend integration
  • Advanced examples
  • Logging and audit trail

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

38.5%
按下载量换算211

Claude

28.17%
按下载量换算154

Cursor

19.97%
按下载量换算109

Gemini CLI

9.36%
按下载量换算51

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

external-service

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills