Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 3 additions & 3 deletions .claude/skills/agentic-contribution-skill/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ Ask concisely, validate before proceeding. Make additional questions if needed t
2. **Add missing sections**: Per DP6/DP7 — Prerequisites, When to Use, Workflow, Common Issues, Dependencies. Keep existing content, add structure around it
3. **Validate naming**: kebab-case, check uniqueness: `test -d <pack>/skills/<name>/`
4. **Place file**: Copy to `<pack>/skills/<skill-name>/SKILL.md`
5. **Update routing**: Add entry to `<pack>/CLAUDE.md` intent routing table
5. **Update routing**: Add entry to `<pack>/AGENTS.md` intent routing table
6. **Show changes**: Present summary of all modifications to user, wait for confirmation

After confirmation → proceed to Phase 5 (Validation & Iteration).
Expand Down Expand Up @@ -242,10 +242,10 @@ mkdir -p <pack>/skills/<skill-name>/docs/
- `docs/common-issues.md` - Detailed troubleshooting with full KB article content
- `docs/examples.md` - Comprehensive usage examples
- `docs/external-resources.md` - Any external docs/links/KB articles mentioned by user
3. **Update <pack>/CLAUDE.md**: Add intent routing entry
3. **Update <pack>/AGENTS.md**: Add intent routing entry
4. **Create <pack>/mcps.json**: If new MCP server needed (use `${ENV_VAR}` format)
5. **Update marketplace/rh-agentic-collection.yml**: If new pack (register pack for Lola installation)
6. **Create pack structure**: If new pack (README.md, CLAUDE.md, skills/ directory)
6. **Create pack structure**: If new pack (README.md, AGENTS.md, skills/ directory)

Generate SKILL.md following the mandatory section template in SKILL_DESIGN_PRINCIPLES.md (already consulted in Phase 3). If SKILL.md becomes too long, move detailed content to `docs/` with references in main file.

Expand Down
6 changes: 3 additions & 3 deletions .claude/skills/agentic-contribution-skill/docs/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ Reading SKILL_DESIGN_PRINCIPLES.md for compliant generation...
Generating skill with production-ready quality...

✅ Generated: rh-virt/skills/vm-backup-create/SKILL.md
✅ Updated: rh-virt/CLAUDE.md (intent routing)
✅ Updated: rh-virt/AGENTS.md (intent routing)

Running validation...

Expand Down Expand Up @@ -182,7 +182,7 @@ Adapting skill:
✅ Fixed section ordering per DP7

Placing file: ocp-admin/skills/cluster-backup/SKILL.md
Updating: ocp-admin/CLAUDE.md (intent routing)
Updating: ocp-admin/AGENTS.md (intent routing)

Summary of changes:
- Frontmatter: added model, color, metadata
Expand All @@ -202,7 +202,7 @@ Running validation...

Files:
✅ ocp-admin/skills/cluster-backup/SKILL.md (210 lines)
✅ ocp-admin/CLAUDE.md (intent routing updated)
✅ ocp-admin/AGENTS.md (intent routing updated)

