Skip to content

feat(cli-modules): scaffold cli-modules workspace - #5480

Closed
christoph-jerolimov wants to merge 0 commit into
redhat-developer:mainfrom
christoph-jerolimov:create-cli-module
Closed

christoph-jerolimov wants to merge 0 commit into
redhat-developer:mainfrom
christoph-jerolimov:create-cli-module

Conversation

@christoph-jerolimov

Copy link
Copy Markdown
Member

Hey, I just made a Pull Request!

This is just the first commit of #4898 to prepare the cli-modules workspace.

@christoph-jerolimov christoph-jerolimov self-assigned this Nov 9, 2026
@christoph-jerolimov
christoph-jerolimov requested review from a team as code owners November 9, 2026 09:40
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

This pull request adds a new top-level directory under workspaces/. Please follow Submitting a Pull Request for a New Workspace in CONTRIBUTING.md.

@rhdh-gh-app

rhdh-gh-app Bot commented Nov 9, 2026

Copy link
Copy Markdown

⚠️ CODEOWNERS Validation Failed

The following users are listed in CODEOWNERS but are not members of the rhdh-plugins-codeowners team:

thepetk

An org admin needs to add the missing members to the team before this PR can be merged.

@rhdh-qodo-merge

Copy link
Copy Markdown

PR Summary by Qodo

Scaffold the cli-modules Backstage workspace

✨ Enhancement ⚙️ Configuration changes 🕐 20-40 Minutes

Grey Divider

AI Description

• Add an independent Backstage workspace for future CLI modules and plugins.
• Configure development tooling, dependency locking, versioning, and workspace ownership.
• Include starter documentation and catalog metadata; no CLI modules are implemented yet.
Diagram

graph TD
  A["CODEOWNERS"] -->|"assigns review"| B["CLI workspace"] --> C["Backstage tooling"] --> D["Future plugins"]
  B --> E["Changesets"]
  B --> F[("Yarn lockfile")]
Loading
High-Level Assessment

The standalone workspace follows the repository's existing Backstage workspace pattern and is appropriate for a preparatory commit. Sharing the repository root's dependency installation would diverge from that pattern without a clear benefit here.

Files changed (16) +16063 / -4

Enhancement (1) +61 / -0
package.jsonDefine the Backstage workspace +61/-0

Define the Backstage workspace

• Declares a private workspace for future packages and plugins, with Backstage development, build, test, lint, and reporting commands. Adds development dependencies and a postinstall that installs from the repository root.

workspaces/cli-modules/package.json

Documentation (3) +43 / -0
README.mdDocument Changesets usage +8/-0

Document Changesets usage

• Adds the generated introduction and links to Changesets documentation.

workspaces/cli-modules/.changeset/README.md

README.mdAdd starter workspace instructions +28/-0

Add starter workspace instructions

• Provides install, start, and Knip commands. Plugin descriptions and links remain scaffold placeholders.

workspaces/cli-modules/README.md

README.mdDocument plugin directory conventions +7/-0

Document plugin directory conventions

• Explains where future plugins and modules belong and how to scaffold a plugin.

workspaces/cli-modules/plugins/README.md

Other (12) +15959 / -4
CODEOWNERSAssign ownership for cli-modules +6/-4

Assign ownership for cli-modules

• Adds a review-ownership rule for the new workspace and alphabetizes several existing rules. The mcp-integrations rule is also added again with an additional owner.

.github/CODEOWNERS

config.jsonConfigure workspace versioning +14/-0

Configure workspace versioning

• Sets up public Changesets releases against main, patch updates for internal dependencies, and no tagging or versioning of private packages.

workspaces/cli-modules/.changeset/config.json

.dockerignoreExclude local files from Docker contexts +8/-0

Exclude local files from Docker contexts

• Omits Git data, local dependencies, plugin sources, and local YAML configuration from Docker build contexts.

workspaces/cli-modules/.dockerignore

.eslintignoreExclude Playwright configuration from linting +1/-0

Exclude Playwright configuration from linting

• Adds an ignore rule for playwright.config.ts.

workspaces/cli-modules/.eslintignore

.eslintrc.jsReuse repository ESLint rules +1/-0

Reuse repository ESLint rules

• Points workspace linting at the repository's shared ESLint configuration.

workspaces/cli-modules/.eslintrc.js

.gitignoreIgnore generated and local workspace files +54/-0

Ignore generated and local workspace files

• Excludes dependency installations, build output, coverage, logs, local configuration, credentials, and E2E reports from Git.

workspaces/cli-modules/.gitignore

.prettierignoreExclude generated files from formatting +5/-0

Exclude generated files from formatting

• Prevents Prettier from checking build output, coverage, editor settings, and the ESLint configuration file.

workspaces/cli-modules/.prettierignore

