본문으로 건너뛰기
cccskills
무료GitHub에 공개

vibe-waveform

Look at a real track's waveform the way the app draws it, without the app. The probe decodes a file with the production waveform loader and draws it with the production renderer, laid out as the iOS scrubber lays it out, at any time and zoom, in any style, palette and appearance. It writes a PNG, and prints Spectrum's sections, the mix and band levels behind each pixel, and the progressive deliveries of a streaming load. It builds at any git ref, so one command draws main and the working tree one above the other. Use when a waveform looks wrong in a screenshot (a kick's shape, a color edge, a jump while loading), before and after any change under vibe-libs' waveform/Waveform, waveform/WaveformStyles or waveform/WaveformView, to show a look change to the user, or to put pictures in a PR.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

실행 점수 미검증

설치 방법 보기

포함된 파일(2)

  • SKILL.md4.9 KB
  • scripts/waveform.py2.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Looking at a waveform

The probe is VibeBenchComponents --waveform (Tests/BenchComponents/VibeBenchComponentsWaveformProbe.mm). It is the component benchmarks' tool, so perf.py builds it at any ref (vibe-perf). waveform.py drives it. Prerequisites are those of vibe-perf: Xcode, make setup and brew install ffmpeg.

W=.claude/skills/vibe-waveform/scripts/waveform.py
$W draw "<file>" --at 29.5 --out build/waveform/now.png              # the working tree
$W draw "<file>" --ref main --at 29.5 --out build/waveform/main.png  # any ref
$W compare "<file>" --at 29.5 --out build/waveform/cmp.png           # main on top, the working tree below
$W compare "<file>" --base v1.16 --head main --at 29.5 --out build/waveform/cmp.png
$W draw "<file>" --at 29.5 --sections --levels 0.01                  # what the picture is drawn from
$W options                                                            # every probe option

The first build of a ref takes a few minutes. A commit's binary is kept under build/bench-components/bin/, and the working tree rebuilds incrementally. Write pictures under build/ or the scratchpad, never into the tree.

Matching a screenshot

The defaults are an iPhone 17 Pro's card: 402 by 180 pt at 3x, Spectrum, RGB, By section, dark, the playhead line at the center. --at is the time under the playhead. The screenshot's elapsed label rounds down, so try the second it shows and the half second after.

The zoom defaults to the style's deepest. A screenshot with about eight beats across the view is at the deepest zoom. --span sets seconds across the view, and --fraction 0.48 is the scrubber's zoom at rest. The zoom is clamped as the scrubber clamps it, and the probe prints the zoom it drew. --style takes any registry identifier: detailed, three_band, spectrum, basic and the rest. --precise, --palette blue and --light set the rest of the look. A Detailed style at deep zoom reads the file's own samples, as the scrubber's delegate does.

A user's track is usually findable. Search Spotlight by the title in the screenshot, mdfind "kMDItemFSName == '*<title>*'c". Never copy a user's music into the repository.

What it prints

  • --sections lists Spectrum's sections over the whole track: each one's start in seconds and the low, mid and high share of its mix. A wrong color edge is usually visible here before it is visible in a picture.
  • --levels STEP lists, every STEP seconds across the view, the mix's peaks and loudest window and each band's loudest window. These are the numbers every height is drawn from (vibe-libs' waveform/WaveformStyles/AGENTS.md, Level mapping). A shape question, such as a round kick, is settled here. Compare the peaks, which jump at a hit, with the loudest windows, which build.
  • --deliveries DIR replays a streaming load: a snapshot every --every seconds of audio (default 10), each drawn settled as DIR/NNN.png, the complete waveform last. compare also tiles each side's into DIR/base.png and DIR/head.png. A Mac decodes a local file before the loader's first 0.1 s delivery, so the replay stands in for a phone's or a stream's pace. It draws targets, not the morph's ease between them.

Traps

  • Pictures are drawn settled. The morph's ease, the scroll and the display link are not in them. Motion, smoothness and timing need the app (vibe-debug).
  • The bench builds Release, so no #if DEBUG seam runs, such as the debug decode pace. That is why --deliveries replays the decode itself.
  • An older ref lacks newer probe features. perf.py writes feature flags for a grafted ref, and a probe feature the ref's sources lack prints that it is missing rather than failing the build (--sections before VibeSpectrumSections). A ref with no Spectrum renderer or no zoom steps cannot build the probe at all, and --waveform answers that its build has none.
  • Keep the probe's view in step with the scrubber. It copies WaveformScrubberView's window, zoom clamp, Normalize, playhead line and Wiggle's sampling width. A change to any of those there needs the same here, or the probe draws something the phone does not.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Check and document Vibe's audio quality and conformance. Runs public conformance and torture corpora (IETF CELLAR FLAC files, ISO/IEC 14496-26 Layer III, FFmpeg FATE samples, McGill WAVE and AIFF samples, EBU BW64 tests, Chromium and Firefox media tests, TagLib test data) through the real decoders. Valid files must match their FLAC MD5 or reference decode within the ISO accuracy limits, decode to the length the handle states and seek exactly. Every file must finish with finite samples. Also regenerates docs/audio-quality.md's charts and its corpus results matrix. Use after changing a decoder, a parser, the file-open path or the resampler, before a release, when asked whether decoding is correct or conformant, or to update the audio quality page.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

cmicali/vibe492026년 10월 24일 업데이트

Launch, drive, inspect, and visually verify the Vibe app — macOS, and the iOS simulator loop (launch-ios.sh, the debug-ios.sh command channel, the drive-ios.sh touch driver for taps and drags, silent flags, screenshots, host-side log streaming). Use whenever a change needs end-to-end verification, a screenshot of the running app, playback/UI state inspection, or appearance (light/dark) testing.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

cmicali/vibe492026년 10월 24일 업데이트

vibe-perf

무료

Measure Vibe's performance and compare two versions of the code. VibeBenchComponents drives the production decode, open, seek, resample, pitch, waveform, tempo/key, meter, metadata and cache code in-process with no app, counting retired instructions as well as wall and CPU time; perf.py builds it at any git ref and runs two refs interleaved (make bench-components); profile.sh finds one benchmark's hotspots; --analyze proves an analyzer change exact. Also owns the performance page (docs/performance.md): component charts per release (make bench-components-releases), app benchmarks (make bench-app), both (make bench-releases), redraw (make bench-report). Use before and after any change that could move cost, to find where time goes, to choose between implementations, to back a performance claim with numbers, or when asked to update, rerun or regenerate the performance page for a release, pre-release or new machine.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

cmicali/vibe492026년 10월 24일 업데이트

vibe-pr

무료

How to write a Vibe pull request title and description — simple, clear English that says what the change does, its benefit, and why, with pros and cons, charted results, and screenshots where they apply. Use when opening a pull request, or writing or rewriting a PR title or description.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

cmicali/vibe492026년 10월 24일 업데이트

Build, sign, notarize, and ship Vibe on both platforms — the macOS Developer ID (make release) and App Store (make appstore-build) paths, the iOS App Store path (make appstore-build-ios), the GitHub release publish (make github-release), the Homebrew tap bump (make brew-set-version), the localized product-page metadata upload (make appstore-upload-metadata), the shared App Store Connect API key and its Admin-role requirement, and the signing traps each script preflights. Use when cutting a release, distributing a build, shipping or TestFlighting the iOS app, updating App Store copy or screenshots, or debugging a signing/notarization/upload failure.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

cmicali/vibe492026년 10월 24일 업데이트

Stress, soak, fuzz, and torture the running Vibe app against a folder of real audio files — seeded random controller actions without pointer input, with consistency, leak, hang, and crash oracles, a single-playlist skip/seek torture suite for the delivery races that only open when transport outruns the metadata scan, a deterministic cloud-loading scenario suite over a fake file provider (download ordering, the foreground hold, the open deadline), plus the sanitizer (ASan/UBSan/TSan) and malloc-debug build matrix. Use for soak or endurance runs, memory-leak and resource-growth hunting, race hunting, fuzzing the file-loading path, hammering skips and seeks on a large playlist, testing cloud/placeholder loading order, or minimizing a failing run to a repro.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

cmicali/vibe492026년 10월 24일 업데이트

cmicali의 스킬 모두 보기

이 스킬의 문제 신고