Ready to commit? (yes/no)
> yes
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/collection-compliance/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ allowed-tools: Read Glob Grep Bash
- Compare each pack's catalog metadata and referenced fragments against golden sources:
- `skills/*/SKILL.md` (names, descriptions, scope, orchestration intent)
- `README.md` (installation, prerequisites, env variables, usage caveats)
- `CLAUDE.md` (persona, routing, global rules, MCP posture)
- `AGENTS.md` (persona, routing, global rules, MCP posture)
- `marketplace/rh-agentic-collection.yml` (module `path`, module name/description/tags)
- Fail review if any of these drift conditions are found:
- Installation steps differ in substance (for example Lola module IDs/paths mismatch)
- Required env vars in `mcps.json` are missing or inconsistent in `deploy_and_use`
- Skill inventory/routing intent in catalog contradicts `skills/` + `CLAUDE.md`
- Skill inventory/routing intent in catalog contradicts `skills/` + `AGENTS.md`
- Fragment prose overstates/understates capabilities versus README/skills
- Remediate via create-collection workflow and then regenerate JSON mirror.

Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/create-collection/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: create-collection
description: |
Author or refresh `<pack>/.catalog/collection.yaml` and related `.catalog/` artifacts from golden sources (SKILL.md, README, CLAUDE.md, Lola marketplace). Use when:
Author or refresh `<pack>/.catalog/collection.yaml` and related `.catalog/` artifacts from golden sources (SKILL.md, README, AGENTS.md, Lola marketplace). Use when:
- Adding a new pack or refreshing the collection catalog for GitHub Pages / tooling
- Aligning catalog narrative, sample workflows, and decision guide with skills on disk
- Preparing a PR after changing skills or marketplace metadata
Expand Down Expand Up @@ -37,7 +37,7 @@ allowed-tools: Read Glob Grep Bash
2. **Read sources in order** (precedence):
- `skills/*/SKILL.md` (frontmatter + body for summaries and orchestration hints)
- `<pack>/README.md`
- `<pack>/CLAUDE.md` (intent routing → `skills_decision_guide` ideas)
- `<pack>/AGENTS.md` (intent routing → `skills_decision_guide` ideas)
- Matching row in `marketplace/rh-agentic-collection.yml` (`path` == pack)

