Skip to content

feat: add skill to author and maintain Compass manifests for agentic packs - #154

Merged
rhartuv merged 10 commits into
RHEcosystemAppEng:mainfrom
rhartuv:feat/compass-manifest-skill
Sep 7, 2026
Merged

feat: add skill to author and maintain Compass manifests for agentic packs#154
rhartuv merged 10 commits into
RHEcosystemAppEng:mainfrom
rhartuv:feat/compass-manifest-skill

Conversation

@rhartuv

@rhartuv rhartuv commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Add compass-manifest-maintenance Claude skill to author and maintain Compass catalog-info.yaml manifests for agentic packs.

  • Workflow for new/updated skills, new packs, and structural drift audits
  • MCP mapping reference (mcps.json keys → owned vs canonical Compass refs)
  • Relationship rules reference (COMPASS-1288, file touch matrix)
  • YAML templates for skill, plugin, and pack Location manifests
  • File-based validation only (no Compass MCP)
  • Cross-links from CLAUDE.md and agentic-contribution-skill

Add missing Compass manifest for ocp-admin/skills/network-policy-architect, closing a pre-existing catalog gap identified during PR #154 review.

  • Create catalog-info.yaml (AiResource, namespace: ai5-marketplace, type: skill)
  • Register in pack Location and declare bidirectional relations (skill ↔ plugin, skill ↔ openshift-mcp-server) per COMPASS-1288

Test plan

  • uv run python scripts/validate_skills_tier1.py .claude/skills/compass-manifest-maintenance/SKILL.md passes
  • Roster audit: rh-sre, rh-virt, rh-basic - no skills missing from Location targets
  • Invoke skill: “Audit rh-sre Compass manifest drift” - expect zero violations
  • Invoke skill: “What files would change if remediation added dependsOn on a new skill?” - expect orchestrator + target skill dependencyOf (+ MCP if applicable)
  • make validate passes

Closes APPENG-6131
Closes APPENG-6002
Implements #151

@rhartuv rhartuv self-assigned this Aug 20, 2026
@rhartuv rhartuv added the skills label Aug 20, 2026
@rhartuv

rhartuv commented Aug 20, 2026

Copy link
Copy Markdown
Contributor Author

Note: ocp-admin/skills/network-policy-architect has no catalog-info.yaml (pre-existing gap). @r2dedios

@r2dedios

Copy link
Copy Markdown
Contributor

True! Good Catch. I'm creating another task for solving this gap and assigning it to you. Good chance for testing the skill you're working on :)

@r2dedios r2dedios linked an issue Aug 20, 2026 that may be closed by this pull request
@rhartuv
rhartuv marked this pull request as ready for review August 20, 2026 09:54
@rhartuv

rhartuv commented Aug 20, 2026

Copy link
Copy Markdown
Contributor Author

True! Good Catch. I'm creating another task for solving this gap and assigning it to you. Good chance for testing the skill you're working on :)

https://redhat.atlassian.net/browse/APPENG-6131

Comment thread .claude/skills/compass-manifest-maintenance/references/mcp-mapping.md Outdated
1. Compare YAML against [assets/](assets/) and a known-good manifest in the same pack.
2. Re-run drift audit (§3).
3. Tier 1 on this skill if edited: `uv run python scripts/validate_skills_tier1.py .claude/skills/compass-manifest-maintenance/SKILL.md`.
4. Post-merge: maintainer may register in Compass UI manually (out of scope for this skill).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't there any drift that we can prevent adding a CI validation script? (we already have many iof them in the scripts/ folder)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense. I figured this was out of scope for this PR since it's just the skill and docs, but I can add a scripts/validate_compass_manifests.py script for it. Let me know if you'd rather I include it here or open a separate ticket.

Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md Outdated
operetz-rh
operetz-rh previously approved these changes Sep 1, 2026

@operetz-rh operetz-rh left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@r2dedios r2dedios left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work, just a few tiny things to review before merging

Additionally, what was the result of @dmartinol's feedback? Did we created another thicket for solving what he identified? If not, I think we can include that fix on this PR too

Comment thread CLAUDE.md Outdated

## COMPASS-1288 bidirectional policy

Compass does **not** auto-generate inverse relations for custom kinds (`AiResource`, `MCPServer`). Every relationship must be declared on **both sides**:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is correct for now, However we are expecting Compass team to solve this issue on the future. That means we should revisit this once it is fixed.


**Exception:** Plugin and owned MCP → System use `spec.system: default/agentic-plugins`. Compass generates `partOf` automatically. Do **not** add `dependsOn: system:default/agentic-plugins` on plugins (redundant).

