Token导航 LogoToken导航

Agent Skill · 研究检索

permission-system(权限系统)

permission-system 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

permission-system 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证为 MIT,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 60,316。

总安装 371周安装 15GitHub Stars 4下载 116核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:permission-system(权限系统)
来源仓库:https://github.com/m19803261706/springboot-vben-admin
仓库路径:skills/permission-system
安装命令:
npx skills add https://github.com/m19803261706/springboot-vben-admin --skill permission-system
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/m19803261706/springboot-vben-admin --skill permission-system

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

permission-system 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。

安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。它属于研究检索类工具,适用于信息搜集和初步筛选场景。适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

来源仓库内路径:skills/permission-system

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/m19803261706/springboot-vben-admin --skill per…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

permission-system 怎么安装?

在终端执行 npx skills add https://github.com/m19803261706/springboot-vben-admin --skill permission-sy…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

permission-system 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

permission-system 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

permission-system 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

permission-system 用的人多吗?

公开数据是累计安装 371 次,近一周安装 15 次,下载 116 次,GitHub 4 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

permission-system 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
permission-system

权限系统 · 本页

3714需要联网MIT通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

权限系统开发规范

本项目采用 RBAC (基于角色的访问控制) 权限模型,包含菜单权限、按钮权限和数据权限三个维度。

核心原则

重要: 每次创建新功能模块时,必须 同时创建对应的菜单权限迁移 SQL 文件,否则功能将无法正常使用。

一、权限体系架构

┌─────────────────────────────────────────────────────────────┐
│                      权限体系架构                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  用户 (sys_user)                                            │
│    │                                                        │
│    └── 拥有多个 ──→ 角色 (sys_role)                          │
│                      │                                      │
│                      ├── 拥有多个 ──→ 菜单权限 (sys_menu)     │
│                      │                 ├─ 目录 (type=0)     │
│                      │                 ├─ 菜单 (type=1)     │
│                      │                 └─ 按钮 (type=2)     │
│                      │                                      │
│                      └── 数据权限 (data_scope)               │
│                           ├─ 全部数据 (1)                   │
│                           ├─ 本部门 (2)                     │
│                           ├─ 本部门及下级 (3)               │
│                           ├─ 仅本人 (4)                     │
│                           └─ 自定义部门 (5)                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

二、数据库表结构

2.1 菜单表 (sys_menu)

字段类型说明
idbigint主键
parent_idbigint父菜单ID (0=顶级)
menu_namevarchar(50)菜单名称
menu_typetinyint类型: 0=目录, 1=菜单, 2=按钮
pathvarchar(200)路由路径
componentvarchar(255)组件路径
permissionvarchar(100)权限标识
iconvarchar(100)图标
sortint排序
visibletinyint是否显示: 0=隐藏, 1=显示
statustinyint状态: 0=禁用, 1=启用

2.2 角色表 (sys_role)

字段类型说明
idbigint主键
role_namevarchar(30)角色名称
role_codevarchar(100)角色编码
data_scopetinyint数据权限范围 (1-5)
sortint排序
statustinyint状态

2.3 关联表

  • sys_user_role: 用户-角色关联
  • sys_role_menu: 角色-菜单关联
  • sys_role_dept: 角色-部门关联 (自定义数据权限)

三、权限标识命名规范

3.1 格式

{模块}:{实体}:{操作}

3.2 标准操作

操作权限标识说明
列表xxx:entity:list查看列表
详情xxx:entity:detail查看详情
新增xxx:entity:add新增数据
编辑xxx:entity:edit编辑数据
删除xxx:entity:delete删除数据
导出xxx:entity:export导出数据
导入xxx:entity:import导入数据

3.3 示例

# 系统管理模块
sys:user:list        # 用户列表
sys:user:add         # 新增用户
sys:role:assign      # 分配角色权限

# 业务模块示例
emergency:event:list     # 应急事件列表
emergency:event:handle   # 处理事件
emergency:plan:approve   # 审批预案

四、数据权限类型

类型值说明实现方式
全部数据1无限制不添加过滤条件
本部门2只看本部门WHERE dept_id = 用户部门ID
本部门及下级3本部门树WHERE dept_id IN (部门及子部门ID)
仅本人4只看自己创建的WHERE create_by = 用户ID
自定义5指定部门WHERE dept_id IN (角色配置的部门)

五、CX 命令集成规范

5.1 强制要求

当执行 /cx:do 或 /cx:plan 创建新功能模块时,必须 同时:

  1. 创建 Flyway 迁移 SQL 文件
  2. 包含菜单数据插入语句
  3. 包含管理员角色菜单权限分配语句

5.2 迁移文件命名

V{版本号}__{描述}.sql

示例:
V4__add_emergency_module_menu.sql
V5__add_monitor_module_menu.sql

5.3 迁移 SQL 模板

