feat(trogonstack-otel): add metric and span naming skills - #28

Merged
yordis merged 1 commit into
mainfrom
otel-skills
Mar 30, 2026
Merged

feat(trogonstack-otel): add metric and span naming skills#28
yordis merged 1 commit into
mainfrom
otel-skills

Conversation

@yordis

Copy link
Copy Markdown
Member

Summary

  • Add trogonstack-otel plugin with two skills: otel-name-metric and otel-name-span
  • Both skills fetch latest OTel spec and blog posts before applying rules to guard against stale content
  • Register plugin in release-please config and manifest

Skills

otel-name-metric

Reviews or creates metric names following OTel Semantic Conventions. Covers naming patterns ({area}.{metric_name}, {area}.{client|server}.{metric_name}), instrument selection, UCUM units, pluralization, attribute placement, and anti-patterns.

Reference files: namespaces.md, instruments.md, anti-patterns.md

otel-name-span

Reviews or creates span names following OTel Semantic Conventions. Covers low-cardinality naming, {verb} {object} pattern, protocol-specific patterns (HTTP, DB, messaging, RPC), span status mapping, and attribute placement.

Reference files: protocols.md, anti-patterns.md

Test plan

  • Verify skills load correctly via Claude Code plugin system
  • Test otel-name-metric against sample metric definitions
  • Test otel-name-span against sample span definitions
  • Verify release-please picks up the new plugin on next release cycle

@cursor

cursorBot commented Mar 30, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Low risk: this PR only adds a new Claude Code plugin with documentation-style skills and registers it for release automation, without changing runtime application logic.

Overview
Adds a new trogonstack-otel Claude Code plugin (v0.0.1) that provides two skills—otel-name-metric and otel-name-span—for reviewing/creating OpenTelemetry metric and span names against semantic conventions, including checklists and reference guides.

Registers the plugin in .claude-plugin/marketplace.json and updates release-please config/manifest so it is versioned and released alongside existing plugins.

Written by Cursor Bugbot for commit 89c6596. This will update automatically on new commits. Configure here.

@coderabbitai

coderabbitaiBot commented Mar 30, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@yordis has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 7 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3f9c2e6-8b90-4936-8c3e-86dd4241795e

📥 Commits

Reviewing files that changed from the base of the PR and between 16f386b and 89c6596.

📒 Files selected for processing (11)
  • .claude-plugin/marketplace.json
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Walkthrough

A new OpenTelemetry plugin (trogonstack-otel) is added with release-please configuration updates and comprehensive documentation covering metric and span naming conventions aligned with OTel Semantic Conventions.

Changes

Cohort / File(s)Summary
Release Configuration
.github/release-please-config.json, .github/release-please-manifest.json
Added package mapping and version entry for the new plugins/trogonstack-otel plugin with version 0.0.1.
Plugin Manifest
plugins/trogonstack-otel/.claude-plugin/plugin.json
Added plugin metadata defining name, description (OpenTelemetry semantic convention skills), version, and author information.
Metric Naming Skill
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md, ...anti-patterns.md, ...instruments.md, ...namespaces.md
Added comprehensive documentation on metric naming conventions, including namespace patterns, instrument selection criteria, anti-patterns, and validation checklist.
Span Naming Skill
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md, ...anti-patterns.md, ...protocols.md
Added comprehensive documentation on span naming conventions, including protocol-specific rules (HTTP, database, messaging, RPC), cardinality guidance, and anti-patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

autorelease: tagged

Poem

🐰✨ A plugin hops in, dressed in OTel grace,
Naming metrics, spans—each in their rightful place,
Conventions and patterns, anti-patterns too,
The semantic way, tried and true! 📊🏷️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: adding two OpenTelemetry naming skills (metric and span) to the trogonstack-otel plugin.
Description check✅ PassedThe description is well-related to the changeset, providing a clear summary of the plugin addition, detailed skill information, test plan, and registration details that match the file changes.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch otel-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 120ae49 to 16f386bCompareMarch 30, 2026 15:58

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md (1)

51-53: Normalize example metric names to one delimiter style.

Several examples mix underscore-style metric tokens with dot-separated conventions, which can produce inconsistent naming recommendations from the skill. Prefer one style across all examples (ideally the same style used elsewhere in this plugin docs).

Also applies to: 107-110

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`
around lines 51 - 53, The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md (1)

59-63: Clarify the *.system.name attribute reference.

Line 63 states "The system name MUST match the value in *.system.name attribute". The *.system.name notation is ambiguous—it's unclear whether this refers to:

  • A literal attribute name with an asterisk
  • A wildcard pattern meaning any {namespace}.system.name attribute (e.g., db.system.name, messaging.system.name)

Consider clarifying this with a concrete example or rewording for clarity.

📝 Suggested clarification
 ### System-Specific Attributes
- Pattern: `{system_name}.*.{property}`
- Examples: `cassandra.consistency.level`, `aws.s3.key`
-- The system name MUST match the value in `*.system.name` attribute+- The system name MUST match the value in the corresponding `{namespace}.system.name` attribute (e.g., if using `cassandra.*` attributes, the `db.system.name` attribute value should be `"cassandra"`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md` around lines 59 -
63, Clarify the ambiguous `*.system.name` reference in the "System-Specific
Attributes" section of SKILL.md by stating it is a wildcard pattern (not a
literal asterisk) meaning any {namespace}.system.name attribute (e.g.,
`db.system.name`, `messaging.system.name`), and update the sentence "The system
name MUST match the value in `*.system.name` attribute" to read something like
"The system name MUST match the value in the `{namespace}.system.name` attribute
(e.g., `db.system.name` for database systems)."
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md (1)

80-90: Clarify the DB client pattern explanation.

Line 84 states: "DB is always measured from client side, but convention uses client". This explanation is somewhat circular. Consider clarifying why the convention explicitly includes client even though DB operations are always from the client perspective (e.g., for consistency with other patterns, explicitness, or future-proofing).

