界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
开发与工程 · SKILL.md

code-communities

code-communities

【开发与工程】Detects architectural clusters and coupling boundaries via community detection on the code graph. Use when identifying module groupings or refactoring targets.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: code-communities description: Detects architectural clusters and coupling boundaries via community detection on the code graph. Use when identifying module groupings or refactoring targets.

Code Community Detection

Identify architectural clusters and module boundaries in the codebase.

When NOT To Use

  • One module's imports (use cartograph:dependency-graph)
  • Rendering an architecture already decided (use cartograph:architecture-diagram)

Prerequisites

This skill requires the gauntlet plugin for graph data. Discover it:

GRAPH_QUERY=$(find ~/.claude/plugins -name "graph_query.py" -path "*/gauntlet/*" 2>/dev/null | head -1)

If gauntlet is not installed: Fall back to directory structure analysis. Group files by directory and use import statements to identify module boundaries. Generate a Mermaid diagram from directory-level relationships.

If installed but no graph.db: Tell the user to run /gauntlet-graph build.

Steps

  1. Run community detection (requires gauntlet):

    python3 "$GRAPH_QUERY" --action communities
    

    Fallback (no gauntlet): Analyze directory structure and cross-directory imports:

    # Directory-level grouping
    find . -name "*.py" -not -path "*/node_modules/*" | \
        sed 's|/[^/]*$||' | sort | uniq -c | sort -rn
    
    # Cross-directory imports (rg preferred, grep fallback)
    if command -v rg &>/dev/null; then
      rg "^from |^import " --type py -l . | \
        xargs -I{} rg "^from \w+ import|^import \w+" {} --no-filename
    else
      grep -rh "^from \|^import " --include="*.py" .
    fi | sort | uniq -c | sort -rn | head -20
    

    Group by top-level directories and count cross-directory imports to estimate coupling.

  2. Display clusters:

    Community         | Nodes | Cohesion | Description
    auth              |    12 |    0.85  | Authentication module
    db                |     8 |    0.92  | Database access layer
    api/handlers      |    15 |    0.71  | API request handlers
    utils             |     6 |    0.45  | Shared utilities
    
  3. Show coupling warnings: If communities have

    10 cross-boundary edges, highlight them:

    WARNING: High coupling between 'auth' and 'api/handlers'
    (23 cross-community edges, severity: high)
    
  4. Generate Mermaid diagram:

    flowchart TB
      subgraph auth[Auth Module - cohesion 0.85]
        verify_token
        check_permissions
      end
      subgraph db[DB Layer - cohesion 0.92]
        execute_query
        connection_pool
      end
      auth -->|"23 edges"| api
      db -->|"5 edges"| api
    
  5. Suggest improvements:

    • Low cohesion (<0.5): "Consider splitting this module into more focused components"
    • High coupling (>20 edges): "Consider introducing an interface to reduce direct dependencies"

Algorithm

Uses the Leiden algorithm (when igraph is available) with edge-type-specific weights. Falls back to file-based grouping otherwise.

Edge TypeWeight
CALLS1.0
INHERITS0.8
IMPLEMENTS0.7
IMPORTS_FROM0.5
TESTED_BY0.4
CONTAINS0.3

Exit Criteria

  • Community table rendered with columns Community, Nodes, Cohesion, and Description for each detected cluster
  • Coupling warning surfaced for any pair of communities with more than 10 cross-boundary edges, labelled with severity
  • Mermaid flowchart TB generated with one subgraph per community showing cohesion score in the subgraph label
  • Improvement suggestions provided for any community with cohesion < 0.5 or coupling > 20 cross-community edges
  • If gauntlet is not installed, directory-structure fallback runs and absence of graph data is stated to the user
我的收藏