Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问clear审计未展示

vcr-http-recordingVCR HTTP 录制

Agent Skill

vcr-http-recording 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

436

周安装

18

GitHub Stars

公开资料未说明

下载量

143
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:vcr-http-recording(VCR HTTP 录制)
来源仓库:https://github.com/yonatangross/skillforge-claude-plugin
仓库路径:skills/vcr-http-recording
安装命令:
npx skills add yonatangross/skillforge-claude-plugin --skill "vcr-http-recording"
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

AgentSkills.tonpx skills
npx skills add yonatangross/skillforge-claude-plugin --skill "vcr-http-recording"

简介

vcr-http-recording 用于快速查找、检索和筛选 HTTP 录制相关信息,提升网络调试效率。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词或任务场景定位相关内容。
  • 通过 npx skills add yonatangross/skillforge-claude-plugin --skill "vcr-http-recording" 安装,具体用法请参考原始 README。
  • 安装前建议确认权限范围、维护状态及是否会触发联网、命令执行或文件读写。
  • 可结合来源仓库和安装命令进一步核验实际功能与使用方式。

SKILL.md

VCR.py HTTP Recording

Record and replay HTTP interactions for Python tests.

Basic Setup

# conftest.py
import pytest

@pytest.fixture(scope="module")
def vcr_config():
    return {
        "cassette_library_dir": "tests/cassettes",
        "record_mode": "once",
        "match_on": ["uri", "method"],
        "filter_headers": ["authorization", "x-api-key"],
        "filter_query_parameters": ["api_key", "token"],
    }

Basic Usage

import pytest

@pytest.mark.vcr()
def test_fetch_user():
    response = requests.get("https://api.example.com/users/1")

    assert response.status_code == 200
    assert response.json()["name"] == "John Doe"

@pytest.mark.vcr("custom_cassette.yaml")
def test_with_custom_cassette():
    response = requests.get("https://api.example.com/data")
    assert response.status_code == 200

Async Support

import pytest
from httpx import AsyncClient

@pytest.mark.asyncio
@pytest.mark.vcr()
async def test_async_api_call():
    async with AsyncClient() as client:
        response = await client.get("https://api.example.com/data")

    assert response.status_code == 200
    assert "items" in response.json()

Recording Modes

@pytest.fixture(scope="module")
def vcr_config():
    import os

    # CI: never record, only replay
    if os.environ.get("CI"):
        record_mode = "none"
    else:
        record_mode = "new_episodes"

    return {"record_mode": record_mode}
ModeBehavior
onceRecord if missing, then replay
new_episodesRecord new, replay existing
noneNever record (CI)
allAlways record (refresh)

Filtering Sensitive Data

def filter_request_body(request):
    """Redact sensitive data from request body."""
    import json
    if request.body:
        try:
            body = json.loads(request.body)
            if "password" in body:
                body["password"] = "REDACTED"
            if "api_key" in body:
                body["api_key"] = "REDACTED"
            request.body = json.dumps(body)
        except json.JSONDecodeError:
            pass
    return request

@pytest.fixture(scope="module")
def vcr_config():
    return {
        "filter_headers": ["authorization", "x-api-key"],
        "before_record_request": filter_request_body,
    }

LLM API Testing

def llm_request_matcher(r1, r2):
    """Match LLM requests ignoring dynamic fields."""
    import json

    if r1.uri != r2.uri or r1.method != r2.method:
        return False

    body1 = json.loads(r1.body)
    body2 = json.loads(r2.body)

    # Ignore dynamic fields
    for field in ["request_id", "timestamp"]:
        body1.pop(field, None)
        body2.pop(field, None)

    return body1 == body2

@pytest.fixture(scope="module")
def vcr_config():
    return {
        "custom_matchers": [llm_request_matcher],
    }

Cassette File Example

# tests/cassettes/test_fetch_user.yaml
interactions:
- request:
    body: null
    headers:
      Content-Type: application/json
    method: GET
    uri: https://api.example.com/users/1
  response:
    body:
      string: '{"id": 1, "name": "John Doe"}'
    status:
      code: 200
version: 1

Key Decisions

DecisionRecommendation
Record modeonce for dev, none for CI
Cassette formatYAML (readable)
Sensitive dataAlways filter headers/body
Custom matchersUse for LLM APIs

Common Mistakes

  • Committing cassettes with real API keys
  • Using all mode in CI (makes live calls)
  • Not filtering sensitive data
  • Missing cassettes in git

Related Skills

  • msw-mocking - Frontend equivalent
  • integration-testing - API testing patterns
  • llm-testing - LLM-specific patterns

Capability Details

http-recording

Keywords: record HTTP, vcr.use_cassette, record mode, capture HTTP Solves:

  • Record HTTP interactions for replay
  • Capture real API responses
  • Create deterministic test fixtures

cassette-replay

Keywords: replay, cassette, playback, mock replay Solves:

  • Replay recorded HTTP interactions
  • Run tests without network access
  • Ensure consistent test results

async-support

Keywords: async, aiohttp, httpx async, async cassette Solves:

  • Record async HTTP clients
  • Handle aiohttp and httpx async
  • Test async API integrations

sensitive-data-filtering

Keywords: filter, scrub, redact, sensitive data, before_record Solves:

  • Scrub API keys from cassettes
  • Redact sensitive data
  • Implement before_record hooks

custom-matchers

Keywords: matcher, match on, request matching, custom match Solves:

  • Configure request matching rules
  • Ignore dynamic request parts
  • Match by method/host/path

llm-api-testing

Keywords: LLM cassette, OpenAI recording, Anthropic recording Solves:

  • Record LLM API responses
  • Test AI integrations deterministically
  • Avoid costly API calls in tests

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

28.69%
按下载量换算41

OpenCode

23.22%
按下载量换算33

Antigravity

19.98%
按下载量换算29

Gemini CLI

13.31%
按下载量换算19

windsurf

9.41%
按下载量换算13

trae

3.96%
按下载量换算6

安全审计

暂无安全审计结果可展示。

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills