NetAnlatAkademi/skillforge

GitHub: NetAnlatAkademi/skillforge

SkillForge 是一个 .NET 10 开源 CLI,用于创建、验证、检查、对比和打包基于 SKILL.md 的 AI agent 技能文件,在本地和 CI 中报告风险信号而非安全裁定。

Stars: 1 | Forks: 0

SkillForge

# SkillForge 一个用于 AI agent 技能的本地、开源 CLI。SkillForge 可以创建、验证、检查和打包 基于 `SKILL.md` 的技能,并以人类可读的控制台输出、JSON 或 SARIF 格式报告结果。 ## 试试看 ``` dotnet run --project src/SkillForge.Cli -- validate ./samples/valid-skill dotnet run --project src/SkillForge.Cli -- validate ./samples/broken-references --verbose ``` ``` SkillForge Validate Skill: broken-references Path: ./samples/broken-references x SF0007 The referenced file 'references/checklist.md' does not exist in the skill. (SKILL.md:16) x SF0007 The referenced file 'scripts/analyze.ps1' does not exist in the skill. (SKILL.md:17) ! SF1010 No agent compatibility is declared. (SKILL.md:1) Result: INVALID Errors: 2 Warnings: 1 Info: 0 ``` 退出代码:`0` 正常 · `1` 验证失败,或在 `--strict` 下出现警告 · `2` 使用错误 · `3` 意外失败。选项:`--strict`、`--quiet`、`--verbose`、`--no-color`(`NO_COLOR` 环境变量也同样适用)。 ## 为什么需要 Agent 技能是带有实际权限的可执行指令。SkillForge 让开发者 能够在几秒钟内发现有缺陷或存在风险的技能——在本地和 CI 环境中——而无需向服务端发送任何内容。 SkillForge 会报告具体的诊断信息和风险信号。它有意**不**将技能 标记为“安全”或“不安全”。 ## 命令 | 命令 | 用途 | |---|---| | `skillforge init ` | 搭建一个已通过验证的技能脚手架 | | `skillforge validate ` | 验证结构、frontmatter 和质量规则 | | `skillforge inspect ` | 总结文件、链接、脚本和推断出的能力 | | `skillforge diff ` | 根据两个版本能做什么进行比较,而不是看哪些字节发生了变化 | | `skillforge pack ` | 生成带有 SHA-256 哈希和清单的确定性 `.skill.zip` | 完整选项请参见 [docs/cli-reference.md](docs/cli-reference.md);CI 用法(包括 SARIF 上传)请参见 [docs/ci.md](docs/ci.md)。 ## 环境要求 - [.NET SDK 10.0](https://dotnet.microsoft.com/download) 或更高版本 ## 构建和测试 ``` dotnet restore dotnet build dotnet test ``` 包含代码覆盖率: ``` dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings ``` 运行设置会排除源生成代码。如果不排除,由 `[GeneratedRegex]` 生成的匹配器会占据数据的主要部分,从而掩盖手写代码中真正的覆盖率缺口。 从源码运行 CLI: ``` dotnet run --project src/SkillForge.Cli -- --help ``` ## 作为全局工具安装 发布后: ``` dotnet tool install --global SkillForge.Cli skillforge --help ``` 或者在本地构建并安装该包: ``` dotnet pack src/SkillForge.Cli -c Release -o artifacts/local-tool # 从仓库外部运行此命令 — 请参阅下方的说明。 cd ~ dotnet tool install --global --add-source /path/to/skillforge/artifacts/local-tool SkillForge.Cli ``` `cd` 是必须执行的。此代码仓库的 `NuGet.config` 将每个包映射到 nuget.org,而 NuGet 不允许 将 `--add-source` 与源映射结合使用——如果在仓库内运行安装,它会报错 `NU1110`。如果在其他任何地方运行,仓库的配置就不再适用,本地文件夹也会被接受。 使用 `dotnet tool uninstall --global SkillForge.Cli` 进行卸载。 ## 在 GitHub Actions 中使用 ``` permissions: contents: read security-events: write # what turns findings into inline pull-request annotations jobs: skills: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: NetAnlatAkademi/skillforge@v26.208.1 with: path: ./skills suppress: SF1009,SF1010 ``` 将 `path` 指向单个技能或包含它们的目录——没有自己 `SKILL.md` 的目录会作为 一个批次进行验证,整个批次会变成**一次** SARIF 运行,这正是代码扫描所期望的。该 action 会自动上传 该 SARIF,因此结果会作为注解显示在 pull request 中,而不仅仅是在日志里。 `strict` 默认是关闭的,这是有意为之:SF1009 和 SF1010 几乎会在所有真实技能上触发,因此 开箱即用的严格运行会导致原本没问题的技能验证失败。请参阅 [docs/validation-rules.md](docs/validation-rules.md)。 保留 `version` 为未设置状态,action 将从其自身的检出中构建 CLI——速度较慢,但它将 CLI 锁定在 你引用该 action 所使用的 ref 上,并且在该工具发布到 NuGet 之前也能正常工作。将其设置为已发布的 `SkillForge.Cli` 版本即可改为安装该版本。 `exit-code` 作为输出公开(0 正常,1 有结果,2 无法运行),供希望自行决定的调用者使用; 除了 0 以外,该步骤本身仍然会失败。 ## 仓库布局 ``` skillforge/ ├── docs/ Architecture, validation rules, CLI reference ├── samples/ Example skills used by integration tests ├── src/ Domain, Application, Infrastructure, Reporting, Cli └── tests/ One xUnit project per source project ``` 各层的职责和依赖规则在 [docs/architecture.md](docs/architecture.md) 中进行了描述。 ## 贡献 - 已启用可空引用类型和“警告视为错误”;构建必须保持零警告。 - 每个新的 NuGet 包都需要在 `docs/architecture.md` 中提供书面理由。 - 验证规则位于 Application 层,绝对不能放在命令类中。 - 提交需遵循 Conventional Commits,例如 `feat(validation): validate skill frontmatter`。 ## 许可证 [MIT](LICENSE)
标签:AI智能体, LNA, 云安全监控, 代码规范, 静态分析