skills-experimental/hash-utils/SKILL.md
# Hash Utils Skill **优先级**: P29 **来源**: Claude Code `hash.ts` **适用场景**: 内容hash、缓存key生成 --- ## 概述 Hash Utils提供快速非加密hash函数。djb2 hash用于缓存key,hashContent用于内容变化检测。支持Bun.hash(快)和SHA-256(兼容)。 --- ## 核心功能 ### 1. djb2 Hash ```typescript /** * djb2 string hash — fast non-cryptographic hash * 返回signed 32-bit int */ export function djb2Hash(str: string): number { let hash = 0 for (let i = 0; i < str.length; i++) { hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0 } return hash } ```
npx skillsauth add bianhaifeng789-hue/openclaw-config skills-experimental/hash-utilsInstall 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.
优先级: P29
来源: Claude Code hash.ts
适用场景: 内容hash、缓存key生成
Hash Utils提供快速非加密hash函数。djb2 hash用于缓存key,hashContent用于内容变化检测。支持Bun.hash(快)和SHA-256(兼容)。
/**
* djb2 string hash — fast non-cryptographic hash
* 返回signed 32-bit int
*/
export function djb2Hash(str: string): number {
let hash = 0
for (let i = 0; i < str.length; i++) {
hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0
}
return hash
}
/**
* Hash arbitrary content for change detection
* Bun.hash ~100x faster than sha256
*/
export function hashContent(content: string): string {
if (typeof Bun !== 'undefined') {
return Bun.hash(content).toString()
}
const crypto = require('crypto')
return crypto.createHash('sha256').update(content).digest('hex')
}
/**
* Hash two strings without concatenating
* Bun: seed-chain wyhash
* Node: incremental SHA-256 update
*/
export function hashPair(a: string, b: string): string {
if (typeof Bun !== 'undefined') {
return Bun.hash(b, Bun.hash(a)).toString()
}
return crypto.createHash('sha256')
.update(a)
.update('\0')
.update(b)
.digest('hex')
}
// 飞书消息缓存key
const cacheKey = djb2Hash(messageId).toString(16)
// 文件内容变化检测
const contentHash = hashContent(fileContent)
if (contentHash !== cachedHash) {
// 内容变化,重新处理
}
// 会话ID生成
const sessionId = hashPair(userId, timestamp).slice(0, 16)
{
"skill": "hash-utils",
"priority": "P29",
"source": "hash.ts",
"enabled": true,
"hashTypes": ["djb2", "content", "pair"],
"hashesGenerated": 0,
"createdAt": "2026-04-12T13:00:00Z"
}
hash.tsbusiness
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