Token导航 LogoToken导航

Agent Skill · 开发

otel-ottl(奥特尔酒店)

otel-ottl 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

otel-ottl 是开发类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为接触敏感数据;许可证信息还不明确,第三方扫描已通过,按安装量在开发类的 21,746 个 Skill 里排第 7,758。

总安装 3,552周安装 151GitHub Stars 50下载 1,244核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:otel-ottl(奥特尔酒店)
来源仓库:https://github.com/dash0hq/agent-skills
仓库路径:skills/otel-ottl
安装命令:
npx skills add https://github.com/dash0hq/agent-skills --skill otel-ottl
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/dash0hq/agent-skills --skill otel-ottl

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

otel-ottl 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态或代码变更进行整理。通过 npx skills add 命令从指定仓库安装,需结合 README 确认具体用法。

安装前建议核实权限范围、维护状态及是否涉及联网或文件操作。otel-ottl 属于开发类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/otel-ottl

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/dash0hq/agent-skills --skill otel-ottl;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

otel-ottl 怎么安装?

在终端执行 npx skills add https://github.com/dash0hq/agent-skills --skill otel-ottl。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

otel-ottl 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

otel-ottl 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

otel-ottl 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

otel-ottl 用的人多吗?

公开数据是累计安装 3,552 次,近一周安装 151 次,下载 1,244 次,GitHub 50 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

otel-ottl 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
otel-ottl

奥特尔酒店 · 本页

3,55250接触敏感数据未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

OpenTelemetry Transformation Language (OTTL)

Use OTTL to transform, filter, and manipulate telemetry data inside the OpenTelemetry Collector — without changing application code.

Components that use OTTL

OTTL is not limited to the transform and filter processors. The following Collector components accept OTTL expressions in their configuration.

Processors

ComponentUse case
transformModify, enrich, or redact telemetry (set attributes, rename fields, truncate values)
filterDrop telemetry entirely (discard metrics by name, drop spans by status, remove noisy logs)
attributesInsert, update, delete, or hash resource and record attributes
spanRename spans and set span status based on attribute values
tailsamplingSample traces based on OTTL conditions (e.g., keep error traces, drop health checks)
cumulativetodeltaConvert cumulative metrics to delta temporality with OTTL-based metric selection
logdedupDeduplicate log records using OTTL conditions
lookupEnrich telemetry by looking up values from external tables using OTTL expressions

Connectors

ComponentUse case
routingRoute telemetry to different pipelines based on OTTL conditions
countCount spans, metrics, or logs matching OTTL conditions and emit as metrics
sumSum numeric values from telemetry matching OTTL conditions and emit as metrics
signaltometricsGenerate metrics from spans or logs using OTTL expressions for attribute extraction

Receivers

ComponentUse case
hostmetricsFilter host metrics at collection time using OTTL conditions

OTTL syntax

Path expressions

Navigate telemetry data using dot notation:

span.name
span.attributes["http.method"]
resource.attributes["service.name"]

Contexts (first path segment) map to OpenTelemetry signal structures:

  • resource - Resource-level attributes
  • scope - Instrumentation scope
  • span - Span data (traces)
  • spanevent - Span events
  • metric - Metric metadata
  • datapoint - Metric data points
  • log - Log records

Enumerations

Several fields accept int64 values exposed as global constants:

span.status.code == STATUS_CODE_ERROR
span.kind == SPAN_KIND_SERVER

Operators

CategoryOperators
Assignment=
Comparison==, !=, >, <, >=, <=
Logicaland, or, not

Functions

Converters (uppercase, pure functions that return values):

ToUpperCase(span.attributes["http.request.method"])
Substring(log.body.string, 0, 1024)
Concat(["prefix", span.attributes["request.id"]], "-")
IsMatch(metric.name, "^k8s\\..*$")

Editors (lowercase, functions with side-effects that modify data):

set(span.attributes["region"], "us-east-1")
delete_key(resource.attributes, "internal.key")
limit(log.attributes, 10, [])

Conditional statements

The where clause applies transformations conditionally:

span.attributes["db.statement"] = "REDACTED" where resource.attributes["service.name"] == "accounting"

Nil checks

OTTL uses nil for absence checking (not null):

resource.attributes["service.name"] != nil

Common patterns

Set attributes

set(resource.attributes["k8s.cluster.name"], "prod-aws-us-west-2")

