Install any skill in seconds. Free to start, no credit card required.
Get Started Free →DLT (Diagnostic Log and Trace) logging skills for automotive systems Includes 1 skill files covering .
.claude/skills/pangzhenying2025-automotive-logging/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 32% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 90% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 90% | 0% |
1 skill files covering logging domain for automotive software engineering.
DLT is the standardized logging framework for automotive systems, defined by AUTOSAR and maintained by COVESA. It provides structured, high-performance logging with application/context-based filtering, binary message format for efficiency, and support for multi-ECU log aggregation.
Application 1 Application 2 Application N
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ DLT User │ │ DLT User │ │ DLT User │
│ Library │ │ Library │ │ Library │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────────────┼───────────────────┘
│ UNIX Socket / Shared Memory
┌────────┴────────┐
│ DLT Daemon │
│ (dlt-daemon) │
├─────────────────┤
│ File Output │ → /var/log/dlt/*.dlt
│ Network Output │ → TCP port 3490
│ Serial Output │ → /dev/ttyS0
└─────────────────┘
│ TCP/IP
┌────────┴────────┐
│ DLT Viewer │ (Desktop analysis tool)
└─────────────────┘DLT uses a hierarchical ID system for filtering:
This enables precise filtering: show only ADAS.CTRL errors from ECU1.
| Level | Value | Usage | |-------|-------|-------| | FATAL | 0x01 | System failure, requires immediate action | | ERROR | 0x02 | Error condition, operation failed | | WARN | 0x03 | Potential problem, degraded operation | | INFO | 0x04 | Normal operational events | | DEBUG | 0x05 | Detailed debug information | | VERBOSE | 0x06 | Maximum detail (development only) |
DLT messages use a compact binary format for efficiency:
┌──────────────┬──────────────┬──────────────┬──────────────┐
│ Storage Hdr │ Standard Hdr │ Extended Hdr │ Payload │
│ (16 bytes) │ (4 bytes) │ (10 bytes) │ (variable) │
└──────────────┴──────────────┴──────────────┴──────────────┘
Storage Header: timestamp (seconds + microseconds), ECU ID
Standard Header: version, message counter, length, ECU ID
Extended Header: message info, app ID, context ID
Payload: type-safe arguments (string, int, float, raw data)Larger messages but viewable without external database.
Smaller messages, used in production for bandwidth savings.
Key configuration file: /etc/dlt.conf
ini# DLT daemon configuration Verbose = 1 # Enable verbose mode DaemonFIFOSize = 65536 # FIFO buffer size LoggingLevel = INFO # Daemon's own log level OfflineTraceDirectory = /var/log/dlt # File output directory OfflineTraceFileSize = 10000000 # Max file size (10MB) OfflineTraceMaxSize = 100000000 # Max total size (100MB) ECUId = ECU1 # This ECU's identifier
For distributed automotive systems:
The DLTAdapter in this project wraps the DLT protocol for Python applications. Key patterns:
with DLTAdapter(...)) for automatic cleanup| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,478 | 13,544 | -12% | 1 | 1 | 0% | 3,857 | 4,529 | +17% | 0 | 0 | — |
case-02 | pass→pass | 10,112 | 8,288 | -18% | 1 | 1 | 0% | 2,562 | 3,386 | +32% | 0 | 0 | — |
case-03 | pass→pass | 4,695 | 4,669 | -1% | 1 | 1 | 0% | 1,023 | 1,940 | +90% | 0 | 0 | — |
case-04 | pass→pass | 5,525 | 3,741 | -32% | 1 | 1 | 0% | 1,075 | 2,047 | +90% | 0 | 0 | — |
case-05 | pass→pass | 3,529 | 1,261 | -64% | 1 | 1 | 0% | 681 | 1,499 | +120% | 0 | 0 | — |
case-06 | pass→pass | 8,559 | 2,631 | -69% | 1 | 1 | 0% | 1,969 | 1,824 | -7% | 0 | 0 | — |
case-07 | pass→pass | 6,160 | 2,793 | -55% | 1 | 1 | 0% | 1,376 | 1,898 | +38% | 0 | 0 | — |
case-22 | pass→pass | 8,124 | 5,316 | -35% | 1 | 1 | 0% | 1,691 | 2,424 | +43% | 0 | 0 | — |
case-08 | pass→pass | 5,916 | 3,339 | -44% | 1 | 1 | 0% | 1,227 | 1,984 | +62% | 0 | 0 | — |
case-09 | pass→pass | 13,571 | 5,494 | -60% | 1 | 1 | 0% | 2,545 | 2,320 | -9% | 0 | 0 | — |
case-10 | fail→pass | 11,253 | 8,714 | -23% | 1 | 1 | 0% | 2,126 | 2,934 | +38% | 0 | 0 | — |
case-11 | fail→fail | 9,135 | 4,654 | -49% | 1 | 1 | 0% | 1,498 | 2,276 | +52% | 0 | 0 | — |
case-12 | pass→pass | 6,724 | 4,631 | -31% | 1 | 1 | 0% | 1,536 | 2,103 | +37% | 0 | 0 | — |
case-13 | pass→pass | 15,375 | 9,062 | -41% | 1 | 1 | 0% | 2,634 | 3,046 | +16% | 0 | 0 | — |
case-14 | pass→pass | 9,516 | 8,794 | -8% | 1 | 1 | 0% | 1,988 | 3,103 | +56% | 0 | 0 | — |
case-15 | pass→pass | 3,073 | 1,739 | -43% | 1 | 1 | 0% | 633 | 1,637 | +159% | 0 | 0 | — |
case-16 | pass→pass | 3,136 | 2,578 | -18% | 1 | 1 | 0% | 679 | 1,836 | +170% | 0 | 0 | — |
case-17 | pass→pass | 3,606 | 1,743 | -52% | 1 | 1 | 0% | 830 | 1,693 | +104% | 0 | 0 | — |
case-18 | fail→pass | 8,161 | 3,225 | -60% | 1 | 1 | 0% | 1,596 | 1,932 | +21% | 0 | 0 | — |
case-19 | pass→pass | 3,484 | 1,895 | -46% | 1 | 1 | 0% | 712 | 1,675 | +135% | 0 | 0 | — |
case-20 | pass→pass | 6,823 | 36,617 | +437% | 1 | 1 | 0% | 1,595 | 2,289 | +44% | 0 | 0 | — |
case-21 | pass→pass | 5,128 | 3,719 | -27% | 1 | 1 | 0% | 1,066 | 2,082 | +95% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.