Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
8be20ae
updated skill pack repos to use agentic-collections-skils
dmartinol Jun 26, 2026
0ff6a41
removed catalog schema
dmartinol Jun 26, 2026
57d1795
python project files
dmartinol Jun 26, 2026
c7da1c7
CI workflows
dmartinol Jun 26, 2026
5d73c49
Add .serena/ to .gitignore for Serena AI assistant workspace
dmartinol Jun 26, 2026
f6ad1e9
Refactor rh-agentic-collection.yml to remove commented-out federated …
dmartinol Jun 26, 2026
a905f43
initial review of document generation to support external repos
dmartinol Jun 26, 2026
f5c20b9
removed icons.json and replaced with new, unmanaged field in marketpl…
dmartinol Jun 26, 2026
0ff5f69
Update README.md to reflect removal of style-tokens.json and adjust v…
dmartinol Jun 26, 2026
ee48f9a
First draft of open items doc
dmartinol Jun 26, 2026
8e6b482
Remove COLLECTION_SPEC.md and update references in README.md and CLAU…
dmartinol Jun 26, 2026
daa5de5
Remove plugins.json and update related documentation to reflect the s…
dmartinol Jun 26, 2026
7110ba7
Update OPEN_ITEMS.md to include new entries for collecting `title` an…
dmartinol Jun 26, 2026
b9a7a68
Update OPEN_ITEMS.md to include a reference to the new mcp.json file …
dmartinol Jun 26, 2026
5b3e0cc
Filter federated packs by maturity from catalog bundle
dmartinol Jun 26, 2026
78ef2e4
Remove dead local-pack scanning code; marketplace is sole source of t…
dmartinol Jun 26, 2026
ae579b2
Replace CLAUDE.md with AGENTS.md; align with actual repo purpose
dmartinol Jun 26, 2026
808578a
Enhance pack card evaluation logic to include skill checks
dmartinol Jun 26, 2026
bebf4e1
Refactor skill parsing logic in generate_pack_data.py
dmartinol Jun 26, 2026
3b788b9
review license link generation
dmartinol Jun 26, 2026
7bf794b
Update OPEN_ITEMS.md and README.md to enhance documentation
dmartinol Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Deploy GitHub Pages

on:
workflow_dispatch:
push:
branches: [main]
paths:
- 'marketplace/**'
- 'catalog/**'
- 'scripts/**'
- 'docs/**'
- '.github/workflows/deploy-pages.yml'

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh

- name: Install dependencies and generate documentation
run: |
source $HOME/.cargo/env
make install
make generate

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'docs'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
26 changes: 26 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Validate Catalog

on:
pull_request:
push:
branches: [main]

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh

- name: Install dependencies and verify site generation
run: |
source $HOME/.cargo/env
make install
make test
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ config.local.*
# Lola package manager cache
.lola/

# Serena AI assistant workspace
.serena/

# Generated Documentation
docs/data.json
reports/
Expand Down
91 changes: 91 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# AGENTS.md

Guidance for AI coding assistants working in this repository.

## What This Repository Is

This is the **catalog and marketplace** for Red Hat agentic collections. It serves two purposes:

1. **Lola marketplace** — `marketplace/rh-agentic-collection.yml` declares which skill packs are available and where to fetch them. Users install packs with `lola install -f <pack-name>`.
2. **agentskills.io website** — the `docs/` directory is the static site. The scripts in `scripts/` build it by cloning each pack's source repo and extracting metadata.

**No skills are authored or stored here.** Skills live in their own source repos (e.g., [agentic-collections-skills](https://github.com/RHEcosystemAppEng/agentic-collections-skills)). This repo only aggregates and presents them.

## Repository Structure

```
agentic-collections-catalog/
├── marketplace/
│ └── rh-agentic-collection.yml # Single source of truth for pack discovery
├── catalog/
│ └── schema.yaml # JSON Schema for .catalog/collection.yaml files in skills repos
├── docs/ # Static site (agentskills.io)
│ ├── index.html # SPA entry point
│ ├── app.js # Rendering and search logic (XSS-safe, no innerHTML)
│ ├── styles.css # Red Hat-themed styling
│ ├── data.json # Generated — do not edit manually
│ ├── mcp.json # MCP server metadata — do not edit manually
│ └── collections/ # Generated per-pack HTML pages
└── scripts/ # Build and verification scripts
```

## How the Build Works

`make generate` runs `scripts/build_website.py`, which:

1. Reads `marketplace/rh-agentic-collection.yml` to get the list of packs
2. For each pack: `git clone` its source repo into a temp directory
3. Reads `.catalog/collection.yaml` (if present) for metadata and maturity
4. Skips packs whose catalog declares a non-GREEN maturity; absent catalog → assumed GREEN
5. Reads `skills/*/SKILL.md` frontmatter, README, and `mcps.json` from the clone
6. Writes `docs/data.json` and generates `docs/collections/<pack>.html`

The clones are ephemeral (deleted after each build). Nothing from external repos is committed here.

## Marketplace File

`marketplace/rh-agentic-collection.yml` is the **only** place that controls which packs appear on the site. Each module entry carries:

| Field | Required | Purpose |
|-------|----------|---------|
| `name` | yes | Pack identifier (used in URLs and filenames) |
| `repository` | yes | Git URL to clone |
| `path` | yes | Subdirectory within the repo (`.` for root) |
| `version` | yes | Displayed version |
| `description` | yes | Short description shown on cards |
| `title` | yes | Display name shown on cards |
| `icon` | recommended | Emoji or HTTPS URL to an image |
| `tags` | optional | Filter tags |
| `ref` | optional | 40-char commit SHA to pin; absent = main branch |

Do not add packs to `docs/data.json` or any other file directly. Add them to the marketplace YAML.

## Scripts

| Script | Purpose | Invoked by |
|--------|---------|------------|
| `build_website.py` | Orchestrates the full build | `make generate` |
| `generate_pack_data.py` | Clones repos, extracts pack/skill metadata | build |
| `generate_mcp_data.py` | Extracts MCP server configs from `mcps.json` | build |
| `generate_collection_pages.py` | Renders per-pack HTML pages | build |
| `catalog_site_bundle.py` | Resolves `.catalog/` fragment `#ref` pointers | build |
| `eval_site_enrichment.py` | Attaches ABEval report summaries to skills | build |
| `pack_registry.py` | Marketplace-driven pack discovery utilities | build |
| `check_site.py` | Interactive manual verification of `data.json` | manual |
| `test_local.sh` | Automated validation (JSON, HTML, XSS, credentials) | `make test` |
| `validate_mcp_types.py` | Sanity-checks MCP server type parsing | manual |

## Key Rules

- **Marketplace is the single source of truth.** Do not add packs, icons, or titles anywhere else.
- **Generated files are read-only.** `docs/data.json`, `docs/mcp.json`, and `docs/collections/*.html` are rebuilt on every run — manual edits will be overwritten.
- **No skills development here.** To create or modify skills, work in the appropriate skills source repo.
- **Schema changes need coordination.** Updating `catalog/schema.yaml` requires matching changes in all skills repos' `.catalog/` directories.
- **Security.** All DOM manipulation in `app.js` uses `textContent` and `createElement` — never `innerHTML` with external data.

## CI

| Workflow | Trigger | What it does |
|----------|---------|-------------|
| `validate.yml` | Push / PR | Runs `make test` (→ `test_local.sh`) |
| `deploy-pages.yml` | Push to main | Runs `make generate`, deploys `docs/` to GitHub Pages |
110 changes: 0 additions & 110 deletions CLAUDE.md

This file was deleted.

Loading
Loading