fix: harden unicode safety checks

This commit is contained in:
Affaan Mustafa
2026-03-29 08:59:06 -04:00
parent dd675d4258
commit 866d9ebb53
239 changed files with 3780 additions and 3962 deletions

View File

@@ -81,7 +81,7 @@ What would you like to know? (ask your question and I'll answer without losing t
```
ASIDE: [answer]
⚠️ Note: This answer suggests [issue] with the current approach. Want to address this before continuing, or proceed as planned?
WARNING: Note: This answer suggests [issue] with the current approach. Want to address this before continuing, or proceed as planned?
```
等待用户的决定后再恢复。
@@ -128,7 +128,7 @@ That's the short version. Want a deeper explanation after we finish [current tas
```
ASIDE: [answer]
📝 Worth fixing: [what should be changed]. I'll flag this after the current task unless you want to address it now.
Worth fixing: [what should be changed]. I'll flag this after the current task unless you want to address it now.
```
**问题含糊不清或过于笼统:**
@@ -159,7 +159,7 @@ No — the shared cache object in src/cache/store.ts:34 is mutated without locki
Under concurrent requests this is a race condition. It's low risk in a single-process
Node.js server but would be a real problem with worker threads or clustering.
⚠️ Note: This could affect the feature we're building. Want to address this now or continue and fix it in a follow-up?
WARNING: Note: This could affect the feature we're building. Want to address this now or continue and fix it in a follow-up?
```
***

View File

@@ -128,7 +128,7 @@ All tests passed.
| 已修改的文件 | 2 |
| 剩余问题 | 0 |
构建状态: 成功
构建状态:PASS: 成功
```
## 常见错误修复

View File

@@ -115,16 +115,16 @@ void processUser(const User& user) {
* 高1
* 中0
建议: 在严重问题修复前阻止合并
建议:FAIL: 在严重问题修复前阻止合并
```
## 批准标准
| 状态 | 条件 |
|--------|-----------|
| 批准 | 没有 CRITICAL 或 HIGH 级别的问题 |
| ⚠️ 警告 | 仅有 MEDIUM 级别的问题(谨慎合并) |
| 阻止 | 发现 CRITICAL 或 HIGH 级别的问题 |
| PASS: 批准 | 没有 CRITICAL 或 HIGH 级别的问题 |
| WARNING: 警告 | 仅有 MEDIUM 级别的问题(谨慎合并) |
| FAIL: 阻止 | 发现 CRITICAL 或 HIGH 级别的问题 |
## 与其他命令的集成

View File

@@ -184,7 +184,7 @@ Artifacts generated:
╔══════════════════════════════════════════════════════════════╗
║ E2E 测试结果 ║
╠══════════════════════════════════════════════════════════════╣
║ 状态: 所有测试通过 ║
║ 状态: PASS: 所有测试通过 ║
║ 总计: 3 项测试 ║
║ 通过: 3 (100%) ║
║ 失败: 0 ║
@@ -193,15 +193,15 @@ Artifacts generated:
╚══════════════════════════════════════════════════════════════╝
产物:
📸 截图: 2 个文件
📹 视频: 0 个文件(仅在失败时生成)
🔍 追踪文件: 0 个文件(仅在失败时生成)
📊 HTML 报告: playwright-report/index.html
截图: 2 个文件
视频: 0 个文件(仅在失败时生成)
追踪文件: 0 个文件(仅在失败时生成)
HTML 报告: playwright-report/index.html
查看报告: npx playwright show-report
```
E2E 测试套件已准备好进行 CI/CD 集成!
PASS: E2E 测试套件已准备好进行 CI/CD 集成!
````
## 测试产物
@@ -238,7 +238,7 @@ open artifacts/search-results.png
如果测试间歇性失败:
```
⚠️ FLAKY TEST DETECTED: tests/e2e/markets/trade.spec.ts
WARNING: FLAKY TEST DETECTED: tests/e2e/markets/trade.spec.ts
测试通过了 7/10 次运行 (70% 通过率)
@@ -258,10 +258,10 @@ open artifacts/search-results.png
默认情况下,测试在多个浏览器上运行:
* Chromium桌面版 Chrome
* Firefox桌面版
* WebKit桌面版 Safari
* 移动版 Chrome可选
* PASS: Chromium桌面版 Chrome
* PASS: Firefox桌面版
* PASS: WebKit桌面版 Safari
* PASS: 移动版 Chrome可选
在 `playwright.config.ts` 中配置以调整浏览器。
@@ -289,7 +289,7 @@ open artifacts/search-results.png
对于 PMX请优先考虑以下 E2E 测试:
**🔴 关键(必须始终通过):**
**关键(必须始终通过):**
1. 用户可以连接钱包
2. 用户可以浏览市场
@@ -299,7 +299,7 @@ open artifacts/search-results.png
6. 市场正确结算
7. 用户可以提取资金
**🟡 重要:**
**重要:**
1. 市场创建流程
2. 用户资料更新
@@ -312,21 +312,21 @@ open artifacts/search-results.png
**应该:**
* 使用页面对象模型以提高可维护性
* 使用 data-testid 属性作为选择器
* 等待 API 响应,而不是使用任意超时
* 测试关键用户旅程的端到端
* 在合并到主分支前运行测试
* 在测试失败时审查工件
* PASS: 使用页面对象模型以提高可维护性
* PASS: 使用 data-testid 属性作为选择器
* PASS: 等待 API 响应,而不是使用任意超时
* PASS: 测试关键用户旅程的端到端
* PASS: 在合并到主分支前运行测试
* PASS: 在测试失败时审查工件
**不应该:**
* 使用不稳定的选择器CSS 类可能会改变)
* 测试实现细节
* 针对生产环境运行测试
* 忽略不稳定测试
* 在失败时跳过工件审查
* 使用 E2E 测试每个边缘情况(使用单元测试)
* FAIL: 使用不稳定的选择器CSS 类可能会改变)
* FAIL: 测试实现细节
* FAIL: 针对生产环境运行测试
* FAIL: 忽略不稳定测试
* FAIL: 在失败时跳过工件审查
* FAIL: 使用 E2E 测试每个边缘情况(使用单元测试)
## 重要注意事项

View File

@@ -139,7 +139,7 @@ ok project/internal/handler 0.023s
| 已修改的文件 | 2 |
| 剩余问题 | 0 |
构建状态: 成功
构建状态:PASS: 成功
```
## 常见错误修复

View File

@@ -131,16 +131,16 @@ return fmt.Errorf("get user %s: %w", userID, err)
* 高1
* 中0
建议: 在严重问题修复前阻止合并
建议:FAIL: 在严重问题修复前阻止合并
```
## 批准标准
| 状态 | 条件 |
|--------|-----------|
| 批准 | 无 CRITICAL 或 HIGH 级别问题 |
| ⚠️ 警告 | 仅有 MEDIUM 级别问题 (谨慎合并) |
| 阻止 | 发现 CRITICAL 或 HIGH 级别问题 |
| PASS: 批准 | 无 CRITICAL 或 HIGH 级别问题 |
| WARNING: 警告 | 仅有 MEDIUM 级别问题 (谨慎合并) |
| FAIL: 阻止 | 发现 CRITICAL 或 HIGH 级别问题 |
## 与其他命令的集成

View File

@@ -44,7 +44,7 @@ python3 ~/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py import <
## 导入过程
```
📥 从 team-instincts.yaml 导入本能
从 team-instincts.yaml 导入本能
================================================
发现 12 个待导入的本能。
@@ -60,12 +60,12 @@ python3 ~/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py import <
## 重复本能 (3)
已存在类似本能:
⚠️ prefer-functional-style
WARNING: prefer-functional-style
本地: 0.8 置信度, 12 次观察
导入: 0.7 置信度
→ 保留本地 (置信度更高)
⚠️ test-first-workflow
WARNING: test-first-workflow
本地: 0.75 置信度
导入: 0.9 置信度
→ 更新为导入 (置信度更高)
@@ -105,10 +105,10 @@ project_name: "my-project"
导入后:
```
导入完成!
PASS: 导入完成!
新增8 项本能
更新1 项本能
新增8 项本能
更新1 项本能
跳过3 项本能(已存在同等或更高置信度的版本)
新本能已保存至:~/.claude/homunculus/instincts/inherited/

View File

@@ -132,7 +132,7 @@ $ ./gradlew test
| Files modified | 2 |
| Remaining issues | 0 |
Build Status: SUCCESS
Build Status: PASS: SUCCESS
````
## 常见的已修复错误

View File

@@ -84,7 +84,7 @@ Agent:
## Static Analysis Results
✓ Build: Successful
✓ detekt: No issues
ktlint: 2 formatting warnings
WARNING: ktlint: 2 formatting warnings
## Issues Found
@@ -120,16 +120,16 @@ launch {
- HIGH: 1
- MEDIUM: 0
Recommendation: Block merge until CRITICAL issue is fixed
Recommendation: FAIL: Block merge until CRITICAL issue is fixed
````
## 批准标准
| 状态 | 条件 |
|--------|-----------|
| 批准 | 无严重或高优先级问题 |
| ⚠️ 警告 | 仅存在中优先级问题(谨慎合并) |
| 阻止 | 发现严重或高优先级问题 |
| PASS: 批准 | 无严重或高优先级问题 |
| WARNING: 警告 | 仅存在中优先级问题(谨慎合并) |
| FAIL: 阻止 | 发现严重或高优先级问题 |
## 与其他命令的集成

View File

@@ -74,7 +74,7 @@ origin: auto-extracted
| **吸收到 \[X]** | 应追加到现有技能 | 显示目标技能和添加内容 → 步骤 6 |
| **放弃** | 琐碎、冗余或过于抽象 | 解释原因并停止 |
**指导维度**(用于告知裁决,不进行评分):
**指导维度**(用于告知裁决,不进行评分):
* **具体性和可操作性**:包含可立即使用的代码示例或命令
* **范围契合度**:名称、触发条件和内容保持一致,并专注于单一模式

View File

@@ -209,11 +209,11 @@ mcp__ace-tool__search_context({
3.**粗体文本** 输出提示(必须使用实际保存的文件路径):
***
***
**计划已生成并保存至 `.claude/plan/actual-feature-name.md`**
**计划已生成并保存至 `.claude/plan/actual-feature-name.md`**
**请审阅以上计划。您可以:**
**请审阅以上计划。您可以:**
* **修改计划**:告诉我需要调整的内容,我会更新计划
* **执行计划**:复制以下命令到新会话
@@ -222,9 +222,9 @@ mcp__ace-tool__search_context({
/ccg:execute .claude/plan/actual-feature-name.md
```
***
***
**注意**:上面的 `actual-feature-name.md` 必须替换为实际保存的文件名!
**注意**:上面的 `actual-feature-name.md` 必须替换为实际保存的文件名!
4. **立即终止当前响应**(在此停止。不再进行工具调用。)

View File

@@ -93,7 +93,7 @@ Agent:
## Static Analysis Results
✓ ruff: No issues
✓ mypy: No errors
⚠️ black: 2 files need reformatting
WARNING: black: 2 files need reformatting
✓ bandit: No security issues
## Issues Found
@@ -171,7 +171,7 @@ with open("config.json") as f: # Good
* 高1
* 中2
建议: 在关键问题修复前阻止合并
建议:FAIL: 在关键问题修复前阻止合并
## 所需的格式化
@@ -182,9 +182,9 @@ with open("config.json") as f: # Good
| 状态 | 条件 |
|--------|-----------|
| 批准 | 无 CRITICAL 或 HIGH 级别问题 |
| ⚠️ 警告 | 仅存在 MEDIUM 级别问题(谨慎合并) |
| 阻止 | 发现 CRITICAL 或 HIGH 级别问题 |
| PASS: 批准 | 无 CRITICAL 或 HIGH 级别问题 |
| WARNING: 警告 | 仅存在 MEDIUM 级别问题(谨慎合并) |
| FAIL: 阻止 | 发现 CRITICAL 或 HIGH 级别问题 |
## 与其他命令的集成

View File

@@ -72,7 +72,7 @@
已跳过: 2 个项目(测试失败)
已节省: ~450 行代码被移除
──────────────────────────────
所有测试通过
所有测试通过 PASS:
```
## 规则

View File

@@ -64,9 +64,9 @@ description: 从 ~/.claude/sessions/ 加载最新的会话文件,并从上次
[用你自己的话总结 2-3 句话]
当前状态:
已完成:[数量] 项已确认
🔄 进行中:[列出进行中的文件]
🗒️ 未开始:[列出计划但未开始的文件]
PASS: 已完成:[数量] 项已确认
进行中:[列出进行中的文件]
未开始:[列出计划但未开始的文件]
不应重试的内容:
[列出每个失败的方法及其原因——此部分至关重要]
@@ -98,10 +98,10 @@ description: 从 ~/.claude/sessions/ 加载最新的会话文件,并从上次
加载该日期最近修改的匹配文件无论其使用的是旧的无ID格式还是当前的短ID格式。
**会话文件引用了已不存在的文件:**
在简报中注明 — "⚠️ 会话中引用了 `path/to/file.ts`,但在磁盘上未找到。"
在简报中注明 — "WARNING: 会话中引用了 `path/to/file.ts`,但在磁盘上未找到。"
**会话文件来自超过7天前**
注明时间间隔 — "⚠️ 此会话来自 N 天前阈值7天。情况可能已发生变化。" — 然后正常继续。
注明时间间隔 — "WARNING: 此会话来自 N 天前阈值7天。情况可能已发生变化。" — 然后正常继续。
**用户直接提供了文件路径(例如,从队友处转发而来):**
读取它并遵循相同的简报流程 — 无论来源如何,格式都是相同的。
@@ -124,13 +124,13 @@ SESSION LOADED: /Users/you/.claude/sessions/2024-01-15-abc123de-session.tmp
注册和登录端点已部分完成。通过中间件进行路由保护尚未开始。
当前状态:
已完成3 项注册端点、JWT 生成、密码哈希)
🔄 进行中app/api/auth/login/route.ts令牌有效但 cookie 尚未设置)
🗒️ 未开始middleware.ts、app/login/page.tsx
PASS: 已完成3 项注册端点、JWT 生成、密码哈希)
进行中app/api/auth/login/route.ts令牌有效但 cookie 尚未设置)
未开始middleware.ts、app/login/page.tsx
需避免的事项:
Next-Auth — 与自定义 Prisma 适配器冲突,每次请求均抛出适配器错误
localStorage 存储 JWT — 导致 SSR 水合不匹配,与 Next.js 不兼容
FAIL: Next-Auth — 与自定义 Prisma 适配器冲突,每次请求均抛出适配器错误
FAIL: localStorage 存储 JWT — 导致 SSR 水合不匹配,与 Next.js 不兼容
待解决问题 / 阻碍:
- cookies().set() 在路由处理器中是否有效,还是仅适用于服务器操作?

View File

@@ -122,10 +122,10 @@ mkdir -p ~/.claude/sessions
| 文件 | 状态 | 备注 |
| ----------------- | -------------- | ---------------------------- |
| `path/to/file.ts` | 完成 | [其作用] |
| `path/to/file.ts` | 🔄 进行中 | [已完成什么,剩余什么] |
| `path/to/file.ts` | 损坏 | [问题所在] |
| `path/to/file.ts` | 🗒️ 未开始 | [计划但尚未接触] |
| `path/to/file.ts` | PASS: 完成 | [其作用] |
| `path/to/file.ts` | 进行中 | [已完成什么,剩余什么] |
| `path/to/file.ts` | FAIL: 损坏 | [问题所在] |
| `path/to/file.ts` | 未开始 | [计划但尚未接触] |
如果未修改任何文件:"本次会话未修改任何文件。"
@@ -213,11 +213,11 @@ mkdir -p ~/.claude/sessions
| 文件 | 状态 | 备注 |
| -------------------------------- | -------------- | ----------------------------------------------- |
| `app/api/auth/register/route.ts` | 已完成 | 工作正常,已测试 |
| `app/api/auth/login/route.ts` | 🔄 进行中 | 令牌已生成但尚未设置 cookie |
| `lib/auth.ts` | 已完成 | JWT 辅助函数,全部已测试 |
| `middleware.ts` | 🗒️ 未开始 | 路由保护,需要先实现 cookie 读取逻辑 |
| `app/login/page.tsx` | 🗒️ 未开始 | UI 尚未开始 |
| `app/api/auth/register/route.ts` | PASS: 已完成 | 工作正常,已测试 |
| `app/api/auth/login/route.ts` | 进行中 | 令牌已生成但尚未设置 cookie |
| `lib/auth.ts` | PASS: 已完成 | JWT 辅助函数,全部已测试 |
| `middleware.ts` | 未开始 | 路由保护,需要先实现 cookie 读取逻辑 |
| `app/login/page.tsx` | 未开始 | UI 尚未开始 |
---

View File

@@ -134,7 +134,7 @@ FAIL lib/liquidity.test.ts
1 test failed, 0 passed
```
测试按预期失败。准备实施。
PASS: 测试按预期失败。准备实施。
## 步骤 4实现最小化代码绿
@@ -180,7 +180,7 @@ PASS lib/liquidity.test.ts
3 tests passed
```
所有测试通过!
PASS: 所有测试通过!
## 步骤 6重构改进
@@ -237,7 +237,7 @@ PASS lib/liquidity.test.ts
3 tests passed
```
重构完成,测试仍然通过!
PASS: 重构完成,测试仍然通过!
## 步骤 8检查覆盖率
@@ -248,29 +248,29 @@ File | % Stmts | % Branch | % Funcs | % Lines
---------------|---------|----------|---------|--------
liquidity.ts | 100 | 100 | 100 | 100
Coverage: 100% (Target: 80%)
Coverage: 100% PASS: (Target: 80%)
```
TDD 会话完成!
PASS: TDD 会话完成!
```
## TDD 最佳实践
**应做:**
- 先写测试,再写实现
- 运行测试并确认失败,再实现功能
- 编写最少代码使测试通过
- 仅在测试通过后进行重构
- 添加边界情况和错误场景
- 目标覆盖率 80% 以上(关键代码 100%
- PASS: 先写测试,再写实现
- PASS: 运行测试并确认失败,再实现功能
- PASS: 编写最少代码使测试通过
- PASS: 仅在测试通过后进行重构
- PASS: 添加边界情况和错误场景
- PASS: 目标覆盖率 80% 以上(关键代码 100%
**不应做:**
- 先写实现再写测试
- 每次更改后跳过运行测试
- 一次性编写过多代码
- 忽略失败的测试
- 测试实现细节(应测试行为)
- 过度模拟(优先使用集成测试)
- FAIL: 先写实现再写测试
- FAIL: 每次更改后跳过运行测试
- FAIL: 一次性编写过多代码
- FAIL: 忽略失败的测试
- FAIL: 测试实现细节(应测试行为)
- FAIL: 过度模拟(优先使用集成测试)
## 应包含的测试类型

View File

@@ -57,7 +57,7 @@
src/services/auth.ts 45% 88%
src/utils/validation.ts 32% 82%
──────────────────────────────
总计: 67% 84%
总计: 67% 84% PASS:
```
## 重点关注领域