소스 정보
- 저장소
- applicate2628/Orchestrarium
- 최근 소스 활동
- 2026년 7월 14일 22:36
- 감지된 SKILL.md 언어
- 영어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/applicate2628/Orchestrarium --skill analyzing-video-bugs명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | analyzing-video-bugs |
| description | Video bug analysis: inspect UI recordings frame by frame. |
This skill processes an existing video file showing a UI bug, animation glitch, layout jump, or visual artifact, and turns it into a small set of frames an agent can actually read. It applies to any video bug regardless of origin — whether the user recorded the repro themselves and shared a path, or the agent captured the recording via the screen-capture workflow in $windows-gui-manual-testing. The skill begins after a video file exists on disk; it does not own video capture.
The Read tool reads images (PNG/JPG/GIF) and PDFs, but not video files. To analyze a video bug you must first extract frames with ffmpeg, then Read the resulting images.
Hard crop gate: before reading, judging, or reporting any cropped frame as full-window evidence, verify the crop against an uncropped full-desktop/full-frame image. It must include the complete target window; for normal overlapped windows the top-right close button must be visible. If the crop is clipped or the close-button anchor is missing, discard those frames and re-extract from the full capture or a corrected rectangle.
$windows-gui-manual-testing — parent visual-verification workflow; owns environment/theme context, evidence-type choice (screenshot vs short video vs frame sequence), screen capture when no recording exists, and structural-vs-cosmetic classification of UI issues.$bug-hunting — general diagnostic-logging methodology for runtime bugs whose cause is not obvious from inspection alone; Rule 4 there points back here for visual evidence.# Both should print a path. If either is empty, fall back to:
# winget install Gyan.FFmpeg --accept-source-agreements --accept-package-agreements
where.exe ffmpeg
where.exe ffprobe
On Windows the winget install puts ffmpeg under C:\Users\<user>\AppData\Local\Microsoft\WinGet\Links\ffmpeg.exe — this path may not be in the current shell's PATH even when winget reports "installed". Always check where.exe ffmpeg and fall back to the full path when needed.
Use a scratch folder inside the repo (.scratch/video-frames/) so the output never accidentally gets committed — the repo's /.scratch/ rule in .gitignore already covers this. Do not put frames in the system temp folder — Read needs absolute paths and the workflow gets much easier when frames live next to the repo.
ffprobe -v error -show_entries format=duration,size:stream=width,height,r_frame_rate \
-of default=noprint_wrappers=1 "<video-path>"
Decide a coarse sampling rate based on duration:
60 s → 0.5 fps or sample only flagged ranges
ffmpeg -v error -i "<video>" -vf "fps=2,scale=1158:-1" -q:v 4 frame_%02d.jpg
scale=1158:-1 shrinks 1080p+ video so each frame is ~50–70 KB JPEG. 1158 px wide is enough to read UI text in most apps; go wider only if you cannot tell what a button says.-q:v 4 is a good middle for JPEG (lower = better quality).%02d zero-pads filenames so they sort correctly in Glob output.GetWindowRect if available, but verify it against one full-desktop frame before reading cropped frames; virtual-screen coordinates and DPI can make the first crop wrong. If the crop lacks any window edge or the close-button anchor, discard it and re-extract.Read all coarse frames in parallel (one Read tool call per frame, batched in a single message). Identify the stable states (which frames look identical) and where the transitions are.
For many frames, build contact sheets before opening individual images:
ffmpeg -v error -framerate 4 -i "frame_%02d.jpg" \
-vf "scale=550:-1,tile=4x9:margin=8:padding=4:color=white" \
-frames:v 1 sheet.jpg
On Windows ffmpeg builds, -pattern_type glob may be unsupported; prefer numbered patterns such as frame_%02d.jpg.
Coarse sampling almost always straddles the moment of change. Use ffmpeg's scene detector to get precise timestamps:
ffmpeg -i "<video>" -vf "select='gt(scene,0.03)',showinfo" -an -f null - > scene.log 2>&1
grep -E "pts_time" scene.log
scene is the normalized frame-difference score: 0.03 catches most UI transitions, 0.1 is more selective. The pts_time values are your transition timestamps. Sometimes transitions come in pairs ~100–200 ms apart — the second timestamp is usually the "after" state and the first is mid-transition. This is the signal worth investigating.
For low-contrast layout shifts, try thresholds in the 0.015 to 0.03 range and cross-check against coarse frames. Scene detection is a locator, not a verdict.
Re-extract at higher rate over a narrow window:
ffmpeg -v error -ss <start> -t <duration> -i "<video>" \
-vf "fps=15,scale=1158:-1" -q:v 3 dense_%02d.jpg
Then read dense frames around each suspicious timestamp.
For one-frame bugs, use the source frame rate (often 60 fps) and sample several repeated transitions, not just the first clean one:
ffmpeg -v error -ss <start> -t 0.55 -i "<video>" \
-vf "crop=<w>:<h>:<x>:<y>,fps=60,scale=1200:-1" -q:v 3 dense_%03d.jpg
ffmpeg -v error -framerate 60 -i "dense_%03d.jpg" \
-vf "scale=400:-1,tile=6x6:margin=8:padding=4:color=white" \
-frames:v 1 dense_sheet.jpg
Only use the crop=<w>:<h>:<x>:<y> dense-sampling form after the hard crop gate passed. If it has not passed, dense-sample the full frame first.
If the bug is intermittent or reported "between frames", inspect dense sheets from at least 3-5 transitions and cover both directions of the UI state change when both directions exist.
When two adjacent extracted frames have identical file sizes (bytes), they are usually the same source frame decoded twice — useful for confirming a stable state vs a real transition:
ls -la dense_*.jpg | awk '{print $5, $9}'
If dense_05.jpg and dense_06.jpg are both 54231 bytes and dense_07.jpg is 57864 bytes, the change happened between frame 6 and 7.
Coarse JPEGs can blur subtle UI details (cursor highlight, selected-state shading, 1 px borders). For the final root-cause check, pull individual frames at native resolution as PNG:
ffmpeg -v error -ss <ts> -i "<video>" -frames:v 1 probe_<ts>.png
These are large (700 KB+) but lossless, and the Read tool handles them fine.
git add .scratch/video-frames/ — that folder must stay local.$windows-gui-manual-testing step 3 (Obtain and analyze video evidence) to record one, then return here for analysis.If the bug is described verbally without any video or screenshot, decide which path applies:
$windows-gui-manual-testing directly (single screenshot is usually enough).$bug-hunting and start with diagnostic logging.coarse extraction: low-fps frame dump used to find candidate transition windows.dense sampling: high-fps frame dump over a narrow window around a known transition.native-resolution PNG: lossless single-frame snapshot used when subtle pixel-level detail matters.pts_time: presentation timestamp from ffmpeg's showinfo output; the time at which a frame is meant to be displayed.scene-change pair: two pts_time values close together; first usually marks the start of a transition, second the commit.SOC 직업 분류 기준