Skip to content
Back to skills

2643 Request Tracing 2bbdf7bb

ASecurity

```python import time import uuid from functools import wraps from dataclasses import dataclass, asdict from typing import Optional import requests

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
developmentpythonapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2643-request-tracing_2bbdf7bb --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2643 Request Tracing 2bbdf7bb?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2643 Request Tracing 2bbdf7bb
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2643-request-tracing-2bbdf7bb/badge)](https://www.skillsdirectory.com/skills/tools-only-2643-request-tracing-2bbdf7bb)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Request Tracing

## Request Tracing

```python
import time
import uuid
from functools import wraps
from dataclasses import dataclass, asdict
from typing import Optional
import requests

@dataclass
class RequestTrace:
    trace_id: str
    method: str
    url: str
    request_body: Optional[dict]
    response_status: int
    response_body: Optional[dict]
    duration_ms: float
    timestamp: str
    error: Optional[str] = None

class TracedKlingAIClient:
    """Kling AI client with full request tracing."""

    def __init__(self, api_key: str, base_url: str = "https://api.klingai.com/v1"):
        self.api_key = api_key
        self.base_url = base_url
        self.traces: list[RequestTrace] = []
        self.logger = logging.getLogger("klingai.trace")

    def _traced_request(
        self,
        method: str,
        endpoint: str,
        **kwargs
    ) -> dict:
        """Make request with full tracing."""
        trace_id = str(uuid.uuid4())[:8]
        url = f"{self.base_url}{endpoint}"
        start_time = time.time()

        # Log request
        self.logger.info(f"[{trace_id}] {method} {endpoint}", extra={
            "trace_id": trace_id,
            "method": method,
            "endpoint": endpoint,
            "body": kwargs.get("json")
        })

        try:
            response = requests.request(
                method,
                url,
                headers={
                    "Authorization": f"Bearer {self.api_key}",
                    "Content-Type": "application/json",
                    "X-Trace-ID": trace_id
                },
                **kwargs
            )
            duration = (time.time() - start_time) * 1000

            # Create trace record
            trace = RequestTrace(
                trace_id=trace_id,
                method=method,
                url=url,
                request_body=kwargs.get("json"),
                response_status=response.status_code,
                response_body=response.json() if response.text else None,
                duration_ms=duration,
                timestamp=datetime.utcnow().isoformat()
            )
            self.traces.append(trace)

            # Log response
            self.logger.info(f"[{trace_id}] Response {response.status_code}", extra={
                "trace_id": trace_id,
                "status": response.status_code,
                "duration_ms": duration
            })

            response.raise_for_status()
            return response.json()

        except Exception as e:
            duration = (time.time() - start_time) * 1000
            trace = RequestTrace(
                trace_id=trace_id,
                method=method,
                url=url,
                request_body=kwargs.get("json"),
                response_status=getattr(e, "response", {}).status_code if hasattr(e, "response") else 0,
                response_body=None,
                duration_ms=duration,
                timestamp=datetime.utcnow().isoformat(),
                error=str(e)
            )
            self.traces.append(trace)

            self.logger.error(f"[{trace_id}] Error: {e}", extra={
                "trace_id": trace_id,
                "error": str(e),
                "duration_ms": duration
            })
            raise

    def get_traces(self, limit: int = 100) -> list[dict]:
        """Get recent traces."""
        return [asdict(t) for t in self.traces[-limit:]]

    def export_traces(self, filepath: str):
        """Export traces to JSON file."""
        with open(filepath, "w") as f:
            json.dump(self.get_traces(), f, indent=2)
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.