Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
ebce94d
feat: add Compass catalog manifests for ocp-admin pack
r2dedios Jul 3, 2026
c008708
feat: add Compass manifests for all 7 agentic packs
r2dedios Jul 6, 2026
f8e52a9
feat: add Domain and System hierarchy for Compass UI navigation
r2dedios Jul 6, 2026
656cfe1
refactor: deduplicate MCP manifests by technology
r2dedios Jul 6, 2026
df03ed4
fix: remove Domain entity from Location targets
r2dedios Jul 6, 2026
3deefb1
feat: add TechDocs annotation to all System manifests
r2dedios Jul 6, 2026
3bf6e63
feat: add rh-agentic-plugins-mcps namespace to MCP manifests
r2dedios Jul 7, 2026
d0532ae
feat: enrich Compass manifests with MCP System, relations, and annota…
r2dedios Jul 7, 2026
d884c97
feat: add TechDocs annotations to MCP manifests
r2dedios Jul 7, 2026
5125295
feat: add skill-to-skill dependsOn relations to Compass manifests
r2dedios Jul 8, 2026
a69a5fd
fix: remove techdocs-ref annotations that break Compass TechDocs builds
r2dedios Jul 8, 2026
7e301fc
refactor: convert pack System entities to AiResource plugins
r2dedios Jul 10, 2026
b913638
refactor: replace spec.system with dependsOn in skill manifests
r2dedios Jul 10, 2026
c6b8d80
feat: unify under single System and restructure Location hierarchy
r2dedios Jul 10, 2026
b476511
docs: add Compass manifest documentation to CLAUDE.md
r2dedios Jul 10, 2026
8f60a02
fix: qualify system reference with default namespace
r2dedios Jul 10, 2026
8c2289e
fix: add explicit hasPart relations to System entity
r2dedios Jul 10, 2026
77c4cb3
revert: remove explicit hasPart relations (not supported by Compass)
r2dedios Jul 10, 2026
386f8a0
refactor: reuse canonical MCP servers for Lightspeed and Security
r2dedios Jul 10, 2026
ac06903
chore: change owner group to ai5-marketplace
r2dedios Jul 13, 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
112 changes: 108 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ Contributors work here to create, improve, and validate skills. An internal proc