📝 Suggested clarification
-| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | DB is always measured from client side, but convention uses `client` |+| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | Explicitly uses `client` for consistency with the pattern, even though DB operations are always client-side |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md` around lines 80 -
90, Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/trogonstack-otel/.claude-plugin/plugin.json`:
- Around line 1-9: Add a marketplace registration for the new plugin
"trogonstack-otel" into the .claude-plugin/marketplace.json so the plugin can be
discovered/installed; specifically, open .claude-plugin/marketplace.json and add
an entry matching the pattern used by other siblings (e.g.,
trogonstack-diataxis) that includes the plugin key "trogonstack-otel",
repository identifier (TrogonStack/agentskills or the correct repo), version
"0.0.1" and author metadata consistent with the existing entries, saving the
file so the new plugin appears alongside trogonstack-diataxis, trogonstack-gh,
trogonstack-nats, trogonstack-datadog and trogonstack-ask.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md`:
- Around line 37-38: Update the outdated OpenTelemetry attribute key in the
anti-patterns table by replacing occurrences of `db.system` with the canonical
`db.system.name`; specifically edit the table rows that read "Missing
`db.system` on DB calls" (and the other row referencing `db.system`) so they
instead say "Missing `db.system.name` on DB calls" and any inline code snippets
or cells use `db.system.name` to match protocols.md and the current semantic
conventions.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md`:
- Around line 39-46: The messaging examples use different operation names
("publish", "ack") than the operation table ("create", "send", "receive",
"process", "settle"); update the examples to use the table vocabulary so
terminology is consistent (replace "publish" with "send" and "ack" with "settle"
in the otel-name-span examples and any other occurrences referenced at lines
48-52), and ensure the span kind mappings in the examples match the table
entries (e.g., send -> PRODUCER/CLIENT, receive -> CLIENT, process -> CONSUMER,
settle -> CLIENT).
---
Nitpick comments:
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`:
- Around line 51-53: The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md`:
- Around line 80-90: Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md`:
- Around line 59-63: Clarify the ambiguous `*.system.name` reference in the
"System-Specific Attributes" section of SKILL.md by stating it is a wildcard
pattern (not a literal asterisk) meaning any {namespace}.system.name attribute
(e.g., `db.system.name`, `messaging.system.name`), and update the sentence "The
system name MUST match the value in `*.system.name` attribute" to read something
like "The system name MUST match the value in the `{namespace}.system.name`
attribute (e.g., `db.system.name` for database systems)."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4715ac1a-96ac-4639-8a26-7b048bf16c84

📥 Commits

Reviewing files that changed from the base of the PR and between a63ccae and 16f386b.

📒 Files selected for processing (10)
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Comment threadplugins/trogonstack-otel/.claude-plugin/plugin.json
Comment threadplugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md Outdated
@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 3d71edd to fdf5651CompareMarch 30, 2026 16:13
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit c563ecd into mainMar 30, 2026
4 checks passed
@yordis
yordis deleted the otel-skills branch March 30, 2026 16:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yordis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(trogonstack-otel): add metric and span naming skills - #28

Merged
yordis merged 1 commit into
mainfrom
otel-skills
Mar 30, 2026
Merged

feat(trogonstack-otel): add metric and span naming skills#28
yordis merged 1 commit into
mainfrom
otel-skills

Conversation

@yordis

Copy link
Copy Markdown
Member

Summary

  • Add trogonstack-otel plugin with two skills: otel-name-metric and otel-name-span
  • Both skills fetch latest OTel spec and blog posts before applying rules to guard against stale content
  • Register plugin in release-please config and manifest

Skills

otel-name-metric

Reviews or creates metric names following OTel Semantic Conventions. Covers naming patterns ({area}.{metric_name}, {area}.{client|server}.{metric_name}), instrument selection, UCUM units, pluralization, attribute placement, and anti-patterns.

Reference files: namespaces.md, instruments.md, anti-patterns.md

otel-name-span

Reviews or creates span names following OTel Semantic Conventions. Covers low-cardinality naming, {verb} {object} pattern, protocol-specific patterns (HTTP, DB, messaging, RPC), span status mapping, and attribute placement.

Reference files: protocols.md, anti-patterns.md

Test plan

  • Verify skills load correctly via Claude Code plugin system
  • Test otel-name-metric against sample metric definitions
  • Test otel-name-span against sample span definitions
  • Verify release-please picks up the new plugin on next release cycle

@cursor

cursorBot commented Mar 30, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Low risk: this PR only adds a new Claude Code plugin with documentation-style skills and registers it for release automation, without changing runtime application logic.

Overview
Adds a new trogonstack-otel Claude Code plugin (v0.0.1) that provides two skills—otel-name-metric and otel-name-span—for reviewing/creating OpenTelemetry metric and span names against semantic conventions, including checklists and reference guides.

Registers the plugin in .claude-plugin/marketplace.json and updates release-please config/manifest so it is versioned and released alongside existing plugins.

Written by Cursor Bugbot for commit 89c6596. This will update automatically on new commits. Configure here.

@coderabbitai

coderabbitaiBot commented Mar 30, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@yordis has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 7 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3f9c2e6-8b90-4936-8c3e-86dd4241795e

📥 Commits

Reviewing files that changed from the base of the PR and between 16f386b and 89c6596.

📒 Files selected for processing (11)
  • .claude-plugin/marketplace.json
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Walkthrough

A new OpenTelemetry plugin (trogonstack-otel) is added with release-please configuration updates and comprehensive documentation covering metric and span naming conventions aligned with OTel Semantic Conventions.

Changes

Cohort / File(s)Summary
Release Configuration
.github/release-please-config.json, .github/release-please-manifest.json
Added package mapping and version entry for the new plugins/trogonstack-otel plugin with version 0.0.1.
Plugin Manifest
plugins/trogonstack-otel/.claude-plugin/plugin.json
Added plugin metadata defining name, description (OpenTelemetry semantic convention skills), version, and author information.
Metric Naming Skill
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md, ...anti-patterns.md, ...instruments.md, ...namespaces.md
Added comprehensive documentation on metric naming conventions, including namespace patterns, instrument selection criteria, anti-patterns, and validation checklist.
Span Naming Skill
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md, ...anti-patterns.md, ...protocols.md
Added comprehensive documentation on span naming conventions, including protocol-specific rules (HTTP, database, messaging, RPC), cardinality guidance, and anti-patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

autorelease: tagged

Poem

🐰✨ A plugin hops in, dressed in OTel grace,
Naming metrics, spans—each in their rightful place,
Conventions and patterns, anti-patterns too,
The semantic way, tried and true! 📊🏷️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: adding two OpenTelemetry naming skills (metric and span) to the trogonstack-otel plugin.
Description check✅ PassedThe description is well-related to the changeset, providing a clear summary of the plugin addition, detailed skill information, test plan, and registration details that match the file changes.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch otel-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 120ae49 to 16f386bCompareMarch 30, 2026 15:58

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md (1)

51-53: Normalize example metric names to one delimiter style.

Several examples mix underscore-style metric tokens with dot-separated conventions, which can produce inconsistent naming recommendations from the skill. Prefer one style across all examples (ideally the same style used elsewhere in this plugin docs).

Also applies to: 107-110

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`
around lines 51 - 53, The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md (1)

59-63: Clarify the *.system.name attribute reference.

Line 63 states "The system name MUST match the value in *.system.name attribute". The *.system.name notation is ambiguous—it's unclear whether this refers to:

  • A literal attribute name with an asterisk
  • A wildcard pattern meaning any {namespace}.system.name attribute (e.g., db.system.name, messaging.system.name)

Consider clarifying this with a concrete example or rewording for clarity.

📝 Suggested clarification
 ### System-Specific Attributes
