Agent skill

Sync Host Views

by rajbos in rajbos/ai-engineering-fluency

Keep the Visual Studio and JetBrains webview views (screens) in sync with the VS Code views, while preserving the exact set of views each host ships.

MITAuto-check passedDevelopment

Install Sync Host Views

skills CLI
$ npx skills add rajbos/ai-engineering-fluency --skill sync-host-views -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rajbos/ai-engineering-fluency sync-host-views --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rajbos/ai-engineering-fluency.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/sync-host-views .claude/skills/sync-host-views && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
sync-host-views
GitHub stars
116
Token cost
~2k tokens
SKILL.md length
888 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Keep the Visual Studio and JetBrains webview views (screens) in sync with the VS Code views, while preserving the exact set of views each host ships.

  • Works in 3 steps: tracked — the host's build config lists… → NEW — VS Code builds it but the host… → ORPHAN — the host lists a view VS Code…
  • Development work in your project
  • SKILL.md covers One view == one screen, The three sources of truth, What the script reports and Usage, plus 3 more sections
  • Calls node and npm

What it does

Sync Host Views is an agent skill from rajbos/ai-engineering-fluency. Keep the Visual Studio and JetBrains webview views (screens) in sync with the VS Code views, while preserving the exact set of views each host ships. Detects views added to the VS Code extension (vscode-extension/esbuild.js entryPoints) that the Visual Studio host (AIEngineeringFluency.csproj) or JetBrains host (jetbrains-plugin/build.gradle.kts) do not yet ship, and surfaces them for a human decision instead of auto-adding. Use after building/updating the VS Code webviews, before a Visual Studio or JetBrains…

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. It works with Visual Studio Code, JetBrains IDEs and Gradle. The repository describes itself as: Extension that shows information about the estimated token usage and more of AI in editors/CLI's. The licence is MIT.

When your agent uses it

  • Development work in your project

Example prompts

  • “/sync-host-views”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. tracked — the host's build config lists this view.
  2. NEW — VS Code builds it but the host does not list it. Requires a human
  3. ORPHAN — the host lists a view VS Code no longer builds. Mechanical drift;

What it can do on your machine

Read from SKILL.md and the folder at commit 257ede3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Sync Host Views loads about 2k tokens when it runs. Until then it costs about 149 tokens; SKILL.md has 888 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~149
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rajbos/ai-engineering-fluency at commit 257ede3, republished under its MIT licence (© rajbos). 888 words, ~2,012 tokens.

