本文へ移動
cccskills

Divine

@divinevideo

組織

Your playground for human creativity. Six-second looping videos, built on Nostr — no AI slop.

114 スキル1 リポジトリ 265

スキル(114)

検索で絞り込む

Use database cache when external APIs aren't reliably idempotent. Use when: (1) External API claims idempotency but returns different values for same input, (2) Re-running a script creates duplicate resources, (3) Need stable identifiers across runs but external service generates new ones. Pattern: check database cache first, only call external API for genuinely new items, cache the result.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix macOS app hard crashes (EXC_CRASH / SIGKILL) caused by accessing TCC-protected APIs without the matching Info.plist usage description key. Use when: (1) App crashes immediately when touching Photos, Contacts, Calendar, Reminders, Location, Microphone, Camera, Screen Recording, etc., (2) Crash report shows `Exception: EXC_CRASH (SIGKILL)` with `Termination namespace: TCC`, (3) Crash stack includes `TCC.__TCC_CRASHING_DUE_TO_PRIVACY_VIOLATION__`, (4) Termination details contain "This app has crashed because it attempted to access privacy-sensitive data without a usage description", (5) Flutter macOS publish / gallery-save flow crashes on Gal.putVideo, PHPhotoLibrary, CNContactStore, etc. Critical distinction: macOS does NOT return a deny error — it SIGKILLs the process. This skill also covers the NSPhotoLibraryUsageDescription vs NSPhotoLibraryAddUsageDescription distinction that trips many apps.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix content serving failures caused by metadata (KV store, database) being out of sync with actual storage (GCS, S3, filesystem). Use when: (1) Content exists in storage but API returns "processing" or "not ready", (2) Webhook callbacks that update metadata failed silently, (3) Backfill scripts generated content but didn't update status records, (4) HLS/transcoded content exists but transcode_status is not "Complete", (5) Handler checks metadata status BEFORE checking if content actually exists in storage.

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

divinevideo/divine-mobile2652026年10月21日 更新

Debug 404 errors for API endpoints in microservice architectures where code exists but routing sends requests to wrong service. Use when: (1) API endpoint returns 404 despite code being deployed, (2) Multiple services share same hostname via HTTPRoute/Ingress, (3) Service logs show "Health server" but you expected API endpoints, (4) Monorepo deploys multiple images and endpoint might be in different service than expected. Covers: verifying which service handles which paths, HTTPRoute path precedence, testing endpoints directly from inside cluster, matching image tags across services.

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

divinevideo/divine-mobile2652026年10月21日 更新

Optimize Nostr relay queries using NDK batch fetching. Use when: (1) Checking existence of many events one-by-one is slow, (2) Loop with individual fetchEvents calls causing N+1 query problem, (3) Need to verify multiple addressable events (Kind 30000+) exist. NDK's fetchEvents accepts arrays for tag filters (#d, #p, #e, authors), enabling batch queries that reduce hundreds of round-trips to a single request.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix duplicate Nostr events (Kind 30000+ parameterized replaceable events) caused by missing d-tag. Use when: (1) Same content appears multiple times on relay for same pubkey, (2) Events aren't being replaced/updated as expected, (3) Publishing NIP-71 video events (Kind 34236) or other addressable events and seeing duplicates. The d-tag is REQUIRED for addressability - without it, each publish creates a new non-replaceable event.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix invisible or poorly visible SVG icons in Flutter when using flutter_svg package. Use when: (1) SVG icons appear invisible despite correct colors in the SVG file, (2) Using Opacity widget to change icon visibility/state but icons don't render properly, (3) Tab bar or navigation icons disappear or have wrong colors, (4) Icons with fill="white" don't show on dark backgrounds. The fix is to use ColorFilter.mode() instead of Opacity widget for SVG icon state styling.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix git pre-commit hook failures in Flutter projects when using git worktrees. Use when: (1) Pre-commit hook with `flutter analyze` fails during `git commit` but passes when run manually, (2) Hook output shows "Resolving dependencies..." then immediately fails with no actual analysis errors, (3) Working in a git worktree (created via `git worktree add`). Root cause: git sets GIT_DIR to a worktree-style path during hook execution, which breaks `flutter pub get` (called internally by `flutter analyze`). Fix: unset GIT_DIR, GIT_INDEX_FILE, and GIT_WORK_TREE before flutter/dart commands in the hook.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix slow Flutter app startup caused by blocking network operations during initialization. Use when: (1) App takes several seconds to show first frame, (2) Startup logs show sequential network operations (WebSocket connections, API calls), (3) Services initialize during startup that aren't needed until user authenticates. Covers: converting sequential network ops to parallel with Future.wait(), deferring service initialization until actually needed (lazy init), and identifying blocking operations in Riverpod/provider initialization chains.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix infinite rebuild loop in Flutter when using PageView with URL-based routing (GoRouter) and reactive state management (Riverpod/BLoC). Use when: (1) RAPID REBUILD warnings appear in console (#20+), (2) "setState() or markNeedsBuild() called during build" errors from ValueListenableBuilder, (3) Video feed or list-based PageView is frozen and won't swipe, (4) Overlay or UI elements flicker between visible/invisible rapidly, (5) Logs show item "moved from index X to Y" repeatedly. Caused by tracking items by ID and updating URL when reactive list reorders.

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

