Skip to content
Back to skills

Logging Scaffold

ASecurity

One-shot scaffold dropping in a structured logger for the project's primary backend language, wiring JSON output, sensible defaults, and example call sites. Use when a backend lacks structured logging and needs it set up.

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
ai-agentspythonrustgobashnodeexpressfastapidjangoflaskgit

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add bakw00ds/yakos --skill logging-scaffold --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Logging Scaffold?

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

Security grade badge for Logging Scaffold
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bakw00ds-logging-scaffold/badge)](https://www.skillsdirectory.com/skills/bakw00ds-logging-scaffold)

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: logging-scaffold
description: One-shot scaffold dropping in a structured logger for the project's primary backend language, wiring JSON output, sensible defaults, and example call sites. Use when a backend lacks structured logging and needs it set up.
allowed-tools: Read Edit Write Bash Grep
argument-hint: "[--lang go|node|python|rust]"
mode: [scaffold]
---

# Logging scaffold

## Purpose

Drop in a working structured logger for the project's primary
backend language. Operator runs this once per project. After
that, `rule:logging-discipline` keeps the discipline going.

This skill is the FIRST half of the soft+hard pairing for
Standard 1 (logging). The rule is the second half.

## Scope

Operates on the operator's project repo, NOT on
`~/github/yakOS/`. Adds a logger module + example wiring;
doesn't touch existing log call sites (those evolve via normal
dev work).

NOT in scope:
- Log SHIPPING infrastructure (Loki / Datadog / Splunk / CloudWatch)
- Distributed tracing setup (OpenTelemetry)
- Log rotation / disk management
- Replacing existing custom loggers (operator decides)

## Automated pass

1. Detect primary backend language from project files:
   - `go.mod` → Go
   - `package.json` with `express`/`fastify`/`koa`/`nest` →
     Node/TS
   - `pyproject.toml` or `requirements.txt` with `django`/`flask`/
     `fastapi` → Python
   - `Cargo.toml` with `axum`/`actix` → Rust
   - Otherwise: ask operator via `--lang` flag

2. Read `.yakos.yml` `profile.logging` (format, levels) for
   config overrides.

3. Drop in logger module per language:

### Go variant
- Writes `internal/log/log.go` with `slog`-based logger
- JSON handler; reads `LOG_LEVEL` env (debug|info|warn|error)
- Example wiring in `cmd/server/main.go` if such file exists

### Node/TS variant
- Writes `src/lib/log/index.ts` with `pino` setup
- Adds `pino` to `package.json` dependencies (operator confirms)
- Example wiring in entry-point if detected

### Python variant
- Writes `src/log/__init__.py` with `python-json-logger` setup
- Adds `python-json-logger` to `requirements.txt` /
  `pyproject.toml`
- Example wiring in WSGI/ASGI entry-point

### Rust variant
- Writes `src/log.rs` with `tracing` + `tracing-subscriber`
- Adds dependencies to `Cargo.toml`
- Example wiring in `main.rs`

## Manual pass

After the scaffold runs:

1. Operator reviews the new logger module
2. Operator updates entry-point code to initialize the logger
   (the scaffold provides a template; operator may have
   project-specific bootstrapping)
3. Operator decides whether to migrate existing log call sites
   (scope NOT included)

## Findings synthesis

Output of the skill is the new logger module + a one-paragraph
README addendum:

```markdown
## Logging

This project uses structured logging via <library>. Logs are
JSON-formatted by default; override with `LOG_FORMAT=text` env
var. Log levels read from `LOG_LEVEL` (debug|info|warn|error;
default `info`).

See `<path-to-logger>` for the configuration and
`lib/rules/logging-discipline.md` for the team discipline.
```

Operator integrates the README addendum into the project's
existing README.md.

## Known gotchas

- **Existing custom logger**: scaffold detects and warns. Doesn't
  auto-replace. Operator decides whether to migrate.
- **CLI tools where stdout IS the output**: scaffold offers a
  `--cli-mode` variant where the logger goes to stderr and
  stdout is reserved for tool output.
- **Log rotation**: not handled. Operator wires logrotate /
  systemd journald / pm2 / etc. per their ops setup.
- **Per-request loggers**: scaffold's example shows
  context-propagated loggers (Go: ctx-based; Node: child logger
  via middleware; Python: contextvars). Project's request
  framework determines the exact wiring; scaffold's example
  may need adaptation.
- **Compatibility with existing structured-log shippers**: if
  the project already emits to Datadog via dd-trace, that
  agent wraps the logger; verify before swapping libraries.

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…