Skill: zlszhonglongshen/github-smart-code-digest (version 1.0.0)

--- name: github-smart-code-digest description: > GitHub Smart Code Digest — 自动监控仓库 Commits/PRs，AI 智能代码审查， 生成可视化审查卡片，汇总发布到飞书 Wiki。适用于团队代码质量追踪和工程管理者日报/周报生成。 触发词：代码审查报告、GitHub 监控、PR 审查日报、代码质量汇总、工程师日报。 category: devops version: 1.0.0 author: OpenClaw Agent tags: - github - code-review - feishu-wiki - digest - automation - devops - daily-report combo: true channels: - feishu dependencies: - github - code-review-skill - card-renderer - feishu-wiki skills: - source: github purpose: 获取仓库 Commits、PR 列表、PR 文件变更，触发代码审查 - source: code-review-skill purpose: 对每个 PR 进行 AI 多维度代码审查（正确性/安全性/可维护性/性能） - source: card-renderer purpose: 将审查结果生成为可视化知识卡片（封面+详情页） - source: feishu-wiki purpose: 将完整报告发布为飞书 Wiki 页面，支持定时自动推送 --- # GitHub Smart Code Digest 自动化 GitHub 代码审查与飞书 Wiki 推送工作流，5 分钟生成团队代码质量报告。 ## 适用场景 - 工程团队每日/每周代码审查汇总 - 技术负责人追踪多个仓库的 PR 质量 - 自动化生成工程师日报/周报内容 - 开源项目维护者追踪贡献代码质量 - CI/CD 流水线失败后的审查报告归档 ## 工作流程 ``` Step 1 → github │ 获取仓库列表 → 筛选目标仓库 │ 获取指定时间范围内的 Commits + PR 列表 ↓ Step 2 → code-review-skill │ 对每个 Open/Recent PR 执行 5 维度 AI 审查 │ 输出：问题列表 + 置信度评分 + 修复建议 ↓ Step 3 → card-renderer │ 生成审查摘要卡片（封面图 + 详情页） │ 包含：仓库名、PR 数量、问题分布、质量评分 ↓ Step 4 → feishu-wiki 创建/更新飞书 Wiki 页面 支持定时任务自动触发 ``` ## 使用方式 ### 手动触发 ```bash # 审查单个仓库（默认最近 7 天） openclaw run github-smart-code-digest --repo owner/repo # 指定时间范围和仓库 openclaw run github-smart-code-digest \ --repo owner/repo \ --since "2026-04-10" \ --until "2026-04-17" \ --feishu-space-id <知识空间ID> ``` ### 定时自动推送（推荐） ```bash # 每天早上 9:00 推送代码审查日报 openclaw cron add "0 9 * * *" "github-smart-code-digest" \ --name "代码审查日报" \ --repo owner/repo # 每周一早上 9:30 推送周报 openclaw cron add "0 9:30 * * 1" "github-smart-code-digest" \ --name "代码审查周报" \ --repo owner/repo1,owner/repo2 \ --period weekly ``` ## 配置项 (config.yaml) ```yaml github: # 监控的仓库列表 repos: - owner/repo1 - owner/repo2 # 默认审查时间范围（天） default_days: 7 # 最小 PR 变更行数（过滤小修改） min_pr_lines: 10 feishu: # 飞书知识空间 ID wiki_space_id: "" # 飞书 Wiki 父节点（可选，指定挂载位置） wiki_parent_node: "" card: # 卡片风格 style: macbook-pro # macbook-pro | cyberpunk | bauhaus # 输出格式 format: png # png | jpg cron: # 默认启用定时任务 enabled: true # 推送时间（HH:MM） push_time: "09:00" # 报告周期 period: daily # daily | weekly ``` ## Step 详解 ### Step 1: github — 仓库信息采集 ```bash # 获取仓库最近 PR 列表（最近 7 天） gh pr list --repo owner/repo \ --state open \ --search "created:>=$(date -d '7 days ago' +%Y-%m-%d)" \ --json number,title,author,createdAt,changedFiles,additions,deletions # 获取指定 PR 的文件变更 gh pr diff <pr-number> --repo owner/repo # 获取最近 Commits gh api repos/owner/repo/commits?since=<unix-timestamp> ``` **输出中间结果**（JSON）： ```json { "repo": "owner/repo", "period": "2026-04-10 ~ 2026-04-17", "prs": [ { "number": 123, "title": "feat: add user authentication", "author": "dev1", "changed_files": 8, "additions": 245, "deletions": 32, "created_at": "2026-04-14T10:00:00Z" } ], "commits": 12 } ``` ### Step 2: code-review-skill — AI 代码审查 对每个 PR 独立执行 5 维度审查（并行处理）： | 维度 | 检查内容 | 最低报告置信度 | |------|---------|--------------| | 正确性 | 业务逻辑、边界条件、错误处理 | 80% | | 安全性 | 注入、认证绕过、数据暴露 | 80% | | 可维护性 | 代码复杂度、命名、可读性 | 80% | | 性能 | N+1 查询、内存泄漏、资源管理 | 80% | | 规范合规 | CLAUDE.md、编码规范、测试覆盖 | 80% | **审查输出**： ```json { "pr_number": 123, "issues": [ { "severity": "important", "file": "src/auth/service.ts", "line": "45-47", "description": "数据库操作缺少事务保护", "confidence": 85, "suggestion": "使用 BEGIN...COMMIT 包装多个写操作" } ], "summary": { "total_issues": 3, "critical": 0, "important": 2, "minor": 1 }, "approval_ready": false } ``` ### Step 3: card-renderer — 可视化卡片生成 生成审查汇总卡片（两张图）： **卡片 ① 封面图**： - 标题：GitHub 代码审查日报 / 周报 - 仓库名称 + 时间范围 - 总体质量评分（五星或雷达图） - PR 总数 / 问题总数 **卡片 ② 详情页**： - 各仓库 PR 分布柱状图 - 问题类型分布饼图 - 高置信度问题列表（Top 5） - 审查覆盖率（%） ```bash # 调用 card-renderer python3 scripts/generate_digest_card.py \ --data /tmp/digest_data.json \ --style macbook-pro \ --output /tmp/digest_card.png ``` ### Step 4: feishu-wiki — 发布飞书 Wiki 在指定知识空间创建 Wiki 页面： ```markdown # GitHub 代码审查报告 **仓库**: owner/repo **时间范围**: 2026-04-10 ~ 2026-04-17 **生成时间**: 2026-04-17 09:00 ## 审查概览 | 指标 | 数值 | |------|------| | PR 总数 | 12 | | 问题总数 | 8 | | 高置信度问题 | 3 | | 审查覆盖率 | 100% | ## 详细审查结果 ### PR #123: feat: add user authentication - 问题数：3 - 状态：⚠️ 需要修改 - 关键问题： - `src/auth/service.ts:45` — 数据库操作缺少事务保护（置信度 85%） - `src/auth/middleware.ts:22` — 缺少权限验证中间件（置信度 82%） ## 审查卡片 ![审查汇总卡片](file:///tmp/digest_card.png) ``` ## 输出文件 | 文件 | 路径 | 说明 | |------|------|------| | PR 数据 | `/tmp/digest_prs.json` | 原始 PR 列表 | | 审查报告 | `/tmp/digest_reviews.json` | AI 审查结果 | | 封面卡片 | `/tmp/digest_cover.png` | 封面图 | | 详情卡片 | `/tmp/digest_detail.png` | 详情页图 | | Wiki 页面 | 飞书 Wiki | 最终发布的报告 | ## 注意事项 - 仅报告置信度 ≥ 80% 的问题，避免信息噪音 - 过滤小 PR（变更 < 10 行），减少误报 - 代码审查使用 5 个独立 Agent 并行审查，确保全面性 - 飞书 Wiki 每次运行会创建新页面（历史报告保留） - 建议一个知识空间用于归档，形成可追溯的审查历史 ## 前置条件 1. **GitHub CLI** (`gh`) 已安装并完成 `gh auth login` 2. **飞书 App** 具备 Wiki 写入权限 3. **环境变量**： - `FEISHU_APP_ID`、`FEISHU_APP_SECRET`（飞书应用凭证）