Redact sensitive data

Replace known sensitive attributes with a fixed placeholder. Always guard with a nil check to avoid creating the attribute when it does not exist.

set(span.attributes["http.request.header.authorization"], "REDACTED") where span.attributes["http.request.header.authorization"] != nil
Redact authorization and session headers
processors:
  transform/redact-headers:
    error_mode: ignore
    trace_statements:
      - context: span
        statements:
          - set(span.attributes["http.request.header.authorization"], "REDACTED") where span.attributes["http.request.header.authorization"] != nil
          - set(span.attributes["http.request.header.cookie"], "REDACTED") where span.attributes["http.request.header.cookie"] != nil
          - set(span.attributes["http.response.header.set-cookie"], "REDACTED") where span.attributes["http.response.header.set-cookie"] != nil
    log_statements:
      - context: log
        statements:
          - set(log.attributes["http.request.header.authorization"], "REDACTED") where log.attributes["http.request.header.authorization"] != nil
          - set(log.attributes["http.request.header.cookie"], "REDACTED") where log.attributes["http.request.header.cookie"] != nil
Mask credit card numbers in log bodies

Use replace_pattern to replace patterns matching sensitive data while preserving the rest of the field. For example, the following pattern matches 13–19 digit sequences (covering Visa, Mastercard, Amex, and others) and replaces them with a masked value.

processors:
  transform/redact-credit-cards:
    error_mode: ignore
    log_statements:
      - context: log
        statements:
          - replace_pattern(log.body["string"], "\\b(\\d{4})\\d{5,11}(\\d{4})\\b", "$$1****$$2")
Replace email addresses with a hash

Use a hash function to replace email addresses with a non-reversible identifier that still allows correlation across records.

processors:
  transform/hash-emails:
    error_mode: ignore
    trace_statements:
      - context: span
        statements:
          - set(span.attributes["user.email"], SHA256(span.attributes["user.email"])) where span.attributes["user.email"] != nil
    log_statements:
      - context: log
        statements:
          - set(log.attributes["user.email"], SHA256(log.attributes["user.email"])) where log.attributes["user.email"] != nil
Delete attributes that should never be exported

Use delete_key to remove attributes entirely rather than replacing them with a placeholder.

processors:
  transform/delete-sensitive:
    error_mode: ignore
    trace_statements:
      - context: span
        statements:
          - delete_key(span.attributes, "credit-card.number") where IsMatch(span.attributes["credit-card.number"], "(?i)(password|secret|token)")
    log_statements:
      - context: log
        statements:
          - delete_key(log.attributes, "request.body")
Drop log records containing sensitive data

Use the filter processor to drop entire log records that match a sensitive pattern, when redaction is not sufficient.

processors:
  filter/drop-sensitive-logs:
    error_mode: ignore
    logs:
      log_record:
        - 'IsMatch(log.body["string"], "(?i)-----BEGIN (RSA |EC )?PRIVATE KEY-----")'
Pipeline placement

Place redaction processors after enrichment processors (resourcedetection, k8sattributes, resource) and before exporters. Redaction must run after all attributes have been set, but before telemetry leaves the Collector. See processor ordering for the full ordering guidance.

Application-level sanitization is the first line of defence. Use Collector-side redaction as a safety net, not a substitute for source-level prevention. See the sensitive data rule in the otel-instrumentation skill for application-level guidance.

Drop telemetry by pattern

In a filter processor, matching expressions cause data to be dropped:

IsMatch(metric.name, "^k8s\\.replicaset\\..*$")

Drop stale data

time_unix_nano < UnixNano(Now()) - 21600000000000

Backfill missing timestamps

processors:
  transform:
    log_statements:
      - context: log
        statements:
          - set(log.observed_time, Now()) where log.observed_time_unix_nano == 0
          - set(log.time, log.observed_time) where log.time_unix_nano == 0

Filter processor example

processors:
  filter:
    metrics:
      datapoint:
        - 'IsMatch(ConvertCase(String(metric.name), "lower"), "^k8s\\.replicaset\\.")'

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [filter, batch]
      exporters: [debug]

Transform processor example

processors:
  transform:
    trace_statements:
      - context: span
        statements:
          - set(span.status.code, STATUS_CODE_ERROR) where span.attributes["http.response.status_code"] >= 500
          - set(span.attributes["env"], "production") where resource.attributes["deployment.environment"] == "prod"

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [transform, batch]
      exporters: [debug]