3. **Classify skills** — place each skill in `contents.skills` or `contents.orchestration_skills` using maintainer judgment. Optional hint: `metadata.collection.role: orchestration` in `SKILL.md` frontmatter. Names in YAML **must** match the `skills/<name>/` directory name.
Expand Down
2 changes: 1 addition & 1 deletion .github/gemini-review-prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Check the diff against the project rules injected in PROJECT RULES REFERENCE (fr
- **Security**: no hardcoded credentials, no exposed secret values, `${ENV_VAR}` references only
- **Skill invocation**: use `/skill-name` slash format, never call MCP tools directly
- **Human-in-the-Loop**: required for create/delete/modify/restore/execute ops, not for read-only
- **Pack-persona alignment**: when reviewing new skills, verify that the skill's purpose aligns with the pack's persona (defined in the opening paragraph of the pack's CLAUDE.md). Flag any skill that appears to belong in a different pack
- **Pack-persona alignment**: when reviewing new skills, verify that the skill's purpose aligns with the pack's persona (defined in the opening paragraph of the pack's AGENTS.md). Flag any skill that appears to belong in a different pack
- **New packs**: must add pack name to `PACK_DIRS` in `scripts/validate_structure.py`; `docs/data.json` must NOT be committed
- **Build reminder**: if skills, agents, or `mcps.json` changed, remind author to run `make validate`

Expand Down
4 changes: 2 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!--
TIP: Run /agentic-contribution-skill in Claude Code to create or import skills.
It handles validation, pack selection, and CLAUDE.md routing automatically.
It handles validation, pack selection, and AGENTS.md routing automatically.
See CONTRIBUTING.md for details.
-->

Expand Down Expand Up @@ -39,7 +39,7 @@

<!-- Why does this skill belong in the selected pack? (1-2 sentences) -->

## CLAUDE.md compliance
## AGENTS.md compliance

- [ ] Agents orchestrate skills; no direct MCP/tool calls in agents
- [ ] Skills are single-purpose task executors
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ gh workflow run skill-security-scan.yml -f pr_number=42

### 5. `skill-code-review.yml` - Skill Code Review

**Purpose**: Automated code review using Google Gemini, validating PR diffs against project rules (`CLAUDE.md`, `SKILL_DESIGN_PRINCIPLES.md`, and pack-level `CLAUDE.md` files).
**Purpose**: Automated code review using Google Gemini, validating PR diffs against project rules (`CLAUDE.md`, `SKILL_DESIGN_PRINCIPLES.md`, and pack-level `AGENTS.md` files).

**Trigger methods**:

Expand All @@ -378,7 +378,7 @@ Both `/skill-code-review` and `/skill-security-scan` can be written in **a singl

**What it does**:
1. Fetches the PR diff (truncated to 200KB if larger)
2. Collects project rules: root `CLAUDE.md`, `SKILL_DESIGN_PRINCIPLES.md`, and pack-level `CLAUDE.md` for changed packs
2. Collects project rules: root `CLAUDE.md`, `SKILL_DESIGN_PRINCIPLES.md`, and pack-level `AGENTS.md` for changed packs
3. Sends diff + rules to Gemini with the review prompt (`.github/gemini-review-prompt.md`)
4. Posts review as a collapsible PR comment (updates the same comment on re-runs)

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/skill-code-review.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Skill Code Review Workflow
#
# Automated code review using Google Gemini, validating PRs against project
# rules (CLAUDE.md, SKILL_DESIGN_PRINCIPLES.md, pack-level CLAUDE.md).
# rules (CLAUDE.md, SKILL_DESIGN_PRINCIPLES.md, pack-level AGENTS.md).
#
# Trigger methods:
# 1. PR comment: Maintainer comments "/skill-code-review"
Expand Down Expand Up @@ -180,11 +180,11 @@ jobs:

CHANGED_PACKS=$(grep -oP '^diff --git a/([^/]+)/' /tmp/pr.diff | sort -u | sed 's|diff --git a/||;s|/||')
for pack in $CHANGED_PACKS; do
if [ -f "$pack/CLAUDE.md" ]; then
if [ -f "$pack/AGENTS.md" ]; then
{
echo ""
echo "=== PACK RULES: $pack/CLAUDE.md ==="
cat "$pack/CLAUDE.md"
echo "=== PACK RULES: $pack/AGENTS.md ==="
cat "$pack/AGENTS.md"
} >> /tmp/project_rules.txt
fi
done
Expand Down
8 changes: 4 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Packs follow the [Lola](https://github.com/LobsterTrap/lola) package manager for
Each pack follows this structure:
```
<pack-name>/
├── CLAUDE.md # Claude Code instruction routing (persona, skills, rules)
├── AGENTS.md # Lola AI Context Module instruction routing (persona, skills, rules)
├── README.md # Pack description, persona, target marketplaces
├── mcps.json # MCP server configurations (uses env vars for credentials)
├── .catalog/ # collection.yaml + collection.json (COLLECTION_SPEC.md, catalog/schema.yaml)
Expand Down Expand Up @@ -61,7 +61,7 @@ There are two ways to add skills to this project:

### Repository catalog skills (`.catalog/`)

Packs listed in `union(marketplace/rh-agentic-collection.yml modules[].path, docs/plugins.json keys)` maintain **`<pack>/.catalog/collection.yaml`** (and a deterministic **`collection.json`** mirror). Golden sources remain `SKILL.md`, `README.md`, `CLAUDE.md`, and marketplace YAML—**never** generated from catalog back into those files.
Packs listed in `union(marketplace/rh-agentic-collection.yml modules[].path, docs/plugins.json keys)` maintain **`<pack>/.catalog/collection.yaml`** (and a deterministic **`collection.json`** mirror). Golden sources remain `SKILL.md`, `README.md`, `AGENTS.md`, and marketplace YAML—**never** generated from catalog back into those files.

- **`create-collection`** (`.claude/skills/create-collection/`) — workflow to author or refresh catalog YAML under `.catalog/`.
- **`collection-compliance`** (`.claude/skills/collection-compliance/`) — interpret `make validate-collection-compliance` failures and fix drift.
Expand Down Expand Up @@ -170,7 +170,7 @@ last_updated: YYYY-MM-DD

1. Create pack folder: `<pack-name>/`
2. Add `README.md` with description, persona, marketplaces
3. Add `CLAUDE.md` with persona, skill-first rule, intent routing table, MCP servers, and global rules (see [rh-ai-engineer/CLAUDE.md](rh-ai-engineer/CLAUDE.md) for reference)
3. Add `AGENTS.md` with persona, skill-first rule, intent routing table, MCP servers, and global rules (see [rh-ai-engineer/AGENTS.md](rh-ai-engineer/AGENTS.md) for reference)
4. Create `skills/` directory
5. Add `mcps.json` when the pack integrates MCP servers (use `${VAR}` for secrets)
6. Register the pack in [`marketplace/rh-agentic-collection.yml`](marketplace/rh-agentic-collection.yml) so `lola install -f <pack-name>` can resolve it
Expand All @@ -190,7 +190,7 @@ last_updated: YYYY-MM-DD
- Workflow with precise parameters
- Dependencies declaration
4. Include concrete examples and complete error handling
5. Update the pack's `CLAUDE.md` intent routing table to include the new skill
5. Update the pack's `AGENTS.md` intent routing table to include the new skill
6. Test with `Skill` tool invocation
7. Validate with `./scripts/run-skill-linter.sh skills/<skill-name>/`

Expand Down
12 changes: 6 additions & 6 deletions COLLECTION_SPEC.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Collection catalog specification

This repository uses a **pack-local collection catalog**: curated metadata and summaries live under **`<pack>/.catalog/`** (YAML as the source of record, JSON as a deterministic mirror for consumers that prefer it). **Golden sources** are pack `SKILL.md` files, `README.md`, `CLAUDE.md`, and [`marketplace/rh-agentic-collection.yml`](marketplace/rh-agentic-collection.yml). Catalog files **describe** the collection for tooling and documentation; they are **authored** primarily via the [**create-collection**](.claude/skills/create-collection/SKILL.md) skill (assistant + maintainer + PR review) and must not overwrite READMEs or marketplace YAML.
This repository uses a **pack-local collection catalog**: curated metadata and summaries live under **`<pack>/.catalog/`** (YAML as the source of record, JSON as a deterministic mirror for consumers that prefer it). **Golden sources** are pack `SKILL.md` files, `README.md`, `AGENTS.md`, and [`marketplace/rh-agentic-collection.yml`](marketplace/rh-agentic-collection.yml). Catalog files **describe** the collection for tooling and documentation; they are **authored** primarily via the [**create-collection**](.claude/skills/create-collection/SKILL.md) skill (assistant + maintainer + PR review) and must not overwrite READMEs or marketplace YAML.

**Machine validation:** [`catalog/schema.yaml`](catalog/schema.yaml) (JSON Schema expressed in YAML) and [`scripts/validate_collection_compliance.py`](scripts/validate_collection_compliance.py). These checks are primarily structural and cannot fully evaluate semantic parity with golden-source docs. **Required review gate:** run an AI semantic alignment review (via [`.claude/skills/collection-compliance/SKILL.md`](.claude/skills/collection-compliance/SKILL.md)) to confirm catalog metadata/fragments remain aligned with `SKILL.md`, `README.md`, `CLAUDE.md`, and marketplace module metadata. **Pack list (registry):** union of Lola marketplace `modules[].path` and keys of [`docs/plugins.json`](docs/plugins.json), limited to directories that exist on disk — see [`scripts/pack_registry.py`](scripts/pack_registry.py). **GitHub Pages / bundled catalog listing:** only packs whose **`maturity`** is **`GREEN`** are included in site generation (`docs/data.json`, collection pages, MCP bundle for docs); **`ORANGE`** means the pack remains installable from source/Lola but is not promoted on the public catalog until reviewers raise maturity.
**Machine validation:** [`catalog/schema.yaml`](catalog/schema.yaml) (JSON Schema expressed in YAML) and [`scripts/validate_collection_compliance.py`](scripts/validate_collection_compliance.py). These checks are primarily structural and cannot fully evaluate semantic parity with golden-source docs. **Required review gate:** run an AI semantic alignment review (via [`.claude/skills/collection-compliance/SKILL.md`](.claude/skills/collection-compliance/SKILL.md)) to confirm catalog metadata/fragments remain aligned with `SKILL.md`, `README.md`, `AGENTS.md`, and marketplace module metadata. **Pack list (registry):** union of Lola marketplace `modules[].path` and keys of [`docs/plugins.json`](docs/plugins.json), limited to directories that exist on disk — see [`scripts/pack_registry.py`](scripts/pack_registry.py). **GitHub Pages / bundled catalog listing:** only packs whose **`maturity`** is **`GREEN`** are included in site generation (`docs/data.json`, collection pages, MCP bundle for docs); **`ORANGE`** means the pack remains installable from source/Lola but is not promoted on the public catalog until reviewers raise maturity.

### `maturity` (required)

Expand Down Expand Up @@ -37,7 +37,7 @@ Consumers read **`deploy_and_use`** (resolved from inline YAML or from **`#deplo

**When `<pack>/mcps.json` defines one or more MCP servers**, the prose behind **`deploy_and_use`** (inline or fragment) **must** cover, in substance:

1. **Prerequisites** — Cluster/product access, CLIs, operators, or accounts needed before install, aligned with **`README.md`** / **`CLAUDE.md`**.
1. **Prerequisites** — Cluster/product access, CLIs, operators, or accounts needed before install, aligned with **`README.md`** / **`AGENTS.md`**.
2. **Environment setup** — Example **`export VAR=...`** (or host env equivalent) for **every** environment variable **name** referenced in **`mcps.json`** via **`${VAR}`** in `command`, `args`, or `env`. Variable **names** must match **`mcps.json`** exactly. State that secrets are never committed and must not be echoed in assistant output.
3. **MCP configuration** — Server definitions live in **`mcps.json`** at the pack root; use **`${...}`** placeholders only; briefly note isolation/network/credentials posture if it affects the user (see existing pack fragments).
4. **Installation** — At minimum **Lola** (`lola install -f <pack>`) and the module **`path:`** in **`marketplace/rh-agentic-collection.yml`**. If **`marketplaces`** in the catalog includes **Claude Code** or **Cursor**, include install notes for those hosts (copy the pattern from **`rh-sre/.catalog/deploy_and_use.md`**).
Expand All @@ -54,15 +54,15 @@ When multiple sources could supply the same logical field:

1. **`skills/*/SKILL.md`** (per-skill `name`, `description`, body for `summary_markdown` hints)
2. **`<pack>/README.md`**
3. **`<pack>/CLAUDE.md`** (intent routing for decision-guide hints, personas)
3. **`<pack>/AGENTS.md`** (intent routing for decision-guide hints, personas)

**Lola marketplace:** the module whose `path` equals `<pack>` supplies `version`, module `name`, module `description`, and `tags` for listing-oriented fields. **Never** write back to marketplace YAML from automation or the create-collection workflow.

## Provenance banners

| Artifact | Banner |
|----------|--------|
| `collection.yaml` | Leading `#` comment block: must mention **create-collection** workflow and **golden sources** (SKILL, README, CLAUDE, marketplace). |
| `collection.yaml` | Leading `#` comment block: must mention **create-collection** workflow and **golden sources** (SKILL, README, AGENTS, marketplace). |
| `.catalog/*.md` fragments | Leading HTML `<!-- ... -->` with the same intent. |
| `collection.json` | **No** embedded banner; **CI** regenerates from YAML and fails if the committed file differs. |

Expand All @@ -72,7 +72,7 @@ When multiple sources could supply the same logical field:

## Completeness and CI

All **required** schema fields must be present on merge to `main` (no empty placeholders, no `TODO:` / `TBD` in `sample_workflows.workflow`). Author field values so they stay aligned with **`CLAUDE.md`**, **`mcps.json`**, and **`README.md`** where those sources define behavior; fragment refs follow [External references](#external-references-md-on-the-same-field). CI runs **`make validate`** (includes structure + **collection compliance**).
All **required** schema fields must be present on merge to `main` (no empty placeholders, no `TODO:` / `TBD` in `sample_workflows.workflow`). Author field values so they stay aligned with **`AGENTS.md`**, **`mcps.json`**, and **`README.md`** where those sources define behavior; fragment refs follow [External references](#external-references-md-on-the-same-field). CI runs **`make validate`** (includes structure + **collection compliance**).

## Related

Expand Down
Loading
Loading