- Pattern: `{system_name}.*.{property}`
- Examples: `cassandra.consistency.level`, `aws.s3.key`
-- The system name MUST match the value in `*.system.name` attribute+- The system name MUST match the value in the corresponding `{namespace}.system.name` attribute (e.g., if using `cassandra.*` attributes, the `db.system.name` attribute value should be `"cassandra"`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md` around lines 59 -
63, Clarify the ambiguous `*.system.name` reference in the "System-Specific
Attributes" section of SKILL.md by stating it is a wildcard pattern (not a
literal asterisk) meaning any {namespace}.system.name attribute (e.g.,
`db.system.name`, `messaging.system.name`), and update the sentence "The system
name MUST match the value in `*.system.name` attribute" to read something like
"The system name MUST match the value in the `{namespace}.system.name` attribute
(e.g., `db.system.name` for database systems)."
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md (1)

80-90: Clarify the DB client pattern explanation.

Line 84 states: "DB is always measured from client side, but convention uses client". This explanation is somewhat circular. Consider clarifying why the convention explicitly includes client even though DB operations are always from the client perspective (e.g., for consistency with other patterns, explicitness, or future-proofing).

📝 Suggested clarification
-| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | DB is always measured from client side, but convention uses `client` |+| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | Explicitly uses `client` for consistency with the pattern, even though DB operations are always client-side |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md` around lines 80 -
90, Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/trogonstack-otel/.claude-plugin/plugin.json`:
- Around line 1-9: Add a marketplace registration for the new plugin
"trogonstack-otel" into the .claude-plugin/marketplace.json so the plugin can be
discovered/installed; specifically, open .claude-plugin/marketplace.json and add
an entry matching the pattern used by other siblings (e.g.,
trogonstack-diataxis) that includes the plugin key "trogonstack-otel",
repository identifier (TrogonStack/agentskills or the correct repo), version
"0.0.1" and author metadata consistent with the existing entries, saving the
file so the new plugin appears alongside trogonstack-diataxis, trogonstack-gh,
trogonstack-nats, trogonstack-datadog and trogonstack-ask.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md`:
- Around line 37-38: Update the outdated OpenTelemetry attribute key in the
anti-patterns table by replacing occurrences of `db.system` with the canonical
`db.system.name`; specifically edit the table rows that read "Missing
`db.system` on DB calls" (and the other row referencing `db.system`) so they
instead say "Missing `db.system.name` on DB calls" and any inline code snippets
or cells use `db.system.name` to match protocols.md and the current semantic
conventions.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md`:
- Around line 39-46: The messaging examples use different operation names
("publish", "ack") than the operation table ("create", "send", "receive",
"process", "settle"); update the examples to use the table vocabulary so
terminology is consistent (replace "publish" with "send" and "ack" with "settle"
in the otel-name-span examples and any other occurrences referenced at lines
48-52), and ensure the span kind mappings in the examples match the table
entries (e.g., send -> PRODUCER/CLIENT, receive -> CLIENT, process -> CONSUMER,
settle -> CLIENT).
---
Nitpick comments:
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`:
- Around line 51-53: The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md`:
- Around line 80-90: Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md`:
- Around line 59-63: Clarify the ambiguous `*.system.name` reference in the
"System-Specific Attributes" section of SKILL.md by stating it is a wildcard
pattern (not a literal asterisk) meaning any {namespace}.system.name attribute
(e.g., `db.system.name`, `messaging.system.name`), and update the sentence "The
system name MUST match the value in `*.system.name` attribute" to read something
like "The system name MUST match the value in the `{namespace}.system.name`
attribute (e.g., `db.system.name` for database systems)."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4715ac1a-96ac-4639-8a26-7b048bf16c84

📥 Commits

Reviewing files that changed from the base of the PR and between a63ccae and 16f386b.

📒 Files selected for processing (10)
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Comment threadplugins/trogonstack-otel/.claude-plugin/plugin.json
Comment threadplugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md Outdated
@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 3d71edd to fdf5651CompareMarch 30, 2026 16:13
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit c563ecd into mainMar 30, 2026
4 checks passed
@yordis
yordis deleted the otel-skills branch March 30, 2026 16:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yordis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(trogonstack-otel): add metric and span naming skills - #28

Merged
yordis merged 1 commit into
mainfrom
otel-skills
Mar 30, 2026
Merged

feat(trogonstack-otel): add metric and span naming skills#28
yordis merged 1 commit into
mainfrom
otel-skills

Conversation

@yordis

Copy link
Copy Markdown
Member

Summary

  • Add trogonstack-otel plugin with two skills: otel-name-metric and otel-name-span
  • Both skills fetch latest OTel spec and blog posts before applying rules to guard against stale content
  • Register plugin in release-please config and manifest

Skills

otel-name-metric

Reviews or creates metric names following OTel Semantic Conventions. Covers naming patterns ({area}.{metric_name}, {area}.{client|server}.{metric_name}), instrument selection, UCUM units, pluralization, attribute placement, and anti-patterns.

Reference files: namespaces.md, instruments.md, anti-patterns.md

otel-name-span

Reviews or creates span names following OTel Semantic Conventions. Covers low-cardinality naming, {verb} {object} pattern, protocol-specific patterns (HTTP, DB, messaging, RPC), span status mapping, and attribute placement.

Reference files: protocols.md, anti-patterns.md

Test plan

  • Verify skills load correctly via Claude Code plugin system
  • Test otel-name-metric against sample metric definitions
  • Test otel-name-span against sample span definitions
  • Verify release-please picks up the new plugin on next release cycle

@cursor

cursorBot commented Mar 30, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Low risk: this PR only adds a new Claude Code plugin with documentation-style skills and registers it for release automation, without changing runtime application logic.

Overview
Adds a new trogonstack-otel Claude Code plugin (v0.0.1) that provides two skills—otel-name-metric and otel-name-span—for reviewing/creating OpenTelemetry metric and span names against semantic conventions, including checklists and reference guides.

Registers the plugin in .claude-plugin/marketplace.json and updates release-please config/manifest so it is versioned and released alongside existing plugins.

Written by Cursor Bugbot for commit 89c6596. This will update automatically on new commits. Configure here.

@coderabbitai

coderabbitaiBot commented Mar 30, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@yordis has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 7 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3f9c2e6-8b90-4936-8c3e-86dd4241795e

📥 Commits

Reviewing files that changed from the base of the PR and between 16f386b and 89c6596.

📒 Files selected for processing (11)
  • .claude-plugin/marketplace.json
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Walkthrough

A new OpenTelemetry plugin (trogonstack-otel) is added with release-please configuration updates and comprehensive documentation covering metric and span naming conventions aligned with OTel Semantic Conventions.

Changes

Cohort / File(s)Summary
Release Configuration
.github/release-please-config.json, .github/release-please-manifest.json
Added package mapping and version entry for the new plugins/trogonstack-otel plugin with version 0.0.1.
Plugin Manifest
plugins/trogonstack-otel/.claude-plugin/plugin.json
Added plugin metadata defining name, description (OpenTelemetry semantic convention skills), version, and author information.
Metric Naming Skill
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md, ...anti-patterns.md, ...instruments.md, ...namespaces.md
Added comprehensive documentation on metric naming conventions, including namespace patterns, instrument selection criteria, anti-patterns, and validation checklist.
Span Naming Skill
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md, ...anti-patterns.md, ...protocols.md
Added comprehensive documentation on span naming conventions, including protocol-specific rules (HTTP, database, messaging, RPC), cardinality guidance, and anti-patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

autorelease: tagged

Poem

🐰✨ A plugin hops in, dressed in OTel grace,
Naming metrics, spans—each in their rightful place,
Conventions and patterns, anti-patterns too,
The semantic way, tried and true! 📊🏷️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: adding two OpenTelemetry naming skills (metric and span) to the trogonstack-otel plugin.
Description check✅ PassedThe description is well-related to the changeset, providing a clear summary of the plugin addition, detailed skill information, test plan, and registration details that match the file changes.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch otel-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 120ae49 to 16f386bCompareMarch 30, 2026 15:58

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md (1)

51-53: Normalize example metric names to one delimiter style.

Several examples mix underscore-style metric tokens with dot-separated conventions, which can produce inconsistent naming recommendations from the skill. Prefer one style across all examples (ideally the same style used elsewhere in this plugin docs).

Also applies to: 107-110

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`
around lines 51 - 53, The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md (1)

59-63: Clarify the *.system.name attribute reference.

Line 63 states "The system name MUST match the value in *.system.name attribute". The *.system.name notation is ambiguous—it's unclear whether this refers to:

  • A literal attribute name with an asterisk
  • A wildcard pattern meaning any {namespace}.system.name attribute (e.g., db.system.name, messaging.system.name)

Consider clarifying this with a concrete example or rewording for clarity.

📝 Suggested clarification
 ### System-Specific Attributes
- Pattern: `{system_name}.*.{property}`
- Examples: `cassandra.consistency.level`, `aws.s3.key`
-- The system name MUST match the value in `*.system.name` attribute+- The system name MUST match the value in the corresponding `{namespace}.system.name` attribute (e.g., if using `cassandra.*` attributes, the `db.system.name` attribute value should be `"cassandra"`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md` around lines 59 -
63, Clarify the ambiguous `*.system.name` reference in the "System-Specific
Attributes" section of SKILL.md by stating it is a wildcard pattern (not a
literal asterisk) meaning any {namespace}.system.name attribute (e.g.,
`db.system.name`, `messaging.system.name`), and update the sentence "The system
name MUST match the value in `*.system.name` attribute" to read something like
"The system name MUST match the value in the `{namespace}.system.name` attribute
(e.g., `db.system.name` for database systems)."
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md (1)

80-90: Clarify the DB client pattern explanation.

Line 84 states: "DB is always measured from client side, but convention uses client". This explanation is somewhat circular. Consider clarifying why the convention explicitly includes client even though DB operations are always from the client perspective (e.g., for consistency with other patterns, explicitness, or future-proofing).

📝 Suggested clarification
-| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | DB is always measured from client side, but convention uses `client` |+| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | Explicitly uses `client` for consistency with the pattern, even though DB operations are always client-side |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md` around lines 80 -
90, Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/trogonstack-otel/.claude-plugin/plugin.json`:
- Around line 1-9: Add a marketplace registration for the new plugin
"trogonstack-otel" into the .claude-plugin/marketplace.json so the plugin can be
discovered/installed; specifically, open .claude-plugin/marketplace.json and add
an entry matching the pattern used by other siblings (e.g.,
trogonstack-diataxis) that includes the plugin key "trogonstack-otel",
repository identifier (TrogonStack/agentskills or the correct repo), version
"0.0.1" and author metadata consistent with the existing entries, saving the
file so the new plugin appears alongside trogonstack-diataxis, trogonstack-gh,
trogonstack-nats, trogonstack-datadog and trogonstack-ask.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md`:
- Around line 37-38: Update the outdated OpenTelemetry attribute key in the
anti-patterns table by replacing occurrences of `db.system` with the canonical
`db.system.name`; specifically edit the table rows that read "Missing
`db.system` on DB calls" (and the other row referencing `db.system`) so they
instead say "Missing `db.system.name` on DB calls" and any inline code snippets
or cells use `db.system.name` to match protocols.md and the current semantic
conventions.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md`:
- Around line 39-46: The messaging examples use different operation names
("publish", "ack") than the operation table ("create", "send", "receive",
"process", "settle"); update the examples to use the table vocabulary so
terminology is consistent (replace "publish" with "send" and "ack" with "settle"
in the otel-name-span examples and any other occurrences referenced at lines
48-52), and ensure the span kind mappings in the examples match the table
entries (e.g., send -> PRODUCER/CLIENT, receive -> CLIENT, process -> CONSUMER,
settle -> CLIENT).
---
Nitpick comments:
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`:
- Around line 51-53: The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md`:
- Around line 80-90: Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md`:
- Around line 59-63: Clarify the ambiguous `*.system.name` reference in the
"System-Specific Attributes" section of SKILL.md by stating it is a wildcard
pattern (not a literal asterisk) meaning any {namespace}.system.name attribute
(e.g., `db.system.name`, `messaging.system.name`), and update the sentence "The
system name MUST match the value in `*.system.name` attribute" to read something
like "The system name MUST match the value in the `{namespace}.system.name`
attribute (e.g., `db.system.name` for database systems)."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4715ac1a-96ac-4639-8a26-7b048bf16c84

📥 Commits

Reviewing files that changed from the base of the PR and between a63ccae and 16f386b.

📒 Files selected for processing (10)
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Comment threadplugins/trogonstack-otel/.claude-plugin/plugin.json
Comment threadplugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md Outdated
@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 3d71edd to fdf5651CompareMarch 30, 2026 16:13
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit c563ecd into mainMar 30, 2026
4 checks passed
@yordis
yordis deleted the otel-skills branch March 30, 2026 16:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yordis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(trogonstack-otel): add metric and span naming skills - #28

Merged
yordis merged 1 commit into
mainfrom
otel-skills
Mar 30, 2026
Merged

feat(trogonstack-otel): add metric and span naming skills#28
yordis merged 1 commit into
mainfrom
otel-skills

Conversation

@yordis

Copy link
Copy Markdown
Member

Summary

  • Add trogonstack-otel plugin with two skills: otel-name-metric and otel-name-span
  • Both skills fetch latest OTel spec and blog posts before applying rules to guard against stale content
  • Register plugin in release-please config and manifest

Skills

otel-name-metric

Reviews or creates metric names following OTel Semantic Conventions. Covers naming patterns ({area}.{metric_name}, {area}.{client|server}.{metric_name}), instrument selection, UCUM units, pluralization, attribute placement, and anti-patterns.

Reference files: namespaces.md, instruments.md, anti-patterns.md

otel-name-span

Reviews or creates span names following OTel Semantic Conventions. Covers low-cardinality naming, {verb} {object} pattern, protocol-specific patterns (HTTP, DB, messaging, RPC), span status mapping, and attribute placement.

Reference files: protocols.md, anti-patterns.md

Test plan

  • Verify skills load correctly via Claude Code plugin system
  • Test otel-name-metric against sample metric definitions
  • Test otel-name-span against sample span definitions
  • Verify release-please picks up the new plugin on next release cycle

@cursor

cursorBot commented Mar 30, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Low risk: this PR only adds a new Claude Code plugin with documentation-style skills and registers it for release automation, without changing runtime application logic.

Overview
Adds a new trogonstack-otel Claude Code plugin (v0.0.1) that provides two skills—otel-name-metric and otel-name-span—for reviewing/creating OpenTelemetry metric and span names against semantic conventions, including checklists and reference guides.

Registers the plugin in .claude-plugin/marketplace.json and updates release-please config/manifest so it is versioned and released alongside existing plugins.

Written by Cursor Bugbot for commit 89c6596. This will update automatically on new commits. Configure here.

@coderabbitai

coderabbitaiBot commented Mar 30, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@yordis has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 7 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3f9c2e6-8b90-4936-8c3e-86dd4241795e

📥 Commits

Reviewing files that changed from the base of the PR and between 16f386b and 89c6596.

📒 Files selected for processing (11)
  • .claude-plugin/marketplace.json
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Walkthrough

A new OpenTelemetry plugin (trogonstack-otel) is added with release-please configuration updates and comprehensive documentation covering metric and span naming conventions aligned with OTel Semantic Conventions.

Changes

Cohort / File(s)Summary
Release Configuration
.github/release-please-config.json, .github/release-please-manifest.json
Added package mapping and version entry for the new plugins/trogonstack-otel plugin with version 0.0.1.
Plugin Manifest
plugins/trogonstack-otel/.claude-plugin/plugin.json
Added plugin metadata defining name, description (OpenTelemetry semantic convention skills), version, and author information.
Metric Naming Skill
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md, ...anti-patterns.md, ...instruments.md, ...namespaces.md
Added comprehensive documentation on metric naming conventions, including namespace patterns, instrument selection criteria, anti-patterns, and validation checklist.
Span Naming Skill
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md, ...anti-patterns.md, ...protocols.md
Added comprehensive documentation on span naming conventions, including protocol-specific rules (HTTP, database, messaging, RPC), cardinality guidance, and anti-patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

autorelease: tagged

Poem

🐰✨ A plugin hops in, dressed in OTel grace,
Naming metrics, spans—each in their rightful place,
Conventions and patterns, anti-patterns too,
The semantic way, tried and true! 📊🏷️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: adding two OpenTelemetry naming skills (metric and span) to the trogonstack-otel plugin.
Description check✅ PassedThe description is well-related to the changeset, providing a clear summary of the plugin addition, detailed skill information, test plan, and registration details that match the file changes.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch otel-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 120ae49 to 16f386bCompareMarch 30, 2026 15:58

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md (1)

51-53: Normalize example metric names to one delimiter style.

Several examples mix underscore-style metric tokens with dot-separated conventions, which can produce inconsistent naming recommendations from the skill. Prefer one style across all examples (ideally the same style used elsewhere in this plugin docs).

Also applies to: 107-110

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`
around lines 51 - 53, The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md (1)

