From 749bb815ae153977ab950bbfb828c7149f7ec71a Mon Sep 17 00:00:00 2001
From: Dominik Jain
Date: Sat, 4 Apr 2026 11:17:10 +0200
Subject: [PATCH] Adapt docs generation to new integrated README content
---
docs/01-about/.gitignore | 2 +-
docs/01-about/010_llm-integration.md | 17 -----------------
docs/01-about/020_programming-languages.md | 4 ++--
docs/autogen_docs.py | 8 ++++++--
4 files changed, 9 insertions(+), 22 deletions(-)
delete mode 100644 docs/01-about/010_llm-integration.md
diff --git a/docs/01-about/.gitignore b/docs/01-about/.gitignore
index 463af074..11bfb993 100644
--- a/docs/01-about/.gitignore
+++ b/docs/01-about/.gitignore
@@ -1,4 +1,4 @@
# auto-generated files
/000_intro.md
-/005_features.md
+/025_features.md
/035_tools.md
diff --git a/docs/01-about/010_llm-integration.md b/docs/01-about/010_llm-integration.md
deleted file mode 100644
index 0f9c75aa..00000000
--- a/docs/01-about/010_llm-integration.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# LLM Integration
-
-Serena provides the necessary [tools](035_tools) for coding workflows, but an LLM is required to do the actual work,
-orchestrating tool use.
-
-In general, Serena can be integrated with an LLM in several ways:
-
-* by using the **model context protocol (MCP)**.
- Serena provides an MCP server which integrates with
- * Claude Code and Claude Desktop,
- * Terminal-based clients like Codex, Gemini-CLI, Qwen3-Coder, rovodev, OpenHands CLI and others,
- * IDEs like VSCode, Cursor or IntelliJ,
- * Extensions like Cline or Roo Code
- * Local clients like [OpenWebUI](https://docs.openwebui.com/openapi-servers/mcp), [Jan](https://jan.ai/docs/mcp-examples/browser/browserbase#enable-mcp), [Agno](https://docs.agno.com/introduction/playground) and others
-* by using [mcpo to connect it to ChatGPT](../03-special-guides/serena_on_chatgpt.md) or other clients that don't support MCP but do support tool calling via OpenAPI.
-* by incorporating Serena's tools into an agent framework of your choice, as illustrated [here](../03-special-guides/custom_agent).
- Serena's tool implementation is decoupled from the framework-specific code and can thus easily be adapted to any agent framework.
diff --git a/docs/01-about/020_programming-languages.md b/docs/01-about/020_programming-languages.md
index 11585ea6..ceb1f86d 100644
--- a/docs/01-about/020_programming-languages.md
+++ b/docs/01-about/020_programming-languages.md
@@ -13,7 +13,7 @@ There are two alternative technologies powering these capabilities:
* **The Serena JetBrains Plugin**, which leverages the powerful code analysis and editing
capabilities of your JetBrains IDE.
-See the [Features](005_features) section for a detailed comparison of the capabilities provided by the JetBrains Plugin vs. language servers.
+See the [Features](025_features) section for a detailed comparison of the capabilities provided by the JetBrains Plugin vs. language servers.
## Language Servers
@@ -121,7 +121,7 @@ work in a JetBrains IDE, this means Serena seamlessly integrates with the IDE in
requiring no additional setup or configuration beyond the plugin itself.
* See the [JetBrains Plugin documentation](../02-usage/025_jetbrains_plugin) for a high-level overview of its benefits and usage details.
-* See the [Features](005_features) section for a detailed comparison of the capabilities provided by the JetBrains Plugin vs. language servers.
+* See the [Features](025_features) section for a detailed comparison of the capabilities provided by the JetBrains Plugin vs. language servers.
```{raw} html
diff --git a/docs/autogen_docs.py b/docs/autogen_docs.py
index 6dfd37f0..5e1dae72 100644
--- a/docs/autogen_docs.py
+++ b/docs/autogen_docs.py
@@ -181,7 +181,7 @@ def autogen_about_intro_features():
with open(readme_path, "r", encoding="utf-8") as f:
readme_contents = f.read()
- match = re.search(r"
(.*?)(.*?)^(## Features.*?)^## ", readme_contents, re.DOTALL | re.MULTILINE)
+ match = re.search(r"(.*?)(.*?)^## Programming.*?^(## Features.*?)^## ", readme_contents, re.DOTALL | re.MULTILINE)
assert match, f"Failed to extract about texts from README.md. {__file__} probably needs to be updated."
tagline = match.group(1).strip()
@@ -194,6 +194,8 @@ def autogen_about_intro_features():
f.write(autogen_info)
f.write("# About Serena\n\n")
f.write(f"**{tagline}**\n\n")
+ about_text = about_text.replace("resources/serena-block-diagram.png", "https://raw.githubusercontent.com/oraios/serena/main/resources/serena-block-diagram.svg")
+ about_text = re.subn(r"^See the \[Quick Start.*?$", r"", about_text, flags=re.MULTILINE)[0]
f.write(f"{about_text}\n\n")
jetbrains_marketplace_link = ('```{raw} html\n'
@@ -201,9 +203,11 @@ def autogen_about_intro_features():
'
'
'
\n```')
- with open(Path(__file__).parent / "01-about" / "005_features.md", "w", encoding="utf-8") as f:
+ with open(Path(__file__).parent / "01-about" / "025_features.md", "w", encoding="utf-8") as f:
f.write(autogen_info)
features_text = re.subn(r"^#", r"", features_text, flags=re.MULTILINE)[0]
+ features_text = re.subn(r"?details>", "", features_text, flags=re.MULTILINE)[0]
+ features_text = re.subn(r".*?", "", features_text, flags=re.MULTILINE)[0]
features_text = re.sub(r'