api-design
REST API design best practices covering versioning, error handling, pagination, and OpenAPI documentation. Use when designing or…
Structured logging, debugging (pdb/ipdb), profiling (cProfile/line_profiler), and performance monitoring. Use when adding logging, debugging issues, or optimizing performance. TRIGGER when: logging, debug, profiling, performance monitoring, metrics, stack trace. DO NOT TRIGGER
Claude Code
$ npx -y skills add akaszubski/autonomous-dev --skill observability --agent claude-code
Codex
$ npx skills add akaszubski/autonomous-dev --skill observability -a codex -y
Cursor
$ npx skills add akaszubski/autonomous-dev --skill observability -a cursor -y
Gemini CLI
$ npx skills add akaszubski/autonomous-dev --skill observability -a gemini-cli -y
GitHub Copilot
$ npx skills add akaszubski/autonomous-dev --skill observability -a github-copilot -y
OpenCode
$ npx skills add akaszubski/autonomous-dev --skill observability -a opencode -y
Windsurf
$ npx skills add akaszubski/autonomous-dev --skill observability -a windsurf -y
name: observability description: "Structured logging, debugging (pdb/ipdb), profiling (cProfile/line_profiler), and performance monitoring. Use when adding logging, debugging issues, or optimizing performance. TRIGGER when: logging, debug, profiling, performance monitoring, metrics, stack trace. DO NOT TRIGGER when: feature implementation, testing, documentation, config changes." allowed-tools: [Read, Grep, Glob, Bash]
Comprehensive guide to logging, debugging, profiling, and performance monitoring in Python applications.
---
Structured logging with JSON format for machine-readable logs and rich context.
**Why Structured Logging?**
**Key Features**:
**Example**:
import logging
import json
logger = logging.getLogger(__name__)
logger.info("User action", extra={
"user_id": 123,
"action": "login",
"ip": "192.168.1.1"
})**See**: `docs/structured-logging.md` for Python logging setup and patterns
---
Interactive debugging with pdb/ipdb and effective debugging strategies.
**Tools**:
**pdb Commands**:
**Example**:
import pdb; pdb.set_trace() # Debugger starts here
**See**: `docs/debugging.md` for interactive debugging patterns
---
CPU and memory profiling to identify performance bottlenecks.
**Tools**:
**cProfile Example**:
python -m cProfile -s cumulative script.py
**Profile Decorator**:
import cProfile
import pstats
def profile(func):
def wrapper(*args, **kwargs):
profiler = cProfile.Profile()
profiler.enable()
result = func(*args, **kwargs)
profiler.disable()
stats = pstats.Stats(profiler)
stats.sort_stats('cumulative')
stats.print_stats(10) # Top 10 functions
return result
return wrapper
@profile
def slow_function():
# Your code here
pass**See**: `docs/profiling.md` for comprehensive profiling techniques
---
Performance monitoring, timing decorators, and simple metrics.
**Timing Patterns**:
**Simple Metrics**:
**Example**:
import time
from functools import wraps
def timer(func):
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
duration = time.time() - start
print(f"{func.__name__} took {duration:.2f}s")
return result
return wrapper
@timer
def process_data():
# Your code here
pass**See**: `docs/monitoring-metrics.md` for stack traces, timers, and metrics
---
Debugging strategies and logging anti-patterns to avoid.
**Debugging Best Practices**: 1. **Binary Search Debugging** - Narrow down the problem area 2. **Rubber Duck Debugging** - Explain the problem to someone (or something) 3. **Add Assertions** - Catch bugs early 4. **Simplify and Isolate** - Reproduce with minimal code
**Logging Anti-Patterns to Avoid**:
**See**: `docs/best-practices-antipatterns.md` for detailed strategies
---
| Tool | Use Case | Details | |------|----------|---------| | Structured Logging | Production logs | `docs/structured-logging.md` | | pdb/ipdb | Interactive debugging | `docs/debugging.md` | | cProfile | CPU profiling | `docs/profiling.md` | | line_profiler | Line-by-line profiling | `docs/profiling.md` | | memory_profiler | Memory analysis | `docs/profiling.md` | | Timer decorator | Function timing | `docs/monitoring-metrics.md` | | Context timer | Code block timing | `docs/monitoring-metrics.md` |
---
import logging
# Setup
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
# Usage
logger.debug("Debug message") # Detailed diagnostic
logger.info("Info message") # General information
logger.warning("Warning message") # Warning (recoverable)
logger.error("Error message") # Error (handled)
logger.critical("Critical message") # Critical (unrecoverable)
# With context
logger.info("User action", extra={"user_id": 123, "action": "login"})---
# pdb
import pdb; pdb.set_trace()
# ipdb (enhanced)
import ipdb; ipdb.set_trace()
# Post-mortem (debug after crash)
import pdb, sys
try:
# Your code
pass
except ExcA harness that wraps Claude Code with enforcement, specialist agents, and alignment gates to deliver consistent, production-grade software engineering outcomes.
REST API design best practices covering versioning, error handling, pagination, and OpenAPI documentation. Use when designing or…
Subprocess safety, GitHub CLI integration, retry logic, authentication, rate limiting, and timeout handling. Use when integrating…
File-by-file architecture planning with ADR format, dependency ordering, and testability gates. Use when designing system…
10-point code review checklist covering correctness, tests, error handling, type hints, naming, security, and performance. Use…
One topic, one home. Routes content to its canonical store (CLAUDE.md, PROJECT.md, MEMORY.md, docs/, memory/) and audits for…
Systematic debugging methodology — reproduce, isolate, bisect, fix, verify. Use when diagnosing failures, tracing errors, or…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.