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

soniox-sweep

Inspect and manually purge the Soniox artifacts — transcriptions and uploaded audio files — that offline transcription leaves behind, on dev or prod. Use when offline transcription silently stops working, when Soniox answers 429 `limit_exceeded`, when `SonioxTranscriberTest.OfflineTranscribeWorks` and `CleanerDeletesEnqueuedArtifacts` fail together, or when the user says "sweep Soniox", "soniox/sonoix sweep", "sonoix swipe", "purge Soniox", "check Soniox files", or "is Soniox at the cap".

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

설치 방법 보기

포함된 파일(2)

  • SKILL.md5.0 KB
  • sweep.mjs4.3 KB

SKILL.md(원문)

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

Sweeping Soniox artifacts

Every offline transcription leaves two artifacts on Soniox: the uploaded file and the transcription. Both count against caps enforced per organization, not per key or per project — so dev and prod share one budget, and a backlog on either starves both.

SonioxCleaner deletes both as each transcription ends, and SonioxSweeper sweeps up whatever it dropped every ~4h. This skill is the manual fallback for when they have already fallen behind — enough hosts died mid-transcription, or the deployed server predates the fix.

Two things to know before touching anything

GET /v1/files under-reports. A transcription holds its file, so an account at the cap can list 0 files and 2000 transcriptions. Always look at both, and always delete transcriptions first — deleting one cascades to its file.

The API allows ~500 requests/minute per organization, and live transcription spends from the same budget. A purge that runs flat out both fails with 429 limit_exceeded and breaks transcription for real users while it runs. The script below paces itself at 200/min, serialized. Do not raise the rate or add concurrency. A full 2000-artifact purge takes ~10 minutes; that is the cost.

Keys

EnvironmentKey
dev$CoreSettings__SonioxKey — already in the host/container env
proda key file the user names; default tmp/sonoix-prod.key

The prod key is not in the environment and must be passed explicitly. If a prod sweep is requested without a path, use tmp/sonoix-prod.key and say so. If that file is missing, ask for the path — never fall back to the dev key for a prod request, and never the reverse.

Step 1 — always summarize first, never delete first

node .claude/skills/soniox-sweep/sweep.mjs                                  # dev
node .claude/skills/soniox-sweep/sweep.mjs --key-file tmp/sonoix-prod.key   # prod

Without --purge the script only reports. Report back to the user:

  • totals for both kinds, and how many are older than the cutoff
  • oldest and newest created_at — a newest that is hours or days old means the leak is historical, not live
  • the per-day histogram — bursts on a few days point at restarts/deploys losing SonioxCleaner's in-memory queue; a steady trickle points at a code path dropping ids
  • status counts (completed / error / processing)

Exactly 2000 transcriptions with nothing recent is the signature of a full account: uploads are already 429ing, so nothing new can be created.

Step 2 — ask before purging

Never purge without explicit confirmation. State the environment, the count, the age range, and the ~10 min/2000 artifacts it will take, then wait for a yes. Deletion is irreversible, and on prod it shares the rate limit with live users.

Anything still processing is left alone — Soniox answers its delete with 409, and it may be a live transcription running on another host.

Step 3 — purge

node .claude/skills/soniox-sweep/sweep.mjs --key-file tmp/sonoix-prod.key --purge --older-than 1h

--older-than defaults to 1h and accepts 15m-style values. Keep it above the longest in-flight offline transcription so a live one isn't deleted mid-flight: 1h is safe, and 15m — matching SonioxSweeper.Options.Retention — is the practical floor.

The script re-lists both kinds afterwards; confirm it ends at 0 left, or explain what didn't go.

If the account keeps filling up

A purge buys time, it isn't the fix. Check, in order:

  1. Is the deployed server new enough? SonioxSweeper only learned to sweep transcriptions in 11bbc663de (2026-08-21). An older pod sweeps files only, sees the empty file list, and reports nothing — while transcriptions pile up invisibly. This is exactly how prod reached the cap on 2026-08-21.
  2. Server logs. SonioxCleaner logs Enqueue failed, leaving transcription {TranscriptionId} and file {FileId} on Soniox at Warning; SonioxSweeper logs Sweep: deleted N orphaned ... at Information and Sweep: rate-limited, retrying ... at Warning. Search for Soniox via /gcloud-prod-logs or /gcloud-dev-logs.
  3. Restart churn. The cleaner's queue lives in memory, so every host that dies mid-transcription drops the ids it holds. The sweeper is the backstop — if the backlog outruns one sweep per 4h, lower SonioxSweeper.Options.Period.

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

Delete the `-bak` backup branches that `/prepare-merge` leaves behind, local and on origin, once the work they back up has merged. Use when the user says "remove my bak branches", "clean up bak branches", "delete the backups", or "/clean-bak-branches".

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

Actual-Chat/actual-chat562026년 10월 19일 업데이트

create-pr

무료

Use when work on a branch is finished and the next step is a pull request — "create a PR", "open a PR", "push and PR this", "/create-pr" — when a draft PR should be marked ready for review — "mark the PR ready", "undraft it", "it's ready for review" — or right after either has happened and the team has not been told about it yet.

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

Actual-Chat/actual-chat562026년 10월 19일 업데이트

Search Google Cloud (GKE) server logs of the DEV environment (dev.voxt.ai). Use when troubleshooting anything that needs the server side of the story — stream stalls, RPC peer changes / reconnects, watchdog closures, mesh/node churn, pod restarts — or when the user says "check GCP logs", "check server logs on dev", or gives a dev.voxt.ai timeline from a client console log.

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

Actual-Chat/actual-chat562026년 10월 19일 업데이트

Search Google Cloud (GKE) server logs of the PROD environment. Use when troubleshooting a production incident that needs the server side of the story — stream stalls, RPC peer changes / reconnects, watchdog closures, mesh/node churn, pod restarts — or when the user says "check PROD logs", "check production server logs", or gives a production timeline from a client console log.

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

Actual-Chat/actual-chat562026년 10월 19일 업데이트

memories

무료

What this project has already learned the hard way, and where any new such fact belongs. Two jobs. (1) Routing: this project keeps NO per-project Claude memories — read this before writing anything down, and pick a durable home from the list here. (2) An index, by area, of non-obvious facts worth knowing before you guess: debugging rigs and measurements that lie, iOS/WebKit and the tethered iPhone, the Windows app, production and deployment, and general codebase traps. Use before setting up a browser- or server-driven debugging session, when a bug reproduces only on iPhone, in Safari or in the Windows app, before changing deployment configuration or reading store/crash data, when something behaves unexpectedly and you are about to guess why, and whenever you are tempted to record a fact for later.

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

Actual-Chat/actual-chat562026년 10월 19일 업데이트

Review the EF Core migrations a release (or a PR) carries against how Voxt is deployed: a rolling update whose new pods wait for the migration Job, while old pods keep serving. Use before cutting a release branch, before merging a PR that adds a migration, or when the user says "check the migrations", "are the migrations safe to ship", "expand/contract check", "/migration-release-check". Reports risks; never blocks, edits or runs anything on prod.

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

Actual-Chat/actual-chat562026년 10월 19일 업데이트

Actual-Chat의 스킬 모두 보기

이 스킬의 문제 신고