Skip to content
Back to skills

Logger

ASecurity

Apply the shared logging contract and lifecycle pairing. Use when adding, changing, or reviewing log statements in any driver.

  • 14 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 19, 2026
developmentgodebugging

Works with

  • terminal

Security analysis

A100/100

Scanned October 19, 2026

npx -y skills add adrienm7/ergopti --skill logger --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Logger?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Logger
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/adrienm7-logger/badge)](https://www.skillsdirectory.com/skills/adrienm7-logger)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: logger
description: Apply the shared logging contract and lifecycle pairing. Use when adding, changing, or reviewing log statements in any driver.
---

# Logging

The normative reference is the shared
[`SPEC.md`](../../../static/ergopti_plus/_shared/modules/logger/SPEC.md): it owns
the eight variants, the importance/lifecycle grid, punctuation, and driver
conformance contract. `AGENTS.md` owns the universal English and fail-fast
rules. This skill covers how to apply and verify that contract in practice.

## Log extensively

Under-logging is the default failure. Every meaningful state change, lifecycle
event, decision and failure path gets a line. Future debugging depends on it —
including yours, tomorrow, from a user's log file with no repro.

Selection heuristic: _"would I need this line to diagnose a bug in production?"_
Yes → `info` or above. Only useful during active development → `debug`/`trace`/`done`.
High-frequency events (per keystroke, per frame) → `debug` only.

## The pairing rule is enforced

`start` ↔ `success` and `trace` ↔ `done` must always come in pairs. This is not
cosmetic: **a `START` with no matching `SUCCESS` in a log is the primary signal
of a silent failure**, and the whole convention exists to make that visible.

`tests/meta/infra/logger/test_logger_pairing.ahk` checks this. An unpaired lifecycle call
fails the suite.

Practical consequence: if a function can return early between `start` and
`success`, every early-return path needs its own terminal log — usually an
`error` or `warn`, not a `success`.

## Common mistakes

- **Swallowing an error and logging nothing.** Violates the fail-fast contract
  in `AGENTS.md`. A bare `try … catch {}` is never acceptable; at minimum log
  at `error`.
- **`success` on a path that did not succeed.** A function that could not fulfil
  its contract must say so via return value _and_ log.
- **Setters that do not log.** Every public setter logs its new value at `debug`,
  as specified by the shared logger contract; this makes a boot log reconstruct
  the exact applied config.
- **French log text.** Logs are developer-facing and always English; only UI
  strings are French (see the `i18n` skill).
- **A `start` whose `success` sits after a `return`.** Reads fine, never fires.

## Throttling

High-frequency error paths need a throttle (the hook dispatcher uses a 60 s
per-label cache) or a single failing keystroke floods the log and buries the
context you need. Throttle the _repeat_, never the first occurrence.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.