.cursor/skills/act/ai-crew-create/SKILL.md
Create an AI crew/committee workflow in KaibanJS. Use when the user wants to assemble a virtual team of AI agents to review, analyze, or synthesize documents from multiple expert perspectives.
npx skillsauth add JuroOravec/agents act-ai-crew-createInstall 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.
End-to-end workflow for designing and implementing a role-based multi-agent crew (CrewAI-style) in KaibanJS. Assembles a virtual committee of AI agents that pool perspectives and produce structured output.
This skill is part of the act-ai-* area: tasks that invoke AI/LLM-based workflows.
Trigger this skill when:
Format: All skills MUST use ### Phase N: Title for each workflow step. Enforced by validation script in CI.
Skill-eval (meta-evaluation): From the project root, run ./scripts/skill-eval.sh start {conversation_id} act-ai-crew-create at workflow start (conversation_id is injected at session start—look for "Conversation ID (for skill-eval)" in context). Capture the printed skill_id from the terminal output. Preserve both conversation_id and skill_id for the duration—if context gets summarized, ensure these IDs are retained. After each phase (or when skipping a phase), run ./scripts/skill-eval.sh complete {skill_id} {phase_no} or ./scripts/skill-eval.sh complete {skill_id} {phase_no} --skipped from the project root.
Create todo tasks for each phase before proceeding.
Determine what committee we are creating and for what task.
Check for existing context. The user or calling agent may have already specified:
If context is missing or incomplete, ask the user or agent that invoked you:
Summarize the gathered context in a brief spec (1-2 paragraphs) and confirm with the user before proceeding.
Choose the coordination pattern and define how inputs and outputs flow.
Select a pattern from crew_ai.md:
| Pattern | Best for | Flow | | ------- | -------- | ---- | | Evaluator-Optimizer (Actor-Critic) | One agent creates, another validates. Loop until pass. | Generator → Evaluator (retry loop) → output | | Parallel Panel (Map-Reduce) | Multiple agents review same artifact concurrently. | Router → [Agent A, Agent B, Agent C] (parallel) → Synthesizer | | Sequential Conference Room | Multiple perspectives, one at a time, then synthesize. | Agent 1 → Agent 2 → … → Synthesizer (single flow) |
Define input/output contracts:
team.start()? (e.g. { prd_document: string }, { code: string }).{taskResult:taskN}?{ updated_prd_content, outstanding_questions }).Document the flow as a simple diagram or bullet list and confirm with the user.
Specify the exact collection of agents, their roles, backgrounds, goals, and model selection.
List agents with:
Assign models (fast vs thinking):
gpt-5, claude-sonnet-4): Complex reasoning, synthesis, security, architecture.gpt-5-mini, claude-3-haiku): Simpler validation, formatting, routing.Assign tasks to agents: Which agent executes each task? Note any agent that leads multiple tasks or synthesizes final output.
Record the agent spec and confirm with the user.
Convert the spec into TypeScript and write it to scripts/crews/ (or another location if explicitly specified). Each crew is a single file that defines the team and includes the runner logic.
Ensure scripts/crews/config.ts exists (if not, create it). It exports smartLlm and fastLlm — { provider, model } objects for capability tiers. Override via CREW_MODEL_SMART and CREW_MODEL_FAST env vars (provider:model format). See crew_ai.md for the registry pattern.
Create the crew script (e.g. scripts/crews/{name}.ts):
smartLlm, fastLlm from ./config.js for agent llmConfig.inputPath and outputPath args; optional --demo to use a built-in example (DEMO_*).runXxx({ inputPath, outputPath, demo? }) for programmatic use.{variable_name} for input placeholders and {taskResult:taskN} for prior task results.Add a pnpm script in package.json with crew- prefix (e.g. "crew-prd-review": "tsx scripts/crews/prd-review.ts").
Ensure dependencies: kaibanjs and zod in package.json (or project deps).
Reference implementation: scripts/crews/prd-review.ts — a full PRD Review Committee (crew + runner in one file). scripts/crews/config.ts — central model registry.
Code template (scripts/crews/{name}.ts):
#!/usr/bin/env node
import { readFile, writeFile } from "node:fs/promises";
import { z } from "zod";
import { Agent, Task, Team } from "kaibanjs";
import { fastLlm, smartLlm } from "./config.js";
const OutputSchema = z.object({ /* fields */ });
type Output = z.infer<typeof OutputSchema>;
const agent1 = new Agent({ name, role, goal, background, llmConfig: smartLlm });
const agent2 = new Agent({ name, role, goal, background, llmConfig: fastLlm });
const task1 = new Task({ description: "…{input_var}…", expectedOutput: "…", agent: agent1 });
const task2 = new Task({ description: "…{taskResult:task1}…", expectedOutput: "…", agent: agent2, outputSchema: OutputSchema });
const team = new Team({ name, agents: [agent1, agent2], tasks: [task1, task2], memory: true, env: process.env });
export const DEMO_INPUT = "…"; // example format for --demo
export async function runXxx(opts: { inputPath: string; outputPath: string; demo?: boolean }): Promise<Output> {
const input = opts.demo ? DEMO_INPUT : await readFile(opts.inputPath, "utf-8");
const output = await team.start({ input_var: input });
if (output.status !== "FINISHED") throw new Error(output.status);
const result = output.result as Output;
await writeFile(opts.outputPath, /* format result */, "utf-8");
return result;
}
scripts/crews/README.md describing the new crew and usage.scripts/crews/ (single file or config + crew)act-ai-crew-run skilldata-ai
Configure which projects are connected to a root repo via nested git clones. Applies when the repo has shared .cursor/ and imported projects as normal clone folders. Use when adding, removing, or soft/hard switching projects. Soft switch = toggle .gitignore (no push, WIP stays). Hard switch = remove/add clone folders. Handles progress storage and window reload reminders.
development
Execute development work from a pool of GitHub issues. Take one at a time, implement via act-dev, close the issue when done. Use when architect/PM has produced a backlog of issues to implement in parallel.
testing
Adversarial reviewer that independently checks completed work for incomplete output, non-holistic approach, glaring issues, and skill discovery.
development
Project manager agent for capture, triage, and prioritization. Use when capturing ideas, going over inbox (elevate/drop/prioritize), triaging backlog, asking "what's next?", or restoring context. First local, then GitHub — never auto-create issues.