```
agentic-plugins/
├── catalog-info.yaml # Root Location — entry point for Compass ingestion
├── system.yaml # System entity (agentic-plugins) — models the whole repo
├── rh-sre/ # Site Reliability Engineering pack (reference implementation)
├── rh-developer/ # Developer tools pack
├── ocp-admin/ # OpenShift administration pack
Expand All @@ -20,6 +22,7 @@ agentic-plugins/
├── rh-ai-engineer/ # AI Engineering pack
├── rh-automation/ # Automation pack
├── rh-support-engineer/ # Support engineering pack
├── mcps/ # MCP server Compass manifests (System + 9 MCPServer entities)
├── eval/ # Skill evaluation reports (report.json + report.md per skill)
├── scripts/ # Validation and CI helper scripts
├── catalog/ # JSON Schema for .catalog/collection.yaml validation
Expand All @@ -37,6 +40,8 @@ Each pack is persona-specific and follows this structure:

```
<pack-name>/
├── catalog-info.yaml # Location entity — indexes this pack's Compass manifests
├── <pack-name>-plugin.yaml # AiResource (type: plugin) — defines the pack itself
├── AGENTS.md # 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)
Expand All @@ -45,14 +50,106 @@ Each pack is persona-specific and follows this structure:
│ └── collection.json # Deterministic JSON mirror of collection.yaml
├── skills/ # Specialized task executors (including orchestration skills)
│ └── <skill>/
│ └── SKILL.md # Skill definition with YAML frontmatter
│ ├── SKILL.md # Skill definition with YAML frontmatter
│ └── catalog-info.yaml # AiResource (type: skill) — Compass manifest
└── docs/ # AI-optimized knowledge base (optional, rh-sre reference)
```

### Relationship with the Catalog

Each pack's `.catalog/` directory contains metadata that describes the pack for the marketplace. This metadata stays here, alongside the skills it describes. The catalog build process reads it from this repo to assemble the unified marketplace. The golden sources are always `SKILL.md`, `AGENTS.md`, `README.md`, and `mcps.json` — `.catalog/` is derived from them, never the other way around.

### Compass / Backstage Manifests

The repository is registered in [Red Hat Compass](https://compass.redhat.com) (internal Backstage instance) through a hierarchy of Backstage entity manifests. All manifests use `apiVersion: backstage.io/v1alpha1` except MCPServer entities which use `apiVersion: mcp/v1beta1`.

#### Entity Kinds

| Kind | Purpose | spec.type | Count |
|------|---------|-----------|-------|
| **Location** | Index that references other manifest files | — | 9 (1 root + 7 packs + 1 mcps) |
| **System** | Top-level grouping for the repository and MCP servers | — | 2 (`agentic-plugins`, `rh-agentic-plugins-mcps`) |
| **AiResource** | Skills and pack definitions | `plugin` (packs) / `skill` (skills) / `rule` | 7 packs + 75 skills |
| **MCPServer** | MCP server configurations | `local` | 9 |

#### Location Hierarchy

Compass ingests a single root Location. Everything else is discovered through delegation:

```
catalog-info.yaml (root Location)
├── system.yaml → System: agentic-plugins
├── ocp-admin/catalog-info.yaml → Location → ocp-admin-plugin.yaml + 7 skills
├── rh-sre/catalog-info.yaml → Location → rh-sre-plugin.yaml + 13 skills
├── rh-virt/catalog-info.yaml → Location → rh-virt-plugin.yaml + 10 skills
├── rh-developer/catalog-info.yaml → Location → rh-developer-plugin.yaml + 17 skills
├── rh-basic/catalog-info.yaml → Location → rh-basic-plugin.yaml + 6 skills
├── rh-ai-engineer/catalog-info.yaml → Location → rh-ai-engineer-plugin.yaml + 11 skills
├── rh-automation/catalog-info.yaml → Location → rh-automation-plugin.yaml + 11 skills
└── mcps/catalog-info.yaml → Location → system.yaml + 9 MCPServers
```

#### Entity Relationships

- **AiResource (plugin) → System**: Each pack plugin has `spec.system: agentic-plugins` (generates `partOf` relation)
- **AiResource (skill) → AiResource (plugin)**: Each skill has `spec.dependsOn: [airesource:<pack>/<pack>]`
- **AiResource (skill) → AiResource (skill)**: Orchestration skills reference other skills via `spec.dependsOn`
- **AiResource → MCPServer**: Skills and plugins reference MCP servers via `spec.dependsOn: [mcpserver:rh-agentic-plugins-mcps/<server>]`
- **MCPServer → System**: Each MCP server has `spec.system: rh-agentic-plugins-mcps`
- **All entities → Group**: `spec.owner: group:redhat/ecosystem-appeng`

#### Namespaces

Each pack uses its own namespace matching the pack name (e.g., `rh-sre`, `ocp-admin`). All MCP servers share the namespace `rh-agentic-plugins-mcps`. The root System `agentic-plugins` uses the `default` namespace.

#### Entity Reference Formats

- Skills: `airesource:<pack-namespace>/<skill-name>`
- Pack plugins: `airesource:<pack-namespace>/<pack-name>`
- MCP servers: `mcpserver:rh-agentic-plugins-mcps/<server-name>`

#### Adding Compass Manifests for a New Skill

When adding a skill, create `skills/<skill-name>/catalog-info.yaml`:
```yaml
apiVersion: backstage.io/v1alpha1
kind: AiResource
metadata:
name: <skill-name>
namespace: <pack-name>
title: <Skill Title>
description: >
<skill description>
labels:
distribution: external
annotations:
backstage.io/source-location: >-
url:https://github.com/RHEcosystemAppEng/agentic-plugins/blob/main/<pack>/skills/<skill>/SKILL.md
tags:
- ai-skill
links:
- url: https://github.com/RHEcosystemAppEng/agentic-plugins
title: Source Repository
icon: github
spec:
type: skill
lifecycle: beta
owner: group:redhat/ecosystem-appeng
disciplines:
- <discipline>
categories:
- <category>
agents:
- claude-code
- opencode
- cursor
dependsOn:
- airesource:<pack-name>/<pack-name>
# Add mcpserver and airesource dependencies as needed
```

Then add the file as a target in the pack's `catalog-info.yaml` Location.

## Contributing

Skills are added directly to this repository, inside an existing pack. The contributor opens a PR, skills are reviewed and merged, and maintainers own them from that point. Use `/agentic-contribution-skill` in Claude Code or follow [CONTRIBUTING.md](CONTRIBUTING.md).
Expand Down Expand Up @@ -165,6 +262,7 @@ last_updated: YYYY-MM-DD

### Files
- Skills: `skills/<skill-name>/SKILL.md` (uppercase SKILL.md)
- Compass manifests: `catalog-info.yaml` (Locations), `<pack-name>-plugin.yaml` (pack AiResource), `system.yaml` (System entities)
- Docs: Lowercase with dashes, categorized by directory

## Development Workflow
Expand All @@ -176,7 +274,11 @@ last_updated: YYYY-MM-DD
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. Update main `README.md` table with link
6. Create Compass manifests:
- `<pack-name>-plugin.yaml` — AiResource with `type: plugin`, `system: agentic-plugins`
- `catalog-info.yaml` — Location targeting the plugin file and all skill catalog-info.yaml files
7. Add the pack's `catalog-info.yaml` as a target in the root `catalog-info.yaml`
8. Update main `README.md` table with link

### Adding a Skill

Expand All @@ -192,8 +294,10 @@ last_updated: YYYY-MM-DD
- Dependencies declaration
4. Include concrete examples and complete error handling
5. Update the pack's `AGENTS.md` intent routing table to include the new skill
6. Test with `Skill` tool invocation
7. Validate with `uv run python scripts/validate_skills_tier1.py <pack>/skills/<skill-name>/SKILL.md`
6. Create `skills/<skill-name>/catalog-info.yaml` Compass manifest (see "Adding Compass Manifests for a New Skill")
7. Add the skill's `catalog-info.yaml` as a target in the pack's `catalog-info.yaml` Location
8. Test with `Skill` tool invocation
9. Validate with `uv run python scripts/validate_skills_tier1.py <pack>/skills/<skill-name>/SKILL.md`

**Collection-Specific Standards:**
- **rh-virt**: Follow `rh-virt/SKILL_TEMPLATE.md` for enhanced quality standards including mandatory Common Issues and Example Usage sections
Expand Down
26 changes: 26 additions & 0 deletions catalog-info.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: agentic-plugins
title: Agentic Plugins
description: >
Root catalog entry point for the agentic-plugins repository.
Points to all agentic pack locations and MCP server manifests
for Compass ingestion.
labels:
agentic-plugins.redhat.com/version: "1.0"
agentic-plugins.redhat.com/repo: "agentic-plugins"
spec:
targets:
# Repository-level system
- ./system.yaml
# Agentic Pack Locations
- ./ocp-admin/catalog-info.yaml
- ./rh-sre/catalog-info.yaml
- ./rh-virt/catalog-info.yaml
- ./rh-developer/catalog-info.yaml
- ./rh-basic/catalog-info.yaml
- ./rh-ai-engineer/catalog-info.yaml
- ./rh-automation/catalog-info.yaml
# MCP Servers Location
- ./mcps/catalog-info.yaml
35 changes: 35 additions & 0 deletions mcps/ai-observability.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: mcp/v1beta1
kind: MCPServer
metadata:
namespace: agentic-plugins
name: ai-observability
title: AI Observability MCP Server
description: >
AI observability MCP server for monitoring and debugging AI/ML model
inference, performance metrics, and serving runtime health on
Red Hat OpenShift AI.
annotations:
backstage.io/source-location: >-
url:https://github.com/RHEcosystemAppEng/agentic-plugins/blob/main/rh-ai-engineer/mcps.json
tags:
- ai
- observability
- machine-learning
- monitoring
- mcp-server
links:
- url: https://github.com/rh-ai-quickstart/ai-observability-summarizer
title: Upstream Repository
icon: github
spec:
type: remote
lifecycle: beta
owner: group:redhat/ai5-marketplace
system: default/agentic-plugins
primitives: []
packages: []
remotes:
- url: ${AI_OBSERVABILITY_MCP_URL}/mcp
environment_variables:
- description: AI observability MCP server base URL
name: AI_OBSERVABILITY_MCP_URL
54 changes: 54 additions & 0 deletions mcps/ansible-automation-platform.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
apiVersion: mcp/v1beta1
kind: MCPServer
metadata:
namespace: agentic-plugins
name: ansible-automation-platform
title: Ansible Automation Platform MCP Server
description: >
Ansible Automation Platform MCP server providing job management,
inventory management, configuration, security compliance, system
monitoring, and user management operations via remote HTTP endpoints.
annotations:
backstage.io/source-location: >-
url:https://github.com/RHEcosystemAppEng/agentic-plugins/blob/main/rh-automation/mcps.json
tags:
- ansible
- aap
- automation
- mcp-server
links:
- url: https://github.com/ansible/aap-mcp-server
title: Upstream Repository
icon: github
spec:
type: remote
lifecycle: beta
owner: group:redhat/ai5-marketplace
system: default/agentic-plugins
primitives: []
packages: []
remotes:
- url: https://${AAP_MCP_SERVER}/job_management/mcp
environment_variables:
- description: AAP MCP server hostname
name: AAP_MCP_SERVER
- url: https://${AAP_MCP_SERVER}/inventory_management/mcp
environment_variables:
- description: AAP MCP server hostname
name: AAP_MCP_SERVER
- url: https://${AAP_MCP_SERVER}/configuration/mcp
environment_variables:
- description: AAP MCP server hostname
name: AAP_MCP_SERVER
- url: https://${AAP_MCP_SERVER}/security_compliance/mcp
environment_variables:
- description: AAP MCP server hostname
name: AAP_MCP_SERVER
- url: https://${AAP_MCP_SERVER}/system_monitoring/mcp
environment_variables:
- description: AAP MCP server hostname
name: AAP_MCP_SERVER
- url: https://${AAP_MCP_SERVER}/user_management/mcp
environment_variables:
- description: AAP MCP server hostname
name: AAP_MCP_SERVER
99 changes: 99 additions & 0 deletions mcps/assisted-installer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
apiVersion: mcp/v1beta1
kind: MCPServer
metadata:
namespace: agentic-plugins
name: assisted-installer
title: OpenShift Assisted Installer MCP Server
description: >
Red Hat Assisted Installer MCP server for OpenShift cluster lifecycle
management. Supports both self-managed clusters (OCP, SNO) via the
Assisted Installer API and managed service clusters (ROSA, ARO, OSD)
via the OCM API. Handles creation, configuration, installation, and
credential retrieval.
annotations:
backstage.io/source-location: >-
url:https://github.com/RHEcosystemAppEng/agentic-plugins/blob/main/ocp-admin/mcps.json
tags:
- openshift
- assisted-installer
- cluster-management
- mcp-server
links:
- url: https://github.com/openshift-assisted/assisted-service-mcp
title: Upstream Repository
icon: github
spec:
type: local
lifecycle: beta
owner: group:redhat/ai5-marketplace
system: default/agentic-plugins
primitives:
- type: tool
name: list_versions
description: List available OpenShift versions for installation.
- type: tool
name: create_cluster
description: Create a new OpenShift cluster definition and infrastructure environment.
- type: tool
name: cluster_info
description: Get comprehensive information about a specific cluster.
- type: tool
name: cluster_events
description: Get chronological events for cluster installation progress and diagnostics.
- type: tool
name: cluster_iso_download_url
description: Get ISO download URL for cluster boot images.
- type: tool
name: install_cluster
description: Start the OpenShift installation process for a prepared cluster.
- type: tool
name: cluster_credentials_download_url
description: Get presigned download URL for cluster credentials after installation.
- type: tool
name: cluster_logs_download_url
description: Get the logs URL for a cluster.
- type: tool
name: list_clusters
description: List all clusters for the current user.
- type: tool
name: set_cluster_platform
description: Set or update the infrastructure platform type for a cluster.
- type: tool
name: set_cluster_ssh_key
description: Set or update the SSH public key for a cluster.
- type: tool
name: set_cluster_vips
description: Configure virtual IP addresses for cluster API and ingress traffic.
- type: tool
name: set_host_role
description: Assign a specific role to a discovered host in the cluster.
- type: tool
name: host_events
description: Get events specific to a particular host for diagnostics.
- type: tool
name: list_operator_bundles
description: List available operator bundles that can be added to clusters.
- type: tool
name: add_operator_bundle_to_cluster
description: Add an operator bundle to be automatically installed with the cluster.
- type: tool
name: list_static_network_config
description: List all static network configurations for cluster hosts.
- type: tool
name: generate_nmstate_yaml
description: Generate an initial NMState YAML for static network configuration.
- type: tool
name: validate_nmstate_yaml
description: Validate an NMState YAML document before applying to hosts.
- type: tool
name: alter_static_network_config_nmstate_for_host
description: Add, replace, or delete static network configuration for a host.
packages:
- type: container
registry_name: quay.io
name: ecosystem-appeng/assisted-service-mcp
version: sha256:e3e84602c6ef2882dc0737e7ad0fafd16d39887dce9f4fb399c470b11158f486
environment_variables:
- description: Red Hat offline token for API authentication
name: OFFLINE_TOKEN
remotes: []
Loading