feat(opengap): import section with framework cookbooks#3
Conversation
… frameworks - New ImportSection with two paths: file system agents (opengap import) and code-based frameworks (cookbook) - Expandable cards showing before/after directory structure for each agent - Cookbook pages for 5 file system agents: Claude Code, Cursor, Gemini CLI, Codex, OpenCode - Cookbook pages for 6 code-based frameworks: LangGraph, CrewAI, AutoGen, OpenAI Agents SDK, Claude SDK, Google ADK - Import page added to sidebar under Features (above Export) - All cookbook pages routed via OpenGAPDocsPage
Updated CrewAI, AutoGen, OpenAI Agents SDK, Claude SDK, Google ADK, Claude Code, Cursor, Gemini CLI, Codex, and OpenCode cookbooks to use PartHeader, CollapsibleCode, and ConversionStep components — matching the LangGraph cookbook design with source files, mapping, and full output.
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds an “Import” docs section and multiple “Cookbook” conversion pages, and updates OpenGAP docs navigation to support nested cookbook pages under the Import section.
Changes:
- Introduces new cookbook pages (Claude Code, Cursor, Gemini CLI, Codex, OpenCode, Framework Translator, LangChain) and an Import section.
- Updates the OpenGAP sidebar/navbar to support expandable nested items and flattens items for prev/next navigation.
- Renames GitClaw references to GitAgent and adds cache-busting to the install curl command shown in docs.
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/pages/OpenGAPDocsPage.tsx | Registers the new Import + Cookbook sections and adds a “Back to Import” link for cookbook routes. |
| src/components/opengap/OpenGAPSidebar.tsx | Adds nested sidebar structure (Import → cookbooks), expand/collapse behavior, and exports a flattened item list. |
| src/components/opengap/OpenGAPNavbar.tsx | Updates mobile nav to render nested cookbook links and flattens items for navigation/search. |
| src/components/ImportSection.tsx | Adds a new “Import” section with cards linking to cookbook pages. |
| src/components/opengap/cookbook/CookbookClaudeCode.tsx | Adds Claude Code → OpenGAP cookbook page content. |
| src/components/opengap/cookbook/CookbookCursor.tsx | Adds Cursor → OpenGAP cookbook page content. |
| src/components/opengap/cookbook/CookbookGeminiCLI.tsx | Adds Gemini CLI → OpenGAP cookbook page content. |
| src/components/opengap/cookbook/CookbookCodex.tsx | Adds Codex CLI → OpenGAP cookbook page content. |
| src/components/opengap/cookbook/CookbookOpenCode.tsx | Adds OpenCode → OpenGAP cookbook page content. |
| src/components/opengap/cookbook/CookbookFrameworkTranslator.tsx | Adds framework conversion cookbook page content and a link to the translator repo. |
| src/components/opengap/cookbook/CookbookLangChain.tsx | Adds LangChain → OpenGAP cookbook page content. |
| src/components/gitAgent/GitAgentQuickStartPersonalAssistant.tsx | Updates installer command shown in quickstart to include cache-busting. |
| src/components/gitAgent/GitAgentHeroSection.tsx | Updates displayed + copied installer command to include cache-busting. |
| src/components/CLISection.tsx | Updates adapter/export format lists to use GitAgent instead of GitClaw. |
| src/components/AdaptersSection.tsx | Renames GitClaw adapter entry to GitAgent. |
| src/components/ExportSection.tsx | Renames GitClaw export entry to GitAgent. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@stealthwhizz is attempting to deploy a commit to the shreyas-lyzr's projects Team on Vercel. A member of the Team first needs to authorize it. |
shreyas-lyzr
left a comment
There was a problem hiding this comment.
Overall the PR is well-structured and the content is thorough. Three issues worth addressing before merge — one is a dead route that will silently 404, one is a stale mobile nav, and one is a content mismatch in the ImportSection data. A handful of smaller notes below.
| @@ -0,0 +1,232 @@ | |||
| import { motion } from "framer-motion"; | |||
There was a problem hiding this comment.
CookbookLangChain is added as a file but never registered as a route in OpenGAPDocsPage.tsx (only the six cookbooks — claude-code, cursor, gemini-cli, codex, opencode, framework-translator — are added to SECTION_COMPONENTS). It is also never linked from ImportSection.tsx (none of the codeFrameworks entries use 'cookbook-langchain' as their cookbookId). As written, /opengap/cookbook-langchain will 404 and the component is unreachable. Either wire it up or remove it.
| { id: item.id, label: item.label, group: g.label, slug: g.slug }, | ||
| ...(item.childGroups ?? []).flatMap((cg) => | ||
| cg.items.map((c) => ({ id: c.id, label: c.label, group: cg.label, slug: g.slug })) | ||
| ), |
There was a problem hiding this comment.
The mobile Sheet nav still iterates over opengapSidebarGroups with a flat g.items.map — it never descends into childGroups. Cookbook pages will not appear in the mobile nav menu. The desktop search was updated to walk childGroups (lines 7-13 of the updated Navbar), but the Sheet nav was not. It needs the same childGroups expansion, or it will hide the entire Import subtree from mobile users.
| { | ||
| label: "Gemini CLI", | ||
| desc: "Reads GEMINI.md and system instructions — imports identity and tool config.", | ||
| cmd: "$ opengap import --from gemini <path>", |
There was a problem hiding this comment.
The 'before' tree for Cursor shows .cursorrules and .cursor/settings.json, but CookbookCursor.tsx describes .cursor/rules/*.mdc as the primary source (with .cursorrules as a legacy fallback). Similarly, the 'before' tree for OpenCode shows .opencode/config.json, but CookbookOpenCode.tsx says the source is AGENTS.md + opencode.json. These mismatches mean the ImportSection overview contradicts the detailed cookbook pages. Align the before/after trees with what the importers actually read.
|
|
||
| function SidebarLeaf({ item, activeSection }: { item: SidebarSubItem; activeSection: string }) { | ||
| const isActive = activeSection === item.id; | ||
| return ( |
There was a problem hiding this comment.
The toggle button and the nav link for a parent item (e.g. Import) sit next to each other in the same row, but clicking the label navigates away, which collapses the subtree the user was trying to open. The expand/collapse state is also local to SidebarParent — if the user hard-navigates to /opengap/cookbook-cursor by URL (without going through the sidebar), the parent starts collapsed even though inSubtree is true, and the useEffect on line 104 will expand it only after the first render (a brief flicker). Consider initialising the useState with inSubtree rather than running the effect to fix the flicker.
| <OpenGAPSidebar activeSection={section} /> | ||
|
|
||
| <main className="flex-1 min-w-0 px-4 sm:px-6 lg:px-10 pb-24"> | ||
| {section.startsWith("cookbook-") && ( |
There was a problem hiding this comment.
The 'Back to Import' breadcrumb only appears for cookbook- pages, which is correct. But it uses a plain anchor () rather than the router Link, so it triggers a full-page reload on an SPA. Minor, but consistent with how the rest of the sidebar navigation works — the other links in this file are also anchors, so this is acceptable if that is the existing pattern.
Summary
Test plan