一键导入
scaffold-ai-tool
Scaffold a new chatbot AI tool (Zod schema, runner, barrel export, agent registration) following MMPS conventions
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Scaffold a new chatbot AI tool (Zod schema, runner, barrel export, agent registration) following MMPS conventions
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Verifies factual claims in documents using web search and official sources, then proposes corrections with user confirmation. Use when the user asks to fact-check, verify information, validate claims, check accuracy, or update outdated information in documents. Supports AI model specs, technical documentation, statistics, and general factual statements.
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, passive voice, negative parallelisms, and filler phrases.
Research an external website, API, tool, or service and produce an MMPS-specific feasibility + integration plan
Plan new MMPS features by exploring the codebase and producing a structured implementation plan that follows project conventions
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
Generates optimized prompts for AI tools. Activates only when the user explicitly asks to write, fix, improve, or adapt a prompt for a specific AI tool (LLM, Cursor, Midjourney, image AI, video AI, coding agents, etc.). Does not activate for general conversation, coding tasks, document writing, or other non-prompt-engineering work.
| name | scaffold-ai-tool |
| description | Scaffold a new chatbot AI tool (Zod schema, runner, barrel export, agent registration) following MMPS conventions |
Create a new LangGraph tool for the chatbot agent end-to-end from a short description, wiring it through every place MMPS expects.
Use this when the user says things like "add a tool that…", "I want the chatbot to be able to…", "create an AI tool for…".
flights → flightsTool). Infer from the request when obvious./scaffold-service); a tool should call a service, not embed raw HTTP/business logic.action enum is appropriate (the codebase favors one tool with an action enum over many tiny tools — see polymarket, gmail, spotify).src/shared/ai/tools/{name}/{name}.tool.ts, modeled on src/shared/ai/tools/crypto/crypto.tool.ts:
import { tool } from '@langchain/core/tools';
import { z } from 'zod';
import { /* service fns */ } from '@services/{service}'; // or @shared/...
const schema = z.object({
// Every field MUST have .describe(). Mark optionals with .optional().
action: z.enum(['...', '...']).describe('Action to perform'),
query: z.string().min(1).describe('...'),
});
async function runner({ action, query }: z.infer<typeof schema>) {
switch (action) {
// delegate to service/shared functions; keep business logic OUT of the tool
}
}
export const {name}Tool = tool(runner, {
name: '{name}',
description: 'Short description the model uses to decide when to call this',
schema,
});
Rules: type not interface; named exports only; async/await not .then(); env from node:process if needed; no JSDoc.
Add to src/shared/ai/tools/index.ts:
export { {name}Tool } from './{name}/{name}.tool';
Confirm the tool is re-exported from @shared/ai (the chatbot imports tools from there).
Edit src/features/chatbot/agent/agent.ts:
{name}Tool to the import from @shared/ai (keep alphabetical order).{name}Tool to the tools array inside agent().AGENT_PROMPT describing when to use it and any natural-language variations (match the style of existing tools like Polymarket/Spotify). Update AGENT_DESCRIPTION if the new capability is significant.npm run lint:fix on the changed files.npx tsc --noEmit (or npm run build) to confirm types/imports resolve..describe() on every fieldtools/index.tstools array in agent.tsAGENT_PROMPT (and AGENT_DESCRIPTION if needed) updated