Agent skill

Docs Screenshots

by kurotu in kurotu/VRCQuestTools

Re-capture or resize VRCQuestTools documentation screenshots (Website/static/img/.png), produced by the Tools/VRCQuestTools/Debug/Screenshots menu, after a Unity Inspector/EditorWindow field…

MITAuto-check passedGame Development

Install Docs Screenshots

skills CLI
$ npx skills add kurotu/VRCQuestTools --skill docs-screenshots -a claude-code

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

GitHub CLI
$ gh skill install kurotu/VRCQuestTools docs-screenshots --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/kurotu/VRCQuestTools.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/docs-screenshots .claude/skills/docs-screenshots && 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
docs-screenshots
GitHub stars
373
Token cost
~2.9k tokens
SKILL.md length
1,354 words
Files
1
Skills in repo
25
Repo updated
First seen
Licence
MIT

At a glance

Re-capture or resize VRCQuestTools documentation screenshots (Website/static/img/.png), produced by the Tools/VRCQuestTools/Debug/Screenshots menu, after a Unity Inspector/EditorWindow field…

  • Works in 10 steps: Identify the affected target(s). Find… → Update sample data if a field needs it.… → Handle collapsed/foldout fields. If the… → …
  • A component gains/loses/renames a field
  • SKILL.md covers Why this tool exists, When to use this skill, Key files and Procedure, plus 2 more sections
  • Calls git and pnpm

What it does

Docs Screenshots is an agent skill from kurotu/VRCQuestTools. Re-capture or resize VRCQuestTools documentation screenshots (Website/static/img/.png), produced by the Tools/VRCQuestTools/Debug/Screenshots menu, after a Unity Inspector/EditorWindow field, default value, or layout changes, or when adding a brand-new capture target. Use whenever a component gains/loses/renames a field, a default value changes, an Inspector grows or shrinks, an existing screenshot now shows clipped content, a scrollbar, or excess blank space, or a new component/window needs a doc screenshot.

Its SKILL.md is about 2.9k 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 Game Development. The repository describes itself as: Unity editor extension to support uploading VRChat avatars for Oculus Quest. The licence is MIT.

When your agent uses it

  • A component gains/loses/renames a field
  • A default value changes
  • An Inspector grows
  • An existing screenshot now shows clipped content

Example prompts

  • “/docs-screenshots”

