comfyui-aks/.github/workflows/skills/comfyui/SKILL.md
Your job is to convert a json workflow graph for ai image generation into a typescript function.
npx skillsauth add thangchung/agent-engineering-experiment comfyui-converterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Your job is to convert a json workflow graph for ai image generation into a typescript function.
.describe to describe each parameter to the best of your ability.import { z } from "zod"; import config from "../config";
let checkpoint: any = config.models.checkpoints.enum.optional(); if (config.warmupCkpt) { checkpoint = checkpoint.default(config.warmupCkpt); }
const ComfyNodeSchema = z.object({ inputs: z.any(), class_type: z.string(), _meta: z.any().optional(), });
type ComfyNode = z.infer<typeof ComfyNodeSchema>;
interface Workflow { RequestSchema: z.ZodObject<any, any>; generateWorkflow: (input: any) => ComfyPrompt; description?: string; summary?: string; }
const RequestSchema = z.object({ prompt: z.string().describe("The positive prompt for image generation"), width: z .number() .int() .min(256) .max(2048) .optional() .default(1024) .describe("Width of the generated image"), height: z .number() .int() .min(256) .max(2048) .optional() .default(1024) .describe("Height of the generated image"), seed: z .number() .int() .optional()`` .default(() => Math.floor(Math.random() * 1000000000000000)) .describe("Seed for random number generation"), steps: z .number() .int() .min(1) .max(100) .optional() .default(4) .describe("Number of sampling steps"), cfg_scale: z .number() .min(0) .max(20) .optional() .default(1) .describe("Classifier-free guidance scale"), sampler_name: config.samplers .optional() .default("euler") .describe("Name of the sampler to use"), scheduler: config.schedulers .optional() .default("simple") .describe("Type of scheduler to use"), denoise: z .number() .min(0) .max(1) .optional() .default(1) .describe("Denoising strength"), checkpoint, });
type InputType = z.infer<typeof RequestSchema>;
function generateWorkflow(input: InputType): ComfyPrompt { return { "6": { inputs: { text: input.prompt, clip: ["30", 1], }, class_type: "CLIPTextEncode", _meta: { title: "CLIP Text Encode (Positive Prompt)", }, }, "8": { inputs: { samples: ["31", 0], vae: ["30", 2], }, class_type: "VAEDecode", _meta: { title: "VAE Decode", }, }, "9": { inputs: { filename_prefix: "Flux", images: ["8", 0], }, class_type: "SaveImage", _meta: { title: "Save Image", }, }, "27": { inputs: { width: input.width, height: input.height, batch_size: 1, }, class_type: "EmptySD3LatentImage", _meta: { title: "EmptySD3LatentImage", }, }, "30": { inputs: { ckpt_name: input.checkpoint, }, class_type: "CheckpointLoaderSimple", _meta: { title: "Load Checkpoint", }, }, "31": { inputs: { seed: input.seed, steps: input.steps, cfg: input.cfg_scale, sampler_name: input.sampler_name, scheduler: input.scheduler, denoise: input.denoise, model: ["30", 0], positive: ["6", 0], negative: ["33", 0], latent_image: ["27", 0], }, class_type: "KSampler", _meta: { title: "KSampler", }, }, "33": { inputs: { text: "", clip: ["30", 1], }, class_type: "CLIPTextEncode", _meta: { title: "CLIP Text Encode (Negative Prompt)", }, }, }; }
const workflow: Workflow = { RequestSchema, generateWorkflow, summary: "Text to Image", description: "Generate an image from a text prompt", };
export default workflow;
tools
Help users explore menu items, categories, and prices through ToolSearch.Gateway.
tools
Resolve customer identity and account basics by email, phone, name, or customer ID through ToolSearch.Gateway.
tools
End-to-end counter: identify customer, classify intent, build order, confirm, submit. ToolSearch.Gateway-first. No direct MCP or CLI calls.
development
Use this skill when you need documentation for a third-party library, SDK, or API before writing code that uses it — for example, "use the OpenAI API", "call the Stripe API", "use the Anthropic SDK", "query Pinecone", or any time the user asks you to write code against an external service and you need current API reference. Fetch the docs with chub before answering, rather than relying on training knowledge.