Skip to content

AOSSIE-Org/SkillBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

46 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AOSSIE AOSSIE Skill Bot logo

Β 

Static Badge

Telegram Badge Β Β  X (formerly Twitter) Badge Β Β  Discord Badge Β Β  LinkedIn Badge Β Β  Youtube Badge

OpenSSF Scorecard

Best Practices


AOSSIE Skill Bot

Local-First Discord Assistant for Contributor Support and Repository-Aware Q&A

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.


πŸ—οΈ Role in the Skills Ecosystem

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;
Loading
  1. Contributor Q&A: A contributor posts a query in a designated channel or tags the bot.
  2. 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.
  3. 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.json and 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).
  4. Knowledge Capture Loop: The Skill Updater parses gap_log.json to prioritize and also extract discussions from Discord, automatically generating PR updates to keep the repository's skills core aligned with recent development decisions.

πŸš€ Key Features

  • 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.2 or qwen2.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.

πŸ’» Tech Stack

  • 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)

πŸ”— Repository Links

This is part of skills ecosystem.

  1. Skills Core Repository
  2. Interactive Simulation (Live Demo: demo)
  3. Pull Request Dashboard
  4. Skill Updater Pipeline

🏁 Getting Started

Prerequisites

  • 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)
  • Discord Bot Token with Message Content and Guild Members intents enabled.

Installation & Run

1. Clone the Repository

git clone https://github.com/AOSSIE-Org/SkillBot.git
cd SkillBot

2. Set Up Virtual Environment & Dependencies

Windows (PowerShell):

python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt

macOS / Linux:

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

3. Configure Environment Variables

Copy the .env.example file to .env:

cp .env.example .env

Fill in the configuration details:

DISCORD_TOKEN=your_discord_bot_token
DISCORD_CHANNEL_ID=your_target_channel_id
OLLAMA_MODEL=llama3.2
SKILL_FILE_PATH=.clinerules

4. Launching the Bot

Start 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).


πŸ—ΊοΈ Roadmap & Evolution

The long-term development of Skill Bot is divided into several milestones outlined in the roadmap.md.


πŸ™Œ Contributing

⭐ 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.


✨ Maintainers

TODO: Add maintainer information


πŸ“ License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.


πŸ’ͺ Thanks To All Contributors

Thanks a lot for spending your time helping TODO grow. Keep rocking πŸ₯‚

Contributors

Β© 2026 AOSSIE

About

Local Discord assistant that answers developer queries using repo-specific skills and logs knowledge gaps for maintainers.

Topics

Resources

License

Code of conduct

Contributing

Stars

5 stars

Watchers

0 watching

Forks

Contributors

Generated from AOSSIE-Org/Template-Repo