1---2name: backstage-catalog-33description: Use when editing Backstage catalog entities, ownership, relations, annotations, or discovery examples.4---56<!-- Generated from harness/github-copilot/plugins/open-horizons-platform/instructions/backstage-catalog.instructions.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->78# Backstage Software Catalog910## Conventions1112- Declare `apiVersion`, `kind`, kebab-case `metadata.name`, a useful description, and a resolvable `spec.owner`.13- Use lowercase kebab-case tags and stable namespaces; avoid encoding environments or mutable deployment details in entity identity.14- Express relationships with supported entity references and verify referenced owners, systems, components, APIs, resources, and locations exist.15- Keep `github.com/project-slug`, source locations, and TechDocs annotations pointed at real repositories and tracked paths.16- Use `ohorizons.ai/*` only for Open Horizons agent metadata; do not invent competing top-level fields.17- Keep examples ingestible and sanitized because templates and local catalog bootstrap consume them.18- Avoid duplicate entity triplets of `kind`, `namespace`, and `name`.1920## Verification2122- Catalog validation resolves owners and relation targets.23- Location targets and source annotations exist.24- Entity examples contain no credentials, tenant IDs, or customer-specific values.2526## Do / Do Not2728| Do | Do not |29| --- | --- |30| Preserve stable entity identity, ownership, and resolvable relations. | Create duplicate entity triplets or dangling references. |31| Validate locations and sanitize examples. | Put credentials, tenant IDs, or customer data in catalog files. |3233## Checklist Before Opening a PR3435- [ ] The change matches this instruction's `applyTo` scope.36- [ ] Owners, relations, locations, and source annotations resolve.37- [ ] Entity identity remains unique and stable.38- [ ] Catalog validation passes and examples are sanitized.39- [ ] No unrelated edits or unresolved placeholders remain.