Download SKILL.mdSave it as .claude/skills/sync-host-views/SKILL.md (or your agent's skills folder).
name
sync-host-views
description
Keep the Visual Studio and JetBrains webview views (screens) in sync with the VS Code views, while preserving the exact set of views each host ships. Detects views added to the VS Code extension (vscode-extension/esbuild.js entryPoints) that the Visual Studio host (AIEngineeringFluency.csproj) or JetBrains host (jetbrains-plugin/build.gradle.kts) do not yet ship, and surfaces them for a human decision instead of auto-adding. Use after building/updating the VS Code webviews, before a Visual Studio or JetBrains release, or whenever a host is missing a screen VS Code now has.

Sync Host Views Skill

The VS Code extension owns all webview "views" (a.k.a. screens). The Visual Studio extension and the JetBrains plugin are thin hosts that load a subset of the same compiled webview bundles inside a WebView2 / JCEF browser.

Neither host commits webview content to git any more (see docs/adr/VS-WEBVIEW-BUNDLE-SOURCING.md): both copy the bundles fresh from vscode-extension/dist/webview at build time — Visual Studio via the .csproj's CopyWebviewBundles MSBuild target, JetBrains via prepareBundledAssets in build.gradle.kts. So there is nothing left for this skill to refresh or flag as stale; it only tracks view-LIST drift — which named bundles each host's build config references — the same way for both hosts:

  • 🛑 Never silently add a new VS Code view to a host. New views are detected and handed to the user to decide.
  • 🔎 Flag views a host references that VS Code no longer builds (orphans).

One view == one screen

Each entry in the VS Code esbuild entryPoints map is exactly one webview bundle and one user-facing screen. "Add a screen" therefore means "add a bundle to the host include list and wire up navigation to it" — that is the human decision this skill protects.

The three sources of truth

RoleFileSymbol
Canonical view set (VS Code)vscode-extension/esbuild.jsentryPoints keys mapping to src/webview/<name>/main.ts
Built artifactsvscode-extension/dist/webview/<name>.jsone .js per view (produced by npm run package)
Visual Studio host listvisualstudio-extension/src/AIEngineeringFluency/AIEngineeringFluency.csproj_WebviewBundle Include="…\dist\webview\<name>.js" items (CopyWebviewBundles target)
JetBrains host listjetbrains-plugin/build.gradle.ktsprepareBundledAssets → from(".../dist/webview") { include("<name>.js", …) }

Run the script (see below) for the current per-host view counts and coverage — this drifts every time a view is added or a host picks one up. Views a host doesn't ship are intentionally excluded, not missing.

Why nothing is committed for either host

Neither host commits webview bundle content to git. Both copy the compiled bundles fresh from vscode-extension/dist/webview at their own build time:

  • Visual Studio does it via the CopyWebviewBundles MSBuild target in AIEngineeringFluency.csproj (BeforeTargets="Build"), and the CI/local build scripts (visualstudio-build.yml, visualstudio-publish.yml, release.yml, build.ps1) additionally do a wholesale directory copy before MSBuild runs.
  • JetBrains does it via prepareBundledAssets in build.gradle.kts.

This used to differ — Visual Studio committed its copies to the repo as a "possibly stale" fallback, which drifted out of sync in practice (see docs/adr/VS-WEBVIEW-BUNDLE-SOURCING.md). That fallback has been removed: both hosts now work exactly like JetBrains always did, so there is nothing left for this skill to refresh or check for staleness — only the two hosts' include lists (which named views each ships) can still drift from the canonical VS Code set, and that's all this script tracks.

What the script reports

sync-host-views.js classifies, per host, every canonical view as:

  1. tracked — the host's build config lists this view.
  2. NEW — VS Code builds it but the host does not list it. Requires a human decision; the script exits 3.
  3. ORPHAN — the host lists a view VS Code no longer builds. Mechanical drift; the script exits 1.

Usage

bash
# Detect drift and new screens (read-only). Run from the repo root.
node .github/skills/sync-host-views/sync-host-views.js

# Machine-readable output (CI / further processing).
node .github/skills/sync-host-views/sync-host-views.js --json

# Help.
node .github/skills/sync-host-views/sync-host-views.js --help

Build the bundles first if dist/webview is empty (only affects the informational dist/webview built line in the report — list-drift detection works either way):

bash
cd vscode-extension && npm run package
Exit codes
CodeMeaning
0Hosts are in sync — no drift
1Mechanical drift the agent can fix (an ORPHAN entry)
2Configuration error (a source file was not found / a block moved)
3NEW views detected — stop and ask the user (takes precedence over 1)
Show full SKILL.md (338 more words)Show less

Workflow for the agent

  1. Run the detector. node .github/skills/sync-host-views/sync-host-views.js
  2. If exit 3 (NEW views): do NOT add them automatically. Ask the user, one view at a time, whether each new VS Code screen should be added to Visual Studio and/or JetBrains. Example question: "VS Code added a logviewer screen that neither host ships. Add it to Visual Studio, JetBrains, both, or skip?" Only after the user opts in:
    • Visual Studio: add <_WebviewBundle Include="..\..\..\vscode-extension\dist\webview\<name>.js" /> to the CopyWebviewBundles target and a matching <VSIXSourceItem> entry to the AddWebviewBundlesToVsix target in AIEngineeringFluency.csproj, and wire navigation in ToolWindow/TokenTrackerControl.xaml.cs (NavigateToViewAsync switch) plus any toolbar/menu entry. Check WebBridge/ThemedHtmlBuilder.cs for view-specific hide rules.
    • JetBrains: add "<name>.js" to the include(...) list in the prepareBundledAssets task in build.gradle.kts, and wire navigation in the plugin's tool-window/host code.
  3. If exit 1 due to an ORPHAN: a host lists a view VS Code removed. Confirm the removal was intended, then drop the entry from the host list (the _WebviewBundle item and its VSIXSourceItem for Visual Studio, or the include(...) entry for JetBrains) — surface this to the user since it removes a screen.
  4. Re-run the detector until it is clean (or only the intentional NEW views the user chose to skip remain).

Sub-screens / tabs (out of automatic scope)

Some bundles contain multiple sub-screens or tabs (e.g. the chart view's by model / by editor / by repository toggles, or the tables on the details page). Those live inside a single bundle and stay current automatically because the bundle is rebuilt fresh on every host build — there is no separate include entry to add. If a host needs to hide a specific sub-screen it is done with a CSS rule in ThemedHtmlBuilder.cs (Visual Studio) or the equivalent JetBrains host HTML.

  • vscode-extension/esbuild.js — canonical entryPoints view list
  • visualstudio-extension/src/AIEngineeringFluency/AIEngineeringFluency.csproj — CopyWebviewBundles (_WebviewBundle includes, fresh from dist/webview) and AddWebviewBundlesToVsix (VSIX packaging)
  • visualstudio-extension/src/AIEngineeringFluency/ToolWindow/TokenTrackerControl.xaml.cs — NavigateToViewAsync view switch (where a new screen is wired up)
  • visualstudio-extension/src/AIEngineeringFluency/WebBridge/ThemedHtmlBuilder.cs — per-view / per-sub-screen hide CSS
  • jetbrains-plugin/build.gradle.kts — prepareBundledAssets webview include(...)
  • docs/adr/VS-WEBVIEW-BUNDLE-SOURCING.md — why nothing is committed any more
  • .github/skills/validate-editor-names/ — complementary skill for editor-name parity

© rajbos, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/sync-host-views of rajbos/ai-engineering-fluency.

Open the folder on GitHubat commit 257ede3

Compare with similar skills

Sync Host Views next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Sync Host Views compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Sync Host Views this skillrajbos/ai-engineering-fluency116—~2kAutomated safety check: PassMIT
Roo Conflict Resolutionzgsm-ai/costrict4.4k—~2.3kAutomated safety check: PassApache-2.0
Stewardyschimke/compose-ai-tools117—~2kAutomated safety check: PassApache-2.0
Evals Contextzgsm-ai/costrict4.4k1 repos~1.9kAutomated safety check: PassApache-2.0
Debug Surefireeclipse-rdf4j/rdf4j420—~2.4kAutomated safety check: PassBSD-3-Clause
Claude Docs Consultantcentminmod/my-claude-code-setup2.7k—~959Automated safety check: PassMIT

Similar skills

  • Roo Conflict Resolution

    zgsm-ai/costrict

    Provides comprehensive guidelines for resolving merge conflicts intelligently using git history and commit context.

    4.4k GitHub stars~2.3k tokensUpdated 8 days ago
    DevelopmentAuto-check passed
  • Steward

    yschimke/compose-ai-tools

    Drive a pull request on this repository to green — which fast checks to run before pushing, how to read a red check, and what to do about a review comment.

    117 GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Evals Context

    zgsm-ai/costrict

    Provides context about the CoStrict evals system structure in this monorepo.

    4.4k GitHub starsUsed in 1 repo~1.9k tokens
    AI & LLM EngineeringAuto-check passed
  • Debug Surefire

    eclipse-rdf4j/rdf4j

    Debug Maven Surefire unit tests by running them in JDWP "wait for debugger" mode (-Dmaven.surefire.debug) and attaching to the forked test JVM using jdb (preferred for CLI/agent debugging)…

    420 GitHub stars~2.4k tokensUpdated today
    Testing & QAAuto-check passed
  • Claude Docs Consultant

    centminmod/my-claude-code-setup

    Consult official Claude Code documentation from code.claude.com using selective fetching.

    2.7k GitHub stars~959 tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Flake Triage

    yschimke/compose-ai-tools

    Decide whether a preview the visual-diff bot flagged actually regressed or is simply nondeterministic, using a repeat-render oracle at a single commit.

    117 GitHub stars~1.5k tokensUpdated today
    MobileAuto-check passed

More from rajbos/ai-engineering-fluency

All 21 skills in this repo
  • Check Urls

    rajbos/ai-engineering-fluency

    Find all hardcoded URLs in TypeScript source files and verify they resolve (return HTTP 2xx/3xx).

    116 GitHub stars~662 tokensUpdated today
    Auto-check passed
  • Create Issue

    rajbos/ai-engineering-fluency

    Create a well-scoped GitHub issue in this repo. An agent skill from rajbos/ai-engineering-fluency.

    116 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Deduplicate Code

    rajbos/ai-engineering-fluency

    Detect copy-pasted code blocks across the shared source (vscode-extension/src, the repo-root src/, cli/src) with the dependency-free check-code-duplication.js detector, then pick one duplicate group…

    116 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Improve Tool Families

    rajbos/ai-engineering-fluency

    Analyze coverage of the vscode-extension's tool-family definitions (DEFAULTTOOLFAMILIES in vscode-extension/src/toolFamilies.ts) against the canonical tool-name list in src/toolNames.json and/or a…

    116 GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Load Cache Data

    rajbos/ai-engineering-fluency

    Load and display the last 10 cache entries as raw JSON output.

    116 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • PR Risk Review

    rajbos/ai-engineering-fluency

    Assess the risk of a changeset (a PR, a branch, or the working tree) and classify it as low, medium, or high with a written rationale.

    116 GitHub stars~2.6k tokensUpdated today
    Auto-check passed

Categories

Questions about Sync Host Views

What does Sync Host Views do?

Keep the Visual Studio and JetBrains webview views (screens) in sync with the VS Code views, while preserving the exact set of views each host ships. Sync Host Views is an agent skill from rajbos/ai-engineering-fluency. Keep the Visual Studio and JetBrains webview views (screens) in sync with the VS Code views, while preserving the exact set of views each host ships.

When should I use Sync Host Views?

Sync Host Views fits situations like: development work in your project.

How do I install Sync Host Views in Claude Code?

Run `npx skills add rajbos/ai-engineering-fluency --skill sync-host-views -a claude-code`. Or copy the skill folder (.claude/skills/sync-host-views in rajbos/ai-engineering-fluency) into .claude/skills/sync-host-views in your project. Claude Code loads it when a task matches its description.

How do I install Sync Host Views in Codex?

Run `npx skills add rajbos/ai-engineering-fluency --skill sync-host-views -a codex`. Or copy the skill folder (.claude/skills/sync-host-views in rajbos/ai-engineering-fluency) into .agents/skills/sync-host-views in your project. Codex loads it when a task matches its description.

Can I use Sync Host Views in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rajbos/ai-engineering-fluency --skill sync-host-views -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sync-host-views, .gemini/skills/sync-host-views, .github/skills/sync-host-views and .opencode/skills/sync-host-views in your project.

What does Sync Host Views need to run?

Going by SKILL.md and its folder, Sync Host Views needs the command-line tools its instructions call (node and npm).

Does Sync Host Views access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Sync Host Views safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Sync Host Views use?

Sync Host Views is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Sync Host Views use?

About 2k tokens (SKILL.md is roughly 8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Sync Host Views?

Skills that share tags, products or a category with Sync Host Views: Roo Conflict Resolution (zgsm-ai/costrict, 4.4k stars), Steward (yschimke/compose-ai-tools, 117 stars), Evals Context (zgsm-ai/costrict, 4.4k stars) and Debug Surefire (eclipse-rdf4j/rdf4j, 420 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Sync Host Views?

rajbos (a GitHub user) maintains it in rajbos/ai-engineering-fluency, which has 116 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 9, 2026.

Source: rajbos/ai-engineering-fluency on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.