.yarnrc.ymlConfigure approved Yarn Git repositories +2/-0

Configure approved Yarn Git repositories

• Permits Git repositories as Yarn dependency sources within the workspace.

workspaces/cli-modules/.yarnrc.yml

backstage.jsonRecord Backstage version +3/-0

Record Backstage version

• Pins the workspace's Backstage version metadata to 1.54.6.

workspaces/cli-modules/backstage.json

catalog-info.yamlAdd starter catalog entity +13/-0

Add starter catalog entity

• Defines an experimental cli-modules Component; its description and owner remain scaffold defaults.

workspaces/cli-modules/catalog-info.yaml

tsconfig.jsonConfigure workspace TypeScript compilation +19/-0

Configure workspace TypeScript compilation

• Extends Backstage's TypeScript settings and includes future package and plugin sources, development files, and migrations.

workspaces/cli-modules/tsconfig.json

yarn.lockLock scaffold development dependencies +15833/-0

Lock scaffold development dependencies

• Adds the generated Yarn lockfile for the new workspace and its tooling dependencies.

workspaces/cli-modules/yarn.lock

@codecov

codecov Bot commented Nov 9, 2026

Copy link
Copy Markdown

⚠️ JUnit XML file not found

The CLI was unable to find any JUnit XML files to upload.
For more help, visit our troubleshooting guide.

@rhdh-qodo-merge

rhdh-qodo-merge Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Code Review by Qodo


View medium (2)
Remediation recommended
1. Unrelated ownership change slips into scaffold PR 🐞 Bug
Description
The CODEOWNERS edit adds @thepetk as a reviewer for /workspaces/mcp-integrations and reorders
several other workspace entries, none of which relates to scaffolding cli-modules. Changing review
routing for another team's workspace inside an unrelated PR means that ownership change can merge
without the scrutiny it would get in its own PR.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The CODEOWNERS diff changes review ownership of /workspaces/mcp-integrations (adds @thepetk) and reorders other workspace entries, which is outside the stated scope of scaffolding cli-modules.

## Fix Focus Areas
- .github/CODEOWNERS[20-40]

## Recommended Fix
Revert the mcp-integrations and reordering edits in this PR and keep only the new /workspaces/cli-modules line. If the ownership change is intended, submit it in its own PR with the owning team's approval.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

2. Yarn accepts git dependencies from any host 🐞 Bug
Description
The approvedGitRepositories setting is set to '**', which matches every repository URL, so Yarn
no longer restricts which git sources a dependency may be fetched from. Any transitive or direct
dependency that points at an arbitrary git URL will be installed without the allow-list check that
this setting exists to enforce.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
workspaces/cli-modules/.yarnrc.yml sets approvedGitRepositories to '**', which allows git dependencies from any repository and defeats Yarn's allow-list.

## Fix Focus Areas
- workspaces/cli-modules/.yarnrc.yml[1-2]

## Recommended Fix
Remove the approvedGitRepositories block, or list only the specific repository URL prefixes that the workspace actually needs (for example `https://github.com/redhat-developer/**`). Re-run `yarn install` to confirm no dependency is blocked unexpectedly.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗


View low (2)
Informational
3. README still shows Backstage template boilerplate 🐞 Bug
Description
The README opens with the default Backstage app heading, a TODO note and the template sentence `This
is your newly scaffolded Backstage App, and its plugin link uses an unfilled \[plugin-backend]`
placeholder. Anyone landing on the workspace will read it as an unfinished template rather than
documentation for the cli-modules workspace.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
workspaces/cli-modules/README.md still contains Backstage template text and unfilled placeholders.

## Fix Focus Areas
- workspaces/cli-modules/README.md[1-13]

## Recommended Fix
Remove the template heading and TODO, describe the cli-modules workspace purpose, and either list real plugins or drop the placeholder plugin entry.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

4. Catalog entry ships placeholder owner and description 🐞 Bug
Description
The catalog descriptor sets owner to the example address john@example.com and describes the
component as An example of a Backstage application. Once registered, the component is attributed
to a non-existent owner, so ownership and notifications for cli-modules will not reach the real
team.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
workspaces/cli-modules/catalog-info.yaml keeps the template placeholder owner (john@example.com) and description.

## Fix Focus Areas
- workspaces/cli-modules/catalog-info.yaml[5-12]

## Recommended Fix
Set metadata.description to a description of the cli-modules workspace and set spec.owner to the owning team (for example the rhdh-cope group used in CODEOWNERS).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗


@rhdh-qodo-merge

Copy link
Copy Markdown

Important

The /generate_labels command by Qodo was deprecated on the 1st of October 2026 and is no longer available. We recommend switching to the latest Qodo review capabilities. Learn more

@sonarqubecloud

sonarqubecloud Bot commented Nov 9, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant