Β
Skill Bot is a core component of the AOSSIE Skills Ecosystem. It serves as a local-first, context-aware Discord bot designed to assist open-source contributors with onboarding, setup guidance, error debugging, and repository-specific queries.
By analyzing user queries, dynamically detecting the target repository within the organization, loading rules from AGENTS.md, and executing local inference via Ollama, Skill Bot delivers precise, grounded, skills-first answers in dedicated thread environments.
Skill Bot acts as the primary user-facing assistant in the skills feedback loop:
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;
- Contributor Q&A: A contributor posts a query in a designated channel or tags the bot.
- Context Retrieval: Skill Bot searches the global
.clinerules, dynamically routes queries to that repository's skills (.agents/+AGENTS.md) according to the user query, and provides this context to the local LLM to answer the user. - LLM Fallback & Gap Signaling: If matching context is found in the repository rules, the query is answered by the local LLM. If there is a lack of necessary details, the query is written to
gap_log.jsonand the bot notifies the user that the query is currently out of context and maintainers will be notified. These gap signals are later consumed by maintainers in Skill Updater to update the skills context(skills core + that repo's skill). - Knowledge Capture Loop: The Skill Updater parses
gap_log.jsonto prioritize and also extract discussions from Discord, automatically generating PR updates to keep the repository's skills core aligned with recent development decisions.
- Dynamic Repository Routing: Dynamically discovers adjacent repositories in the workspace, detects the target project using query keywords or local LLM classification, and applies the repository's custom context (
AGENTS.md/.clinerules). - Thread-per-Query Continuity: Every new user interaction spawns a dedicated Discord thread. This prevents main channel pollution, keeps the conversation focused, and preserves thread-scoped history.
- Mentor-Style Clarification: Asks focused clarifying questions for ambiguous queries before giving a full answer, improving resolution rates and minimizing LLM noise.
- Fully Local Inference: Relies entirely on a local Ollama instance (such as
llama3.2orqwen2.5:7b), ensuring all contributor data remains local and avoiding external cloud API costs. - Startup Backlog Recovery: Scans the channel history upon startup to process any user queries that were posted while the bot was offline.
- Structured Gap Logging: Emits structured knowledge gap events (
gap_log.json) recording queries that couldn't be answered using local rules, feeding into the automated updater pipeline.
- Discord Bot Framework: Discord.py (with Message Content Intent enabled)
- Local Model Server: Ollama
- Programming Language: Python 3.10+
- HTTP Client: httpx (async requests to Ollama API)
- Configuration & Environment: dotenv (dotenv-based configuration)
This is part of skills ecosystem.
- Skills Core Repository
- Interactive Simulation (Live Demo: demo)
- Pull Request Dashboard
- Skill Updater Pipeline
- Python 3.10+
- Ollama installed and running on your local machine:
- Pull the default model:
ollama pull llama3.2(or the model configured in.env)
- Pull the default model:
- Discord Bot Token with
Message ContentandGuild Membersintents enabled.
git clone https://github.com/AOSSIE-Org/SkillBot.git
cd SkillBotWindows (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.txtCopy the .env.example file to .env:
cp .env.example .envFill in the configuration details:
DISCORD_TOKEN=your_discord_bot_token
DISCORD_CHANNEL_ID=your_target_channel_id
OLLAMA_MODEL=llama3.2
SKILL_FILE_PATH=.clinerulesStart the bot using Python:
python bot.py(On Windows, you can also use start_bot_hidden.vbs to execute the bot silently in the background).
The long-term development of Skill Bot is divided into several milestones outlined in the roadmap.md.
β 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.
TODO: Add maintainer information
- 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
