Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

E2E Test Recorder

v1.0.0

Records browser interactions for end-to-end tests and generates videos or GIFs with configurable encoding and annotations.

0· 76·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for 13770626440/e2e-test-recorder.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "E2E Test Recorder" (13770626440/e2e-test-recorder) from ClawHub.
Skill page: https://clawhub.ai/13770626440/e2e-test-recorder
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install e2e-test-recorder

ClawHub CLI

Package manager switcher

npx clawhub@latest install e2e-test-recorder
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The declared purpose (browser/E2E recording and video/GIF generation) matches most files (record-*, examples, SKILL.md). However there are several maintenance/CI/release scripts (scripts/auto-release.js, scripts/github-api-release.js, deploy/release docs) that perform repository operations, create releases, and attempt to read a configuration file outside the project. Those publishing/automation responsibilities are not needed for a runtime recording skill and are disproportionate to the stated purpose.
!
Instruction Scope
SKILL.md only documents recording usage and config. It does not warn that included scripts will read files outside the project or attempt to push code/release to GitHub. The codebase contains instructions (in scripts/auto-release.js) to load ../config.yaml and to perform git push, tag, and release steps. If run by an agent or user in an environment containing secrets in parent directories, these scripts could access/use them despite SKILL.md focusing on recording.
Install Mechanism
There is no install spec in the skill registry entry (instruction-only). The package.json lists standard Node dependencies (puppeteer, ffmpeg-static, etc.) which are appropriate for recording functionality. No downloads from untrusted URLs or archive extraction steps are present in the provided manifests.
!
Credentials
The skill declares no required environment variables or credentials, but scripts/auto-release.js and related release tooling expect a GitHub token in a config file (../config.yaml) and will set process.env.GITHUB_TOKEN and run git commands. That is an undeclared request for sensitive credentials and therefore disproportionate to the recording purpose.
Persistence & Privilege
Skill flags show no elevated privileges (always: false). The code does perform Git operations (push, tag) and writes release/guide files to disk when release scripts are run — these are repository-modifying actions but only occur if the release scripts are executed. This is not an automatic persistence/always-loaded privilege, but it increases blast radius if the release scripts are invoked by an automated agent without review.
What to consider before installing
This package appears to be a genuine E2E recording tool, but it includes release/publishing scripts that access a ../config.yaml for a GitHub token and run git push/tag/release steps. Before installing or running anything: 1) Inspect scripts/auto-release.js and scripts/github-api-release.js and do not run them unless you intend to publish — they may read credentials from parent directories. 2) Ensure there is no sensitive config.yaml (or other credential files) in parent directories that these scripts could read. 3) Run the recorder code (examples, CLI record/test commands) in an isolated environment or container the first time. 4) If you only need recording, consider removing or ignoring the release/CI scripts from the package (or run npm install and then delete/rename the scripts) so automated agents can't execute them. 5) If you want to allow publishing automation, review exactly where credentials must be stored and prefer explicit environment variables or a dedicated CI secret store rather than a config file located outside the project. If you want me to, I can inspect the remaining omitted script files (github-api-release.js, record-browser.js, record-test.js, utils.js, etc.) for other surprises — provide their contents and I'll analyze them.
scripts/auto-release.js:45
Shell command execution detected (child_process).
scripts/deploy.js:23
Shell command execution detected (child_process).
scripts/github-api-release.js:162
Shell command execution detected (child_process).
simple-test.js:55
Shell command execution detected (child_process).
scripts/utils.js:316
Dynamic code execution detected.
Patterns worth reviewing
These patterns may indicate risky behavior. Check the VirusTotal and OpenClaw results above for context-aware analysis before installing.

Like a lobster shell, security has layers — review code before you run it.

latestvk9774t9bksa4zrhs492p3vrmvd84q2w3
76downloads
0stars
1versions
Updated 2w ago
v1.0.0
MIT-0

Screen Recorder Demo Skill

概述

基于 Puppeteer 的自动化端到端测试录制 Skill,支持录制浏览器操作并生成演示视频/GIF。

