关于 repomix-safe-mixer
面向代码库打包安全的技能,会在使用 repomix 打包前扫描硬编码凭据;发现潜在秘密时报告位置并阻止打包,也可单独扫描审计。
主要功能
- 01扫描常见凭据模式
- 02报告发现项的文件与行号
- 03发现秘密时阻止打包
- 04单独扫描并输出 JSON
- 05传递 repomix 配置和输出选项
适用场景
- 01分享 repomix 包前检查项目
- 02提交代码前审计代码库
- 03确认凭据已清理
- 04扫描无异常后打包项目
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ daymade/ claude-code-skills --skill repomix-safe-mixer安装后在 Claude Code 中输入/repomix-safe-mixer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/common_secrets.mdscripts/safe_pack.pyscan_secrets.py详细介绍
Repomix 安全混合器
概述
使用 repomix 打包代码库时,自动检测并移除硬编码凭据,确保安全。
此技能可防止使用 repomix 打包代码时意外暴露凭据。它会扫描硬编码密钥(API 密钥、数据库凭据、令牌),报告发现项,并确保安全打包。
使用场景:使用 repomix 打包代码以便分发、创建可共享的参考包,或任何担心代码中存在硬编码凭据的情况。
核心工作流
标准安全打包
使用此技能 scripts/ 目录中的 safe_pack.py 完成完整工作流:扫描 → 报告 → 打包。
python3 scripts/safe_pack.py <directory>
功能:
- 扫描目录中的硬编码凭据
- 报告发现项及其文件和行号详情
- 如果发现密钥,则阻止打包
- 仅在扫描通过时使用 repomix 打包
示例:
python3 scripts/safe_pack.py ./my-project
扫描通过时的输出:
🔍 Scanning ./my-project for hardcoded secrets...
✅ No secrets detected!
📦 Packing ./my-project with repomix...
✅ Packaging complete!
Package is safe to distribute.
发现密钥时的输出:
🔍 Scanning ./my-project for hardcoded secrets...
⚠️ Security Scan Found 3 Potential Secrets:
🔴 supabase_url: 1 instance(s)
- src/client.ts:5
Match: https://your-project-ref.supabase.co
❌ Cannot pack: Secrets detected!
选项
自定义输出文件:
python3 scripts/safe_pack.py \
./my-project \
--output package.xml
使用 repomix 配置:
python3 scripts/safe_pack.py \
./my-project \
--config repomix.config.json
从扫描中排除匹配模式:
python3 scripts/safe_pack.py \
./my-project \
--exclude '.*test.*' '.*\.example'
强制打包(有风险,跳过扫描):
python3 scripts/safe_pack.py \
./my-project \
--force # ⚠️ NOT RECOMMENDED
独立密钥扫描
使用此技能 scripts/ 目录中的 scan_secrets.py 仅进行扫描(不打包)。
python3 scripts/scan_secrets.py <directory>
使用场景:
- 移除凭据后验证清理结果
- 提交前安全检查
- 审计现有代码库
示例:
python3 scripts/scan_secrets.py ./my-project
用于程序处理的 JSON 输出:
python3 scripts/scan_secrets.py \
./my-project \
--json
排除匹配模式:
python3 scripts/scan_secrets.py \
./my-project \
--exclude '.*test.*' '.*example.*' '.*SECURITY_AUDIT\.md'
检测到的密钥类型
扫描器会检测常见凭据模式,包括:
云服务提供商:
- AWS 访问密钥(
AKIA...) - Cloudflare R2 账户 ID 和访问密钥
- Supabase 项目 URL 和匿名密钥
API 密钥:
- Stripe 密钥(
sk_live_...、pk_live_...) - OpenAI API 密钥(
sk-...) - Google Gemini API 密钥(
AIza...) - 通用 API 密钥
身份验证:
- JWT 令牌(
eyJ...) - OAuth 客户端密钥
- 私钥(
-----BEGIN PRIVATE KEY-----) - Turnstile 密钥(
0x...)
完整列表和模式请参阅 references/common_secrets.md。
处理检测到的密钥
发现密钥时:
第 1 步:检查发现项
逐项检查发现项,确认它是真实凭据(而非占位符或示例)。
第 2 步:替换为环境变量
替换前:
const SUPABASE_URL = "https://your-project-ref.supabase.co";
const API_KEY = "<hardcoded-anon-key-DO-NOT-COMMIT>";
替换后:
const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL || "https://your-project-ref.supabase.co";
const API_KEY = import.meta.env.VITE_API_KEY || "your-api-key-here";
// Validation
if (!import.meta.env.VITE_SUPABASE_URL) {
console.error("⚠️ Missing VITE_SUPABASE_URL environment variable");
}
第 3 步:创建 .env.example
# Example environment variables
VITE_SUPABASE_URL=https://your-project-ref.supabase.co
VITE_API_KEY=your-api-key-here
# Instructions:
# 1. Copy this file to .env
# 2. Replace placeholders with real values
# 3. Never commit .env to version control
第 4 步:验证清理结果
再次运行扫描器,确认密钥已移除:
python3 scripts/scan_secrets.py ./my-project
第 5 步:安全打包
确认扫描通过后,安全打包:
python3 scripts/safe_pack.py ./my-project
暴露后的处理措施
如果凭据已经暴露(例如,已提交到 git 或公开分享):
- 立即轮换凭据 - 生成新的密钥或令牌
- 撤销旧凭据 - 禁用已泄露的凭据
- 审计使用情况 - 检查日志,查找未经授权的访问
- 持续监控 - 设置异常活动提醒
- 更新部署 - 部署使用新凭据的代码
- 记录事件 - 记录暴露内容及采取的措施
常见误报
扫描器会跳过常见误报:
占位符:
your-api-key、example-key、placeholder-value<YOUR_API_KEY>、${API_KEY}、TODO: add key
测试/示例文件:
- 匹配
.*test.*、.*example.*、.*sample.*的文件
注释:
- 以
//、#、/*、*开头的行
环境变量引用(正确用法):
process.env.API_KEYimport.meta.env.VITE_API_KEYDeno.env.get('API_KEY')
如需跳过其他匹配模式,请使用 --exclude。
与 Repomix 集成
此技能适用于标准 repomix:
默认用法(无配置):
python3 scripts/safe_pack.py ./project
使用 repomix 配置:
python3 scripts/safe_pack.py \
./project \
--config repomix.config.json
自定义输出位置:
python3 scripts/safe_pack.py \
./project \
--output ~/Downloads/package-clean.xml
此技能会在安全验证后于内部运行 repomix,并传递配置和输出选项。
工作流示例
工作流 1:打包干净的项目
# Scan and pack in one command
python3 scripts/safe_pack.py \
~/workspace/my-project \
--output ~/Downloads/my-project-package.xml
工作流 2:清理并打包含有密钥的项目
# Step 1: Scan to discover secrets
python3 scripts/scan_secrets.py ~/workspace/my-project
# Step 2: Review findings and replace credentials with env vars
# (Edit files manually or with automation)
# Step 3: Verify cleanup
python3 scripts/scan_secrets.py ~/workspace/my-project
# Step 4: Package safely
python3 scripts/safe_pack.py \
~/workspace/my-project \
--output ~/Downloads/my-project-clean.xml
工作流 3:提交前审计
# Pre-commit hook: scan for secrets
python3 scripts/scan_secrets.py . --json
# Exit code 1 if secrets found (blocks commit)
# Exit code 0 if clean (allows commit)
资源
参考资料:
references/common_secrets.md- 完整的凭据模式目录
脚本:
scripts/scan_secrets.py- 独立安全扫描器scripts/safe_pack.py- 完整的扫描 → 打包工作流
相关技能:
repomix-unmixer- 从 repomix 软件包中提取文件skill-creator- 创建新的 Claude Code 技能
安全说明
此技能可检测常见模式,但可能无法发现所有类型的凭据。请务必:
- 手动检查发现的问题
- 轮换已泄露的凭据
- 使用 .env.example 模板
- 验证环境变量
- 监控未经授权的访问
不能替代:CI/CD 中的密钥扫描、Git 历史记录扫描或全面的安全审计。