[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6K8HDADGGWSPKV8F206WAT3":3,"skill-same:01M6K8HDADGGWSPKV8F206WAT3":51},{"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":22,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":32,"ownerHtmlUrl":33,"ownerBlogUrl":34,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M6K8HDADGGWSPKV8F206WAT3","agento11y",null,"grafana\u002Fagento11y","grafana","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7195757?v=4","01M6K8G36RMMASYFHK68G3K6QG","Grafana Labs","01M6K8G3B78F5DVKGT1HS2VDAB",132,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fplugins\u002Fopencode\u002Fskills\u002Fagento11y\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5],"2026-11-10 10:12:30",false,"# OpenCode Prompt: Agent Observability Instrumentation\n\nYou are running in Opencode with repository files and shell access.\n\n- Prefer direct file edits over speculative refactors.\n- Before proposing broad changes, confirm impact scope with quick evidence.\n\n## Agent Observability Agent-First Instrumentation Brief\n\nYou are acting as a coding agent inside this repository. Your goal is to add or improve Grafana Agent Observability instrumentation with minimal, safe changes.\n\n## Mission\n\n1. Find AI generation and tool\u002Fagent execution paths.\n2. Add agento11y instrumentation using the local language SDK where possible.\n3. Preserve behavior and keep diffs small.\n4. Add or update tests for changed instrumentation behavior.\n5. Explain what was instrumented and why.\n\nFor application instrumentation, use the Grafana Cloud API URL from Agent Observability configuration and Cloud `basic` auth.\nDo not invent Cloud or development endpoints. Coding-agent capture also supports the shared launcher's local mode, without Cloud credentials or Tempo.\n\n## Output contract (required)\n\nReturn:\n\n- Top opportunities first (highest traffic \u002F highest impact)\n- For each opportunity:\n  - exact file path(s)\n  - why this location matters\n  - concrete diff proposal\n  - test plan\n  - any risk or compatibility concern\n\n## Agent Observability architecture and ingest model (must follow)\n\n- Agent Observability uses generation-first ingest:\n  - gRPC: `agento11y.v1.GenerationIngestService.ExportGenerations`\n  - HTTP parity: `POST \u002Fapi\u002Fv1\u002Fgenerations:export`\n- Traces\u002Fmetrics go through OTEL collector\u002Falloy, not through Agent Observability ingest.\n- Required generation modes:\n  - non-stream: `SYNC`\n  - stream: `STREAM`\n- Raw provider artifacts are default OFF and only enabled for explicit debug opt-in.\n\nAuthoritative references in the [grafana\u002Fagento11y](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y) repo:\n\n- [`docs\u002Fconcepts\u002Fcontent-capture-modes.md`](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fcontent-capture-modes.md)\n- [`docs\u002Fconcepts\u002Ftags-and-metadata.md`](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Ftags-and-metadata.md)\n- [`docs\u002Fconcepts\u002Ftool-call-vs-tool-execution.md`](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Ftool-call-vs-tool-execution.md)\n\n## OTel setup (required)\n\nThe agento11y SDK internally emits OTel spans and metrics (`gen_ai.client.operation.duration`, `gen_ai.client.token.usage`, `gen_ai.client.time_to_first_token`, `gen_ai.client.tool_calls_per_operation`). **Without a configured TracerProvider and MeterProvider these go to the default no-op and are silently lost.**\n\nThe SDK does NOT create OTel providers — that is the application's responsibility. Always ensure the app configures providers BEFORE creating the agento11y client, and shuts them down AFTER `agento11y.shutdown()`.\n\nTraces and metrics can be sent to Grafana Cloud in two ways. Always use env vars (`OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_HEADERS`) so the app doesn't hardcode assumptions.\n\n### Option A — Direct to Grafana Cloud (no collector needed)\n\nSend OTLP straight to the Grafana Cloud OTLP gateway. The exact URL is stack-specific — get it from the **Grafana Cloud portal → stack Details page** ([docs](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fgrafana-cloud\u002Fsend-data\u002Fotlp\u002Fsend-data-otlp)). Authentication uses Basic auth with instance ID and a Cloud API token.\n\nEnv vars:\n```\nOTEL_EXPORTER_OTLP_ENDPOINT=https:\u002F\u002F\u003Cyour-otlp-gateway-url>   # from Cloud portal\nOTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic \u003Cbase64(instance_id:cloud_api_token)>\n```\n\nThe OTel SDK exporters read these env vars automatically — no extra code needed beyond the provider setup below.\n\n### Option B — Via Alloy \u002F OTel Collector (optional)\n\nRun Alloy or an OTel Collector in the user's deployment and forward telemetry to Grafana Cloud with credentials. Useful for centralized token management, retries, relabeling, and metadata enrichment.\n\nEnv vars:\n```\nOTEL_EXPORTER_OTLP_ENDPOINT=\u003Cyour-collector-otlp-endpoint>\n```\n\n### Provider setup (required for both options)\n\nThe snippets below configure TracerProvider and MeterProvider using OTLP\u002FHTTP exporters that honour the env vars above.\n\n#### Python\n```python\nfrom opentelemetry import trace, metrics\nfrom opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import BatchSpanProcessor\nfrom opentelemetry.sdk.metrics import MeterProvider\nfrom opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader\nfrom opentelemetry.sdk.resources import Resource\nfrom opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter\nfrom opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter\n\nresource = Resource.create({\"service.name\": \"my-app\"})\n\ntp = TracerProvider(resource=resource)\ntp.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))\ntrace.set_tracer_provider(tp)\n\nmp = MeterProvider(resource=resource, metric_readers=[\n    PeriodicExportingMetricReader(OTLPMetricExporter())\n])\nmetrics.set_meter_provider(mp)\n# Deps: opentelemetry-sdk, opentelemetry-exporter-otlp-proto-http\n```\n\n#### Go\n```go\ntraceExp, _ := otlptracehttp.New(ctx)\ntp := sdktrace.NewTracerProvider(sdktrace.WithBatcher(traceExp), sdktrace.WithResource(res))\notel.SetTracerProvider(tp)\ndefer tp.Shutdown(ctx)\n\nmetricExp, _ := otlpmetrichttp.New(ctx)\nmp := sdkmetric.NewMeterProvider(sdkmetric.WithReader(sdkmetric.NewPeriodicReader(metricExp)), sdkmetric.WithResource(res))\notel.SetMeterProvider(mp)\ndefer mp.Shutdown(ctx)\n```\n\n#### JS\u002FTS\n```typescript\nimport { metrics } from '@opentelemetry\u002Fapi';\nimport { NodeTracerProvider } from '@opentelemetry\u002Fsdk-trace-node';\nimport { BatchSpanProcessor } from '@opentelemetry\u002Fsdk-trace-base';\nimport { OTLPTraceExporter } from '@opentelemetry\u002Fexporter-trace-otlp-http';\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry\u002Fsdk-metrics';\nimport { OTLPMetricExporter } from '@opentelemetry\u002Fexporter-metrics-otlp-http';\n\nconst tp = new NodeTracerProvider({ resource });\ntp.addSpanProcessor(new BatchSpanProcessor(new OTLPTraceExporter()));\ntp.register();\n\nconst mp = new MeterProvider({\n  resource,\n  readers: [new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter() })],\n});\nmetrics.setGlobalMeterProvider(mp);\n```\n\n## Telemetry fields to prioritize\n\nOn generation and tool spans, capture or preserve these when available:\n\n- identity and routing:\n  - `gen_ai.operation.name`\n  - `agento11y.generation.id`\n  - `gen_ai.conversation.id`\n  - `gen_ai.agent.name`\n  - `gen_ai.agent.version`\n  - `agento11y.generation.parent_generation_ids`\n  - `agento11y.sdk.name`\n- model:\n  - `gen_ai.provider.name`\n  - `gen_ai.request.model`\n  - `gen_ai.response.model`\n- request controls:\n  - `gen_ai.request.max_tokens`\n  - `gen_ai.request.temperature`\n  - `gen_ai.request.top_p`\n  - `agento11y.gen_ai.request.tool_choice`\n  - `agento11y.gen_ai.request.thinking.enabled`\n  - `agento11y.gen_ai.request.thinking.budget_tokens`\n- usage and outcomes:\n  - `gen_ai.usage.input_tokens`\n  - `gen_ai.usage.output_tokens`\n  - `gen_ai.usage.cache_read_input_tokens`\n  - `gen_ai.usage.cache_write_input_tokens`\n  - `gen_ai.usage.reasoning_tokens`\n  - `gen_ai.response.finish_reasons`\n  - error classification fields (`error.type`, `error.category`)\n\n## Tracing skill loads, resource reads, and commands\n\nThe SDKs and Go `otelgenai` support the OpenTelemetry conventions for loading skills, reading skill resources, and running commands.\nThese conventions come from [GenAI #498](https:\u002F\u002Fgithub.com\u002Fopen-telemetry\u002Fsemantic-conventions-genai\u002Fpull\u002F498) and have Development status.\nThe global schema declaration remains on the legacy schema while other signals still use it.\nEach execution creates one `INTERNAL` span with `gen_ai.operation.name=execute_tool`.\nThe execution kind selects span naming and standard `gen_ai.skill.*` and `process.*` attributes.\nThe SDK does not emit the execution kind as a span attribute.\nFor the three recognized kinds, the five SDK clients add metric-only `agento11y.tool.execution.kind` to `gen_ai.client.operation.duration`.\nThey also include the trimmed, nonblank `gen_ai.skill.name` supplied at start, including failed attempts and reduced capture modes.\nA recognized kind without a name retains only the kind; unset or unknown kinds add neither label.\nNo other skill or process dimensions are added automatically. Standalone Go `otelgenai` automatic dimensions remain unchanged.\nSkill names remain under metric retention; use stable, nonsensitive names.\nSee [client metrics](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Ftool-call-vs-tool-execution.md#client-metrics) for query labels and cardinality.\n\n| Execution kind | Use | Suffix after `execute_tool {tool}` |\n| --- | --- | --- |\n| `load_skill` | Load skill instructions. | Skill name when present. |\n| `read_skill_resource` | Read a skill resource. | Skill plus resource; resource alone; otherwise none. |\n| `command` | Execute commands, with or without a skill. | Skill plus resource; resource alone; executable name; otherwise none. |\n\nResource reads and commands never append a skill name alone. Resource naming takes precedence over executable naming.\nSelect Go `ToolExecutionStart.ExecutionKind`, Python `execution_kind` with `ToolExecutionKind`, or JS\u002FTS `executionKind` with the string values above.\nGo `otelgenai.Invocation` uses `ExecutionKind`; Java uses `setExecutionKind(...)`; .NET uses `ExecutionKind`.\n`ToolType` remains a category such as `function` or `extension`.\nUnset or unknown execution kinds remain generic and omit skill and process attributes, even when those fields are supplied.\nDo not infer execution kinds from tool names, arguments, paths, or results. SDK support does not add automatic plugin detection.\nGeneric convenience loops stay generic and infer no exit codes.\n\nCapture applicable fields only:\n\n- All three: `gen_ai.skill.name`, `gen_ai.skill.description`, `gen_ai.skill.source.uri`.\n- Resource reads and commands: also `gen_ai.skill.resource.name`.\n- Commands only: also `process.executable.name`, `process.executable.path`, and completion-time `process.exit.code`.\n\nOnly populate process fields for an actual, directly executed single process, not a guessed executable or aggregated pipeline outcome.\nReport nullable integer exit codes at completion (Go `*int64`): zero is reported success; absent is unknown.\nExit codes do not map to errors, span status, or `error.type`. Keep using the execution-error API.\nApplicable structural names reach samplers at creation; completion exit codes and typed private fields do not.\nUse the standard skill-name key, not `agento11y.skill.name`. A skill name alone does not identify a load.\nSee the [API field table](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Ftool-call-vs-tool-execution.md#api-fields-and-applicability) for language spellings.\n\nTyped skill and process fields follow the effective capture mode.\n`metadata_only` and `full_with_metadata_spans` exclude skill description, source URI, and executable path.\nGo\u002FPython experimental OTel generation export resolves `full_with_metadata_spans` to `full`, so those clients can export private fields.\nSkill source URIs exported from typed fields lose all user information, query parameters, and fragments.\nMalformed values are omitted without filesystem\u002Fnetwork lookups.\nIn Go `otelgenai`, raw `Invocation.Attributes` and attributes returned by end hooks bypass capture filtering and URI scrubbing.\nThey can override typed attributes. Callers must filter private attributes and sanitize source URIs themselves.\nCore recorders can retain private inputs. JS\u002FJava completed debug history defaults to disabled (`debugBufferSize: 0`).\nTo retain completed records in debug snapshots, use JS `new Agento11yClient({ debugBufferSize: 64 })` or Java `new Agento11yClientConfig().setDebugBufferSize(64)`.\nNo environment variable sets `debugBufferSize`; verbose `debug` and `AGENTO11Y_DEBUG` do not control history.\nThe client retains the newest `debugBufferSize` entries of each record type across all conversations.\nSnapshots return those entries oldest first by recording order, including after shutdown.\nQueue counters remain available with history disabled. Retention does not change exports, queue limits, spans, metrics, or capture policy.\nWhen enabled, tool snapshots retain raw arguments, results, and error text even in reduced modes.\nArguments and results still reference the original payload objects.\nThe capacity counts records, not bytes. Active recorders, pending exports, and caller-held snapshots can retain additional data.\nThe `no_tool_content` arguments\u002Fresults opt-in is unchanged and does not bypass reduced effective modes.\nSee [capture-mode privacy](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fcontent-capture-modes.md#skill-and-process-attribute-privacy).\n\nThe shared local receiver stores optional skill\u002Fresource\u002Fexecutable names and int64 exit codes in tool-span sidecars, never the three private attributes.\nIt prefers nonblank `gen_ai.skill.name` and accepts legacy `agento11y.skill.name`. Local **Analytics > Skills** counts retained marked calls, including loads, resource reads, commands, and failures.\n**Tools** and **Skills** overlap; never add their counts together. See [Local skill analytics](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Ftree\u002Fmain\u002Fplugins\u002Fagento11y#local-skill-analytics) for exact identifiers, duration coverage, and session drilldowns.\nOlder recordings without skill markers stay unmarked; history import does not reconstruct missing skill metadata. Local recording and analytics need no Tempo.\n\nLive recognition supports Claude Code's native `Skill`, Pi's catalog-matched instruction reads, and OpenCode's standard `skill` tool, not arbitrary resource reads or commands.\nOpenCode retains the requested identifier, not a resolved directory basename, trimming only surrounding whitespace. A recognized attempt can fail and does not explain later activity.\nSee [OpenCode recognition limits](https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Ftree\u002Fmain\u002Fplugins\u002Fopencode#3-verify). Cloud skill visibility requires retained tool and generation spans in Tempo plus deployed Sigil consumer support.\n\n## Multi-agent dependency tracking\n\nWhen instrumenting multi-agent pipelines where one agent's output feeds into another:\n\n- Set `parent_generation_ids` on the GenerationStart\u002Fseed with the generation ID(s) of the upstream agent(s) whose output this generation consumes.\n- This is a list: a generation can depend on multiple parents (fan-in).\n- Agent Observability uses these links to build a dependency DAG and propagate quality signals: if an upstream generation fails evaluation, all downstream dependents are flagged.\n\nExample: an orchestrator spawns agents A, B, C where C depends on A and B:\n- A: parent_generation_ids = [] (no parents)\n- B: parent_generation_ids = [] (no parents)\n- C: parent_generation_ids = [A.generation_id, B.generation_id]\n\n## SDK locations and how to instrument\n\nPrefer these existing SDKs and wrappers before inventing custom plumbing:\n\n- Go core SDK: `go\u002F` (see `go\u002FREADME.md`)\n  - `StartGeneration`, `StartStreamingGeneration`, `StartToolExecution`, `StartEmbedding`\n- JS\u002FTS SDK: `js\u002F` (see `js\u002FREADME.md`)\n  - `startGeneration`, `startStreamingGeneration`, `startToolExecution`, `startEmbedding`\n- Python SDK: `python\u002F` (see `python\u002FREADME.md`)\n  - `start_generation`, `start_streaming_generation`, `start_tool_execution`, `start_embedding`\n- Java SDK: `java\u002F` (see `java\u002FREADME.md`)\n  - `startGeneration`, `startStreamingGeneration`, `withGeneration`, `withToolExecution`\n- .NET SDK: `dotnet\u002F` (see `dotnet\u002FREADME.md`)\n  - `StartGeneration`, `StartStreamingGeneration`, `StartToolExecution`, `StartEmbedding`\n\nProvider wrappers and framework adapters already exist; reuse them where possible:\n\n- Go providers: `go-providers\u002Fopenai`, `go-providers\u002Fanthropic`, `go-providers\u002Fgemini`\n- Python providers: `python-providers\u002F*`\n- Java providers: `java\u002Fproviders\u002F*`\n- .NET providers: `dotnet\u002Fsrc\u002FGrafana.Agento11y.*`\n- Framework adapters:\n  - Python: `python-frameworks\u002F*`\n  - Go Google ADK: `go-frameworks\u002Fgoogle-adk`\n  - Java Google ADK: `java\u002Fframeworks\u002Fgoogle-adk`\n  - JS subpath adapters documented in `js\u002FREADME.md`\n\n## Useful repo examples to copy patterns from\n\n- Go explicit generation flow:\n  - `go\u002Fagento11y\u002Fexample_test.go`\n- Go provider wrapper examples:\n  - `go-providers\u002Fopenai\u002Fsdk_example_test.go`\n  - `go-providers\u002Fanthropic\u002Fsdk_example_test.go`\n  - `go-providers\u002Fgemini\u002Fsdk_example_test.go`\n- .NET end-to-end emitter:\n  - `dotnet\u002Fexamples\u002FGrafana.Agento11y.DevExEmitter\u002FProgram.cs`\n- JS transport and framework behavior:\n  - `js\u002Ftest\u002Fclient.transport.test.mjs`\n  - `js\u002Ftest\u002Fframeworks.vercel-ai-sdk.test.mjs`\n- Python framework integration tests:\n  - `python-frameworks\u002F*\u002Ftests\u002F*.py`\n\n## Implementation rules\n\n- Keep behavior unchanged except instrumentation additions\u002Ffixes.\n- Prefer small targeted patches over refactors.\n- Use existing conventions in each language package.\n- Keep raw artifacts disabled unless explicitly asked.\n- Ensure non-stream wrappers set `SYNC`, stream wrappers set `STREAM`.\n- Ensure lifecycle flush\u002Fshutdown semantics are preserved.\n- When calling `set_result` \u002F `SetResult`, always include all available fields:\n  - `response_id` (provider correlation, maps to `gen_ai.response.id`)\n  - `response_model` (actual model used)\n  - `stop_reason` \u002F `finish_reason`\n  - Full token usage including `cache_read_input_tokens`, `cache_write_input_tokens`, and `reasoning_tokens` when the provider returns them\n- Always check `rec.err()` \u002F `Err()` after the generation recorder closes — SDK validation or enqueue errors are otherwise silent.\n- Use `tags` on `GenerationStart` for filtering in the Agent Observability UI (e.g. pipeline name, layer, agent role).\n\n## Validation checklist\n\nAfter proposing edits, include checks for:\n\n- span attributes emitted as expected\n- generation payload shape valid for ingest contract\n- no regressions in existing tests\n- language-specific tests or focused test additions for new instrumentation logic\n\n## Deliverable format (strict)\n\nProvide:\n\n1. Prioritized instrumentation opportunities\n2. Proposed diffs per opportunity\n3. Test updates per opportunity\n4. Rollout\u002Frisk notes\n\nIf no safe opportunities are found, explain exactly why and list what evidence you checked.\n",{},"main","8866460f7cb554111889d54402e251354364d4a9","plugins\u002Fopencode\u002Fskills\u002Fagento11y",33,"https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y","https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fgrafana-cloud\u002Fobserve-and-act\u002Fagent-observability\u002F","https:\u002F\u002Fgithub.com\u002Fgrafana","https:\u002F\u002Fgrafana.com","Grafana Labs is behind leading open source projects Grafana and Loki, and the creator of the first open & composable observability platform.","2026-11-14 03:09:20",{"source":7,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add grafana\u002Fagento11y --skill agento11y",{"tool":43,"command":44},"bunx","bunx skills add grafana\u002Fagento11y --skill agento11y",{"tool":46,"command":47},"pnpm","pnpm dlx skills add grafana\u002Fagento11y --skill agento11y","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fplugins\u002Fopencode\u002Fskills\u002Fagento11y\u002FSKILL.md",true,[],[52,61,88,114,139,164],{"skillNo":53,"name":54,"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":55,"categories":56,"keywords":57,"publishedAt":23},"01M6K8HP74Y5CTQZJYSVWFAHPX","agento11y-eval-starter","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fskills\u002Fagento11y-eval-starter\u002FSKILL.md",[],[58,5,59,60],"agento11y eval starter","starter","eval",{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":23},"01M6K8HHF5TFTNC5XXM7CV04AZ","agento11y-experiments","Run any Python LLM agent as an Agent Observability experiment using the public agento11y.experiments package: define a test suite, run an existing agent through typed trials, bind or record generation I\u002FO, grade outputs, and publish scores, including from stored Grafana test suites.","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fpython\u002Fskills\u002Fagento11y-experiments\u002FSKILL.md",[],[68,5,69,70,71,72,73,8,74,75,76,77,78,79,80,81,82,83,84,85,86,87],"agento11y experiments","experiments","observability","run","test","python","as","outputs","suite","Existing","trials","bind","package","define","generation","record","agent observability","llm agent","test suite","publish",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":97,"publishedAt":23},"01M6K8H7MZFZ07KHJZD28QFC6S","e2e-test","Optional credential-free Hermes integration checks using an explicit loopback model provider and local telemetry receivers. Inspect the scripts before running them; their defaults are not safe evidence of a local-only run.","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fplugins\u002Fhermes\u002F.agents\u002Fskills\u002Fe2e-test\u002FSKILL.md",[94],{"categoryNo":95,"categoryName":96,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",[98,99,72,100,101,102,103,104,105,106,107,108,109,110,71,111,112,113],"e2e test","e2e","local","running","inspect","scripts","free","provider","credential","evidence","only","hermes","model","telemetry","safe","integration",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":23},"01M6K8H3856PJVD97YEN021E06","setup-local-guards","Help choose, configure, and test local agento11y guard packs for coding-agent tool calls. Use when the user asks to enable safety packs, protect .env files, block dangerous commands, redact tool arguments, create custom local rules, or diagnose local guards. Covers local packs, not Grafana Cloud rule management or application SDK setup.","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fplugins\u002Fagento11y\u002Finternal\u002Fskills\u002Fcontent\u002Fsetup-local-guards\u002FSKILL.md",[],[121,100,122,8,123,124,72,125,126,127,5,128,129,130,131,132,133,134,135,136,137,138],"setup local guards","setup","create","diagnose","guard","for","when","agent tool","custom","test local","calls","env","files","use","Rules","choose","tool","configure",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":146,"publishedAt":23},"01M6K8GY2C5H8Y6TYPKZQM2NM0","setup-coding-agent","Set up Grafana Agent observability for a coding agent (Claude Code, Codex, Copilot CLI, Cursor, OpenCode, pi, Vibe, or experimental Kiro CLI) with the agento11y binary: install it, save credentials, wire the agent, verify a session reaches Grafana Cloud, and diagnose a broken pipeline. Use when the user says \"set up agento11y\", \"monitor my coding agent\", \"agento11y doctor says something is wrong\", \"my sessions do not show up in Grafana\", or asks why conversations arrive but analytics stay empty.","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fplugins\u002Fagento11y\u002Finternal\u002Fskills\u002Fcontent\u002Fsetup-coding-agent\u002FSKILL.md",[145],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[147,148,149,122,84,150,127,151,152,153,154,155,156,157,158,159,160,161,162,8,163],"setup coding agent","coding","coding agent","copilot","conversations","kiro","show","opencode","up","install","broken","code","why","credentials","SET","pipeline","cli",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":23},"01M6K8GTK8P6H4EKH4W4ZD7382","commit-message","Draft a commit message when the user describes a code change and asks for a commit message. Not for general questions or explanations.","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fagento11y\u002Fblob\u002Fmain\u002Fexamples\u002Fexperiments\u002Fclaude-plugin-evals\u002Fcommit-messages\u002Fskills\u002Fcommit-message\u002FSKILL.md",[],[171,172,173,174,175,126,176,158,177,178,127],"commit","commit message","message","draft","questions","change","user","general"]