Tool Design
agentailor/fullstack-langgraph-nextjs-agent
Design and verify tools that AI agents can actually use — for any framework or language (MCP servers, LangChain/LangGraph, function-calling, raw JSON schema; TypeScript, Python, or otherwise).
Agent skill
by jeremylongshore in jeremylongshore/tons-of-skills-marketplace
Invoke Claude, GPT-4o, and Gemini through LangChain 1.0 without tripping on the content-block, token-accounting, and structured-output quirks that silently break production code.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-model-inference -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-model-inference --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-model-inference .claude/skills/langchain-model-inference && 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-model-inference" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-model-inference into .claude/skills/langchain-model-inference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-model-inference", 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-model-inferenceType 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-model-inference -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-model-inference --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-model-inference .agents/skills/langchain-model-inference && 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-model-inference" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-model-inference into .agents/skills/langchain-model-inference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-model-inference", 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-model-inference -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-model-inference --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-model-inference .cursor/skills/langchain-model-inference && 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-model-inference" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-model-inference into .cursor/skills/langchain-model-inference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-model-inference", 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-model-inference--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-model-inference -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace langchain-model-inference --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-model-inference .gemini/skills/langchain-model-inference && 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-model-inference" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-model-inference into .gemini/skills/langchain-model-inference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-model-inference", 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-model-inferenceInstalls 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-model-inference -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-model-inference .github/skills/langchain-model-inference && 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-model-inference" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-model-inference into .github/skills/langchain-model-inference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-model-inference", 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-model-inference -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-model-inference --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-model-inference .opencode/skills/langchain-model-inference && 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-model-inference" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/langchain-model-inference into .opencode/skills/langchain-model-inference/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "langchain-model-inference", 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-model-inferenceInvoke Claude, GPT-4o, and Gemini through LangChain 1.0 without tripping on the content-block, token-accounting, and structured-output quirks that silently break production code.
Langchain Model Inference is an agent skill from jeremylongshore/tons-of-skills-marketplace. Invoke Claude, GPT-4o, and Gemini through LangChain 1.0 without tripping on the content-block, token-accounting, and structured-output quirks that silently break production code. Use when initializing chat models, routing across providers, iterating AIMessage content, or choosing a structured-output method. Trigger with "langchain model inference", "ChatAnthropic", "ChatOpenAI", "withstructuredoutput", "AIMessage content blocks", "langchain routing".
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/content-blocks.md`, `references/one-pager.md` and `references/provider-quirks.md`). Compatibility notes: Designed for Claude Code
It sits in AI & LLM Engineering, covering Building AI agents and Structured output and tool calling. 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.
5 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:*)Bash(pip:*)GrepFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pipFrom 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 these keys or tokens, usually read from environment variables:
ANTHROPIC_API_KEYOPENAI_API_KEYGOOGLE_API_KEYFrom 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 Model Inference loads about 2.7k tokens when it runs, and up to ~7.4k if it reads all its reference files. Until then it costs about 121 tokens; SKILL.md has 784 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). 784 words, ~2,683 tokens.
.claude/skills/langchain-model-inference/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.AIMessage.content is a str on simple OpenAI calls and a list[dict] on Claude
the instant any tool_use, thinking, or image block enters the response.
Code that does message.content.lower() crashes with
AttributeError: 'list' object has no attribute 'lower' — the #1 first-production-call
LangChain 1.0 bug on Anthropic. And that is one of four separate "content shape"
pitfalls in this skill:
AIMessage.content list-vs-string divergencewith_structured_output(method="function_calling") silently drops
Optional[list[X]] fields on ~40% of real schemastemperature=0 is not deterministic on Anthropic even though it is on OpenAIThis skill walks through ChatAnthropic, ChatOpenAI, and ChatGoogleGenerativeAI
initialization; model routing; token counting that is actually correct during
streaming; content-block iteration; and a decision tree for with_structured_output
methods that holds up on real schemas. Pin: langchain-core 1.0.x,
langchain-anthropic 1.0.x, langchain-openai 1.0.x, langchain-google-genai 1.0.x.
Pain-catalog anchors: P01, P02, P03, P04, P05, P53, P54, P58, P63, P64, P65.
langchain-core >= 1.0, < 2.0pip install langchain-anthropic langchain-openaiANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEYfrom langchain_anthropic import ChatAnthropic
from langchain_openai import ChatOpenAI
claude = ChatAnthropic(
model="claude-sonnet-4-6",
temperature=0,
max_tokens=4096,
timeout=30, # seconds. Default is None — hangs forever on provider stall.
max_retries=2, # Retries, not attempts. See P30 in pain catalog.
)
gpt4o = ChatOpenAI(
model="gpt-4o",
temperature=0,
timeout=30,
max_retries=2,
)Explicit timeout and max_retries are not optional in production — the defaults
are wrong for every workload we have measured. max_retries=6 (the default on
ChatOpenAI) means a single logical call can bill as 7 requests on flaky
networks.
AIMessage.content as typed blocks, not stringsfrom langchain_core.messages import AIMessage
def extract_text(msg: AIMessage) -> str:
"""Safe on both provider shapes. Works for streaming deltas too.
Handles both dict blocks (provider-native) and typed block objects
(LangChain 1.0 wrappers) — which Gemini, OpenAI tools, and future
SDK versions may return.
"""
if isinstance(msg.content, str):
return msg.content
parts = []
for block in msg.content:
# Block may be a dict (provider-native) or a typed object (1.0 wrapper)
block_type = block.get("type") if isinstance(block, dict) else getattr(block, "type", None)
if block_type == "text":
parts.append(block["text"] if isinstance(block, dict) else block.text)
return "".join(parts)AIMessage.text() (1.0+) does this for you in most cases — prefer it. Roll your
own only when you need to filter by block type (tool_use, image, thinking).
See Content Blocks for the full block-type
reference and streaming-delta shape.
from langchain_core.language_models import BaseChatModel
# Version-safe defaults applied to every model the factory builds.
# Callers can override via **kwargs.
_SAFE_DEFAULTS = {"timeout": 30, "max_retries": 2}
def chat_model(provider: str, **kwargs) -> BaseChatModel:
defaults = {**_SAFE_DEFAULTS, **kwargs} # caller's kwargs win
if provider == "anthropic":
return ChatAnthropic(model="claude-sonnet-4-6", **defaults)
if provider == "openai":
return ChatOpenAI(model="gpt-4o", **defaults)
if provider == "gemini":
from langchain_google_genai import ChatGoogleGenerativeAI
return ChatGoogleGenerativeAI(model="gemini-2.5-pro", **defaults)
raise ValueError(f"Unknown provider: {provider!r}")A factory centralizes the version-safe defaults from Step 1 (timeout=30,
max_retries=2) and the structured-output method pick from Step 5. Chains depend
on the BaseChatModel protocol, not the concrete class. Callers override with
chat_model("openai", timeout=60) when they need it.
ChatAnthropic.stream() does not populate response_metadata["token_usage"]
until the stream closes (P01). If your cost dashboard reads on_llm_end, it
lags by the stream duration. Use astream_events(version="v2"):
async for event in claude.astream_events({"input": "..."}, version="v2"):
if event["event"] == "on_chat_model_stream":
chunk = event["data"]["chunk"]
if hasattr(chunk, "usage_metadata") and chunk.usage_metadata:
meter.record(chunk.usage_metadata["input_tokens"],
chunk.usage_metadata["output_tokens"])See Token Accounting for per-provider differences (Anthropic reports input/output/cache separately; OpenAI aggregates; Gemini reports completion-only on stream start).
with_structured_output method| Provider | Model class | Recommended method | Why |
|---|---|---|---|
| Anthropic | Claude 3.5+, 4.x | json_schema | Provider-enforced, supports $ref and unions |
| OpenAI | GPT-4o, GPT-4-turbo | json_schema | Strict schema, additionalProperties: false enforced |
| OpenAI | GPT-3.5, legacy | function_calling | Pre-json_schema fallback |
| Gemini | Gemini 2.5 Pro/Flash | json_schema | Native structured output in 1.0+ |
| Any | Older or unknown | json_mode + Pydantic validate + retry | JSON-parseable only, no schema enforcement (P54) |
from pydantic import BaseModel, ConfigDict
class Plan(BaseModel):
model_config = ConfigDict(extra="ignore") # P53 — models add helpful extra fields
steps: list[str]
estimated_minutes: int
structured = claude.with_structured_output(Plan, method="json_schema")
plan = structured.invoke("Plan a 3-step deploy")Avoid Optional[list[X]] fields — they silently return None on some providers (P03).
See Structured Output Methods for a
concrete comparison matrix and fallback pattern.
max_retries=2str and list[dict] shapesBaseChatModel return typewith_structured_output chosen per provider capability, with Pydantic validation| Error | Cause | Fix |
|---|---|---|
AttributeError: 'list' object has no attribute 'lower' | Treating Claude AIMessage.content as str (P02) | Use msg.text() or the Step 2 extractor |
ValidationError: extra fields not permitted | Pydantic v2 strict default; model added fields (P53) | Set model_config = ConfigDict(extra="ignore") |
ValidationError: Field required on Optional[list[X]] | method="function_calling" drops ambiguous unions (P03) | Switch to method="json_schema" |
anthropic.BadRequestError: tool_choice requires tools | Forcing tool without binding any (P63) | Call .bind_tools([tool]) before .with_config(tool_choice=...) |
google.api_core.exceptions.InvalidArgument: finish_reason=SAFETY | Gemini default safety thresholds (P65) | Override safety_settings per model init or switch provider |
Streaming response response_metadata["token_usage"] == {} | Stream end not yet reached (P01) | Use astream_events(version="v2") |
ImportError: cannot import name 'ChatOpenAI' from 'langchain.chat_models' | Legacy 0.2 import path (P38) | from langchain_openai import ChatOpenAI |
A common pattern — draft with gpt-4o-mini, finalize with claude-sonnet-4-6.
The factory in Step 3 makes this trivial; combined with with_structured_output
the finalize step returns a typed object.
See Provider Quirks for the full draft-then-finalize example including the token budget calculation.
A classification task that should return one tool call with a typed argument.
Use bind_tools([...], tool_choice={"type": "tool", "name": "Classify"}) for
a single forced call — but never loop on a forced choice (P63).
See Structured Output Methods for the worked example and the decision tree for tool vs structured-output for extraction.
Images are passed as content blocks, but the block shape differs between providers
(P64). LangChain 1.0 abstracts this into a universal image content block.
See Content Blocks for the universal shape and per-provider adapter examples.
AIMessage API referencewith_structured_outputastream_events v2docs/pain-catalog.md (entries P01-P05, P53, P54, P58, P63-P65)© 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-model-inference of jeremylongshore/tons-of-skills-marketplace.
Open the folder on GitHubat commit cfae287
Langchain Model Inference 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 Model Inference this skilljeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~2.7k | Automated safety check: Pass | MIT | |
| Tool Designagentailor/fullstack-langgraph-nextjs-agent | 132 | — | ~3.2k | Automated safety check: Pass | MIT | |
| LangchainOrchestra-Research/AI-Research-SKILLs | 13k | 2 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Langchainlangchain-ai/docs | 426 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Sap Cloud SDK AIsecondsky/sap-skills | 462 | — | ~3.2k | Automated safety check: Pass | GPL-3.0 | |
| Scaffolding Openai Agentsaiskillstore/marketplace | 433 | — | ~3.3k | Automated safety check: Pass | None |
agentailor/fullstack-langgraph-nextjs-agent
Design and verify tools that AI agents can actually use — for any framework or language (MCP servers, LangChain/LangGraph, function-calling, raw JSON schema; TypeScript, Python, or otherwise).
Orchestra-Research/AI-Research-SKILLs
Framework for building LLM-powered applications with agents, chains, and RAG.
langchain-ai/docs
Build agents with a prebuilt architecture and integrations for any model or tool.
secondsky/sap-skills
Integrates SAP Cloud SDK for AI into JavaScript/TypeScript and Java applications.
aiskillstore/marketplace
Builds AI agents using OpenAI Agents SDK with async/await patterns and multi-agent orchestration.
aiskillstore/marketplace
Integrate applications with RouterBase, the OpenAI-compatible model gateway at https://routerbase.com/v1.
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.
Categories
Invoke Claude, GPT-4o, and Gemini through LangChain 1.0 without tripping on the content-block, token-accounting, and structured-output quirks that silently break production code. Langchain Model Inference is an agent skill from jeremylongshore/tons-of-skills-marketplace.0 without tripping on the content-block, token-accounting, and structured-output quirks that silently break production code.
Langchain Model Inference fits situations like: initializing chat models; routing across providers; iterating AIMessage content; choosing a structured-output method.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-model-inference -a claude-code`. Or copy the skill folder (skills/.curated/langchain-model-inference in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/langchain-model-inference in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill langchain-model-inference -a codex`. Or copy the skill folder (skills/.curated/langchain-model-inference in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/langchain-model-inference 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-model-inference -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-model-inference, .gemini/skills/langchain-model-inference, .github/skills/langchain-model-inference and .opencode/skills/langchain-model-inference in your project.
Going by SKILL.md and its folder, Langchain Model Inference needs the command-line tools its instructions call (pip) and credentials named ANTHROPIC_API_KEY, OPENAI_API_KEY and GOOGLE_API_KEY. Our summary lists: Python 3; A credential in ANTHROPIC_API_KEY; A credential in OPENAI_API_KEY. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(python:*), Bash(pip:*), Grep. 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 Model Inference is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k 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 4.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Langchain Model Inference: Tool Design (agentailor/fullstack-langgraph-nextjs-agent, 132 stars), Langchain (Orchestra-Research/AI-Research-SKILLs, 13k stars), Langchain (langchain-ai/docs, 426 stars) and Sap Cloud SDK AI (secondsky/sap-skills, 462 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.