59-63: Clarify the *.system.name attribute reference.

Line 63 states "The system name MUST match the value in *.system.name attribute". The *.system.name notation is ambiguous—it's unclear whether this refers to:

  • A literal attribute name with an asterisk
  • A wildcard pattern meaning any {namespace}.system.name attribute (e.g., db.system.name, messaging.system.name)

Consider clarifying this with a concrete example or rewording for clarity.

📝 Suggested clarification
 ### System-Specific Attributes
- Pattern: `{system_name}.*.{property}`
- Examples: `cassandra.consistency.level`, `aws.s3.key`
-- The system name MUST match the value in `*.system.name` attribute+- The system name MUST match the value in the corresponding `{namespace}.system.name` attribute (e.g., if using `cassandra.*` attributes, the `db.system.name` attribute value should be `"cassandra"`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md` around lines 59 -
63, Clarify the ambiguous `*.system.name` reference in the "System-Specific
Attributes" section of SKILL.md by stating it is a wildcard pattern (not a
literal asterisk) meaning any {namespace}.system.name attribute (e.g.,
`db.system.name`, `messaging.system.name`), and update the sentence "The system
name MUST match the value in `*.system.name` attribute" to read something like
"The system name MUST match the value in the `{namespace}.system.name` attribute
(e.g., `db.system.name` for database systems)."
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md (1)

80-90: Clarify the DB client pattern explanation.

Line 84 states: "DB is always measured from client side, but convention uses client". This explanation is somewhat circular. Consider clarifying why the convention explicitly includes client even though DB operations are always from the client perspective (e.g., for consistency with other patterns, explicitness, or future-proofing).

📝 Suggested clarification
-| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | DB is always measured from client side, but convention uses `client` |+| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | Explicitly uses `client` for consistency with the pattern, even though DB operations are always client-side |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md` around lines 80 -
90, Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/trogonstack-otel/.claude-plugin/plugin.json`:
- Around line 1-9: Add a marketplace registration for the new plugin
"trogonstack-otel" into the .claude-plugin/marketplace.json so the plugin can be
discovered/installed; specifically, open .claude-plugin/marketplace.json and add
an entry matching the pattern used by other siblings (e.g.,
trogonstack-diataxis) that includes the plugin key "trogonstack-otel",
repository identifier (TrogonStack/agentskills or the correct repo), version
"0.0.1" and author metadata consistent with the existing entries, saving the
file so the new plugin appears alongside trogonstack-diataxis, trogonstack-gh,
trogonstack-nats, trogonstack-datadog and trogonstack-ask.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md`:
- Around line 37-38: Update the outdated OpenTelemetry attribute key in the
anti-patterns table by replacing occurrences of `db.system` with the canonical
`db.system.name`; specifically edit the table rows that read "Missing
`db.system` on DB calls" (and the other row referencing `db.system`) so they
instead say "Missing `db.system.name` on DB calls" and any inline code snippets
or cells use `db.system.name` to match protocols.md and the current semantic
conventions.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md`:
- Around line 39-46: The messaging examples use different operation names
("publish", "ack") than the operation table ("create", "send", "receive",
"process", "settle"); update the examples to use the table vocabulary so
terminology is consistent (replace "publish" with "send" and "ack" with "settle"
in the otel-name-span examples and any other occurrences referenced at lines
48-52), and ensure the span kind mappings in the examples match the table
entries (e.g., send -> PRODUCER/CLIENT, receive -> CLIENT, process -> CONSUMER,
settle -> CLIENT).
---
Nitpick comments:
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`:
- Around line 51-53: The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md`:
- Around line 80-90: Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md`:
- Around line 59-63: Clarify the ambiguous `*.system.name` reference in the
"System-Specific Attributes" section of SKILL.md by stating it is a wildcard
pattern (not a literal asterisk) meaning any {namespace}.system.name attribute
(e.g., `db.system.name`, `messaging.system.name`), and update the sentence "The
system name MUST match the value in `*.system.name` attribute" to read something
like "The system name MUST match the value in the `{namespace}.system.name`
attribute (e.g., `db.system.name` for database systems)."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4715ac1a-96ac-4639-8a26-7b048bf16c84

📥 Commits

Reviewing files that changed from the base of the PR and between a63ccae and 16f386b.

📒 Files selected for processing (10)
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Comment threadplugins/trogonstack-otel/.claude-plugin/plugin.json
Comment threadplugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md Outdated
@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 3d71edd to fdf5651CompareMarch 30, 2026 16:13
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit c563ecd into mainMar 30, 2026
4 checks passed
@yordis
yordis deleted the otel-skills branch March 30, 2026 16:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yordis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(trogonstack-otel): add metric and span naming skills - #28

Merged
yordis merged 1 commit into
mainfrom
otel-skills
Mar 30, 2026
Merged

feat(trogonstack-otel): add metric and span naming skills#28
yordis merged 1 commit into
mainfrom
otel-skills

Conversation

@yordis

Copy link
Copy Markdown
Member

Summary

  • Add trogonstack-otel plugin with two skills: otel-name-metric and otel-name-span
  • Both skills fetch latest OTel spec and blog posts before applying rules to guard against stale content
  • Register plugin in release-please config and manifest

Skills

otel-name-metric

Reviews or creates metric names following OTel Semantic Conventions. Covers naming patterns ({area}.{metric_name}, {area}.{client|server}.{metric_name}), instrument selection, UCUM units, pluralization, attribute placement, and anti-patterns.

Reference files: namespaces.md, instruments.md, anti-patterns.md

otel-name-span

Reviews or creates span names following OTel Semantic Conventions. Covers low-cardinality naming, {verb} {object} pattern, protocol-specific patterns (HTTP, DB, messaging, RPC), span status mapping, and attribute placement.

Reference files: protocols.md, anti-patterns.md

Test plan

  • Verify skills load correctly via Claude Code plugin system
  • Test otel-name-metric against sample metric definitions
  • Test otel-name-span against sample span definitions
  • Verify release-please picks up the new plugin on next release cycle

@cursor

cursorBot commented Mar 30, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Low risk: this PR only adds a new Claude Code plugin with documentation-style skills and registers it for release automation, without changing runtime application logic.

Overview
Adds a new trogonstack-otel Claude Code plugin (v0.0.1) that provides two skills—otel-name-metric and otel-name-span—for reviewing/creating OpenTelemetry metric and span names against semantic conventions, including checklists and reference guides.

Registers the plugin in .claude-plugin/marketplace.json and updates release-please config/manifest so it is versioned and released alongside existing plugins.

Written by Cursor Bugbot for commit 89c6596. This will update automatically on new commits. Configure here.

@coderabbitai

coderabbitaiBot commented Mar 30, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@yordis has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 7 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3f9c2e6-8b90-4936-8c3e-86dd4241795e

📥 Commits

Reviewing files that changed from the base of the PR and between 16f386b and 89c6596.

📒 Files selected for processing (11)
  • .claude-plugin/marketplace.json
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Walkthrough

A new OpenTelemetry plugin (trogonstack-otel) is added with release-please configuration updates and comprehensive documentation covering metric and span naming conventions aligned with OTel Semantic Conventions.

Changes

Cohort / File(s)Summary
Release Configuration
.github/release-please-config.json, .github/release-please-manifest.json
Added package mapping and version entry for the new plugins/trogonstack-otel plugin with version 0.0.1.
Plugin Manifest
plugins/trogonstack-otel/.claude-plugin/plugin.json
Added plugin metadata defining name, description (OpenTelemetry semantic convention skills), version, and author information.
Metric Naming Skill
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md, ...anti-patterns.md, ...instruments.md, ...namespaces.md
Added comprehensive documentation on metric naming conventions, including namespace patterns, instrument selection criteria, anti-patterns, and validation checklist.
Span Naming Skill
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md, ...anti-patterns.md, ...protocols.md
Added comprehensive documentation on span naming conventions, including protocol-specific rules (HTTP, database, messaging, RPC), cardinality guidance, and anti-patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

autorelease: tagged

Poem

🐰✨ A plugin hops in, dressed in OTel grace,
Naming metrics, spans—each in their rightful place,
Conventions and patterns, anti-patterns too,
The semantic way, tried and true! 📊🏷️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: adding two OpenTelemetry naming skills (metric and span) to the trogonstack-otel plugin.
Description check✅ PassedThe description is well-related to the changeset, providing a clear summary of the plugin addition, detailed skill information, test plan, and registration details that match the file changes.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch otel-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 120ae49 to 16f386bCompareMarch 30, 2026 15:58

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md (1)

51-53: Normalize example metric names to one delimiter style.

Several examples mix underscore-style metric tokens with dot-separated conventions, which can produce inconsistent naming recommendations from the skill. Prefer one style across all examples (ideally the same style used elsewhere in this plugin docs).

Also applies to: 107-110

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`
around lines 51 - 53, The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md (1)

59-63: Clarify the *.system.name attribute reference.

Line 63 states "The system name MUST match the value in *.system.name attribute". The *.system.name notation is ambiguous—it's unclear whether this refers to:

  • A literal attribute name with an asterisk
  • A wildcard pattern meaning any {namespace}.system.name attribute (e.g., db.system.name, messaging.system.name)

Consider clarifying this with a concrete example or rewording for clarity.

📝 Suggested clarification
 ### System-Specific Attributes
- Pattern: `{system_name}.*.{property}`
- Examples: `cassandra.consistency.level`, `aws.s3.key`
-- The system name MUST match the value in `*.system.name` attribute+- The system name MUST match the value in the corresponding `{namespace}.system.name` attribute (e.g., if using `cassandra.*` attributes, the `db.system.name` attribute value should be `"cassandra"`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md` around lines 59 -
63, Clarify the ambiguous `*.system.name` reference in the "System-Specific
Attributes" section of SKILL.md by stating it is a wildcard pattern (not a
literal asterisk) meaning any {namespace}.system.name attribute (e.g.,
`db.system.name`, `messaging.system.name`), and update the sentence "The system
name MUST match the value in `*.system.name` attribute" to read something like
"The system name MUST match the value in the `{namespace}.system.name` attribute
(e.g., `db.system.name` for database systems)."
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md (1)

