banner(“§12 CLAUDE.md”) sh(“repowise generate-claude-md”) md = TARGET / “CLAUDE.md” if md.exists(): print(md.read_text()[:4000]) banner(“§13 herramientas MCP a través de CLI”) base = [
(“get_dead_code”, “repowise dead-code –safe-only”),
(“search_codebase”, ‘repowise search “timestamp expiry validation”‘),
]
llm_solo = [
(“get_overview”, ‘repowise query “Architecture overview please”‘),
(“get_context”, ‘repowise query “Explain signer and serializer modules”‘),
(“get_risk”, ‘repowise query “What is risky about changing signer.py?”‘),
(“get_why”, ‘repowise query “Why are signers stateless?”‘),
(“get_dependency_path”, ‘repowise query “How does URLSafeSerializer reach Signer?”‘),
(“get_architecture_diagram”, ‘repowise query “Produce a Mermaid diagram of the package”‘),
]
para nombre, cmd en base + (llm_only si HAS_LLM más []): print(f”\n──── {nombre} ────”) sh(cmd) si no HAS_LLM: print(“\n(7 de las 9 herramientas anteriores necesitan una clave LLM; configure ANTHROPIC_API_KEY y vuelva a ejecutar §13.)”) banner(“§14 Gráfico gráfico”) si G no es Ninguno: importe matplotlib.pyplot como por favor arriba = [n for n, _ in sorted(pr.items(), key=lambda x: -x[1])[:40]]H = G.subgraph(arriba).copia() tamaños = [4000 * pr[n] / max(pr.values()) + 80 para n en H.nodes]plt.figure(figsize=(12, 8)) pos = nx.spring_layout(H, seed=7, k=0.9) nx.draw_networkx_edges(H, pos, alpha=0.25, flechas=False) nx.draw_networkx_nodes(H, pos, node_size=sizes, node_color=”#F59520″, alpha=0.85) nx.draw_networkx_labels(H, pos, etiquetas={n: Path(n).name if isinstance(n, str) else n for n in H.nodes}, font_size=8) plt.title(“itsdangerous — top-40 nodos por PageRank”) plt.axis(“off”); plt.tight_layout(); plt.show() print(“\n✅ hecho.”)
(“get_dead_code”, “repowise dead-code –safe-only”),
(“search_codebase”, ‘repowise search “timestamp expiry validation”‘),
]
llm_solo = [
(“get_overview”, ‘repowise query “Architecture overview please”‘),
(“get_context”, ‘repowise query “Explain signer and serializer modules”‘),
(“get_risk”, ‘repowise query “What is risky about changing signer.py?”‘),
(“get_why”, ‘repowise query “Why are signers stateless?”‘),
(“get_dependency_path”, ‘repowise query “How does URLSafeSerializer reach Signer?”‘),
(“get_architecture_diagram”, ‘repowise query “Produce a Mermaid diagram of the package”‘),
]
para nombre, cmd en base + (llm_only si HAS_LLM más []): print(f”\n──── {nombre} ────”) sh(cmd) si no HAS_LLM: print(“\n(7 de las 9 herramientas anteriores necesitan una clave LLM; configure ANTHROPIC_API_KEY y vuelva a ejecutar §13.)”) banner(“§14 Gráfico gráfico”) si G no es Ninguno: importe matplotlib.pyplot como por favor arriba = [n for n, _ in sorted(pr.items(), key=lambda x: -x[1])[:40]]H = G.subgraph(arriba).copia() tamaños = [4000 * pr[n] / max(pr.values()) + 80 para n en H.nodes]plt.figure(figsize=(12, 8)) pos = nx.spring_layout(H, seed=7, k=0.9) nx.draw_networkx_edges(H, pos, alpha=0.25, flechas=False) nx.draw_networkx_nodes(H, pos, node_size=sizes, node_color=”#F59520″, alpha=0.85) nx.draw_networkx_labels(H, pos, etiquetas={n: Path(n).name if isinstance(n, str) else n for n in H.nodes}, font_size=8) plt.title(“itsdangerous — top-40 nodos por PageRank”) plt.axis(“off”); plt.tight_layout(); plt.show() print(“\n✅ hecho.”)