fix(cli): accept -- install-leaf paths in deployment ZIPs - #132
Conversation
Update install path patterns and computeInstallLeaf to match registry spec (-- segment delimiters). Reinstall workflow packages with pathEncoding 1 artifacts from catalog v2.3.3. Refs agents-repo/.github#103 Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
🟡 Changes recommended
The new qualified path patterns appear to drop support for previously-valid “qualified” install-leaf paths that used single-hyphen delimiters, which risks breaking remove/rollback flows that validate historical artifacts.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
This PR updates install-path encoding and ZIP validation so deployment artifacts and skill/agent bundles can use registry-qualified install-leaf names (namespace--package-id--source-id), and refreshes the repository’s bundled workflow packages accordingly.
Changes:
- Switch qualified install-leaf delimiter from
-to--, updating related regex patterns and test fixtures. - Expand Copilot deployment ZIP entry validation to accept qualified install-leaf names under
agents/. - Reinstall/bump bundled workflow packages (lockfileVersion 3, catalog ref v2.3.3) and bump CLI version to 1.23.0.
File summaries
| File | Description |
|---|---|
| tests/modules/install/packageRemover.test.ts | Update expected install-leaf paths to -- format. |
| tests/modules/install/packageExtractor.test.ts | Update mapping/extraction assertions for -- install-leaf and Copilot agent filenames. |
| tests/modules/install/installService.test.ts | Update installed file assertions for -- install-leaf. |
| tests/modules/install/installPersistenceRollback.test.ts | Update rollback assertions for -- install-leaf. |
| tests/modules/install/ciInstallService.test.ts | Update CI install assertions for -- install-leaf and Copilot agent filenames. |
| tests/modules/install/bulkInstallService.test.ts | Update bulk install assertions for -- install-leaf (multiple packages). |
| tests/modules/cli/removeCommand.test.ts | Update CLI remove/unlink integration assertions for -- install-leaf. |
| tests/modules/cli/installCommand.test.ts | Update CLI install integration assertions for -- install-leaf (local/global/home). |
| tests/fixtures/installFixtures.ts | Update fixture constants to -- install-leaf format. |
| src/modules/install/infrastructure/zipSecurityScanner.ts | Adjust deployment ZIP error messaging for new allowed entry shape(s). |
| src/modules/install/domain/pathEncoding.ts | Update qualified install-leaf computation documentation/format to --. |
| src/modules/install/domain/installPathPatterns.ts | Introduce ---aware install-leaf patterns and qualified deployment patterns. |
| package.json | Bump CLI version to 1.23.0. |
| agents-lock.json | Bump lockfileVersion/resolvedRef and refresh workflow package artifacts (pathEncodingVersion: 1). |
| .github/agents/maiconfz--review-fix-ship--security-reviewer.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--review-fix-ship--review-fix-ship.agent.md | Rename agent id and referenced agents to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--review-fix-ship--findings-fixer.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--review-fix-ship--code-reviewer.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--review-fix-ship--bug-reviewer.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--plan-refiner--plan-refinement.agent.md | Rename agent id and referenced agents to fully-qualified. |
| .github/agents/maiconfz--plan-refiner--interactive-plan-refiner.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--plan-refiner--automatic-plan-refiner.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--github-pr-review-triage--github-pr-review-triage.agent.md | Rename agent id to fully-qualified; reflow metadata text. |
| .github/agents/maiconfz--github-interactive-issue-implementation-planner--issue-implementation-planning.agent.md | Rename orchestrator agent id and referenced agents to fully-qualified. |
| .github/agents/maiconfz--github-interactive-issue-implementation-planner--issue-implementation-planner.agent.md | Rename agent id to fully-qualified; reflow description. |
| .github/agents/maiconfz--github-interactive-issue-implementation-planner--implementation-plan-refiner.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--github-interactive-issue-implementation-planner--github-issue-intake.agent.md | Rename agent id to fully-qualified; reflow description. |
| .github/agents/maiconfz--feature-exploration-planner--options-analyst.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--feature-exploration-planner--interactive-landscape-researcher.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--feature-exploration-planner--feature-intake.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--feature-exploration-planner--feature-exploration-planning.agent.md | Rename orchestrator agent id and referenced agents to fully-qualified. |
| .github/agents/maiconfz--feature-exploration-planner--feature-exploration-chat.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--feature-exploration-planner--feature-definition-planner.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--feature-exploration-planner--automatic-landscape-researcher.agent.md | Rename agent id to fully-qualified. |
| .github/agents/maiconfz--context-token-reduction--token-reduction-advisor.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--context-token-reduction--token-footprint-analyst.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--context-token-reduction--reduce-context-tokens.agent.md | Rename orchestrator agent id and referenced agents to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--context-token-reduction--context-token-chat.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--ai-first-project-readiness--improvement-planner.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--ai-first-project-readiness--ai-readiness-analyst.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--ai-first-project-readiness--ai-first-project-planning.agent.md | Rename orchestrator agent id and referenced agents to fully-qualified; bump version metadata. |
| .github/agents/maiconfz--ai-first-project-readiness--ai-first-chat.agent.md | Rename agent id to fully-qualified; bump version metadata. |
| .cursor/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--security-reviewer/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--review-fix-ship/SKILL.md | Rename skill id and referenced agents to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--findings-fixer/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--code-reviewer/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--bug-reviewer/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/plan-refiner/maiconfz--plan-refiner--plan-refinement/SKILL.md | Rename skill id and referenced agents to fully-qualified. |
| .cursor/skills/maiconfz/plan-refiner/maiconfz--plan-refiner--interactive-plan-refiner/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/plan-refiner/maiconfz--plan-refiner--automatic-plan-refiner/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/github-pr-review-triage/maiconfz--github-pr-review-triage--github-pr-review-triage/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--issue-implementation-planning/SKILL.md | Rename orchestrator skill id and referenced agents to fully-qualified. |
| .cursor/skills/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--issue-implementation-planner/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--implementation-plan-refiner/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--github-issue-intake/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--options-analyst/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--interactive-landscape-researcher/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-intake/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-exploration-planning/SKILL.md | Rename orchestrator skill id and referenced agents to fully-qualified. |
| .cursor/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-exploration-chat/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-definition-planner/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--automatic-landscape-researcher/SKILL.md | Rename skill id to fully-qualified. |
| .cursor/skills/maiconfz/context-token-reduction/maiconfz--context-token-reduction--token-reduction-advisor/SKILL.md | Rename skill id to fully-qualified; update workflow reference string; bump embedded package version comment. |
| .cursor/skills/maiconfz/context-token-reduction/maiconfz--context-token-reduction--token-footprint-analyst/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/context-token-reduction/maiconfz--context-token-reduction--reduce-context-tokens/SKILL.md | Rename orchestrator skill id and referenced agents to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/context-token-reduction/maiconfz--context-token-reduction--context-token-chat/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--improvement-planner/SKILL.md | Rename skill id to fully-qualified; update workflow reference string; bump embedded package version comment. |
| .cursor/skills/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-readiness-analyst/SKILL.md | Rename skill id to fully-qualified; update workflow reference string; bump embedded package version comment. |
| .cursor/skills/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-first-project-planning/SKILL.md | Rename orchestrator skill id and referenced agents to fully-qualified; bump embedded package version comment. |
| .cursor/skills/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-first-chat/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .claude/agents/maiconfz/review-fix-ship/maiconfz--review-fix-ship--security-reviewer.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/review-fix-ship/maiconfz--review-fix-ship--review-fix-ship.md | Rename Claude agent id and referenced agents to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/review-fix-ship/maiconfz--review-fix-ship--findings-fixer.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/review-fix-ship/maiconfz--review-fix-ship--code-reviewer.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/review-fix-ship/maiconfz--review-fix-ship--bug-reviewer.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/plan-refiner/maiconfz--plan-refiner--plan-refinement.md | Rename Claude agent id and referenced agents to fully-qualified. |
| .claude/agents/maiconfz/plan-refiner/maiconfz--plan-refiner--interactive-plan-refiner.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/plan-refiner/maiconfz--plan-refiner--automatic-plan-refiner.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/github-pr-review-triage/maiconfz--github-pr-review-triage--github-pr-review-triage.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--issue-implementation-planning.md | Rename Claude orchestrator id and referenced agents to fully-qualified. |
| .claude/agents/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--issue-implementation-planner.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--implementation-plan-refiner.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--github-issue-intake.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--options-analyst.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--interactive-landscape-researcher.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-intake.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-exploration-planning.md | Rename Claude orchestrator id and referenced agents to fully-qualified. |
| .claude/agents/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-exploration-chat.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-definition-planner.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--automatic-landscape-researcher.md | Rename Claude agent id to fully-qualified. |
| .claude/agents/maiconfz/context-token-reduction/maiconfz--context-token-reduction--token-reduction-advisor.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/context-token-reduction/maiconfz--context-token-reduction--token-footprint-analyst.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/context-token-reduction/maiconfz--context-token-reduction--reduce-context-tokens.md | Rename Claude orchestrator id and referenced agents to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/context-token-reduction/maiconfz--context-token-reduction--context-token-chat.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--improvement-planner.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-readiness-analyst.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-first-project-planning.md | Rename Claude orchestrator id and referenced agents to fully-qualified; bump version metadata. |
| .claude/agents/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-first-chat.md | Rename Claude agent id to fully-qualified; bump version metadata. |
| .agents/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--security-reviewer/SKILL.md | Rename Codex/OpenAI skill id to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--review-fix-ship/SKILL.md | Rename skill id and referenced agents to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--findings-fixer/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--code-reviewer/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/review-fix-ship/maiconfz--review-fix-ship--bug-reviewer/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/plan-refiner/maiconfz--plan-refiner--plan-refinement/SKILL.md | Rename skill id and referenced agents to fully-qualified. |
| .agents/skills/maiconfz/plan-refiner/maiconfz--plan-refiner--interactive-plan-refiner/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/plan-refiner/maiconfz--plan-refiner--automatic-plan-refiner/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/github-pr-review-triage/maiconfz--github-pr-review-triage--github-pr-review-triage/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--issue-implementation-planning/SKILL.md | Rename orchestrator skill id and referenced agents to fully-qualified. |
| .agents/skills/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--issue-implementation-planner/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--implementation-plan-refiner/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/github-interactive-issue-implementation-planner/maiconfz--github-interactive-issue-implementation-planner--github-issue-intake/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--options-analyst/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--interactive-landscape-researcher/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-intake/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-exploration-planning/SKILL.md | Rename orchestrator skill id and referenced agents to fully-qualified. |
| .agents/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-exploration-chat/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--feature-definition-planner/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/feature-exploration-planner/maiconfz--feature-exploration-planner--automatic-landscape-researcher/SKILL.md | Rename skill id to fully-qualified. |
| .agents/skills/maiconfz/context-token-reduction/maiconfz--context-token-reduction--token-reduction-advisor/SKILL.md | Rename skill id to fully-qualified; update workflow reference string; bump embedded package version comment. |
| .agents/skills/maiconfz/context-token-reduction/maiconfz--context-token-reduction--token-footprint-analyst/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/context-token-reduction/maiconfz--context-token-reduction--reduce-context-tokens/SKILL.md | Rename orchestrator skill id and referenced agents to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/context-token-reduction/maiconfz--context-token-reduction--context-token-chat/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--improvement-planner/SKILL.md | Rename skill id to fully-qualified; update workflow reference string; bump embedded package version comment. |
| .agents/skills/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-readiness-analyst/SKILL.md | Rename skill id to fully-qualified; update workflow reference string; bump embedded package version comment. |
| .agents/skills/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-first-project-planning/SKILL.md | Rename orchestrator skill id and referenced agents to fully-qualified; bump embedded package version comment. |
| .agents/skills/maiconfz/ai-first-project-readiness/maiconfz--ai-first-project-readiness--ai-first-chat/SKILL.md | Rename skill id to fully-qualified; bump embedded package version comment. |
Review details
Suppressed comments (1)
src/modules/install/domain/installPathPatterns.ts:16
- QUALIFIED_CLAUDE_ENTRY_PATTERN is now strict to the new -- install-leaf format, which can reject older (previously-valid) qualified Claude agent paths that used single-hyphen delimiters in the leaf. This can break remove/rollback flows that validate historical ZIPs before deleting installed files. Consider accepting a legacy-qualified Claude pattern (leaf = ID_SEGMENT) alongside the new -- pattern, without inferring PATH_ENCODING_VERSION from the legacy form.
- Files reviewed: 126/126 changed files
- Comments generated: 3
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Restore ZIP validation for single-hyphen install leaves so remove/rollback works on pre-delimiter installs, clarify deployment ZIP errors, and align AGENT_SKILLS.md with qualified install paths after package reinstall. Co-authored-by: Cursor <cursoragent@cursor.com>
|
There was a problem hiding this comment.
🟢 Approval recommended
The changes consistently implement and validate the -- install-leaf encoding while preserving legacy acceptance paths, with tests and docs updated to match.
Review details
- Files reviewed: 127/127 changed files
- Comments generated: 0 new
- Review effort level: Lite
## [1.22.1](v1.22.0...v1.22.1) (2026-09-12) ### Bug Fixes * **cli:** accept -- install-leaf paths in deployment ZIPs ([#132](#132)) ([e73462b](e73462b)), closes [agents-repo/.github#103](agents-repo/.github#103)
|
🎉 This PR is included in version 1.22.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |



Summary
namespace--package-id--source-id) in Copilot deployment artifacts, Cursor/Codex skills, and Claude agentscomputeInstallLeafto use--segment delimiters per install-targets specpathEncoding: 1artifacts from catalog v2.3.3Related Issues
Refs agents-repo/.github#103
Validation
Notes
This CLI release is a prerequisite for the agents package reinstall PRs in other platform repos.
Made with Cursor