80-90: Clarify the DB client pattern explanation.

Line 84 states: "DB is always measured from client side, but convention uses client". This explanation is somewhat circular. Consider clarifying why the convention explicitly includes client even though DB operations are always from the client perspective (e.g., for consistency with other patterns, explicitness, or future-proofing).

📝 Suggested clarification
-| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | DB is always measured from client side, but convention uses `client` |+| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | Explicitly uses `client` for consistency with the pattern, even though DB operations are always client-side |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md` around lines 80 -
90, Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/trogonstack-otel/.claude-plugin/plugin.json`:
- Around line 1-9: Add a marketplace registration for the new plugin
"trogonstack-otel" into the .claude-plugin/marketplace.json so the plugin can be
discovered/installed; specifically, open .claude-plugin/marketplace.json and add
an entry matching the pattern used by other siblings (e.g.,
trogonstack-diataxis) that includes the plugin key "trogonstack-otel",
repository identifier (TrogonStack/agentskills or the correct repo), version
"0.0.1" and author metadata consistent with the existing entries, saving the
file so the new plugin appears alongside trogonstack-diataxis, trogonstack-gh,
trogonstack-nats, trogonstack-datadog and trogonstack-ask.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md`:
- Around line 37-38: Update the outdated OpenTelemetry attribute key in the
anti-patterns table by replacing occurrences of `db.system` with the canonical
`db.system.name`; specifically edit the table rows that read "Missing
`db.system` on DB calls" (and the other row referencing `db.system`) so they
instead say "Missing `db.system.name` on DB calls" and any inline code snippets
or cells use `db.system.name` to match protocols.md and the current semantic
conventions.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md`:
- Around line 39-46: The messaging examples use different operation names
("publish", "ack") than the operation table ("create", "send", "receive",
"process", "settle"); update the examples to use the table vocabulary so
terminology is consistent (replace "publish" with "send" and "ack" with "settle"
in the otel-name-span examples and any other occurrences referenced at lines
48-52), and ensure the span kind mappings in the examples match the table
entries (e.g., send -> PRODUCER/CLIENT, receive -> CLIENT, process -> CONSUMER,
settle -> CLIENT).
---
Nitpick comments:
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`:
- Around line 51-53: The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md`:
- Around line 80-90: Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md`:
- Around line 59-63: Clarify the ambiguous `*.system.name` reference in the
"System-Specific Attributes" section of SKILL.md by stating it is a wildcard
pattern (not a literal asterisk) meaning any {namespace}.system.name attribute
(e.g., `db.system.name`, `messaging.system.name`), and update the sentence "The
system name MUST match the value in `*.system.name` attribute" to read something
like "The system name MUST match the value in the `{namespace}.system.name`
attribute (e.g., `db.system.name` for database systems)."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4715ac1a-96ac-4639-8a26-7b048bf16c84

📥 Commits

Reviewing files that changed from the base of the PR and between a63ccae and 16f386b.

📒 Files selected for processing (10)
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Comment threadplugins/trogonstack-otel/.claude-plugin/plugin.json
Comment threadplugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md Outdated
@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 3d71edd to fdf5651CompareMarch 30, 2026 16:13
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit c563ecd into mainMar 30, 2026
4 checks passed
@yordis
yordis deleted the otel-skills branch March 30, 2026 16:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yordis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(trogonstack-otel): add metric and span naming skills - #28

Merged
yordis merged 1 commit into
mainfrom
otel-skills
Mar 30, 2026
Merged

feat(trogonstack-otel): add metric and span naming skills#28
yordis merged 1 commit into
mainfrom
otel-skills

Conversation

@yordis

Copy link
Copy Markdown
Member

Summary

  • Add trogonstack-otel plugin with two skills: otel-name-metric and otel-name-span
  • Both skills fetch latest OTel spec and blog posts before applying rules to guard against stale content
  • Register plugin in release-please config and manifest

Skills

otel-name-metric

Reviews or creates metric names following OTel Semantic Conventions. Covers naming patterns ({area}.{metric_name}, {area}.{client|server}.{metric_name}), instrument selection, UCUM units, pluralization, attribute placement, and anti-patterns.

Reference files: namespaces.md, instruments.md, anti-patterns.md

otel-name-span

Reviews or creates span names following OTel Semantic Conventions. Covers low-cardinality naming, {verb} {object} pattern, protocol-specific patterns (HTTP, DB, messaging, RPC), span status mapping, and attribute placement.

Reference files: protocols.md, anti-patterns.md

Test plan

  • Verify skills load correctly via Claude Code plugin system
  • Test otel-name-metric against sample metric definitions
  • Test otel-name-span against sample span definitions
  • Verify release-please picks up the new plugin on next release cycle

@cursor

cursorBot commented Mar 30, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Low risk: this PR only adds a new Claude Code plugin with documentation-style skills and registers it for release automation, without changing runtime application logic.

Overview
Adds a new trogonstack-otel Claude Code plugin (v0.0.1) that provides two skills—otel-name-metric and otel-name-span—for reviewing/creating OpenTelemetry metric and span names against semantic conventions, including checklists and reference guides.

Registers the plugin in .claude-plugin/marketplace.json and updates release-please config/manifest so it is versioned and released alongside existing plugins.

Written by Cursor Bugbot for commit 89c6596. This will update automatically on new commits. Configure here.

@coderabbitai

coderabbitaiBot commented Mar 30, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@yordis has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 7 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3f9c2e6-8b90-4936-8c3e-86dd4241795e

📥 Commits

Reviewing files that changed from the base of the PR and between 16f386b and 89c6596.

📒 Files selected for processing (11)
  • .claude-plugin/marketplace.json
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Walkthrough

A new OpenTelemetry plugin (trogonstack-otel) is added with release-please configuration updates and comprehensive documentation covering metric and span naming conventions aligned with OTel Semantic Conventions.

Changes

Cohort / File(s)Summary
Release Configuration
.github/release-please-config.json, .github/release-please-manifest.json
Added package mapping and version entry for the new plugins/trogonstack-otel plugin with version 0.0.1.
Plugin Manifest
plugins/trogonstack-otel/.claude-plugin/plugin.json
Added plugin metadata defining name, description (OpenTelemetry semantic convention skills), version, and author information.
Metric Naming Skill
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md, ...anti-patterns.md, ...instruments.md, ...namespaces.md
Added comprehensive documentation on metric naming conventions, including namespace patterns, instrument selection criteria, anti-patterns, and validation checklist.
Span Naming Skill
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md, ...anti-patterns.md, ...protocols.md
Added comprehensive documentation on span naming conventions, including protocol-specific rules (HTTP, database, messaging, RPC), cardinality guidance, and anti-patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

autorelease: tagged

Poem

🐰✨ A plugin hops in, dressed in OTel grace,
Naming metrics, spans—each in their rightful place,
Conventions and patterns, anti-patterns too,
The semantic way, tried and true! 📊🏷️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: adding two OpenTelemetry naming skills (metric and span) to the trogonstack-otel plugin.
Description check✅ PassedThe description is well-related to the changeset, providing a clear summary of the plugin addition, detailed skill information, test plan, and registration details that match the file changes.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch otel-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 120ae49 to 16f386bCompareMarch 30, 2026 15:58

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md (1)

51-53: Normalize example metric names to one delimiter style.

Several examples mix underscore-style metric tokens with dot-separated conventions, which can produce inconsistent naming recommendations from the skill. Prefer one style across all examples (ideally the same style used elsewhere in this plugin docs).

Also applies to: 107-110

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`
around lines 51 - 53, The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md (1)

