banner("§12 CLAUDE.md")
sh("repowise generate-claude-md")
md = TARGET / "CLAUDE.md"
if md.exists():
print(md.read_text()[:4000])
banner("§13 MCP instruments by way of CLI")
base = [
("get_dead_code", "repowise dead-code --safe-only"),
("search_codebase", 'repowise search "timestamp expiry validation"'),
]
llm_only = [
("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"'),
]
for title, cmd in base + (llm_only if HAS_LLM else []):
print(f"n──── {title} ────")
sh(cmd)
if not HAS_LLM:
print("n(7 of 9 instruments above want an LLM key — set ANTHROPIC_API_KEY and re-run §13.)")
banner("§14 Graph plot")
if G shouldn't be None:
import matplotlib.pyplot as plt
high = [n for n, _ in sorted(pr.items(), key=lambda x: -x[1])[:40]]
H = G.subgraph(high).copy()
sizes = [4000 * pr[n] / max(pr.values()) + 80 for n in H.nodes]
plt.determine(figsize=(12, 8))
pos = nx.spring_layout(H, seed=7, okay=0.9)
nx.draw_networkx_edges(H, pos, alpha=0.25, arrows=False)
nx.draw_networkx_nodes(H, pos, node_size=sizes, node_color="#F59520", alpha=0.85)
nx.draw_networkx_labels(H, pos,
labels={n: Path(n).title if isinstance(n, str) else n for n in H.nodes},
font_size=8)
plt.title("itsdangerous — top-40 nodes by PageRank")
plt.axis("off"); plt.tight_layout(); plt.present()
print("n✅ carried out.")
