From 07a2ece6714c8b6346fd0efac08317c3c4fde30c Mon Sep 17 00:00:00 2001 From: benjdlambert Date: Mon, 18 May 2026 14:16:02 +0200 Subject: [PATCH] feat: install AIResource module in example backend with test entities Signed-off-by: benjdlambert --- app-config.yaml | 1 + packages/backend/package.json | 1 + packages/backend/src/index.ts | 3 +++ .../ai-resources/frontend-design-skill.yaml | 18 ++++++++++++++++++ .../ai-resources/use-internal-apis-rule.yaml | 10 ++++++++++ .../examples/all-ai-resources.yaml | 9 +++++++++ packages/catalog-model/examples/all.yaml | 1 + yarn.lock | 3 ++- 8 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 packages/catalog-model/examples/ai-resources/frontend-design-skill.yaml create mode 100644 packages/catalog-model/examples/ai-resources/use-internal-apis-rule.yaml create mode 100644 packages/catalog-model/examples/all-ai-resources.yaml diff --git a/app-config.yaml b/app-config.yaml index 11f812bb3d..f586539fd5 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -287,6 +287,7 @@ catalog: pullRequestBranchName: backstage-integration rules: - allow: + - AIResource - Component - API - Resource diff --git a/packages/backend/package.json b/packages/backend/package.json index a7fc1b37e9..1ebdb39406 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -40,6 +40,7 @@ "@backstage/plugin-auth-backend-module-openshift-provider": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/plugin-catalog-backend-module-ai-resource-entity-model": "workspace:^", "@backstage/plugin-catalog-backend-module-backstage-openapi": "workspace:^", "@backstage/plugin-catalog-backend-module-logs": "workspace:^", "@backstage/plugin-catalog-backend-module-openapi": "workspace:^", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index e77c83baac..9a74cf9f51 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -46,6 +46,9 @@ backend.add(import('@backstage/plugin-auth-backend-module-guest-provider')); backend.add(import('@backstage/plugin-auth-backend-module-openshift-provider')); backend.add(import('@backstage/plugin-app-backend')); backend.add(import('@backstage/plugin-catalog-backend-module-unprocessed')); +backend.add( + import('@backstage/plugin-catalog-backend-module-ai-resource-entity-model'), +); backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); diff --git a/packages/catalog-model/examples/ai-resources/frontend-design-skill.yaml b/packages/catalog-model/examples/ai-resources/frontend-design-skill.yaml new file mode 100644 index 0000000000..bbe5f049c9 --- /dev/null +++ b/packages/catalog-model/examples/ai-resources/frontend-design-skill.yaml @@ -0,0 +1,18 @@ +apiVersion: backstage.io/v1alpha1 +kind: AIResource +metadata: + name: frontend-design + description: Skill for creating production-grade frontend interfaces using the internal design system +spec: + type: skill + lifecycle: production + owner: team-a + system: artist-engagement-portal + disciplines: + - web + categories: + - framework + - design-system + agents: + - claude-code + - copilot diff --git a/packages/catalog-model/examples/ai-resources/use-internal-apis-rule.yaml b/packages/catalog-model/examples/ai-resources/use-internal-apis-rule.yaml new file mode 100644 index 0000000000..01050e95af --- /dev/null +++ b/packages/catalog-model/examples/ai-resources/use-internal-apis-rule.yaml @@ -0,0 +1,10 @@ +apiVersion: backstage.io/v1alpha1 +kind: AIResource +metadata: + name: use-internal-apis + description: Agents must use internal API clients instead of raw HTTP calls +spec: + type: rule + lifecycle: production + owner: team-a + system: artist-engagement-portal diff --git a/packages/catalog-model/examples/all-ai-resources.yaml b/packages/catalog-model/examples/all-ai-resources.yaml new file mode 100644 index 0000000000..afa70f821a --- /dev/null +++ b/packages/catalog-model/examples/all-ai-resources.yaml @@ -0,0 +1,9 @@ +apiVersion: backstage.io/v1alpha1 +kind: Location +metadata: + name: example-ai-resources + description: A collection of all Backstage example AI resources +spec: + targets: + - ./ai-resources/frontend-design-skill.yaml + - ./ai-resources/use-internal-apis-rule.yaml diff --git a/packages/catalog-model/examples/all.yaml b/packages/catalog-model/examples/all.yaml index c8e073345c..9512a39b4f 100644 --- a/packages/catalog-model/examples/all.yaml +++ b/packages/catalog-model/examples/all.yaml @@ -5,6 +5,7 @@ metadata: description: A collection of all Backstage example entities, except users, groups, and templates spec: targets: + - ./all-ai-resources.yaml - ./all-apis.yaml - ./all-components.yaml - ./all-domains.yaml diff --git a/yarn.lock b/yarn.lock index 2737bf4ac8..401c4072d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4759,7 +4759,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-backend-module-ai-resource-entity-model@workspace:plugins/catalog-backend-module-ai-resource-entity-model": +"@backstage/plugin-catalog-backend-module-ai-resource-entity-model@workspace:^, @backstage/plugin-catalog-backend-module-ai-resource-entity-model@workspace:plugins/catalog-backend-module-ai-resource-entity-model": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-ai-resource-entity-model@workspace:plugins/catalog-backend-module-ai-resource-entity-model" dependencies: @@ -29306,6 +29306,7 @@ __metadata: "@backstage/plugin-auth-backend-module-openshift-provider": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/plugin-catalog-backend-module-ai-resource-entity-model": "workspace:^" "@backstage/plugin-catalog-backend-module-backstage-openapi": "workspace:^" "@backstage/plugin-catalog-backend-module-logs": "workspace:^" "@backstage/plugin-catalog-backend-module-openapi": "workspace:^"