Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when driving a website with opencli browser and sitemap context is available, requested, or needed to avoid blind navigation. Guides agents to consume site sitemap files lazily, choose adapter/browser fallback paths, resume from state signatures, and mark stale sitemap entries without trusting them over live browser state.
.claude/skills/mxyhi-opencli-browser-sitemap/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 675% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 140% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 42% | 0% |
Use this skill when opencli browser open or opencli browser analyze reports sitemap.available: true, or when the user asks you to use a site's sitemap.
The sitemap is prior knowledge, not ground truth. It should reduce blind clicking, but it must never override the live browser state.
opencli browser <session> state to know the current page.SITE.md for site-level orientation.pages/<page-id>.md for current state.workflows/<task-id>.md for the user goal.pitfalls.md only when blocked or warned by the workflow.opencli twitter post, use that before raw browser actions.state and compare the workflow's state_signature.adapter_health_update: <adapter> -> suspect|broken, update the local overlay workflow that references that adapter so future agents go straight to the fallback path.Read local overlay first, then global seed:
text~/.opencli/sites/<site>/sitemap/ # local overlay sitemaps/<site>/ # repo seed (top-level)
Local files override global files with the same stable id.
Do not load an entire large sitemap into context. If the directory is large, list filenames first and then read only the page/workflow you need.
If sitemap says a button, URL, route, or API should exist but the browser does not show it:
state or find with semantic anchors.Never keep clicking because "the sitemap says it should work."
When you discover drift, write a small local note under the relevant page/workflow file or a draft file in the local overlay:
mdStale note: - observed_at: YYYY-MM-DD - current_url: - expected: - actual: - next_probe:
Do not edit global seed files unless the task is explicitly a sitemap-authoring or repo PR task.
When an adapter fails and the sitemap action or workflow tells you to update adapter health:
~/.opencli/sites/<site>/sitemap/workflows/ whose Best path references the adapter command.adapter_health: suspect or broken as directed.This write-back is the memory loop: the current agent falls back once, and the next agent does not waste a turn retrying a known-suspect adapter.
When reporting back, include:
Keep the report task-focused. Do not summarize the whole sitemap.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 19,775 | 5,530 | -72% | 1 | 1 | 0% | 3,642 | 1,144 | -69% | 0 | 0 | — |
case-01 | fail→fail | 6,579 | 7,082 | +8% | 1 | 1 | 0% | 432 | 1,193 | +176% | 0 | 0 | — |
case-03 | fail→pass | 4,980 | 8,915 | +79% | 1 | 1 | 0% | 311 | 2,409 | +675% | 0 | 0 | — |
case-04 | pass→pass | 13,088 | 6,085 | -54% | 1 | 1 | 0% | 2,441 | 2,232 | -9% | 0 | 0 | — |
case-05 | pass→pass | 8,878 | 5,888 | -34% | 1 | 1 | 0% | 1,826 | 1,981 | +8% | 0 | 0 | — |
case-06 | fail→pass | 24,385 | 10,877 | -55% | 1 | 1 | 0% | 1,062 | 2,546 | +140% | 0 | 0 | — |
case-07 | pass→pass | 3,697 | 2,339 | -37% | 1 | 1 | 0% | 647 | 1,247 | +93% | 0 | 0 | — |
case-08 | pass→pass | 13,355 | 4,833 | -64% | 1 | 1 | 0% | 2,290 | 1,783 | -22% | 0 | 0 | — |
case-09 | fail→pass | 9,400 | 4,682 | -50% | 1 | 1 | 0% | 1,608 | 1,767 | +10% | 0 | 0 | — |
case-10 | fail→pass | 8,885 | 2,800 | -68% | 1 | 1 | 0% | 1,513 | 1,416 | -6% | 0 | 0 | — |
case-11 | fail→pass | 6,117 | 3,077 | -50% | 1 | 1 | 0% | 1,029 | 1,461 | +42% | 0 | 0 | — |
case-12 | pass→pass | 9,519 | 2,912 | -69% | 1 | 1 | 0% | 1,567 | 1,323 | -16% | 0 | 0 | — |
case-13 | fail→pass | 9,123 | 2,086 | -77% | 1 | 1 | 0% | 1,444 | 1,244 | -14% | 0 | 0 | — |
case-14 | fail→pass | 8,911 | 1,639 | -82% | 1 | 1 | 0% | 1,536 | 1,083 | -29% | 0 | 0 | — |
case-15 | pass→pass | 9,712 | 4,666 | -52% | 1 | 1 | 0% | 1,566 | 1,609 | +3% | 0 | 0 | — |
case-16 | fail→pass | 9,141 | 3,218 | -65% | 1 | 1 | 0% | 1,558 | 1,397 | -10% | 0 | 0 | — |
case-17 | pass→pass | 7,415 | 2,775 | -63% | 1 | 1 | 0% | 1,026 | 1,344 | +31% | 0 | 0 | — |
case-18 | fail→pass | 10,248 | 2,643 | -74% | 1 | 1 | 0% | 1,793 | 1,304 | -27% | 0 | 0 | — |
case-19 | pass→pass | 4,630 | 2,874 | -38% | 1 | 1 | 0% | 718 | 1,348 | +88% | 0 | 0 | — |
case-20 | pass→pass | 6,300 | 1,994 | -68% | 1 | 1 | 0% | 1,062 | 1,239 | +17% | 0 | 0 | — |
case-21 | fail→pass | 13,140 | 3,360 | -74% | 1 | 1 | 0% | 1,322 | 1,482 | +12% | 0 | 0 | — |
case-22 | pass→pass | 13,338 | 3,278 | -75% | 1 | 1 | 0% | 2,189 | 1,383 | -37% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 18 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.