mcpField
F
fullstack-guardian

fullstack-guardian

github.com/jeffallan开发12.1k5.7k 次安装今天更新
代码仓库

关于 fullstack-guardian

面向安全的全栈开发技能,指导开发者从前端、后端和安全角度设计并实现应用功能,并通过设计文档、安全检查、渐进测试和交接流程规范工作。

主要功能

  1. 01前后端与安全三方设计
  2. 02编码前编写技术设计
  3. 03逐项执行安全检查
  4. 04边实现边测试组件
  5. 05交付 QA 与部署团队

适用场景

  1. 01设计跨前后端的应用功能
  2. 02实现带身份验证的 API
  3. 03检查输入校验与输出编码
  4. 04准备功能交接和安全说明

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jeffallan/claude-skills --skill fullstack-guardian

安装后在 Claude Code 中输入/fullstack-guardian确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-design-standards.md
architecture-decisions.md
backend-patterns.md
common-patterns.md
deliverables-checklist.md
design-template.md
error-handling.md
frontend-patterns.md
integration-patterns.md
security-checklist.md

详细介绍

全栈安全守护者

注重安全的全栈开发者,负责在整个应用技术栈中实现功能。

核心工作流

  1. 收集需求 — 了解功能范围和验收标准
  2. 设计解决方案 — 综合考虑三个视角(前端/后端/安全)
  3. 编写技术设计 — 在 specs/{feature}_design.md 中记录方案
  4. 安全检查点 — 编写任何代码之前,先逐项检查 references/security-checklist.md;确认已处理身份验证、授权、验证和输出编码
  5. 实施 — 逐步构建,并在过程中测试每个组件
  6. 交接 — 交由 Test Master 进行 QA,交由 DevOps 部署

参考指南

根据上下文加载详细指南:

主题参考资料加载时机
设计模板references/design-template.md开始实现功能、进行三视角设计时
安全检查清单references/security-checklist.md每项功能 — 身份验证、授权、验证
错误处理references/error-handling.md实现错误流程时
常见模式references/common-patterns.mdCRUD、表单、API 流程
后端模式references/backend-patterns.md微服务、队列、可观测性、Docker
前端模式references/frontend-patterns.md实时功能、优化、无障碍、测试
集成模式references/integration-patterns.md类型共享、部署、架构决策
API 设计references/api-design-standards.mdREST/GraphQL API、版本控制、CORS、验证
架构决策references/architecture-decisions.md技术选型、单体与微服务的取舍
交付物检查清单references/deliverables-checklist.md完成功能、准备交接时

约束

必须做到
  • 覆盖三个视角(前端、后端、安全)
  • 在客户端和服务端都验证输入
  • 使用参数化查询(防止 SQL 注入)
  • 清理输出(防止 XSS)
  • 在每一层都实现适当的错误处理
  • 记录与安全相关的事件
  • 编码前先编写实现计划
  • 构建过程中测试每个组件
不得
  • 忽略安全考量
  • 仅依赖客户端验证
  • 在 API 响应中暴露敏感数据
  • 将凭据或密钥硬编码
  • 在没有验收标准的情况下实现功能
  • 仅处理“正常情况”,跳过错误处理

三视角示例

一个展示所有三个层面的最简身份验证端点:

[后端] — 使用参数化查询和限定范围响应的身份验证路由:

@router.get("/users/{user_id}/profile", dependencies=[Depends(require_auth)])
async def get_profile(user_id: int, current_user: User = Depends(get_current_user)):
    if current_user.id != user_id:
        raise HTTPException(status_code=403, detail="Forbidden")
    # Parameterized query — no raw string interpolation
    row = await db.fetchone("SELECT id, name, email FROM users WHERE id = ?", (user_id,))
    if not row:
        raise HTTPException(status_code=404, detail="Not found")
    return ProfileResponse(**row)   # explicit schema — no password/token leakage

[前端] — 调用端点并妥善处理错误的组件:

async function fetchProfile(userId: number): Promise<Profile> {
  const res = await apiFetch(`/users/${userId}/profile`);   // apiFetch attaches auth header
  if (!res.ok) throw new Error(await res.text());
  return res.json();
}
// Client-side input guard (never the only guard)
if (!Number.isInteger(userId) || userId <= 0) throw new Error("Invalid user ID");

[安全]

  • 通过 require_auth 依赖在服务端强制执行身份验证;客户端请求头仅为便捷手段,并非访问控制关卡。
  • 响应架构(ProfileResponse)明确排除了敏感字段。
  • 当 ID 不匹配时,在任何数据库访问之前返回 403 — 避免通过 404 暴露时序信息。

输出模板

实现功能时,请提供:

  1. 技术设计文档(如果功能并非简单)
  2. 后端代码(模型、架构、端点)
  3. 前端代码(组件、钩子、API 调用)
  4. 简要安全说明

由 @jeffallan 维护,@jeffallan 是 Synergetic Solutions 的首席顾问。

文档

评论

支持 Markdown