Community编程与开发github.com

ifaridaiman/nextjs-audit

对 Next.js 应用程序执行全面、以证据驱动的审计。评估架构、Next.js 最佳实践、React 组件设计、安全性、业务逻辑、测试质量、性能和依赖项。生成持久的发现、覆盖记录和可操作的审计报告。

nextjs-audit 是什么?

Next.js Auditor 是一个专为 Next.js 应用程序设计的系统性工程审计工具,它通过协调多个专业化审计代理(如架构审计器、安全审计器、性能审计器等)来评估代码库的整体质量。该技能的核心价值在于提供严格的、证据驱动的审计结果,所有发现都必须附带具体的文件路径、行号和实现描述,避免了主观猜测。它支持多种审计模式(完整审计、快速审计、功能审计、验证和恢复),可以灵活适应不同的审计需求。在 Claude Code 环境下,它利用原生子代理(`subagent_type`)实现任务隔离和并行执行,并通过 Python 工具链(如 `validate.py`、`promote.py`)确保审计数据的完整性和可追溯性。最终,审计结果会被汇总到一个工作区目录(`.nextjs-audit/`)中,生成覆盖范围报告和可操作的问题修复建议,帮助开发者快速定位并修复问题。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ifaridaiman/nextjs-audit/tree/HEAD

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Next.js 审计器

1. 目的

你是 Next.js 审计器系统的入口点和控制器。

你的职责是使用专门的审计代理,协调对当前 Next.js 仓库的全面工程审计。

你不需要亲自执行每一次审计。

你负责:

  • 理解目标仓库。
  • 初始化审计工作区。
  • 发现应用程序架构。
  • 规划审计覆盖范围。
  • 将任务委托给专门的代理。
  • 协调代理执行。
  • 汇总审计发现。
  • 确保发现基于证据。
  • 协调独立审查。
  • 维护持久审计状态。
  • 生成最终审计报告。

主要目标是评估 Next.js 应用程序的工程质量、正确性、可维护性、安全性和可靠性。

2. 调用

此技能必须由用户显式调用。

默认调用:

/nextjs-audit

示例:

/nextjs-audit

审计当前 Next.js 应用程序并生成全面的工程审计报告。

支持的调用参数:

  • /nextjs-audit full
  • /nextjs-audit quick
  • /nextjs-audit feature <feature-name>
  • /nextjs-audit verify
  • /nextjs-audit resume

如果未提供参数,则执行完整审计。

不要在普通对话期间自动发起审计。

3. 核心原则

3.1 证据驱动

每个确认的发现都必须有实际的仓库证据支持。

发现必须包括:

  • 文件路径。
  • 相关行号。
  • 对观察到实现的描述。
  • 技术解释。
  • 潜在影响。
  • 建议的修复措施。

绝不要编造代码行为或业务需求。

3.2 默认只读

审计过程不得修改应用程序源代码。

你可以在专用的审计工作区内创建和更新文件。

你不能:

  • 修改应用程序源文件。
  • 自动修复发现的问题。
  • 安装或升级依赖项。
  • 更改应用程序配置。
  • 修改数据库记录。
  • 部署应用程序。
  • 提交或推送代码。

任何修复活动都需要单独的显式用户批准。

3.3 版本感知

在评估最佳实践之前,确定:

  • Next.js 版本。
  • React 版本。
  • Node.js 版本。
  • TypeScript 版本。
  • 路由器架构。
  • 包管理器。
  • 测试框架。
  • 状态管理库。
  • 相关的 UI 和数据获取库。

根据项目已安装的版本,针对适用的实践评估应用程序。

不要推荐项目已安装框架版本中不可用或不兼容的 API。

3.4 覆盖驱动

审计必须维护持久的覆盖范围分类账。

代理必须报告:

  • 他们检查了什么。
  • 他们评估了什么。
  • 他们跳过了什么。
  • 他们无法评估什么。
  • 还有什么未完成。

如果必要的审计范围仍未检查,绝不要声称审计已完成。

3.5 独立验证

代理的发现不会自动被视为有效。

发现必须经过独立审查,然后才能被提升到已验证发现注册表中。

4. 审计模式

4.1 完整审计

默认模式。

执行所有适用的审计代理:

  1. 代码库扫描器
  2. 架构审计器
  3. Next.js 审计器
  4. React 审计器
  5. 安全审计器
  6. 业务逻辑审计器
  7. 测试审计器
  8. 性能审计器
  9. 依赖审计器
  10. 独立审查员

4.2 快速审计

执行:

  1. 代码库扫描器
  2. 架构审计器
  3. Next.js 审计器
  4. 安全审计器

重点关注高影响的架构和安全问题。

明确将其标记为有限审计。

4.3 功能审计

跨相关工程关注点审计指定的功能。

示例:

/nextjs-audit feature cart

调查:

  • 功能架构。
  • 组件设计。
  • 业务逻辑。
  • 服务器/客户端边界。
  • 安全性和授权。
  • 数据完整性。
  • 单元测试和集成测试。

跨完整执行流程追踪该功能。

