repoforge
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- Hardcoded secret — Potential hardcoded credential in .github/workflows/ci.yml
- rm -rf — Recursive force deletion command in .github/workflows/docs.yml
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Generate technical docs and AI agent skills (SKILL.md, AGENT.md) from any codebase — model-agnostic, monorepo-aware
RepoForge
Read this in: English · Español
AI-powered code analysis for generating technical docs, agent skills, security scans, code graphs, architecture diagrams, and LLM-ready repo exports.
Live Demo · PyPI · GitHub · Issues
What It Is
RepoForge scans a repository once and produces several outputs from the same analysis: a Docsify-ready documentation site, multi-tool agent skills, Mermaid/SVG diagrams, code graphs, security scans, and single-file LLM context exports.
The core idea: mix deterministic analysis (stack detection, graphing, scoring, scanning, coverage parsing, diagram generation) with optional LLM text generation, instead of pretending the model understands the repo by magic. The LLM writes prose; everything structural is computed.
Use it when you need to:
- onboard engineers into an unfamiliar codebase fast
- generate internal docs without hand-writing every chapter
- create agent instructions for Claude Code, OpenCode, Cursor, Codex, Gemini, and Copilot from one source
- flatten a repository into a single LLM-friendly context file
- audit generated markdown for secrets, prompt injection, or unsafe commands
- understand architectural blast radius before refactoring
- publish a docs site to GitHub Pages without building a custom docs pipeline
Quick Start
pip install repoforge-ai
# Generate Docsify-ready docs (needs an LLM API key)
repoforge docs -w /path/to/repo --lang English
# Generate multi-tool skills (needs an LLM API key)
repoforge skills -w /path/to/repo --targets all
# Export repo context for an LLM (no API key)
repoforge export -w /path/to/repo -o context.md
# Deterministic security scan (no API key)
repoforge scan -w /path/to/repo
Notes:
- CLI command:
repoforge - PyPI package name:
repoforge-ai(repoforgewas already taken) - Recommended for speed: install
ripgrep
Table of Contents
- Installation
- Command Overview
- Model Setup
- Technical Quick Start
docsCommandskillsCommandexportCommandscoreCommandscanCommandcompressCommandgraphCommanddiagramCommand- Code Analysis Commands
- MCP Server
- GitHub Pages Deployment
- Monorepo Support
repoforge.yaml- Per-Repo Config- Python API
- How It Works
- Cost
- Supported Stacks
- License
- Inspirations
Installation
pip install repoforge-ai
Optional extras
Some commands need extra dependencies. Install only what you use:
pip install "repoforge-ai[intelligence]" # multi-language AST analysis (tree-sitter) for `analyze`, `slice`
pip install "repoforge-ai[search]" # semantic search index (faiss) for `index`/`query`
pip install "repoforge-ai[pdf]" # PDF ingestion for `skills-from-docs`
pip install "repoforge-ai[youtube]" # YouTube transcript ingestion for `skills-from-docs`
pip install "repoforge-ai[all]" # everything above
ripgrep is strongly recommended for faster scanning:
brew install ripgrep
sudo apt install ripgrep
scoop install ripgrep
Command Overview
Generation commands (need an LLM API key)
| Command | What it does |
|---|---|
repoforge docs |
Generate Docsify-ready technical documentation |
repoforge skills |
Generate skills and agents for coding tools |
repoforge skills-from-docs |
Generate SKILL.md from external docs (URL, GitHub repo, local dir, PDF, YouTube, notebook) |
repoforge index |
Build a semantic search index from codebase entities |
Deterministic commands (no API key)
| Command | What it does |
|---|---|
repoforge export |
Flatten a repo into one LLM-optimized file |
repoforge score |
Score generated SKILL.md files across 7 dimensions |
repoforge scan |
Security-scan generated markdown |
repoforge compress |
Token-optimize generated markdown |
repoforge graph |
Build dependency/call graphs and blast-radius views |
repoforge diagram / diagrams |
Generate Mermaid, SVG, ERD, K8s, and OpenAPI diagrams |
repoforge check |
Validate code references in generated docs |
repoforge diff |
Entity-level semantic diff between two git refs |
repoforge audit |
Run all analysis checks in one shot |
repoforge analyze |
Multi-layer analysis: AST + call graph + CFG + DFG + PDG |
repoforge search |
Semantic code search by behavior |
repoforge query |
Search a previously built index |
repoforge blast-radius |
Transitive blast radius of a change |
repoforge change-impact |
Identify which tests to run for a change |
repoforge co-change |
Detect files that always change together |
repoforge ownership |
Compute file/module ownership and bus factor |
repoforge dead-code |
Detect potentially dead code via graph analysis |
repoforge slice |
Program slice for a specific line |
repoforge decisions |
Decision registry from git history and inline markers |
repoforge context-prune |
Graph-aware context pruning for LLM review |
repoforge prompts |
Generate reusable analysis prompts from a scan |
repoforge import-docs |
Import external dependency docs to enrich context |
repoforge validate-skills |
Validate SKILL.md files against the standard format |
repoforge registry |
Cross-repo code graph registry (add/remove/list/build/search) |
Run repoforge <command> --help for the full option list of any command.
Common flags
-w,--working-dir/--workspace: repo path-o,--output/--output-dir: output file or directory--model: LLM model--dry-run: plan only, no LLM calls-q,--quiet: quieter output
Model Setup
RepoForge auto-detects providers from environment variables, but explicit setup matters because provider behavior is NOT the same.
GitHub Models
Best low-friction option if you already use GitHub tooling.
export GITHUB_TOKEN=$(gh auth token)
repoforge docs -w . --model github/gpt-4o-mini
For GitHub Actions, the built-in GITHUB_TOKEN is not enough for GitHub Models. You need a PAT with models:read scope, usually stored as GH_MODELS_TOKEN.
Groq
export GROQ_API_KEY=gsk_...
repoforge docs -w . --model groq/llama-3.3-70b-versatile
Ollama
ollama pull qwen2.5-coder:14b
repoforge docs -w . --model ollama/qwen2.5-coder:14b
Claude Haiku
export ANTHROPIC_API_KEY=sk-ant-...
repoforge docs -w . --model claude-haiku-3-5
OpenAI
export OPENAI_API_KEY=sk-...
repoforge docs -w . --model gpt-4o-mini
Practical model notes
github/gpt-4o-mini: easiest default for docs and skills if you already use GitHubclaude-haiku-3-5: cheap and usually good enough for generationollama/...: local and free, but quality depends heavily on the model you pullgroq/...: fast and free-tier friendly, but rate limits mattergpt-4o-mini: solid baseline if you already have OpenAI wired in
Technical Quick Start
# Docs
repoforge docs -w /path/to/repo --lang English -o docs
# Serve docs locally
repoforge docs -w . --serve
# Generate skills for Claude + OpenCode + Cursor + Codex
repoforge skills -w /path/to/repo --targets claude,opencode,cursor,codex
# Generate skills and immediately score, scan, and compress them
repoforge skills -w /path/to/repo --score --scan --compress
# Export repo context
repoforge export -w /path/to/repo -o context.md
# Build dependency graph
repoforge graph -w /path/to/repo --format mermaid
# Generate dependency diagram
repoforge diagram -w /path/to/repo --type dependency
# Incremental docs
repoforge docs -w /path/to/repo --incremental
# Plan only
repoforge docs -w /path/to/repo --dry-run
repoforge skills -w /path/to/repo --dry-run
docs Command
Generates a Docsify-ready technical documentation site adapted to project type.
| Project type | Typical chapters |
|---|---|
| Web service | Data Models, API Reference |
| Frontend SPA | Components, State Management |
| CLI tool | Commands, Configuration |
| Data science | Data Pipeline, Models and Training, Experiments |
| Library or SDK | Public API, Integration Guide |
| Mobile app | Screens and Navigation, Native Integrations |
| Infra or DevOps | Resources, Variables, Deployment Guide |
| Monorepo | Global chapters plus per-layer subdocs |
repoforge docs [OPTIONS]
-w, --working-dir DIR Repo to analyze [default: .]
-o, --output-dir DIR Output directory [default: docs]
--model TEXT LLM model
--lang LANGUAGE Documentation language [default: English]
--name TEXT Project name override
--complexity LEVEL auto|small|medium|large
--theme THEME vue|dark|buble|pure
--serve Generate and open local docs
--serve-only Skip generation, serve existing docs
--port INT Local server port [default: 8000]
--chunked Use chunked generation mode
--verify / --no-verify Enable or disable Stage C verification
--verify-model TEXT Verification model override
--no-verify-docs Disable verification and deterministic corrections
--facts-only Emit factual extraction without prose
--incremental Regenerate only stale chapters
--semantic-dedup Skip semantically unchanged chapters in incremental mode
--semantic-threshold FLOAT
--watch Regenerate docs when files change
--watch-interval FLOAT
--link-style STYLE backtick|wiki
--diagrams Embed Mermaid diagrams in architecture docs
--max-workers INT Parallel chapter workers
--model-heavy TEXT Heavy-tier model when --model auto
--model-standard TEXT Standard-tier model when --model auto
--model-light TEXT Light-tier model when --model auto
--dry-run
-q, --quiet
Supported languages: English, Spanish, French, German, Portuguese, Chinese, Japanese, Korean, Russian, Italian, Dutch.
Output
Up to 8 chapters plus Docsify scaffolding:
index.md01-overview.md02-quickstart.md03-architecture.md04-core-mechanisms.md05-data-models.mdwhen relevant06-api-reference.mdwhen relevant07-dev-guide.mdindex.html,_sidebar.md, and.nojekyllfor Docsify and GitHub Pages
Incremental mode
With --incremental, RepoForge tracks chapter dependencies in a manifest and uses git diff to decide which chapters are stale. That matters on large repos because regenerating everything is just burning tokens for no reason.
--semantic-dedup goes one step further by using embedding similarity to skip chapters whose meaning did not materially change, even if files changed.
Complexity levels
| Level | Behavior |
|---|---|
auto |
Detect from file count and layer count |
small |
Fewer files, denser per-file coverage |
medium |
Balanced depth |
large |
More architectural summarization, less file-by-file noise |
Local preview
repoforge docs -w . --serve
Or serve the generated folder yourself:
python3 -m http.server 8000 --directory docs
skills Command
Generates SKILL.md and AGENT.md artifacts for six coding-agent targets from a single scan.
repoforge skills [OPTIONS]
-w, --working-dir DIR Repo to analyze [default: .]
-o, --output-dir DIR Output directory [default: .claude]
--model TEXT LLM model
--complexity LEVEL auto|small|medium|large
--targets TARGETS claude|opencode|cursor|codex|gemini|copilot|all
--disclosure MODE tiered|full
--with-hooks Generate HOOKS.md
--plugin Generate plugin.json + commands/
--score Score skills after generation
--compress Compress skills after generation
--aggressive Stronger compression mode
--scan Run security scan after generation
--no-opencode Skip mirror to .opencode/
--serve Open skills browser
--serve-only Open existing skills browser
--port INT Browser port [default: 8765]
--dry-run
-q, --quiet
Output targets
| Target | Output | Format |
|---|---|---|
claude |
.claude/skills/, .claude/agents/ |
SKILL.md and AGENT.md |
opencode |
.opencode/ |
Mirror of Claude output |
cursor |
.cursor/rules/*.mdc |
Cursor rules |
codex |
AGENTS.md |
Consolidated instructions |
gemini |
GEMINI.md |
Gemini CLI instructions |
copilot |
.github/copilot-instructions.md |
Copilot instructions |
The agent-teams-lite registry output (.atl/skill-registry.md) is also produced.
Example layout
.claude/
├── skills/
│ ├── backend/SKILL.md
│ ├── backend/auth/SKILL.md
│ └── frontend/SKILL.md
├── agents/
│ ├── orchestrator/AGENT.md
│ ├── backend-agent/AGENT.md
│ └── frontend-agent/AGENT.md
├── commands/
├── plugin.json
├── HOOKS.md
├── DISCOVERY_INDEX.md
└── SKILLS_INDEX.md
Things worth knowing
--targets allis the fastest way to produce a full multi-agent output set.--disclosure tieredadds progressive disclosure markers and index files.--score --scan --compresslets you treat skill generation like a pipeline instead of a one-shot dump.
export Command
Flatten a repo into one LLM-friendly file. No API key required.
repoforge export [OPTIONS]
-w, --working-dir DIR Repo to analyze [default: .]
-o, --output FILE Output file, or stdout if omitted
--max-tokens INT Token budget cap
--no-contents Tree plus definitions only
--format FORMAT markdown|xml
--compress API-surface-focused export
-q, --quiet
repoforge export -w .
repoforge export -w . -o context.md
repoforge export -w . --max-tokens 100000
repoforge export -w . --no-contents
repoforge export -w . --format xml
repoforge export -w . --compress
score Command
Scores generated skills across 7 dimensions: completeness, clarity, specificity, examples, format, safety, and agent readiness. No API key required.
repoforge score [OPTIONS]
-w, --working-dir DIR Repo root [default: .]
-d, --skills-dir DIR Skills directory override
--format FORMAT table|json|markdown
--min-score FLOAT Exit 1 if a skill falls below threshold
-q, --quiet
repoforge score -w .
repoforge score -w . --format json
repoforge score -w . --min-score 0.7
repoforge score -d /path/to/skills
scan Command
Security scanner for generated markdown. No API key required. It ships 37 rules across 5 categories:
- prompt injection
- hardcoded secrets
- PII exposure
- destructive commands
- unsafe code patterns
It is context-aware: anti-pattern examples are downgraded instead of treated the same as production secrets.
repoforge scan [OPTIONS]
-w, --workspace DIR Repo root [default: .]
--target-dir DIR Specific directory override
--format FORMAT table|json|markdown
--allowlist IDS Comma-separated rule IDs
--fail-on SEVERITY critical|high|medium|low
-q, --quiet
repoforge scan -w .
repoforge scan -w . --format json
repoforge scan -w . --fail-on critical
repoforge scan -w . --allowlist SEC-020,SEC-022
repoforge scan --target-dir ./my-skills
compress Command
Deterministic markdown compression for lower token cost. No API key required.
Compression passes include whitespace normalization, filler removal, table compaction, code-block cleanup, bullet consolidation, and optional aggressive abbreviation.
repoforge compress [OPTIONS]
-w, --workspace DIR Repo root [default: .]
--target-dir DIR Directory override
--aggressive Stronger abbreviation mode
--dry-run Show compression stats only
-q, --quiet
repoforge compress -w .
repoforge compress -w . --aggressive
repoforge compress -w . --dry-run
repoforge compress --target-dir ./my-skills
graph Command
Builds a code knowledge graph from repository structure. No API key required.
It supports file-level dependency graphs, symbol-level call graphs, structured graph queries, community detection, and blast radius analysis.
repoforge graph [OPTIONS]
-w, --workspace DIR Repo root [default: .]
-o, --output FILE Output file or stdout
--format FORMAT mermaid|json|dot|summary
--type TYPE deps|calls
--blast-radius MODULE Show impact of a module change
--v2 Use extractor-based graph builder
--depth INT BFS depth for v2 blast radius
--max-files INT Max files in blast-radius result
--include-tests / --no-include-tests
--query MODE callers|callees|imports
--symbol TEXT Symbol for callers or callees query
--file PATH File path for imports query
--communities Detect related module clusters
--incremental Use file-hash graph caching
-q, --quiet
repoforge graph -w .
repoforge graph -w . --format mermaid
repoforge graph -w . --format json -o graph.json
repoforge graph -w . --format dot -o graph.dot
repoforge graph -w . --blast-radius repoforge/cli.py
repoforge graph -w . --type calls
repoforge graph --query callers --symbol build_graph
repoforge graph --query imports --file repoforge/cli.py
repoforge graph -w . --communities --format summary
diagram Command
Generates architecture diagrams from code or external specs. No API key required.
repoforge diagram [OPTIONS]
-w, --workspace DIR Repo root [default: .]
-o, --output FILE Output file or stdout
--type TYPE dependency|directory|callflow|erd|k8s|openapi|svg|all
--max-nodes INT Dependency diagram node cap
--max-depth INT Directory or call-flow depth
--entry FILE Entry point for call-flow diagrams
--input FILE Required for erd, k8s, and openapi
-q, --quiet
repoforge diagram -w .
repoforge diagram -w . --type dependency
repoforge diagram -w . --type callflow --entry src/main.py
repoforge diagram -w . --type erd --input schema.sql
repoforge diagram -w . --type k8s --input k8s/deployment.yaml
repoforge diagram -w . --type openapi --input openapi.json
repoforge diagram -w . --type svg -o architecture.svg
repoforge diagram -w . -o diagrams.md
There is also a repoforge diagrams command that writes a combined markdown file with multiple Mermaid blocks.
Code Analysis Commands
Beyond docs and skills, RepoForge exposes a set of deterministic code-analysis commands (no API key required unless noted). These power refactor planning, review scoping, and codebase archaeology.
# Multi-layer analysis: AST + call graph + CFG + DFG + PDG (needs [intelligence] extra)
repoforge analyze -w .
# Transitive blast radius of a change
repoforge blast-radius -w . --files repoforge/cli.py
# Which tests to run for a change
repoforge change-impact -w .
# Files that always change together
repoforge co-change -w .
# Ownership and bus factor
repoforge ownership -w .
# Potentially dead code via graph analysis
repoforge dead-code -w .
# Program slice for a specific line
repoforge slice -w . --file repoforge/cli.py --line 100
# Decision registry from git history and inline markers
repoforge decisions -w .
# Graph-aware context pruning for LLM review
repoforge context-prune -w . --files repoforge/cli.py
# Semantic code search by behavior
repoforge search -w . "where do we validate the API key"
# Run every analysis check in one shot
repoforge audit -w .
For cross-repo work, repoforge registry maintains a registry of repositories and lets you add, remove, list, build, and search graphs across all of them.
MCP Server
RepoForge ships an MCP (Model Context Protocol) server that exposes its deterministic analysis to MCP-capable agents. It provides these tools:
repoforge_generate_docsrepoforge_scorerepoforge_graphrepoforge_scanrepoforge_drift
plus context resources (generated documentation, LLMs.txt, the code knowledge graph, quality scores, and the public API surface).
Add it to your MCP client config (for example ~/.claude/settings.json):
{
"mcpServers": {
"repoforge": {
"command": "uv",
"args": ["--directory", "/path/to/repoforge", "run", "python", "-m", "repoforge.mcp_server"]
}
}
}
GitHub Pages Deployment
RepoForge ships a docs workflow with safe deploy modes. The default is generate-only. That is the correct default because clobbering an existing Pages site would be amateur-hour behavior.
Deploy modes
| Mode | Behavior |
|---|---|
none |
Generate docs only, do not publish |
auto |
If no live site exists, deploy to Pages root; otherwise deploy to a subpath |
main |
Force deploy to Pages root |
subpath |
Publish under /<prefix>/ on gh-pages while preserving existing files |
Step-by-step: safe GitHub Pages setup
- Copy or reuse
.github/workflows/docs.ymlin your repository. - Create a GitHub PAT with
models:readscope. - Save that PAT as the repository secret
GH_MODELS_TOKEN. - Decide whether you want generate-only, root deploy, or subpath deploy.
- If you want publishing, set repository variables:
REPOFORGE_DOCS_DEPLOY_MODE=autoormainorsubpathREPOFORGE_DOCS_CONFIRM_DEPLOY=true- optional
REPOFORGE_DOCS_SUBPATH_PREFIX=docs
- Check GitHub Pages settings:
- for
main: Pages should use GitHub Actions - for
subpath: Pages should deploy fromgh-pagesbranch at/ (root)
- for
- Push to
main, or triggerworkflow_dispatchwithdeploy_mode,confirm_deploy, andsubpath_prefix. - Open the published URL reported by the workflow summary.
Required Pages settings by mode
deploy_mode |
Deployment mechanism | Required Pages setting |
|---|---|---|
none |
Generate only | Any |
main |
actions/deploy-pages@v4 |
GitHub Actions |
subpath |
peaceiris/actions-gh-pages@v4 with keep_files |
Deploy from branch gh-pages |
auto |
Chooses main or subpath |
Must match actual target |
Example: add docs without breaking an existing Pages site
gh variable set REPOFORGE_DOCS_DEPLOY_MODE --body "auto" --repo youruser/yourrepo
gh variable set REPOFORGE_DOCS_CONFIRM_DEPLOY --body "true" --repo youruser/yourrepo
gh variable set REPOFORGE_DOCS_SUBPATH_PREFIX --body "docs" --repo youruser/yourrepo
gh secret set GH_MODELS_TOKEN --repo youruser/yourrepo
If your repo already serves https://youruser.github.io/yourrepo/, auto mode will prefer a preserved subpath deploy when it detects an existing live site.
Using the reusable GitHub Action
RepoForge also ships a composite action (action.yml). When you reference it from another workflow, pin a released tag instead of @main so downstream workflows stay reproducible:
uses: JNZader/[email protected] # pin a released tag — see the Releases page
Manual Pages flow
Still supported if you do not want the workflow:
repoforge docs -w . -o docs --lang English
git add docs
git commit -m "docs: generate documentation"
git push
Then configure GitHub Pages to serve /docs from main if that is your chosen model.
Monorepo Support
RepoForge auto-detects layers and generates hierarchical docs.
docs/
├── index.md
├── 01-overview.md
├── 03-architecture.md
├── 06b-service-map.md
├── frontend/
│ ├── index.md
│ ├── 05-components.md
│ └── 06-state.md
└── backend/
├── index.md
├── 05-data-models.md
└── 06-api-reference.md
That means you get a global architecture view plus layer-specific chapters instead of one useless, flattened wall of prose.
repoforge.yaml - Per-Repo Config
Create repoforge.yaml in the repo root to override defaults.
# Core identity
project_name: "My App"
project_type: web_service
language: English
# Model selection
model: github/gpt-4o-mini
# If you want per-tier routing, set model: auto and configure tiers
models:
heavy: claude-haiku-3-5
standard: github/gpt-4o-mini
light: github/gpt-4o-mini
# Generation depth
complexity: auto
disclosure: tiered
# Multi-tool output
targets: [claude, opencode, cursor, codex]
generate_hooks: true
generate_plugin: true
# Monorepo layer overrides
layers:
frontend: apps/web
backend: apps/api
shared: packages/shared
# Docs generation defaults
parallel:
max_workers: 4
# Optional chapter-level customization
pages:
- file: "03-architecture.md"
sections:
- type: intro
order: 1
content: "This project follows a layered architecture."
- type: diagram
enabled: true
order: 2
- type: custom
title: "Deployment Notes"
order: 3
content: "Production deploys through GitHub Actions."
# Optional project-type template overrides
templates:
- name: "custom-web-service"
project_type: web_service
chapters:
- file: "08-ops.md"
title: "Operations"
description: "Runbooks, observability, and deployment notes"
prompt_key: dev_guide
order: 80
Config behavior notes
- CLI flags beat config values.
- If
modelis notauto, the same model is used for heavy, standard, and light tiers. - If
model: auto, RepoForge readsmodels.heavy,models.standard, andmodels.light. targetscan be a YAML list and maps directly to multi-tool output.pagescustomizes sections within generated chapters.templateslets you override or extend chapter templates for project types.
Python API
RepoForge is not just a CLI wrapper. You can call the underlying library directly.
from repoforge import (
generate_artifacts,
generate_docs,
export_llm_view,
SkillScorer,
SkillCompressor,
SecurityScanner,
scan_generated_output,
build_graph,
build_graph_from_workspace,
build_graph_v2,
get_blast_radius_v2,
generate_dependency_diagram,
generate_directory_diagram,
generate_call_flow_diagram,
generate_all_diagrams,
Manifest,
ChapterEntry,
load_manifest,
save_manifest,
get_changed_files,
build_chapter_deps,
get_stale_chapters,
DependencyHealthReport,
analyze_dependency_health,
CoverageReport,
auto_detect_and_parse,
render_coverage_markdown,
adapt_for_cursor,
adapt_for_codex,
adapt_for_gemini,
adapt_for_copilot,
resolve_targets,
ALL_TARGETS,
)
# Generate skills and agents
generate_artifacts(
working_dir="/path/to/repo",
output_dir=".claude",
model="github/gpt-4o-mini",
targets="claude,cursor,codex",
complexity="auto",
with_hooks=True,
with_plugin=True,
disclosure="tiered",
compress=True,
)
# Generate documentation
generate_docs(
working_dir="/path/to/repo",
output_dir="docs",
model="claude-haiku-3-5",
language="English",
complexity="auto",
incremental=True,
embed_diagrams=True,
)
# Export repo context
context = export_llm_view(
workspace="/path/to/repo",
output_path="context.md",
max_tokens=100000,
fmt="markdown",
)
# Score skills
scorer = SkillScorer()
scores = scorer.score_directory(".claude/skills")
print(scorer.report(scores, fmt="table"))
# Scan generated output
scan_result = scan_generated_output("/path/to/repo")
scanner = SecurityScanner()
print(scanner.report(scan_result, fmt="table"))
# Graph and blast radius
graph = build_graph_from_workspace("/path/to/repo")
print(graph.to_mermaid())
graph_v2 = build_graph_v2("/path/to/repo")
blast = get_blast_radius_v2(graph_v2, "repoforge/cli.py")
# Diagrams
print(generate_dependency_diagram(graph_v2, max_nodes=40))
# Incremental docs helpers
manifest = load_manifest("docs")
changed = get_changed_files("/path/to/repo")
# Dependency health and coverage
health = analyze_dependency_health("/path/to/repo")
reports = auto_detect_and_parse("/path/to/repo")
markdown = render_coverage_markdown(reports)
API areas worth knowing
- docs generation:
generate_docs - skills generation:
generate_artifacts - repo export:
export_llm_view - scanning and scoring:
SecurityScanner,SkillScorer - graph analysis:
build_graph_from_workspace,build_graph_v2,get_blast_radius_v2 - diagrams:
generate_dependency_diagram,generate_all_diagrams - incremental docs: manifest and stale-chapter helpers
- adapters:
adapt_for_cursor,adapt_for_codex,adapt_for_gemini,adapt_for_copilot
How It Works
1. SCAN (deterministic) Detect stack, layers, files, symbols, and structure
2. PLAN (deterministic) Choose chapters, rank modules, route by complexity
3. GENERATE (LLM) Produce prose for docs or skills
4. ADAPT (deterministic) Convert output to Cursor, Codex, Gemini, Copilot, OpenCode formats
5. ENRICH (deterministic) Add scans, compression, plugin manifests, diagrams, dependency health, coverage
6. WRITE Emit Docsify docs, skills, agents, exports, and reports
Important distinction: the LLM generates text, but the structural analysis, graphing, scoring, scanning, coverage parsing, and diagram generation are deterministic.
Cost
The only paid step is LLM text generation (docs, skills, skills-from-docs, index). Every other command is free to run.
| Model | Cost |
|---|---|
| GitHub Models | Free with the right token setup |
| Groq | Free tier, rate-limited |
| Ollama | Free local runtime |
| Claude Haiku 3.5 / GPT-4o-mini | Low per-run cost |
| Claude Sonnet / larger models | Higher per-run cost |
Actual cost depends on repo size, chapter count, and model pricing. Use --dry-run to see the generation plan before spending tokens.
Supported Stacks
Language-agnostic scanning, with deep AST-level analysis (the analyze/slice pipeline) across 13 languages: Python, TypeScript, JavaScript, Go, Java, Kotlin, Rust, Ruby, PHP, C, C++, C#, and Swift.
The graph extractors (graph --v2, blast radius) cover a core subset — Python, TypeScript, JavaScript, Go, Java, and Rust — plus mixed monorepos.
License
MIT
Inspirations
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found