amsokol/ai-devsecops-skills

GitHub: amsokol/ai-devsecops-skills

为 DevSecOps AI 代理提供可版本化、可按产品定制的安全策略与操作流程技能库,通过 git submodule 机制实现跨团队的统一管理和分发。

Stars: 0 | Forks: 0

# ai-devsecops-skills DevSecOps agent 的技能库 ([ai-devsecops-cursor](https://github.com/amsokol/ai-devsecops-cursor))。 在每个产品中将其**作为 git submodule 引入**,路径为 `.cursor/agent/library` (包括 runner 仓库)。产品的 **overlay** 文件位于 submodule 旁边: ``` .cursor/agent/ POLICY.md # product overlay verify.md quarantine.md # duration N library/ # this repository (submodule) ``` 不使用 symlinks。不将 catalog 复制到产品中。升级: ``` git submodule update --remote .cursor/agent/library # 审查,提交新的 submodule SHA ``` ## Catalog | 路径 | 角色 | | ---- | ---- | | `policy/` | entry, signals, quarantine approach, holds, grouping, bundles | | `gate/` | gate-only procedures (change-request review) | | `maintain/` | maintain-only procedures (findings, fix tracks) | | `scenarios/` | gate / maintain procedures | | `scm/` | forge CLI / tokens | | `capabilities/` | capability contracts (link ecosystem topics) | | `ecosystems//` | one topic per file (detect, update, publish-time, advisories, …) | | `products/starter/` | adoption guide + overlay templates | ## 在产品中采用 ``` # 从 product repo 根目录: git submodule add https://github.com/amsokol/ai-devsecops-skills.git .cursor/agent/library git submodule update --init --recursive cp .cursor/agent/library/products/starter/overlay/POLICY.md.template \ .cursor/agent/POLICY.md cp .cursor/agent/library/products/starter/overlay/verify.md.template \ .cursor/agent/verify.md cp .cursor/agent/library/products/starter/overlay/quarantine.md.template \ .cursor/agent/quarantine.md # 编辑 POLICY (启用的 ecosystems),quarantine duration,验证命令 ``` CI:使用 `actions/checkout` 并配置 `submodules: true`(或使用 `git submodule update --init`)。 Markdown lint 会在每次 pull request 以及向 `main` 推送时运行 (`.github/workflows/ci.yml`)。 ## 版本与发布 消费者通过 **submodule commit SHA** 来固定该库的版本。发布使得这种固定 变得有意且可审查。 当主版本号为 **0** (`0.x.y`) 时: | 部分 | 时机 | | ------- | ---- | | **x** | 向后兼容性**被破坏**(路径重命名、移除 topics、需要更改产品 overlay 或 runner 的 marker/signal contracts) | | **y** | 保持向后兼容性 —— bug 修复**或**新增功能(新的 ecosystems、topics、更清晰的文档、增量添加的 entry skills) | 示例:`0.1.0` → `0.1.1`(增量添加的 `policy/entry.md`,更精简的 overlay templates); `0.1.1` → `0.2.0`(重命名/移除产品已经链接的 skill 路径)。 当我们达到 **1.0.0** 时,切换为经典的 SemVer (MAJOR / MINOR / PATCH)。 **流程(手动,针对每批更改):** `main` 分支受保护(ruleset **protect-main**):**禁止直接推送** —— 只能通过 PR 合并。必需的状态检查:**Markdown lint**。没有绕过权限的 actor。 1. 打开一个 PR → 在 CI 通过后合并(不要直接向 `main` 推送 commits)。 2. 更新 [`CHANGELOG.md`](CHANGELOG.md):将条目从 `Unreleased` 移动到一个 **紧接在 `Unreleased` 下方的新版本部分**(最新发布 保持在顶部附近;较旧的部分下移)。在打标签之前,将 CHANGELOG 的修改包含在 该 PR(或后续 PR)中。 3. 合并后,从 `main` 打标签并发布 GitHub Release: ``` git tag -a v0.1.1 -m "v0.1.1" git push origin v0.1.1 gh release create v0.1.1 --title "v0.1.1" --notes-file <(sed -n '/## 0.1.1/,/^## /p' CHANGELOG.md | sed '$d') ``` 或者在 GitHub UI 中根据 CHANGELOG 部分草拟发布说明。 **将产品升级**到某个发布版本: ``` cd .cursor/agent/library git fetch --tags git checkout v0.1.1 # or a newer tag cd ../../.. git add .cursor/agent/library git commit -m "chore(skills): bump library to v0.1.1" ``` 对于产品,优先使用 tags 而非浮动的 `main`;在迭代期间,runner 可以跟踪 `main`。 ## 布局规则 - 一个 topic = 一个文件。大型主题使用文件夹。 - Catalog 知识位于 `policy/`、`gate/`、`maintain/`、`scenarios/`、 `scm/`、`capabilities/`、`ecosystems/`、`products/` 下 —— 而不是在产品 overlays 中。 - 产品特定的值(持续时间 N、verify 命令、启用的 ecosystems、 hotspots)**仅**存在于 overlay 中,绝不在本 catalog 中。
标签:防御加固