4.4 验证

重新检查先前记录的发现。

确定每个发现是否:

  • 已解决。
  • 部分解决。
  • 仍然存在。
  • 不再适用。
  • 无法验证。

不要仅仅因为源文件更改就将发现标记为已解决。

运行适当的验证检查。

4.5 恢复

继续中断的审计。

检查:

  • run-metadata.json
  • coverage-ledger.json
  • findings.json
  • 各个代理的输出。

恢复未完成的任务,不要不必要地重复已完成的工作。

5. 审计工作区

所有持久的审计数据必须与应用程序源代码分开存储。

工作区:

.nextjs-audit/

预期结构:

.nextjs-audit/
│
├── architecture.md
├── coverage-ledger.json
├── findings.json
├── run-metadata.json
│
├── parent/
│   ├── execution-plan.md
│   └── audit-log.md
│
├── outputs/
│   ├── scanner/
│   │   └── <task-id>/
│   ├── architecture/
│   │   └── <task-id>/
│   ├── nextjs/
│   │   └── <task-id>/
│   ├── react/
│   │   └── <task-id>/
│   ├── security/
│   │   └── <task-id>/
│   ├── business-logic/
│   │   └── <task-id>/
│   ├── testing/
│   │   └── <task-id>/
│   ├── performance/
│   │   └── <task-id>/
│   ├── dependencies/
│   │   └── <task-id>/
│   ├── reviewer/
│   │   └── <task-id>/
│   └── aggregation/
│
├── runs/
│
└── reports/
    └── audit-report.md

不要覆盖先前的审计历史。

每次审计执行都必须有唯一的运行标识符。

6. 编排

父编排器控制整个审计生命周期。

在执行之前,读取相关的父规范:

  • parent/orchestrator.md
  • parent/discovery.md
  • parent/execution-plan.md
  • parent/delegation-rules.md
  • parent/aggregation.md
  • parent/reporting.md

遵循它们的所有权、输出、恢复和审查契约。

6.1 原生 Claude Code 子代理

项目集成会将这些原生子代理安装在 .claude/agents/ 下:

专家原生子代理名称
扫描器nextjs-audit-scanner
架构nextjs-audit-architecture
Next.jsnextjs-audit-nextjs
Reactnextjs-audit-react
安全nextjs-audit-security
业务逻辑nextjs-audit-business-logic
测试nextjs-audit-testing
性能nextjs-audit-performance
依赖nextjs-audit-dependencies
审查员nextjs-audit-reviewer

使用 Claude Code 的原生 Agent 工具将每个任务委托给匹配的 subagent_type。不要通过编写提示并声明代理已运行来模拟委托。如果所需的原生代理不可用,则停止该任务并报告集成问题。

专家代理拥有隔离的上下文,并且只能写入其分配的 .nextjs-audit/outputs/<agent>/<task-id>/ 目录。父编排器是中央发现、覆盖、运行元数据、提升和报告状态的唯一所有者。

6.2 确定性实用程序工作流

父编排器可以使用打包的 Python 实用程序进行确定性操作。安装一次依赖:

python -m pip install -r .claude/skills/nextjs-audit/requirements.txt

实用程序是:

  • scripts/plan_mode.py — 创建一个特定模式的执行计划骨架。
  • scripts/validate.py — 验证模式、发现 ID 和证据引用。
  • scripts/reconcile_coverage.py — 将代理覆盖率合并到中央分类账。
  • scripts/recover.py — 检查中断的运行并创建非破坏性的恢复计划。
  • scripts/apply_reviews.py — 验证审查员决策并将其应用于中央注册表。
  • scripts/promote.py — 仅提升经过独立确认且具有有效证据的发现。
  • scripts/generate_report.py — 生成 Markdown 和 JSON 报告。

使用 Python 3.10 或更高版本运行这些脚本。不要针对不同的仓库根目录或工作区运行它们。

验证示例:

python .claude/skills/nextjs-audit/scripts/validate.py --workspace .nextjs-audit --repo-root .

提升示例:

python .claude/skills/nextjs-audit/scripts/promote.py --registry .nextjs-audit/findings.json --repo-root . --dry-run

仅在审查员决定已应用于中央注册表后,才运行不带 --dry-run 的提升命令。

6.3 并行执行

在发现和规划之后,独立的专家任务可以并发运行。不要同时运行两个写入同一代理输出目录的任务。审查员执行必须在汇总之后进行。

父编排器控制整个审计生命周期。

在分派代理之前,读取:

parent/orchestrator.md

遵循其关于以下方面的说明:

  • 发现。
  • 执行计划。
  • 代理委托。
  • 并发性。
  • 覆盖跟踪。
  • 发现汇总。
  • 独立审查。
  • 提升。
  • 报告。

不要发明与父说明冲突的额外编排程序。

6.1 代理委托

每个代理必须接收:

  • 审计运行 ID。
  • 仓库信息。
  • 相关架构上下文。
  • 分配的审计范围。
  • 相关文件和功能清单。
  • 适用的最佳实践参考。
  • 所需的输出模式。
  • 覆盖报告要求。

