Skip to content

chore: unship skills feature#957

Open
Nikhil (shadowfax92) wants to merge 2 commits into
devfrom
chore/unship-3
Open

chore: unship skills feature#957
Nikhil (shadowfax92) wants to merge 2 commits into
devfrom
chore/unship-3

Conversation

@shadowfax92
Copy link
Copy Markdown
Contributor

Summary

  • Removes the user-facing Skills surface from the agent app navigation, routes, feature gates, tips, and page code.
  • Removes the server Skills API, prompt catalog injection, startup sync/migration, bundled default skills, upload script, docs, tests, constants, and dependency wiring.
  • Keeps ACPX runtime skills intact because they are a separate harness mechanism.

Design
This unships Skills by deleting the product-facing feature end to end rather than hiding it behind another gate. The agent no longer advertises /home/skills, the server no longer exposes /skills or injects a skills catalog into prompts, and the bundled defaults are removed so the feature can be restored later by reverting this single commit.

Test plan

  • git diff --check
  • bun run --filter @browseros/server typecheck
  • bun run --filter @browseros/agent typecheck
  • bun run --filter @browseros/shared typecheck
  • bun run --filter @browseros/server test:core

@shadowfax92
Copy link
Copy Markdown
Contributor Author

Claude (@claude) review

@shadowfax92
Copy link
Copy Markdown
Contributor Author

Greptile (@greptileai) review

@github-actions github-actions Bot added the chore label May 7, 2026
@claude
Copy link
Copy Markdown

claude Bot commented May 7, 2026

Claude finished Nikhil (@shadowfax92)'s task in 1m 53s —— View job


PR Review: chore: unship skills feature

  • Gather context and understand the PR
  • Review diff for correctness and completeness
  • Check for dangling references or incomplete cleanup
  • Review test changes
  • Post final review feedback

Summary

This is a clean, thorough unship. 3,368 lines deleted, 16 added — the additions are all defensive test assertions confirming the feature is gone. The scope matches the description: product-facing Skills surface removed end-to-end, ACPX runtime skills untouched. No obvious dangling references.


What looks good

Complete surface removal — Navigation item, route registration, redirect aliases, page components, tips copy, feature gate, and the Wand2 icon import are all gone. No dead imports left behind.

Server cleanup is thoroughskills/ module deleted in full (catalog, loader, migrate, remote-sync, service, types, defaults). The gray-matter dependency dropped from package.json and bun.lock as a result. SKILLS_CATALOG_URL env var removed from env.ts.

Startup lifecycle cleanedmigrateBuiltinSkills, syncBuiltinSkills, startSkillSync, and stopSkillSync all removed from main.ts. ensureBrowserosDir no longer creates ~/.browseros/skills/ on startup.

ACPX runtime skills untouchedacpx-runtime-context.ts still has runtimeSkillsDir, ensureRuntimeSkills, and the skills injection for Codex sessions intact. Correct separation.

Feature.SKILLS_SUPPORT fully gone — Only remaining reference is in capabilities.test.ts asserting it's absent, which is a nice regression guard.

Prompt section count deduplication — Updating "includes all 14 v6 sections" to "includes all v6 sections" is a pragmatic improvement; the hardcoded count was a brittle assertion waiting to cause confusion on the next section change.


Minor observations

Awkward type assertion in prompt.test.ts:137-139

const prompt = buildRegular({
  skillsCatalog: '<available_skills>...',
} as Partial<BuildSystemPromptOptions> & { skillsCatalog: string })
expect(prompt).not.toContain('<available_skills>')

The intent (prove that passing a deleted option has no effect) is valid, but the double-cast is a bit tortured. Since skillsCatalog no longer exists on the interface, a simpler equivalent would be buildRegular() with no args — the catalog can never be injected at all now, so the interesting assertion is just that the string never appears. Low priority, but worth simplifying if anyone touches this test later. Fix this →

Leftover user data on disk

Existing users with custom skills in ~/.browseros/skills/ will still have those files — no cleanup happens. Presumably intentional (preserves data if the feature re-ships), but worth a note in a team channel so support is aware if users ask about stale files.

run-test-group.ts core group

getCompositeGroupMembers('core') correctly drops 'skills' from ['agent', 'api', 'skills', 'root']. The preferredDirectoryGroups list also updated. Both clean.


Verdict

Looks good to merge. The removal is complete and consistent, ACPX skills are correctly preserved, and the test changes are sound. The one minor issue (type cast) is non-blocking.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

✅ Tests passed — 1106/1110