## What does NOT work for custom kinds

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here. This should be fixed in the near future

Comment thread CLAUDE.md Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This info is duplicated on https://github.com/RHEcosystemAppEng/agentic-plugins/pull/154/changes#diff-ae021437cbb63300a76aeb1d8359a7a86ad0d2839100ffc602026e4141bbb582R7-R15

It might make sense to remove from CLAUDE.md and left in only in the references/relationship-rules.md


6. **Reconcile plugin MCP deps** — plugin `dependsOn` = union of all `mcpserver:` refs across pack skill manifests.

### 2. Add a new pack (Compass registration)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### 2. Add a new pack (Compass registration)
### 2. Register a new pack in Compass

I would change this title to avoid confussions between creating a new agentic-plugin and docuemnting a plugin for registering it in Compass

@rhartuv

rhartuv commented Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

Good work, just a few tiny things to review before merging

Additionally, what was the result of @dmartinol's feedback? Did we created another thicket for solving what he identified? If not, I think we can include that fix on this PR too

@r2dedios Thanks.
@dmartinol hasn't decided on this yet. What's your recommendation?

@r2dedios

r2dedios commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Good work, just a few tiny things to review before merging
Additionally, what was the result of @dmartinol's feedback? Did we created another thicket for solving what he identified? If not, I think we can include that fix on this PR too

@r2dedios Thanks. @dmartinol hasn't decided on this yet. What's your recommendation?

I agree with @dmartinol about the validation script. Appart of more effiente usage of the LLM, there would be a standard procedure (script) to evaluate the Compass Manifests. I also noticed the Compass MCP server has a tool for validating Compass entities, so maybe makes more sense to use it instead of another script

@rhartuv

rhartuv commented Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

Good work, just a few tiny things to review before merging
Additionally, what was the result of @dmartinol's feedback? Did we created another thicket for solving what he identified? If not, I think we can include that fix on this PR too

@r2dedios Thanks. @dmartinol hasn't decided on this yet. What's your recommendation?

I agree with @dmartinol about the validation script. Appart of more effiente usage of the LLM, there would be a standard procedure (script) to evaluate the Compass Manifests. I also noticed the Compass MCP server has a tool for validating Compass entities, so maybe makes more sense to use it instead of another script

Agree. Added scripts/validate_compass_manifests.py and hooked it into make validate, make validate-structure, and Tier 2 CI.

@rhartuv
rhartuv requested a review from r2dedios September 3, 2026 07:47

@RedTanny RedTanny left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not hardcode lifecycle:

if a New skill in an existing pack:
you can take as default value the spec.lifecycle from the parent *-plugin.yaml.
human in the loop --> you can ask if he wants to change for example
if plugin is beta so he can downgrade to development ( you cannot have a skill with beta value and plugin with development )

New pack: set the default level to development

@rhartuv

rhartuv commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

Do not hardcode lifecycle:

if a New skill in an existing pack: you can take as default value the spec.lifecycle from the parent *-plugin.yaml. human in the loop --> you can ask if he wants to change for example if plugin is beta so he can downgrade to development ( you cannot have a skill with beta value and plugin with development )

New pack: set the default level to development

@RedTanny Done. Thank you

@rhartuv
rhartuv requested a review from RedTanny September 7, 2026 07:05
@rhartuv

rhartuv commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

@r2dedios @RedTanny PTAL, Thank you

r2dedios
r2dedios previously approved these changes Sep 7, 2026

@r2dedios r2dedios left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a tiny fix to apply. The rest looks great.

icon: github
spec:
type: skill
lifecycle: beta

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
lifecycle: beta
lifecycle: development

Since the plugin lifecycle is development, this skills should have the same value

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right! Thanks. A new ticket was opened specifically to handle this, and I'll take care of it.
Jira

@r2dedios r2dedios left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!. Let's wait for @RedTanny feedbackt oo

@RedTanny RedTanny left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

title: Source Repository
icon: github
spec:
type: plugin

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New skill in an existing pack: copy spec.lifecycle from the parent *-plugin.yaml. Do not hardcode lifecycle: beta in assets/skill-catalog-info.yaml, the compass-manifest-maintenance workflow, or CLAUDE.md.

New pack: assets/plugin-catalog-info.yaml and the skill template must use the same default (development is the safer new-pack value).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RedTanny I will take care of it in a separate PR for that ticket: https://redhat.atlassian.net/browse/APPENG-6307
Ok ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rhartuv
sure no problem

@rhartuv
rhartuv merged commit 8a0b1d5 into RHEcosystemAppEng:main Sep 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create a skill to automate Compass catalog-info.yaml generation

5 participants