mcpbeat

Code Communities

athola/code-communities

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

958 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
324
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/athola/claude-night-market --skill code-communities

The instruction itself

6 sections, as written by the author

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

  • 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.

  • 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
  • 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)
  • 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
  • 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 Type | Weight |

|-----------|--------|

| CALLS | 1.0 |

| INHERITS | 0.8 |

| IMPLEMENTS | 0.7 |

| IMPORTS_FROM | 0.5 |

| TESTED_BY | 0.4 |

| CONTAINS | 0.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

How to use it

Copy the folder

Take athola/code-communities from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.