Dive Into LangGraph
luochang212/dive-into-langgraph
A Chinese-language guide and reference for building agents with LangGraph 1.0, from a first ReAct agent through middleware, memory, MCP, RAG and web search.
Develop, test, and extend ChemGraph -- an agentic framework for automated molecular simulations using LLMs, LangGraph, ASE, and MCP servers
$ npx skills add argonne-lcf/ChemGraph --skill chemgraph -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install argonne-lcf/ChemGraph chemgraph --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/argonne-lcf/ChemGraph.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.opencode/skills/chemgraph .claude/skills/chemgraph && 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 "chemgraph" agent skill from https://github.com/argonne-lcf/ChemGraph/tree/main/.opencode/skills/chemgraph into .claude/skills/chemgraph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemgraph", 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/argonne-lcf/ChemGraph/tree/main/.opencode/skills/chemgraphType 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 argonne-lcf/ChemGraph --skill chemgraph -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install argonne-lcf/ChemGraph chemgraph --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/argonne-lcf/ChemGraph.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.opencode/skills/chemgraph .agents/skills/chemgraph && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "chemgraph" agent skill from https://github.com/argonne-lcf/ChemGraph/tree/main/.opencode/skills/chemgraph into .agents/skills/chemgraph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemgraph", 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 argonne-lcf/ChemGraph --skill chemgraph -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install argonne-lcf/ChemGraph chemgraph --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/argonne-lcf/ChemGraph.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.opencode/skills/chemgraph .cursor/skills/chemgraph && 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 "chemgraph" agent skill from https://github.com/argonne-lcf/ChemGraph/tree/main/.opencode/skills/chemgraph into .cursor/skills/chemgraph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemgraph", 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/argonne-lcf/ChemGraph.git --path .opencode/skills/chemgraph--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 argonne-lcf/ChemGraph --skill chemgraph -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install argonne-lcf/ChemGraph chemgraph --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/argonne-lcf/ChemGraph.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.opencode/skills/chemgraph .gemini/skills/chemgraph && 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 "chemgraph" agent skill from https://github.com/argonne-lcf/ChemGraph/tree/main/.opencode/skills/chemgraph into .gemini/skills/chemgraph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemgraph", 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 argonne-lcf/ChemGraph chemgraphInstalls 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 argonne-lcf/ChemGraph --skill chemgraph -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/argonne-lcf/ChemGraph.git skills-src && mkdir -p .github/skills && cp -r skills-src/.opencode/skills/chemgraph .github/skills/chemgraph && 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 "chemgraph" agent skill from https://github.com/argonne-lcf/ChemGraph/tree/main/.opencode/skills/chemgraph into .github/skills/chemgraph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemgraph", 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 argonne-lcf/ChemGraph --skill chemgraph -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install argonne-lcf/ChemGraph chemgraph --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/argonne-lcf/ChemGraph.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.opencode/skills/chemgraph .opencode/skills/chemgraph && 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 "chemgraph" agent skill from https://github.com/argonne-lcf/ChemGraph/tree/main/.opencode/skills/chemgraph into .opencode/skills/chemgraph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemgraph", 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.
chemgraphDevelop, test, and extend ChemGraph -- an agentic framework for automated molecular simulations using LLMs, LangGraph, ASE, and MCP servers
Chemgraph is an agent skill from argonne-lcf/ChemGraph. Develop, test, and extend ChemGraph -- an agentic framework for automated molecular simulations using LLMs, LangGraph, ASE, and MCP servers
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: opencode
It sits in AI & LLM Engineering, covering Building AI agents, MCP servers and Drug discovery and cheminformatics. It works with Model Context Protocol, LangGraph and LangChain. The repository describes itself as: Agentic framework for computational chemistry and materials science workflows. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e890eb3. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pytestpythondockerstreamlitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use docker, which can reach the network depending on how they are called.
From 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.
opencode
From compatibility in the SKILL.md frontmatter.
Chemgraph loads about 2.7k tokens when it runs. Until then it costs about 37 tokens; SKILL.md has 795 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 argonne-lcf/ChemGraph at commit e890eb3, republished under its Apache-2.0 licence (© argonne-lcf). 795 words, ~2,694 tokens.
.claude/skills/chemgraph/SKILL.md (or your agent's skills folder).ChemGraph is a Python framework (package name chemgraph) built at Argonne National Laboratory that automates computational chemistry workflows using LLMs. It connects natural language queries to molecular simulations via an agent architecture built on LangGraph/LangChain, ASE (Atomic Simulation Environment), RDKit, and MCP (Model Context Protocol) servers.
Key capabilities: molecule lookup (PubChem), 3D structure generation (RDKit), geometry optimization, vibrational analysis, thermochemistry, IR spectra, and HPC-scale ensemble simulations via Parsl.
ChemGraph/
src/
chemgraph/ # Core package
agent/ # Main ChemGraph agent class (llm_agent.py)
graphs/ # LangGraph workflow definitions (9 workflows)
tools/ # LangChain tool implementations
mcp/ # FastMCP server implementations
models/ # LLM provider integrations (OpenAI, Anthropic, Gemini, Groq, Ollama, ALCF, Argo)
prompt/ # System prompt templates per model/workflow
schemas/ # Pydantic data models (AtomsData, ASEInput/Output, calculators)
memory/ # Session memory (SQLite-backed persistence, schemas)
state/ # LangGraph state definitions
hpc_configs/ # Parsl configs for ALCF Polaris/Aurora
utils/ # Config, logging, evaluation utilities
ui/ # Streamlit web app (app.py) and Rich CLI (cli.py)
tests/ # pytest test suite (20+ files)
scripts/ # MCP examples, Parsl examples
notebooks/ # Jupyter demo notebooks
docs/ # MkDocs documentation source
config.toml # Default runtime configuration
pyproject.toml # Package metadata and dependencies
docker-compose.yml # Multi-profile Docker (jupyter, streamlit, mcp, cli)src/chemgraph/agent/llm_agent.py contains the ChemGraph class. This is the central orchestrator:
astreamEach file defines a LangGraph StateGraph. The workflows are:
| Workflow | File | Purpose |
|---|---|---|
single_agent | single_agent.py | Default. One LLM with chemistry tools |
multi_agent | multi_agent.py | Planner/Executor/Aggregator pipeline |
graspa | graspa_agent.py | Gas adsorption in MOFs |
mock_agent | mock_agent.py | Testing workflow |
graspa_mcp | graspa_mcp.py | gRASPA via MCP + Parsl |
mof_builder_mcp | mof_builder_mcp.py | MOF construction via MCP |
LangChain @tool-decorated functions. Key files:
ase_tools.py -- run_ase (energy/opt/vib/thermo), save_atomsdata_to_file, file_to_atomsdatacheminformatics_tools.py -- molecule_name_to_smiles, smiles_to_coordinate_file, smiles_to_atomsdatageneric_tools.py -- calculator (safe math eval), ask_humanreport_tools.py -- generate_html (interactive HTML reports with NGL 3D viewer)graspa_tools.py -- gRASPA simulation toolsarchitector_tools.py -- Metal complex toolspormake_tools.py -- MOF topology/structure toolsparsl_tools.py -- MACE with Parsl for HPC parallel executionFastMCP-based servers. Each exposes chemistry tools over stdio or HTTP:
mcp_tools.py -- General chemistry MCP server (name-to-SMILES, structure gen, ASE simulations, file I/O). Port 9003.mace_mcp_parsl.py -- MACE ML potential with Parsl HPC. Port 9004.graspa_mcp_parsl.py -- gRASPA simulation with Parsl HPC. Port 9005.data_analysis_mcp.py -- Data analysis (CIF splitting, JSONL aggregation, isotherm plotting). Port 9006.server_utils.py -- Shared startup utility (run_mcp_server), handles stdio vs streamable_http transport, logging to stderr.Pydantic models for data validation:
atomsdata.py -- AtomsData (numbers, positions, cell, pbc)ase_input.py -- ASEInputSchema / ASEOutputSchemaagent_response.py -- ResponseFormatter, VibrationalFrequency, IRSpectrum, etc.calculators/ -- One schema per calculator: mace_calc.py, emt_calc.py, tblite_calc.py, nwchem_calc.py, orca_calc.py, psi4_calc.py, fairchem_calc.py, mopac_calc.py, aimnet2_calc.pySQLite-backed session persistence:
store.py -- SessionStore class: CRUD for sessions, context building for resume, prefix-based session ID lookup. Database at ~/.chemgraph/sessions.db.schemas.py -- SessionMessage (role, content, tool_name, timestamp), Session (full record with messages), SessionSummary (lightweight listing model)LangGraph state definitions:
state.py -- State (messages + remaining_steps), MultiAgentStatemulti_agent_state.py -- ManagerWorkerState for Planner/Executor/Aggregatorgraspa_state.py, mof_state.py -- Domain-specific statessrc/chemgraph/tools/@tool decorator from langchain_core.toolsschemas/ase_input.py for the pattern)src/chemgraph/graphs/) and add it to the tools listtests/Example pattern from cheminformatics_tools.py:
from langchain_core.tools import tool
@tool
def molecule_name_to_smiles(name: str) -> str:
"""Convert a molecule name to SMILES using PubChem."""
import pubchempy as pcp
comps = pcp.get_compounds(name.strip(), "name")
if not comps:
raise ValueError(f"No PubChem compound found for: {name}")
return comps[0].connectivity_smiles # .smiles keeps stereochemistryMCP tools are defined in src/chemgraph/mcp/ using FastMCP:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(name="My Server", instructions="...")
@mcp.tool(name="my_tool", description="What it does")
async def my_tool(param: str) -> dict:
# implementation
return {"status": "success", "result": ...}
if __name__ == "__main__":
from chemgraph.mcp.server_utils import run_mcp_server
run_mcp_server(mcp, default_port=9007)The run_mcp_server utility handles:
--transport stdio (default) for LangGraph/OpenCode MCP clients--transport streamable_http with --port and --host for HTTP accessCHEMGRAPH_LOG_DIRsrc/chemgraph/schemas/calculators/ (follow mace_calc.py pattern)calculator_type, implement get_calculator() returning an ASE calculator, and optionally get_atoms_properties()src/chemgraph/tools/mcp_helper.py load_calculator() with a new elif branchsrc/chemgraph/graphs/StateGraph with nodes, edges, and conditional routingsrc/chemgraph/agent/llm_agent.py in the workflow dispatch logicsrc/chemgraph/prompt/ if neededsrc/chemgraph/state/ if the workflow needs custom state# Run all tests (excluding LLM-dependent tests)
pytest tests/
# Run with LLM tests
pytest tests/ --run-llm
# Run specific test file
pytest tests/test_mcp.py
# Run async tests
pytest tests/test_mcp.py -vTest markers:
@pytest.mark.llm -- requires LLM API access (skipped by default)@pytest.mark.asyncio -- async tests# stdio mode (for LangGraph / OpenCode / Claude Desktop)
python -m chemgraph.mcp.mcp_tools
# HTTP mode
python -m chemgraph.mcp.mcp_tools --transport streamable_http --port 9003
# With log directory
CHEMGRAPH_LOG_DIR=/tmp/chemgraph_logs python -m chemgraph.mcp.mcp_tools# Single query
chemgraph --query "Calculate the energy of water using MACE"
# Interactive mode
chemgraph --interactive
# List supported models
chemgraph --list-models
# Session management
chemgraph --list-sessions
chemgraph --show-session a3b2
chemgraph --delete-session a3b2c1d4
chemgraph -q "Follow-up query" --resume a3b2streamlit run src/ui/app.pyconfig.toml at the project root controls runtime settings:
[general] -- model, workflow, recursion_limit, verbosity[chemistry.calculators] -- omit default for automatic selection (mace_polar when the graph-longrange add-on is installed, otherwise mace_mp); an explicit default preserves that selection. Fallback is emt.[chemistry.optimization] -- optimizer method, fmax, steps[api.*] -- LLM provider base URLs and timeouts.pre-commit-config.yaml (Ruff linter + formatter)# Streamlit UI
docker compose --profile streamlit up
# MCP server
docker compose --profile mcp up
# Jupyter notebooks
docker compose --profile jupyter uplanggraph + langchain -- agent orchestrationase -- atomic simulation environmentrdkit -- cheminformatics, 3D structure generationpubchempy -- PubChem molecule lookupmcp + fastmcp -- Model Context Protocol serversmace-torch -- MACE ML potentialspydantic -- data validationparsl -- HPC parallel execution (optional)streamlit + stmol -- web UI (optional)Use this skill when:
© argonne-lcf, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .opencode/skills/chemgraph of argonne-lcf/ChemGraph.
Open the folder on GitHubat commit e890eb3
Chemgraph 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 |
|---|---|---|---|---|---|---|
| Chemgraph this skillargonne-lcf/ChemGraph | 162 | — | ~2.7k | Automated safety check: Pass | Apache-2.0 | |
| Dive Into LangGraphluochang212/dive-into-langgraph | 457 | — | ~837 | Automated safety check: Notes | Custom licence | |
| Tool Designagentailor/fullstack-langgraph-nextjs-agent | 132 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Magic ResumeMagic-Resume/Magic-Resume | 101 | — | ~663 | Automated safety check: Pass | MIT | |
| Agent Eval Casesagentailor/fullstack-langgraph-nextjs-agent | 132 | — | ~5.3k | Automated safety check: Pass | MIT | |
| Agent Inspectrajudandigam/agent-inspect | 165 | — | ~424 | Automated safety check: Pass | MIT |
luochang212/dive-into-langgraph
A Chinese-language guide and reference for building agents with LangGraph 1.0, from a first ReAct agent through middleware, memory, MCP, RAG and web search.
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).
Magic-Resume/Magic-Resume
How AI agents integrate with Magic Resume — read and safely edit a user's resumes through the native MCP server (@magic-resume/mcp).
agentailor/fullstack-langgraph-nextjs-agent
Decide which AI agent behaviors are worth an eval case, then write those cases — harness-, framework-, and language-agnostic.
rajudandigam/agent-inspect
Local evidence debugger and trajectory-test toolkit for TypeScript AI agents.
strands-agents/harness-sdk
Build, extend, evaluate, or migrate applications with Strands Agents in Python or TypeScript.
Works with
Develop, test, and extend ChemGraph -- an agentic framework for automated molecular simulations using LLMs, LangGraph, ASE, and MCP servers. Chemgraph is an agent skill from argonne-lcf/ChemGraph.
Chemgraph fits situations like: tasks that involve Building AI agents; tasks that involve MCP servers; tasks that involve Drug discovery and cheminformatics.
Run `npx skills add argonne-lcf/ChemGraph --skill chemgraph -a claude-code`. Or copy the skill folder (.opencode/skills/chemgraph in argonne-lcf/ChemGraph) into .claude/skills/chemgraph in your project. Claude Code loads it when a task matches its description.
Run `npx skills add argonne-lcf/ChemGraph --skill chemgraph -a codex`. Or copy the skill folder (.opencode/skills/chemgraph in argonne-lcf/ChemGraph) into .agents/skills/chemgraph 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 argonne-lcf/ChemGraph --skill chemgraph -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/chemgraph, .gemini/skills/chemgraph, .github/skills/chemgraph and .opencode/skills/chemgraph in your project.
Going by SKILL.md and its folder, Chemgraph needs the command-line tools its instructions call (pytest, python, docker and streamlit). Our summary lists: Python 3; Docker. Compatibility (from SKILL.md): opencode.
SKILL.md contains no URLs. Its commands use docker, which can reach the network depending on how they are called. 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.
Chemgraph is published under the Apache-2.0 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.
Skills that share tags, products or a category with Chemgraph: Dive Into LangGraph (luochang212/dive-into-langgraph, 457 stars), Tool Design (agentailor/fullstack-langgraph-nextjs-agent, 132 stars), Magic Resume (Magic-Resume/Magic-Resume, 101 stars) and Agent Eval Cases (agentailor/fullstack-langgraph-nextjs-agent, 132 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
argonne-lcf (a GitHub organization) maintains it in argonne-lcf/ChemGraph, which has 162 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.
Source: argonne-lcf/ChemGraph on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.