功能特性

核心功能

  • 🎥 浏览器操作录制:录制网页操作过程
  • 🎯 智能区域录制:支持全屏或指定区域录制
  • 🔄 格式转换:支持 MP4、GIF、WebM 格式
  • 自动化测试集成:与测试框架无缝集成

高级功能

  • 📊 性能监控:录制时显示FPS和文件大小
  • 🎨 视频编辑:添加水印、字幕、片头片尾
  • 🔧 配置灵活:支持多种录制参数配置
  • 📱 跨平台:支持 Windows、macOS、Linux

安装要求

系统要求

  • Node.js 16+
  • npm 或 yarn
  • Chrome/Chromium 浏览器

依赖安装

npm install puppeteer puppeteer-screen-recorder ffmpeg-static
# 或
yarn add puppeteer puppeteer-screen-recorder ffmpeg-static

快速开始

1. 基础录制

const { ScreenRecorder } = require('./scripts/record-browser');

const recorder = new ScreenRecorder({
  outputPath: './recordings/demo.mp4',
  fps: 30,
  quality: 80
});

await recorder.startRecording('https://your-app.com');
// 执行操作...
await recorder.stopRecording();

2. 端到端测试录制

const { recordE2ETest } = require('./scripts/record-test');

await recordE2ETest({
  url: 'http://localhost:3000',
  testSteps: [
    { action: 'click', selector: '#login-btn' },
    { action: 'type', selector: '#username', text: 'testuser' },
    { action: 'type', selector: '#password', text: 'password123' },
    { action: 'click', selector: '#submit-btn' }
  ],
  output: './recordings/login-test.mp4'
});

API 文档

ScreenRecorder 类

构造函数

new ScreenRecorder(options)

options:

  • outputPath (string): 输出文件路径
  • fps (number): 帧率,默认 30
  • quality (number): 视频质量 0-100,默认 80
  • aspectRatio (string): 宽高比,如 '16:9'
  • codec (string): 视频编码器,默认 'libx264'

方法

  • startRecording(url, options): 开始录制
  • stopRecording(): 停止录制
  • pauseRecording(): 暂停录制
  • resumeRecording(): 恢复录制
  • addAnnotation(text, position): 添加标注
  • addWatermark(imagePath, position): 添加水印

工具函数

recordE2ETest(config)

录制端到端测试过程

config:

  • url (string): 测试页面URL
  • testSteps (Array): 测试步骤数组
  • output (string): 输出文件路径
  • headless (boolean): 是否无头模式,默认 false

convertVideo(input, output, options)

视频格式转换

mergeVideos(videos, output)

合并多个视频文件

配置示例

基础配置

{
  "recorder": {
    "fps": 30,
    "quality": 80,
    "outputDir": "./recordings",
    "defaultFormat": "mp4"
  },
  "browser": {
    "headless": false,
    "viewport": { "width": 1920, "height": 1080 },
    "slowMo": 50
  },
  "annotations": {
    "enabled": true,
    "fontSize": 24,
    "fontColor": "#ffffff",
    "backgroundColor": "#00000080"
  }
}

测试配置

{
  "testSuites": {
    "login": {
      "url": "http://localhost:3000/login",
      "steps": "scripts/test-steps/login.json",
      "output": "recordings/login-test.mp4"
    },
    "dashboard": {
      "url": "http://localhost:3000/dashboard",
      "steps": "scripts/test-steps/dashboard.json",
      "output": "recordings/dashboard-test.mp4"
    }
  }
}

与测试框架集成

Jest 集成

// jest.config.js
module.exports = {
  setupFilesAfterEnv: ['./jest.setup.js'],
  reporters: [
    'default',
    ['./scripts/jest-video-reporter', { outputDir: './test-recordings' }]
  ]
};

Playwright 集成

// playwright.config.js
const { defineConfig } = require('@playwright/test');

