Skip to content
Back to skills

Langchain Development

ASecurity

LangChain JS/TS framework for building LLM-powered apps. Use when working with chat models, prompt templates, LCEL chains, tool binding, or RAG pipelines.

  • 58 stars
  • 0 votes
  • 0 copies
  • 6 views
  • Added February 8, 2026
developmenttypescriptpythongobashreactapi

Works with

  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 3, 2026

npx -y skills add laurigates/claude-plugins --skill langchain-development --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Langchain Development?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Langchain Development
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/laurigates-langchain-development/badge)](https://www.skillsdirectory.com/skills/laurigates-langchain-development)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: langchain-development
description: LangChain JS/TS framework for building LLM-powered apps. Use when working with chat models, prompt templates, LCEL chains, tool binding, or RAG pipelines.
user-invocable: false
allowed-tools: Bash(python *), Bash(uv *), Read, Write, Edit, Grep, Glob, TodoWrite
created: 2026-01-08
modified: 2026-09-02
reviewed: 2026-09-02
---

# LangChain Development

## When to Use This Skill

| Use this skill when... | Use a sibling skill instead when... |
|---|---|
| Building LCEL chains (prompt → model → parser) or RAG pipelines | You need stateful graph workflows — use `langgraph-agents` |
| Working with chat models, prompt templates, or tool binding | You need hierarchical multi-agent orchestration — use `deep-agents` |
| Adding LangChain to an existing TypeScript project | You are scaffolding a brand-new project — use `langchain-init` (`/langchain:init`) |
| Implementing document loaders and vector stores | You only need a one-off SDK call without LangChain — use the provider SDK directly |

## Core Expertise

LangChain JS/TS is a framework for building LLM applications:

- Unified interface across model providers (OpenAI, Anthropic, Google, etc.)
- Composable chains and agents
- Built-in tool integration
- RAG (Retrieval-Augmented Generation) support
- LangSmith observability integration

## Installation

### Package Manager Setup

```bash
# Core package
npm install langchain
# or
pnpm add langchain
# or
bun add langchain

# Model provider packages (install what you need)
npm install @langchain/openai
npm install @langchain/anthropic
npm install @langchain/google-genai

# Common integrations
npm install @langchain/community  # Community integrations
npm install @langchain/textsplitters  # Document splitting
```

## Chat Models

### Basic Usage

```typescript
import { ChatOpenAI } from "@langchain/openai";
import { ChatAnthropic } from "@langchain/anthropic";
import { HumanMessage, SystemMessage } from "@langchain/core/messages";

// OpenAI
const openai = new ChatOpenAI({
  model: "gpt-4o",
  temperature: 0,
});

// Anthropic
// Use a real, current model id (never an unversioned alias like "claude-haiku"),
// and omit sampling params — Fable-generation models reject temperature/top_p/top_k.
const anthropic = new ChatAnthropic({
  model: "claude-haiku-4-5",
});

// Invoke with messages
const response = await openai.invoke([
  new SystemMessage("You are a helpful assistant."),
  new HumanMessage("Hello!"),
]);
```

### Streaming

```typescript
const stream = await openai.stream([new HumanMessage("Tell me a story")]);

for await (const chunk of stream) {
  process.stdout.write(chunk.content as string);
}
```

### Structured Output

```typescript
import { z } from "zod";

const schema = z.object({
  name: z.string().describe("The name"),
  age: z.number().describe("The age"),
});

const structuredLlm = openai.withStructuredOutput(schema);
const result = await structuredLlm.invoke("John is 30 years old");
// { name: "John", age: 30 }
```

## Prompt Templates

### Basic Templates

```typescript
import { ChatPromptTemplate } from "@langchain/core/prompts";

const prompt = ChatPromptTemplate.fromMessages([
  ["system", "You are a {role}."],
  ["human", "{input}"],
]);

const formatted = await prompt.invoke({
  role: "helpful assistant",
  input: "Hello!",
});
```

### Few-Shot Prompts

```typescript
import { FewShotChatMessagePromptTemplate } from "@langchain/core/prompts";

const examples = [
  { input: "2+2", output: "4" },
  { input: "3+3", output: "6" },
];

const fewShotPrompt = new FewShotChatMessagePromptTemplate({
  examplePrompt: ChatPromptTemplate.fromMessages([
    ["human", "{input}"],
    ["ai", "{output}"],
  ]),
  examples,
  inputVariables: ["input"],
});
```

## Chains (LCEL)

### Basic Chain

```typescript
import { ChatOpenAI } from "@langchain/openai";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";

const prompt = ChatPromptTemplate.fromTemplate("Tell me a joke about {topic}");
const model = new ChatOpenAI();
const parser = new StringOutputParser();

// Chain with pipe operator
const chain = prompt.pipe(model).pipe(parser);

const result = await chain.invoke({ topic: "programming" });
```

### Parallel Chains

```typescript
import { RunnableParallel } from "@langchain/core/runnables";

const parallel = RunnableParallel.from({
  joke: jokeChain,
  poem: poemChain,
});

const results = await parallel.invoke({ topic: "cats" });
// { joke: "...", poem: "..." }
```

### Branching

```typescript
import { RunnableBranch } from "@langchain/core/runnables";

const branch = RunnableBranch.from([
  [(x) => x.type === "math", mathChain],
  [(x) => x.type === "code", codeChain],
  defaultChain, // Fallback
]);
```

## Agentic Optimizations

| Context         | Command/Pattern                        |
| --------------- | -------------------------------------- |
| Quick test      | `npx tsx --test src/**/*.test.ts`      |
| Type check      | `npx tsc --noEmit`                     |
| Debug traces    | Set `LANGCHAIN_TRACING_V2=true`        |
| Reduce tokens   | Use `StringOutputParser` for text-only |
| Stream output   | Use `.stream()` instead of `.invoke()` |
| Batch requests  | Use `.batch([inputs])` for parallel    |
| Cache responses | Use `InMemoryCache` for repeated calls |

## Quick Reference

### Environment Variables

| Variable               | Description              |
| ---------------------- | ------------------------ |
| `OPENAI_API_KEY`       | OpenAI API key           |
| `ANTHROPIC_API_KEY`    | Anthropic API key        |
| `LANGCHAIN_TRACING_V2` | Enable LangSmith tracing |
| `LANGCHAIN_API_KEY`    | LangSmith API key        |
| `LANGCHAIN_PROJECT`    | LangSmith project name   |

### Common Imports

| Import               | Package                          |
| -------------------- | -------------------------------- |
| `ChatOpenAI`         | `@langchain/openai`              |
| `ChatAnthropic`      | `@langchain/anthropic`           |
| `ChatPromptTemplate` | `@langchain/core/prompts`        |
| `StringOutputParser` | `@langchain/core/output_parsers` |
| `tool`               | `@langchain/core/tools`          |
| `RunnableSequence`   | `@langchain/core/runnables`      |

### Key Packages

| Package                | Purpose                |
| ---------------------- | ---------------------- |
| `langchain`            | Core framework         |
| `@langchain/core`      | Base abstractions      |
| `@langchain/openai`    | OpenAI integration     |
| `@langchain/anthropic` | Anthropic integration  |
| `@langchain/community` | Community integrations |
| `@langchain/langgraph` | Graph-based agents     |

For TypeScript configuration, tool definition and binding, RAG pipelines, and ReAct agents, see [REFERENCE.md](REFERENCE.md).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.