59-63: Clarify the *.system.name attribute reference.

Line 63 states "The system name MUST match the value in *.system.name attribute". The *.system.name notation is ambiguous—it's unclear whether this refers to:

  • A literal attribute name with an asterisk
  • A wildcard pattern meaning any {namespace}.system.name attribute (e.g., db.system.name, messaging.system.name)

Consider clarifying this with a concrete example or rewording for clarity.

📝 Suggested clarification
 ### System-Specific Attributes
- Pattern: `{system_name}.*.{property}`
- Examples: `cassandra.consistency.level`, `aws.s3.key`
-- The system name MUST match the value in `*.system.name` attribute+- The system name MUST match the value in the corresponding `{namespace}.system.name` attribute (e.g., if using `cassandra.*` attributes, the `db.system.name` attribute value should be `"cassandra"`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md` around lines 59 -
63, Clarify the ambiguous `*.system.name` reference in the "System-Specific
Attributes" section of SKILL.md by stating it is a wildcard pattern (not a
literal asterisk) meaning any {namespace}.system.name attribute (e.g.,
`db.system.name`, `messaging.system.name`), and update the sentence "The system
name MUST match the value in `*.system.name` attribute" to read something like
"The system name MUST match the value in the `{namespace}.system.name` attribute
(e.g., `db.system.name` for database systems)."
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md (1)

80-90: Clarify the DB client pattern explanation.

Line 84 states: "DB is always measured from client side, but convention uses client". This explanation is somewhat circular. Consider clarifying why the convention explicitly includes client even though DB operations are always from the client perspective (e.g., for consistency with other patterns, explicitness, or future-proofing).

📝 Suggested clarification
-| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | DB is always measured from client side, but convention uses `client` |+| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | Explicitly uses `client` for consistency with the pattern, even though DB operations are always client-side |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md` around lines 80 -
90, Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/trogonstack-otel/.claude-plugin/plugin.json`:
- Around line 1-9: Add a marketplace registration for the new plugin
"trogonstack-otel" into the .claude-plugin/marketplace.json so the plugin can be
discovered/installed; specifically, open .claude-plugin/marketplace.json and add
an entry matching the pattern used by other siblings (e.g.,
trogonstack-diataxis) that includes the plugin key "trogonstack-otel",
repository identifier (TrogonStack/agentskills or the correct repo), version
"0.0.1" and author metadata consistent with the existing entries, saving the
file so the new plugin appears alongside trogonstack-diataxis, trogonstack-gh,
trogonstack-nats, trogonstack-datadog and trogonstack-ask.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md`:
- Around line 37-38: Update the outdated OpenTelemetry attribute key in the
anti-patterns table by replacing occurrences of `db.system` with the canonical
`db.system.name`; specifically edit the table rows that read "Missing
`db.system` on DB calls" (and the other row referencing `db.system`) so they
instead say "Missing `db.system.name` on DB calls" and any inline code snippets
or cells use `db.system.name` to match protocols.md and the current semantic
conventions.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md`:
- Around line 39-46: The messaging examples use different operation names
("publish", "ack") than the operation table ("create", "send", "receive",
"process", "settle"); update the examples to use the table vocabulary so
terminology is consistent (replace "publish" with "send" and "ack" with "settle"
in the otel-name-span examples and any other occurrences referenced at lines
48-52), and ensure the span kind mappings in the examples match the table
entries (e.g., send -> PRODUCER/CLIENT, receive -> CLIENT, process -> CONSUMER,
settle -> CLIENT).
---
Nitpick comments:
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`:
- Around line 51-53: The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md`:
- Around line 80-90: Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md`:
- Around line 59-63: Clarify the ambiguous `*.system.name` reference in the
"System-Specific Attributes" section of SKILL.md by stating it is a wildcard
pattern (not a literal asterisk) meaning any {namespace}.system.name attribute
(e.g., `db.system.name`, `messaging.system.name`), and update the sentence "The
system name MUST match the value in `*.system.name` attribute" to read something
like "The system name MUST match the value in the `{namespace}.system.name`
attribute (e.g., `db.system.name` for database systems)."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4715ac1a-96ac-4639-8a26-7b048bf16c84

📥 Commits

Reviewing files that changed from the base of the PR and between a63ccae and 16f386b.

📒 Files selected for processing (10)
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Comment threadplugins/trogonstack-otel/.claude-plugin/plugin.json
Comment threadplugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md Outdated
@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 3d71edd to fdf5651CompareMarch 30, 2026 16:13
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit c563ecd into mainMar 30, 2026
4 checks passed
@yordis
yordis deleted the otel-skills branch March 30, 2026 16:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yordis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(trogonstack-otel): add metric and span naming skills - #28

Merged
yordis merged 1 commit into
mainfrom
otel-skills
Mar 30, 2026
Merged

feat(trogonstack-otel): add metric and span naming skills#28
yordis merged 1 commit into
mainfrom
otel-skills

Conversation

@yordis

Copy link
Copy Markdown
Member

Summary

  • Add trogonstack-otel plugin with two skills: otel-name-metric and otel-name-span
  • Both skills fetch latest OTel spec and blog posts before applying rules to guard against stale content
  • Register plugin in release-please config and manifest

Skills

otel-name-metric

Reviews or creates metric names following OTel Semantic Conventions. Covers naming patterns ({area}.{metric_name}, {area}.{client|server}.{metric_name}), instrument selection, UCUM units, pluralization, attribute placement, and anti-patterns.

Reference files: namespaces.md, instruments.md, anti-patterns.md

otel-name-span

Reviews or creates span names following OTel Semantic Conventions. Covers low-cardinality naming, {verb} {object} pattern, protocol-specific patterns (HTTP, DB, messaging, RPC), span status mapping, and attribute placement.

Reference files: protocols.md, anti-patterns.md

Test plan

  • Verify skills load correctly via Claude Code plugin system
  • Test otel-name-metric against sample metric definitions
  • Test otel-name-span against sample span definitions
  • Verify release-please picks up the new plugin on next release cycle

@cursor

cursorBot commented Mar 30, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Low risk: this PR only adds a new Claude Code plugin with documentation-style skills and registers it for release automation, without changing runtime application logic.

Overview
Adds a new trogonstack-otel Claude Code plugin (v0.0.1) that provides two skills—otel-name-metric and otel-name-span—for reviewing/creating OpenTelemetry metric and span names against semantic conventions, including checklists and reference guides.

Registers the plugin in .claude-plugin/marketplace.json and updates release-please config/manifest so it is versioned and released alongside existing plugins.

Written by Cursor Bugbot for commit 89c6596. This will update automatically on new commits. Configure here.

@coderabbitai

coderabbitaiBot commented Mar 30, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@yordis has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 7 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3f9c2e6-8b90-4936-8c3e-86dd4241795e

📥 Commits

Reviewing files that changed from the base of the PR and between 16f386b and 89c6596.

📒 Files selected for processing (11)
  • .claude-plugin/marketplace.json
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Walkthrough

A new OpenTelemetry plugin (trogonstack-otel) is added with release-please configuration updates and comprehensive documentation covering metric and span naming conventions aligned with OTel Semantic Conventions.

Changes

Cohort / File(s)Summary
Release Configuration
.github/release-please-config.json, .github/release-please-manifest.json
Added package mapping and version entry for the new plugins/trogonstack-otel plugin with version 0.0.1.
Plugin Manifest
plugins/trogonstack-otel/.claude-plugin/plugin.json
Added plugin metadata defining name, description (OpenTelemetry semantic convention skills), version, and author information.
Metric Naming Skill
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md, ...anti-patterns.md, ...instruments.md, ...namespaces.md
Added comprehensive documentation on metric naming conventions, including namespace patterns, instrument selection criteria, anti-patterns, and validation checklist.
Span Naming Skill
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md, ...anti-patterns.md, ...protocols.md
Added comprehensive documentation on span naming conventions, including protocol-specific rules (HTTP, database, messaging, RPC), cardinality guidance, and anti-patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

autorelease: tagged

Poem

🐰✨ A plugin hops in, dressed in OTel grace,
Naming metrics, spans—each in their rightful place,
Conventions and patterns, anti-patterns too,
The semantic way, tried and true! 📊🏷️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: adding two OpenTelemetry naming skills (metric and span) to the trogonstack-otel plugin.
Description check✅ PassedThe description is well-related to the changeset, providing a clear summary of the plugin addition, detailed skill information, test plan, and registration details that match the file changes.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch otel-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 120ae49 to 16f386bCompareMarch 30, 2026 15:58

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md (1)

51-53: Normalize example metric names to one delimiter style.

Several examples mix underscore-style metric tokens with dot-separated conventions, which can produce inconsistent naming recommendations from the skill. Prefer one style across all examples (ideally the same style used elsewhere in this plugin docs).

Also applies to: 107-110

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`
around lines 51 - 53, The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md (1)

59-63: Clarify the *.system.name attribute reference.

Line 63 states "The system name MUST match the value in *.system.name attribute". The *.system.name notation is ambiguous—it's unclear whether this refers to:

  • A literal attribute name with an asterisk
  • A wildcard pattern meaning any {namespace}.system.name attribute (e.g., db.system.name, messaging.system.name)

Consider clarifying this with a concrete example or rewording for clarity.

📝 Suggested clarification
 ### System-Specific Attributes
- Pattern: `{system_name}.*.{property}`
- Examples: `cassandra.consistency.level`, `aws.s3.key`
-- The system name MUST match the value in `*.system.name` attribute+- The system name MUST match the value in the corresponding `{namespace}.system.name` attribute (e.g., if using `cassandra.*` attributes, the `db.system.name` attribute value should be `"cassandra"`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md` around lines 59 -
63, Clarify the ambiguous `*.system.name` reference in the "System-Specific
Attributes" section of SKILL.md by stating it is a wildcard pattern (not a
literal asterisk) meaning any {namespace}.system.name attribute (e.g.,
`db.system.name`, `messaging.system.name`), and update the sentence "The system
name MUST match the value in `*.system.name` attribute" to read something like
"The system name MUST match the value in the `{namespace}.system.name` attribute
(e.g., `db.system.name` for database systems)."
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md (1)