module.exports = defineConfig({
  use: {
    video: 'on',
    screenshot: 'on',
  },
  reporter: [
    ['html', { outputFolder: 'playwright-report' }],
    ['./scripts/playwright-video-reporter', { format: 'gif' }]
  ]
});

目录结构

e2e-test/
├── SKILL.md                    # 技能文档
├── package.json                # 项目配置
├── scripts/
│   ├── record-browser.js       # 浏览器录制核心
│   ├── record-test.js          # 测试录制
│   ├── record-screen.js        # 屏幕录制
│   ├── convert-format.js       # 格式转换
│   ├── add-annotations.js      # 添加标注
│   └── utils.js                # 工具函数
├── configs/
│   ├── default.json            # 默认配置
│   ├── test.json               # 测试配置
│   └── production.json         # 生产配置
├── templates/
│   ├── demo-template.js        # 演示模板
│   └── test-template.js        # 测试模板
├── examples/
│   ├── basic-recording.js      # 基础录制示例
│   ├── e2e-test.js             # 端到端测试示例
│   └── api-test.js             # API测试示例
└── recordings/                 # 录制文件输出目录

使用示例

示例 1:录制登录流程

const { recordE2ETest } = require('./scripts/record-test');

await recordE2ETest({
  url: 'http://localhost:3000',
  testName: '用户登录测试',
  steps: [
    {
      description: '访问登录页面',
      action: 'goto',
      url: '/login'
    },
    {
      description: '输入用户名',
      action: 'type',
      selector: '#username',
      text: 'test@example.com'
    },
    {
      description: '输入密码',
      action: 'type',
      selector: '#password',
      text: 'password123'
    },
    {
      description: '点击登录按钮',
      action: 'click',
      selector: 'button[type="submit"]'
    },
    {
      description: '验证登录成功',
      action: 'waitFor',
      selector: '.dashboard',
      timeout: 5000
    }
  ],
  output: 'recordings/login-demo.mp4',
  annotations: true
});

示例 2:录制API测试

const { recordAPITest } = require('./scripts/record-test');

await recordAPITest({
  apiUrl: 'http://localhost:8000/api',
  tests: [
    {
      name: '健康检查API',
      endpoint: '/health',
      method: 'GET',
      expectedStatus: 200
    },
    {
      name: '用户注册API',
      endpoint: '/auth/register',
      method: 'POST',
      data: {
        username: 'testuser',
        email: 'test@example.com',
        password: 'Password123!'
      },
      expectedStatus: 201
    }
  ],
  output: 'recordings/api-test.gif'
});

故障排除

常见问题

1. 录制失败

  • 问题: 无法启动浏览器
  • 解决: 确保已安装 Chrome/Chromium,或设置 executablePath

2. 视频质量差

  • 问题: 视频模糊或卡顿
  • 解决: 调整 fpsquality 参数,确保网络稳定

3. 文件过大

  • 问题: 录制文件太大
  • 解决: 降低 fpsquality,或使用 convertVideo 压缩

4. 内存不足

  • 问题: 录制过程中内存占用过高
  • 解决: 减少录制时长,或增加系统内存

调试模式

const recorder = new ScreenRecorder({
  debug: true,  // 启用调试模式
  logLevel: 'verbose'
});

性能优化建议

录制优化

  1. 降低帧率: 非必要情况下使用 15-24 FPS
  2. 调整分辨率: 根据需求调整录制区域大小
  3. 使用硬件加速: 启用 GPU 加速录制

文件优化

  1. 格式选择: MP4 适合长视频,GIF 适合短视频
  2. 压缩设置: 使用合适的压缩参数
  3. 分段录制: 长时间录制可分段保存

许可证

MIT License

更新日志

v1.0.0 (2026-04-11)

  • 初始版本发布
  • 支持基础浏览器录制
  • 支持 MP4/GIF 格式输出
  • 提供端到端测试录制功能

贡献指南

  1. Fork 项目
  2. 创建功能分支
  3. 提交更改
  4. 推送到分支
  5. 创建 Pull Request

联系支持

Comments

Loading comments...