Sync Commands
Documentssync-commandsSync 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
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
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:
- Detect command additions/modifications/deletions from session edits
- Update
cmd.mdwith new command entries - Update relevant files in
docs/directory - 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.cppfiles - 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:
vgetorvset - 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:
- Read current
cmd.md - Locate appropriate handler section (e.g., "摄像机命令 (/camera/*)")
- Insert new command entry in logical position (group by subcommand)
- Format:
- vget/vset /command/path [args] - Description - Add example if command has complex syntax
For MODIFIED commands:
- Find existing entry in cmd.md
- Update parameter list or description
- Add note if behavior changed significantly
For DELETED commands:
- Remove entry from cmd.md
- 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:
| Handler | Primary Doc Files |
|---|---|
| CameraHandler | docs/api/camera-commands.md (if exists) |
| ObjectHandler | docs/api/object-commands.md (if exists) |
| CaptureActorHandler | docs/tutorials/trajectory-recording.md |
| DatasetAutomationHandler | docs/api/dataset-automation.md (if exists) |
Update strategy:
- Check if corresponding doc file exists in
docs/ - If exists: Add command reference with English description
- If not exists: Note in report that manual doc creation may be needed
- 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
- Preserve existing structure: Don't reorganize cmd.md sections unnecessarily
- Match language: cmd.md uses Chinese descriptions, docs/ may use English
- Check duplicates: Ensure command isn't already documented before adding
- Verify syntax: Command path must match C++ BindCommand exactly
- Context from session: Use discussion context to write accurate descriptions
- Report all changes: List every file modified with line numbers
- 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