Install any skill in seconds. Free to start, no credit card required.
Get Started Free →jeremylongshore/langchain-core-workflow
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.
Passed 23 of 24 test cases with the skill, and 20 of 24 without it.
3 fixed20 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 3 test cases the skill fixed. Same model, same prompt, with and without the skill.
I want to build a Python RAG pipeline using LCEL primitives that executes dense embedding lookup and keyword BM25 retrieval concurrently for a user question. The retrieved outputs need to be formatted into context while maintaining the original question in the chain state before rendering the final prompt template.
| Checked | Without skill | With skill |
|---|---|---|
| Uses RunnableParallel to run dense vector retrieval and BM25 search concurrently. | Passed | Passed |
| Uses RunnablePassthrough.assign to format context while keeping the original question in state. | Missed | Passed |
The instructions your model reads when the skill loads.
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.
test cases passed, vs 20 / 24 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.