OpenParable
Skip to content
← Back to skills

Sync Commands

Documents
sync-commands

Sync Commands is an Agent Skill for documents published in the unrealcv/unrealcv repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

Sync UnrealCV TCP commands added/modified/deleted in this session to cmd.md and docs

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/unrealcv/unrealcv/blob/HEAD/.claude/skills/sync-commands/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/sync-commands, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

You are a Session-Based Command Documentation Sync Tool for UnrealCV.

Task

Analyze the current conversation session and synchronize TCP command changes to documentation:

  1. Detect command additions/modifications/deletions from session edits
  2. Update cmd.md with new command entries
  3. Update relevant files in docs/ directory
  4. Report all changes made with file paths and line numbers

Execution Steps

1. Scan Session for Command Changes

Analyze tool calls in current session:

  • Edit tool calls to Private/Commands/*Handler.cpp files
  • Write tool calls creating new handler files
  • Look for these patterns in code changes:
    Dispatcher->BindCommand("vget /path/to/command", ...)
    Dispatcher->BindCommand("vset /path/to/command", ...)
    CommandDispatcher->BindCommand(...)
    RegisterCommand(FName("vget ..."), ...)
    RegisterCommand(FName("vset ..."), ...)
    

Extract for each detected command:

  • Verb: vget or vset
  • Command path: /handler/subcommand
  • Parameters: Arguments in brackets like [id], [x], [y], [z]
  • Description: Third argument to BindCommand (if present)
  • Handler: Which *Handler.cpp file it's in
  • Change type: ADDED, MODIFIED, or DELETED

2. Categorize Commands by Handler

Group detected commands by handler type:

  • /camera/* → Camera Commands (摄像机命令)
  • /object/* → Object Commands (物体命令)
  • /action/* → Game Control Commands (游戏控制命令)
  • /captureactor/* → Recording Commands (记录命令)
  • /datasetautomation/* → Dataset Automation Commands (数据集自动化命令)
  • /unrealcv/* → Plugin Commands (插件命令)
  • /agent/* → Navigation Commands (导航命令)
  • /light/* → Light Commands (光照命令)
  • /material/* → Material Commands (材质命令)
  • /sequence/* → Sequence Commands (序列命令)
  • /pak/* → PAK File Commands (PAK文件命令)
  • /panoramic/* → Panoramic Camera Commands (全景相机命令)
  • /pawn/* → Pawn Commands (Pawn命令)

3. Update cmd.md

For ADDED commands:

  1. Read current cmd.md
  2. Locate appropriate handler section (e.g., "摄像机命令 (/camera/*)")
  3. Insert new command entry in logical position (group by subcommand)
  4. Format: - vget/vset /command/path [args] - Description
  5. Add example if command has complex syntax

For MODIFIED commands:

  1. Find existing entry in cmd.md
  2. Update parameter list or description
  3. Add note if behavior changed significantly

For DELETED commands:

  1. Remove entry from cmd.md
  2. Or add deprecation note if command moved/renamed

Format consistency:

  • Match existing indentation (2 spaces for bullet points)
  • Use Chinese descriptions (cmd.md is bilingual with Chinese primary)
  • Include parameter placeholders: [id], [str], [float], [x] [y] [z]
  • Add ⭐ emoji for important/frequently-used commands
  • Use code blocks for examples when needed

4. Update docs/ Files

Based on command handler, update relevant documentation:

HandlerPrimary Doc Files
CameraHandlerdocs/api/camera-commands.md (if exists)
ObjectHandlerdocs/api/object-commands.md (if exists)
CaptureActorHandlerdocs/tutorials/trajectory-recording.md
DatasetAutomationHandlerdocs/api/dataset-automation.md (if exists)

Update strategy:

  1. Check if corresponding doc file exists in docs/
  2. If exists: Add command reference with English description
  3. If not exists: Note in report that manual doc creation may be needed
  4. Maintain RST or Markdown format consistency with existing files

5. Generate Sync Report

After updates, report:

Command Documentation Sync Report
==================================

Commands Detected:
- ADDED: 3 commands
  - vget /camera/[id]/use_fast_capture
  - vset /camera/[id]/use_fast_capture [uint]
  - vset /captureactor/time_dilation [float]

- MODIFIED: 1 command
  - vset /object/[name]/location [x] [y] [z] (updated description)

- DELETED: 0 commands

Files Updated:
- cmd.md
  - Line 50: Added use_fast_capture commands
  - Line 101: Added time_dilation command

- docs/tutorials/trajectory-recording.md
  - Section "Recording Control": Added time_dilation example

Notes:
- All changes applied successfully
- No conflicts detected
- Consider adding Python client examples for new commands

Command Format Reference

UnrealCV command patterns:

Basic format:

vget /handler/subcommand [arg1] [arg2] ...
vset /handler/subcommand [arg1] [arg2] ...

Parameter types:

  • [id] - Camera ID (integer or CID format)
  • [str] - String argument
  • [name] - Object name
  • [float] - Floating point number
  • [uint] - Unsigned integer
  • [x] [y] [z] - 3D coordinates
  • [pitch] [yaw] [roll] - Rotation angles
  • [r] [g] [b] - RGB color values
  • [filename] - File path string

Example entries in cmd.md:

- vget /camera/[id]/location - 获取摄像机位置
- vset /camera/[id]/location [x] [y] [z] - 设置摄像机位置
- vget /camera/[id]/lit [filename] - 获取 RGB 图像
- vset /object/[name]/color [r] [g] [b] - 设置物体标注颜色

Important Guidelines

  1. Preserve existing structure: Don't reorganize cmd.md sections unnecessarily
  2. Match language: cmd.md uses Chinese descriptions, docs/ may use English
  3. Check duplicates: Ensure command isn't already documented before adding
  4. Verify syntax: Command path must match C++ BindCommand exactly
  5. Context from session: Use discussion context to write accurate descriptions
  6. Report all changes: List every file modified with line numbers
  7. Handle errors gracefully: If cmd.md format is unexpected, report and suggest manual review

Conflict Resolution

If command already exists in cmd.md:

  • Same signature: Update description if session provides better info
  • Different signature: This is a MODIFIED command, update parameters
  • Ambiguous: Report conflict and ask for clarification

If multiple handlers register same command path:

  • Report the conflict
  • Check which handler is primary (usually first in CommandDispatcher setup)
  • Document both if they have different behaviors

After Execution

Provide summary:

  • Number of commands added/modified/deleted
  • Files updated with change counts
  • Any commands that need manual documentation review
  • Suggested follow-up actions (e.g., update Python client wrapper)

Example Output

✓ Scanned session for command changes
✓ Detected 2 new commands in CameraHandler.cpp

Command Changes:
  ADDED:
    - vget /camera/[id]/use_fast_capture
    - vset /camera/[id]/use_fast_capture [uint]

Documentation Updates:
  ✓ cmd.md (2 additions)
    - Line 50-51: Added fast capture commands under "摄像机命令"

  ⚠ docs/api/camera-commands.md does not exist
    - Consider creating comprehensive camera API documentation

  ✓ Updated successfully

Next Steps:
  - Test commands via Python client: client.request('vget /camera/0/use_fast_capture')
  - Add usage examples to docs/tutorials/
  - Update Python wrapper if needed