Loading...
Loading...
Create a new built-in evlog enricher to add derived context to wide events. Use when adding a new enricher (e.g., for deployment metadata, tenant context, feature flags, etc.) to the evlog package. Covers source code, tests, and all documentation.
npx skill4agent add hugorcd/evlog create-evlog-enricherfeat: add {name} enricherfeat: add user agent enricherfeat: add geo enricherfeat:| # | File | Action |
|---|---|---|
| 1 | | Add enricher source |
| 2 | | Add tests |
| 3 | | Add enricher to built-in docs |
| 4 | | Add enricher to overview cards |
| 5 | | Add enricher to the "Built-in Enrichers" table |
| 6 | | Add enricher to README enrichers section |
| Placeholder | Example (UserAgent) | Usage |
|---|---|---|
| | camelCase for event field key |
| | PascalCase in function/interface names |
| | Human-readable display name |
packages/evlog/src/enrichers/index.tsUserAgentInfoGeoInfocreate{Name}Enricher(options?: EnricherOptions)(ctx: EnrichContext) => voidEnricherOptions{ overwrite?: boolean }mergeEventField()overwritegetHeader()ctx.event.{name} = mergedValuectx.eventpackages/evlog/test/enrichers.test.tsoverwrite: falseoverwrite: trueenrichers.test.tsdescribeapps/docs/content/4.enrichers/2.built-in.md## {DISPLAY}
[One-sentence description of what the enricher does.]
**Sets:** `event.{name}`
\`\`\`typescript
const enrich = create{Name}Enricher()
\`\`\`
**Output shape:**
\`\`\`typescript
interface {Name}Info {
// fields
}
\`\`\`
**Example output:**
\`\`\`json
{
"{name}": {
// example values
}
}
\`\`\`apps/docs/content/4.enrichers/1.overview.md::card-group :::card
---
icon: i-lucide-{icon}
title: {DISPLAY}
to: /enrichers/built-in#{anchor}
---
[Short description.]
:::AGENTS.md| {DISPLAY} | `evlog/enrichers` | `{name}` | [Description] |README.mdpackages/evlog/README.mdcd packages/evlog
bun run build # Verify build succeeds
bun run test # Verify tests pass