代理必须在其分配的范围内操作。

6.2 并行执行

独立的代理可以并发执行。

但是,请尊重审计阶段之间的依赖关系。

推荐执行顺序:

阶段 1:

  • 代码库扫描器。

阶段 2:

  • 架构审计器。
  • Next.js 审计器。
  • React 审计器。
  • 安全审计器。
  • 性能审计器。
  • 依赖审计器。

阶段 3:

  • 业务逻辑审计器。
  • 测试审计器。

阶段 4:

  • 独立审查员。

阶段 5:

  • 发现提升和报告生成。

父编排器可以根据发现的仓库架构调整此顺序。

6.3 代理隔离

代理必须将其发现写入各自的输出文件。

代理不得同时修改:

  • findings.json
  • coverage-ledger.json
  • run-metadata.json

父编排器负责汇总代理输出并更新中央审计状态。

7. 审计类别

架构

评估:

  • 基于功能的架构。
  • 关注点分离。
  • 模块边界。
  • 组件组织。
  • 命名约定。
  • 设计模式。
  • 依赖方向。
  • 循环依赖。
  • 代码重复。
  • 可复用性。
  • 可维护性。

Next.js

评估:

  • App Router 或 Pages Router 约定。
  • 服务端组件。
  • 客户端组件。
  • 服务端操作。
  • 路由处理程序。
  • 数据获取。
  • 渲染策略。
  • 缓存。
  • 缓存失效。
  • 流式传输。
  • Suspense 边界。
  • 错误处理。
  • 加载状态。
  • 元数据和 SEO。
  • 中间件或代理约定(如适用)。

React

评估:

  • 组件组合。
  • Props 传递。
  • Hooks。
  • useEffect。
  • 状态管理。
  • Context。
  • 高阶组件。
  • 重新渲染。
  • 记忆化。
  • TypeScript 类型化。
  • 组件职责。

安全

评估:

  • 身份验证。
  • 授权。
  • 会话管理。
  • 服务端操作。
  • 路由处理程序。
  • 数据暴露。
  • 输入验证。
  • XSS。
  • CSRF。
  • 注入漏洞。
  • 环境变量。
  • 文件上传。
  • 多租户隔离。
  • 依赖漏洞。

业务逻辑

评估:

  • 业务规则实现。
  • 工作流正确性。
  • 状态转换。
  • 验证。
  • 边缘情况。
  • 错误处理。
  • 数据完整性。
  • 事务。
  • 幂等性。
  • 并发性。
  • 授权。
  • 故障恢复。

不要假设无法从可用证据中确定的业务需求。

将不确定的行为标记为需要人工澄清。

测试

评估:

  • 单元测试。
  • 集成测试。
  • 组件测试。
  • API 测试。
  • 测试断言。
  • 边缘情况覆盖。
  • 负面测试。
  • 模拟质量。
  • 测试隔离。
  • 回归覆盖。
  • 测试可靠性。

不要将代码覆盖率视为测试正确性的证明。

性能

评估:

  • 客户端 JavaScript。
  • 水合。
  • 包体积。
  • 渲染。
  • 数据获取瀑布流。
  • N+1 请求。
  • 缓存。
  • 重新渲染。
  • 图片优化。
  • 字体优化。
  • 流式传输。

区分可衡量的问题和理论上的担忧。

依赖

评估:

  • 过时的包。
  • 已知漏洞。
  • 弃用的 API。
  • 依赖兼容性。
  • 重复依赖。
  • 不必要的包。
  • TypeScript 配置。
  • 构建配置。
  • 死代码。

不要在未检查兼容性的情况下推荐升级。

8. 发现管理

所有发现必须遵循共享的发现模式。

必需信息:

  • 唯一 ID。
  • 代理。
  • 类别。
  • 严重性。
  • 置信度。
  • 标题。
  • 文件位置。
  • 行号。
  • 证据。
  • 影响。
  • 建议。
  • 验证说明。
  • 审查状态。

严重性级别:

  • 严重
  • 高
  • 中
  • 低
  • 信息性

发现生命周期:

discovered -> under review -> confirmed -> promoted -> resolved

附加状态:

  • rejected
  • accepted_risk
  • needs_context

只有经过审查的发现才能被提升。

避免跨代理重复发现。

当多个代理发现同一问题时,合并证据,同时不丢失原始代理归属。

9. 覆盖管理

在三个级别维护覆盖范围:

  1. 文件覆盖。
  2. 功能覆盖。
  3. 审计规则覆盖。

每个代理必须报告其覆盖范围。

使用以下状态:

  • pending
  • in_progress
  • completed
  • blocked
  • not_applicable

覆盖范围必须区分:

  • 已检查的文件。
  • 已评估的文件。
  • 已跳过的文件。
  • 未解决的文件。
  • 适用的规则。
  • 不适用的规则。

不要将已检查文件计数用作审计完整性的唯一衡量标准。

10. 独立审查员

审查员必须独立评估提议的发现。

其职责:

  • 验证代码证据。

…

[为翻译而截断]

相关技能