本文へ移動
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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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月13日 更新

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月13日 更新

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月13日 更新

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月13日 更新

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月13日 更新

CEO/founder-mode plan review. Rethink the problem, find the 10-star product, challenge premises, expand scope when it creates a better product. Three modes: SCOPE EXPANSION (dream big), HOLD SCOPE (maximum rigor), SCOPE REDUCTION (strip to essentials).

日本語の概要は準備中です。原文の説明を表示しています。

Actual-Chat/actual-chat562026年10月13日 更新

Actual-Chat のスキルをすべて見る

このスキルの問題を報告する