matthiasrohr/appsec-advisor-packaging-template

GitHub: matthiasrohr/appsec-advisor-packaging-template

用于将 appsec-advisor 安全插件打包为组织内部品牌化版本并集成自定义配置与 CI 流水线的模板仓库。

Stars: 0 | Forks: 0

# appsec-advisor — 组织打包模板 [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![Claude Code](https://img.shields.io/badge/Claude%20Code-plugin-5A67D8.svg)](https://docs.claude.com/en/docs/claude-code) [![codecov](https://codecov.io/gh/matthiasrohr/appsec-advisor-packaging-template/graph/badge.svg)](https://codecov.io/gh/matthiasrohr/appsec-advisor-packaging-template) [![Upstream](https://img.shields.io/badge/upstream-appsec--advisor-orange.svg)](https://github.com/matthiasrohr/appsec-advisor) 用于构建内部 [`appsec-advisor`](https://github.com/matthiasrohr/appsec-advisor) Claude Code 插件的 Template repo,包含您自己组织特定的默认设置、需求目录和成本护栏。 ## 快速开始 **前置条件:** `git`, `python3` (3.10+), `make` **1. 创建您的打包 repo** 运行初始化脚本——它会询问您的组织名称和插件名称,然后创建一个随时可用的 git repo,并且所有的占位符都已替换完成: ``` bash <(curl -fsSL https://raw.githubusercontent.com/matthiasrohr/appsec-advisor-packaging-template/main/scripts/init-org-repo.sh) ``` 或者,在 GitHub 上点击 **Use this template** 并手动替换 `Acme Corp` / `acme-appsec`。 **2. 编辑您的组织配置** 在您的新 repo 中打开 `org-profile/org-profile.yaml`。如果您使用了初始化脚本,`organization.id`、`.name`、`.profile_version` 和 `.owner` 已经自动填好。需要手动更新的一项是: - 将 `requirements.source.requirements_yaml_url` 指向您的内部需求目录,或者如果您还没有,请移除该 block。 如果您使用了 GitHub Template,还需要将 `organization.id`、`.name`、`.profile_version` 和 `.owner` 替换为您的值。 **3. 为您的平台设置 CI** — 运行以下命令之一: ``` make ci-github # copies ci-templates/github/workflows/package.yml → .github/workflows/ make ci-gitlab # copies ci-templates/gitlab-ci.yml → .gitlab-ci.yml ``` 然后在 CI repository 变量中将 `INTERNAL_NAME` 设置为您的插件名称(如果它与默认值不同)。 **4. 在本地构建插件:** ``` make package ``` 这会拉取上游插件,覆盖您的组织配置,运行冒烟测试,并将结果写入 `build/your-plugin-name/`。要强制进行全新重建: ``` make rebuild ``` **5. 在 Claude Code 中加载它:** ``` claude --plugin-dir build/your-plugin-name ``` **6. 运行您的第一次威胁建模:** ``` /your-plugin-name:check-permissions --update /your-plugin-name:create-threat-model ``` 对于 CI,标记 release 会自动触发第 3 步中的 pipeline。 ## 自定义 除了快速开始之外,您可以编辑这些文件: | 文件 | 用途 | |---|---| | `org-profile/org-profile.yaml` | 预设、成本护栏、需求来源、输出格式 | | `org-profile/context/organization.md` | 注入到分析中的简短组织上下文(最大 50 KB) | | `org-profile/actors/*.yaml` | 用于威胁建模的自定义威胁行为者 —— 编辑或删除 | | `org-profile/package-policy.yaml` | 包含哪些技能和 hook 的允许列表 | | `org-skills//SKILL.md` | 随上游技能一起发布的可选组织自有的技能 | | `org-mcp.json` | 可选的 MCP server(例如内部 SAST/SCA endpoint)被复制到构建好的插件的 `.mcp.json` 中 —— 选择性启用,仅通过 `${ENV_VAR}` 传递密钥 | `build/`、`dist/` 和 `upstream/` 都是自动生成的 —— 请勿提交它们。 ### 添加您自己的技能 保持上游作为事实来源,并将组织自有的技能放在 `org-skills/` 下: ``` org-skills/ └── acme-architecture-review/ └── SKILL.md ``` `make package` 会在上游打包器运行之前,将这些技能复制到临时的上游源代码树中。`upstream/` 中的 checkout 保持不变。 为了保持可预测性,请遵守两个规则: - 不要重用上游的技能名称。如果本地技能会覆盖 `upstream/appsec-advisor/skills/`,构建将会失败。 - 如果 `org-profile/package-policy.yaml` 使用了 `plugin_surface.skills.include`,请在那里也添加本地技能名称。允许列表同时涵盖上游和组织技能。 ## 构建参考 ``` # 仅验证 org profile make validate # 拉取 upstream + 构建 + smoke test make package # 强制执行 clean rebuild(先移除 upstream/、build/、dist/) make rebuild # 移除所有生成的目录 make clean # 只读 drift check(较新的 release,或者 branch tip 已超过本地 build) make upstream-check # 锁定特定的 upstream release APPSEC_ADVISOR_REF=v0.5.0-beta make package # 跟踪 branch tip 而非 release(每次 build 时重新拉取至其 tip) APPSEC_ADVISOR_REF=develop make package # 构建可分发 archive(.tgz + .sha256) ARCHIVE=1 VERSION=1.0.0 make package-archive # 使用现有的本地 upstream checkout APPSEC_ADVISOR_SOURCE=/path/to/local/appsec-advisor make package ``` ## CI 运行 `make ci-github` 或 `make ci-gitlab` 来安装 CI pipeline(见快速开始第 3 步)。两者执行的操作与本地构建相同:拉取上游代码、构建、冒烟测试,并将 `.tgz` 及其 `.sha256` 作为构建产物上传。pipeline 会在 `v*` tag 和 `workflow_dispatch` 时触发。 | 变量 | 默认值 | 描述 | |---|---|---| | `APPSEC_ADVISOR_URL` | upstream GitHub | 上游 repo 或内部 fork | | `APPSEC_ADVISOR_REF` | `v0.5.0-beta` | Release tag、分支或 `latest` —— 锁定版本以确保构建可重现 | | `INTERNAL_NAME` | `acme-appsec` | 插件名称和 Claude Code 命令命名空间 | | `VERSION` | 派生自 git tag 或 commit SHA | 生成包的版本 | ## 相关项目 - [appsec-advisor](https://github.com/matthiasrohr/appsec-advisor) — 此模板所打包的上游 Claude Code 插件 - [appsec-advisor-fixtures](https://github.com/matthiasrohr/appsec-advisor-fixtures) — `appsec-advisor` 的测试 fixtures ## 参考 - [github.com/matthiasrohr/appsec-advisor](https://github.com/matthiasrohr/appsec-advisor) — 上游插件 - [docs/internal-plugin-packaging.md](https://github.com/matthiasrohr/appsec-advisor/blob/main/docs/internal-plugin-packaging.md) — 完整的打包操作手册 - [docs/org-profiles.md](https://github.com/matthiasrohr/appsec-advisor/blob/main/docs/org-profiles.md) — org-profile.yaml 参考
标签:AI插件, Claude Code, 打包模板, 网络安全研究, 逆向工具