skills/ai-agent-development/agent-frameworks/SKILL.md
Compares AI agent frameworks: LangChain/LangGraph, Semantic Kernel, AutoGen, CrewAI. Guides framework selection based on language, agent pattern, and deployment constraints. Use when choosing or evaluating an agent framework.
npx skillsauth add pkuppens/pkuppens agent-frameworksInstall 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.
Comparison and guidance for AI agent frameworks. Covers Python-first frameworks (LangChain, LangGraph, CrewAI, AutoGen) and C#-first frameworks (Semantic Kernel, AutoGen for .NET). Helps select the right framework based on requirements.
| Framework | Language | Agent pattern | Strengths | Weaknesses | |-----------|----------|---------------|-----------|------------| | LangChain | Python, JS | Chains, agents, tools | Largest ecosystem, most integrations | Frequent breaking changes, abstraction overhead | | LangGraph | Python, JS | Graph-based agent orchestration | Explicit state machines, checkpointing, human-in-the-loop | Steeper learning curve than plain LangChain | | Semantic Kernel | C#, Python, Java | Plugins, planners, agents | Microsoft ecosystem, Azure integration, enterprise-ready | Smaller community than LangChain | | AutoGen | Python, C# | Multi-agent conversations | Strong multi-agent patterns, Microsoft backing | API still evolving (v0.4+) | | CrewAI | Python | Role-based agent teams | Simple multi-agent setup, task delegation | Less flexible than LangGraph for complex flows | | Haystack | Python | Pipeline-based RAG and agents | Clean pipeline abstraction, production-focused | Smaller agent feature set than LangChain | | Custom | Any | Any | Full control, no dependency overhead | Must build everything from scratch |
Choose when:
from langgraph.graph import StateGraph, MessagesState, START, END
from langchain_openai import ChatOpenAI
def agent_node(state: MessagesState):
llm = ChatOpenAI(model="gpt-4o")
response = llm.invoke(state["messages"])
return {"messages": [response]}
graph = StateGraph(MessagesState)
graph.add_node("agent", agent_node)
graph.add_edge(START, "agent")
graph.add_edge("agent", END)
app = graph.compile()
Choose when:
var kernel = Kernel.CreateBuilder()
.AddAzureOpenAIChatCompletion("gpt-4o", endpoint, apiKey)
.Build();
kernel.Plugins.AddFromType<TimePlugin>();
kernel.Plugins.AddFromType<SearchPlugin>();
var agent = new ChatCompletionAgent
{
Kernel = kernel,
Name = "Assistant",
Instructions = "You are a helpful assistant."
};
Choose when:
Choose when:
Choose when:
openai SDKtesting
Syncs remote default branch locally (checkout, fetch --prune, pull) and returns to the previous branch when it still exists. Reports stashes and worktrees not yet handled. Use when the user asks to sync main, update default branch, fetch/pull origin, or run /sync-branch.
tools
Creates, queries, updates, and links Azure Boards work items via az boards CLI. Use when filing ADO work items, running WIQL queries, or setting area path, iteration, tags, and assignee.
tools
Creates, reviews, and completes Azure Repos pull requests and branch policies via az repos CLI. Use when opening ADO PRs, setting required reviewers, or configuring build validation policies.
development
Guides Azure Pipelines YAML structure, build validation on PRs, and staged deployment with environments and approvals. Use when authoring azure-pipelines.yml or configuring CI/CD on Azure DevOps.