Pull Request Dashboard (PR Dashboard) is a core module in the AOSSIE Skills Ecosystem. It is a local-first analysis tool designed to help project maintainers review incoming pull requests, identify semantic conflicts, analyze architectural gaps, and determine optimal merge sequences.
By querying the GitHub API via the GitHub CLI (gh), fetching PR diffs and automated AI Bot Reviewer (e.g., CodeRabbit, Devin) walkthrough summaries, loading codebase context (context.md), embedding and clustering PRs with SentenceTransformer using all-MiniLM-L6-v2 in grouping.py, and calling local Ollama models for deeper group and isolated-PR analyses, the tool generates a visual Conflict Directed Acyclic Graph (DAG) detailing merge reasoning and post-merge impacts.
The PR Dashboard acts as the primary code quality and merge analysis layer for maintainers:
flowchart TD
%% Nodes
SC["<b><font color='#F59E0B'>Skills Context</font></b><br><br>Skills Core (Shared Org wide skills)<br>per-repo skills (AGENTS.md + skills/ directory)"]
Contributors["Contributors"]
Maintainers["Maintainers"]
SB["<b><font color='#F59E0B'>Skill Bot</font></b> (Discord Assistant)<br><br>Answers contributor questions<br>using asked question-oriented project skills ➔ LLM fallback"]
PD["<b><font color='#F59E0B'>PR Dashboard</font></b> (Merge Analysis)<br><br>Clusters PRs semantically, injects skills & communication(e.g. Discord) context.<br>Extracts PR changes briefly & open questions for maintainers to review.<br>Prepares Conflict DAG with merge reasoning & post-merge impact."]
SU["<b><font color='#F59E0B'>Skill Updater</font></b> (Knowledge Evolution)<br><br>Collects all logs from different components.<br>Updates relevant repo-skills by asking maintainers or admins<br>to review and approve generated updates."]
%% Edges
%% Contributor Flow
Contributors -- "Ask Questions in Discord" --> SB
SC -- "Powers answers" --> SB
SB -- "If gaps found, send logs for maintainers<br>to answer and update project skill via updater." --> SU
%% Maintainer Flow
Maintainers -- "Reviews PRs<br>with" --> PD
SC -- "Powers reasoning" --> PD
PD -- "If gaps found, send logs for maintainers<br>to answer and update those project skills via updater." --> SU
%% Feedback Loop & Sync
Maintainers -- "Collects communication platform (e.g. Discord) discussions, filters important<br>topics by giving that repo-skills context, and sends suggested updates to maintainers<br>to reformat or modify as needed (maintainer approve)" --> SU
SU -- "PR Skill Updater bot opens PR for gap skills and<br>recently merged PR context (maintainers approve)" --> SC
%% Style Classes
classDef yellowBox fill:#1E293B,stroke:#F59E0B,stroke-width:2px,color:#F8FAFC;
classDef purpleBox fill:#1E293B,stroke:#8B5CF6,stroke-width:2px,color:#F8FAFC;
class SC,SB,PD,SU yellowBox;
class Contributors,Maintainers purpleBox;
- Pull Request Fetching: The dashboard connects to GitHub via
ghto retrieve open/closed PRs, modified files, and AI Bot Reviewer (e.g., CodeRabbit, Devin) summaries. - Context-Grounded Reasoning: It reads the local repository context (
context.md) and the global/per-repo skills from the Skills Core to evaluate PRs against the project rules. - DAG Generation: It renders an interactive Conflict DAG illustrating PR dependency relationships, suggested merge sequences, and post-merge impact.
- Gap Logging: If the dashboard identifies any architectural gaps or changes not covered in the current skills context, it logs them to
gap_log.jsonto be consumed by the Skill Updater.
- Semantic PR Clustering: Attributes semantic PR embedding and clustering to SentenceTransformer using
all-MiniLM-L6-v2ingrouping.py, while local Ollama models are responsible for deeper group and isolated-PR analyses. - Conflict DAG Visualization: Renders an interactive HTML report (
conflicts_tree.html) detailing overlapping file conflicts, recommended merge sequences, and post-merge architectural impacts. - Isolated PR Filtering: Identifies non-conflicting, independent PRs and lists them in
isolated_prs.htmlfor immediate, safe merging. - Local-First Analysis: Executes all clustering, evaluation, and DAG reasoning locally through Ollama, ensuring data privacy with zero external API costs.
- Feedback Loop Gap Signaling: Emits gap events for the Skill Updater pipeline when developer PRs introduce architectural changes that are not documented in the skills.
- CLI Integration: GitHub CLI (
gh) - Embeddings & Clustering: sentence-transformers (
all-MiniLM-L6-v2) - Local Model Server: Ollama (
qwen2.5:7b/llama3) - Programming Language: Python 3.10+
- Report Rendering: HTML5, Vanilla CSS, Tailwind CSS
- Skills Core Repository
- Interactive Simulation (Live Demo: demo)
- Skill Bot Assistant
- Skill Updater Pipeline
- Python 3.10+
- Ollama installed and running on your local machine.
- GitHub CLI (
gh) installed and authenticated with your GitHub account:gh auth login
git clone https://github.com/AOSSIE-Org/PullRequestDashboard.git
cd PullRequestDashboardWindows (PowerShell):
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txtmacOS / Linux:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtEnsure you have a context.md file detailing the repository architecture inside the dashboard folder (a default context file for MiniChain is provided as context.md).
All configuration settings are defined at the top of each script file—no .env file is required.
-
github.py— Set the target repository:REPO = "StabilityNexus/MiniChain" # ← Change to your repository
-
grouping.py— Tune the clustering sensitivity:THRESHOLD = 0.55 # Lower value = more groups, higher value = fewer but tighter groups MIN_SIZE = 2 # Minimum PRs needed to form a conflict group
-
ollama.py— Choose the local LLM model:OLLAMA_MODEL = "qwen2.5:7b" # Specify the Ollama model to use
-
Switch to Production Mode (Open PRs) in
github.py:By default, the dashboard runs on recent closed PRs for testing. Switch to open PRs for production:
# Comment out the test line, and uncomment the production line: # prs = gh(f"repos/{REPO}/pulls?state=closed&per_page=10&sort=updated&direction=desc") return gh_paginate(f"repos/{REPO}/pulls?state=open&per_page=100")
Execute the entry point script:
python main.pyThe script will fetch the PRs, cluster them, generate the reports, and automatically open them in your default web browser:
conflicts_tree.html(Conflict DAG & merge sequencing)isolated_prs.html(Independent, ready-to-merge PRs)
The long-term development of Pull Request Dashboard is divided into several milestones outlined in the roadmap.md.
- Context-Grounded: Always evaluate PRs against the project description, architectural rules, and Skills Core.
- Merge Safety First: Prioritize highlighting overlapping modifications and architectural conflict risks.
- Local-First: Keep codebase analysis, clustering, and reasoning offline using local Ollama models.
- Actionable Recommendations: Every conflict group must present a suggested merge order with clear reasoning.
⭐ Don't forget to star this repository if you find it useful! ⭐
Thank you for considering contributing to this project! Contributions are highly appreciated and welcomed. To ensure smooth collaboration, please refer to our Contribution Guidelines.
- Karun Pacholi - Lead Developer & Architect
- zahnentferner - admin & reviewer
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
Thanks a lot for spending your time helping TODO grow. Keep rocking 🥂
© 2026 AOSSIE