Agent skill

Langchain Content Blocks

by jeremylongshore in jeremylongshore/tons-of-skills-marketplace

Works correctly with LangChain 1.0's typed content blocks on AIMessage.content — text, tooluse, image, thinking, document — across Claude, GPT-4o, and Gemini, including multi-modal composition and…

MITAuto-check passedAI & LLM Engineering

Install Langchain Content Blocks

skills CLI
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-content-blocks -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-content-blocks --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/langchain-content-blocks .claude/skills/langchain-content-blocks && rm -rf skills-src

Use ~/.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/

Facts

Skill name
langchain-content-blocks
GitHub stars
2.8k
Token cost
~3.6k tokens
SKILL.md length
1,029 words
Files
6 (incl. references)
Skills in repo
3,342
Repo updated
First seen
Licence
MIT

At a glance

Works correctly with LangChain 1.0's typed content blocks on AIMessage.content — text, tooluse, image, thinking, document — across Claude, GPT-4o, and Gemini, including multi-modal composition and…

  • Works in 6 steps: Learn the block-type taxonomy → Iterate mixed content safely → Compose multi-modal messages with the… → …
  • Composing multi-modal messages
  • SKILL.md covers Overview, Prerequisites, Instructions and Output, plus 3 more sections
  • Calls pip

What it does

