littleblacky/agenticforge/agenticforge-agents

Claude Code and agent skill by littleblacky/agenticforge

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Expert at selecting and configuring AgenticFORGE agents. Generates correct FunctionCallAgent, ReActAgent, PlanSolveAgent, ReflectionAgent, SimpleAgent, SkillAgent, and WorkflowAgent code with proper configuration. Use when the user wants to build an agent, choose between agent types, configure agent options, or understand agent behavior.

Install

npx vskill@latest install littleblacky/agenticforge/agenticforge-agents

SKILL.md

AgenticFORGE Agents Expert

Role

You are an expert in the @agenticforge/agents package. You select the right agent for the task, configure it correctly, and explain the tradeoffs. You always produce runnable code.

Agent Selection — Non-Negotiable Rules

ScenarioAgentWhy
Simple Q&A, chat, summarizationSimpleAgent1 LLM call, lowest cost
Call external APIs / toolsFunctionCallAgentOpenAI function-calling protocol
Complex multi-step reasoningReActAgentThinks before each action
Long task needing full plan upfrontPlanSolveAgentPlan → Execute (2x LLM cost)
High-quality writing / reviewReflectionAgentGenerate → Critique → Refine
Multiple business capabilitiesSkillAgentLLM-based intent routing
Fixed-flow automation / data pipelineWorkflowAgentDAG node execution, concurrent waves

When in doubt: start with `FunctionCallAgent`. It handles 80% of use cases.

Complete Usage Patterns

SimpleAgent — multi-turn chat
typescript
import "dotenv/config";
import { SimpleAgent, LLMClient } from "@agenticforge/kit";
const agent = new SimpleAgent({
llm: new LLMClient({ provider: "openai", model: "gpt-4o" }),
systemPrompt: "You are a concise technical writer. Answer in 2-3 sentences.",
});
// History is automatically tracked between calls
const r1 = await agent.run("What is RAG?");
const r2 = await agent.run("Give me a code example."); // knows context from r1
agent.clearHistory(); // reset when session ends
FunctionCallAgent — tool-driven tasks

Tool is an abstract class — you must extend it.

typescript
import "dotenv/config";
import { FunctionCallAgent, LLMClient } from "@agenticforge/kit";
import { Tool, type ToolParameter } from "@agenticforge/tools";
// Extend Tool — required, Tool is abstract
class CalculatorTool extends Tool {
constructor() {
super("calculator", "Evaluate a math expression. Returns the numeric result as string.");
}
getParameters(): ToolParameter[] {
return [{ name: "expr", type: "string", description: "Math expression to evaluate", required: true, default: null }];
}
async run(params: Record<string, unknown>): Promise<string> {
try {
return String(eval(String(params.expr ?? ""))); // use a safe math library in production
} catch (e) {
return `Error: ${e instanceof Error ? e.message : String(e)}`;
}
}
}
const agent = new FunctionCallAgent({
llm: new LLMClient({ provider: "openai", model: "gpt-4o" }),
tools: [new CalculatorTool()],
maxIterations: 10,
systemPrompt: "You are a helpful math assistant.",
});
const result = await agent.run("What is (123 + 456) * 789?");
console.log(result);
ReActAgent — step-by-step reasoning
typescript
import { ReActAgent, LLMClient } from "@agenticforge/kit";
const agent = new ReActAgent({
llm: new LLMClient({ provider: "openai", model: "gpt-4o" }),
tools: [new SearchTool(), new CalculatorTool()],
maxIterations: 15,
});
// ReAct outputs: Thought → Action → Observation → ... → Answer
const result = await agent.run(
"What is the GDP of Japan divided by its population? Show your reasoning."
);
PlanSolveAgent — plan-first execution
typescript
import { PlanSolveAgent, LLMClient } from "@agenticforge/kit";
const agent = new PlanSolveAgent({
llm: new LLMClient({ provider: "openai", model: "gpt-4o" }),
tools: [new SearchTool(), new NoteTool()],
// Note: makes 2 LLM calls per run — plan call + execute call
});
const result = await agent.run(
"Research and write a 500-word report on the current state of AI regulation in the EU."
);
ReflectionAgent — quality-first generation
typescript
import { ReflectionAgent, LLMClient } from "@agenticforge/kit";
const agent = new ReflectionAgent({
llm: new LLMClient({ provider: "openai", model: "gpt-4o" }),
reflectionRounds: 2, // 1 generate + 2 critique-refine cycles
});
const result = await agent.run(
"Write a compelling product description for an AI code editor."
);
SkillAgent — multi-capability routing
typescript
import { SkillAgent } from "@agenticforge/agents";
import { SkillLoader } from "@agenticforge/skills";
import { LLMClient } from "@agenticforge/core";
const llm = new LLMClient({ provider: "openai", model: "gpt-4o" });
const mdSkills = await SkillLoader.fromDirectory(".cursor/skills");
const agent = new SkillAgent({
name: "my-assistant",
llm,
skills: [...mdSkills],
});
const reply = await agent.run("What is Apple's stock price?");
const result = await agent.runSkill("stock-query", "AAPL price?"); // bypass routing
WorkflowAgent — DAG workflow orchestration

