[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M73FJ1BY3SGBJCVE25WWG2VC":3,"skill-same:01M73FJ1BY3SGBJCVE25WWG2VC":47},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":26,"repositoryHtmlUrl":27,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M73FJ1BY3SGBJCVE25WWG2VC","runtime-metrics-meters",null,"Horonomos-laps\u002FYana-AI","Horonomos-laps","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F355299122?v=4","01M76B3QPXE88ET2SQPDPVATZT"," Horonomos-laps","01M72ZQRJPCYPSSWT4D00VJR2A",13,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fruntime-metrics-meters\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: runtime-metrics-meters\ndescription: Runtime operational metrics with meters, timers, histograms, and moving averages. node-measured patterns for tracking request rates, execution durations, error rates, and EWMAs for agent performance observability. Sources: caustik\u002Fnode-measured.\norigin: yana-ai — synthesized from caustik\u002Fnode-measured (BSD-2-Clause), metrics patterns from Coda Hale's Metrics library\nlicense: Apache-2.0\nversion: 1.0.0\ncompatibility: yana-ai >= 1.3.48\n---\n\n# \u002Fruntime-metrics-meters\n\n## When to Use\n\n- Track tool call rates and durations with 1m\u002F5m\u002F15m moving averages\n- Measure p50\u002Fp95\u002Fp99 latency without external infrastructure\n- Count error rates alongside success rates for circuit breaker thresholds\n- Self-describing metrics report for agent health API endpoint\n\n## Do NOT use for\n\n- Persistent metrics across restarts (use [[statsd-metrics-streaming]] with Datadog)\n- Sub-microsecond precision (overhead makes it unsuitable for tight loops)\n\n---\n\n## Core metrics setup\n\n```javascript\nimport { createCollection } from 'measured-core'\n\nconst metrics = createCollection()\n\n\u002F\u002F Counter: monotonically increasing\nconst toolCalls    = metrics.counter('tool.calls')\nconst toolErrors   = metrics.counter('tool.errors')\n\n\u002F\u002F Meter: rate per second (1m\u002F5m\u002F15m EWMA)\nconst callRate = metrics.meter('tool.call_rate')\n\n\u002F\u002F Timer: duration + rate + histogram\nconst toolTimer = metrics.timer('tool.duration')\n\n\u002F\u002F Gauge: current value\nmetrics.gauge('agents.active', () => activeAgentCount)\n```\n\n---\n\n## Instrument tool calls\n\n```javascript\nasync function measuredTool(name: string, fn: () => Promise\u003Cunknown>) {\n  const stopwatch = toolTimer.start()\n  toolCalls.inc()\n  callRate.mark()\n\n  try {\n    const result = await fn()\n    return result\n  } catch (err) {\n    toolErrors.inc()\n    metrics.counter(`tool.error.${name}`).inc()\n    throw err\n  } finally {\n    stopwatch.end()\n  }\n}\n```\n\n---\n\n## Read metrics for health endpoint\n\n```javascript\nimport { createCollection } from 'measured-core'\n\nfunction getMetricsReport() {\n  const data = metrics.toJSON()\n  return {\n    toolCalls:    data['tool.calls'],\n    errorRate:    data['tool.call_rate'],\n    duration: {\n      mean:  data['tool.duration']?.histogram?.mean,\n      p95:   data['tool.duration']?.histogram?.p95,\n      p99:   data['tool.duration']?.histogram?.p99,\n    },\n  }\n}\n\n\u002F\u002F Health endpoint\napp.get('\u002Fhealth\u002Fmetrics', (_req, res) => {\n  res.json(getMetricsReport())\n})\n```\n\n---\n\n## Histogram percentiles\n\n```javascript\nconst histogram = metrics.histogram('sandbox.memory_mb')\nhistogram.update(currentMemMb)\n\nconst snap = histogram.toJSON()\n\u002F\u002F snap.min, snap.max, snap.mean, snap.p50, snap.p75, snap.p95, snap.p99\nconsole.log(`p99 sandbox memory: ${snap.p99?.toFixed(1)} MB`)\n```\n\n---\n\n## Anti-Fake-Pass Checklist\n\n```\n❌ Timer.start() result not stored → stopwatch.end() not called → duration not recorded\n❌ Meter EWMA needs 5+ minutes to stabilize — early readings are misleading\n❌ metrics.toJSON() serializes Meter as {count, rate} — access .rate not root object\n❌ Histogram percentiles only valid after enough samples (\u003C 5 samples = unreliable p99)\n❌ Counter not thread-safe across Node.js cluster workers — each worker has own metrics\n❌ No metrics.end() on shutdown → background EWMA intervals keep process alive\n```\n","# \u002Fruntime-metrics-meters\n\n## When to Use\n\n- Track tool call rates and durations with 1m\u002F5m\u002F15m moving averages\n- Measure p50\u002Fp95\u002Fp99 latency without external infrastructure\n- Count error rates alongside success rates for circuit breaker thresholds\n- Self-describing metrics report for agent health API endpoint\n\n## Do NOT use for\n\n- Persistent metrics across restarts (use [[statsd-metrics-streaming]] with Datadog)\n- Sub-microsecond precision (overhead makes it unsuitable for tight loops)\n\n---\n\n## Core metrics setup\n\n```javascript\nimport { createCollection } from 'measured-core'\n\nconst metrics = createCollection()\n\n\u002F\u002F Counter: monotonically increasing\nconst toolCalls    = metrics.counter('tool.calls')\nconst toolErrors   = metrics.counter('tool.errors')\n\n\u002F\u002F Meter: rate per second (1m\u002F5m\u002F15m EWMA)\nconst callRate = metrics.meter('tool.call_rate')\n\n\u002F\u002F Timer: duration + rate + histogram\nconst toolTimer = metrics.timer('tool.duration')\n\n\u002F\u002F Gauge: current value\nmetrics.gauge('agents.active', () => activeAgentCount)\n```\n\n---\n\n## Instrument tool calls\n\n```javascript\nasync function measuredTool(name: string, fn: () => Promise\u003Cunknown>) {\n  const stopwatch = toolTimer.start()\n  toolCalls.inc()\n  callRate.mark()\n\n  try {\n    const result = await fn()\n    return result\n  } catch (err) {\n    toolErrors.inc()\n    metrics.counter(`tool.error.${name}`).inc()\n    throw err\n  } finally {\n    stopwatch.end()\n  }\n}\n```\n\n---\n\n## Read metrics for health endpoint\n\n```javascript\nimport { createCollection } from 'measured-core'\n\nfunction getMetricsReport() {\n  const data = metrics.toJSON()\n  return {\n    toolCalls:    data['tool.calls'],\n    errorRate:    data['tool.call_rate'],\n    duration: {\n      mean:  data['tool.duration']?.histogram?.mean,\n      p95:   data['tool.duration']?.histogram?.p95,\n      p99:   data['tool.duration']?.histogram?.p99,\n    },\n  }\n}\n\n\u002F\u002F Health endpoint\napp.get('\u002Fhealth\u002Fmetrics', (_req, res) => {\n  res.json(getMetricsReport())\n})\n```\n\n---\n\n## Histogram percentiles\n\n```javascript\nconst histogram = metrics.histogram('sandbox.memory_mb')\nhistogram.update(currentMemMb)\n\nconst snap = histogram.toJSON()\n\u002F\u002F snap.min, snap.max, snap.mean, snap.p50, snap.p75, snap.p95, snap.p99\nconsole.log(`p99 sandbox memory: ${snap.p99?.toFixed(1)} MB`)\n```\n\n---\n\n## Anti-Fake-Pass Checklist\n\n```\n❌ Timer.start() result not stored → stopwatch.end() not called → duration not recorded\n❌ Meter EWMA needs 5+ minutes to stabilize — early readings are misleading\n❌ metrics.toJSON() serializes Meter as {count, rate} — access .rate not root object\n❌ Histogram percentiles only valid after enough samples (\u003C 5 samples = unreliable p99)\n❌ Counter not thread-safe across Node.js cluster workers — each worker has own metrics\n❌ No metrics.end() on shutdown → background EWMA intervals keep process alive\n```\n",{},"main","481dcd7dd2e288b9d627a2bd017db70e64e6c6fa","core\u002Fskills\u002Fruntime-metrics-meters",2,"https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI","https:\u002F\u002Fyana.vutam.link\u002F","https:\u002F\u002Fgithub.com\u002FHoronomos-laps","https:\u002F\u002Fyana.vutam.link","An open-source governed runtime & execution environment for multi-agent AI systems.","2026-11-12 23:12:27",{"source":7,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add Horonomos-laps\u002FYana-AI --skill runtime-metrics-meters",{"tool":39,"command":40},"bunx","bunx skills add Horonomos-laps\u002FYana-AI --skill runtime-metrics-meters",{"tool":42,"command":43},"pnpm","pnpm dlx skills add Horonomos-laps\u002FYana-AI --skill runtime-metrics-meters","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fruntime-metrics-meters\u002FSKILL.md",true,[],[48,56,63,71,79,87],{"skillNo":49,"name":50,"nameZh":6,"description":51,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":52,"licenseFileUrl":6,"sourceHtmlUrl":53,"categories":54,"keywords":55,"publishedAt":18},"01M735GKET5YVYKAY62W2P5YXB","openai--sentry--sentry","Use when the user asks to inspect Sentry issues or events, summarize recent production errors, or pull basic Sentry health data via the Sentry API; perform read-only queries with the bundled script and require `SENTRY_AUTH_TOKEN`.","MIT","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fopenai--sentry--sentry\u002FSKILL.md",[],[],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":18},"01M73DCAP83T17HY7SMGK7MGFE","ito-basket-compare","Compare Itô prediction-market baskets against a user's knowledge base, portfolio notes, financial context, watchlist, or research thesis. Use for read-only basket comparison and gap analysis without investment advice or live trading.","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fito-basket-compare\u002FSKILL.md",[],[],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":67,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":18},"01M734CYEMZFDR3KH6SW0JP8TD","implementing-network-traffic-baselining","Build network traffic baselines from NetFlow\u002FIPFIX data using Python pandas for statistical analysis, z-score anomaly detection, and hourly\u002Fdaily traffic pattern profiling","https:\u002F\u002Fgithub.com\u002Fyanacuti1121\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fimplementing-network-traffic-baselining\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fimplementing-network-traffic-baselining\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":75,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":18},"01M73ASZ6NJRJM44Z2P84NGQ3Q","detecting-evasion-techniques-in-endpoint-logs","Detects defense evasion techniques used by adversaries in endpoint logs including log tampering, timestomping, process injection, and security tool disabling. Use when investigating suspicious endpoint behavior, building detection rules for evasion tactics, or conducting threat hunting for stealthy adversary activity. Activates for requests involving evasion detection, defense evasion analysis, log tampering detection, or MITRE ATT&CK TA0005.","https:\u002F\u002Fgithub.com\u002Fyanacuti1121\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fdetecting-evasion-techniques-in-endpoint-logs\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002Fcore\u002Fskills\u002Fdetecting-evasion-techniques-in-endpoint-logs\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":83,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":18},"01M734AFNXD06Z78QRK0VKGT7Q","implementing-microsegmentation-with-guardicore","Implementing microsegmentation using Akamai Guardicore Segmentation to map application dependencies, create granular network policies, visualize east-west traffic flows, and enforce least-privilege communication between workloads across data centers and cloud.","https:\u002F\u002Fgithub.com\u002Fyanacuti1121\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fimplementing-microsegmentation-with-guardicore\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fimplementing-microsegmentation-with-guardicore\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":18},"01M736TK27QMCXK0DVCH25SJN5","ramdisk-tmpfs-patterns","https:\u002F\u002Fgithub.com\u002FHoronomos-laps\u002FYana-AI\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Framdisk-tmpfs-patterns\u002FSKILL.md",[],[]]