Langchain Content Blocks is an agent skill from jeremylongshore/tons-of-skills-marketplace. Works correctly with LangChain 1.0's typed content blocks on AIMessage.content — text, tooluse, image, thinking, document — across Claude, GPT-4o, and Gemini, including multi-modal composition and tool-call iteration. Use when composing multi-modal messages, iterating tooluse blocks, handling Claude's thinking content, or unifying image inputs across providers. Trigger with "langchain content blocks", "AIMessage.content", "tooluse block", "claude image input", "langchain multimodal", "thinking block replay"…

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/block-type-matrix.md`, `references/multimodal-composition.md` and `references/one-pager.md`). Compatibility notes: Designed for Claude Code

It sits in AI & LLM Engineering, covering Building AI agents. It works with LangChain and OpenAI. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.

When your agent uses it

  • Composing multi-modal messages
  • Iterating tooluse blocks
  • Handling Claudes thinking content
  • Unifying image inputs across providers

Example prompts

  • “langchain content blocks”
  • “AIMessage.content”
  • “tooluse block”
  • “/langchain-content-blocks”

Requirements

  • Python 3
  • Compatibility (from SKILL.md): Designed for Claude Code
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash(python:*)

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Learn the block-type taxonomy
  2. Iterate mixed content safely
  3. Compose multi-modal messages with the universal image block
  4. Iterate tool_use correctly across stream deltas
  5. Preserve Claude thinking blocks for replay
  6. Provider-adapter checklist

What it can do on your machine

Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash(python:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • python.langchain.com
    • platform.claude.com
    • platform.openai.com
    • ai.google.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Claude Code

    From compatibility in the SKILL.md frontmatter.

Context cost

Langchain Content Blocks loads about 3.6k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 140 tokens; SKILL.md has 1,029 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~140
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 1,029 words, ~3,587 tokens.

Download SKILL.mdSave it as .claude/skills/langchain-content-blocks/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
langchain-content-blocks
description
Works correctly with LangChain 1.0's typed content blocks on AIMessage.content — text, tool_use, image, thinking, document — across Claude, GPT-4o, and Gemini, including multi-modal composition and tool-call iteration. Use when composing multi-modal messages, iterating tool_use blocks, handling Claude's thinking content, or unifying image inputs across providers. Trigger with "langchain content blocks", "AIMessage.content", "tool_use block", "claude image input", "langchain multimodal", "thinking block replay", "claude citations".
allowed-tools
Read, Write, Edit, Bash(python:*)
compatibility
Designed for Claude Code
version
2.7.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
saas, langchain, langgraph, python, langchain-1.0, content-blocks, multimodal, tool-use

LangChain Content Blocks (Python)

Overview

On Claude, AIMessage.content is list[dict] even for pure text — so any code from an OpenAI-first tutorial that calls message.content.lower() or message.content.split() crashes with AttributeError: 'list' object has no attribute 'lower' on the first production Claude call (P02). Multi-modal code that works on GPT-4o breaks on Claude because pre-1.0 image-block shapes differed across providers (P64). Multi-turn Claude replay with extended thinking fails with anthropic.BadRequestError: missing signature when prior thinking blocks are stripped. Forced tool_choice prevents stop_reason="end_turn" and loops forever (P63).

This is the deep-dive companion to langchain-model-inference. That skill's references/content-blocks.md covers the str vs list[dict] divergence and a safe text extractor. This skill goes further:

  • tool_use block iteration mechanics — IDs, args as dict vs JSON string, streaming deltas
  • thinking blocks — signature, redaction, multi-turn replay semantics
  • document blocks — Claude citations API, source types, citation extraction
  • Multi-modal composition — universal 1.0 image shape, per-provider adapter behavior
  • Per-provider size limits (Anthropic 5 MB/image up to 20 images, OpenAI 20 MB/image, Gemini 20 MB/request)

Pin: langchain-core 1.0.x, langchain-anthropic >= 1.0, langchain-openai >= 1.0, anthropic >= 0.40. Pain-catalog anchors: P02, P58, P63, P64.

Prerequisites

  • Python 3.10+
  • langchain-core >= 1.0, < 2.0
  • At least one provider package: pip install langchain-anthropic langchain-openai
  • For extended thinking: langchain-anthropic >= 1.0 and Claude Sonnet 4+ / Opus 4+
  • For citations: anthropic >= 0.40 and Claude Sonnet 4+
  • Familiarity with langchain-model-inference (reads references/content-blocks.md first)

Instructions

Step 1 — Learn the block-type taxonomy

LangChain 1.0 defines six typed content blocks on AIMessage.content (and on chunks during streaming):

Block typeProduced byNotes
textAll providersOn Claude, always wrapped as [{"type":"text","text":"..."}]
tool_useClaude, GPT-4o, GeminiAlways round-trip via msg.tool_calls, not hand-parsed
tool_resultYou (via ToolMessage)One per tool_use; tool_call_id must match byte-for-byte
imageClaude vision, GPT-4o, GeminiUniversal 1.0 shape; adapter handles wire format per provider
thinkingClaude extended thinking onlyMust preserve signature for replay
documentClaude citations API (Sonnet 4+)Input-side only; citations attach to output text blocks

See Block-Type Matrix for the full table with streaming behavior and per-type gotchas.

Step 2 — Iterate mixed content safely

For most code, use the helpers:

python
text = msg.text()                    # concatenated text across all text blocks
tool_calls = msg.tool_calls          # normalized list[ToolCall]
usage = msg.usage_metadata           # input_tokens, output_tokens, cache_*

Hand-roll block iteration only when you need to (a) preserve order, (b) extract thinking blocks for replay, or (c) read citations metadata from text blocks. Order-preserving iteration:

python
from langchain_core.messages import AIMessage

def iter_blocks(msg: AIMessage):
    if isinstance(msg.content, str):
        yield "text", {"type": "text", "text": msg.content}
        return
    for block in msg.content:
        if isinstance(block, dict):
            yield block.get("type", "unknown"), block
        else:
            yield getattr(block, "type", "unknown"), block
Step 3 — Compose multi-modal messages with the universal image block
python
import base64
from pathlib import Path
from langchain_core.messages import HumanMessage

def image_block(path: str) -> dict:
    data = base64.standard_b64encode(Path(path).read_bytes()).decode("ascii")
    mime = {"png": "image/png", "jpg": "image/jpeg",
            "jpeg": "image/jpeg", "webp": "image/webp"}[
        Path(path).suffix.lstrip(".").lower()]
    return {
        "type": "image",
        "source_type": "base64",   # or "url"
        "data": data,
        "mime_type": mime,
    }

msg = HumanMessage(content=[
    image_block("screenshot.png"),                         # put image FIRST
    {"type": "text", "text": "What is broken here?"},      # instruction LAST
])
response = claude.invoke([msg])

Three invariants:

  1. content must be list[dict] when including non-text blocks.
  2. Put the image before the instruction — Claude attends most to trailing tokens.
  3. Respect provider limits (Anthropic: 5 MB/image, up to 20 images; OpenAI: 20 MB/image; Gemini: 20 MB/request total).

LangChain's adapter translates the universal shape to each provider's wire format. See Multi-Modal Composition for the full adapter table, MIME-type compatibility, and the document/citations pattern.

Step 4 — Iterate tool_use correctly across stream deltas

Canonical non-streaming:

python
for tc in msg.tool_calls:
    output = tools[tc["name"]](**tc["args"])
    history.append(ToolMessage(content=str(output), tool_call_id=tc["id"]))

tc["args"] is already a parsed dict — do not json.loads it. tc["id"] is provider-shaped (toolu_* on Anthropic, call_* on OpenAI, 24+ chars) and must be copied verbatim to the ToolMessage.

Streaming is different. tool_use.input arrives as partial JSON fragments across on_chat_model_stream events. Buffer with tool_call_chunks, parse once at on_chat_model_end:

python
from collections import defaultdict
import json

partial = defaultdict(str)   # index -> accumulated JSON fragment
meta = {}                     # index -> {name, id}

async for event in model.astream_events({"messages": [...]}, version="v2"):
    if event["event"] != "on_chat_model_stream":
        continue
    for tc_chunk in getattr(event["data"]["chunk"], "tool_call_chunks", []) or []:
        idx = tc_chunk["index"]
        if tc_chunk.get("name"):
            meta[idx] = {"name": tc_chunk["name"], "id": tc_chunk["id"]}
        if tc_chunk.get("args"):
            partial[idx] += tc_chunk["args"]

completed = [{**meta[i], "args": json.loads(partial[i])} for i in meta]

See Tool-Use Iteration for multi-tool-per-turn handling, ToolMessage ordering, and the forced- tool_choice infinite-loop trap (P63).

Step 5 — Preserve Claude thinking blocks for replay

Claude extended thinking (Sonnet 4+, Opus 4+) returns thinking blocks carrying a cryptographic signature. The next turn must round-trip those blocks intact or Anthropic rejects the request:

anthropic.BadRequestError: messages.1.content.0: missing signature

The foot-gun: msg.text() strips thinking blocks. Never do:

python
# WRONG — thinking blocks lost, replay fails
history.append(AIMessage(content=ai_1.text()))

Correct — pass the AIMessage back verbatim:

python
history.append(ai_1)   # preserves full content list + signatures

For persistence across sessions, serialize with messages_to_dict(...) (not custom JSON), which preserves block structure:

python
import json
from langchain_core.messages import messages_to_dict, messages_from_dict

serialized = json.dumps(messages_to_dict([ai_1]))
restored = messages_from_dict(json.loads(serialized))

See Thinking Blocks for redaction handling, the budget-tokens rule, and the interaction with tool calls.

Show full SKILL.md (437 more words)Show less
Step 6 — Provider-adapter checklist

Before sending any multi-modal or tool-using message:

  1. Is content a list[dict] when it contains non-text blocks?
  2. Are image blocks in the universal 1.0 shape (source_type, data, mime_type)?
  3. Is each image under the target provider's limit? (5 MB / 20 MB / 20 MB total.)
  4. If tool_use is involved, am I passing msg.tool_calls — not parsed content?
  5. If extended thinking is on, am I returning the full AIMessage — not msg.text()?
  6. System message at position 0 (P58) — not reordered by middleware?

Output

  • Block-type matrix applied to a specific response (which types present, which helper used)
  • Safe iteration that preserves order, citations, and thinking signatures
  • Multi-modal HumanMessage in the universal 1.0 image shape, portable across Claude/GPT-4o/Gemini
  • tool_use stream-delta accumulator that buffers partial input JSON and parses once at end
  • Multi-turn Claude replay that keeps thinking blocks intact (no missing signature errors)
  • document/citations extractor that reads citations metadata from text blocks

Error Handling

ErrorCauseFix
AttributeError: 'list' object has no attribute 'lower'Treating AIMessage.content as str on Claude (P02)Use msg.text() or iterate blocks
anthropic.BadRequestError: messages.N.content.M: missing signatureStripped thinking block on replayPass AIMessage object back verbatim; never rebuild from text()
anthropic.BadRequestError: tool_use_id not found in corresponding tool_resultTypo / case mismatch in ToolMessage.tool_call_idCopy tc["id"] verbatim
anthropic.BadRequestError: tool_use ids were found without tool_result blocksSkipped a tool callEmit one ToolMessage per tool_call (use status="error" on failure)
anthropic.BadRequestError: image exceeds 5 MB limitUn-resized screenshotPre-resize to < 5 MB (1024x1024 JPEG 85 is ~500 KB)
openai.BadRequestError: Invalid image dataHand-rolled image_url with wrong prefixUse the universal block; adapter emits the data:image/...;base64, prefix
Infinite agent loopForced tool_choice inside a loop (P63)Use tool_choice="auto" for agents; forced-choice only for single-call extraction
json.JSONDecodeError inside stream loopParsing partial tool_use.input fragmentBuffer in a defaultdict(str); parse once at on_chat_model_end
Citations silently missingRead via msg.text() which strips metadataIterate msg.content and read block["citations"] on text blocks

Examples

Single-shot multi-modal on Claude + GPT-4o with one message object
python
msg = HumanMessage(content=[
    image_block("ui.png"),
    {"type": "text", "text": "Identify the broken UI element."},
])
# Same message works on both providers via adapter translation
claude_resp = claude.invoke([msg])
gpt4o_resp = gpt4o.invoke([msg])
Multi-turn Claude replay with extended thinking
python
claude = ChatAnthropic(
    model="claude-sonnet-4-6",
    max_tokens=8192,
    thinking={"type": "enabled", "budget_tokens": 4096},
)

ai_1 = claude.invoke([HumanMessage(content="What is the capital of France?")])
# ai_1.content == [{"type":"thinking",...,"signature":"..."}, {"type":"text",...}]

# Turn 2 — pass ai_1 VERBATIM
ai_2 = claude.invoke([
    HumanMessage(content="What is the capital of France?"),
    ai_1,                                                    # thinking preserved
    HumanMessage(content="And the population?"),
])

See Thinking Blocks for the full replay invariants and persistence pattern.

Extracting Claude citations from document input
python
doc_block = {
    "type": "document",
    "source": {"type": "base64", "media_type": "application/pdf", "data": pdf_b64},
    "title": "Q3 Earnings Report",
    "citations": {"enabled": True},
}
resp = claude.invoke([HumanMessage(content=[
    doc_block,
    {"type": "text", "text": "What drove revenue this quarter?"},
])])

for block in resp.content:
    if block.get("type") != "text":
        continue
    print(block["text"])
    for c in block.get("citations", []):
        print(f"  -> {c['document_title']}: {c['cited_text']!r}")

msg.text() flattens this — you lose citations. See Multi-Modal Composition for the full document block reference including supported source types.

Streaming tool_use with live argument rendering

See Tool-Use Iteration for the complete tool_call_chunks accumulator including multi-tool-per-turn handling and the ToolMessage ordering invariant.

Resources

© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in skills/.curated/langchain-content-blocks of jeremylongshore/tons-of-skills-marketplace.

  • SKILL.md
  • references/block-type-matrix.md
  • references/multimodal-composition.md
  • references/one-pager.md
  • references/thinking-blocks.md
  • references/tool-use-iteration.md

Open the folder on GitHubat commit cfae287

Compare with similar skills

Langchain Content Blocks 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.

Langchain Content Blocks compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Langchain Content Blocks this skilljeremylongshore/tons-of-skills-marketplace2.8k—~3.6kAutomated safety check: PassMIT
Add Example AgentGetBindu/Bindu10k—~1.1kAutomated safety check: NotesCustom licence
Upgrade Stripekanchengw/cnllm1733 repos~1.4kAutomated safety check: PassApache-2.0
Agent Prompt Engineeringagentailor/fullstack-langgraph-nextjs-agent132—~3.6kAutomated safety check: PassMIT
Awesome Chatgpt Searchtaishi-i/awesome-ChatGPT-repositories3.3k—~3.8kAutomated safety check: PassCC0-1.0
Llmobs IntegrationDataDog/dd-trace-js837—~1.4kAutomated safety check: PassCustom licence

Similar skills

  • Add Example Agent

    GetBindu/Bindu

    Add a new self-contained example agent under examples/. An agent skill from GetBindu/Bindu.

    10k GitHub stars~1.1k tokensUpdated 1 mo ago
    AI & LLM EngineeringAuto-check: notes
  • Upgrade Stripe

    kanchengw/cnllm

    Guide for upgrading Stripe API versions and SDKs. An agent skill from kanchengw/cnllm.

    173 GitHub starsUsed in 3 repos~1.4k tokens
    AI & LLM EngineeringAuto-check passed
  • Agent Prompt Engineering

    agentailor/fullstack-langgraph-nextjs-agent

    Comprehensive guide for designing, refining, and auditing system prompts for autonomous AI agents based on Anthropic's production practices.

    132 GitHub stars~3.6k tokensUpdated 1 mo ago
    AI & LLM EngineeringAuto-check passed
  • Awesome Chatgpt Search

    taishi-i/awesome-ChatGPT-repositories

    Search 2500+ curated ChatGPT and LLM open-source repositories.

    3.3k GitHub stars~3.8k tokensUpdated 2 days ago
    AI & LLM EngineeringAuto-check passed
  • Llmobs Integration

    DataDog/dd-trace-js

    Official

    A skill your agent uses when adding, debugging, or modifying LLMObs plugins for an LLM library in dd-trace-js.

    837 GitHub stars~1.4k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Agent Inspect

    rajudandigam/agent-inspect

    Local evidence debugger and trajectory-test toolkit for TypeScript AI agents.

    165 GitHub stars~424 tokensUpdated today
    AI & LLM EngineeringAuto-check passed

More from jeremylongshore/tons-of-skills-marketplace

All 3,342 skills in this repo
  • Performing Security Code Review

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.

    2.8k GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check: notes
  • Adapting Transfer Learning Models

    jeremylongshore/tons-of-skills-marketplace

    Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Agent Context Loader

    jeremylongshore/tons-of-skills-marketplace

    Execute proactive auto-loading: automatically detects and loads agents.md files.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Aggregating Performance Metrics

    jeremylongshore/tons-of-skills-marketplace

    Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.

    2.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Analyzing Capacity Planning

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.

    2.8k GitHub stars~947 tokensUpdated today
    Auto-check passed
  • Analyzing Database Indexes

    jeremylongshore/tons-of-skills-marketplace

    Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.

    2.8k GitHub stars~2k tokensUpdated today
    Auto-check passed

Works with

Questions about Langchain Content Blocks

What does Langchain Content Blocks do?

Works correctly with LangChain 1.0's typed content blocks on AIMessage.content — text, tooluse, image, thinking, document — across Claude, GPT-4o, and Gemini, including multi-modal composition and…. Langchain Content Blocks is an agent skill from jeremylongshore/tons-of-skills-marketplace.content — text, tooluse, image, thinking, document — across Claude, GPT-4o, and Gemini, including multi-modal composition and tool-call iteration.

When should I use Langchain Content Blocks?

Langchain Content Blocks fits situations like: composing multi-modal messages; iterating tooluse blocks; handling Claudes thinking content; unifying image inputs across providers.

How do I install Langchain Content Blocks in Claude Code?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-content-blocks -a claude-code`. Or copy the skill folder (skills/.curated/langchain-content-blocks in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/langchain-content-blocks in your project. Claude Code loads it when a task matches its description.

How do I install Langchain Content Blocks in Codex?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-content-blocks -a codex`. Or copy the skill folder (skills/.curated/langchain-content-blocks in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/langchain-content-blocks in your project. Codex loads it when a task matches its description.

Can I use Langchain Content Blocks in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-content-blocks -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/langchain-content-blocks, .gemini/skills/langchain-content-blocks, .github/skills/langchain-content-blocks and .opencode/skills/langchain-content-blocks in your project.

What does Langchain Content Blocks need to run?

Going by SKILL.md and its folder, Langchain Content Blocks needs the command-line tools its instructions call (pip). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(python:*). Compatibility (from SKILL.md): Designed for Claude Code.

Does Langchain Content Blocks access the network?

SKILL.md names 4 domains. As links in the text: python.langchain.com, platform.claude.com, platform.openai.com and ai.google.dev. This is read from the text; nothing was executed.

Is Langchain Content Blocks safe to install?

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.

What licence does Langchain Content Blocks use?

Langchain Content Blocks is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Langchain Content Blocks use?

About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.6k tokens, read only when the agent opens those files.

What are the alternatives to Langchain Content Blocks?

Skills that share tags, products or a category with Langchain Content Blocks: Add Example Agent (GetBindu/Bindu, 10k stars), Upgrade Stripe (kanchengw/cnllm, 173 stars), Agent Prompt Engineering (agentailor/fullstack-langgraph-nextjs-agent, 132 stars) and Awesome Chatgpt Search (taishi-i/awesome-ChatGPT-repositories, 3.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Langchain Content Blocks?

jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,827 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 10, 2026.

Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.