-- V{N}__add_{module}_menu.sql
-- 作者: CX
-- 日期: {日期}
-- 描述: 添加{模块名}模块菜单和权限

-- =============================================
-- 获取当前最大菜单ID
-- =============================================
SET @max_menu_id = (SELECT COALESCE(MAX(id), 100) FROM sys_menu);

-- =============================================
-- 添加{模块名}目录
-- =============================================
INSERT INTO sys_menu (id, parent_id, menu_name, menu_type, path, component, permission, icon, sort, visible, status) VALUES
(@max_menu_id + 1, 0, '{模块中文名}', 0, '/{module}', NULL, NULL, '{icon}', {sort}, 1, 1);

-- =============================================
-- 添加{功能名}菜单
-- =============================================
INSERT INTO sys_menu (id, parent_id, menu_name, menu_type, path, component, permission, icon, sort, visible, status) VALUES
(@max_menu_id + 2, @max_menu_id + 1, '{功能中文名}', 1, '/{module}/{entity}', '/{module}/{entity}/index', '{module}:{entity}:list', '{icon}', 1, 1, 1),
(@max_menu_id + 3, @max_menu_id + 2, '{功能}新增', 2, NULL, NULL, '{module}:{entity}:add', NULL, 1, 1, 1),
(@max_menu_id + 4, @max_menu_id + 2, '{功能}编辑', 2, NULL, NULL, '{module}:{entity}:edit', NULL, 2, 1, 1),
(@max_menu_id + 5, @max_menu_id + 2, '{功能}删除', 2, NULL, NULL, '{module}:{entity}:delete', NULL, 3, 1, 1);

-- =============================================
-- 为超级管理员分配新菜单权限
-- =============================================
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, id FROM sys_menu WHERE id > @max_menu_id;

六、完整示例:添加应急事件模块

6.1 迁移文件: V4__add_emergency_event_menu.sql

-- V4__add_emergency_event_menu.sql
-- 作者: CX
-- 日期: 2026-01-13
-- 描述: 添加应急事件管理模块菜单和权限

-- =============================================
-- 获取当前最大菜单ID (避免ID冲突)
-- =============================================
SET @max_menu_id = (SELECT COALESCE(MAX(id), 100) FROM sys_menu);

-- =============================================
-- 添加应急管理目录
-- =============================================
INSERT INTO sys_menu (id, parent_id, menu_name, menu_type, path, component, permission, icon, sort, visible, status) VALUES
(@max_menu_id + 1, 0, '应急管理', 0, '/emergency', NULL, NULL, 'ant-design:alert-outlined', 10, 1, 1);

-- =============================================
-- 添加事件管理菜单及按钮
-- =============================================
INSERT INTO sys_menu (id, parent_id, menu_name, menu_type, path, component, permission, icon, sort, visible, status) VALUES
-- 事件管理菜单
(@max_menu_id + 2, @max_menu_id + 1, '事件管理', 1, '/emergency/event', '/emergency/event/index', 'emergency:event:list', 'ant-design:file-exclamation-outlined', 1, 1, 1),
-- 事件管理按钮
(@max_menu_id + 3, @max_menu_id + 2, '事件新增', 2, NULL, NULL, 'emergency:event:add', NULL, 1, 1, 1),
(@max_menu_id + 4, @max_menu_id + 2, '事件编辑', 2, NULL, NULL, 'emergency:event:edit', NULL, 2, 1, 1),
(@max_menu_id + 5, @max_menu_id + 2, '事件删除', 2, NULL, NULL, 'emergency:event:delete', NULL, 3, 1, 1),
(@max_menu_id + 6, @max_menu_id + 2, '事件处理', 2, NULL, NULL, 'emergency:event:handle', NULL, 4, 1, 1),
(@max_menu_id + 7, @max_menu_id + 2, '事件导出', 2, NULL, NULL, 'emergency:event:export', NULL, 5, 1, 1);

-- =============================================
-- 添加预案管理菜单及按钮
-- =============================================
INSERT INTO sys_menu (id, parent_id, menu_name, menu_type, path, component, permission, icon, sort, visible, status) VALUES
-- 预案管理菜单
(@max_menu_id + 8, @max_menu_id + 1, '预案管理', 1, '/emergency/plan', '/emergency/plan/index', 'emergency:plan:list', 'ant-design:solution-outlined', 2, 1, 1),
-- 预案管理按钮
(@max_menu_id + 9, @max_menu_id + 8, '预案新增', 2, NULL, NULL, 'emergency:plan:add', NULL, 1, 1, 1),
(@max_menu_id + 10, @max_menu_id + 8, '预案编辑', 2, NULL, NULL, 'emergency:plan:edit', NULL, 2, 1, 1),
(@max_menu_id + 11, @max_menu_id + 8, '预案删除', 2, NULL, NULL, 'emergency:plan:delete', NULL, 3, 1, 1),
(@max_menu_id + 12, @max_menu_id + 8, '预案审批', 2, NULL, NULL, 'emergency:plan:approve', NULL, 4, 1, 1);

