Retire lightpanda in favour of ego-browser; bump both submodules - #126
Conversation
`resources/skills` was pinned to a commit on feat/smart-loader-annotate, which has since merged (opencue/skills#19) along with the ego-browser skill (opencue/skills#17). Moving to main picks up the smart-lookup `--annotate` fast path the UserPromptSubmit hook needs, the ladder-snapped `~N%` calibration, and a catalog/index pair that finally agrees with itself. `resources/mcps` moves to main for opencue/mcps#8: codegraph now appears in claude.sanitized.json (it was already in the runtime and codex snapshots, so the three disagreed), and context7 resolves to the installed binary instead of npx. Both pins previously pointed off-main, which is why nobody could clone this repo and get the same skill tree. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Holding this: the bump exposes a stale test, and the fix is a product decisionCI on this branch adds exactly one failing test that It is not a regression in the bump. The bump makes The chain:
Verified: Why I am not just patching the assertion
There is also no drop-in substitute: Someone needs to pick one:
The |
main carries a squashed copy (#122) of commits also in this branch's history, so git saw the shared liedetector work as two independent edits and conflicted on all three files. Resolved toward this branch for the calibration sources: main's side is the superseded decile ladder (~50/60/70/80, ~20/30/40), this branch's is the 5-point raster from #125. Everything unique to main's side of those three files was old-ladder text, so nothing is lost. Both submodules resolved to main's pointers (#126): resources/skills ba3d06d over the branch's 5a49e6c. The two are identical in the raster sources and differ only in the generated catalog, where ba3d06d is the more complete regen and is the submodule's own main head. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Started as a submodule-pointer bump. The bump turned a light red, and the reason
turned out to be worth fixing properly rather than working around.
The bug the bump exposed
#121removed thelightpandaMCP from every profile but left the skillbehind. So
coreshippedbrowser/lightpanda, which declaresrequires_mcps: [lightpanda], while nothing supplied that server. Every sessioncarried a skill that could not work, and the smart-loader kept offering it —
literally rendering
browser/lightpanda (needs MCP: lightpanda)in the hookoutput.
It stayed invisible because the committed
catalog/index.jsonwas stale: itsmcpProvidersmap still named twelve profiles,coreamong them, as lightpandaproviders.
summon.test.tsread that map, saw "core provides it", and wentgreen. Rebuilding the index (it was also lagging the catalog by a whole skill)
made it honest —
mcpProviders["lightpanda"]is now absent entirely — and thestale assertion failed.
Worth stating plainly: of the 29 skill→MCP requirements in the tree,
browser/lightpandawas the only one with no provider at all.What this PR does
Retires lightpanda. ego-browser covers the same ground — headless
navigation, scraping, DOM extraction — and also paints pixels, which was the
stated gap that forced the old two-engine handoff. Removed from
coreandbrowser; four personas (commerce,webshop,gstack,x-growth-bot) thatrouted agents to it now route to ego-browser.
agent-browserandwebwrightkeep their entries.
Rebuilds
summon.test.tson a pair that can actually hold. Nowdeployment/coolify+ activebackend: the summoned profile ships the skill, adifferent profile supplies the MCP — which is the distinction the test exists
to make. A comment records why the old pair must not come back.
Bumps both submodules to their merged mains (the original purpose):
resources/skills→ opencue/skills#17 + #19 (the ego-browser skill, thesmart-lookup --annotatefast path the hook needs, ladder-snapped calibration);resources/mcps→ opencue/mcps#8 (codegraph in the claude snapshot, context7 offnpx).
Verification
main, which isgreen on
testbut only because of the stale index.docs-factscount assertions still hold.so no follow-up submodule bump is needed.
lightpandastring inprofiles/is a deliberate note ingstackrecording that core used to ship it.validatewill still fail on the pre-existingopenaiDeveloperDocsreference —unrelated,
pull_request-only, and #121 merged with the same failure.