Workflow steps

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

  1. Identify the affected target(s). Find the target's file name, its
  2. Update sample data if a field needs it. Add or adjust the
  3. Handle collapsed/foldout fields. If the field lives behind a
  4. Compile. Use the uloop-compile skill (force recompile). Expect 0
  5. Capture just the changed target(s) first. Find the exact menu path in
  6. Visually inspect the resulting PNG(s). Check for: clipped
  7. Iterate steps 2–6 until every affected screenshot looks right.
  8. Run a full regression pass. Trigger Tools/VRCQuestTools/Debug/Screenshots/Capture All
  9. Verify the docs site still builds: cd Website && pnpm run build
  10. Stage only the intended files and commit. Exclude Packages/*.json,

What it can do on your machine

Read from SKILL.md and the folder at commit c68d147. 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:

    • git
    • pnpm

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

  • Network

    No URLs in SKILL.md. Its commands use git and pnpm, 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

Docs Screenshots loads about 2.9k tokens when it runs. Until then it costs about 133 tokens; SKILL.md has 1,354 words of instructions outside code blocks.

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

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 kurotu/VRCQuestTools at commit c68d147, republished under its MIT licence (© kurotu). 1,354 words, ~2,892 tokens.

Download SKILL.mdSave it as .claude/skills/docs-screenshots/SKILL.md (or your agent's skills folder).
name
docs-screenshots
description
Re-capture or resize VRCQuestTools documentation screenshots (Website/static/img/*.png), produced by the Tools/VRCQuestTools/Debug/Screenshots menu, after a Unity Inspector/EditorWindow field, default value, or layout changes, or when adding a brand-new capture target. Use whenever a component gains/loses/renames a field, a default value changes, an Inspector grows or shrinks, an existing screenshot now shows clipped content, a scrollbar, or excess blank space, or a new component/window needs a doc screenshot.

Documentation Screenshot Maintenance

Maintains the screenshots embedded in Website/docs/ (en) and Website/i18n/ja/docusaurus-plugin-content-docs/current/ (ja), captured by the debug tool at Assets/VRCQuestTools-DebugUtil/Editor/Screenshots/ and exposed under the Unity menu Tools/VRCQuestTools/Debug/Screenshots/....

Why this tool exists

  • Reproducible: every window/inspector is captured at a fixed size and position, so screenshots don't vary run to run.
  • English UI: capture always forces DisplayLanguage.English for the duration, regardless of the developer's own language setting, and restores it afterward.
  • Realistic sample data: when nothing is selected, the tool creates a temporary GameObject and seeds its fields with plausible, procedurally generated data (materials, textures, a skinned mesh with a blend shape, a PhysBone/PhysBoneCollider/ContactReceiver) instead of leaving fields empty. It never touches a GameObject the developer has hand-selected in the Hierarchy.
  • OS-independent capture: pixels come from Unity's internal GrabPixels rendering (WindowPixelCapture.cs, via uLoopMCP's InternalEditorUtilityBridge), not real OS screen pixels, so capture is unaffected by Remote Desktop session state or windows overlapping on screen.

When to use this skill

  • A component gained, lost, or renamed a serialized field.
  • A field's default value changed (the sample screenshot may now show a stale or misleading value).
  • An Inspector or EditorWindow's layout got taller/shorter/wider (a new warning box, an extra foldout section, more/fewer rows in a list, etc.).
  • An existing screenshot now shows a scrollbar, clipped text/controls, or a noticeably large blank area at the bottom.
  • A brand-new component or window needs its own documentation screenshot for the first time.

Key files

FileRole
ScreenshotMenu.csOne [MenuItem] per target, each delegating to a private Capture...(Action onDone) method that holds the target's file name, size, and populate/configure lambda in one place. Capture All enqueues those same methods directly (never duplicates their parameters), so there is exactly one place to edit per target.
ScreenshotSettings.csFixed Vector2 size per capture target, plus the shared CaptureOrigin and output directory.
SampleContentFactory.csProcedural, in-memory-only sample data helpers (CreateSampleMaterial, CreateSampleTexture, CreateSampleSkinnedMeshRenderer, CreateAdditionalMaterialConvertSettings). Reuse these before writing a new one.
AvatarFixtures.csInstantiates the SimpleCubeAvatar test fixture prefab as a temporary avatar (InstantiateSimpleCubeAvatar), plus a variant with sample PhysBone/PhysBoneCollider/ContactReceiver children (InstantiateSimpleCubeAvatarWithDynamics).
ComponentScreenshotCapture.cs / WindowScreenshotCapture.csThe actual capture plumbing (open, wait a couple of frames, grab pixels, save PNG, clean up). Rarely need touching.
CaptureEnvironmentScope.cs / AvatarConverterSettingsFoldoutScope.csIDisposable save-force-restore scopes: the former forces English + suppresses the update banner globally, the latter forces one Inspector's persisted foldout state open. Follow this pattern if a new target has similar persisted UI state to manage.

Procedure

  1. Identify the affected target(s). Find the target's file name, its populate/configure lambda in ScreenshotMenu.cs, and its size constant in ScreenshotSettings.cs.

  2. Update sample data if a field needs it. Add or adjust the populate/configure lambda so the new/changed field shows plausible, non-empty data. Two hard rules:

    • Only mutate inside the temp-GameObject fallback path — never overwrite a GameObject the developer selected themselves (ComponentScreenshotCapture.Capture's populate callback already only fires on that path; keep it that way).
    • Prefer reusing a SampleContentFactory helper. If you need a new kind of sample object, follow the existing convention: build it procedurally (no new binary assets in the repo), mark temporary GameObjects HideFlags.HideInHierarchy | HideFlags.DontSave, and have the caller destroy everything it created in the capture's onDone callback.
  3. Handle collapsed/foldout fields. If the field lives behind a collapsed foldout, it won't show up in the screenshot just because you populated it — check which of these three patterns the target's Editor class uses, and handle it before capture:

    • SerializedProperty.isExpanded (default array/list drawn via EditorGUILayout.PropertyField): force it open with new SerializedObject(component).FindProperty("fieldName").isExpanded = true; then ApplyModifiedProperties() (see CaptureMaterialSwap in ScreenshotMenu.cs for a working example).
    • A local bool field on the Editor class itself (not a nested ScriptableSingleton): check its default value first — if it already defaults to true, nothing to do.
    • A ScriptableSingleton-backed persisted state (survives across the whole Editor session — this is more common than it looks: e.g. both AvatarConverterSettingsEditorState and MaterialConversionSettingsEditor's private nested EditorState are ScriptableSingletons, even though the latter's foldOutAdditionalMaterialSettings happens to default true). This is the developer's own real, currently-open-or-closed Inspector state — never just flip it and leave it. Add a dedicated save/force/restore IDisposable scope modeled on AvatarConverterSettingsFoldoutScope.cs, and dispose it in the capture's onDone so the developer's own UI state is restored afterward. (If the field you need already defaults true and you're not forcing anything else on that Editor, you can skip adding a scope — but if the developer ever collapses it during their own work, the next capture will silently show it collapsed until someone notices.)
  4. Compile. Use the uloop-compile skill (force recompile). Expect 0 errors. A couple of pre-existing warnings unrelated to this code are normal — don't chase those, but do make sure no new warnings appear.

  5. Capture just the changed target(s) first. Find the exact menu path in the [MenuItem(Root + "...")] attribute for that target in ScreenshotMenu.cs — component targets live under a Components/ submenu (e.g. "Components/Material Swap"), windows are directly under the root; note the menu label doesn't always match the output PNG file name (e.g. "Setup Avatar for Mobile Window" writes convert-avatar.png — check the method body for the actual file name). Trigger it via uloop-execute-dynamic-code:

    csharp
    using UnityEditor;
    EditorApplication.ExecuteMenuItem("Tools/VRCQuestTools/Debug/Screenshots/<menu path from ScreenshotMenu.cs>");

    Then use uloop-get-logs to confirm a "Saved screenshot: ..." log with no warnings or errors.

  6. Visually inspect the resulting PNG(s). Check for: clipped content/scrollbars (increase the size in ScreenshotSettings.cs), noticeably excess blank space (decrease it), sample data still showing None/empty/0-count (revisit the populate lambda), and any leaked internal temp-object name (rename the temp GameObject in the populate lambda before it's used in an ObjectField — see how MenuCapturePlatformComponentRemover's lambda renames its temp GameObject to "Hair" before the field is shown).

    Delegate this inspection step to a low-cost subagent (e.g. the Agent tool with model: "haiku") rather than reading every PNG directly in the main conversation — visually checking a batch of screenshots consumes a large number of image tokens and doesn't need a top-tier model. Have the subagent report back a pass/fail plus a short description of any problem per image; only pull an image into the main context yourself if you need to make a judgment call the subagent flagged as ambiguous.

  7. Iterate steps 2–6 until every affected screenshot looks right.

  8. Run a full regression pass. Trigger Tools/VRCQuestTools/Debug/Screenshots/Capture All once everything looks right individually. Unaffected screenshots are byte-for-byte deterministic across runs — if git status/git diff shows a PNG changing that you didn't intend to touch, something else regressed; investigate before proceeding.

  9. Verify the docs site still builds: cd Website && pnpm run build (both en and ja locales must succeed with no broken links).

  10. Stage only the intended files and commit. Exclude Packages/*.json, ProjectSettings/*, and any unrelated scratch files/directories that may be sitting in the working tree — these are Unity/VPM-managed and should only be committed when a change explicitly intends to touch them.

Show full SKILL.md (248 more words)Show less

Known gotchas

  • A capture comes back blank. Since capture uses Unity's internal GrabPixels rendering (not real OS screen pixels), this is no longer an environment/focus/RDP issue — treat it as a real bug and check the Unity console for an exception during that capture.
  • PlatformComponentRemoverEditor auto-rebuilds its list every draw. Its OnInspectorGUIInternal calls TargetComponent.UpdateComponentSettings() unconditionally on every repaint, which resyncs componentSettings: it drops any entry whose component reference is no longer present on the GameObject, and appends a fresh removeOnPC = false, removeOnAndroid = false entry for any sibling component not yet tracked — but an entry whose component is still present is kept as-is, flags and all, so edits to an already-tracked entry are not lost across redraws. The practical implication for this tool: pre-seed componentSettings with your desired flags before the first draw, right after adding the sibling component (see MenuCapturePlatformComponentRemover). If you only add the sibling and let the first draw run before setting flags, UpdateComponentSettings() will already have created a fresh default-false entry for it, which is just extra work to find and edit afterward.

Adding a brand-new capture target

  1. Add a Vector2 size constant in ScreenshotSettings.cs.
  2. Add a [MenuItem] + a private Capture... method in ScreenshotMenu.cs, following the pattern of an existing target of the same kind (component vs. window).
  3. Add it to the Capture All queue in ScreenshotMenu.cs.
  4. If the doc page doesn't have a screenshot placeholder yet, add one to both the English (Website/docs/...) and Japanese (Website/i18n/ja/docusaurus-plugin-content-docs/current/...) pages before embedding the image.

© kurotu, 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/docs-screenshots of kurotu/VRCQuestTools.

Open the folder on GitHubat commit c68d147

Compare with similar skills

Docs Screenshots 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.

Docs Screenshots compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Docs Screenshots this skillkurotu/VRCQuestTools373—~2.9kAutomated safety check: PassMIT
Image to Three.js Modelimg2threejs/img2threejs18k1 repos~8.2kAutomated safety check: PassApache-2.0
Web CloneJane-xiaoer/claude-skill-web-clone1k2 repos~2.7kAutomated safety check: PassMIT
Threejs Game Directormajidmanzarpour/threejs-game-skills2.4k—~2.2kAutomated safety check: PassMIT
Game Asset Generatorhtdt/godogen7.1k—~2.8kAutomated safety check: PassMIT
Threejs Gameplay Systemsvalkor-ai/loom1.2k1 repos~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • Image to Three.js Model

    img2threejs/img2threejs

    Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.

    18k GitHub starsUsed in 1 repo~8.2k tokens
    Game DevelopmentAuto-check passed
  • Web Clone

    Jane-xiaoer/claude-skill-web-clone

    网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…

    1k GitHub starsUsed in 2 repos~2.7k tokens
    Game DevelopmentAuto-check passed
  • Threejs Game Director

    majidmanzarpour/threejs-game-skills

    Entrypoint for building, upgrading, and finishing Three.js browser games.

    2.4k GitHub stars~2.2k tokensUpdated 10 days ago
    Game DevelopmentAuto-check passed
  • Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.

    7.1k GitHub stars~2.8k tokensUpdated 6 days ago
    Game DevelopmentAuto-check passed
  • Build and iterate playable Three.js game systems: starter scaffold, architecture, design briefs, core loops, level and encounter design, entities, input, camera, collision and physics, scoring…

    1.2k GitHub starsUsed in 1 repo~1.4k tokens
    Game DevelopmentAuto-check passed
  • Uloop Execute Dynamic Code

    CyberAgentGameEntertainment/NovaShader

    Execute C with Unity APIs when existing uloop tools cannot inspect or edit enough.

    1.6k GitHub starsUsed in 1 repo~1.9k tokens
    Game DevelopmentAuto-check passed

More from kurotu/VRCQuestTools

All 25 skills in this repo
  • Uloop Replay Input

    kurotu/VRCQuestTools

    Replay recorded PlayMode keyboard and mouse input. An agent skill from kurotu/VRCQuestTools.

    373 GitHub starsUsed in 3 repos~615 tokens
    Auto-check passed
  • Uloop Screenshot

    kurotu/VRCQuestTools

    Capture Unity Editor windows or Game View rendering as PNG. An agent skill from kurotu/VRCQuestTools.

    373 GitHub starsUsed in 3 repos~1.2k tokens
    Auto-check passed
  • Uloop Execute Dynamic Code

    kurotu/VRCQuestTools

    Execute C with Unity APIs when existing uloop tools cannot inspect or edit enough.

    373 GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed
  • Uloop Find Game Objects

    kurotu/VRCQuestTools

    Find or inspect Unity GameObjects, especially objects the user currently selected in the Hierarchy.

    373 GitHub starsUsed in 3 repos~982 tokens
    Auto-check passed
  • Uloop Record Input

    kurotu/VRCQuestTools

    Record PlayMode keyboard and mouse input to JSON. An agent skill from kurotu/VRCQuestTools.

    373 GitHub starsUsed in 1 repo~605 tokens
    Auto-check passed
  • Uloop Get Hierarchy

    kurotu/VRCQuestTools

    Get the Unity scene hierarchy as a structured tree. An agent skill from kurotu/VRCQuestTools.

    373 GitHub starsUsed in 3 repos~587 tokens
    Auto-check passed

Questions about Docs Screenshots

What does Docs Screenshots do?

Re-capture or resize VRCQuestTools documentation screenshots (Website/static/img/.png), produced by the Tools/VRCQuestTools/Debug/Screenshots menu, after a Unity Inspector/EditorWindow field…. Docs Screenshots is an agent skill from kurotu/VRCQuestTools.png), produced by the Tools/VRCQuestTools/Debug/Screenshots menu, after a Unity Inspector/EditorWindow field, default value, or layout changes, or when adding a brand-new capture target.

When should I use Docs Screenshots?

Docs Screenshots fits situations like: A component gains/loses/renames a field; A default value changes; an Inspector grows; an existing screenshot now shows clipped content.

How do I install Docs Screenshots in Claude Code?

Run `npx skills add kurotu/VRCQuestTools --skill docs-screenshots -a claude-code`. Or copy the skill folder (.claude/skills/docs-screenshots in kurotu/VRCQuestTools) into .claude/skills/docs-screenshots in your project. Claude Code loads it when a task matches its description.

How do I install Docs Screenshots in Codex?

Run `npx skills add kurotu/VRCQuestTools --skill docs-screenshots -a codex`. Or copy the skill folder (.claude/skills/docs-screenshots in kurotu/VRCQuestTools) into .agents/skills/docs-screenshots in your project. Codex loads it when a task matches its description.

Can I use Docs Screenshots 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 kurotu/VRCQuestTools --skill docs-screenshots -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/docs-screenshots, .gemini/skills/docs-screenshots, .github/skills/docs-screenshots and .opencode/skills/docs-screenshots in your project.

What does Docs Screenshots need to run?

Going by SKILL.md and its folder, Docs Screenshots needs the command-line tools its instructions call (git and pnpm).

Does Docs Screenshots access the network?

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

Is Docs Screenshots 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 Docs Screenshots use?

Docs Screenshots 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 Docs Screenshots use?

About 2.9k tokens (SKILL.md is roughly 12k 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 Docs Screenshots?

Skills that share tags, products or a category with Docs Screenshots: Image to Three.js Model (img2threejs/img2threejs, 18k stars), Web Clone (Jane-xiaoer/claude-skill-web-clone, 1k stars), Threejs Game Director (majidmanzarpour/threejs-game-skills, 2.4k stars) and Game Asset Generator (htdt/godogen, 7.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Docs Screenshots?

kurotu (a GitHub user) maintains it in kurotu/VRCQuestTools, which has 373 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on September 30, 2026.

Source: kurotu/VRCQuestTools on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.