Defensive nil checks

Always check for nil before operating on optional attributes:

resource.attributes["service.namespace"] != nil
and
IsMatch(ConvertCase(String(resource.attributes["service.namespace"]), "lower"), "^platform.*$")

Normalize high-cardinality attributes

High-cardinality attributes — URL paths with embedded IDs, long freeform strings, or unbounded attribute maps — inflate storage costs and degrade query performance. Use OTTL in a transform processor to normalize these attributes before export.

Replace dynamic path segments

Replace numeric IDs and UUIDs in url.path and http.route with fixed placeholders to collapse cardinality.

processors:
  transform/normalize-paths:
    error_mode: ignore
    trace_statements:
      - context: span
        statements:
          - replace_pattern(span.attributes["url.path"], "/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", "/{uuid}") where span.attributes["url.path"] != nil
          - replace_pattern(span.attributes["url.path"], "/\\d+", "/{id}") where span.attributes["url.path"] != nil
          - replace_pattern(span.attributes["http.route"], "/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", "/{uuid}") where span.attributes["http.route"] != nil
          - replace_pattern(span.attributes["http.route"], "/\\d+", "/{id}") where span.attributes["http.route"] != nil
Mask IP addresses to subnet

Replace the last octet of IPv4 addresses with 0 to reduce cardinality while preserving subnet-level information.

processors:
  transform/mask-ips:
    error_mode: ignore
    trace_statements:
      - context: span
        statements:
          - replace_pattern(span.attributes["client.address"], "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\\.\\d{1,3}", "$$1.0") where span.attributes["client.address"] != nil
    log_statements:
      - context: log
        statements:
          - replace_pattern(log.attributes["client.address"], "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\\.\\d{1,3}", "$$1.0") where log.attributes["client.address"] != nil
Limit attribute count and value length

Use limit and truncate_all to enforce bounds on attribute maps that may grow unboundedly.

processors:
  transform/limit-attributes:
    error_mode: ignore
    trace_statements:
      - context: span
        statements:
          - limit(span.attributes, 64, [])
          - truncate_all(span.attributes, 256)
    log_statements:
      - context: log
        statements:
          - limit(log.attributes, 64, [])
          - truncate_all(log.attributes, 256)

Enrich telemetry with static attributes

When resourcedetection or k8sattributes processors are not available — for example, in non-Kubernetes deployments or when the Collector runs outside the cluster — set resource attributes explicitly.

processors:
  resource/static-env:
    attributes:
      - key: deployment.environment.name
        value: production
        action: upsert
      - key: k8s.cluster.name
        value: prod-us-west-2
        action: upsert

Use the resource processor (not the transform processor) for static resource attributes. The resource processor operates at the resource level directly, while transform requires a resource context and explicit path expressions.

To copy a resource attribute down to the span or log level — for example, when the backend does not propagate resource context — use the transform processor:

processors:
  transform/copy-resource:
    error_mode: ignore
    trace_statements:
      - context: span
        statements:
          - set(span.attributes["deployment.environment.name"], resource.attributes["deployment.environment.name"]) where resource.attributes["deployment.environment.name"] != nil

Error handling

Compilation errors

Occur during processor initialization and prevent Collector startup:

  • Invalid syntax (missing quotes)
  • Unknown functions
  • Invalid path expressions
  • Type mismatches

Runtime errors

Occur during telemetry processing:

  • Accessing non-existent attributes
  • Type conversion failures
  • Function execution errors

Error mode configuration

Always set error_mode explicitly. The default (propagate) stops processing the current item on any error, which can silently drop telemetry in production.

ModeBehaviorWhen to use
propagate (default)Stops processing current itemDevelopment and strict environments where you want to catch every error
ignoreLogs error, continues processingProduction — set this unless you have a specific reason not to
silentIgnores errors without loggingHigh-volume pipelines with known-safe transforms where error logs are noise
processors:
  transform:
    error_mode: ignore
    trace_statements:
      - context: span
        statements:
          - set(span.attributes["parsed"], ParseJSON(span.attributes["json_body"]))

Performance

OTTL statements compile once at startup and execute as optimized function chains at runtime. There is no need to optimize for compilation speed — focus on reducing the number of statements that evaluate per telemetry item. Use where clauses to skip items early rather than applying unconditional transforms.

Function reference

