Neurolink Guide
juspay/neurolink
Guide for using the NeuroLink SDK and CLI. An agent skill from juspay/neurolink.
Guide to building Node.js and TypeScript apps on the agent-squad package: orchestrator, agent types, classifier routing, storage, retrievers and MCP tools.
$ npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install 2FastLabs/agent-squad agent-squad-typescript --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/2FastLabs/agent-squad.git skills-src && mkdir -p .claude/skills && cp -r skills-src/typescript .claude/skills/agent-squad-typescript && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "agent-squad-typescript" agent skill from https://github.com/2FastLabs/agent-squad/tree/main/typescript into .claude/skills/agent-squad-typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-squad-typescript", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/2FastLabs/agent-squad/tree/main/typescriptType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install 2FastLabs/agent-squad agent-squad-typescript --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/2FastLabs/agent-squad.git skills-src && mkdir -p .agents/skills && cp -r skills-src/typescript .agents/skills/agent-squad-typescript && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "agent-squad-typescript" agent skill from https://github.com/2FastLabs/agent-squad/tree/main/typescript into .agents/skills/agent-squad-typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-squad-typescript", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install 2FastLabs/agent-squad agent-squad-typescript --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/2FastLabs/agent-squad.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/typescript .cursor/skills/agent-squad-typescript && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "agent-squad-typescript" agent skill from https://github.com/2FastLabs/agent-squad/tree/main/typescript into .cursor/skills/agent-squad-typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-squad-typescript", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/2FastLabs/agent-squad.git --path typescript--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install 2FastLabs/agent-squad agent-squad-typescript --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/2FastLabs/agent-squad.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/typescript .gemini/skills/agent-squad-typescript && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "agent-squad-typescript" agent skill from https://github.com/2FastLabs/agent-squad/tree/main/typescript into .gemini/skills/agent-squad-typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-squad-typescript", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install 2FastLabs/agent-squad agent-squad-typescriptInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/2FastLabs/agent-squad.git skills-src && mkdir -p .github/skills && cp -r skills-src/typescript .github/skills/agent-squad-typescript && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "agent-squad-typescript" agent skill from https://github.com/2FastLabs/agent-squad/tree/main/typescript into .github/skills/agent-squad-typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-squad-typescript", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install 2FastLabs/agent-squad agent-squad-typescript --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/2FastLabs/agent-squad.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/typescript .opencode/skills/agent-squad-typescript && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "agent-squad-typescript" agent skill from https://github.com/2FastLabs/agent-squad/tree/main/typescript into .opencode/skills/agent-squad-typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agent-squad-typescript", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
agent-squad-typescriptGuide to building Node.js and TypeScript apps on the agent-squad package: orchestrator, agent types, classifier routing, storage, retrievers and MCP tools.
The skill is a map of the agent-squad multi-agent framework, not an API reference; exact signatures live in the source. A when-to-use list matches needs to building blocks: a single Agent for one assistant, several specialists behind a classifier, GroundedAgent when answers must not drift from data, ChainAgent for fixed pipelines, SupervisorAgent for a lead model calling sub-agents, MCPToolProvider for external tools, and a Retriever for RAG context.
It covers installation with npm, optional peer dependencies such as the MCP SDK and the Dakera client, and how a turn works: routeRequest classifies the input, dispatches to the selected agent, saves the exchange and returns either a string or a Node.js Transform stream. Classifiers can use Bedrock, Anthropic or OpenAI, storage can be in-memory, DynamoDB or SQL, and retrievers include Amazon Knowledge Bases.
Read from SKILL.md and the folder at commit 729d5f5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript and JavaScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
DAKERA_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Agent Squad for TypeScript loads about 4.3k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 1,412 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from 2FastLabs/agent-squad at commit 729d5f5, republished under its Apache-2.0 licence (© 2FastLabs). 1,412 words, ~4,257 tokens.
.claude/skills/agent-squad-typescript/SKILL.md (or your agent's skills folder). This skill also uses 84 other files; get the full folder from GitHub.Node.js / TypeScript multi-agent orchestration framework (npm package agent-squad). All public
symbols are exported from a single barrel typescript/src/index.ts. This file is guidance and a
map — not an API reference. Read exact signatures from
typescript/src/ and worked recipes from docs/src/content/docs/; this file tells you what to
use, when, and what to watch out for.
Agent subclass + AgentSquad with no routing. Or skip the
orchestrator entirely and call agent.processRequest(...) directly.orchestrator.addAgent(agent), a
classifier routes each turn.GroundedAgent: a
gatherer LLM calls tools, an isolated presenter LLM speaks only from the curated results.ChainAgent: each agent's output is the next agent's input.SupervisorAgent: the lead calls sub-agents as tools.MCPToolProvider (async factory pattern, optional peer dep).Retriever to any agent that supports retriever? in its options.npm install agent-squadOptional peer dependencies — install only what you use:
| Package | Used by |
|---|---|
@aws-sdk/client-bedrock-runtime | BedrockLLMAgent, BedrockClassifier (already a hard dep in current releases) |
@anthropic-ai/sdk | AnthropicAgent, AnthropicClassifier (already a hard dep) |
openai | OpenAIAgent, OpenAIClassifier (already a hard dep) |
@modelcontextprotocol/sdk | MCPToolProvider — lazy await import() at connect time |
@dakera-ai/dakera | DakeraRetriever — lazy require() at construction time |
@modelcontextprotocol/sdk and @dakera-ai/dakera are the only two true optional peer deps;
everything else ships as a hard dependency at the moment.
routeRequest is the single entry point. It classifies the input, dispatches to the selected
agent, saves the exchange, and returns an AgentResponse. The response is either a plain string or
a Node.js Transform stream:
import { AgentSquad, BedrockLLMAgent, BedrockClassifier } from 'agent-squad';
const orchestrator = new AgentSquad({
classifier: new BedrockClassifier(), // default when omitted
// storage: new DynamoDbChatStorage(...),
// config: { LOG_AGENT_CHAT: true, MAX_MESSAGE_PAIRS_PER_AGENT: 50 },
});
orchestrator.addAgent(new BedrockLLMAgent({
name: 'Tech Support',
description: 'Handles technical questions about software and hardware',
streaming: true,
}));
const response = await orchestrator.routeRequest(
userInput,
userId,
sessionId,
additionalParams // optional Record<string, any>
);
if (response.streaming) {
// response.output is an AccumulatorTransform (Node.js Transform)
for await (const chunk of response.output) {
process.stdout.write(chunk);
}
} else {
// response.output is a string
console.log(response.output);
// response.thinking? is set when the agent used extended thinking
}
// response.metadata: { agentId, agentName, userId, sessionId, userInput, additionalParams }routeRequest never throws — it catches all errors and returns them as a non-streaming
AgentResponse with the error string in output (configurable via GENERAL_ROUTING_ERROR_MSG_MESSAGE).
AgentSquadnew AgentSquad(options?: OrchestratorOptions)Key OrchestratorOptions fields:
| Field | Default | Notes |
|---|---|---|
classifier | new BedrockClassifier() | Any Classifier subclass |
storage | new InMemoryChatStorage() | Any ChatStorage subclass |
defaultAgent | undefined | Used when classifier returns no match and USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED is true |
config.USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED | true | Fall back to defaultAgent or return NO_SELECTED_AGENT_MESSAGE |
config.MAX_MESSAGE_PAIRS_PER_AGENT | 100 | Per-agent history cap (pairs = user+assistant) |
config.MAX_RETRIES | 3 | Classifier retries on bad XML response |
config.LOG_AGENT_CHAT | false |
Useful methods: addAgent(agent), setDefaultAgent(agent), getDefaultAgent(),
getAllAgents(), analyzeAgentOverlap(), classifyRequest(...), agentProcessRequest(...).
The classifier is exposed as a public field (orchestrator.classifier) so its system prompt can
be overridden after construction.
All agents extend Agent and require at minimum { name, description } in their options.
agent.id is derived automatically from name: non-alphanumeric stripped, spaces → hyphens,
lowercased. "Tech Support" → "tech-support". This is the key used for storage and classifier
matching — it must be stable across restarts.
| Class | Options type | Notes |
|---|---|---|
BedrockLLMAgent | BedrockLLMAgentOptions | Bedrock Converse API; supports streaming, modelId, inferenceConfig, guardrailConfig, reasoningConfig, retriever, toolConfig, customSystemPrompt, client, callbacks |
AnthropicAgent | AnthropicAgentOptions | Direct Anthropic SDK; similar options shape |
OpenAIAgent | OpenAIAgentOptions | OpenAI Chat Completions |
AmazonBedrockAgent | AmazonBedrockAgentOptions | Amazon Bedrock Agents (pre-built agents, not Converse) |
BedrockInlineAgent | BedrockInlineAgentOptions | Bedrock inline agents |
BedrockFlowsAgent | BedrockFlowsAgentOptions | Bedrock Flows |
LambdaAgent | LambdaAgentOptions | Invokes a Lambda function as an agent |
LexBotAgent | LexBotAgentOptions | Amazon Lex V2 bot |
ChainAgent | ChainAgentOptions | Fixed pipeline; agents: Agent[], defaultOutput? |
SupervisorAgent | SupervisorAgentOptions | Lead + team; leadAgent must be BedrockLLMAgent or AnthropicAgent; lead must have no toolConfig (SupervisorAgent manages tools) |
GroundedAgent | GroundedAgentOptions | 2-LLM anti-hallucination; gatherer, presenter, tools, curator?, presenterPrompt? |
AgentOptions base fields: name (required), description (required), saveChat? (default
true), logger?, LOG_AGENT_DEBUG_TRACE?.
BedrockLLMAgent toolConfig shape:
toolConfig: {
tool: AgentTools | Tool[], // AgentTools instance or raw Bedrock Tool array
useToolHandler: (response: any, conversation: ConversationMessage[]) => any,
toolMaxRecursions?: number,
}When using MCPToolProvider, pass it as toolConfig.tool and omit useToolHandler — the
provider overrides toolHandler internally.
Two-LLM anti-hallucination pattern. The gatherer calls tools; the presenter receives only the curated facts (never raw tool output, never chat history from the gatherer):
import {
GroundedAgent, DataBlockCurator, PerToolCurator, PresenterPrompt,
BedrockLLMAgent, AgentTools, AgentTool,
} from 'agent-squad';
const tools = new AgentTools([
new AgentTool({ name: 'get_price', description: '...', func: async ({ sku }) => fetchPrice(sku) }),
]);
const gatherer = new BedrockLLMAgent({ name: 'Gatherer', description: '...', toolConfig: { tool: tools, useToolHandler: ... } });
const presenter = new BedrockLLMAgent({ name: 'Presenter', description: '...' });
const agent = new GroundedAgent({
name: 'Price Agent',
description: 'Answers pricing questions grounded in live data',
gatherer,
presenter,
tools,
curator: new DataBlockCurator(), // default; or PerToolCurator for per-tool formatting
presenterPrompt: PresenterPrompt.default(), // generic grounding prompt; or per-tool map
});A no-tool turn (chit-chat) is answered by the gatherer directly, skipping the presenter.
| Class | Options type | Notes |
|---|---|---|
BedrockClassifier | BedrockClassifierOptions | Default when no classifier is passed to AgentSquad |
AnthropicClassifier | AnthropicClassifierOptions | |
OpenAIClassifier | OpenAIClassifierOptions |
All classifiers support setSystemPrompt(template?, variables?) to override the routing prompt.
Template variables use {{VAR_NAME}} syntax; AGENT_DESCRIPTIONS and HISTORY are always
injected automatically.
| Class | Notes |
|---|---|
InMemoryChatStorage | Default; non-persistent; fine for dev and tests |
DynamoDbChatStorage | Requires @aws-sdk/client-dynamodb and @aws-sdk/lib-dynamodb (hard deps) |
SqlChatStorage | Requires @libsql/client (hard dep); works with Turso or local libsql |
SummarizingChatStorage | Wraps any storage; compresses history via a user-supplied ChatSummarizer callable when fetchChat returns more than triggerAt * 2 messages; cache-based save-back |
Storage is keyed by (userId, sessionId, agentId). fetchAllChats(userId, sessionId) is used by
the classifier to get cross-agent history for context.
| Class | Options type | Notes |
|---|---|---|
AmazonKnowledgeBasesRetriever | AmazonKnowledgeBasesRetrieverOptions | Amazon Bedrock Knowledge Bases |
DakeraRetriever | DakeraRetrieverOptions | Dakera memory server; optional peer dep @dakera-ai/dakera |
DakeraRetrieverOptions: namespace (required), apiKey? (falls back to DAKERA_API_KEY env),
url? (falls back to DAKERA_URL then http://localhost:3000), topK? (default 10), filter?.
Attach to a BedrockLLMAgent via retriever: option. The agent calls retriever.retrieveAndCombineResults(inputText) to augment its system prompt.
DakeraRetriever.retrieveAndGenerate() always throws — Dakera is retrieval-only.
AgentTools and AgentToolimport { AgentTools, AgentTool } from 'agent-squad';
const myTools = new AgentTools([
new AgentTool({
name: 'search_web',
description: 'Search the web for current information',
properties: {
query: { type: 'string', description: 'The search query' },
},
required: ['query'],
func: async ({ query }) => webSearch(query),
}),
]);AgentTool constructor will auto-extract parameter names from func if properties is omitted —
but this is fragile with minification. Always pass explicit properties and required.
MCPToolProvider extends AgentTools. Always use the async factory — never new MCPToolProvider(...) directly — so that tool definitions are fetched before the agent makes its first API call:
import { MCPToolProvider } from 'agent-squad';
const provider = await MCPToolProvider.create([
{ type: 'stdio', command: 'uvx', args: ['my-mcp-server'] },
{ type: 'sse', url: 'http://localhost:3000/sse', headers: { Authorization: 'Bearer tok' } },
]);
const agent = new BedrockLLMAgent({
name: 'MCP Agent',
description: 'Agent with MCP tools',
toolConfig: { tool: provider },
});
// Clean up when done (closes stdio processes and SSE connections)
await provider.disconnect();MCPServerConfig.type is "stdio" or "sse". For stdio: command is required, args? and
env? are optional. For sse: url is required, headers? is optional.
MCPToolProvider overrides toBedrockFormat(), toAnthropicFormat(), and toOpenAIFormat() to
pass MCP inputSchema through unchanged rather than re-serializing it.
Requires npm install @modelcontextprotocol/sdk. The SDK is imported lazily via await import()
inside ensureConnected() — installing agent-squad without the SDK is safe as long as you don't
instantiate MCPToolProvider.
Extend the abstract base class and pass your type where the built-in goes.
| Seam | Base class | Method to implement | Source |
|---|---|---|---|
| Agent | Agent | processRequest(inputText, userId, sessionId, chatHistory, additionalParams?) returns Promise<ConversationMessage | AsyncIterable<any>> | typescript/src/agents/agent.ts |
| Classifier | Classifier | processRequest(inputText, chatHistory) returns Promise<ClassifierResult> | typescript/src/classifiers/classifier.ts |
| Storage | ChatStorage | saveChatMessage, fetchChat, fetchAllChats | typescript/src/storage/chatStorage.ts |
| Retriever | Retriever | retrieve, retrieveAndCombineResults, retrieveAndGenerate | typescript/src/retrievers/retriever.ts |
ClassifierResult shape: { selectedAgent: Agent | null, confidence: number }.
Classifier base class provides setAgents, setHistory, setSystemPrompt, and
getAgentById(agentId) — use getAgentById in your processRequest to look up the selected agent
from the classifier's registered map.
agentId is derived from name at construction time: non-alphanumeric stripped, spaces
replaced with -, lowercased. Changing an agent's name changes its id, which breaks chat
history lookups in storage. Keep names stable across deployments.
Streaming response is a Node.js Transform stream, not an async generator. Check
response.streaming before iterating. The transform accumulates the full response internally;
for await (const chunk of response.output) works because Transform implements
AsyncIterable. Do not call response.output.read() manually.
routeRequest never throws. Errors are returned as non-streaming AgentResponse with the
error string in output. If you need to distinguish errors from real responses, check
response.metadata.errorType === 'classification_failed' or inspect metadata.agentId.
MCPToolProvider.create(...) must be awaited before the agent is used. The constructor alone
does not connect; calling processRequest before create resolves means tool definitions are
empty and the agent will behave as if it has no tools.
BedrockClassifier is the default. If boto3/AWS credentials are not configured and you
don't pass an explicit classifier, AgentSquad will construct a BedrockClassifier that will
fail at runtime. Pass classifier: new AnthropicClassifier(...) or new OpenAIClassifier(...)
if you're not on AWS.
Optional peer deps use lazy import/require. MCPToolProvider uses await import(...) inside
ensureConnected(); DakeraRetriever uses require(...) inside the constructor. Neither adds a
top-level import, so a missing peer dep is only discovered at instantiation time — not at module
load. Throw the missing-dep error early, before user input arrives.
SupervisorAgent restrictions: leadAgent must be BedrockLLMAgent or AnthropicAgent;
the lead agent must have no toolConfig set (SupervisorAgent wires its own tool loop). Pass
additional native tools via extraTools.
saveChat defaults to true. Every agent persists both sides of each exchange after the
turn completes. Set saveChat: false on agents that should not write to storage (e.g. a
presenter inside a GroundedAgent that is managed externally).
additionalParams flows through routeRequest → dispatchToAgent → agent.processRequest.
Use it to pass per-request context (tenant ID, request ID, feature flags) without touching agent
options. The values end up in response.metadata.additionalParams.
AgentTools auto-extracts parameter names from func via .toString(). This breaks with
minification and TypeScript arrow functions with destructured arguments. Always supply explicit
properties and required arrays to AgentTool.
ThinkingResponse: when a BedrockLLMAgent is configured with reasoningConfig, the
non-streaming path may return response.thinking (a string) alongside response.output. The
streaming path does not surface thinking tokens separately.
docs/src/content/docs/ (run the site from docs/ with npm run dev):
orchestrator/overview, agents/built-in/bedrock-llm-agent, agents/built-in/grounded-agent,
classifiers/overview, storage/overview, retrievers/overview, tools/mcp.typescript/src/ (orchestrator.ts, agents/, classifiers/,
storage/, retrievers/, tools/mcpToolProvider.ts, utils/tool.ts, types/index.ts).typescript/tests/ for usage patterns and mock strategies (virtual mocks for
optional peer deps via jest.mock(..., { virtual: true })).typescript/src/index.ts is the definitive list of every public symbol.© 2FastLabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 84 other files in typescript of 2FastLabs/agent-squad.
Open the folder on GitHubat commit 729d5f5
Agent Squad for TypeScript next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Agent Squad for TypeScript this skill2FastLabs/agent-squad | 7.8k | — | ~4.3k | Automated safety check: Pass | Apache-2.0 | |
| Neurolink Guidejuspay/neurolink | 143 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Agent Inspectrajudandigam/agent-inspect | 165 | — | ~424 | Automated safety check: Pass | MIT | |
| Mastramajiayu000/claude-skill-registry | 666 | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Ydc Openai Agent SDK IntegrationLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.4k | Automated safety check: Notes | MIT | |
| Trigger.dev Agent Patternspapermark/papermark | 9.2k | — | ~2k | Automated safety check: Pass | Custom licence |
juspay/neurolink
Guide for using the NeuroLink SDK and CLI. An agent skill from juspay/neurolink.
rajudandigam/agent-inspect
Local evidence debugger and trajectory-test toolkit for TypeScript AI agents.
majiayu000/claude-skill-registry
A skill your agent uses when working with Mastra - the TypeScript AI framework for building agents, workflows, tools, and AI-powered applications.
LeoYeAI/openclaw-master-skills
Integrate OpenAI Agents SDK with You.com MCP server - Hosted and Streamable HTTP support for Python and TypeScript.
papermark/papermark
Patterns for building LLM agents on Trigger.dev tasks: prompt chaining, routing, parallel workers, orchestrator-workers, evaluator loops and human approval gates.
luochang212/dive-into-langgraph
A Chinese-language guide and reference for building agents with LangGraph 1.0, from a first ReAct agent through middleware, memory, MCP, RAG and web search.
2FastLabs/agent-squad
Map of the agent-squad Python framework for async multi-agent orchestration: which agent, classifier, storage and tool provider to pick, and the pitfalls to avoid.
2FastLabs/agent-squad
Guides building on-device multi-agent apps in Swift with the AgentSquad framework: which agent, orchestrator, classifier, storage or voice type fits each situation.
Categories
Guide to building Node.js and TypeScript apps on the agent-squad package: orchestrator, agent types, classifier routing, storage, retrievers and MCP tools. The skill is a map of the agent-squad multi-agent framework, not an API reference; exact signatures live in the source. A when-to-use list matches needs to building blocks: a single Agent for one assistant, several specialists behind a classifier, GroundedAgent when answers must not drift from data, ChainAgent for fixed pipelines, SupervisorAgent for a lead model calling sub-agents, MCPToolProvider for external tools, and a Retriever for RAG context.
Agent Squad for TypeScript fits situations like: building a multi-agent chatbot with an orchestrator and a classifier; choosing between ChainAgent, SupervisorAgent and GroundedAgent; adding MCP tools or a retriever to an agent; switching conversation storage to DynamoDB or SQL.
Run `npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a claude-code`. Or copy the skill folder (typescript in 2FastLabs/agent-squad) into .claude/skills/agent-squad-typescript in your project. Claude Code loads it when a task matches its description.
Run `npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a codex`. Or copy the skill folder (typescript in 2FastLabs/agent-squad) into .agents/skills/agent-squad-typescript in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add 2FastLabs/agent-squad --skill agent-squad-typescript -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agent-squad-typescript, .gemini/skills/agent-squad-typescript, .github/skills/agent-squad-typescript and .opencode/skills/agent-squad-typescript in your project.
Going by SKILL.md and its folder, Agent Squad for TypeScript needs TypeScript and JavaScript for the scripts in its folder, the command-line tools its instructions call (npm) and credentials named DAKERA_API_KEY. Our summary lists: Node.js and the agent-squad npm package; Credentials for the chosen model provider.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Agent Squad for TypeScript is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Agent Squad for TypeScript: Neurolink Guide (juspay/neurolink, 143 stars), Agent Inspect (rajudandigam/agent-inspect, 165 stars), Mastra (majiayu000/claude-skill-registry, 666 stars) and Ydc Openai Agent SDK Integration (LeoYeAI/openclaw-master-skills, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
2FastLabs (a GitHub organization) maintains it in 2FastLabs/agent-squad, which has 7,787 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.
Source: 2FastLabs/agent-squad on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.