divinevideo/divine-mobile2652026年10月21日 更新

Separate a messy working tree with multiple tangled features into clean, focused PRs. Use when: (1) Working tree has uncommitted changes from multiple features mixed together, (2) Need to create a PR for just one feature from a mixed working tree, (3) "git stash pop" fails with "already exists, no checkout" for untracked files, (4) Pre-commit hooks block commits due to unrelated untracked files with errors, (5) Interface changes in one feature break consumer files from another feature in the same working tree. Covers git stash workflows, branch separation, conflict resolution, and pre-commit hook workarounds. Never stack PRs — always target main.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix Gorse 0.5.x recommendation engine silently disabled or degraded due to config incompatibility with 0.4. Use when: (1) Gorse 0.5 recommendations are poor/empty despite having data, (2) collaborative filtering appears disabled even though [recommend.collaborative] section exists, (3) migrating Gorse config from 0.4 to 0.5, (4) old config keys like [recommend.popular], [recommend.neighbors], [recommend.online], [recommend.offline] are being used with Gorse 0.5. Critical: type="mf" must be explicitly set in [recommend.collaborative] or CF is silently disabled (default "none").

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix Riverpod "Cannot use Ref or modify other providers inside life-cycles/selectors" crash in @riverpod provider bodies. Use when: (1) Crash during provider disposal with this exact error message, (2) Using keepAlive() with timer-based disposal, (3) Async callbacks (.then, .catchError) try to use ref.read() or ref.invalidateSelf(), (4) Error occurs after ref.onCancel/onResume/onDispose callbacks fire. Solution: wrap ref operations in try-catch or avoid using ref in async callbacks entirely.

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

divinevideo/divine-mobile2652026年10月21日 更新

Debug and fix infinite widget rebuild loops in Flutter apps using Riverpod state management. Use when: (1) Logs show "RAPID REBUILD" warnings or 50+ rebuilds in seconds, (2) UI becomes unresponsive or shows same content repeatedly, (3) Bug only affects slower devices or poor network conditions, (4) Provider watching creates circular dependencies with router/URL state. Covers ref.watch() overuse, watch+listener redundancy, and transitive dependency chains.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix "ref.listen can only be used within the build method of a ConsumerWidget" assertion error in Flutter Riverpod 3.x. Use when: (1) ConsumerStatefulWidget crashes with "Failed assertion: line 492 pos 7: 'debugDoingBuild'" in flutter_riverpod consumer.dart, (2) ref.listen is called inside initState, addPostFrameCallback, or any lifecycle method other than build(), (3) All widget tests fail with this assertion from scheduler callback. Applies to flutter_riverpod 3.0+ with ConsumerStatefulWidget.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix Riverpod "Using ref when widget is unmounted is unsafe" error in ConsumerStatefulWidget. Use when: (1) Error thrown in dispose() when calling ref.read(), (2) Need to call a service method during widget cleanup, (3) ConsumerStatefulWidget needs to perform actions on provider when user navigates away. Solution: cache the service/notifier in initState with late final.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix Flutter PageView "snap back" or scroll position reset issues on provider/state rebuilds. Use when: (1) PageView scrolls then snaps back to previous page after state update, (2) Scroll position resets when Riverpod/Provider rebuilds, (3) Feed scrolls back to top on data refresh, (4) PageView loses position after orientation change or widget rebuild.

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

