LLM Development
meleantonio/ChernyCode
LLM and ML development best practices with LangChain and transformers.
Compose LangChain 1.0 chains with RunnableParallel, RunnableBranch, RunnablePassthrough.assign, and RunnableLambda — correct input/output shapes, debug probes, and typed composition that catches…
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-core-workflow --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/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/langchain-core-workflow .claude/skills/langchain-core-workflow && 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 "langchain-core-workflow" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-core-workflow into .claude/skills/langchain-core-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-core-workflow", 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/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-core-workflowType 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 jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-core-workflow --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/.curated/langchain-core-workflow .agents/skills/langchain-core-workflow && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "langchain-core-workflow" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-core-workflow into .agents/skills/langchain-core-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-core-workflow", 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 jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-core-workflow --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/.curated/langchain-core-workflow .cursor/skills/langchain-core-workflow && 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 "langchain-core-workflow" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-core-workflow into .cursor/skills/langchain-core-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-core-workflow", 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/jeremylongshore/tons-of-skills-marketplace.git --path skills/.curated/langchain-core-workflow--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 jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-core-workflow --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/.curated/langchain-core-workflow .gemini/skills/langchain-core-workflow && 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 "langchain-core-workflow" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-core-workflow into .gemini/skills/langchain-core-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-core-workflow", 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 jeremylongshore/tons-of-skills-marketplace langchain-core-workflowInstalls 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 jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/.curated/langchain-core-workflow .github/skills/langchain-core-workflow && 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 "langchain-core-workflow" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-core-workflow into .github/skills/langchain-core-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-core-workflow", 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 jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-core-workflow --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/.curated/langchain-core-workflow .opencode/skills/langchain-core-workflow && 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 "langchain-core-workflow" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-core-workflow into .opencode/skills/langchain-core-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-core-workflow", 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.
langchain-core-workflowCompose LangChain 1.0 chains with RunnableParallel, RunnableBranch, RunnablePassthrough.assign, and RunnableLambda — correct input/output shapes, debug probes, and typed composition that catches…
Langchain Core Workflow is an agent skill from jeremylongshore/tons-of-skills-marketplace. Compose LangChain 1.0 chains with RunnableParallel, RunnableBranch, RunnablePassthrough.assign, and RunnableLambda — correct input/output shapes, debug probes, and typed composition that catches dict-shape bugs before invocation. Use when wiring multi-step chains, parallel retrievals, conditional routing, or threading state through a chain for RAG, classification, or extraction pipelines. Trigger with "runnable parallel", "runnable branch", "langchain rag composition", "passthrough assign", "langchain lcel"…
Its SKILL.md is about 4.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/branch-routing-patterns.md`, `references/debug-probes.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. 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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBash(python:*)From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
python.langchain.comblog.langchain.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Designed for Claude Code
From compatibility in the SKILL.md frontmatter.
Langchain Core Workflow loads about 4.3k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 143 tokens; SKILL.md has 1,520 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 jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 1,520 words, ~4,342 tokens.
.claude/skills/langchain-core-workflow/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.An engineer wires a four-stage LCEL chain: classify the question, retrieve context, format the prompt, invoke the LLM. It looks clean:
chain = (
RunnablePassthrough.assign(category=classifier)
| RunnablePassthrough.assign(docs=retriever)
| prompt
| llm
| StrOutputParser()
)
chain.invoke({"question": "What's our refund policy?"})The call returns this:
Traceback (most recent call last):
...
File ".../runnables/base.py", line 3421, in _call_with_config
output = call_func_with_variable_args(func, input, ...)
File ".../prompts/chat.py", line 1021, in _format_messages
return await ... await self.ainvoke({**kwargs})
KeyError: 'question'Nothing in that stack says which stage produced the wrong dict shape. The
RunnablePassthrough.assign(docs=retriever) call silently rebuilt the dict
and — because retriever was itself a Runnable[str, list[Document]] that
took the question string, not the dict — a mis-piped intermediate value
overwrote the question key. The prompt template expected {question} and
blew up. This is P06 in the pack's pain catalog: .pipe() on mismatched dict
shape raises KeyError deep in runnable internals with no hint at the
offending stage.
The fix is two patterns you install once and never remove:
RunnableLambda that logs dict keys between every two
stages. <1ms overhead per invocation. Surfaces the exact stage that mutates
the shape.RunnableSerializable[InputT, OutputT]
plus pydantic BaseModel types so mypy flags the mismatch at lint time
instead of at .invoke().Meanwhile, a second trap waits for anyone tempted to wrap tool-using chains
in the legacy AgentExecutor: it silently swallows intermediate tool errors
as empty-string observations and the agent cheerfully answers "I couldn't
find the answer" (P09). For agent loops in LangChain 1.0, skip AgentExecutor
and use LangGraph's create_react_agent — errors raise, not vanish. This
skill cross-references langchain-langgraph-agents (L26) for that path.
Composition primitives covered — with input/output shapes and use cases — are
RunnableParallel (fan-out, 2–3× wall-clock win on 2 independent retrievals),
RunnableBranch (conditional routing with mandatory default), RunnablePassthrough.assign
(merge computed fields without losing input), and RunnableLambda (arbitrary
Python, used here for debug probes and shape assertions). Pin: langchain-core 1.0.x.
Pain-catalog anchors: P06, P09.
langchain-core >= 1.0, < 2.0pydantic >= 2.0 for typed compositionlangchain-model-inference)langchain-sdk-patternsRunnableParallel for independent sub-tasksRunnableParallel({"a": chain_a, "b": chain_b}) forwards the same input to
both branches and runs them concurrently, merging results into a dict.
Wall-clock collapses to the slower branch — 2–3× speedup on two parallel
retrievals is typical (dense vector search + BM25, or tool-use + analysis).
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
# Hybrid retrieval: dense vector search and BM25 at the same time
hybrid = RunnableParallel(
dense=dense_retriever, # Runnable[str, list[Document]]
bm25=bm25_retriever, # Runnable[str, list[Document]]
query=RunnablePassthrough() # keep the original string for downstream stages
)
# Output: {"dense": [...], "bm25": [...], "query": "..."}
result = hybrid.invoke("refund policy for damaged goods")Input shape: whatever the sub-chains accept (all must accept the same shape).
Output shape: dict with one key per sub-chain. If one branch takes 5× longer,
your total latency is that branch — not the sum. See
Parallel vs Sequential for the async
.abatch() variant, shared-state gotchas, and a benchmarking template.
RunnableBranchRunnableBranch((cond, runnable), ..., default) dispatches per-input to the
first matching branch. The default is mandatory — without one you get a
silent fallthrough on unmatched inputs.
from langchain_core.runnables import RunnableBranch
router = RunnableBranch(
(lambda x: x["category"] == "refund", refund_chain),
(lambda x: x["category"] == "shipping", shipping_chain),
(lambda x: len(x["question"]) > 2000, long_form_chain),
general_chain, # default — required
)Classifier-gated routes are the common case: a cheap small-model classifier
runs first, its label goes into the dict via RunnablePassthrough.assign, and
RunnableBranch dispatches. See Branch Routing Patterns
for the signature, classifier-gated route recipe, fallback route pattern, and
pytest patterns for each branch in isolation.
RunnablePassthrough.assign.assign(field=...) merges a computed field into the input dict without
losing any existing keys. This is the primary pattern for staged context
assembly in RAG:
from langchain_core.runnables import RunnablePassthrough
def format_docs(docs: list) -> str:
return "\n\n".join(d.page_content for d in docs)
# At each step, the dict grows: {question} -> {question, docs} -> {question, docs, context}
staged = (
RunnablePassthrough.assign(docs=retriever) # adds "docs"
| RunnablePassthrough.assign(context=lambda x: format_docs(x["docs"])) # adds "context"
)
staged.invoke({"question": "..."})
# {"question": "...", "docs": [...], "context": "..."}The input dict passes through unchanged; the new field is the only mutation.
This is the safest shape-preserving primitive in LCEL — use it whenever a
downstream stage needs both the original input and a computed value. See
Passthrough Assign Patterns for
staged context assembly, the itemgetter variant for pulling a single field
into a typed chain, and anti-patterns that re-shadow input keys.
RunnableLambda for debug probes (and little else)RunnableLambda(fn) wraps any Python callable into a runnable. Its best use
is debug probes — log intermediate values without breaking the pipe:
from langchain_core.runnables import RunnableLambda
def probe(stage: str):
"""<1ms overhead per invocation. Returns input unchanged."""
def _probe(x):
keys = list(x.keys()) if isinstance(x, dict) else type(x).__name__
print(f"[probe:{stage}] keys={keys}")
return x
return RunnableLambda(_probe)
chain = (
probe("input")
| RunnablePassthrough.assign(category=classifier)
| probe("after-classify")
| RunnablePassthrough.assign(docs=retriever)
| probe("after-retrieve")
| prompt
| probe("after-prompt")
| llm
| StrOutputParser()
)When P06's KeyError strikes, the last probe that printed tells you exactly
which stage produced the wrong shape. Remove the probes (or gate them on an
env var) after debugging. For production chains that stay observable, prefer
langchain.debug = True or LangSmith tracing over print probes.
See Debug Probes for a shape-assertion decorator,
the langchain.debug flag, verbose mode, and a probe that raises instead of
prints (useful in CI).
Avoid RunnableLambda for real logic — it loses LangSmith tracing fidelity
(input/output become opaque blobs) and a >3-line lambda is a sign you want a
concrete Runnable subclass. See the anti-pattern note in
langchain-sdk-patterns/references/runnable-composition-matrix.md.
RunnableSerializable[InputT, OutputT]The root fix for P06 is static typing at chain boundaries. RunnableSerializable
carries input and output type parameters; pair it with pydantic BaseModels
and mypy catches dict-shape mismatches at lint time:
from pydantic import BaseModel
from langchain_core.runnables import RunnableSerializable
class RAGInput(BaseModel):
question: str
user_id: str
class RAGOutput(BaseModel):
answer: str
citations: list[str]
def build_rag_chain() -> RunnableSerializable[RAGInput, RAGOutput]:
return (
RunnablePassthrough.assign(docs=retriever)
| RunnablePassthrough.assign(context=lambda x: format_docs(x["docs"]))
| prompt
| llm.with_structured_output(RAGOutput)
)
rag: RunnableSerializable[RAGInput, RAGOutput] = build_rag_chain()Call rag.input_schema.model_json_schema() to dump the runtime-enforced
schema for tests or assertions. Combined with the debug probes from Step 4,
this is the typed-composition pattern that retires P06 in new code.
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough, RunnableParallel
prompt = ChatPromptTemplate.from_messages([
("system", "Answer from the context. If not in context, say so."),
("human", "Context:\n{{ context }}\n\nQuestion: {{ question }}"),
], template_format="jinja2")
# Hybrid retrieval (parallel) + staged context assembly
rag_chain = (
RunnableParallel(
dense=dense_retriever,
bm25=bm25_retriever,
question=RunnablePassthrough(),
)
| RunnablePassthrough.assign(
context=lambda x: format_hybrid(x["dense"], x["bm25"])
)
| prompt
| llm
| StrOutputParser()
)
answer = rag_chain.invoke("What's the return window for electronics?")This is the reference composition — parallel dual-retrieval (2–3× speedup vs
sequential), staged context assembly via .assign, jinja2 prompt templating
(escapes literal { from retrieved docs, see langchain-sdk-patterns), and
a simple string output. Add debug probes from Step 4 during development.
AgentExecutorLegacy AgentExecutor silently catches tool exceptions and feeds the error
message back as an empty-string observation — the agent then answers "I
couldn't find the answer" with no trace of the underlying failure (P09). In
LangChain 1.0, use LangGraph's create_react_agent instead: tool errors
raise by default, intermediate steps are inspectable, and recursion limits
are explicit.
See the pack's langchain-langgraph-agents skill (L26) for the agent
migration path. The composition primitives in this skill (RunnableParallel,
RunnableBranch, .assign) remain the right tools for the non-agent parts
of any LangGraph workflow — they compose inside a LangGraph node.
| Pattern | Input shape | Output shape | Typical use |
|---|---|---|---|
a | b | c (RunnableSequence) | a.input | c.output | Linear pipeline: prompt → llm → parser |
RunnableParallel(x=ch1, y=ch2) | forwarded to both | {"x": ch1.output, "y": ch2.output} | Fan-out: hybrid retrieval, tool-use + analysis |
RunnableBranch((cond, ch), ..., default) | anything cond accepts | ch.output or default.output | Classifier-gated routing, per-input dispatch |
RunnablePassthrough() | any | same as input | Keep original value alongside a transform in a parallel |
RunnablePassthrough.assign(k=ch) | dict | input dict with "k" added (ch.output) | Staged context assembly, threading state |
RunnableLambda(fn) | fn's arg | fn's return | Debug probes, shape assertions — avoid for real logic |
RunnableParallel, RunnableBranch, RunnablePassthrough.assign, and RunnableLambda with declared input/output shapesRunnableSerializable[InputT, OutputT] + pydantic BaseModel) that catches P06 at lint time before invocationlangchain-langgraph-agents (L26) for agent loops that avoid P09's silent-error trap| Error | Cause | Fix |
|---|---|---|
KeyError: 'question' deep in runnable internals, no stage named in stack | RunnablePassthrough.assign or an upstream runnable rebuilt the dict in a way a downstream stage does not expect (P06) | Insert RunnableLambda debug probes between stages; annotate with RunnableSerializable[InputT, OutputT] + pydantic for lint-time catch |
| Agent returns "I couldn't find the answer" with no error in logs | Legacy AgentExecutor swallows tool exceptions as empty-string observations (P09) | Migrate to LangGraph create_react_agent; see langchain-langgraph-agents (L26) |
RunnableBranch returns wrong branch's output for unmatched input | No default branch supplied; LCEL fell through to the last-declared pair | Always pass a default as the final positional arg to RunnableBranch((cond, ch), ..., default_ch) |
.assign computed field shadows input key | RunnablePassthrough.assign(question=...) overwrote the original question | Name computed fields distinctly from input keys; use itemgetter to extract when you need the original |
RunnableLambda call shows as opaque blob in LangSmith | Lambda's input/output are not traced at block-level | Replace with a concrete Runnable subclass or use .assign(key=...) with a named function |
RunnableParallel branches race on shared mutable state | A lambda closed over a non-thread-safe object | Keep parallel branches side-effect-free; materialize shared state before the parallel block |
Two retrievers run concurrently on the same query — dense vector search via
an embedding model and BM25 via rank-bm25. RunnableParallel merges the
results; a downstream .assign step formats the union. Wall-clock is the
slower retriever, not the sum — typically a 2–3× win over sequential dense
then BM25.
See Parallel vs Sequential for the benchmarking template and async variant.
A cheap small-model classifier runs first and tags the input dict with a
category. RunnableBranch dispatches refunds, shipping, and general
questions to specialist chains. The default branch handles unmatched inputs
with a disclaimer prompt.
See Branch Routing Patterns for the classifier-gated recipe and pytest isolation patterns.
RunnablePassthrough.assign(docs=retriever) then
.assign(context=format_docs) builds the prompt context without dropping the
original question. A final .assign(citations=lambda x: [d.metadata["url"] for d in x["docs"]])
threads citations through to the structured output.
See Passthrough Assign Patterns for the staged pattern and the anti-pattern around key shadowing.
In development, probes print. In CI, they assert on expected keys and raise
on mismatch — catching P06 during test runs instead of at production invoke.
See Debug Probes for the shape-assertion
decorator and the langchain.debug flag.
langchain-sdk-patterns (composition primitives, fallbacks, concurrency)langchain-langgraph-agents (L26) — avoids P09docs/pain-catalog.md (entries P06, P09)© jeremylongshore, MIT. 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 5 other files (references) in skills/.curated/langchain-core-workflow of jeremylongshore/tons-of-skills-marketplace.
Open the folder on GitHubat commit cfae287
Langchain Core Workflow 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 |
|---|---|---|---|---|---|---|
| Langchain Core Workflow this skilljeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~4.3k | Automated safety check: Pass | MIT | |
| LLM Developmentmeleantonio/ChernyCode | 516 | — | ~499 | Automated safety check: Pass | None | |
| Tool CreatorAgentTeam-TaichuAI/ScienceClaw | 671 | — | ~4.7k | Automated safety check: Pass | None | |
| Langchain ArchitectureHermeticOrmus/LibreUIUX-Claude-Code | 112 | 10 repos | ~2.5k | Automated safety check: Pass | MIT | |
| AI EngineerDokhacgiakhoa/Agent-Skills-4-Vibe-Coding-CLI | 508 | — | ~1.1k | Automated safety check: Pass | Custom licence | |
| Agents And MiddlewareVectorSpaceLab/AREX-Skill | 331 | — | ~1.2k | Automated safety check: Pass | MIT |
meleantonio/ChernyCode
LLM and ML development best practices with LangChain and transformers.
AgentTeam-TaichuAI/ScienceClaw
Create new tools or upgrade existing tools for the agent. An agent skill from AgentTeam-TaichuAI/ScienceClaw.
HermeticOrmus/LibreUIUX-Claude-Code
Design LLM applications using the LangChain framework with agents, memory, and tool integration patterns.
Dokhacgiakhoa/Agent-Skills-4-Vibe-Coding-CLI
Principal AI Architect and Machine Learning Engineer. An agent skill from Dokhacgiakhoa/Agent-Skills-4-Vibe-Coding-CLI.
VectorSpaceLab/AREX-Skill
Work on the actively maintained LangChain v1 agent package: initchatmodel, createagent, structured output, tools, middleware, embeddings initialization, provider routing, and agent runtime…
maziyarpanahi/openmed
Combine OpenMed clinical NLP with Microsoft Presidio, spaCy, or LangChain through OpenMed's built-in interop adapter registry (openmed.interop).
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.
jeremylongshore/tons-of-skills-marketplace
Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.
jeremylongshore/tons-of-skills-marketplace
Execute proactive auto-loading: automatically detects and loads agents.md files.
jeremylongshore/tons-of-skills-marketplace
Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.
jeremylongshore/tons-of-skills-marketplace
Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.
Works with
Categories
Compose LangChain 1.0 chains with RunnableParallel, RunnableBranch, RunnablePassthrough.assign, and RunnableLambda — correct input/output shapes, debug probes, and typed composition that catches…. Langchain Core Workflow is an agent skill from jeremylongshore/tons-of-skills-marketplace.assign, and RunnableLambda — correct input/output shapes, debug probes, and typed composition that catches dict-shape bugs before invocation.
Langchain Core Workflow fits situations like: wiring multi-step chains; parallel retrievals; conditional routing; threading state through a chain for RAG.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -a claude-code`. Or copy the skill folder (skills/.curated/langchain-core-workflow in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/langchain-core-workflow in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -a codex`. Or copy the skill folder (skills/.curated/langchain-core-workflow in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/langchain-core-workflow 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 jeremylongshore/tons-of-skills-marketplace --skill langchain-core-workflow -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-core-workflow, .gemini/skills/langchain-core-workflow, .github/skills/langchain-core-workflow and .opencode/skills/langchain-core-workflow in your project.
SKILL.md names no scripts, command-line tools or credentials: Langchain Core Workflow is instructions for the agent only. Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(python:*). Compatibility (from SKILL.md): Designed for Claude Code.
SKILL.md names 2 domains. As links in the text: python.langchain.com and blog.langchain.com. 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.
Langchain Core Workflow is published under the MIT licence (declared in SKILL.md). 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. Its references folder adds about 6.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Langchain Core Workflow: LLM Development (meleantonio/ChernyCode, 516 stars), Tool Creator (AgentTeam-TaichuAI/ScienceClaw, 671 stars), Langchain Architecture (HermeticOrmus/LibreUIUX-Claude-Code, 112 stars) and AI Engineer (Dokhacgiakhoa/Agent-Skills-4-Vibe-Coding-CLI, 508 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
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.