Ecosystem directory for Bub plugins, skills, distributions, and friends.
Live athub.bub.build
hub/
├── build.py # Static site generator (Jinja2)
├── data.yml # All ecosystem items (add new entries here)
├── logos/ # Logo assets (copied to dist/logos/ on build)
├── templates/
│ ├── base.html # Base layout
│ ├── index.html # Main page template
│ ├── style.css # Terminal-style CSS (dark theme)
│ ├── hub.js # Client-side filtering & search
│ └── partials/
│ └── card.html # Card component
├── dist/ # Generated output
├── pyproject.toml # Project metadata & dependencies
└── uv.lock
# Install dependencies
uv sync
# Build the site
uv run python build.pyEdit data.yml. All items share a unified schema:
categories:
- name: Plugins # or Skills, Distributions, Friendssubcategories:
- name: Channels # grouping within the categoryitems:
- name: my-plugindescription: What it does.kind: plugin # plugin | skill | distribution | friendlogo: my-plugin.svghomepage_url: https://...repo_url: https://github.com/...install: "uv add my-plugin --git https://github.com/..."| Field | Type | Required | Description |
|---|---|---|---|
name | str | ✅ | Display name |
description | str | ✅ | One-line summary |
kind | enum | ✅ | plugin | skill | distribution | friend |
logo | str | Filename in logos/ | |
homepage_url | str | Primary link | |
repo_url | str | Source repository | |
docs_url | str | Documentation URL | |
author | str | Author or organization | |
license | str | SPDX identifier | |
install | str | Install command | |
builtin | bool | Shipped with Bub core | |
source_path | str | Path within a monorepo (repo link renders as repo_url/tree/main/{source_path}) | |
skill_file | str | URL to SKILL.md | |
bundled_plugins | list | [{name, url}] for distributions (max 3 shown) |
Build validates required fields, kind enum, and rejects unknown fields.