80-90: Clarify the DB client pattern explanation.

Line 84 states: "DB is always measured from client side, but convention uses client". This explanation is somewhat circular. Consider clarifying why the convention explicitly includes client even though DB operations are always from the client perspective (e.g., for consistency with other patterns, explicitness, or future-proofing).

📝 Suggested clarification
-| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | DB is always measured from client side, but convention uses `client` |+| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | Explicitly uses `client` for consistency with the pattern, even though DB operations are always client-side |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md` around lines 80 -
90, Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/trogonstack-otel/.claude-plugin/plugin.json`:
- Around line 1-9: Add a marketplace registration for the new plugin
"trogonstack-otel" into the .claude-plugin/marketplace.json so the plugin can be
discovered/installed; specifically, open .claude-plugin/marketplace.json and add
an entry matching the pattern used by other siblings (e.g.,
trogonstack-diataxis) that includes the plugin key "trogonstack-otel",
repository identifier (TrogonStack/agentskills or the correct repo), version
"0.0.1" and author metadata consistent with the existing entries, saving the
file so the new plugin appears alongside trogonstack-diataxis, trogonstack-gh,
trogonstack-nats, trogonstack-datadog and trogonstack-ask.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md`:
- Around line 37-38: Update the outdated OpenTelemetry attribute key in the
anti-patterns table by replacing occurrences of `db.system` with the canonical
`db.system.name`; specifically edit the table rows that read "Missing
`db.system` on DB calls" (and the other row referencing `db.system`) so they
instead say "Missing `db.system.name` on DB calls" and any inline code snippets
or cells use `db.system.name` to match protocols.md and the current semantic
conventions.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md`:
- Around line 39-46: The messaging examples use different operation names
("publish", "ack") than the operation table ("create", "send", "receive",
"process", "settle"); update the examples to use the table vocabulary so
terminology is consistent (replace "publish" with "send" and "ack" with "settle"
in the otel-name-span examples and any other occurrences referenced at lines
48-52), and ensure the span kind mappings in the examples match the table
entries (e.g., send -> PRODUCER/CLIENT, receive -> CLIENT, process -> CONSUMER,
settle -> CLIENT).
---
Nitpick comments:
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`:
- Around line 51-53: The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md`:
- Around line 80-90: Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md`:
- Around line 59-63: Clarify the ambiguous `*.system.name` reference in the
"System-Specific Attributes" section of SKILL.md by stating it is a wildcard
pattern (not a literal asterisk) meaning any {namespace}.system.name attribute
(e.g., `db.system.name`, `messaging.system.name`), and update the sentence "The
system name MUST match the value in `*.system.name` attribute" to read something
like "The system name MUST match the value in the `{namespace}.system.name`
attribute (e.g., `db.system.name` for database systems)."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4715ac1a-96ac-4639-8a26-7b048bf16c84

📥 Commits

Reviewing files that changed from the base of the PR and between a63ccae and 16f386b.

📒 Files selected for processing (10)
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Comment threadplugins/trogonstack-otel/.claude-plugin/plugin.json
Comment threadplugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md Outdated
@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 3d71edd to fdf5651CompareMarch 30, 2026 16:13
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit c563ecd into mainMar 30, 2026
4 checks passed
@yordis
yordis deleted the otel-skills branch March 30, 2026 16:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yordis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(trogonstack-otel): add metric and span naming skills - #28

Merged
yordis merged 1 commit into
mainfrom
otel-skills
Mar 30, 2026
Merged

feat(trogonstack-otel): add metric and span naming skills#28
yordis merged 1 commit into
mainfrom
otel-skills

Conversation

@yordis

Copy link
Copy Markdown
Member

Summary

  • Add trogonstack-otel plugin with two skills: otel-name-metric and otel-name-span
  • Both skills fetch latest OTel spec and blog posts before applying rules to guard against stale content
  • Register plugin in release-please config and manifest

Skills

otel-name-metric

Reviews or creates metric names following OTel Semantic Conventions. Covers naming patterns ({area}.{metric_name}, {area}.{client|server}.{metric_name}), instrument selection, UCUM units, pluralization, attribute placement, and anti-patterns.

Reference files: namespaces.md, instruments.md, anti-patterns.md

otel-name-span

Reviews or creates span names following OTel Semantic Conventions. Covers low-cardinality naming, {verb} {object} pattern, protocol-specific patterns (HTTP, DB, messaging, RPC), span status mapping, and attribute placement.

Reference files: protocols.md, anti-patterns.md

Test plan

  • Verify skills load correctly via Claude Code plugin system
  • Test otel-name-metric against sample metric definitions
  • Test otel-name-span against sample span definitions
  • Verify release-please picks up the new plugin on next release cycle

@cursor

cursorBot commented Mar 30, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Low risk: this PR only adds a new Claude Code plugin with documentation-style skills and registers it for release automation, without changing runtime application logic.

Overview
Adds a new trogonstack-otel Claude Code plugin (v0.0.1) that provides two skills—otel-name-metric and otel-name-span—for reviewing/creating OpenTelemetry metric and span names against semantic conventions, including checklists and reference guides.

Registers the plugin in .claude-plugin/marketplace.json and updates release-please config/manifest so it is versioned and released alongside existing plugins.

Written by Cursor Bugbot for commit 89c6596. This will update automatically on new commits. Configure here.

@coderabbitai

coderabbitaiBot commented Mar 30, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@yordis has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 7 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 7 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d3f9c2e6-8b90-4936-8c3e-86dd4241795e

📥 Commits

Reviewing files that changed from the base of the PR and between 16f386b and 89c6596.

📒 Files selected for processing (11)
  • .claude-plugin/marketplace.json
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Walkthrough

A new OpenTelemetry plugin (trogonstack-otel) is added with release-please configuration updates and comprehensive documentation covering metric and span naming conventions aligned with OTel Semantic Conventions.

Changes

Cohort / File(s)Summary
Release Configuration
.github/release-please-config.json, .github/release-please-manifest.json
Added package mapping and version entry for the new plugins/trogonstack-otel plugin with version 0.0.1.
Plugin Manifest
plugins/trogonstack-otel/.claude-plugin/plugin.json
Added plugin metadata defining name, description (OpenTelemetry semantic convention skills), version, and author information.
Metric Naming Skill
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md, ...anti-patterns.md, ...instruments.md, ...namespaces.md
Added comprehensive documentation on metric naming conventions, including namespace patterns, instrument selection criteria, anti-patterns, and validation checklist.
Span Naming Skill
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md, ...anti-patterns.md, ...protocols.md
Added comprehensive documentation on span naming conventions, including protocol-specific rules (HTTP, database, messaging, RPC), cardinality guidance, and anti-patterns.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

autorelease: tagged

Poem

🐰✨ A plugin hops in, dressed in OTel grace,
Naming metrics, spans—each in their rightful place,
Conventions and patterns, anti-patterns too,
The semantic way, tried and true! 📊🏷️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: adding two OpenTelemetry naming skills (metric and span) to the trogonstack-otel plugin.
Description check✅ PassedThe description is well-related to the changeset, providing a clear summary of the plugin addition, detailed skill information, test plan, and registration details that match the file changes.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch otel-skills

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 120ae49 to 16f386bCompareMarch 30, 2026 15:58

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md (1)

51-53: Normalize example metric names to one delimiter style.

Several examples mix underscore-style metric tokens with dot-separated conventions, which can produce inconsistent naming recommendations from the skill. Prefer one style across all examples (ideally the same style used elsewhere in this plugin docs).

Also applies to: 107-110

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`
around lines 51 - 53, The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
plugins/trogonstack-otel/skills/otel-name-span/SKILL.md (1)

