{"id":"b0fbd559-f81c-4ef5-b0a2-860fb998bf0e","shortId":"5utmrY","kind":"skill","title":"distributed-tracing","tagline":"Implement distributed tracing with Jaeger and Tempo for request flow visibility across microservices.","description":"# Distributed Tracing\n\nImplement distributed tracing with Jaeger and Tempo for request flow visibility across microservices.\n\n## Do not use this skill when\n\n- The task is unrelated to distributed tracing\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources/implementation-playbook.md`.\n\n## Purpose\n\nTrack requests across distributed systems to understand latency, dependencies, and failure points.\n\n## Use this skill when\n\n- Debug latency issues\n- Understand service dependencies\n- Identify bottlenecks\n- Trace error propagation\n- Analyze request paths\n\n## Distributed Tracing Concepts\n\n### Trace Structure\n```\nTrace (Request ID: abc123)\n  ↓\nSpan (frontend) [100ms]\n  ↓\nSpan (api-gateway) [80ms]\n  ├→ Span (auth-service) [10ms]\n  └→ Span (user-service) [60ms]\n      └→ Span (database) [40ms]\n```\n\n### Key Components\n- **Trace** - End-to-end request journey\n- **Span** - Single operation within a trace\n- **Context** - Metadata propagated between services\n- **Tags** - Key-value pairs for filtering\n- **Logs** - Timestamped events within a span\n\n## Jaeger Setup\n\n### Kubernetes Deployment\n\n```bash\n# Deploy Jaeger Operator\nkubectl create namespace observability\nkubectl create -f https://github.com/jaegertracing/jaeger-operator/releases/download/v1.51.0/jaeger-operator.yaml -n observability\n\n# Deploy Jaeger instance\nkubectl apply -f - <<EOF\napiVersion: jaegertracing.io/v1\nkind: Jaeger\nmetadata:\n  name: jaeger\n  namespace: observability\nspec:\n  strategy: production\n  storage:\n    type: elasticsearch\n    options:\n      es:\n        server-urls: http://elasticsearch:9200\n  ingress:\n    enabled: true\nEOF\n```\n\n### Docker Compose\n\n```yaml\nversion: '3.8'\nservices:\n  jaeger:\n    image: jaegertracing/all-in-one:latest\n    ports:\n      - \"5775:5775/udp\"\n      - \"6831:6831/udp\"\n      - \"6832:6832/udp\"\n      - \"5778:5778\"\n      - \"16686:16686\"  # UI\n      - \"14268:14268\"  # Collector\n      - \"14250:14250\"  # gRPC\n      - \"9411:9411\"    # Zipkin\n    environment:\n      - COLLECTOR_ZIPKIN_HOST_PORT=:9411\n```\n\n**Reference:** See `references/jaeger-setup.md`\n\n## Application Instrumentation\n\n### OpenTelemetry (Recommended)\n\n#### Python (Flask)\n```python\nfrom opentelemetry import trace\nfrom opentelemetry.exporter.jaeger.thrift import JaegerExporter\nfrom opentelemetry.sdk.resources import SERVICE_NAME, Resource\nfrom opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import BatchSpanProcessor\nfrom opentelemetry.instrumentation.flask import FlaskInstrumentor\nfrom flask import Flask\n\n# Initialize tracer\nresource = Resource(attributes={SERVICE_NAME: \"my-service\"})\nprovider = TracerProvider(resource=resource)\nprocessor = BatchSpanProcessor(JaegerExporter(\n    agent_host_name=\"jaeger\",\n    agent_port=6831,\n))\nprovider.add_span_processor(processor)\ntrace.set_tracer_provider(provider)\n\n# Instrument Flask\napp = Flask(__name__)\nFlaskInstrumentor().instrument_app(app)\n\n@app.route('/api/users')\ndef get_users():\n    tracer = trace.get_tracer(__name__)\n\n    with tracer.start_as_current_span(\"get_users\") as span:\n        span.set_attribute(\"user.count\", 100)\n        # Business logic\n        users = fetch_users_from_db()\n        return {\"users\": users}\n\ndef fetch_users_from_db():\n    tracer = trace.get_tracer(__name__)\n\n    with tracer.start_as_current_span(\"database_query\") as span:\n        span.set_attribute(\"db.system\", \"postgresql\")\n        span.set_attribute(\"db.statement\", \"SELECT * FROM users\")\n        # Database query\n        return query_database()\n```\n\n#### Node.js (Express)\n```javascript\nconst { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');\nconst { JaegerExporter } = require('@opentelemetry/exporter-jaeger');\nconst { BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');\nconst { registerInstrumentations } = require('@opentelemetry/instrumentation');\nconst { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');\nconst { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express');\n\n// Initialize tracer\nconst provider = new NodeTracerProvider({\n  resource: { attributes: { 'service.name': 'my-service' } }\n});\n\nconst exporter = new JaegerExporter({\n  endpoint: 'http://jaeger:14268/api/traces'\n});\n\nprovider.addSpanProcessor(new BatchSpanProcessor(exporter));\nprovider.register();\n\n// Instrument libraries\nregisterInstrumentations({\n  instrumentations: [\n    new HttpInstrumentation(),\n    new ExpressInstrumentation(),\n  ],\n});\n\nconst express = require('express');\nconst app = express();\n\napp.get('/api/users', async (req, res) => {\n  const tracer = trace.getTracer('my-service');\n  const span = tracer.startSpan('get_users');\n\n  try {\n    const users = await fetchUsers();\n    span.setAttributes({ 'user.count': users.length });\n    res.json({ users });\n  } finally {\n    span.end();\n  }\n});\n```\n\n#### Go\n```go\npackage main\n\nimport (\n    \"context\"\n    \"go.opentelemetry.io/otel\"\n    \"go.opentelemetry.io/otel/exporters/jaeger\"\n    \"go.opentelemetry.io/otel/sdk/resource\"\n    sdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n    semconv \"go.opentelemetry.io/otel/semconv/v1.4.0\"\n)\n\nfunc initTracer() (*sdktrace.TracerProvider, error) {\n    exporter, err := jaeger.New(jaeger.WithCollectorEndpoint(\n        jaeger.WithEndpoint(\"http://jaeger:14268/api/traces\"),\n    ))\n    if err != nil {\n        return nil, err\n    }\n\n    tp := sdktrace.NewTracerProvider(\n        sdktrace.WithBatcher(exporter),\n        sdktrace.WithResource(resource.NewWithAttributes(\n            semconv.SchemaURL,\n            semconv.ServiceNameKey.String(\"my-service\"),\n        )),\n    )\n\n    otel.SetTracerProvider(tp)\n    return tp, nil\n}\n\nfunc getUsers(ctx context.Context) ([]User, error) {\n    tracer := otel.Tracer(\"my-service\")\n    ctx, span := tracer.Start(ctx, \"get_users\")\n    defer span.End()\n\n    span.SetAttributes(attribute.String(\"user.filter\", \"active\"))\n\n    users, err := fetchUsersFromDB(ctx)\n    if err != nil {\n        span.RecordError(err)\n        return nil, err\n    }\n\n    span.SetAttributes(attribute.Int(\"user.count\", len(users)))\n    return users, nil\n}\n```\n\n**Reference:** See `references/instrumentation.md`\n\n## Context Propagation\n\n### HTTP Headers\n```\ntraceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01\ntracestate: congo=t61rcWkgMzE\n```\n\n### Propagation in HTTP Requests\n\n#### Python\n```python\nfrom opentelemetry.propagate import inject\n\nheaders = {}\ninject(headers)  # Injects trace context\n\nresponse = requests.get('http://downstream-service/api', headers=headers)\n```\n\n#### Node.js\n```javascript\nconst { propagation } = require('@opentelemetry/api');\n\nconst headers = {};\npropagation.inject(context.active(), headers);\n\naxios.get('http://downstream-service/api', { headers });\n```\n\n## Tempo Setup (Grafana)\n\n### Kubernetes Deployment\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: tempo-config\ndata:\n  tempo.yaml: |\n    server:\n      http_listen_port: 3200\n\n    distributor:\n      receivers:\n        jaeger:\n          protocols:\n            thrift_http:\n            grpc:\n        otlp:\n          protocols:\n            http:\n            grpc:\n\n    storage:\n      trace:\n        backend: s3\n        s3:\n          bucket: tempo-traces\n          endpoint: s3.amazonaws.com\n\n    querier:\n      frontend_worker:\n        frontend_address: tempo-query-frontend:9095\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: tempo\nspec:\n  replicas: 1\n  template:\n    spec:\n      containers:\n      - name: tempo\n        image: grafana/tempo:latest\n        args:\n          - -config.file=/etc/tempo/tempo.yaml\n        volumeMounts:\n        - name: config\n          mountPath: /etc/tempo\n      volumes:\n      - name: config\n        configMap:\n          name: tempo-config\n```\n\n**Reference:** See `assets/jaeger-config.yaml.template`\n\n## Sampling Strategies\n\n### Probabilistic Sampling\n```yaml\n# Sample 1% of traces\nsampler:\n  type: probabilistic\n  param: 0.01\n```\n\n### Rate Limiting Sampling\n```yaml\n# Sample max 100 traces per second\nsampler:\n  type: ratelimiting\n  param: 100\n```\n\n### Adaptive Sampling\n```python\nfrom opentelemetry.sdk.trace.sampling import ParentBased, TraceIdRatioBased\n\n# Sample based on trace ID (deterministic)\nsampler = ParentBased(root=TraceIdRatioBased(0.01))\n```\n\n## Trace Analysis\n\n### Finding Slow Requests\n\n**Jaeger Query:**\n```\nservice=my-service\nduration > 1s\n```\n\n### Finding Errors\n\n**Jaeger Query:**\n```\nservice=my-service\nerror=true\ntags.http.status_code >= 500\n```\n\n### Service Dependency Graph\n\nJaeger automatically generates service dependency graphs showing:\n- Service relationships\n- Request rates\n- Error rates\n- Average latencies\n\n## Best Practices\n\n1. **Sample appropriately** (1-10% in production)\n2. **Add meaningful tags** (user_id, request_id)\n3. **Propagate context** across all service boundaries\n4. **Log exceptions** in spans\n5. **Use consistent naming** for operations\n6. **Monitor tracing overhead** (<1% CPU impact)\n7. **Set up alerts** for trace errors\n8. **Implement distributed context** (baggage)\n9. **Use span events** for important milestones\n10. **Document instrumentation** standards\n\n## Integration with Logging\n\n### Correlated Logs\n```python\nimport logging\nfrom opentelemetry import trace\n\nlogger = logging.getLogger(__name__)\n\ndef process_request():\n    span = trace.get_current_span()\n    trace_id = span.get_span_context().trace_id\n\n    logger.info(\n        \"Processing request\",\n        extra={\"trace_id\": format(trace_id, '032x')}\n    )\n```\n\n## Troubleshooting\n\n**No traces appearing:**\n- Check collector endpoint\n- Verify network connectivity\n- Check sampling configuration\n- Review application logs\n\n**High latency overhead:**\n- Reduce sampling rate\n- Use batch span processor\n- Check exporter configuration\n\n## Reference Files\n\n- `references/jaeger-setup.md` - Jaeger installation\n- `references/instrumentation.md` - Instrumentation patterns\n- `assets/jaeger-config.yaml.template` - Jaeger configuration\n\n## Related Skills\n\n- `prometheus-configuration` - For metrics\n- `grafana-dashboards` - For visualization\n- `slo-implementation` - For latency SLOs\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["distributed","tracing","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-distributed-tracing","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/distributed-tracing","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34831 github stars · SKILL.md body (10,613 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T06:51:04.754Z","embedding":null,"createdAt":"2026-04-18T21:36:10.563Z","updatedAt":"2026-04-24T06:51:04.754Z","lastSeenAt":"2026-04-24T06:51:04.754Z","tsv":"'-0':615 '-10':853 '/api':644,662 '/api/users':349,480 '/etc/tempo':743 '/etc/tempo/tempo.yaml':738 '/jaegertracing/jaeger-operator/releases/download/v1.51.0/jaeger-operator.yaml':192 '/otel':515 '/otel/exporters/jaeger':518 '/otel/sdk/resource':521 '/otel/sdk/trace':525 '/otel/semconv/v1.4.0':529 '/v1':205 '0.01':768,802 '00':614 '01':619 '032x':950 '1':727,761,849,852,886 '10':908 '100':369,775,783 '100ms':123 '10ms':133 '14250':255,256 '14268':252,253 '14268/api/traces':458,540 '16686':249,250 '1s':815 '2':856 '3':864 '3.8':234 '3200':685 '4':871 '40ms':141 '5':876 '500':828 '5775':241 '5775/udp':242 '5778':247,248 '6':882 '60ms':138 '6831':243,330 '6831/udp':244 '6832':245 '6832/udp':246 '7':889 '8':896 '80ms':128 '9':901 '9095':717 '9200':225 '9411':258,259,266 'abc123':120 'across':15,30,84,867 'action':70 'activ':585 'adapt':784 'add':857 'address':712 'af7651916cd43dd8448eb211c80319c':617 'af7651916cd43dd8448eb211c80319c-b7ad6b7169203331':616 'agent':324,328 'alert':892 'analysi':804 'analyz':109 'api':126 'api-gateway':125 'apivers':202,670,718 'app':341,346,347,477 'app.get':479 'app.route':348 'appear':954 'appli':62,199 'applic':270,965 'appropri':851 'apps/v1':719 'arg':736 'ask':1042 'assets/jaeger-config.yaml.template':754,988 'async':481 'attribut':311,367,399,403,447 'attribute.int':599 'attribute.string':583 'auth':131 'auth-servic':130 'automat':833 'averag':845 'await':498 'axios.get':658 'b7ad6b7169203331':618 'backend':699 'baggag':900 'base':793 'bash':179 'batch':974 'batchspanprocessor':298,322,425,461 'best':64,847 'bottleneck':105 'boundari':870,1050 'bucket':702 'busi':370 'check':955,961,977 'clarif':1044 'clarifi':56 'clear':1017 'code':827 'collector':254,262,956 'compon':143 'compos':231 'concept':114 'config':678,741,746,751 'config.file':737 'configmap':673,747 'configur':963,979,990,995 'congo':621 'connect':960 'consist':878 'const':416,420,424,428,432,436,442,452,472,476,484,490,496,649,653 'constraint':58 'contain':730 'context':157,512,609,638,866,899,938 'context.active':656 'context.context':566 'correl':915 'cpu':887 'creat':184,188 'criteria':1053 'ctx':565,574,577,589 'current':360,392,932 'dashboard':1000 'data':679 'databas':140,394,408,412 'db':376,384 'db.statement':404 'db.system':400 'debug':98 'def':350,380,927 'defer':580 'depend':90,103,830,836 'deploy':178,180,195,668,721 'describ':1021 'detail':75 'determinist':797 'differ':48 'distribut':2,5,17,20,43,85,112,898 'distributed-trac':1 'distributor':686 'docker':230 'document':909 'domain':49 'downstream':642,660 'downstream-servic':641,659 'durat':814 'elasticsearch':218,224 'enabl':227 'end':146,148 'end-to-end':145 'endpoint':456,706,957 'environ':261,1033 'environment-specif':1032 'eof':201,229 'err':535,542,546,587,591,594,597 'error':107,533,568,817,824,843,895 'es':220 'event':171,904 'exampl':76 'except':873 'expert':1038 'export':453,462,534,550,978 'express':414,473,475,478 'expressinstrument':437,471 'extra':944 'f':189,200 'failur':92 'fetch':373,381 'fetchus':499 'fetchusersfromdb':588 'file':981 'filter':168 'final':505 'find':805,816 'flask':275,304,306,340,342 'flaskinstrumentor':302,344 'flow':13,28 'format':947 'frontend':122,709,711,716 'func':530,563 'gateway':127 'generat':834 'get':351,362,493,578 'getus':564 'github.com':191 'github.com/jaegertracing/jaeger-operator/releases/download/v1.51.0/jaeger-operator.yaml':190 'go':507,508 'go.opentelemetry.io':514,517,520,524,528 'go.opentelemetry.io/otel':513 'go.opentelemetry.io/otel/exporters/jaeger':516 'go.opentelemetry.io/otel/sdk/resource':519 'go.opentelemetry.io/otel/sdk/trace':523 'go.opentelemetry.io/otel/semconv/v1.4.0':527 'goal':57 'grafana':666,999 'grafana-dashboard':998 'grafana/tempo':734 'graph':831,837 'grpc':257,692,696 'header':612,633,635,645,646,654,657,663 'high':967 'host':264,325 'http':611,625,682,691,695 'httpinstrument':433,469 'id':119,796,861,863,935,940,946,949 'identifi':104 'imag':237,733 'impact':888 'implement':4,19,897,1005 'import':279,283,287,293,297,301,305,511,631,789,906,918,922 'ingress':226 'initi':307,440 'inittrac':531 'inject':632,634,636 'input':61,1047 'instal':984 'instanc':197 'instruct':55 'instrument':271,339,345,464,467,910,986 'integr':912 'issu':100 'jaeger':8,23,175,181,196,207,210,236,327,457,539,688,808,818,832,983,989 'jaeger.new':536 'jaeger.withcollectorendpoint':537 'jaeger.withendpoint':538 'jaegerexport':284,323,421,455 'jaegertracing.io':204 'jaegertracing.io/v1':203 'jaegertracing/all-in-one':238 'javascript':415,648 'journey':150 'key':142,164 'key-valu':163 'kind':206,672,720 'kubectl':183,187,198 'kubernet':177,667 'latenc':89,99,846,968,1007 'latest':239,735 'len':601 'librari':465 'limit':770,1009 'listen':683 'log':169,872,914,916,919,966 'logger':924 'logger.info':941 'logging.getlogger':925 'logic':371 'main':510 'match':1018 'max':774 'meaning':858 'metadata':158,208,674,722 'metric':997 'microservic':16,31 'mileston':907 'miss':1055 'monitor':883 'mountpath':742 'my-servic':314,449,487,555,571,811,821 'n':193 'name':209,289,313,326,343,356,388,675,723,731,740,745,748,879,926 'namespac':185,211 'need':46 'network':959 'new':444,454,460,468,470 'nil':543,545,562,592,596,605 'node.js':413,647 'nodetracerprovid':417,445 'observ':186,194,212 'open':79 'opentelemetri':272,278,921 'opentelemetry.exporter.jaeger.thrift':282 'opentelemetry.instrumentation.flask':300 'opentelemetry.propagate':630 'opentelemetry.sdk.resources':286 'opentelemetry.sdk.trace':292 'opentelemetry.sdk.trace.export':296 'opentelemetry.sdk.trace.sampling':788 'opentelemetry/api':652 'opentelemetry/exporter-jaeger':423 'opentelemetry/instrumentation':431 'opentelemetry/instrumentation-express':439 'opentelemetry/instrumentation-http':435 'opentelemetry/sdk-trace-base':427 'opentelemetry/sdk-trace-node':419 'oper':153,182,881 'option':219 'otel.settracerprovider':558 'otel.tracer':570 'otlp':693 'outcom':68 'output':1027 'outsid':52 'overhead':885,969 'packag':509 'pair':166 'param':767,782 'parentbas':790,799 'path':111 'pattern':987 'per':777 'permiss':1048 'point':93 'port':240,265,329,684 'postgresql':401 'practic':65,848 'probabilist':757,766 'process':928,942 'processor':321,333,334,976 'product':215,855 'prometheus':994 'prometheus-configur':993 'propag':108,159,610,623,650,865 'propagation.inject':655 'protocol':689,694 'provid':69,317,337,338,443 'provider.add':331 'provider.addspanprocessor':459 'provider.register':463 'purpos':81 'python':274,276,627,628,786,917 'queri':395,409,411,715,809,819 'querier':708 'rate':769,842,844,972 'ratelimit':781 'receiv':687 'recommend':273 'reduc':970 'refer':267,606,752,980 'references/instrumentation.md':608,985 'references/jaeger-setup.md':269,982 'registerinstrument':429,466 'relat':991 'relationship':840 'relev':63 'replica':726 'req':482 'request':12,27,83,110,118,149,626,807,841,862,929,943 'requests.get':640 'requir':60,78,418,422,426,430,434,438,474,651,1046 'res':483 'res.json':503 'resourc':290,309,310,319,320,446 'resource.newwithattributes':552 'resources/implementation-playbook.md':80 'respons':639 'return':377,410,544,560,595,603 'review':964,1039 'root':800 's3':700,701 's3.amazonaws.com':707 'safeti':1049 'sampl':755,758,760,771,773,785,792,850,962,971 'sampler':764,779,798 'scope':54,1020 'sdktrace':522 'sdktrace.newtracerprovider':548 'sdktrace.tracerprovider':532 'sdktrace.withbatcher':549 'sdktrace.withresource':551 'second':778 'see':268,607,753 'select':405 'semconv':526 'semconv.schemaurl':553 'semconv.servicenamekey.string':554 'server':222,681 'server-url':221 'servic':102,132,137,161,235,288,312,316,451,489,557,573,643,661,810,813,820,823,829,835,839,869 'service.name':448 'set':890 'setup':176,665 'show':838 'singl':152 'skill':36,96,992,1012 'skill-distributed-tracing' 'slo':1004 'slo-implement':1003 'slos':1008 'slow':806 'source-sickn33' 'span':121,124,129,134,139,151,174,332,361,365,393,397,491,575,875,903,930,933,937,975 'span.end':506,581 'span.get':936 'span.recorderror':593 'span.set':366,398,402 'span.setattributes':500,582,598 'spec':213,725,729 'specif':1034 'standard':911 'step':71 'stop':1040 'storag':216,697 'strategi':214,756 'structur':116 'substitut':1030 'success':1052 'system':86 't61rcwkgmze':622 'tag':162,859 'tags.http.status':826 'task':39,1016 'templat':728 'tempo':10,25,664,677,704,714,724,732,750 'tempo-config':676,749 'tempo-query-frontend':713 'tempo-trac':703 'tempo.yaml':680 'test':1036 'thrift':690 'timestamp':170 'tool':51 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'tp':547,559,561 'trace':3,6,18,21,44,106,113,115,117,144,156,280,637,698,705,763,776,795,803,884,894,923,934,939,945,948,953 'trace.get':354,386,931 'trace.gettracer':486 'trace.set':335 'traceidratiobas':791,801 'tracepar':613 'tracer':308,336,353,355,385,387,441,485,569 'tracer.start':358,390,576 'tracer.startspan':492 'tracerprovid':294,318 'tracest':620 'track':82 'treat':1025 'tri':495 'troubleshoot':951 'true':228,825 'type':217,765,780 'ui':251 'understand':88,101 'unrel':41 'url':223 'use':34,94,877,902,973,1010 'user':136,352,363,372,374,378,379,382,407,494,497,504,567,579,586,602,604,860 'user-servic':135 'user.count':368,501,600 'user.filter':584 'users.length':502 'v1':671 'valid':67,1035 'valu':165 'verif':73 'verifi':958 'version':233 'visibl':14,29 'visual':1002 'volum':744 'volumemount':739 'within':154,172 'worker':710 'yaml':232,669,759,772 'zipkin':260,263","prices":[{"id":"70b02811-e733-4cc2-8eca-fbceb5058951","listingId":"b0fbd559-f81c-4ef5-b0a2-860fb998bf0e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:36:10.563Z"}],"sources":[{"listingId":"b0fbd559-f81c-4ef5-b0a2-860fb998bf0e","source":"github","sourceId":"sickn33/antigravity-awesome-skills/distributed-tracing","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/distributed-tracing","isPrimary":false,"firstSeenAt":"2026-04-18T21:36:10.563Z","lastSeenAt":"2026-04-24T06:51:04.754Z"}],"details":{"listingId":"b0fbd559-f81c-4ef5-b0a2-860fb998bf0e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"distributed-tracing","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34831,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"cdc18713290d9ecbe5c0cce20ec7ad5e0929f9c8","skill_md_path":"skills/distributed-tracing/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/distributed-tracing"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"distributed-tracing","description":"Implement distributed tracing with Jaeger and Tempo for request flow visibility across microservices."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/distributed-tracing"},"updatedAt":"2026-04-24T06:51:04.754Z"}}