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 中。
标签:防御加固