logging
Use when reading or writing any ShoMetrics log.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when reading or writing any ShoMetrics log.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when changing or reviewing code that crosses major application boundaries such as settings, Property Inspector, actions, runtime sources/helpers, rendering, persistence, validation, generated contracts, IPC, version-skewed helper/plugin APIs, or adapters. Keep boundaries explicit and avoid over-engineered plumbing, option bags, duplicated models, and defensive code for impossible states.
Use when writing, reviewing, or changing code in this repo for language-neutral naming, ownership boundaries, comments/documentation, test structure, exception scope, and avoiding speculative abstractions; pair with language-specific skills such as typescript-coding-style or csharp-coding-style when applicable.
Use when writing, reviewing, or changing C#/.NET code in this repo, especially packages/source-windows Core, Helper, ControlPanel, .csproj, .editorconfig, NativeAOT, nullable, async/threading, and modern C# feature decisions. Pair with coding-style for language-neutral naming, comments, tests, and ownership rules.
Use when changing Sho Metrics Hub internationalization, including Property Inspector user-visible copy, Stream Deck manifest locale JSON, i18n message groups, locale resolution, generated i18n scripts, supported locales, translation wording, or dev locale override behavior.
Use when making or reviewing naming changes in this repo, including function verb choices, domain vocabulary, boundary vocabulary, file/type/export names, stored/resolved/settings field names, renderer contract names, and historical vocabulary cleanup.
Use when changing lifecycle hooks, polling, rendering, caching, startup, IPC, benchmarks, throttling, queueing, or any code that may run often enough to affect responsiveness or resource usage.
| name | logging |
| description | Use when reading or writing any ShoMetrics log. |
Use project logging facilities and keep logs owned, bounded, and cheap.
console or call streamDeck.logger directly outside the wrapper.ILogger. Configure Serilog only at host/bootstrap
boundaries.import { logger } from "../logging/logger";
const log = logger.for("Action:MyFeature");
log.atDebug()
.everyMs("high-frequency-sample", 5000)
.log(() => `sample=${JSON.stringify(expensiveObject)}`);
private readonly ILogger<MyWorker> _logger;
_logger
.AtWarning()
.Every(TimeSpan.FromSeconds(30))
.Log("Hardware refresh is slow. durationMs={DurationMs}", durationMs);
IsEnabled(...),
.everyMs(), or C# ILogger throttle extensions for polling loops, hardware
refresh, repeated IPC failures, and repeated malformed wire data.debug and
throttled.packages/hub/com.ez.sho-metrics.sdPlugin/logs/com.ez.sho-metrics.0.log
%appdata%\Elgato\StreamDeck\Plugins\com.ez.sho-metrics.sdPlugin\logs. You do not need to search both locations.%appdata%\Elgato\StreamDeck\logs\
%appdata%\Elgato\StreamDeck\logs\com.ez.sho-metrics.0.log%appdata%\Elgato\StreamDeck\logs\StreamDeck.log.1.log, .*.log under same directory if applicable