-- =============================================
-- 为超级管理员角色分配新菜单权限
-- =============================================
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, id FROM sys_menu WHERE id > @max_menu_id;

6.2 后端 Controller 权限注解

@RestController
@RequestMapping("/api/emergency/event")
@RequiredArgsConstructor
@Tag(name = "应急事件管理")
public class EmergencyEventController {

    private final EmergencyEventService eventService;

    @GetMapping
    @SaCheckPermission("emergency:event:list")
    @Operation(summary = "事件列表")
    public ApiResponse<Page<EventVO>> list(EventQueryDTO query) {
        return ApiResponse.success(eventService.findPage(query));
    }

    @PostMapping
    @SaCheckPermission("emergency:event:add")
    @Operation(summary = "新增事件")
    public ApiResponse<EventVO> create(@Valid @RequestBody EventCreateDTO dto) {
        return ApiResponse.success(eventService.create(dto));
    }

    @PutMapping("/{id}")
    @SaCheckPermission("emergency:event:edit")
    @Operation(summary = "编辑事件")
    public ApiResponse<EventVO> update(@PathVariable Long id, @Valid @RequestBody EventUpdateDTO dto) {
        return ApiResponse.success(eventService.update(id, dto));
    }

    @DeleteMapping("/{id}")
    @SaCheckPermission("emergency:event:delete")
    @Operation(summary = "删除事件")
    public ApiResponse<Void> delete(@PathVariable Long id) {
        eventService.delete(id);
        return ApiResponse.success();
    }

    @PutMapping("/{id}/handle")
    @SaCheckPermission("emergency:event:handle")
    @Operation(summary = "处理事件")
    public ApiResponse<EventVO> handle(@PathVariable Long id, @Valid @RequestBody EventHandleDTO dto) {
        return ApiResponse.success(eventService.handle(id, dto));
    }
}

6.3 前端路由配置 (由后端动态返回)

前端无需手动配置路由,菜单数据由后端 /api/auth/routes 接口动态返回。

七、数据权限使用

7.1 Service 层添加数据权限注解

@Service
@RequiredArgsConstructor
public class EmergencyEventServiceImpl implements EmergencyEventService {

    private final EmergencyEventRepository eventRepository;
    private final DataScopeHelper dataScopeHelper;

    @Override
    @DataScope(deptAlias = "", userAlias = "")
    public Page<EventVO> findPage(EventQueryDTO query) {
        Specification<EmergencyEvent> spec = (root, criteriaQuery, cb) -> {
            List<Predicate> predicates = new ArrayList<>();

            // 业务查询条件...

            // 数据权限过滤 (必须添加)
            Predicate dataScopePredicate = dataScopeHelper.buildDataScopePredicate(
                root, cb, "deptId", "createBy");
            if (dataScopePredicate != null) {
                predicates.add(dataScopePredicate);
            }

            return cb.and(predicates.toArray(new Predicate[0]));
        };

        return eventRepository.findAll(spec, pageRequest).map(this::convertToVO);
    }
}

八、常用图标参考

图标图标名称适用场景
⚙️ant-design:setting-outlined系统设置
👤ant-design:user-outlined用户管理
👥ant-design:team-outlined角色/团队
📋ant-design:menu-outlined菜单管理
🏢ant-design:apartment-outlined部门/组织
⚠️ant-design:alert-outlined告警/应急
📄ant-design:file-outlined文件/文档
📊ant-design:bar-chart-outlined统计/报表
🔔ant-design:bell-outlined通知/消息
📁ant-design:folder-outlined目录/分类
🔐ant-design:safety-outlined安全/权限
📝ant-design:form-outlined表单

九、检查清单

创建新功能模块时,请确认以下事项:

  • 创建 Flyway 迁移 SQL 文件 (V{N}_*add*{module}_menu.sql)
  • 菜单 ID 使用 @max_menu_id + N 避免冲突
  • 包含目录、菜单、按钮三级结构
  • 权限标识符合 {module}:{entity}:{action} 规范
  • 为超级管理员角色分配新菜单权限
  • Controller 方法添加 @SaCheckPermission 注解
  • 需要数据权限的查询添加 DataScopeHelper 过滤
  • 前端页面组件路径与菜单 component 字段一致

项目: 应急管理系统 创建时间: 2026-01-13 更新时间: 2026-01-13

平台分布

Claude Code

28.71%
按下载量换算33

trae

23.35%
按下载量换算27

OpenCode

17.76%
按下载量换算21

Cursor

11.29%
按下载量换算13

Gemini CLI

7.62%
按下载量换算9

Antigravity

3.4%
按下载量换算4

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

继续浏览同类 Skills