skills-experimental/chess-best-move/SKILL.md
Guide for analyzing chess positions from images and determining optimal moves. This skill should be used when asked to find the best move, checkmate, or tactical solution from a chess board image. It provides structured approaches for image-based chess analysis, piece detection calibration, position validation, and move verification.
npx skillsauth add bianhaifeng789-hue/openclaw-config chess-best-moveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides guidance for analyzing chess positions from images and determining the best move. It covers image processing techniques for detecting pieces, validating detected positions, and verifying candidate moves using chess engines.
Before attempting any chess image analysis:
Before attempting piece detection, calibrate against the actual image:
Sample board square colors
Identify piece color signatures
Check for metadata
Apply structured detection with validation at each step:
Grid detection
Square-by-square analysis
Immediate validation checks
After detection, validate the position is legal:
def validate_position(board):
"""
Validate a detected chess position.
Returns (is_valid, errors) tuple.
"""
errors = []
# Count pieces
white_kings = count_pieces(board, 'K')
black_kings = count_pieces(board, 'k')
white_pieces = count_all_white(board)
black_pieces = count_all_black(board)
# Validation rules
if white_kings != 1:
errors.append(f"Invalid: {white_kings} white kings (must be 1)")
if black_kings != 1:
errors.append(f"Invalid: {black_kings} black kings (must be 1)")
if white_pieces > 16:
errors.append(f"Invalid: {white_pieces} white pieces (max 16)")
if black_pieces > 16:
errors.append(f"Invalid: {black_pieces} black pieces (max 16)")
if white_pieces + black_pieces > 32:
errors.append(f"Invalid: {white_pieces + black_pieces} total pieces (max 32)")
# Check pawn counts
white_pawns = count_pieces(board, 'P')
black_pawns = count_pieces(board, 'p')
if white_pawns > 8:
errors.append(f"Invalid: {white_pawns} white pawns (max 8)")
if black_pawns > 8:
errors.append(f"Invalid: {black_pawns} black pawns (max 8)")
return len(errors) == 0, errors
Once position is validated, analyze for best move:
Use a chess engine
Consider the task requirements
Verify the move
| Symptom | Likely Cause | Solution | |---------|--------------|----------| | Too many pieces detected (>32) | Detecting board squares as pieces | Recalibrate piece color thresholds | | All light squares detected as white pieces | Threshold too low | Sample actual piece colors, not square colors | | Inconsistent results across runs | Arbitrary threshold values | Use calibrated values from actual image | | Wrong piece types | Color confusion | Separate detection of color vs piece type |
Before submitting a solution, verify:
If position cannot be reliably detected:
references/chess_image_analysis.md - Detailed guide for chess image processing techniquesscripts/validate_position.py - Position validation utilitybusiness
IAA 日报飞书输出能力。 支持把固定 CSV 模板一键转换成: - 中文运营结论 - 飞书卡片 JSON - 飞书发送载荷 Use when: - 需要把 IAA 日报直接发到飞书 - 需要从 CSV 一键生成运营日报
data-ai
IAA日报分析模型 功能: - 渠道日报自动分析 - 小时级+日级ROI联动判断 - 按地区输出加量/降量/停投建议 - 按产品类型输出阈值 - 自动识别利润区/观察区/止损区 Use when: - 分析每天投放数据 - 生成运营日报结论 - 判断是否加量/降量/停投 - 对比美加澳/日韩表现 Keywords: - 日报模型, 投放日报, 加量, 降量, 停投, ROI日报, 分地区分析
data-ai
IAA固定日报分析模板 功能: - 固定字段模板(可直接贴每天数据) - 自动输出总盘结论 - 自动输出美加澳/日韩结论 - 自动给出加量/降量/停投建议 - 适配文件修复/清理两类产品 Use when: - 需要固定日报格式 - 每天复盘渠道表现 - 给运营团队出统一结论 Keywords: - 固定模板, 日报模板, ROI模板, IAA日报, 运营模板
development
# HyperlinkPool Pattern Skill HyperlinkPool Pattern - HyperlinkPool class + strings array + stringMap + Index 0 no hyperlink + intern(hyperlink) + get(id) + undefined handling + 5-minute reset + OSC8 hyperlink interning。 ## 功能概述 从Claude Code的ink/screen.ts提取的HyperlinkPool模式,用于OpenClaw的OSC8超链接池管理。 ## 核心机制 ### HyperlinkPool Class ```typescript export class HyperlinkPool { private strings: string[] = [''] // Index 0 = no hyperlink private stringMap = new Map<string, number>() // strings