Skip to content

fix: sync HARNESS_DIRS / PROVIDER_DIRS with providers.js#137

Open
voidborne-d wants to merge 1 commit into
pbakaus:mainfrom
voidborne-d:fix/sync-provider-dirs
Open

fix: sync HARNESS_DIRS / PROVIDER_DIRS with providers.js#137
voidborne-d wants to merge 1 commit into
pbakaus:mainfrom
voidborne-d:fix/sync-provider-dirs

Conversation

@voidborne-d
Copy link
Copy Markdown
Contributor

@voidborne-d voidborne-d commented May 4, 2026

Problem

Two runtime arrays that should mirror the 13 configDirs declared in scripts/lib/transformers/providers.js had drifted:

  • source/skills/impeccable/scripts/cleanup-deprecated.mjs HARNESS_DIRS was missing .github and .qoder. Users who installed via GitHub Copilot or Qoder kept stale deprecated skill directories forever -- the cleanup script silently skipped those harness roots.
  • bin/commands/skills.mjs PROVIDER_DIRS was missing .rovodev. The isAlreadyInstalled / findInstalledProviders / check / update flow did not see Rovo Dev installs, so update never ran for those users.

providers.js is the source of truth (the build emits to all 13 configDirs and then synced skills to: .cursor, .claude, .gemini, .agents, .github, .kiro, .opencode, .pi, .qoder, .trae-cn, .trae, .rovodev populates them in the repo root). Both runtime lists need to track that.

Fix

  • Add .github and .qoder to HARNESS_DIRS in source/skills/impeccable/scripts/cleanup-deprecated.mjs. Sorted alongside the existing entries.
  • Add .rovodev to PROVIDER_DIRS in bin/commands/skills.mjs.
  • Inline comment on each list points at providers.js as source of truth so the next provider addition catches both. .codex is intentionally still excluded from PROVIDER_DIRS -- per scripts/build.js it is not synced to the repo root because Codex CLI consumes .agents/skills/ instead.
  • Re-ran npm run build -- the harness mirrors of cleanup-deprecated.mjs (12 dirs under .cursor/.claude/etc. plus plugin/) regenerate identically from the new source. Build is idempotent.

Tests

Added one regression case in tests/cleanup-deprecated.test.mjs that writes deprecated skills to .github/skills/ and .qoder/skills/ and asserts both get removed:

it('cleans GitHub Copilot and Qoder harness installs', () => { ... });

Without the source change the new case fails (1 fail / 0 pass on --test-name-pattern); with it 32/32 pass for the cleanup-deprecated suite.

Verified locally with node --test:

  • tests/cleanup-deprecated.test.mjs -- 32 pass
  • tests/detect-antipatterns-fixtures.test.mjs + detect-antipatterns-browser.test.mjs + impeccable-paths.test.mjs + 4 live-* files -- 124 pass
  • tests/live-poll/server/browser-regression/session-store/browser-session/browser-source/completion/recovery-commands + framework-fixtures -- 250 pass

The Bun-only test files (tests/build.test.js, tests/detect-antipatterns.test.js, tests/windows-path-fix.test.js) need bun test; CI runs them on every push.

Note on AI assistance

Authored with AI assistance. No co-author trailer added.


Note

Low Risk
Low risk: changes only extend directory discovery/cleanup lists and add a regression test; behavior is limited to detecting installs and deleting already-deprecated Impeccable skills.

Overview
Fixes drift between runtime directory lists and scripts/lib/transformers/providers.js.

The deprecated-skill cleanup script now scans additional harness roots (notably .github and .qoder) so stale deprecated skill folders installed via those harnesses are removed, and the impeccable skills CLI now includes .rovodev in its provider detection so check/update flows see Rovo Dev installs. Adds a regression test ensuring cleanup removes deprecated skills from .github and .qoder.

Reviewed by Cursor Bugbot for commit 6bc2f26. Bugbot is set up for automated code reviews on this repo. Configure here.

…, .qoder, .rovodev)

cleanup-deprecated.mjs HARNESS_DIRS was missing .github and .qoder, so users
who installed via GitHub Copilot or Qoder kept stale deprecated skill
directories forever (the cleanup script silently skipped those harness roots).

bin/commands/skills.mjs PROVIDER_DIRS was missing .rovodev, so the
isAlreadyInstalled / findInstalledProviders / check / update flow did not
detect or update Rovo Dev installs.

scripts/lib/transformers/providers.js declares 13 configDirs as build
targets; the two runtime arrays now mirror that list (modulo .codex, which
the build deliberately skips because Codex CLI consumes .agents/skills/).
Comments added so the next addition catches both arrays.

Tests: new regression in tests/cleanup-deprecated.test.mjs covers .github
and .qoder cleanup paths.
@voidborne-d voidborne-d requested a review from pbakaus as a code owner May 4, 2026 14:24
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 6bc2f26. Configure here.

'.claude', '.cursor', '.gemini', '.codex', '.agents',
'.trae', '.trae-cn', '.pi', '.opencode', '.kiro', '.rovodev',
'.github', '.trae', '.trae-cn', '.pi', '.opencode',
'.kiro', '.qoder', '.rovodev',
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pin.mjs HARNESS_DIRS still missing .github and .qoder

Medium Severity

source/skills/impeccable/scripts/pin.mjs (and its mirrored copies in plugin/, .claude/, .cursor/, etc.) contains its own HARNESS_DIRS array that was not updated by this PR. It still lists only 11 entries, missing .github and .qoder. The findHarnessDirs() function in pin.mjs iterates this array to discover harness installs, so pin/unpin commands silently skip GitHub Copilot and Qoder users — the exact same class of drift this PR fixes for cleanup-deprecated.mjs.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 6bc2f26. Configure here.

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