Contributing to documentation ↗
noOriginal Documentation
Documentation Index#
Fetch the complete documentation index at: https://docs.langchain.com/llms.txt Use this file to discover all available pages before exploring further.
We welcome contributions to LangChain documentation, including new features, integrations, and improvements to existing docs.
Quick start - local development#
To run a local preview of the documentation:
git clone https://github.com/langchain-ai/docs.gitcd docsmake installmake devThis starts a development server with hot reload at http://localhost:3000. Edit files in src/ and see changes immediately.
If you are having issues with you local preview, try running mint update to ensure you’re using the latest Mintlify version.
Optional:
- markdownlint-cli -
npm install -g markdownlint-cli - Mintlify MDX VSCode extension
Edit documentation#
- Click Edit this page on GitHub at the bottom of any page.
- Fork to your personal account.
- Make changes in GitHub’s web editor.
- Create a pull request.
Only edit files in src/– The build/ directory is automatically generated.
- Edit files in
src/following our writing standards. - Run quality checks before submitting.
- Create a pull request for review.
- Copy the preview branch’s ID from the comment
- In the Mintlify dashboard, click Create preview deployment
- Enter the preview branch’s ID and click Create deployment
- Select the preview and click Visit to view
To redeploy with latest changes, click Redeploy on the dashboard.
Run quality checks#
Before submitting changes, ensure your code passes formatting and linting checks:
# Check broken links
make mint-broken-links
# Format code automatically
make format
# Check for linting issues
make lint
# Fix markdown issues
make lint_md_fix
# Run tests to ensure your changes don't break existing functionality
make testFor more details, see the available commands section in the README.
All pull requests are automatically checked by CI/CD. The same linting and formatting standards will be enforced, and PRs cannot be merged if these checks fail.
Documentation types#
All documentation falls under one of four categories:
Task-oriented instructions for users who know what they want to accomplish.
Explanations that provide deeper understanding and insights.
Technical descriptions of APIs and implementation details.
Lessons that guide users through practical activities to build understanding.
Where applicable, all documentation must have both Python and JavaScript/TypeScript content. For more details, see the co-locate Python and JavaScript/TypeScript content section.
How-to guides#
How-to guides are task-oriented instructions for users who know what they want to accomplish. Examples of how-to guides are on the LangChain and LangGraph tabs.
Conceptual guides#
Conceptual guide cover core concepts abstractly, providing deep understanding.
Reference#
Reference documentation contains detailed, low-level information describing exactly what functionality exists and how to use it.
A good reference should:
- Describe what exists (all parameters, options, return values)
- Be comprehensive and structured for easy lookup
- Serve as the authoritative source for technical details
Tutorials#
Tutorials are longer form step-by-step guides that builds upon itself and takes users through a specific practical activity to build understanding. Tutorials are typically found on the Learn tab.
We generally do not merge new tutorials from outside contributors without an acute need. If you feel that a certain topic is missing from docs or is not sufficiently covered, please open a new issue.
Writing standards#
Reference documentation has different standards - see the reference docs contributing guide for details.
Mintlify components#
Use Mintlify components to enhance readability:
<span class="callout-start" data-callout-type="note"></span>for helpful supplementary information<span class="callout-start" data-callout-type="warning"></span>for important cautions and breaking changes<span class="callout-start" data-callout-type="tip"></span>for best practices and advice<span class="callout-start" data-callout-type="info"></span>for neutral contextual information<span class="callout-start" data-callout-type="check"></span>for success confirmations<span class="steps-start"></span>for an overview of sequential procedures. Not for long lists of steps or tutorials.<span class="tab-group-start"></span>for platform-specific content.<AccordionGroup>and<Accordion>for nice-to-have information that can be collapsed by default (e.g., full code examples).<span class="card-group-start" data-cols="2"></span>and<Card>for highlighting content.`` for multiple language examples.
Always specify language tags on code blocks (e.g.,
```python,```javascript).- Titles for code blocks (e.g.
Success,Error Response)
- Titles for code blocks (e.g.
Page structure#
Every documentation page must begin with YAML frontmatter:
---
title: "Clear, specific title"
sidebarTitle: "Short title for the sidebar (optional)"
---Co-locate Python and JavaScript/TypeScript content#
All documentation must be written in both Python and JavaScript/TypeScript when possible. To do so, we use a custom in-line syntax to differentiate between sections that should appear in one or both languages:
:::python
Python-specific content. In real docs, the preceding backslash (before `python`) is omitted.
:::
:::js
JavaScript/TypeScript-specific content. In real docs, the preceding backslash (before `js`) is omitted.
:::
Content for both languages (not wrapped)This will generate two outputs (one for each language) at /oss/python/concepts/foo.mdx and /oss/javascript/concepts/foo.mdx. Each outputted page will need to be added to the /src/docs.json file to be included in the navigation.
We don’t want a lack of parity to block contributions. If a feature is only available in one language, it’s okay to have documentation only in that language until the other language catches up. In such cases, please include a note indicating that the feature is not yet available in the other language.
If you need help translating content between Python and JavaScript/TypeScript, please ask in the community slack or tag a maintainer in your PR.
Quality standards#
General guidelines#
Accessibility requirements#
Ensure documentation is accessible to all users:
- Structure content for easy scanning with headers and lists
- Use specific, actionable link text instead of “click here”
- Include descriptive alt text for all images and diagrams
Cross-referencing#
Use consistent cross-references to connect docs with API reference documentation.
From docs to API reference:
Use the @[] syntax to link to API reference pages:
See @[`ChatAnthropic`] for all configuration options.
The @[`bind_tools`][ChatAnthropic.bind_tools] method accepts...The build pipeline transforms these into proper markdown links based on the current language scope (Python or JavaScript). For example, @[ChatAnthropic] becomes a link to the Python or JS API reference page depending on which version of the docs is being built, but only if an entry exists in the link_map.py file! See below for details.
Supported formats:
| Syntax | Result |
|---|---|
@[ChatAnthropic] | Link with “ChatAnthropic” as the displayed text |
@[`ChatAnthropic`] | Link with `ChatAnthropic` (code formatted) as text |
@[text][ChatAnthropic] | Link with “text” as text and ChatAnthropic as the key in the link map |
\@[ChatAnthropic] | Escaped: renders as literal @[ChatAnthropic] (no link – what’s being used on this page!) |
Adding new links:
If a link isn’t found in the map, it will be left unchanged in the output. To add a new autolink:
- Open
pipeline/preprocessors/link_map.py - Add an entry to the appropriate scope (
pythonorjs) inLINK_MAPS - The key is the link name used in
@[key]or@[text][key], the value is the path relative to the reference host
From API reference stubs to OSS docs:
See the README for more information on linking from API reference stubs to Python OSS docs. Specifically see the mkdocstrings cross-reference linking syntax.
Get help#
Our goal is to have the simplest developer setup possible. Should you experience any difficulty getting setup, please ask in the community slack or open a forum post. Internal team members can reach out in the #documentation Slack channel.
Edit this page on GitHub or file an issue.
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.