AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Add Session Recording

skill-gotempsh-temps-add-session-recording · by gotempsh

|

No reviews yet
0 installs
20 views
0.0% view→install

Install

$ agentstack add skill-gotempsh-temps-add-session-recording

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-gotempsh-temps-add-session-recording)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
14d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Add Session Recording? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Add Session Recording

Implement privacy-aware session recording with @temps-sdk/react-analytics (rrweb under the hood).

> Verified against the real published package. A prior version of this skill documented ` and startRecording/stopRecording/isRecording — **none of those exist**. Confirm before changing: > `bash > npm pack @temps-sdk/react-analytics@latest && tar -xzf temps-sdk-react-analytics-*.tgz \ > && cat package/dist/types.d.ts package/dist/useSessionRecording.d.ts > ``

Installation

npm install @temps-sdk/react-analytics

There are two ways to record — pick one

A) Recommended: configure recording on the analytics provider

Recording is driven by the main TempsAnalyticsProvider via enableSessionRecording + sessionRecordingConfig. If the app already uses the analytics provider (see the add-react-analytics skill), just turn recording on — no second provider needed.

// app/layout.tsx (Next App Router) — provider ships its own 'use client', layout stays a Server Component.
import { TempsAnalyticsProvider } from '@temps-sdk/react-analytics';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    
      
        
          {children}
        
      
    
  );
}

> basePath="/api/_temps" is correct for apps deployed on Temps — the proxy ingests /api/_temps/session-replay directly. See the add-react-analytics skill for the full basePath explanation.

B) User-toggleable recording (consent flows)

For an explicit on/off toggle, use the separate SessionRecordingProvider. Its real props are only defaultEnabled and persistPreference — masking/blocking is still configured on the analytics provider's sessionRecordingConfig.

// Real signatures:
function SessionRecordingProvider(props: {
  children: React.ReactNode;
  defaultEnabled?: boolean;
  persistPreference?: boolean;   // remember the user's choice in localStorage
}): JSX.Element;

function useSessionRecordingControl(defaultEnabled?: boolean): {
  isEnabled: boolean;
  enable: () => void;
  disable: () => void;
  toggle: () => void;
};
'use client';
import { SessionRecordingProvider, useSessionRecordingControl } from '@temps-sdk/react-analytics';

export function RecordingRoot({ children }: { children: React.ReactNode }) {
  return (
    
      {children}
    
  );
}

function RecordingControls() {
  const { isEnabled, toggle } = useSessionRecordingControl();
  return (
    {isEnabled ? 'Stop' : 'Start'} Recording
  );
}

> ⚠️ The control hook returns { isEnabled, enable, disable, toggle }not { isRecording, startRecording, stopRecording, toggleRecording }. useSessionRecording() (no "Control") returns { isRecordingEnabled, enableRecording, disableRecording, toggleRecording, sessionId } instead.

Privacy controls

Masking/blocking uses the CSS classes configured in sessionRecordingConfig (defaults: rr-block, rr-mask, rr-ignore).

// Block entirely (placeholder in replay)

  
  

// Mask text content (asterisks in replay)
{socialSecurityNumber}

// Ignore from recording

> ⚠️ data-rr-block / data-rr-mask attribute selectors are not wired by default — use the configured CSS classes, or set custom selectors via sessionRecordingConfig.

GDPR consent flow

'use client';
import { useSessionRecordingControl } from '@temps-sdk/react-analytics';
import { useState, useEffect } from 'react';

function ConsentBanner() {
  const [show, setShow] = useState(false);
  const { enable, disable } = useSessionRecordingControl();

  useEffect(() => {
    const consent = localStorage.getItem('session_recording_consent');
    if (consent === null) setShow(true);
    else if (consent === 'true') enable();
  }, [enable]);

  if (!show) return null;
  return (
    
      We record sessions to improve your experience.
      
         { localStorage.setItem('session_recording_consent', 'true'); enable(); setShow(false); }}>Accept
         { localStorage.setItem('session_recording_consent', 'false'); disable(); setShow(false); }}>Decline
      
    
  );
}

Conditional recording

// Only in production (via the analytics provider)

// Only for some users — gate the SessionRecordingProvider default

// Exclude specific pages — use sessionRecordingConfig.excludedPaths instead of toggling per-route
sessionRecordingConfig={{ excludedPaths: ['/checkout', '/account/billing'] }}

Verification

  1. DevTools → Network: look for POSTs to /api/_temps/session-replay.
  2. Interact with the app to generate events.
  3. Open the session replay in the Temps dashboard.
  4. Confirm masked/blocked elements are obscured in the replay.

> The ingest endpoint is /api/_temps/session-replaynot /api/_temps/recordings.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.