禁止事项与合规红线
本页系统梳理 ark-ui 技能中所有"绝对不允许"的行为约束:版权与素材红线、证据与溯源红线、视觉模仿红线、深度轴滥用红线、可用性红线,以及由 scripts/audit-ark-ui.mjs 自动强制执行的机器可检红线。这些条款是工作流的最后闸门——任何交付物在进入 Validate 阶段前都必须逐条对照。
Purpose and Scope
本页覆盖以下内容:
SKILL.md中 Avoid 章节的全部 8 条禁止事项,以及散落在 Implement / Iterate / Validate 章节中的硬性红线(如禁止假遥测、禁止从猜测状态优化)。references/legal.md定义的素材溯源与复用政策(A–D 四类素材分级、必须行为、实用决策树)。scripts/audit-ark-ui.mjs将红线转化为机器可检规则的方式:哪些是error级(导致process.exit(1)失败),哪些是warning级。references/depth-levels.md、references/design-language.md、references/family-depth-matrix.md中的深度/设计红线补充条款。references/source-ledger.md规定的研究边界(不访问私有端点、源码映射、凭证)。
以下主题有意留给兄弟页面,本页仅作交叉引用:
- 四级深度评级体系本身的定义与评分卡 —— 见深度等级(depth rubric)页。
- 证据锁定迭代循环的完整步骤 —— 见迭代与证据锁定页。
- 各产品家族的配色与视觉语法 —— 见设计语言与家族页。
- 官方证据的采集与记录方法 —— 见源码台账(source ledger)页。
Overview
ark-ui 技能的核心方法论是"基于证据的家族相似性"(evidence-based family resemblance)而非复制官方资产。为了把这条方法论变成可执行的纪律,技能将禁止事项分为两个层次:
- 人工红线(policy red lines):写在
SKILL.md与references/legal.md中,需要设计/实现者在动手前自行对照。它们大多与版权、溯源、诚实性有关,机器难以判断。 - 机器红线(automated red lines):固化在
scripts/audit-ark-ui.mjs的正则检查中,以error/warning两级严重度输出 JSON 报告;任何error都会让进程以非零码退出,从而阻断交付。
设计意图非常明确:"家族相似"不等于"抄袭"。官方页面加载的 CSS/JS/图片/字体虽然是公开可访问的,但"公开"不等于"开源"(见 references/legal.md A 类)。因此整个技能的产出必须来自干净的原创实现(D 类 clean-room code),官方资产只能作为"证据指针"记录在台账里用于分析,绝不能打包进交付物。
红线还承担第二个职责:防止深度轴被滥用为装饰许可。SKILL.md 明确指出深度衡量的是"实现覆盖度与编排度",提高深度"绝不许可假遥测、重复文案、额外颜色、更小的必要文字或更弱的无障碍"。
Architecture
红线规则在技能中的分布与强制路径如下:
层次解读:
- 人工红线层:
Avoid章节是使用者必须背诵的 8 条;legal.md的四类分级决定"能不能用某个素材";深度/设计文档中的红线防止在调深或精简时越界。 - 证据边界层:
source-ledger.md只记录 URL、SHA-256 与字节大小("evidence pointers, not bundled dependencies"),analyze-css-evidence.py只对公开 CSS 做提取分析。 - 机器红线层:
audit-ark-ui.mjs是唯一可自动阻断交付的关卡,其 error 级规则(官方 CDN 资产、品牌 logo、prefers-reduced-motion、响应式、:focus-visible、viewport、lang、地标、ID 引用)直接映射了 Avoid 与可用性红线中最可正则化的部分。
红线总览表
下表汇总全部红线条款及其来源与强制方式:
| 类别 | 红线 | 来源 | 强制方式 |
|---|---|---|---|
| 版权/素材 | 禁止复制受保护 logo、角色立绘、key art、UI 截图、CDN 资产 | SKILL.md Avoid | 人工 + 审计 error 级正则 |
| 版权/素材 | 禁止再分发生产构建包或授权不明的官方字体 | SKILL.md Avoid / legal.md | 人工 + 审计 error 级正则 |
| 诚实性 | 禁止声称重建代码是 Hypergryph 源码 | SKILL.md Avoid / legal.md | 人工 |
| 诚实性 | 禁止编造协议名、系统代码、通道标签、负载仪表、装饰性遥测 | SKILL.md Iterate 第 2 条 | 人工 |
| 诚实性 | 禁止从猜测或过期状态做优化 | SKILL.md Iterate 第 6 条 | 人工 |
| 视觉模仿 | 禁止无信息角色的随机六边形、终端噪声、扫描线、glitch、霓虹渐变、密集 HUD 装饰 | SKILL.md Avoid | 审计 warning(陈词滥调命名) |
| 视觉模仿 | 禁止把 cyan / signal yellow / aqua / magenta / orange / lime 混在同一界面 | SKILL.md Avoid / Implement | 人工 + 审计字面颜色计数 |
| 可用性 | 禁止把主内容藏在启动屏、自动播放音频、仅悬停可达的控件之后 | SKILL.md Avoid | 人工 |
| 深度滥用 | 禁止把 maximal 当作随机 HUD 噪声、假系统码、永动、处处装饰的许可 | SKILL.md Avoid | 人工 |
| 深度滥用 | 禁止靠删除标签/状态/焦点线索/前置条件/必要说明来达成 minimal | SKILL.md Avoid / depth-levels.md | 人工 |
| 深度滥用 | 禁止用缩小必要文字解决碰撞;禁止把必要信息藏到低于舒适阅读尺寸 | depth-levels.md / SKILL.md | 人工 |
| 无障碍 | 必须有 prefers-reduced-motion、:focus-visible、viewport meta、lang、语义地标 | SKILL.md Implement/Validate | 审计 error 级 |
| 溯源 | 禁止获取或暴露 auth token、cookie、私有 API、source map、非公开端点 | legal.md | 人工 |
| 溯源 | 直接观察与推断必须分开记录;社区仓库许可证不覆盖其内嵌游戏美术 | legal.md / source-ledger.md | 人工 |
核心红线逐条解析
1. 素材与版权红线(Avoid 前三条)
SKILL.md 的 Avoid 章节用最重的语气写了三条与受保护资产相关的禁令:
- Do not copy Hypergryph, Arknights, Endfield, Rhodes Island, Monster Siren, or other protected logos, character art, key art, UI screenshots, or CDN assets into deliverables unless the user has rights and explicitly supplies them.
- Do not redistribute production bundles or the proprietary/unclear-license fonts observed on official sites.
- Do not claim reconstructed code is Hypergryph source code.Source: SKILL.md
为什么这三条排最前:技能的产出会进入使用者的真实项目,一旦打包了官方 CDN 资产或生产字体,侵权责任直接落在交付物上。唯一的豁免条件是"用户拥有权利并明确提供"。配合 references/legal.md 的素材分级,判断路径是固定的:
### A. Official public production evidence
HTML, CSS, JavaScript, images, fonts, and media loaded by official Hypergryph sites are public to a browser but are not automatically open source. Use them to verify framework choice and derive high-level design facts. Do not bundle or redistribute them without a license or user-provided rights.Source: legal.md
source-ledger.md 把这个边界落实为"只记指纹、不打包文件"的台账结构——每个官方资产只记录 SHA-256、字节数与 URL,并明确声明 "These files are evidence pointers, not bundled dependencies."
2. 诚实性红线:禁止假遥测与假状态
这是整个技能最具特色的一组红线。SKILL.md 在 Iterate 循环里反复强调:
1Do not manufacture protocol names, system codes, channel labels, load
2meters, or decorative telemetry merely to make the banner feel technical.
3On transition and result screens, let the status dossier own current values
4and let the report own narrative outcome plus the next unlock. Never mirror
5the dossier's telemetry in the report merely to fill the available space.Source: SKILL.md
设计意图:技能的视觉语言(工业信息系统风格)天然诱导"看起来技术感很强"的装饰。红线要求所有仪表、代码、通道标签必须有真实信息角色。design-language.md 同样规定 "Use real information; never invent meaningless telemetry to fill space."
第二条诚实性红线禁止"从猜测或过期状态优化":
1If a representative state is difficult to reach, add a deterministic,
2non-persistent QA entry before judging screenshots. Non-persistent means the
3harness explicitly suppresses save writes and save deletion, not only that it
4creates an in-memory object.Source: SKILL.md
即截图评审必须基于真实可达状态;QA 入口必须显式抑制存档写入,且"不得改变生产计时(must not change production timing)"。
3. 视觉模仿红线:陈词滥调清单
- Do not add random hexagons, terminal noise, scanlines, glitch, neon gradients, or dense HUD decoration without an information role.
- Do not combine cyan, signal yellow, aqua, magenta, orange, and lime in one interface merely because they occur across different products.Source: SKILL.md
第二条针对的是"跨产品调色板平均化"这一常见错误:五个家族各自有一个强 accent(ark=cyan、endfield=signal yellow、exa=aqua、popucom=blue/yellow/orange、corporate=acid lime),把它们混在一起就同时破坏了所有家族的识别度。SKILL.md 在 Implement 中对应的正面规则是 "Keep one dominant accent. Treat secondary accents as state or product-family signals."
4. 深度轴滥用红线
- Do not interpret `maximal` as permission for random HUD noise, fake system codes, perpetual motion, or decoration on every component.
- Do not achieve `minimal` by deleting labels, states, focus cues, prerequisites, or necessary explanations.Source: SKILL.md
深度是双端的陷阱:调深容易被当成装饰许可,调浅容易被当成删信息许可。depth-levels.md 补充了两个关键不变量:
> Changing depth must not change semantic content or accessible names. Prefer CSS variables, root data attributes, and shared component variants over parallel duplicated page implementations.Source: depth-levels.md
> To move down one level, remove the least informative persistent layer first. Preserve navigation, state, primary actions, focus, labels, and content. Never simulate minimalism by hiding necessary information or shrinking it below comfortable reading size.Source: depth-levels.md
降级时的删除顺序是"先删信息量最低的持久层",且必须保留导航、状态、主动作、焦点、标签、内容;碰撞必须靠布局重构(如"Stretch the graph between header and footer")而不是缩小字号解决。
5. 可用性红线
Avoid 第 7 条与 Implement/Validate 联动,要求保留键盘可达性、可见焦点、可读对比度与语义控件。Validate 第 8 条还专门约束图标化:
8. Confirm every icon-only control is a familiar secondary action or has an
accessible name. Purchase, commit, destructive, and state-comparison actions
retain visible verbs and values even in compact layouts.Source: SKILL.md
配套地,Iterate 第 2 条要求"Copy reduction must not collapse decision UI into unlabeled icons"——文案精简永远不能把决策界面压成无标签图标。
机器可检红线:audit-ark-ui.mjs
审计脚本把上述人工红线中最可正则化的部分固化为 check() 调用。其严重度机制是:severity === 'error' ? errors : warnings,且 errors.length 非零时 process.exit(1)。error 级规则(8 条):
1check(!/web(?:-ipv6)?\.hycdn\.cn|hypergryph\.com\/(?:.*\.(?:png|jpe?g|svg|woff2?|ttf|eot|mp4))/i.test(all),
2 'No official CDN assets are embedded.',
3 'Official Hypergryph CDN assets appear to be embedded; verify rights and replace with original/user-owned assets.', 'error');
4check(!/(?:rhodes\s*island|arknights|endfield|monster\s*siren).{0,24}(?:logo|wordmark|copyright)/i.test(all),
5 'No obvious protected brand-logo reference is present.',
6 'A protected brand/logo reference may be present; confirm authorization.', 'error');
7check(/prefers-reduced-motion/.test(css),
8 'Reduced-motion behavior is defined.',
9 'Add a prefers-reduced-motion rule for loops, transitions, and reveal effects.', 'error');
10check(/@media[^{]*(?:max-width|orientation)/.test(css),
11 'Responsive or orientation-specific rules are present.',
12 'Add a portrait/mobile recomposition; do not rely on desktop scaling.', 'error');
13check(/:focus-visible/.test(css),
14 'Visible keyboard focus styling is present.',
15 'Add an explicit visible :focus-visible treatment.', 'error');Source: audit-ark-ui.mjs
前两条直接执行素材红线:任何 hycdn.cn(官方 CDN 域名)引用或官方站点上的图片/字体/视频 URL 都会被判 error;品牌名与 logo/wordmark/copyright 相邻出现同样判 error。第三到五条执行可用性红线:缺少 prefers-reduced-motion、纵向/窄屏重组(max-width 或 orientation 媒体查询)、:focus-visible 均直接失败。
warning 级规则同样映射红线条款。最直接的两条:
1check(!/(?:scanline|glitch|random-hex|matrix-rain)/i.test(all),
2 'No common sci-fi imitation cliché is named.',
3 'A generic scanline/glitch/matrix cliché appears; keep it only if it has a real information role.');
4check((all.match(/#[0-9a-fA-F]{3,8}\b/g) ?? []).length < 180,
5 'Literal color count is restrained.',
6 'Many literal colors were found; consolidate them into family and semantic tokens.');Source: audit-ark-ui.mjs
颜色计数阈值 < 180 是"禁止混用全家族调色板"的量化代理:五个家族的完整色板混在一起必然导致字面颜色爆炸,收敛到语义 token(审计还要求存在 --ark-(?:ink|paper|signal) 令牌)就能自然达标。
脚本还检查 DOM 布线的完整性,对应 Implement 中"重命名 starter 类名/ID/data 属性时必须同步更新所有 JS 选择器"的要求:querySelector(All) 的字面选择器若在 HTML 中找不到匹配(missingSelectors),或 ARIA/label 引用的 ID 不存在(missingIds),后者直接 error。
核心流程:红线如何参与交付判定
legal.md 的四步决策树("Practical source decision")是素材判定的唯一入口,审计则是机器闸门,两者通过后再进入 SKILL.md Validate 章节的 10 项人工清单。
Configuration Options
红线本身没有可配置项,但审计脚本提供运行参数:
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
process.argv[2](审计目标路径) | string | '.' | 待审计的 HTML/CSS 文件或目录 |
| 支持的扩展名集合 | Set | .html .css .js .mjs .jsx .ts .tsx .vue .svelte | 其余文件类型直接忽略 |
| 排除目录 | list | node_modules, .next, dist, build | 递归收集时跳过 |
| 字面颜色阈值 | number | 180 | 超过即 warning |
| 退出码 | number | errors 非零时为 1;无支持文件时为 2 | 可接入 CI |
调用方式(摘自 SKILL.md Validate 第 2 条):
node "$CODEX_HOME/skills/ark-ui/scripts/audit-ark-ui.mjs" <html-or-css-path>Source: SKILL.md
API Reference
check(condition, pass, fail, severity = 'warning')
审计脚本的唯一规则注册函数。
Parameters:
condition(boolean): 规则是否通过(正则/计数结果)。pass(string): 通过时写入passes数组的文案。fail(string): 失败时写入errors或warnings的文案。severity('error' | 'warning'): 默认'warning';'error'会令进程以 1 退出。
Returns: 无(副作用:修改模块级 passes / errors / warnings 数组)。
Source: audit-ark-ui.mjs
collect(path): Promise<string[]>
递归收集受支持的前端源文件。
Parameters:
path(string): 起始文件或目录的绝对路径。
Returns: Promise<string[]>:文件为空时对非支持扩展名返回 [];目录递归时排除 node_modules/.next/dist/build。
Source: audit-ark-ui.mjs
htmlHasSelector(selector): boolean
校验 JS 字面选择器在 HTML 中存在对应 id / class / 属性钩子。
Parameters:
selector(string):#id、.class或[attr]/[attr="value"]形式。
Returns: boolean;无法解析的选择器默认返回 true(宽松处理)。
Source: audit-ark-ui.mjs
Failure Modes, Edge Cases & Concurrency
- 误报(false positives):审计对品牌 logo 的正则
(?:rhodes\s*island|arknights|endfield|monster\s*siren).{0,24}(?:logo|wordmark|copyright)是启发式的——文档或注释中合法提及品牌名并紧跟 "logo" 一词也会触发 error。脚本自身承认其局限:错误文案用 "may be present; confirm authorization" 而非断言侵权。处理方式是人工复核后修正措辞或取得授权。 - 宽松回退:
htmlHasSelector遇到不认识的选择器形状时返回true,因此复杂选择器(如组合选择器)不会被检查;这保证了审计不会因解析能力不足而误杀合法代码,代价是覆盖不全。 - 纯 CSS 输入的边界:
!html || …形式的规则在只审计 CSS 文件时自动通过(无 HTML 可查),viewport/lang/地标等 HTML 规则失效——审计粒度取决于输入范围。 - 字体许可证盲区:审计能抓到
hypergryph.com与hycdn.cn上的字体 URL,但无法判断本地打包字体文件的许可证,这必须走legal.md的 "verify licenses before bundling any font file" 人工条款。 - 并发/CI 行为:脚本是纯读取的单次扫描(
Promise.all收集文件后一次性拼接文本),无写操作,可安全并行;非零退出码(1=有 error,2=无支持文件)可直接接入 CI 闸门。 - 研究侧红线:
source-ledger.md明确 "No source map, private endpoint, credential, or non-public repository was accessed.",并纠正了一个常见误归因——GitHub 上的HyperGryph用户是 University of Guelph 的 Hyperloop 团队,与上海鹰角网络无关,禁止将其仓库归到游戏公司名下。
Performance / Operational Notes
- 审计脚本一次性将所有文件文本拼成
all/html/css/js四个大字符串再跑正则,对大型项目是 O(总字符数) 的内存占用;排除目录列表缓解了依赖包带来的膨胀。 - 正则均为单遍扫描、无回溯爆炸风险模式(
.{0,24}有界量词),单次审计延迟主要来自文件 IO。 - 运维建议:将
audit-ark-ui.mjs挂在 CI 的 lint/build 之后、截图验证(capture-showcases.mjs)之前,让机器红线先于人工视觉评审失败,节省迭代成本。
Extension Points
- 新增机器红线:在
audit-ark-ui.mjs中追加check(条件, 通过文案, 失败文案, 严重度)即可,报告结构({ root, files, errors, warnings, passes })自动携带。 - 提升严重度:把既有
warning规则(如陈词滥调、颜色计数、选择器布线)的第四个参数改为'error'即可将其变成 CI 阻断项。 - 扩展证据分类:
legal.md的 A–D 分级是开放分类,新来源(如新社区仓库)按 "Practical source decision" 四步判定并回写source-ledger.md。 - 新红线条款:人工红线应同时落在
SKILL.mdAvoid 章节与对应的 reference 文档(如深度红线进depth-levels.md),保持单一权威出处可交叉引用。
Related Links
- 深度等级与评分卡(
minimal/moderate/complex/maximal红线上下文):references/depth-levels.md - 设计语言中的装饰与运动红线:references/design-language.md
- 家族×深度的内容红线:references/family-depth-matrix.md
- 证据台账与研究边界:references/source-ledger.md
- 溯源与复用政策全文:references/legal.md
- 机器红线实现:scripts/audit-ark-ui.mjs
- 技能入口与 Avoid/Validate 清单:SKILL.md