path: README.md
content: # GitHub Smart Code Digest

> 让代码审查结果自动生成、可视化、并推送到飞书 Wiki，5 分钟完成团队代码质量报告。

[![OpenClaw Skill Combo](https://img.shields.io/badge/OpenClaw-Skill_Combo-green)](#)
[![GitHub](https://img.shields.io/badge/GitHub-Code_Review-blue)](#)
[![飞书](https://img.shields.io/badge/飞书-Wiki_发布-29A37A)](#)

## 🎯 这个 Combo 解决什么问题？

**痛点**：工程团队需要定期汇总代码审查结果，但 GitHub 原生没有好用的审查报告聚合工具。手动整理耗时、遗漏多、格式不统一。

**方案**：GitHub Smart Code Digest 自动完成 4 步：

```
🔍 采集 PR 数据    → 🤖 AI 多维审查   → 🎨 可视化卡片   → 📄 飞书 Wiki 发布
（github）           （code-review）     （card-renderer）  （feishu-wiki）
```

## ✨ 功能特性

| 特性 | 说明 |
|------|------|
| **多仓库监控** | 支持同时监控多个 GitHub 仓库 |
| **AI 代码审查** | 5 维度并行审查（正确性/安全/可维护/性能/规范） |
| **智能过滤** | 只报告置信度 ≥80% 的问题，减少噪音 |
| **可视化卡片** | 自动生成封面图 + 详情页，支持多风格 |
| **飞书 Wiki** | 每次自动创建新页面，历史报告可追溯 |
| **定时推送** | 支持每日/每周 Cron 定时自动生成和推送 |
| **PR 变更过滤** | 自动过滤小修改（<10 行），专注重要变更 |

## 📋 前置条件

- **GitHub CLI**：`gh` 已安装并完成认证
  ```bash
  gh auth login
  ```
- **飞书应用**：具有知识库写入权限的 App
  - 获取 `FEISHU_APP_ID` 和 `FEISHU_APP_SECRET`
- **OpenClaw**：Gateway 运行中，支持 Cron 定时任务

## 🚀 快速开始

### 1. 安装依赖 Skill

```bash
openclaw install github
openclaw install code-review-skill
openclaw install card-renderer
openclaw install feishu-wiki
```

### 2. 配置

创建 `config.yaml`：

```yaml
github:
  repos:
    - your-org/frontend
    - your-org/backend
  default_days: 7
  min_pr_lines: 10

feishu:
  wiki_space_id: "your_space_id"
  wiki_parent_node: ""  # 可选

card:
  style: macbook-pro
  format: png

cron:
  enabled: true
  push_time: "09:00"
  period: daily
```

### 3. 手动触发

```bash
openclaw run github-smart-code-digest \
  --repo your-org/frontend \
  --feishu-space-id your_space_id
```

### 4. 设置定时任务

```bash
# 每天 9:00 推送日报
openclaw cron add "0 9 * * *" "github-smart-code-digest" \
  --name "代码审查日报"

# 每周一 9:30 推送周报
openclaw cron add "0 9:30 * * 1" "github-smart-code-digest" \
  --name "代码审查周报" \
  --period weekly
```

## 🔧 工作流详解

### Step 1 — GitHub 数据采集

```bash
# 获取 PR 列表
gh pr list --repo owner/repo --state open \
  --search "created:>=2026-04-10" \
  --json number,title,author,changedFiles,additions,deletions

# 获取文件变更
gh pr diff 123 --repo owner/repo
```

### Step 2 — AI 代码审查（5 维度）

审查由 5 个独立 Agent 并行执行，每个 Agent 专注一个维度：

| Agent | 维度 | 检查内容 |
|-------|------|---------|
| #1 | 规范合规 | CLAUDE.md 规则遵守情况 |
| #2 | 正确性 | Bug、边界条件、错误处理 |
| #3 | 上下文 | Git 历史中的相关变更 |
| #4 | 历史审查 | 之前 PR 评论中的经验复用 |
| #5 | 注释规范 | 代码注释中的指导是否被遵守 |

### Step 3 — 可视化卡片

生成两张卡片：

```
┌─────────────────────────┐    ┌─────────────────────────┐
│  GitHub 代码审查日报    │    │  📊 PR 分布柱状图       │
│  ───────────────────   │    │  🔴 安全 3 / 橙色 2      │
│  ⭐⭐⭐⭐ 质量评分        │    │  📁 各仓库问题明细       │
│  PR: 12 | 问题: 8      │    │  Top 5 高置信度问题     │
└─────────────────────────┘    └─────────────────────────┘
```

### Step 4 — 飞书 Wiki 发布

生成完整 Markdown 报告，包含：
- 审查概览数据表格
- 各仓库 PR 明细
- 高置信度问题列表（含文件位置和修复建议）
- 可视化卡片截图

## 📂 目录结构

```
github-smart-code-digest/
├── SKILL.md              # Skill 元数据 + 工作流定义
├── README.md              # 本文件
├── workflow.json          # 工作流编排配置
└── config.yaml            # 用户配置（运行时加载）
```

## ⚠️ 注意事项

- 仅报告置信度 ≥80% 的问题，确保每条反馈都有价值
- 建议一个飞书知识空间专门归档，形成可查询的审查历史
- 首次使用需确保 GitHub 和飞书权限配置正确

## 🤝 参与贡献

欢迎提交 Issue 和 PR！如果你有更好的审查维度建议或卡片风格想法，欢迎交流。


path: workflow.json
content: {
  "name": "github-smart-code-digest",
  "version": "1.0.0",
  "description": "自动监控 GitHub 仓库 Commits/PRs，AI 智能代码审查，生成可视化卡片，汇总发布到飞书 Wiki",
  "combo": true,
  "skills": [
    {
      "id": "github",
      "name": "GitHub CLI",
      "role": "data_source",
      "triggers": ["collect_prs", "get_repo_info"],
      "priority": 1
    },
    {
      "id": "code-review-skill",
      "name": "AI Code Review",
      "role": "analysis_engine",
      "triggers": ["review_pr", "score_issues", "filter_results"],
      "priority": 2,
      "depends_on": ["github"]
    },
    {
      "id": "card-renderer",
      "name": "Card Renderer",
      "role": "visualization",
      "triggers": ["render_cover", "render_detail"],
      "priority": 3,
      "depends_on": ["code-review-skill"]
    },
    {
      "id": "feishu-wiki",
      "name": "Feishu Wiki",
      "role": "publisher",
      "triggers": ["publish_wiki", "create_page"],
      "priority": 4,
      "depends_on": ["card-renderer"]
    }
  ],
  "workflow": {
    "description": "GitHub 代码审查日报/周报自动化工作流",
    "steps": [
      {
        "step": 1,
        "skill": "github",
        "action": "list_prs_and_commits",
        "description": "采集指定仓库在时间范围内的所有 Open PRs 和 Commits",
        "inputs": {
          "repos": "${config.github.repos}",
          "since": "${args.since || config.github.default_days_ago}",
          "until": "${args.until || now}",
          "min_pr_lines": "${config.github.min_pr_lines || 10}"
        },
        "outputs": {
          "pr_list": "/tmp/digest_prs.json",
          "commit_summary": "/tmp/digest_commits.json"
        },
        "shell": {
          "list_prs": "gh pr list --repo ${repo} --state open --search \"created:>=${since}\" --json number,title,author,createdAt,changedFiles,additions,deletions --jq '.[]'",
          "get_diff": "gh pr diff ${pr_number} --repo ${repo} > /tmp/pr_${pr_number}.diff",
          "get_commits": "gh api repos/${repo}/commits?since=${since_unix}&until=${until_unix} --jq '.[].commit.message'"
        }
      },
      {
        "step": 2,
        "skill": "code-review-skill",
        "action": "batch_review_prs",
        "description": "对每个 PR 执行 5 维度 AI 代码审查，过滤低置信度问题",
        "inputs": {
          "pr_list": "/tmp/digest_prs.json",
          "diff_files": "/tmp/pr_*.diff",
          "min_confidence": 80
        },
        "outputs": {
          "review_results": "/tmp/digest_reviews.json",
          "summary_stats": "/tmp/digest_stats.json"
        },
        "review_dimensions": [
          {
            "id": "correctness",
            "name": "正确性",
            "description": "业务逻辑、边界条件、错误处理",
            "min_confidence": 80
          },
          {
            "id": "safety",
            "name": "安全性",
            "description": "注入、认证绕过、数据暴露",
            "min_confidence": 80
          },
          {
            "id": "maintainability",
            "name": "可维护性",
            "description": "代码复杂度、命名、可读性",
            "min_confidence": 80
          },
          {
            "id": "performance",
            "name": "性能",
            "description": "N+1 查询、内存泄漏、资源管理",
            "min_confidence": 80
          },
          {
            "id": "compliance",
            "name": "规范合规",
            "description": "CLAUDE.md、编码规范、测试覆盖",
            "min_confidence": 80
          }
        ],
        "aggregation": {
          "total_prs": "count(pr_list)",
          "total_issues": "sum(reviews[].issues.length)",
          "critical_issues": "count(issues where confidence >= 90)",
          "important_issues": "count(issues where confidence >= 80 and confidence < 90)",
          "approval_ready_prs": "count(reviews where issues.length == 0)",
          "needs_changes_prs": "count(reviews where issues.length > 0)"
        }
      },
      {
        "step": 3,
        "skill": "card-renderer",
        "action": "render_digest_cards",
        "description": "将审查汇总数据生成为可视化知识卡片（封面 + 详情页）",
        "inputs": {
          "review_data": "/tmp/digest_reviews.json",
          "stats": "/tmp/digest_stats.json",
          "style": "${config.card.style || macbook-pro}",
          "format": "${config.card.format || png}"
        },
        "outputs": {
          "cover_card": "/tmp/digest_cover.png",
          "detail_card": "/tmp/digest_detail.png"
        },
        "card_configs": {
          "cover": {
            "title": "GitHub 代码审查${args.period == 'weekly' ? '周报' : '日报'}",
            "elements": [
              "repo_names: 仓库列表",
              "period: 时间范围",
              "quality_score: 总体质量评分（五星）",
              "pr_count: PR 总数",
              "issue_count: 问题总数",
              "coverage: 审查覆盖率"
            ],
            "style": "${config.card.style || macbook-pro}",
            "dimensions": {
              "width": 1200,
              "height": 630
            }
          },
          "detail": {
            "title": "审查详情 — ${period}",
            "elements": [
              "pr_distribution: 各仓库 PR 数量柱状图",
              "issue_type_pie: 问题类型分布饼图",
              "top_issues: Top 5 高置信度问题列表",
              "per_repo_summary: 各仓库审查摘要表格"
            ],
            "style": "${config.card.style || macbook-pro}",
            "dimensions": {
              "width": 1200,
              "height": 1800
            }
          }
        }
      },
      {
        "step": 4,
        "skill": "feishu-wiki",
        "action": "create_digest_page",
        "description": "在飞书知识空间创建或更新 Wiki 页面，发布完整审查报告",
        "inputs": {
          "space_id": "${config.feishu.wiki_space_id}",
          "parent_node": "${config.feishu.wiki_parent_node || null}",
          "title": "代码审查${args.period == 'weekly' ? '周报' : '日报'} ${date_range}",
          "review_data": "/tmp/digest_reviews.json",
          "stats": "/tmp/digest_stats.json",
          "cover_image": "/tmp/digest_cover.png",
          "detail_image": "/tmp/digest_detail.png"
        },
        "outputs": {
          "wiki_url": "飞书 Wiki 页面链接",
          "wiki_node_token": "Wiki 节点 Token"
        },
        "page_content_template": {
          "format": "markdown",
          "sections": [
            {
              "type": "header",
              "level": 1,
              "text": "GitHub 代码审查${args.period == 'weekly' ? '周报' : '日报'}"
            },
            {
              "type": "table",
              "header": ["指标", "数值"],
              "rows": [
                ["仓库数量", "${stats.total_repos}"],
                ["PR 总数", "${stats.total_prs}"],
                ["问题总数", "${stats.total_issues}"],
                ["高置信度问题（≥90%）", "${stats.critical_issues}"],
                ["需修改 PR", "${stats.needs_changes_prs}"],
                ["审查覆盖率", "${stats.coverage}%"],
                ["时间范围", "${date_range}"]
              ]
            },
            {
              "type": "image",
              "label": "审查汇总卡片",
              "src": "file:///tmp/digest_cover.png"
            },
            {
              "type": "header",
              "level": 2,
              "text": "各仓库审查详情"
            },
            {
              "type": "loop",
              "over": "reviews",
              "item_var": "pr",
              "template": {
                "type": "callout",
                "variant": "warning",
                "title": "PR #${pr.number}: ${pr.title}",
                "body": "作者: ${pr.author} | 变更: ${pr.changed_files} 文件 | +${pr.additions}/-${pr.deletions}\n问题数: ${pr.issues.length} | 状态: ${pr.issues.length > 0 ? '⚠️ 需要修改' : '✅ 可合并'}"
              }
            },
            {
              "type": "header",
              "level": 2,
              "text": "高置信度问题（Top 5）"
            },
            {
              "type": "list",
              "items": "${top_issues}",
              "format": "- **[${issue.file}:${issue.line}]** ${issue.description} (置信度 ${issue.confidence}%)\n  建议: ${issue.suggestion}"
            },
            {
              "type": "image",
              "label": "详情卡片",
              "src": "file:///tmp/digest_detail.png"
            },
            {
              "type": "footer",
              "text": "由 GitHub Smart Code Digest 自动生成 | ${generated_at}"
            }
          ]
        }
      }
    ],
    "error_handling": {
      "step_1": {
        "on_no_prs": "warn_and_continue",
        "on_auth_failure": "fail_with_instructions",
        "on_repo_not_found": "skip_and_log"
      },
      "step_2": {
        "on_large_pr": "auto_split_review",
        "on_review_timeout": "retry_once_then_skip",
        "on_all_agents_agree_no_issues": "report_no_issues"
      },
      "step_3": {
        "on_render_failure": "fallback_to_text_report",
        "on_style_unavailable": "use_default_style"
      },
      "step_4": {
        "on_wiki_auth_failure": "fail_with_instructions",
        "on_space_not_found": "fail_with_error"
      }
    }
  },
  "data_flow": {
    "artifacts": [
      {
        "path": "/tmp/digest_prs.json",
        "produced_by": "step_1",
        "consumed_by": ["step_2"],
        "description": "GitHub PR 列表原始数据"
      },
      {
        "path": "/tmp/digest_commits.json",
        "produced_by": "step_1",
        "consumed_by": ["step_3"],
        "description": "Commit 汇总数据"
      },
      {
        "path": "/tmp/pr_${pr_number}.diff",
        "produced_by": "step_1",
        "consumed_by": ["step_2"],
        "description": "每个 PR 的文件变更 diff"
      },
      {
        "path": "/tmp/digest_reviews.json",
        "produced_by": "step_2",
        "consumed_by": ["step_3", "step_4"],
        "description": "AI 代码审查结果"
      },
      {
        "path": "/tmp/digest_stats.json",
        "produced_by": "step_2",
        "consumed_by": ["step_3", "step_4"],
        "description": "审查汇总统计"
      },
      {
        "path": "/tmp/digest_cover.png",
        "produced_by": "step_3",
        "consumed_by": ["step_4"],
        "description": "审查封面卡片"
      },
      {
        "path": "/tmp/digest_detail.png",
        "produced_by": "step_3",
        "consumed_by": ["step_4"],
        "description": "审查详情卡片"
      }
    ]
  },
  "execution_modes": {
    "manual": {
      "description": "手动触发，针对指定仓库生成单次报告",
      "required_args": ["repo"],
      "optional_args": ["since", "until", "feishu_space_id", "period"]
    },
    "cron_daily": {
      "description": "每天定时生成日报",
      "schedule": "0 9 * * *",
      "default_period": "daily",
      "configurable_args": ["repos", "feishu_space_id"]
    },
    "cron_weekly": {
      "description": "每周定时生成周报",
      "schedule": "0 9 * * 1",
      "default_period": "weekly",
      "configurable_args": ["repos", "feishu_space_id"]
    }
  },
  "skill_interfaces": {
    "github": {
      "tools_used": ["gh pr list", "gh pr diff", "gh api repos/*/commits"],
      "required_env": ["GH_TOKEN (via gh auth)"]
    },
    "code-review-skill": {
      "agents_used": ["5 parallel agents (one per dimension)", "1 haiku for scoring"],
      "output_format": "structured JSON with confidence scores"
    },
    "card-renderer": {
      "styles": ["macbook-pro", "cyberpunk", "bauhaus"],
      "output_format": "PNG 1200x630 (cover), PNG 1200x1800 (detail)"
    },
    "feishu-wiki": {
      "api_used": ["feishu_wiki create_node", "feishu_doc write/append"],
      "required_env": ["FEISHU_APP_ID", "FEISHU_APP_SECRET"]
    }
  }
}


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)