59-63: Clarify the *.system.name attribute reference.

Line 63 states "The system name MUST match the value in *.system.name attribute". The *.system.name notation is ambiguous—it's unclear whether this refers to:

  • A literal attribute name with an asterisk
  • A wildcard pattern meaning any {namespace}.system.name attribute (e.g., db.system.name, messaging.system.name)

Consider clarifying this with a concrete example or rewording for clarity.

📝 Suggested clarification
 ### System-Specific Attributes
- Pattern: `{system_name}.*.{property}`
- Examples: `cassandra.consistency.level`, `aws.s3.key`
-- The system name MUST match the value in `*.system.name` attribute+- The system name MUST match the value in the corresponding `{namespace}.system.name` attribute (e.g., if using `cassandra.*` attributes, the `db.system.name` attribute value should be `"cassandra"`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md` around lines 59 -
63, Clarify the ambiguous `*.system.name` reference in the "System-Specific
Attributes" section of SKILL.md by stating it is a wildcard pattern (not a
literal asterisk) meaning any {namespace}.system.name attribute (e.g.,
`db.system.name`, `messaging.system.name`), and update the sentence "The system
name MUST match the value in `*.system.name` attribute" to read something like
"The system name MUST match the value in the `{namespace}.system.name` attribute
(e.g., `db.system.name` for database systems)."
plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md (1)

80-90: Clarify the DB client pattern explanation.

Line 84 states: "DB is always measured from client side, but convention uses client". This explanation is somewhat circular. Consider clarifying why the convention explicitly includes client even though DB operations are always from the client perspective (e.g., for consistency with other patterns, explicitness, or future-proofing).

📝 Suggested clarification
-| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | DB is always measured from client side, but convention uses `client` |+| `db.client.operation.duration` | `{area}.{client}.{metric_name}` | Explicitly uses `client` for consistency with the pattern, even though DB operations are always client-side |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md` around lines 80 -
90, Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/trogonstack-otel/.claude-plugin/plugin.json`:
- Around line 1-9: Add a marketplace registration for the new plugin
"trogonstack-otel" into the .claude-plugin/marketplace.json so the plugin can be
discovered/installed; specifically, open .claude-plugin/marketplace.json and add
an entry matching the pattern used by other siblings (e.g.,
trogonstack-diataxis) that includes the plugin key "trogonstack-otel",
repository identifier (TrogonStack/agentskills or the correct repo), version
"0.0.1" and author metadata consistent with the existing entries, saving the
file so the new plugin appears alongside trogonstack-diataxis, trogonstack-gh,
trogonstack-nats, trogonstack-datadog and trogonstack-ask.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md`:
- Around line 37-38: Update the outdated OpenTelemetry attribute key in the
anti-patterns table by replacing occurrences of `db.system` with the canonical
`db.system.name`; specifically edit the table rows that read "Missing
`db.system` on DB calls" (and the other row referencing `db.system`) so they
instead say "Missing `db.system.name` on DB calls" and any inline code snippets
or cells use `db.system.name` to match protocols.md and the current semantic
conventions.
In `@plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md`:
- Around line 39-46: The messaging examples use different operation names
("publish", "ack") than the operation table ("create", "send", "receive",
"process", "settle"); update the examples to use the table vocabulary so
terminology is consistent (replace "publish" with "send" and "ack" with "settle"
in the otel-name-span examples and any other occurrences referenced at lines
48-52), and ensure the span kind mappings in the examples match the table
entries (e.g., send -> PRODUCER/CLIENT, receive -> CLIENT, process -> CONSUMER,
settle -> CLIENT).
---
Nitpick comments:
In `@plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md`:
- Around line 51-53: The examples mix underscore and dot delimiters; normalize
to dot-separated metric tokens used elsewhere by replacing underscores with dots
in the example names—e.g. change `faas.invoke_duration` to
`faas.invoke.duration`, `gen_ai.client.token.usage` to
`gen.ai.client.token.usage` (convert the namespace delimiter too if other docs
use dots), and ensure `cicd.pipeline.run.duration` remains dot-delimited; apply
the same normalization to the other examples referenced around lines 107-110 so
all example metric names consistently use dot separators.
In `@plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md`:
- Around line 80-90: Clarify the DB client pattern text for the example
`db.client.operation.duration` and the pattern `{area}.{client}.{metric_name}`:
replace the circular sentence with a concise rationale saying the `client` token
is included for explicitness and consistency with other area/client/server
conventions (helps tooling and humans understand the side of the operation),
supports future cases like proxies/replicas or server-side DB metrics, and keeps
naming predictable across metric families; update the explanation next to
`db.client.operation.duration` to reflect this.
In `@plugins/trogonstack-otel/skills/otel-name-span/SKILL.md`:
- Around line 59-63: Clarify the ambiguous `*.system.name` reference in the
"System-Specific Attributes" section of SKILL.md by stating it is a wildcard
pattern (not a literal asterisk) meaning any {namespace}.system.name attribute
(e.g., `db.system.name`, `messaging.system.name`), and update the sentence "The
system name MUST match the value in `*.system.name` attribute" to read something
like "The system name MUST match the value in the `{namespace}.system.name`
attribute (e.g., `db.system.name` for database systems)."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4715ac1a-96ac-4639-8a26-7b048bf16c84

📥 Commits

Reviewing files that changed from the base of the PR and between a63ccae and 16f386b.

📒 Files selected for processing (10)
  • .github/release-please-config.json
  • .github/release-please-manifest.json
  • plugins/trogonstack-otel/.claude-plugin/plugin.json
  • plugins/trogonstack-otel/skills/otel-name-metric/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/instruments.md
  • plugins/trogonstack-otel/skills/otel-name-metric/references/namespaces.md
  • plugins/trogonstack-otel/skills/otel-name-span/SKILL.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md
  • plugins/trogonstack-otel/skills/otel-name-span/references/protocols.md

Comment threadplugins/trogonstack-otel/.claude-plugin/plugin.json
Comment threadplugins/trogonstack-otel/skills/otel-name-span/references/anti-patterns.md Outdated
@yordis
yordisforce-pushed the otel-skills branch 2 times, most recently from 3d71edd to fdf5651CompareMarch 30, 2026 16:13
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit c563ecd into mainMar 30, 2026
4 checks passed
@yordis
yordis deleted the otel-skills branch March 30, 2026 16:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yordis