Editors

Editors modify telemetry data in-place. They are lowercase.

FunctionSignatureDescription
appendappend(target, Optional[value], Optional[values])Appends single or multiple values to a target field, converting scalars to arrays if needed
delete_keydelete_key(target, key)Removes a key from a map
delete_matching_keysdelete_matching_keys(target, pattern)Removes all keys matching a regex pattern
flattenflatten(target, Optional[prefix], Optional[depth])Flattens nested maps to the root level
keep_keyskeep_keys(target, keys[])Removes all keys NOT in the supplied list
keep_matching_keyskeep_matching_keys(target, pattern)Keeps only keys matching a regex pattern
limitlimit(target, limit, priority_keys[])Reduces map size to not exceed limit, preserving priority keys
merge_mapsmerge_maps(target, source, strategy)Merges source into target (strategy: insert, update, upsert)
replace_all_matchesreplace_all_matches(target, pattern, replacement)Replaces matching string values using glob patterns
replace_all_patternsreplace_all_patterns(target, mode, regex, replacement)Replaces segments matching regex (mode: key or value)
replace_matchreplace_match(target, pattern, replacement)Replaces entire string if it matches a glob pattern
replace_patternreplace_pattern(target, regex, replacement)Replaces string sections matching a regex
setset(target, value)Sets a telemetry field to a value
truncate_alltruncate_all(target, limit)Truncates all string values in a map to a max length

Converters: type checking

FunctionSignatureDescription
IsBoolIsBool(value)Returns true if value is boolean
IsDoubleIsDouble(value)Returns true if value is float64
IsIntIsInt(value)Returns true if value is int64
IsMapIsMap(value)Returns true if value is a map
IsListIsList(value)Returns true if value is a list
IsMatchIsMatch(target, pattern)Returns true if target matches regex pattern
IsRootSpanIsRootSpan()Returns true if span has no parent
IsStringIsString(value)Returns true if value is a string

Converters: type conversion

FunctionSignatureDescription
BoolBool(value)Converts value to boolean
DoubleDouble(value)Converts value to float64
IntInt(value)Converts value to int64
StringString(value)Converts value to string

Converters: string manipulation

FunctionSignatureDescription
ConcatConcat(values[], delimiter)Concatenates values with a delimiter
ConvertCaseConvertCase(target, toCase)Converts to lower, upper, snake, or camel
HasPrefixHasPrefix(value, prefix)Returns true if value starts with prefix
HasSuffixHasSuffix(value, suffix)Returns true if value ends with suffix
IndexIndex(target, value)Returns first index of value in target, or -1
SplitSplit(target, delimiter)Splits string into array by delimiter
SubstringSubstring(target, start, length)Extracts substring from start position
ToCamelCaseToCamelCase(target)Converts to CamelCase
ToLowerCaseToLowerCase(target)Converts to lowercase
ToSnakeCaseToSnakeCase(target)Converts to snake_case
ToUpperCaseToUpperCase(target)Converts to UPPERCASE
TrimTrim(target, Optional[char])Removes leading/trailing characters
TrimPrefixTrimPrefix(value, prefix)Removes leading prefix
TrimSuffixTrimSuffix(value, suffix)Removes trailing suffix

Converters: Hashing

FunctionSignatureDescription
FNVFNV(value)Returns FNV hash as int64
MD5MD5(value)Returns MD5 hash as hex string
Murmur3HashMurmur3Hash(target)Returns 32-bit Murmur3 hash as hex string
Murmur3Hash128Murmur3Hash128(target)Returns 128-bit Murmur3 hash as hex string
SHA1SHA1(value)Returns SHA1 hash as hex string
SHA256SHA256(value)Returns SHA256 hash as hex string
SHA512SHA512(value)Returns SHA512 hash as hex string

Converters: encoding and decoding

FunctionSignatureDescription
DecodeDecode(value, encoding)Decodes string (base64, base64-raw, base64-url, IANA encodings)
HexHex(value)Returns hexadecimal representation

Converters: Parsing