WorkflowAgent constructor requires a name field. For type:"tool" nodes, tools must be registered in a ToolRegistry (pass instances of Tool subclasses).

typescript
import "dotenv/config";
import { WorkflowAgent, LLMClient } from "@agenticforge/kit";
import type { WorkflowDefinition } from "@agenticforge/workflow";
import { ToolRegistry } from "@agenticforge/tools";
// Register Tool subclass instances for type:"tool" nodes
const registry = new ToolRegistry();
registry.registerTool(new SearchTool()); // SearchTool extends Tool
const agent = new WorkflowAgent({
name: "report-workflow", // required
llm: new LLMClient({ provider: "openai", model: "gpt-4o" }),
registry, // required for type:"tool" nodes
verbose: true, // log execution waves
maxConcurrency: 4, // max concurrent nodes per wave (default: unlimited)
});
// --- Linear pipeline ---
const linear: WorkflowDefinition = {
name: "research-report",
nodes: [
{ id: "fetch", type: "tool", toolName: "search", inputTemplate: "{input}", depends: [] },
{ id: "analyze", type: "llm", promptTemplate: "Analyze:\n{fetch}", depends: ["fetch"] },
{ id: "report", type: "llm", promptTemplate: "Write a report based on:\n{analyze}", depends: ["analyze"] },
],
};
// --- Concurrent fan-out / fan-in ---
const fanOut: WorkflowDefinition = {
name: "bilingual-report",
nodes: [
{ id: "fetch", type: "tool", toolName: "search", inputTemplate: "{input}", depends: [] },
{ id: "analyze", type: "llm", promptTemplate: "Analyze:\n{fetch}", depends: ["fetch"] },
{ id: "translate", type: "llm", promptTemplate: "Translate to Chinese:\n{fetch}", depends: ["fetch"] },
{ id: "report", type: "llm", promptTemplate: "Bilingual report:\n{analyze}\n\n{translate}", depends: ["analyze", "translate"] },
],
};
// --- Custom fn node ---
const withFn: WorkflowDefinition = {
name: "custom-merge",
nodes: [
{ id: "part1", type: "llm", promptTemplate: "Describe pros of {input}", depends: [] },
{ id: "part2", type: "llm", promptTemplate: "Describe cons of {input}", depends: [] },
{
id: "merge", type: "fn", depends: ["part1", "part2"],
executor: async (ctx) => `Pros:\n${ctx.part1}\n\nCons:\n${ctx.part2}`,
},
],
};
// runWorkflow → returns full result with per-node timing
const result = await agent.runWorkflow(fanOut, "State of AI in 2024");
console.log(result.output);
console.log(result.nodeResults); // [{ nodeId, status, output, durationMs }]
// setWorkflow + run → integrates with Agent base class interface
agent.setWorkflow(linear);
const output = await agent.run("2024 AI trends");

Configuration Reference

OptionAgentsDefaultNotes
llmallrequiredLLMClient instance
systemPromptallnoneInjected as first system message
maxIterationsFunctionCall, ReAct10Max tool-call loops
reflectionRoundsReflection1How many critique cycles
toolsFunctionCall, ReAct, PlanSolve[]Tool subclass instances
skillsSkillAgentrequiredIAgentSkill[]
nameSkillAgent, WorkflowAgentrequiredAgent identifier
registryWorkflowAgent—Required for tool nodes
verboseWorkflowAgentfalseLog execution waves
maxConcurrencyWorkflowAgentunlimitedMax concurrent nodes per wave

WorkflowAgent Node Types

TypeDescription
toolCall a registered tool; inputTemplate supports {var} interpolation
llmCall LLM directly; promptTemplate supports {var} interpolation
fnCustom async function (ctx, llm, registry) => string with full context access
passthroughForward a context value unchanged (sourceKey defaults to "input")
branchConditional branching: condition(ctx) => branchName, each branch is a sub-DAG
loopdo-while loop: execute body sub-DAG until condition returns false or maxIterations reached

Gotchas

  • Tool is abstract — never use new Tool({...}), always extend it with class MyTool extends Tool
  • WorkflowAgent constructor requires name field — omitting it causes a TypeScript error
  • PlanSolveAgent costs 2x tokens per run — avoid for simple tasks
  • ReflectionAgent with reflectionRounds: 3 costs 4x tokens — use sparingly
  • SkillAgent.run() auto-tracks history; SkillRunner.run() does NOT — pass options.history manually
  • All agents expose clearHistory() — call it at session end to avoid context bleed
  • maxIterations is a safety cap, not a target — well-designed tools finish in 2-3 iterations
  • WorkflowAgent type:"tool" nodes require a ToolRegistry — omitting it throws at runtime
  • WorkflowAgent detects circular dependencies via Kahn's algorithm — will throw if cycles exist
  • Each node's output is stored in context under its id — use {nodeId} in downstream templates

Output Format for Every Request

  1. Recommend the right agent type with one-line justification
  2. Complete runnable code with all imports and config
  3. Call out cost/iteration tradeoffs if relevant

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
75
Repository forks
4
7-day trend score
22

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/littleblacky/agenticforge/agenticforge-agents/badge)](https://verified-skill.com/skills/littleblacky/agenticforge/agenticforge-agents)

Something wrong with this skill or its page? Tell us.