ワンクリックで
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