Suite Passed Failed Skipped
agent 77/77 0 0
build 9/9 0 0
eval 93/93 0 0
server-agent 260/260 0 0
server-api 202/202 0 0
server-browser 4/4 0 0
server-integration 9/10 0 1
server-lib 161/161 0 0
server-root 60/63 0 3
server-tools 231/231 0 0

View workflow run

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 7, 2026

Greptile Summary

This PR completely removes the user-facing Skills feature from both the agent frontend and the server backend, including routes, UI navigation, prompt injection, startup sync/migration, bundled default skills, constants, and all associated tests. ACPX runtime skills are intentionally preserved as they are a separate harness mechanism.

  • Frontend: Removes Feature.SKILLS_SUPPORT, the /home/skills route, sidebar nav item, legacy redirects, focus-grid path entry, and the skills tip.
  • Server: Removes the /skills HTTP route, loadSkills/buildSkillsCatalog call on every agent run, startup migrateBuiltinSkills/syncBuiltinSkills/startSkillSync, filesystem directory creation, gray-matter dependency, and all skills service/loader/migrate/remote-sync modules.
  • Tests: Deletes all skills test suites and updates the prompt section-presence test to assert the catalog is never injected.

Confidence Score: 5/5

Safe to merge — this is a clean end-to-end deletion with no partial removals or dangling references in the retained code paths.

All skills-related surface area is consistently removed across the frontend, server, constants, and tests. The ACPX runtime skills are intentionally left untouched per the stated design. No cross-cutting references to the deleted modules remain in active code, the gray-matter dependency is cleanly dropped, and a regression test confirms the prompt builder never injects a skills catalog even if the property is passed via a type cast.

No files require special attention. The deletion is thorough and consistent.

Important Files Changed

Filename Overview
packages/browseros-agent/apps/server/src/agent/prompt.ts Removes the skills section from the prompt builder registry and drops skillsCatalog from BuildSystemPromptOptions; also removes a skills-referencing line from the workspace section.
packages/browseros-agent/apps/server/src/agent/ai-sdk-agent.ts Removes the loadSkills/buildSkillsCatalog call and stops passing skillsCatalog to buildSystemPrompt on each agent run.
packages/browseros-agent/apps/server/src/main.ts Removes startSkillSync/stopSkillSync lifecycle hooks, migrateBuiltinSkills and syncBuiltinSkills from startup; no other startup logic is affected.
packages/browseros-agent/apps/server/src/api/server.ts Removes the /skills route registration from the Hono server; remaining routes are unaffected.
packages/browseros-agent/apps/agent/entrypoints/app/App.tsx Removes the SkillsPage route, /home/skills legacy redirect, and the skills entry in the legacy options hash map.
packages/browseros-agent/apps/server/tests/agent/prompt.test.ts Updates section-count description (14 to all), merges the two skills-catalog tests into one regression test verifying catalog injection is always absent.
packages/browseros-agent/apps/agent/lib/browseros/capabilities.ts Removes Feature.SKILLS_SUPPORT enum member and its feature config entry; corresponding test asserts the value no longer exists in the enum.
packages/browseros-agent/apps/server/package.json Removes the test:skills script and drops the gray-matter dependency that was exclusively used by the skills markdown loader.
packages/browseros-agent/packages/shared/src/constants/paths.ts Removes SKILLS_DIR_NAME and BUILTIN_DIR_NAME path constants that are no longer referenced after the skills service deletion.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    subgraph Before["Before - Removed"]
        A[Agent Run] --> B[loadSkills]
        B --> C[buildSkillsCatalog]
        C --> D[buildSystemPrompt with skillsCatalog]
        E[Server Startup] --> F[migrateBuiltinSkills]
        F --> G[syncBuiltinSkills]
        G --> H[startSkillSync interval]
        I[HTTP Server] --> J["'/skills' route"]
        K[Agent UI] --> L["'/home/skills' page"]
        L --> M[Feature.SKILLS_SUPPORT gate]
    end

    subgraph After["After - Current"]
        A2[Agent Run] --> D2[buildSystemPrompt no skills]
        E2[Server Startup] --> EnsureDir[ensureBrowserosDir no skills dirs]
        I2[HTTP Server] --> NoSkills[No skills route]
        K2[Agent UI] --> NoPage[No skills navigation]
        ACPX[ACPX Runtime Skills] --> Preserved[Kept intact]
    end
Loading

Reviews (1): Last reviewed commit: "chore: unship skills feature" | Re-trigger Greptile

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant