git clone https://github.com/plurigrid/asi
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/asi/skills/gh-interactome" ~/.claude/skills/plurigrid-asi-gh-interactome && rm -rf "$T"
plugins/asi/skills/gh-interactome/SKILL.mdgh-interactome - GitHub Author Interaction Network
Overview
Maps the interactome (interaction network) of GitHub contributors across discovered repos. Finds cobordisms - shared boundaries where different research communities meet.
┌─────────────────────────────────────────────────────────────────────────────┐ │ INTERACTOME STRUCTURE │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ BlockScience ◄────── olynch ──────► ToposInstitute │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ cadCAD AlgebraicJulia poly │ │ │ │ │ │ │ └──── jpfairbanks ─┴── epatters ─────┘ │ │ │ │ HoTT/Coq-HoTT ◄─── abooij ───► mortberg/cubicaltt │ │ │ │ │ │ └────── mikeshulman ──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘
Discovered Cobordisms
Cobordism 1: AlgebraicJulia ↔ Topos Institute ↔ BlockScience
Shared contributors:
(Evan Patterson) - Catlab.jl, ACSets.jl, Topos Instituteepatters
(Owen Lynch) - poly, ACSets.jl, Catlab.jl, Topos Instituteolynch
(James Fairbanks) - Catlab.jl, ACSets.jl, U Floridajpfairbanks
- Catlab.jl, ACSets.jl, Topos Institutekris-brown
(Sophie Libkind) - Catlab.jl, Stanford/Toposslibkind
Bridge repos:
| Repo | Stars | Role |
|---|---|---|
| AlgebraicJulia/Catlab.jl | 681 | Applied category theory framework |
| AlgebraicJulia/ACSets.jl | 25 | Algebraic databases |
| AlgebraicJulia/AlgebraicPetri.jl | - | Compositional Petri nets |
| ToposInstitute/poly | 113 | Polynomial functors |
Cobordism 2: HoTT ↔ Cubical Type Theory
Shared contributors:
- HoTT/Coq-HoTT, mortberg/cubicalttabooij
(Mike Shulman) - HoTT, real cohesionmikeshulman
(Andrej Bauer) - HoTT, constructive mathandrejbauer
- HoTT, cubicaltt, AgdaDanGrayson
Bridge insight: HoTT contributors often work on multiple proof assistants.
Cobordism 3: DisCoPy ↔ Oxford Quantum Group
Key contributors:
(1213 commits) - DisCoPy coretoumix
(354 commits) - DisCoPygiodefelice
(173 commits) - DisCoPyy-richie-y
- Organizational accountoxford-quantum-group
Bridge insight: QNLP (Quantum NLP) research connects quantum computing to linguistics via categorical semantics.
Cobordism 4: GFlowNets ↔ Mila (Bengio's Lab)
Key contributors:
(94 commits) - Awesome-GFlowNets curatorzdhNarsil
(Emmanuel Bengio) - GFlowNet contributorbengioe- Connection to Yoshua Bengio's lab at Mila
Bridge insight: GFlowNets for molecular design connects to chemistry/synthesis domains.
Author Profiles
Core AlgebraicJulia
| Author | Repos | Affiliation |
|---|---|---|
| Catlab.jl (2304), ACSets.jl (101) | Topos Institute |
| poly (1), Catlab.jl (138), ACSets.jl (92) | Topos Institute |
| Catlab.jl (79), ACSets.jl (19) | U Florida |
| Catlab.jl (63) | Topos Institute |
Core HoTT
| Author | Repos | Affiliation |
|---|---|---|
| Coq-HoTT (2191) | - |
| Coq-HoTT (1175) | UWO |
| Coq-HoTT (930) | MIT |
| Coq-HoTT (888) | - |
| Coq-HoTT (396) | Ljubljana |
Core BlockScience
| Author | Repos | Affiliation |
|---|---|---|
| cadCAD (731), cats (107) | BlockScience |
| cadCAD (3) | BlockScience founder |
| cadCAD (74) | - |
| cadCAD (37) | - |
Core DisCoPy
| Author | Repos | Affiliation |
|---|---|---|
| discopy (1213) | Oxford |
| discopy (354) | - |
| discopy (173) | - |
Key Bridge Authors
| Author | Connects | Via |
|---|---|---|
| Topos ↔ AlgebraicJulia | poly, Catlab, ACSets |
| HoTT ↔ Cubical | Coq-HoTT, cubicaltt |
| Topos ↔ Poly | poly (186 commits) |
Network Metrics
Centrality (Bridge Authors)
# Authors who connect multiple communities BRIDGE_AUTHORS = { "olynch": ["ToposInstitute/poly", "AlgebraicJulia/Catlab.jl", "AlgebraicJulia/ACSets.jl"], "epatters": ["AlgebraicJulia/Catlab.jl", "AlgebraicJulia/ACSets.jl", "ToposInstitute/*"], "abooij": ["HoTT/Coq-HoTT", "mortberg/cubicaltt"], "jpfairbanks": ["AlgebraicJulia/Catlab.jl", "AlgebraicJulia/ACSets.jl"], "mikeshulman": ["HoTT/Coq-HoTT", "HoTT/book"], }
Community Clusters
Cluster 1: Applied Category Theory - AlgebraicJulia (epatters, olynch, jpfairbanks, kris-brown) - Topos Institute (dspivak, olynch, epatters) - DisCoPy (toumix, giodefelice) Cluster 2: Type Theory / Foundations - HoTT (Alizter, jdchristensen, mikeshulman) - Cubical (mortberg, simhu, coquand) - Rzk (fizruk) Cluster 3: Complex Systems / Token Engineering - BlockScience (mzargham, JEJodesty) - cadCAD ecosystem Cluster 4: Haskell Categorical - connections (cmk) - lattices (phadej) - haskerwaul (sellout)
Implementation
#!/usr/bin/env python3 """ GitHub Interactome: Map author interactions across repos. """ # /// script # requires-python = ">=3.11" # dependencies = ["rich", "networkx"] # /// import subprocess import json from collections import defaultdict def get_contributors(repo: str) -> list[dict]: """Get contributors for a repo via gh CLI.""" cmd = f"gh api repos/{repo}/contributors --jq '.[] | {{login, contributions}}'" result = subprocess.run(cmd, shell=True, capture_output=True, text=True) contributors = [] for line in result.stdout.strip().split('\n'): if line: contributors.append(json.loads(line)) return contributors def build_interactome(repos: list[str]) -> dict: """Build author-repo bipartite graph.""" author_repos = defaultdict(list) repo_authors = defaultdict(list) for repo in repos: contributors = get_contributors(repo) for c in contributors: author = c['login'] author_repos[author].append({ 'repo': repo, 'contributions': c['contributions'] }) repo_authors[repo].append(author) return { 'author_repos': dict(author_repos), 'repo_authors': dict(repo_authors), } def find_bridges(interactome: dict, min_repos: int = 2) -> list[dict]: """Find authors who contribute to multiple repos (bridges).""" bridges = [] for author, repos in interactome['author_repos'].items(): if len(repos) >= min_repos: bridges.append({ 'author': author, 'repos': [r['repo'] for r in repos], 'total_contributions': sum(r['contributions'] for r in repos), }) return sorted(bridges, key=lambda x: len(x['repos']), reverse=True) def find_cobordisms(interactome: dict) -> list[dict]: """Find shared boundaries between repo communities.""" cobordisms = [] repos = list(interactome['repo_authors'].keys()) for i, repo_a in enumerate(repos): for repo_b in repos[i+1:]: shared = set(interactome['repo_authors'][repo_a]) & \ set(interactome['repo_authors'][repo_b]) if shared: cobordisms.append({ 'repos': (repo_a, repo_b), 'shared_authors': list(shared), 'strength': len(shared), }) return sorted(cobordisms, key=lambda x: x['strength'], reverse=True)
Justfile Recipes
# Build interactome gh-interactome-build: @echo "🕸️ Building GitHub Interactome..." python3 interactome.py build # Find bridge authors gh-interactome-bridges: @echo "🌉 Finding bridge authors..." python3 interactome.py bridges # Find cobordisms gh-interactome-cobordisms: @echo "🔗 Finding cobordisms..." python3 interactome.py cobordisms # Author lookup gh-interactome-author login: @echo "👤 Author: {{login}}" gh api users/{{login}} --jq '{name, company, blog, bio}' gh api users/{{login}}/repos --jq '.[].name' | head -10
Key Cobordism: AlgebraicJulia → BlockScience
The compositional systems approach connects:
┌─────────────────────────────────────────────────────────────────────────────┐ │ COMPOSITIONAL SYSTEMS COBORDISM │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ UC Riverside ──── John Baez ────► AlgebraicJulia ◄─── Topos Institute │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ │ Stock & Flow Catlab.jl, ACSets poly │ │ │ Diagrams │ (Spivak) │ │ │ │ │ │ │ │ └────────────────┼───────────────────┼──────────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ Compositional AlgebraicPetri.jl │ │ Epidemiology AlgebraicDynamics.jl │ │ │ │ │ │ └─────────┬─────────┘ │ │ │ │ │ ▼ │ │ BlockScience │ │ (cadCAD, Token Engineering) │ │ │ └─────────────────────────────────────────────────────────────────────────────┘
Key Papers Bridging Communities
-
"Compositional Scientific Computing with Catlab and SemanticModels" (2020)
- Halter, Patterson, Baas, Fairbanks
- ArXiv: 2005.04831
-
"Compositional Modeling with Stock and Flow Diagrams" (2022)
- Baez, Li, Libkind, Osgood
- ArXiv: 2205.08373 (COVID epidemiology application)
-
"AlgebraicRL.jl: Compositional Reinforcement Learning"
- Uses Catlab.jl for MDP composition
Shared Methodology
| Concept | AlgebraicJulia | BlockScience |
|---|---|---|
| Compositionality | Operad algebras | cadCAD nested configs |
| Open systems | Undirected wiring diagrams | State variables + policies |
| Semantics | Functors to dynamical systems | Simulation runs |
| Visualization | String diagrams | System dynamics diagrams |
Bridge Authors
| Author | AlgebraicJulia | BlockScience | Academic |
|---|---|---|---|
| John Baez | Advisor/papers | - | UC Riverside |
| Sophie Libkind | AlgebraicDynamics | - | Stanford/Topos |
| James Fairbanks | Catlab core | - | U Florida |
| Evan Patterson | Catlab lead | - | Topos |
| Michael Zargham | - | cadCAD lead | BlockScience |
Conceptual Bridge: Both communities use category theory for compositional modeling of complex systems - AlgebraicJulia in scientific computing, BlockScience in cryptoeconomics/token engineering.
See Also
- Discovery skill that feeds into thisgh-skill-explorer
- Adjunctions between domainsgalois-connections
- ACSets patternsacsets-algebraic-databases
- String diagramsdiscopy
End-of-Skill Interface
r2con Speaker Resources
Target organizations for interactome mapping:
| Speaker | Handle | Organization | Interactome Target |
|---|---|---|---|
| pancake | trufae | radareorg | Core r2 ecosystem (75+ repos) |
| thestr4ng3r | thestr4ng3r | rizinorg | Rizin/Cutter fork community |
| oleavr | oleavr | frida | Dynamic instrumentation ecosystem |
| xvilka | XVilka | radareorg | UEFI, radeco, decompilation |
| cryptax | cryptax | rednaga | Android security tooling |
Commands
# Build interactome for discovered repos just gh-interactome build # Find bridge authors just gh-interactome bridges # Find cobordisms between communities just gh-interactome cobordisms # Show author profile just gh-interactome author olynch # Visualize network just gh-interactome viz # NEW: Map r2con speaker orgs just gh-interactome orgs radareorg rizinorg frida