<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="../user_journeys/">
<link rel="next" href="../guides/setup_deep_dive/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
<title>Integration & Workflows - CodeGraphContext</title>
<link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#integration-guide-codegraphcontext" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="CodeGraphContext" class="md-header__button md-logo" aria-label="CodeGraphContext" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
CodeGraphContext
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Integration & Workflows
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="teal" data-md-color-accent="lime" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/CodeGraphContext/CodeGraphContext" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
CodeGraphContext/CodeGraphContext
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href=".." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../getting-started/prerequisites/" class="md-tabs__link">
Getting Started
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../use_cases_detailed/" class="md-tabs__link">
Usage
</a>
</li>
<li class="md-tabs__item">
<a href="../guides/setup_deep_dive/" class="md-tabs__link">
Guides
</a>
</li>
<li class="md-tabs__item">
<a href="../concepts/how_it_works/" class="md-tabs__link">
Core Concepts
</a>
</li>
<li class="md-tabs__item">
<a href="../reference/cli_master/" class="md-tabs__link">
CLI Reference
</a>
</li>
<li class="md-tabs__item">
<a href="../reference/mcp_master/" class="md-tabs__link">
MCP Reference
</a>
</li>
<li class="md-tabs__item">
<a href="../roadmap/" class="md-tabs__link">
Project Info
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="CodeGraphContext" class="md-nav__button md-logo" aria-label="CodeGraphContext" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
CodeGraphContext
</label>
<div class="md-nav__source">
<a href="https://github.com/CodeGraphContext/CodeGraphContext" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
CodeGraphContext/CodeGraphContext
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Getting Started
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Getting Started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../getting-started/prerequisites/" class="md-nav__link">
<span class="md-ellipsis">
Prerequisites & Context
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../getting-started/installation/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../getting-started/quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Quickstart (5 min)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Usage
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Usage
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../use_cases_detailed/" class="md-nav__link">
<span class="md-ellipsis">
Real-World Scenarios (ROI)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../user_journeys/" class="md-nav__link">
<span class="md-ellipsis">
User Journeys (Stories)
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Integration & Workflows
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Integration & Workflows
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#table-of-contents" class="md-nav__link">
<span class="md-ellipsis">
Table of Contents
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#philosophy-integration-vs-step-out" class="md-nav__link">
<span class="md-ellipsis">
Philosophy: Integration vs Step-Out
</span>
</a>
<nav class="md-nav" aria-label="Philosophy: Integration vs Step-Out">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#step-out-workflow-what-we-avoid" class="md-nav__link">
<span class="md-ellipsis">
❌ Step-Out Workflow (What We Avoid)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#integrated-workflow-what-cgc-provides" class="md-nav__link">
<span class="md-ellipsis">
✅ Integrated Workflow (What CGC Provides)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ide-integration-primary-workflow" class="md-nav__link">
<span class="md-ellipsis">
IDE Integration (Primary Workflow)
</span>
</a>
<nav class="md-nav" aria-label="IDE Integration (Primary Workflow)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cursor-ide-recommended" class="md-nav__link">
<span class="md-ellipsis">
Cursor IDE (Recommended)
</span>
</a>
<nav class="md-nav" aria-label="Cursor IDE (Recommended)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#setup-one-time-5-minutes" class="md-nav__link">
<span class="md-ellipsis">
Setup (One-Time, 5 minutes)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#daily-workflow-zero-extra-steps" class="md-nav__link">
<span class="md-ellipsis">
Daily Workflow (Zero Extra Steps)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#vs-code-with-continuedev" class="md-nav__link">
<span class="md-ellipsis">
VS Code (with Continue.dev)
</span>
</a>
<nav class="md-nav" aria-label="VS Code (with Continue.dev)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#setup" class="md-nav__link">
<span class="md-ellipsis">
Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#integration-points" class="md-nav__link">
<span class="md-ellipsis">
Integration Points
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jetbrains-ides-intellij-pycharm-etc" class="md-nav__link">
<span class="md-ellipsis">
JetBrains IDEs (IntelliJ, PyCharm, etc.)
</span>
</a>
<nav class="md-nav" aria-label="JetBrains IDEs (IntelliJ, PyCharm, etc.)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#setup_1" class="md-nav__link">
<span class="md-ellipsis">
Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#integration-points_1" class="md-nav__link">
<span class="md-ellipsis">
Integration Points
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cicd-integration" class="md-nav__link">
<span class="md-ellipsis">
CI/CD Integration
</span>
</a>
<nav class="md-nav" aria-label="CI/CD Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#github-actions" class="md-nav__link">
<span class="md-ellipsis">
GitHub Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gitlab-ci" class="md-nav__link">
<span class="md-ellipsis">
GitLab CI
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#git-workflow-integration" class="md-nav__link">
<span class="md-ellipsis">
Git Workflow Integration
</span>
</a>
<nav class="md-nav" aria-label="Git Workflow Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pre-commit-hooks" class="md-nav__link">
<span class="md-ellipsis">
Pre-Commit Hooks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#git-aliases" class="md-nav__link">
<span class="md-ellipsis">
Git Aliases
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#code-review-integration" class="md-nav__link">
<span class="md-ellipsis">
Code Review Integration
</span>
</a>
<nav class="md-nav" aria-label="Code Review Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#github-pr-template" class="md-nav__link">
<span class="md-ellipsis">
GitHub PR Template
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#review-checklist-script" class="md-nav__link">
<span class="md-ellipsis">
Review Checklist Script
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#documentation-integration" class="md-nav__link">
<span class="md-ellipsis">
Documentation Integration
</span>
</a>
<nav class="md-nav" aria-label="Documentation Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#auto-generated-architecture-docs" class="md-nav__link">
<span class="md-ellipsis">
Auto-Generated Architecture Docs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#team-collaboration-integration" class="md-nav__link">
<span class="md-ellipsis">
Team Collaboration Integration
</span>
</a>
<nav class="md-nav" aria-label="Team Collaboration Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#slack-integration" class="md-nav__link">
<span class="md-ellipsis">
Slack Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#shared-graph-database" class="md-nav__link">
<span class="md-ellipsis">
Shared Graph Database
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#comparison-cgc-vs-alternatives" class="md-nav__link">
<span class="md-ellipsis">
Comparison: CGC vs Alternatives
</span>
</a>
<nav class="md-nav" aria-label="Comparison: CGC vs Alternatives">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cgc-vs-ide-built-in-tools" class="md-nav__link">
<span class="md-ellipsis">
CGC vs IDE Built-in Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cgc-vs-sourcegraph" class="md-nav__link">
<span class="md-ellipsis">
CGC vs SourceGraph
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cgc-vs-context7-mcp" class="md-nav__link">
<span class="md-ellipsis">
CGC vs Context7 (MCP)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#integration-best-practices" class="md-nav__link">
<span class="md-ellipsis">
Integration Best Practices
</span>
</a>
<nav class="md-nav" aria-label="Integration Best Practices">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-start-small" class="md-nav__link">
<span class="md-ellipsis">
1. Start Small
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-make-it-automatic" class="md-nav__link">
<span class="md-ellipsis">
2. Make it Automatic
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-integrate-where-you-work" class="md-nav__link">
<span class="md-ellipsis">
3. Integrate Where You Work
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#4-provide-value-immediately" class="md-nav__link">
<span class="md-ellipsis">
4. Provide Value Immediately
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#summary-integration-philosophy" class="md-nav__link">
<span class="md-ellipsis">
Summary: Integration Philosophy
</span>
</a>
<nav class="md-nav" aria-label="Summary: Integration Philosophy">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#what-cgc-is-not" class="md-nav__link">
<span class="md-ellipsis">
❌ What CGC is NOT:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#what-cgc-is" class="md-nav__link">
<span class="md-ellipsis">
✅ What CGC IS:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#the-goal" class="md-nav__link">
<span class="md-ellipsis">
The Goal:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#next-steps" class="md-nav__link">
<span class="md-ellipsis">
Next Steps
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Guides
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Guides
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../guides/setup_deep_dive/" class="md-nav__link">
<span class="md-ellipsis">
Neo4j Setup Wizard
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../guides/mcp_guide/" class="md-nav__link">
<span class="md-ellipsis">
MCP Setup Wizard
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../guides/visualization/" class="md-nav__link">
<span class="md-ellipsis">
Visualizing the Graph
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../guides/bundles/" class="md-nav__link">
<span class="md-ellipsis">
Using On-Demand Bundles
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../guides/ci_cd/" class="md-nav__link">
<span class="md-ellipsis">
CI/CD & Advanced
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Core Concepts
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Core Concepts
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../concepts/how_it_works/" class="md-nav__link">
<span class="md-ellipsis">
How it Works
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../architecture/" class="md-nav__link">
<span class="md-ellipsis">
System Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../concepts/the_graph/" class="md-nav__link">
<span class="md-ellipsis">
The Graph Model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../concepts/modes/" class="md-nav__link">
<span class="md-ellipsis">
CLI vs MCP Modes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
CLI Reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
CLI Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../reference/cli_master/" class="md-nav__link">
<span class="md-ellipsis">
All Commands (Master List)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/cli_indexing/" class="md-nav__link">
<span class="md-ellipsis">
Indexing & Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/cli_analysis/" class="md-nav__link">
<span class="md-ellipsis">
Analysis & Querying
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/cli_system/" class="md-nav__link">
<span class="md-ellipsis">
System & Config
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
MCP Reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
MCP Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../reference/mcp_master/" class="md-nav__link">
<span class="md-ellipsis">
All Tools (Master List)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cookbook/" class="md-nav__link">
<span class="md-ellipsis">
Example Cookbook
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Project Info
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Project Info
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../roadmap/" class="md-nav__link">
<span class="md-ellipsis">
Roadmap
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../contributing/" class="md-nav__link">
<span class="md-ellipsis">
Contributing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../license/" class="md-nav__link">
<span class="md-ellipsis">
License
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/cgcignore/" class="md-nav__link">
<span class="md-ellipsis">
.cgcignore Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/troubleshooting/" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#table-of-contents" class="md-nav__link">
<span class="md-ellipsis">
Table of Contents
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#philosophy-integration-vs-step-out" class="md-nav__link">
<span class="md-ellipsis">
Philosophy: Integration vs Step-Out
</span>
</a>
<nav class="md-nav" aria-label="Philosophy: Integration vs Step-Out">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#step-out-workflow-what-we-avoid" class="md-nav__link">
<span class="md-ellipsis">
❌ Step-Out Workflow (What We Avoid)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#integrated-workflow-what-cgc-provides" class="md-nav__link">
<span class="md-ellipsis">
✅ Integrated Workflow (What CGC Provides)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ide-integration-primary-workflow" class="md-nav__link">
<span class="md-ellipsis">
IDE Integration (Primary Workflow)
</span>
</a>
<nav class="md-nav" aria-label="IDE Integration (Primary Workflow)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cursor-ide-recommended" class="md-nav__link">
<span class="md-ellipsis">
Cursor IDE (Recommended)
</span>
</a>
<nav class="md-nav" aria-label="Cursor IDE (Recommended)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#setup-one-time-5-minutes" class="md-nav__link">
<span class="md-ellipsis">
Setup (One-Time, 5 minutes)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#daily-workflow-zero-extra-steps" class="md-nav__link">
<span class="md-ellipsis">
Daily Workflow (Zero Extra Steps)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#vs-code-with-continuedev" class="md-nav__link">
<span class="md-ellipsis">
VS Code (with Continue.dev)
</span>
</a>
<nav class="md-nav" aria-label="VS Code (with Continue.dev)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#setup" class="md-nav__link">
<span class="md-ellipsis">
Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#integration-points" class="md-nav__link">
<span class="md-ellipsis">
Integration Points
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jetbrains-ides-intellij-pycharm-etc" class="md-nav__link">
<span class="md-ellipsis">
JetBrains IDEs (IntelliJ, PyCharm, etc.)
</span>
</a>
<nav class="md-nav" aria-label="JetBrains IDEs (IntelliJ, PyCharm, etc.)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#setup_1" class="md-nav__link">
<span class="md-ellipsis">
Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#integration-points_1" class="md-nav__link">
<span class="md-ellipsis">
Integration Points
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cicd-integration" class="md-nav__link">
<span class="md-ellipsis">
CI/CD Integration
</span>
</a>
<nav class="md-nav" aria-label="CI/CD Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#github-actions" class="md-nav__link">
<span class="md-ellipsis">
GitHub Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gitlab-ci" class="md-nav__link">
<span class="md-ellipsis">
GitLab CI
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#git-workflow-integration" class="md-nav__link">
<span class="md-ellipsis">
Git Workflow Integration
</span>
</a>
<nav class="md-nav" aria-label="Git Workflow Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pre-commit-hooks" class="md-nav__link">
<span class="md-ellipsis">
Pre-Commit Hooks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#git-aliases" class="md-nav__link">
<span class="md-ellipsis">
Git Aliases
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#code-review-integration" class="md-nav__link">
<span class="md-ellipsis">
Code Review Integration
</span>
</a>
<nav class="md-nav" aria-label="Code Review Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#github-pr-template" class="md-nav__link">
<span class="md-ellipsis">
GitHub PR Template
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#review-checklist-script" class="md-nav__link">
<span class="md-ellipsis">
Review Checklist Script
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#documentation-integration" class="md-nav__link">
<span class="md-ellipsis">
Documentation Integration
</span>
</a>
<nav class="md-nav" aria-label="Documentation Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#auto-generated-architecture-docs" class="md-nav__link">
<span class="md-ellipsis">
Auto-Generated Architecture Docs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#team-collaboration-integration" class="md-nav__link">
<span class="md-ellipsis">
Team Collaboration Integration
</span>
</a>
<nav class="md-nav" aria-label="Team Collaboration Integration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#slack-integration" class="md-nav__link">
<span class="md-ellipsis">
Slack Integration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#shared-graph-database" class="md-nav__link">
<span class="md-ellipsis">
Shared Graph Database
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#comparison-cgc-vs-alternatives" class="md-nav__link">
<span class="md-ellipsis">
Comparison: CGC vs Alternatives
</span>
</a>
<nav class="md-nav" aria-label="Comparison: CGC vs Alternatives">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cgc-vs-ide-built-in-tools" class="md-nav__link">
<span class="md-ellipsis">
CGC vs IDE Built-in Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cgc-vs-sourcegraph" class="md-nav__link">
<span class="md-ellipsis">
CGC vs SourceGraph
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cgc-vs-context7-mcp" class="md-nav__link">
<span class="md-ellipsis">
CGC vs Context7 (MCP)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#integration-best-practices" class="md-nav__link">
<span class="md-ellipsis">
Integration Best Practices
</span>
</a>
<nav class="md-nav" aria-label="Integration Best Practices">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-start-small" class="md-nav__link">
<span class="md-ellipsis">
1. Start Small
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-make-it-automatic" class="md-nav__link">
<span class="md-ellipsis">
2. Make it Automatic
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-integrate-where-you-work" class="md-nav__link">
<span class="md-ellipsis">
3. Integrate Where You Work
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#4-provide-value-immediately" class="md-nav__link">
<span class="md-ellipsis">
4. Provide Value Immediately
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#summary-integration-philosophy" class="md-nav__link">
<span class="md-ellipsis">
Summary: Integration Philosophy
</span>
</a>
<nav class="md-nav" aria-label="Summary: Integration Philosophy">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#what-cgc-is-not" class="md-nav__link">
<span class="md-ellipsis">
❌ What CGC is NOT:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#what-cgc-is" class="md-nav__link">
<span class="md-ellipsis">
✅ What CGC IS:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#the-goal" class="md-nav__link">
<span class="md-ellipsis">
The Goal:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#next-steps" class="md-nav__link">
<span class="md-ellipsis">
Next Steps
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="integration-guide-codegraphcontext">Integration Guide - CodeGraphContext</h1>
<p>This document explains how CodeGraphContext <strong>integrates seamlessly</strong> into typical developer workflows, rather than requiring "step-outs" or context switching.</p>
<hr />
<h2 id="table-of-contents">Table of Contents</h2>
<ol>
<li><a href="#philosophy-integration-vs-step-out">Philosophy: Integration vs Step-Out</a></li>
<li><a href="#ide-integration-primary-workflow">IDE Integration (Primary Workflow)</a></li>
<li><a href="#cicd-integration">CI/CD Integration</a></li>
<li><a href="#git-workflow-integration">Git Workflow Integration</a></li>
<li><a href="#code-review-integration">Code Review Integration</a></li>
<li><a href="#documentation-integration">Documentation Integration</a></li>
<li><a href="#team-collaboration-integration">Team Collaboration Integration</a></li>
<li><a href="#comparison-cgc-vs-alternatives">Comparison: CGC vs Alternatives</a></li>
</ol>
<hr />
<h2 id="philosophy-integration-vs-step-out">Philosophy: Integration vs Step-Out</h2>
<h3 id="step-out-workflow-what-we-avoid">❌ Step-Out Workflow (What We Avoid)</h3>
<p><strong>Traditional code analysis tools require context switching:</strong></p>
<div class="highlight"><pre><span></span><code>Developer Workflow (Broken):
1. Writing code in IDE
2. ❌ STOP - Open terminal
3. ❌ Run analysis tool
4. ❌ Read output in terminal
5. ❌ Switch back to IDE
6. ❌ Remember what you were doing
7. Continue coding (context lost)
</code></pre></div>
<p><strong>Problems:</strong>
- Context switching kills productivity
- Interrupts flow state
- Requires remembering to use the tool
- Separate from where you work</p>
<h3 id="integrated-workflow-what-cgc-provides">✅ Integrated Workflow (What CGC Provides)</h3>
<p><strong>CGC integrates into your existing tools:</strong></p>
<div class="highlight"><pre><span></span><code>Developer Workflow (Seamless):
1. Writing code in IDE
2. ✅ Ask AI assistant (already in IDE)
3. ✅ AI uses CGC automatically (invisible)
4. ✅ Get answer in same context
5. Continue coding (flow maintained)
</code></pre></div>
<p><strong>Benefits:</strong>
- No context switching
- Natural language interface
- Automatic, not manual
- Integrated where you already work</p>
<hr />
<h2 id="ide-integration-primary-workflow">IDE Integration (Primary Workflow)</h2>
<h3 id="cursor-ide-recommended">Cursor IDE (Recommended)</h3>
<h4 id="setup-one-time-5-minutes">Setup (One-Time, 5 minutes)</h4>
<div class="highlight"><pre><span></span><code><span class="c1"># 1. Install CGC</span>
pip<span class="w"> </span>install<span class="w"> </span>codegraphcontext
<span class="c1"># 2. Index your project</span>
<span class="nb">cd</span><span class="w"> </span>~/projects/my-project
cgc<span class="w"> </span>index<span class="w"> </span>.
<span class="c1"># 3. Setup MCP</span>
cgc<span class="w"> </span>mcp<span class="w"> </span>setup
<span class="c1"># Select: Cursor</span>
<span class="c1"># 4. Start MCP server (auto-start recommended)</span>
cgc<span class="w"> </span>mcp<span class="w"> </span>start<span class="w"> </span><span class="p">&</span>
<span class="c1"># 5. Restart Cursor</span>
</code></pre></div>
<h4 id="daily-workflow-zero-extra-steps">Daily Workflow (Zero Extra Steps)</h4>
<p><strong>Scenario 1: Understanding Code</strong></p>
<div class="highlight"><pre><span></span><code>You're reading unfamiliar code:
// You see this function call
processPayment(order, user);
// You wonder: "What does this do?"
Traditional Approach:
1. ❌ Search for function definition
2. ❌ Open file
3. ❌ Read code
4. ❌ Find what IT calls
5. ❌ Repeat...
CGC Integrated Approach:
1. ✅ Highlight "processPayment"
2. ✅ Ask AI: "What does this function do?"
3. ✅ AI uses CGC, shows:
- Function definition
- What it calls
- Who calls it
- Full execution flow
4. ✅ Continue reading (no context switch)
</code></pre></div>
<p><strong>Scenario 2: Before Refactoring</strong></p>
<div class="highlight"><pre><span></span><code>You want to rename a function:
Traditional Approach:
1. ❌ Open terminal
2. ❌ Run: grep -r "oldFunction" .
3. ❌ Read 100+ lines of output
4. ❌ Manually filter false positives
5. ❌ Switch back to IDE
6. ❌ Start refactoring (hope you didn't miss anything)
CGC Integrated Approach:
1. ✅ Right-click function name
2. ✅ Ask AI: "What will break if I rename this?"
3. ✅ AI uses CGC, shows:
- All 23 callers
- Files affected
- Test coverage
4. ✅ IDE refactor tool with confidence
5. ✅ No terminal, no context switch
</code></pre></div>
<p><strong>Scenario 3: Code Review</strong></p>
<div class="highlight"><pre><span></span><code>You're reviewing a PR:
Traditional Approach:
1. ❌ Read PR diff
2. ❌ Open terminal
3. ❌ Run analysis commands
4. ❌ Switch back to GitHub
5. ❌ Write review
6. ❌ Repeat for each file
CGC Integrated Approach:
1. ✅ Open PR in Cursor
2. ✅ Ask AI: "Analyze the impact of this PR"
3. ✅ AI uses CGC, provides:
- Functions affected
- Test coverage
- Risk assessment
4. ✅ Write review in same window
5. ✅ No context switch
</code></pre></div>
<h3 id="vs-code-with-continuedev">VS Code (with Continue.dev)</h3>
<h4 id="setup">Setup</h4>
<div class="highlight"><pre><span></span><code><span class="c1"># 1-3: Same as Cursor</span>
<span class="c1"># 4. Setup MCP for Continue</span>
cgc<span class="w"> </span>mcp<span class="w"> </span>setup
<span class="c1"># Select: VS Code (Continue.dev)</span>
<span class="c1"># 5. Restart VS Code</span>
</code></pre></div>
<h4 id="integration-points">Integration Points</h4>
<p><strong>1. Inline Chat (Cmd+I)</strong>
<div class="highlight"><pre><span></span><code>While editing code:
1. Press Cmd+I (inline chat)
2. Ask: "Who calls this function?"
3. Get answer inline
4. Continue editing
</code></pre></div></p>
<p><strong>2. Sidebar Chat</strong>
<div class="highlight"><pre><span></span><code>While exploring codebase:
1. Open Continue sidebar
2. Ask: "Show me the architecture of the auth module"
3. Get visualization
4. Click through to files
</code></pre></div></p>
<p><strong>3. Code Actions</strong>
<div class="highlight"><pre><span></span><code>Right-click on function:
1. "Ask Continue: Find callers"
2. "Ask Continue: Show call chain"
3. "Ask Continue: Check complexity"
</code></pre></div></p>
<h3 id="jetbrains-ides-intellij-pycharm-etc">JetBrains IDEs (IntelliJ, PyCharm, etc.)</h3>
<h4 id="setup_1">Setup</h4>
<div class="highlight"><pre><span></span><code><span class="c1"># 1-3: Same as above</span>
<span class="c1"># 4. Setup MCP for JetBrains</span>
cgc<span class="w"> </span>mcp<span class="w"> </span>setup
<span class="c1"># Select: JetBrains (AI Assistant)</span>
<span class="c1"># 5. Restart IDE</span>
</code></pre></div>
<h4 id="integration-points_1">Integration Points</h4>
<p><strong>1. AI Assistant Panel</strong>
<div class="highlight"><pre><span></span><code>While coding:
1. Open AI Assistant (Alt+Enter)
2. Ask questions about code
3. AI uses CGC automatically
</code></pre></div></p>
<p><strong>2. Quick Actions</strong>
<div class="highlight"><pre><span></span><code>Right-click on code:
1. "AI Assistant: Analyze Impact"
2. "AI Assistant: Find Usages (Deep)"
3. "AI Assistant: Show Architecture"
</code></pre></div></p>
<hr />
<h2 id="cicd-integration">CI/CD Integration</h2>
<h3 id="github-actions">GitHub Actions</h3>
<p><strong>Automatic Code Quality Checks</strong></p>
<div class="highlight"><pre><span></span><code><span class="c1"># .github/workflows/code-quality.yml</span>
<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Code Quality</span>
<span class="nt">on</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">pull_request</span><span class="p p-Indicator">]</span>
<span class="nt">jobs</span><span class="p">:</span>
<span class="w"> </span><span class="nt">analyze</span><span class="p">:</span>
<span class="w"> </span><span class="nt">runs-on</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ubuntu-latest</span>
<span class="w"> </span><span class="nt">steps</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">actions/checkout@v3</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Setup Python</span>
<span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">actions/setup-python@v4</span>
<span class="w"> </span><span class="nt">with</span><span class="p">:</span>
<span class="w"> </span><span class="nt">python-version</span><span class="p">:</span><span class="w"> </span><span class="s">'3.10'</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Install CodeGraphContext</span>
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pip install codegraphcontext</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Index codebase</span>
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cgc index .</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Find dead code</span>
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
<span class="w"> </span><span class="no">cgc analyze dead-code --exclude-decorated @api.route > dead-code.txt</span>
<span class="w"> </span><span class="no">if [ -s dead-code.txt ]; then</span>
<span class="w"> </span><span class="no">echo "⚠️ Dead code found:"</span>
<span class="w"> </span><span class="no">cat dead-code.txt</span>
<span class="w"> </span><span class="no">echo "::warning::Dead code detected. Consider cleanup."</span>
<span class="w"> </span><span class="no">fi</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Check complexity</span>
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
<span class="w"> </span><span class="no">cgc analyze complexity --limit 10 --threshold 15 > complex.txt</span>
<span class="w"> </span><span class="no">if [ -s complex.txt ]; then</span>
<span class="w"> </span><span class="no">echo "⚠️ Complex functions found:"</span>
<span class="w"> </span><span class="no">cat complex.txt</span>
<span class="w"> </span><span class="no">echo "::warning::High complexity detected. Consider refactoring."</span>
<span class="w"> </span><span class="no">fi</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Find circular dependencies</span>
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
<span class="w"> </span><span class="no">cgc query "</span>
<span class="w"> </span><span class="no">MATCH (m1:Module)-[:IMPORTS]->(m2:Module)-[:IMPORTS]->(m1)</span>
<span class="w"> </span><span class="no">RETURN m1.name, m2.name</span>
<span class="w"> </span><span class="no">" > circular.txt</span>
<span class="w"> </span><span class="no">if [ -s circular.txt ]; then</span>
<span class="w"> </span><span class="no">echo "❌ Circular dependencies found:"</span>
<span class="w"> </span><span class="no">cat circular.txt</span>
<span class="w"> </span><span class="no">echo "::error::Circular dependencies detected!"</span>
<span class="w"> </span><span class="no">exit 1</span>
<span class="w"> </span><span class="no">fi</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Comment on PR</span>
<span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">actions/github-script@v6</span>
<span class="w"> </span><span class="nt">with</span><span class="p">:</span>
<span class="w"> </span><span class="nt">script</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
<span class="w"> </span><span class="no">const fs = require('fs');</span>
<span class="w"> </span><span class="no">const deadCode = fs.readFileSync('dead-code.txt', 'utf8');</span>
<span class="w"> </span><span class="no">const complex = fs.readFileSync('complex.txt', 'utf8');</span>
<span class="w"> </span><span class="no">let comment = '## Code Quality Report\n\n';</span>
<span class="w"> </span><span class="no">if (deadCode) {</span>
<span class="w"> </span><span class="no">comment += '### ⚠️ Dead Code\n```\n' + deadCode + '\n```\n\n';</span>
<span class="w"> </span><span class="no">}</span>
<span class="w"> </span><span class="no">if (complex) {</span>
<span class="w"> </span><span class="no">comment += '### ⚠️ Complex Functions\n```\n' + complex + '\n```\n\n';</span>
<span class="w"> </span><span class="no">}</span>
<span class="w"> </span><span class="no">if (!deadCode && !complex) {</span>
<span class="w"> </span><span class="no">comment += '✅ No issues found!\n';</span>
<span class="w"> </span><span class="no">}</span>
<span class="w"> </span><span class="no">github.rest.issues.createComment({</span>
<span class="w"> </span><span class="no">issue_number: context.issue.number,</span>
<span class="w"> </span><span class="no">owner: context.repo.owner,</span>
<span class="w"> </span><span class="no">repo: context.repo.repo,</span>
<span class="w"> </span><span class="no">body: comment</span>
<span class="w"> </span><span class="no">});</span>
</code></pre></div>
<p><strong>Result</strong>: Every PR automatically gets code quality feedback</p>
<h3 id="gitlab-ci">GitLab CI</h3>
<div class="highlight"><pre><span></span><code><span class="c1"># .gitlab-ci.yml</span>
<span class="nt">code_quality</span><span class="p">:</span>
<span class="w"> </span><span class="nt">stage</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test</span>
<span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">python:3.10</span>
<span class="w"> </span><span class="nt">script</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pip install codegraphcontext</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cgc index .</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cgc analyze dead-code > dead-code.txt || true</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cgc analyze complexity --limit 10 > complexity.txt || true</span>
<span class="w"> </span><span class="nt">artifacts</span><span class="p">:</span>
<span class="w"> </span><span class="nt">reports</span><span class="p">:</span>
<span class="w"> </span><span class="nt">codequality</span><span class="p">:</span><span class="w"> </span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dead-code.txt</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">complexity.txt</span>
<span class="w"> </span><span class="nt">only</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">merge_requests</span>
</code></pre></div>
<hr />
<h2 id="git-workflow-integration">Git Workflow Integration</h2>
<h3 id="pre-commit-hooks">Pre-Commit Hooks</h3>
<p><strong>Automatic checks before every commit</strong></p>
<div class="highlight"><pre><span></span><code><span class="c1"># .git/hooks/pre-commit</span>
<span class="c1">#!/bin/bash</span>
<span class="c1"># Index changed files only (fast)</span>
cgc<span class="w"> </span>reindex
<span class="c1"># Check if commit introduces dead code</span>
<span class="nv">DEAD_CODE</span><span class="o">=</span><span class="k">$(</span>cgc<span class="w"> </span>analyze<span class="w"> </span>dead-code<span class="w"> </span>--changed-only<span class="k">)</span>
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$DEAD_CODE</span><span class="s2">"</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"⚠️ Warning: This commit may introduce dead code:"</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"</span><span class="nv">$DEAD_CODE</span><span class="s2">"</span>
<span class="w"> </span><span class="nb">read</span><span class="w"> </span>-p<span class="w"> </span><span class="s2">"Continue anyway? (y/n) "</span><span class="w"> </span>-n<span class="w"> </span><span class="m">1</span><span class="w"> </span>-r
<span class="w"> </span><span class="nb">echo</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[[</span><span class="w"> </span>!<span class="w"> </span><span class="nv">$REPLY</span><span class="w"> </span><span class="o">=</span>~<span class="w"> </span>^<span class="o">[</span>Yy<span class="o">]</span>$<span class="w"> </span><span class="o">]]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">exit</span><span class="w"> </span><span class="m">1</span>
<span class="w"> </span><span class="k">fi</span>
<span class="k">fi</span>
<span class="c1"># Check if commit introduces high complexity</span>
<span class="nv">COMPLEX</span><span class="o">=</span><span class="k">$(</span>cgc<span class="w"> </span>analyze<span class="w"> </span>complexity<span class="w"> </span>--changed-only<span class="w"> </span>--threshold<span class="w"> </span><span class="m">15</span><span class="k">)</span>
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$COMPLEX</span><span class="s2">"</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"⚠️ Warning: This commit introduces complex functions:"</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"</span><span class="nv">$COMPLEX</span><span class="s2">"</span>
<span class="w"> </span><span class="nb">read</span><span class="w"> </span>-p<span class="w"> </span><span class="s2">"Continue anyway? (y/n) "</span><span class="w"> </span>-n<span class="w"> </span><span class="m">1</span><span class="w"> </span>-r
<span class="w"> </span><span class="nb">echo</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[[</span><span class="w"> </span>!<span class="w"> </span><span class="nv">$REPLY</span><span class="w"> </span><span class="o">=</span>~<span class="w"> </span>^<span class="o">[</span>Yy<span class="o">]</span>$<span class="w"> </span><span class="o">]]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">exit</span><span class="w"> </span><span class="m">1</span>
<span class="w"> </span><span class="k">fi</span>
<span class="k">fi</span>
<span class="nb">exit</span><span class="w"> </span><span class="m">0</span>
</code></pre></div>
<p><strong>Make it executable:</strong>
<div class="highlight"><pre><span></span><code>chmod<span class="w"> </span>+x<span class="w"> </span>.git/hooks/pre-commit
</code></pre></div></p>
<h3 id="git-aliases">Git Aliases</h3>
<p><strong>Add CGC commands to git workflow</strong></p>
<div class="highlight"><pre><span></span><code><span class="c1"># ~/.gitconfig</span>
<span class="o">[</span>alias<span class="o">]</span>
<span class="w"> </span><span class="c1"># Show impact of current changes</span>
<span class="w"> </span><span class="nv">impact</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>!cgc<span class="w"> </span>analyze<span class="w"> </span>callers<span class="w"> </span><span class="k">$(</span>git<span class="w"> </span>diff<span class="w"> </span>--name-only<span class="w"> </span><span class="p">|</span><span class="w"> </span>xargs<span class="w"> </span>cgc<span class="w"> </span>find<span class="w"> </span>--files<span class="k">)</span>
<span class="w"> </span><span class="c1"># Find dead code in current branch</span>
<span class="w"> </span><span class="nv">dead</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>!cgc<span class="w"> </span>analyze<span class="w"> </span>dead-code<span class="w"> </span>--branch<span class="w"> </span><span class="k">$(</span>git<span class="w"> </span>branch<span class="w"> </span>--show-current<span class="k">)</span>
<span class="w"> </span><span class="c1"># Show architecture diff between branches</span>
<span class="w"> </span>arch-diff<span class="w"> </span><span class="o">=</span><span class="w"> </span>!cgc<span class="w"> </span>visualize<span class="w"> </span>--branch<span class="w"> </span>main<span class="w"> </span><span class="o">&&</span><span class="w"> </span>cgc<span class="w"> </span>visualize<span class="w"> </span>--branch<span class="w"> </span><span class="k">$(</span>git<span class="w"> </span>branch<span class="w"> </span>--show-current<span class="k">)</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Compare: main_arch.html vs current_arch.html"</span>
<span class="w"> </span><span class="c1"># Check complexity of changed functions</span>
<span class="w"> </span><span class="nv">complexity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>!cgc<span class="w"> </span>analyze<span class="w"> </span>complexity<span class="w"> </span>--changed-only
</code></pre></div>
<p><strong>Usage:</strong>
<div class="highlight"><pre><span></span><code>git<span class="w"> </span>impact<span class="w"> </span><span class="c1"># See what your changes affect</span>
git<span class="w"> </span>dead<span class="w"> </span><span class="c1"># Find dead code in your branch</span>
git<span class="w"> </span>arch-diff<span class="w"> </span><span class="c1"># Compare architecture</span>
git<span class="w"> </span>complexity<span class="w"> </span><span class="c1"># Check if you're adding complex code</span>
</code></pre></div></p>
<hr />
<h2 id="code-review-integration">Code Review Integration</h2>
<h3 id="github-pr-template">GitHub PR Template</h3>
<p><strong>Automatic CGC analysis in PR description</strong></p>
<div class="highlight"><pre><span></span><code><!-- .github/pull_request_template.md -->
<span class="gu">## Description</span>
<!-- Describe your changes -->
<span class="gu">## Impact Analysis</span>
<!-- Run: cgc analyze callers <changed_function> -->
<span class="gs">**Functions Modified:**</span>
<span class="k">- [ ]</span> <span class="sb">`function_name`</span> - X callers, Y files affected
<span class="gs">**Test Coverage:**</span>
<span class="k">- [ ]</span> All modified functions have tests
<span class="k">- [ ]</span> No new dead code introduced
<span class="k">- [ ]</span> Complexity within acceptable limits
<span class="gu">## CGC Checks</span>
<!-- Automatically filled by CI -->
<span class="k">- [ ]</span> No circular dependencies
<span class="k">- [ ]</span> No high-complexity functions (>15)
<span class="k">- [ ]</span> No dead code introduced
<span class="gu">## Checklist</span>
<span class="k">- [ ]</span> Code follows style guidelines
<span class="k">- [ ]</span> Self-review completed
<span class="k">- [ ]</span> Comments added for complex logic
<span class="k">- [ ]</span> Documentation updated
<span class="k">- [ ]</span> Tests pass locally
<span class="k">- [ ]</span> CGC analysis reviewed
</code></pre></div>
<h3 id="review-checklist-script">Review Checklist Script</h3>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="c1"># scripts/review-pr.sh</span>
<span class="nv">PR_BRANCH</span><span class="o">=</span><span class="nv">$1</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"🔍 Analyzing PR: </span><span class="nv">$PR_BRANCH</span><span class="s2">"</span>
<span class="nb">echo</span>
<span class="c1"># Get changed files</span>
<span class="nv">CHANGED_FILES</span><span class="o">=</span><span class="k">$(</span>git<span class="w"> </span>diff<span class="w"> </span>main...<span class="nv">$PR_BRANCH</span><span class="w"> </span>--name-only<span class="w"> </span>--diff-filter<span class="o">=</span>M<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span><span class="s1">'\.py$'</span><span class="k">)</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"📝 Changed Files:"</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"</span><span class="nv">$CHANGED_FILES</span><span class="s2">"</span>
<span class="nb">echo</span>
<span class="c1"># For each changed file, find modified functions</span>
<span class="k">for</span><span class="w"> </span>file<span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nv">$CHANGED_FILES</span><span class="p">;</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"📄 Analyzing: </span><span class="nv">$file</span><span class="s2">"</span>
<span class="w"> </span><span class="c1"># Find functions in this file</span>
<span class="w"> </span><span class="nv">FUNCTIONS</span><span class="o">=</span><span class="k">$(</span>cgc<span class="w"> </span>find<span class="w"> </span>--file<span class="w"> </span><span class="nv">$file</span><span class="w"> </span>--type<span class="w"> </span><span class="k">function)</span>
<span class="w"> </span><span class="c1"># For each function, check impact</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"</span><span class="nv">$FUNCTIONS</span><span class="s2">"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="nb">read</span><span class="w"> </span>func<span class="p">;</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">" Function: </span><span class="nv">$func</span><span class="s2">"</span>
<span class="w"> </span><span class="nv">CALLERS</span><span class="o">=</span><span class="k">$(</span>cgc<span class="w"> </span>analyze<span class="w"> </span>callers<span class="w"> </span><span class="nv">$func</span><span class="w"> </span>--count-only<span class="k">)</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">" Callers: </span><span class="nv">$CALLERS</span><span class="s2">"</span>
<span class="w"> </span><span class="k">done</span>
<span class="w"> </span><span class="nb">echo</span>
<span class="k">done</span>
<span class="c1"># Check for new dead code</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"🧹 Checking for dead code..."</span>
cgc<span class="w"> </span>analyze<span class="w"> </span>dead-code<span class="w"> </span>--branch<span class="w"> </span><span class="nv">$PR_BRANCH</span>
<span class="c1"># Check complexity</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"📊 Checking complexity..."</span>
cgc<span class="w"> </span>analyze<span class="w"> </span>complexity<span class="w"> </span>--branch<span class="w"> </span><span class="nv">$PR_BRANCH</span><span class="w"> </span>--threshold<span class="w"> </span><span class="m">15</span>
<span class="c1"># Check for circular dependencies</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"🔄 Checking for circular dependencies..."</span>
cgc<span class="w"> </span>query<span class="w"> </span><span class="s2">"</span>
<span class="s2">MATCH (m1:Module)-[:IMPORTS]->(m2:Module)-[:IMPORTS]->(m1)</span>
<span class="s2">RETURN m1.name, m2.name</span>
<span class="s2">"</span>
<span class="nb">echo</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"✅ Review complete!"</span>
</code></pre></div>
<p><strong>Usage:</strong>
<div class="highlight"><pre><span></span><code>./scripts/review-pr.sh<span class="w"> </span>feature-branch
</code></pre></div></p>
<hr />
<h2 id="documentation-integration">Documentation Integration</h2>
<h3 id="auto-generated-architecture-docs">Auto-Generated Architecture Docs</h3>
<p><strong>Keep docs in sync with code</strong></p>
<div class="highlight"><pre><span></span><code><span class="c1"># scripts/update-docs.sh</span>
<span class="c1">#!/bin/bash</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"📚 Updating documentation..."</span>
<span class="c1"># Generate architecture diagram</span>
cgc<span class="w"> </span>visualize<span class="w"> </span>--output<span class="w"> </span>docs/architecture.html
<span class="c1"># Generate module dependency graph</span>
cgc<span class="w"> </span>analyze<span class="w"> </span>deps<span class="w"> </span>--all<span class="w"> </span>--output<span class="w"> </span>docs/dependencies.md
<span class="c1"># Generate complexity report</span>
cgc<span class="w"> </span>analyze<span class="w"> </span>complexity<span class="w"> </span>--limit<span class="w"> </span><span class="m">20</span><span class="w"> </span>--output<span class="w"> </span>docs/complexity.md
<span class="c1"># Generate API surface area</span>
cgc<span class="w"> </span>find<span class="w"> </span>--type<span class="w"> </span><span class="k">function</span><span class="w"> </span>--decorated<span class="w"> </span>@api.route<span class="w"> </span>--output<span class="w"> </span>docs/api-endpoints.md
<span class="nb">echo</span><span class="w"> </span><span class="s2">"✅ Documentation updated!"</span>
</code></pre></div>
<p><strong>Add to CI:</strong>
<div class="highlight"><pre><span></span><code><span class="c1"># .github/workflows/docs.yml</span>
<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Update Docs</span>
<span class="nt">on</span><span class="p">:</span>
<span class="w"> </span><span class="nt">push</span><span class="p">:</span>
<span class="w"> </span><span class="nt">branches</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">main</span><span class="p p-Indicator">]</span>
<span class="nt">jobs</span><span class="p">:</span>
<span class="w"> </span><span class="nt">docs</span><span class="p">:</span>
<span class="w"> </span><span class="nt">runs-on</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ubuntu-latest</span>
<span class="w"> </span><span class="nt">steps</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">actions/checkout@v3</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pip install codegraphcontext</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cgc index .</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">./scripts/update-docs.sh</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">stefanzweifel/git-auto-commit-action@v4</span>
<span class="w"> </span><span class="nt">with</span><span class="p">:</span>
<span class="w"> </span><span class="nt">commit_message</span><span class="p">:</span><span class="w"> </span><span class="s">"docs:</span><span class="nv"> </span><span class="s">auto-update</span><span class="nv"> </span><span class="s">architecture</span><span class="nv"> </span><span class="s">docs"</span>
<span class="w"> </span><span class="nt">file_pattern</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docs/*</span>
</code></pre></div></p>
<p><strong>Result</strong>: Documentation automatically updates with every commit</p>
<hr />
<h2 id="team-collaboration-integration">Team Collaboration Integration</h2>
<h3 id="slack-integration">Slack Integration</h3>
<p><strong>Share CGC insights in Slack</strong></p>
<div class="highlight"><pre><span></span><code><span class="c1"># scripts/slack-bot.py</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">slack_sdk</span><span class="w"> </span><span class="kn">import</span> <span class="n">WebClient</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">slack_sdk.errors</span><span class="w"> </span><span class="kn">import</span> <span class="n">SlackApiError</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">subprocess</span>
<span class="n">client</span> <span class="o">=</span> <span class="n">WebClient</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'SLACK_BOT_TOKEN'</span><span class="p">])</span>
<span class="k">def</span><span class="w"> </span><span class="nf">handle_cgc_command</span><span class="p">(</span><span class="n">channel</span><span class="p">,</span> <span class="n">command</span><span class="p">):</span>
<span class="w"> </span><span class="sd">"""Handle /cgc slash command in Slack"""</span>
<span class="c1"># Run CGC command</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
<span class="p">[</span><span class="s1">'cgc'</span><span class="p">]</span> <span class="o">+</span> <span class="n">command</span><span class="o">.</span><span class="n">split</span><span class="p">(),</span>
<span class="n">capture_output</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">text</span><span class="o">=</span><span class="kc">True</span>
<span class="p">)</span>
<span class="c1"># Post result to Slack</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">client</span><span class="o">.</span><span class="n">chat_postMessage</span><span class="p">(</span>
<span class="n">channel</span><span class="o">=</span><span class="n">channel</span><span class="p">,</span>
<span class="n">text</span><span class="o">=</span><span class="sa">f</span><span class="s2">"```</span><span class="se">\n</span><span class="si">{</span><span class="n">result</span><span class="o">.</span><span class="n">stdout</span><span class="si">}</span><span class="se">\n</span><span class="s2">```"</span>
<span class="p">)</span>
<span class="k">except</span> <span class="n">SlackApiError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
<span class="c1"># Example usage:</span>
<span class="c1"># /cgc analyze callers processPayment</span>
<span class="c1"># /cgc find "authentication" --type function</span>
<span class="c1"># /cgc analyze dead-code</span>
</code></pre></div>
<h3 id="shared-graph-database">Shared Graph Database</h3>
<p><strong>Team shares one graph (optional)</strong></p>
<div class="highlight"><pre><span></span><code><span class="c1"># Setup shared Neo4j instance</span>
cgc<span class="w"> </span>neo4j<span class="w"> </span>setup<span class="w"> </span>--host<span class="w"> </span>team-neo4j.company.com
<span class="c1"># All team members connect to same graph</span>
cgc<span class="w"> </span>config<span class="w"> </span><span class="nb">set</span><span class="w"> </span>db.host<span class="w"> </span>team-neo4j.company.com
cgc<span class="w"> </span>config<span class="w"> </span><span class="nb">set</span><span class="w"> </span>db.user<span class="w"> </span>team
cgc<span class="w"> </span>config<span class="w"> </span><span class="nb">set</span><span class="w"> </span>db.password<span class="w"> </span><shared-password>
<span class="c1"># Now everyone sees the same graph</span>
<span class="c1"># Updates from one developer visible to all</span>
</code></pre></div>
<p><strong>Benefits:</strong>
- Consistent view of codebase
- No duplicate indexing
- Faster onboarding (graph already built)</p>
<hr />
<h2 id="comparison-cgc-vs-alternatives">Comparison: CGC vs Alternatives</h2>
<h3 id="cgc-vs-ide-built-in-tools">CGC vs IDE Built-in Tools</h3>
<table>
<thead>
<tr>
<th>Feature</th>
<th>IDE Built-in</th>
<th>CodeGraphContext</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Find References</strong></td>
<td>✅ Direct only</td>
<td>✅ Direct + Indirect</td>
</tr>
<tr>
<td><strong>Call Hierarchy</strong></td>
<td>✅ Limited</td>
<td>✅ Complete graph</td>
</tr>
<tr>
<td><strong>Cross-language</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>Dead Code</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>Complexity</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>Architecture</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>❌ No</td>
<td>✅ Yes (MCP)</td>
</tr>
<tr>
<td><strong>CI/CD</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
</tbody>
</table>
<p><strong>Verdict</strong>: CGC complements IDE tools, doesn't replace them</p>
<h3 id="cgc-vs-sourcegraph">CGC vs SourceGraph</h3>
<table>
<thead>
<tr>
<th>Feature</th>
<th>SourceGraph</th>
<th>CodeGraphContext</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Code Search</strong></td>
<td>✅ Excellent</td>
<td>✅ Good</td>
</tr>
<tr>
<td><strong>Graph Analysis</strong></td>
<td>⚠️ Limited</td>
<td>✅ Complete</td>
</tr>
<tr>
<td><strong>Local Use</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>AI Integration</strong></td>
<td>❌ No</td>
<td>✅ Yes (MCP)</td>
</tr>
<tr>
<td><strong>Open Source</strong></td>
<td>⚠️ Limited</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>Cost</strong></td>
<td>💰 $$</td>
<td>✅ Free</td>
</tr>
<tr>
<td><strong>GitHub Only</strong></td>
<td>✅ Yes</td>
<td>✅ Any repo</td>
</tr>
</tbody>
</table>
<p><strong>Verdict</strong>: CGC better for local, AI-integrated workflows</p>
<h3 id="cgc-vs-context7-mcp">CGC vs Context7 (MCP)</h3>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Context7</th>
<th>CodeGraphContext</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Context Type</strong></td>
<td>Docstrings only</td>
<td>Full graph</td>
</tr>
<tr>
<td><strong>Relationships</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>Call Chains</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>Dead Code</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>Architecture</strong></td>
<td>❌ No</td>
<td>✅ Yes</td>
</tr>
<tr>
<td><strong>Accuracy</strong></td>
<td>⚠️ Depends on docs</td>
<td>✅ Code-based</td>
</tr>
</tbody>
</table>
<p><strong>Verdict</strong>: CGC provides structural intelligence, not just text</p>
<hr />
<h2 id="integration-best-practices">Integration Best Practices</h2>
<h3 id="1-start-small">1. Start Small</h3>
<div class="highlight"><pre><span></span><code><span class="c1"># Day 1: Just index</span>
cgc<span class="w"> </span>index<span class="w"> </span>.
<span class="c1"># Day 2: Add MCP</span>
cgc<span class="w"> </span>mcp<span class="w"> </span>setup
cgc<span class="w"> </span>mcp<span class="w"> </span>start<span class="w"> </span><span class="p">&</span>
<span class="c1"># Week 1: Add to git hooks</span>
<span class="c1"># Week 2: Add to CI/CD</span>
<span class="c1"># Month 1: Team adoption</span>
</code></pre></div>
<h3 id="2-make-it-automatic">2. Make it Automatic</h3>
<div class="highlight"><pre><span></span><code><span class="c1"># Auto-start MCP server</span>
<span class="nb">echo</span><span class="w"> </span><span class="s1">'cgc mcp start &'</span><span class="w"> </span>>><span class="w"> </span>~/.bashrc
<span class="c1"># Auto-reindex on file changes</span>
cgc<span class="w"> </span>watch<span class="w"> </span>.
<span class="c1"># Auto-update docs</span>
<span class="c1"># Add to CI/CD pipeline</span>
</code></pre></div>
<h3 id="3-integrate-where-you-work">3. Integrate Where You Work</h3>
<ul>
<li>✅ Use MCP in IDE (primary)</li>
<li>✅ Add to git workflow (secondary)</li>
<li>✅ Add to CI/CD (automated)</li>
<li>❌ Don't require manual terminal commands</li>
</ul>
<h3 id="4-provide-value-immediately">4. Provide Value Immediately</h3>
<ul>
<li>First use should solve a real problem</li>
<li>Show time savings concretely</li>
<li>Integrate into existing workflows</li>
<li>Don't require behavior change</li>
</ul>
<hr />
<h2 id="summary-integration-philosophy">Summary: Integration Philosophy</h2>
<h3 id="what-cgc-is-not">❌ What CGC is NOT:</h3>
<ul>
<li>Not a separate tool you "switch to"</li>
<li>Not a manual process you "remember to run"</li>
<li>Not a terminal-only tool</li>
<li>Not a replacement for your IDE</li>
</ul>
<h3 id="what-cgc-is">✅ What CGC IS:</h3>
<ul>
<li><strong>Invisible enhancement</strong> to your AI assistant</li>
<li><strong>Automatic analysis</strong> in your CI/CD</li>
<li><strong>Integrated intelligence</strong> in your IDE</li>
<li><strong>Seamless addition</strong> to your workflow</li>
</ul>
<h3 id="the-goal">The Goal:</h3>
<p><strong>You shouldn't think about CGC. You should just get better answers, faster reviews, and safer refactorings—automatically.</strong></p>
<hr />
<h2 id="next-steps">Next Steps</h2>
<ul>
<li><strong>Setup MCP integration</strong> → <a href="../setup_workflows/">SETUP_WORKFLOWS.md</a></li>
<li><strong>See it in action</strong> → <a href="../user_journeys/">USER_JOURNEYS.md</a></li>
<li><strong>Detailed use cases</strong> → <a href="../use_cases_detailed/">USE_CASES_DETAILED.md</a></li>
<li><strong>CLI reference</strong> → <a href="../reference/cli_master/">CLI Reference</a></li>
<li><strong>MCP reference</strong> → <a href="../reference/mcp_master/">MCP Reference</a></li>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.expand", "content.code.copy", "toc.follow"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
</body>
</html>