divinevideo/divine-mobile2652026年10月21日 更新

Review all uncommitted changes before pushing. Checks for dead code, stale comments, CLAUDE.md rule violations, unused imports, and inconsistencies introduced during the current session. Invoke with /review-before-commit.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix "content disappears after publishing" bugs caused by REST API indexing lag. Use when: (1) User publishes content but it doesn't appear in their feed/profile, (2) REST API returns stale data immediately after write operations, (3) Async indexing backends (ClickHouse, Elasticsearch, etc.) haven't processed new events, (4) Content shows briefly then vanishes on refresh. Applies to any system with separate write path (WebSocket/direct DB) and read path (REST API with async indexing).

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

divinevideo/divine-mobile2652026年10月21日 更新

Deploy funnelcake (api + relay) to ANY environment (production, staging, poc) on GKE via ArgoCD. Use when: (1) Deploying new funnelcake commits, (2) Building Docker images for GKE (amd64), (3) Running ClickHouse migrations, (4) Troubleshooting ImagePullBackOff errors, (5) Syncing staging/poc after production deployment. Covers complete workflow with PRE-FLIGHT CHECKLIST to prevent common deployment failures.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix "DownloadObjectRequest not found" error in google-cloud-storage Rust crate. Use when: (1) Trying to download objects from GCS using the Rust SDK, (2) Looking for a download request type in http::objects::download module, (3) Compile error about missing type. The download_object method uses GetObjectRequest from the get module, not a separate DownloadObjectRequest type.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix iOS AVPlayer "CoreMediaErrorDomain error -12939 - byte range length mismatch" or similar video streaming failures when a proxy/edge/CDN service sits between the client and object storage (GCS, S3, R2). Use when: (1) iOS video fails with -12939 "byte range length mismatch - should be length 2 is length N", (2) curl with Range: bytes=0-1 returns full file instead of 2 bytes, (3) one URL path works with Range but another path to the same storage doesn't, (4) proxy advertises Accept-Ranges: bytes but returns 200 with full file for range requests. The root cause is typically a proxy handler that constructs a new request to the backend without forwarding the client's Range header.

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

divinevideo/divine-mobile2652026年10月21日 更新

plan

無料

Investigate a GitHub issue and produce a structured implementation plan. Fetches issue details, explores the codebase, identifies affected layers (UI, BLoC, Repository, Client), and outputs a step-by-step plan with files to modify, testing strategy, and risk assessment. Works for bugs, features, and tasks. Invoke with /plan.

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

divinevideo/divine-mobile2652026年10月21日 更新

Fix silent data loss when mutating Nostr replaceable events (Kind 0 profile, Kind 3 contact/follow list, Kind 10002 relay list, etc.) in client apps. Use when: (1) Following someone wipes the user's entire follow list, (2) Updating profile metadata loses existing fields, (3) Fresh browser session or mobile login causes data loss on first action, (4) Replaceable event mutation uses stale or null cached state. Root cause: Nostr replaceable events are full-replace (no partial update), so publishing based on stale/unloaded cache overwrites the canonical version. Applies to any Nostr client using React, Flutter, or similar reactive frameworks where query state may not be loaded when a mutation fires.

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

divinevideo/divine-mobile2652026年10月21日 更新

あなたのアカウントですか? GitHub 連携でクリエイターページにまとめられます