[{"data":1,"prerenderedAt":692},["ShallowReactive",2],{"navigation_docs":3,"-tools-find-duplicates":340,"-tools-find-duplicates-surround":687},[4,30,55,254,271,294,311],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","/getting-started","1.getting-started",[9,13,17,21,25],{"title":10,"path":11,"stem":12},"Introduction","/getting-started/introduction","1.getting-started/1.introduction",{"title":14,"path":15,"stem":16},"Platform","/getting-started/platforms","1.getting-started/2.platforms",{"title":18,"path":19,"stem":20},"Installation","/getting-started/installation","1.getting-started/3.installation",{"title":22,"path":23,"stem":24},"Licensing","/getting-started/licensing","1.getting-started/4.licensing",{"title":26,"path":27,"stem":28},"Quick Start","/getting-started/quick-start","1.getting-started/5.quick-start",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Features","/features","2.features",[35,39,43,47,51],{"title":36,"path":37,"stem":38},"Features Overview","/features/overview","2.features/1.overview",{"title":40,"path":41,"stem":42},"Code Quality Metrics","/features/code-quality-metrics","2.features/2.code-quality-metrics",{"title":44,"path":45,"stem":46},"Technical Debt Analysis","/features/technical-debt-analysis","2.features/3.technical-debt-analysis",{"title":48,"path":49,"stem":50},"Code Search","/features/code-search","2.features/4.code-search",{"title":52,"path":53,"stem":54},"Reports","/features/reports","2.features/5.reports",{"title":56,"path":57,"stem":58,"children":59,"page":29},"Tools","/tools","3.tools",[60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,142,148,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250],{"title":61,"path":62,"stem":63},"Tools Overview","/tools/overview","3.tools/1.overview",{"title":65,"path":66,"stem":67},"stellarion_get_symbol_info","/tools/get-symbol-info","3.tools/10.get-symbol-info",{"title":69,"path":70,"stem":71},"stellarion_symbol_search","/tools/symbol-search","3.tools/11.symbol-search",{"title":73,"path":74,"stem":75},"stellarion_get_callers","/tools/get-callers","3.tools/12.get-callers",{"title":77,"path":78,"stem":79},"stellarion_get_callees","/tools/get-callees","3.tools/13.get-callees",{"title":81,"path":82,"stem":83},"stellarion_get_detailed_symbol","/tools/get-detailed-symbol","3.tools/14.get-detailed-symbol",{"title":85,"path":86,"stem":87},"stellarion_find_by_imports","/tools/find-by-imports","3.tools/15.find-by-imports",{"title":89,"path":90,"stem":91},"stellarion_find_by_signature","/tools/find-by-signature","3.tools/16.find-by-signature",{"title":93,"path":94,"stem":95},"stellarion_find_entry_points","/tools/find-entry-points","3.tools/17.find-entry-points",{"title":97,"path":98,"stem":99},"stellarion_find_implementors","/tools/find-implementors","3.tools/18.find-implementors",{"title":101,"path":102,"stem":103},"stellarion_traverse_graph","/tools/traverse-graph","3.tools/19.traverse-graph",{"title":105,"path":106,"stem":107},"stellarion_get_ai_context","/tools/get-ai-context","3.tools/2.get-ai-context",{"title":109,"path":110,"stem":111},"stellarion_memory_store","/tools/memory-store","3.tools/20.memory-store",{"title":113,"path":114,"stem":115},"stellarion_memory_search","/tools/memory-search","3.tools/21.memory-search",{"title":117,"path":118,"stem":119},"stellarion_memory_get","/tools/memory-get","3.tools/22.memory-get",{"title":121,"path":122,"stem":123},"stellarion_memory_context","/tools/memory-context","3.tools/23.memory-context",{"title":125,"path":126,"stem":127},"stellarion_memory_invalidate","/tools/memory-invalidate","3.tools/24.memory-invalidate",{"title":129,"path":130,"stem":131},"stellarion_memory_list","/tools/memory-list","3.tools/25.memory-list",{"title":133,"path":134,"stem":135},"stellarion_memory_stats","/tools/memory-stats","3.tools/26.memory-stats",{"title":137,"path":138,"stem":139,"children":140},"stellarion_reindex_workspace","/tools/reindex-workspace","3.tools/27.reindex-workspace",[141],{"title":137,"path":138,"stem":139},{"title":143,"path":144,"stem":145,"children":146},"stellarion_index_files","/tools/index-files","3.tools/28.index-files",[147],{"title":143,"path":144,"stem":145},{"title":149,"path":150,"stem":151,"children":152},"stellarion_index_directory","/tools/index-directory","3.tools/29.index-directory",[153],{"title":149,"path":150,"stem":151},{"title":155,"path":156,"stem":157},"stellarion_get_edit_context","/tools/get-edit-context","3.tools/3.get-edit-context",{"title":159,"path":160,"stem":161},"stellarion_scan_security [Pro]","/tools/scan-security","3.tools/30.scan-security",{"title":163,"path":164,"stem":165},"stellarion_analyze_coupling [Pro]","/tools/analyze-coupling","3.tools/31.analyze-coupling",{"title":167,"path":168,"stem":169},"stellarion_find_unused_code [Pro]","/tools/find-unused-code","3.tools/32.find-unused-code",{"title":171,"path":172,"stem":173},"stellarion_codebase_health [Pro]","/tools/codebase-health","3.tools/33.codebase-health",{"title":175,"path":176,"stem":177},"stellarion_tech_debt_report [Pro]","/tools/tech-debt-report","3.tools/34.tech-debt-report",{"title":179,"path":180,"stem":181},"stellarion_assess_change_risk [Pro]","/tools/assess-change-risk","3.tools/35.assess-change-risk",{"title":183,"path":184,"stem":185},"stellarion_dependency_drift [Pro]","/tools/dependency-drift","3.tools/36.dependency-drift",{"title":187,"path":188,"stem":189},"stellarion_api_surface [Pro]","/tools/api-surface","3.tools/37.api-surface",{"title":191,"path":192,"stem":193},"stellarion_find_duplicates [Pro]","/tools/find-duplicates","3.tools/38.find-duplicates",{"title":195,"path":196,"stem":197},"stellarion_find_similar [Pro]","/tools/find-similar","3.tools/39.find-similar",{"title":199,"path":200,"stem":201},"stellarion_get_curated_context","/tools/get-curated-context","3.tools/4.get-curated-context",{"title":203,"path":204,"stem":205},"stellarion_cluster_symbols [Pro]","/tools/cluster-symbols","3.tools/40.cluster-symbols",{"title":207,"path":208,"stem":209},"stellarion_compare_symbols [Pro]","/tools/compare-symbols","3.tools/41.compare-symbols",{"title":211,"path":212,"stem":213},"stellarion_mine_git_history [Pro]","/tools/mine-git-history","3.tools/42.mine-git-history",{"title":215,"path":216,"stem":217},"stellarion_mine_git_history_for_file [Pro]","/tools/mine-git-history-for-file","3.tools/43.mine-git-history-for-file",{"title":219,"path":220,"stem":221},"stellarion_search_git_history [Pro]","/tools/search-git-history","3.tools/44.search-git-history",{"title":223,"path":224,"stem":225},"stellarion_find_eda_calls [Pro · EDA]","/tools/find-eda-calls","3.tools/45.find-eda-calls",{"title":227,"path":228,"stem":229},"stellarion_get_flow_graph [Pro · EDA]","/tools/get-flow-graph","3.tools/46.get-flow-graph",{"title":231,"path":232,"stem":233},"stellarion_find_duplicate_constraints [Pro · EDA]","/tools/find-duplicate-constraints","3.tools/47.find-duplicate-constraints",{"title":235,"path":236,"stem":237},"stellarion_analyze_impact","/tools/analyze-impact","3.tools/5.analyze-impact",{"title":239,"path":240,"stem":241},"stellarion_analyze_complexity","/tools/analyze-complexity","3.tools/6.analyze-complexity",{"title":243,"path":244,"stem":245},"stellarion_get_call_graph","/tools/get-call-graph","3.tools/7.get-call-graph",{"title":247,"path":248,"stem":249},"stellarion_get_dependency_graph","/tools/get-dependency-graph","3.tools/8.get-dependency-graph",{"title":251,"path":252,"stem":253},"stellarion_find_related_tests","/tools/find-related-tests","3.tools/9.find-related-tests",{"title":255,"path":256,"stem":257,"children":258,"page":29},"Integrations","/integrations","4.integrations",[259,263,267],{"title":260,"path":261,"stem":262},"Claude Code","/integrations/claude-code","4.integrations/1.claude-code",{"title":264,"path":265,"stem":266},"Cursor","/integrations/cursor","4.integrations/2.cursor",{"title":268,"path":269,"stem":270},"Other MCP Clients","/integrations/other-mcp-clients","4.integrations/3.other-mcp-clients",{"title":272,"path":273,"stem":274,"children":275,"page":29},"Guides","/guides","5.guides",[276,282,286,290],{"title":277,"path":278,"stem":279,"children":280},"Indexing Your Project","/guides/indexing-your-project","5.guides/1.indexing-your-project",[281],{"title":277,"path":278,"stem":279},{"title":283,"path":284,"stem":285},"Improving Code Quality","/guides/improving-code-quality","5.guides/2.improving-code-quality",{"title":287,"path":288,"stem":289},"Reducing Technical Debt","/guides/reducing-technical-debt","5.guides/3.reducing-technical-debt",{"title":291,"path":292,"stem":293},"Slash Commands","/guides/slash-commands","5.guides/4.slash-commands",{"title":295,"path":296,"stem":297,"children":298,"page":29},"Reference","/reference","6.reference",[299,303,307],{"title":300,"path":301,"stem":302},"CLI Commands","/reference/cli-commands","6.reference/1.cli-commands",{"title":304,"path":305,"stem":306},"Environment Variables","/reference/environment-variables","6.reference/2.environment-variables",{"title":308,"path":309,"stem":310},"Troubleshooting","/reference/troubleshooting","6.reference/3.troubleshooting",{"title":312,"path":313,"stem":314,"children":315,"page":29},"Quality","/quality","7.quality",[316,320,324,328,332,336],{"title":317,"path":318,"stem":319},"Code Quality Metrics Overview","/quality/stellarion_quality_metrics","7.quality/1.Stellarion_Quality_Metrics",{"title":321,"path":322,"stem":323},"Cognitive Complexity","/quality/cognitive-complexity","7.quality/2.cognitive-complexity",{"title":325,"path":326,"stem":327},"Cyclomatic Complexity","/quality/cyclomatic-complexity","7.quality/3.cyclomatic-complexity",{"title":329,"path":330,"stem":331},"Maintainability Index","/quality/maintainability","7.quality/4.maintainability",{"title":333,"path":334,"stem":335},"Circular Dependencies","/quality/circular-dependencies","7.quality/5.circular-dependencies",{"title":337,"path":338,"stem":339},"Unused Code Detection","/quality/unused-code","7.quality/6.unused-code",{"id":341,"title":191,"body":342,"description":680,"extension":681,"links":682,"meta":683,"navigation":684,"path":192,"seo":685,"stem":193,"__hash__":686},"docs/3.tools/38.find-duplicates.md",{"type":343,"value":344,"toc":666},"minimark",[345,358,362,367,383,387,475,479,484,494,497,501,507,514,518,524,527,531,537,543,547,550,570,573,619,623],[346,347,349,350,357],"callout",{"type":348},"info","This is a Pro tool. Requires a ",[351,352,356],"a",{"href":353,"rel":354},"https://stellarion.ai/pro",[355],"nofollow","Stellarion Pro license",". A 180-day free trial starts automatically.",[359,360,361],"p",{},"Detects duplicate and near-duplicate functions across your codebase using semantic embeddings. Works cross-language — can find a Python function that does the same thing as a JavaScript function. Similarity threshold controls how strict the matching is.",[363,364,366],"h2",{"id":365},"when-to-use","When to Use",[368,369,370,374,377,380],"ul",{},[371,372,373],"li",{},"During cleanup to consolidate duplicated logic into shared utilities",[371,375,376],{},"After a merge to find accidentally duplicated code from different branches",[371,378,379],{},"When onboarding to a large codebase to understand where similar logic lives",[371,381,382],{},"To enforce DRY principles across a multi-language monorepo",[363,384,386],{"id":385},"parameters","Parameters",[388,389,390,412],"table",{},[391,392,393],"thead",{},[394,395,396,400,403,406,409],"tr",{},[397,398,399],"th",{},"Parameter",[397,401,402],{},"Type",[397,404,405],{},"Required",[397,407,408],{},"Default",[397,410,411],{},"Description",[413,414,415,438,457],"tbody",{},[394,416,417,424,427,430,435],{},[418,419,420],"td",{},[421,422,423],"code",{},"threshold",[418,425,426],{},"number",[418,428,429],{},"No",[418,431,432],{},[421,433,434],{},"0.7",[418,436,437],{},"Similarity threshold (0.0 to 1.0). Lower values find looser matches.",[394,439,440,445,447,449,454],{},[418,441,442],{},[421,443,444],{},"limit",[418,446,426],{},[418,448,429],{},[418,450,451],{},[421,452,453],{},"20",[418,455,456],{},"Maximum number of duplicate pairs to return",[394,458,459,464,467,469,472],{},[418,460,461],{},[421,462,463],{},"uri",[418,465,466],{},"string",[418,468,429],{},[418,470,471],{},"workspace",[418,473,474],{},"Scope the search to a specific file or directory",[363,476,478],{"id":477},"examples","Examples",[480,481,483],"h3",{"id":482},"find-all-duplicates-in-the-project","Find all duplicates in the project",[485,486,491],"pre",{"className":487,"code":489,"language":490},[488],"language-text","Are there any duplicate functions in this codebase?\n","text",[421,492,489],{"__ignoreMap":493},"",[359,495,496],{},"Scans the workspace with the default 0.7 threshold and returns up to 20 duplicate pairs.",[480,498,500],{"id":499},"find-near-exact-copies","Find near-exact copies",[485,502,505],{"className":503,"code":504,"language":490},[488],"Find near-exact duplicate functions — threshold 0.9 or higher.\n",[421,506,504],{"__ignoreMap":493},[359,508,509,510,513],{},"Uses ",[421,511,512],{},"threshold: 0.9"," to find functions that are almost identical (e.g., copy-pasted with minor renaming).",[480,515,517],{"id":516},"cross-language-duplicates","Cross-language duplicates",[485,519,522],{"className":520,"code":521,"language":490},[488],"Find functions in the Python backend that duplicate logic from the TypeScript frontend.\n",[421,523,521],{"__ignoreMap":493},[359,525,526],{},"The semantic embedding approach naturally works across languages — no special configuration needed.",[480,528,530],{"id":529},"scope-to-a-directory","Scope to a directory",[485,532,535],{"className":533,"code":534,"language":490},[488],"Check src/handlers/ for duplicate functions.\n",[421,536,534],{"__ignoreMap":493},[359,538,539,540,542],{},"Sets ",[421,541,463],{}," to scope the search to the handlers directory.",[363,544,546],{"id":545},"output-format","Output Format",[359,548,549],{},"Returns a list of duplicate pairs, each containing:",[368,551,552,559,564],{},[371,553,554,558],{},[555,556,557],"strong",{},"Function A"," — name, file path, line number, language",[371,560,561,558],{},[555,562,563],{},"Function B",[371,565,566,569],{},[555,567,568],{},"Similarity score"," — 0.0 to 1.0",[359,571,572],{},"Threshold interpretation:",[388,574,575,585],{},[391,576,577],{},[394,578,579,582],{},[397,580,581],{},"Score",[397,583,584],{},"Meaning",[413,586,587,595,603,611],{},[394,588,589,592],{},[418,590,591],{},"0.95–1.0",[418,593,594],{},"Near-exact duplicate — likely copy-pasted",[394,596,597,600],{},[418,598,599],{},"0.85–0.95",[418,601,602],{},"Very similar — same logic with minor differences",[394,604,605,608],{},[418,606,607],{},"0.7–0.85",[418,609,610],{},"Renamed clone — same structure, different names",[394,612,613,616],{},[418,614,615],{},"0.5–0.7",[418,617,618],{},"Similar purpose — may or may not be true duplicates",[363,620,622],{"id":621},"tips","Tips",[368,624,625,636,647,650,657],{},[371,626,627,628,631,632,635],{},"Start with ",[421,629,630],{},"threshold: 0.7"," for a broad scan, then increase to ",[421,633,634],{},"0.85"," if there are too many results",[371,637,638,639,642,643,646],{},"Cross-language detection is a key strength — a ",[421,640,641],{},"formatDate()"," in JavaScript will match a ",[421,644,645],{},"format_date()"," in Python if they do the same thing",[371,648,649],{},"Not all duplicates should be consolidated — sometimes duplication is intentional (e.g., different error handling per context)",[371,651,652,653,656],{},"Use ",[421,654,655],{},"stellarion_compare_symbols"," to do a deep side-by-side comparison of a specific duplicate pair",[371,658,659,660,662,663,665],{},"Large codebases may have many results at low thresholds — use ",[421,661,444],{}," and ",[421,664,463],{}," to keep output manageable",{"title":493,"searchDepth":667,"depth":667,"links":668},2,[669,670,671,678,679],{"id":365,"depth":667,"text":366},{"id":385,"depth":667,"text":386},{"id":477,"depth":667,"text":478,"children":672},[673,675,676,677],{"id":482,"depth":674,"text":483},3,{"id":499,"depth":674,"text":500},{"id":516,"depth":674,"text":517},{"id":529,"depth":674,"text":530},{"id":545,"depth":667,"text":546},{"id":621,"depth":667,"text":622},"Detect duplicate and near-duplicate functions using semantic embeddings","md",null,{},true,{"title":191,"description":680},"b8j2ONBcsvXd5p5v9FhR7x27xosLhJojVru0UM52QJ8",[688,690],{"title":187,"path":188,"stem":189,"description":689,"children":-1},"Catalog public exports by module and identify unused exports",{"title":195,"path":196,"stem":197,"description":691,"children":-1},"Find functions most similar to a given function",1777612939454]