FunctionSignatureDescription
ExtractPatternsExtractPatterns(target, pattern)Extracts named regex capture groups into a map
ExtractGrokPatternsExtractGrokPatterns(target, pattern, Optional[namedOnly], Optional[defs])Parses unstructured data using grok patterns
ParseCSVParseCSV(target, headers, Optional[delimiter], Optional[headerDelimiter], Optional[mode])Parses CSV string to map
ParseIntParseInt(target, base)Parses string as integer in given base (2-36)
ParseJSONParseJSON(target)Parses JSON string to map or slice
ParseKeyValueParseKeyValue(target, Optional[delimiter], Optional[pair_delimiter])Parses key-value string to map
ParseSeverityParseSeverity(target, severityMapping)Maps log level value to severity string
ParseSimplifiedXMLParseSimplifiedXML(target)Parses XML string to map (ignores attributes)
ParseXMLParseXML(target)Parses XML string to map (preserves structure)

Converters: Time and Date

FunctionSignatureDescription
DayDay(value)Returns day component from time
DurationDuration(duration)Parses duration string (e.g. "3s", "333ms")
FormatTimeFormatTime(time, format)Formats time to string using Go layout
HourHour(value)Returns hour component from time
HoursHours(value)Returns duration as floating-point hours
MinuteMinute(value)Returns minute component from time
MinutesMinutes(value)Returns duration as floating-point minutes
MonthMonth(value)Returns month component from time
NanosecondNanosecond(value)Returns nanosecond component from time
NanosecondsNanoseconds(value)Returns duration as nanosecond count
NowNow()Returns current time
SecondSecond(value)Returns second component from time
SecondsSeconds(value)Returns duration as floating-point seconds
TimeTime(target, format, Optional[location], Optional[locale])Parses string to time
TruncateTimeTruncateTime(time, duration)Truncates time to multiple of duration
UnixUnix(seconds, Optional[nanoseconds])Creates time from Unix epoch
UnixMicroUnixMicro(value)Returns time as microseconds since epoch
UnixMilliUnixMilli(value)Returns time as milliseconds since epoch
UnixNanoUnixNano(value)Returns time as nanoseconds since epoch
UnixSecondsUnixSeconds(value)Returns time as seconds since epoch
WeekdayWeekday(value)Returns day of week from time
YearYear(value)Returns year component from time

Converters: Collections

FunctionSignatureDescription
ContainsValueContainsValue(target, item)Returns true if item exists in slice
FormatFormat(formatString, args[])Formats string using fmt.Sprintf syntax
KeysKeys(target)Returns all keys from a map
LenLen(target)Returns length of string, slice, or map
SliceToMapSliceToMap(target, Optional[keyPath], Optional[valuePath])Converts slice of objects to map
SortSort(target, Optional[order])Sorts array (asc or desc)
ToKeyValueStringToKeyValueString(target, Optional[delim], Optional[pairDelim], Optional[sort])Converts map to key-value string
ValuesValues(target)Returns all values from a map

Converters: IDs and Encoding

FunctionSignatureDescription
ProfileID`ProfileID(bytes\string)`Creates ProfileID from 16 bytes or 32 hex chars
SpanID`SpanID(bytes\string)`Creates SpanID from 8 bytes or 16 hex chars
TraceID`TraceID(bytes\string)`Creates TraceID from 16 bytes or 32 hex chars
UUIDUUID()Generates a new UUID
UUIDv7UUIDv7()Generates a new UUIDv7

Converters: XML

FunctionSignatureDescription
ConvertAttributesToElementsXMLConvertAttributesToElementsXML(target, Optional[xpath])Converts XML attributes to child elements
ConvertTextToElementsXMLConvertTextToElementsXML(target, Optional[xpath], Optional[name])Wraps XML text content in elements
GetXMLGetXML(target, xpath)Returns XML elements matching XPath
InsertXMLInsertXML(target, xpath, value)Inserts XML at XPath locations
RemoveXMLRemoveXML(target, xpath)Removes XML elements matching XPath

Converters: Miscellaneous

FunctionSignatureDescription
CommunityIDCommunityID(srcIP, srcPort, dstIP, dstPort, Optional[proto], Optional[seed])Generates network flow hash
IsValidLuhnIsValidLuhn(value)Returns true if value passes Luhn check
LogLog(value)Returns natural logarithm as float64
URLURL(url_string)Parses URL into components (scheme, host, path, etc.)
UserAgentUserAgent(value)Parses user-agent string into map (name, version, OS)

References

平台分布

Codex

35.57%
按下载量换算442

Claude

32.46%
按下载量换算404

Cursor

19.53%
按下载量换算243

Gemini CLI

8.79%
按下载量换算109

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills