nold-ai/specfact-cli-modules

GitHub: nold-ai/specfact-cli-modules

SpecFact CLI 的官方模块注册表,提供面向 AI 辅助 Python 开发的确定性代码审查、冗余检测与清理工作流。

Stars: 0 | Forks: 0

# specfact-cli-modules SpecFact CLI 的中央模块注册表。此仓库托管官方的 **nold-ai** bundle 及其文档。 ## 命令概览 - [面向人类生成的模块命令概览](docs/reference/commands.generated.md) - [AI-agent 模块命令概览](llms.txt) ## 亮点:AI 形态的冗余检测 Code Review bundle 现在会显示 `ai_bloat` 发现结果:这是一种咨询性的、不影响评分的信号,专门针对 AI 辅助生成的代码中常见的冗余形态进行调优,例如标识性的 `try/except`、单次调用的包装器、直通的 lambda、多余的中间变量,以及过长的线性函数。针对此变更受影响包源码的试运行发现了 144 个咨询候选对象,并应用了 0 次自动重写;请使用 `specfact code review run --json --out .specfact/code-review.json`,然后在你的 AI IDE 中运行 `/specfact.08-simplify`,以便通过逐项确认来审查每一个简化建议。请参阅 [AI 冗余快速入门](./docs/quickstart-ai-bloat.md)。 ## 仓库结构 | 路径 | 用途 | |------|---------| | `packages/` | Bundle 源码包(每个 bundle 一个目录) | | `registry/` | 已发布的注册表索引和 tarballs | | `docs/` | Bundle 和模块文档(发布至 GitHub Pages) | | `scripts/` | CI 辅助脚本、签名脚本、质量门禁 | | `tests/` | 所有 bundle 的契约测试和单元测试 | | `openspec/` | OpenSpec 变更工件(提案、规格、任务) | 第三方 bundle 从各自的仓库发布,不在此处托管。 ## 首次设置 前置条件:Python 3.11+,[Hatch](https://hatch.pypa.io)。 ``` # 1. 创建共享的 Hatch 环境 hatch env create # 2. 将 specfact-cli 安装为可编辑依赖 # (优先使用 $SPECFACT_CLI_REPO,然后是匹配的 worktree 分支,最后是 ../specfact-cli) hatch run dev-deps # 3. 安装 pre-commit hooks(在每次 commit 时运行 quality gates 和代码审查) pre-commit install ``` 在 Cursor / VS Code 中,选择位于 `specfact-cli-modules/.venv/bin/python` 的解释器。 ## 质量门禁 在发起 PR 之前,请从仓库根目录运行完整的门禁流程: ``` hatch run format hatch run type-check hatch run lint hatch run yaml-lint hatch run check-bundle-imports hatch run verify-modules-signature --payload-from-filesystem --enforce-version-bump hatch run contract-test hatch run smart-test hatch run test hatch run specfact code review run --bug-hunt --json --out .specfact/code-review.json ``` pre-commit hooks 会在每次 `git commit` 时自动运行相同的流程(模块 1 和 2)。要针对所有文件手动运行它们: ``` pre-commit run --all-files ``` ### 门禁详情 - **格式化 / lint / 类型检查** — Ruff、basedpyright 和 pylint。`basedpyright` 和 `pylint` 的作用域限定为 `src/`、`tests/` 和 `tools/`;Ruff 则在整个仓库中运行。 - **check-bundle-imports** — 强制执行导入边界策略(`ALLOWED_IMPORTS.md`)。仅用于 `TYPE_CHECKING` 的导入不包含在检查范围内。 - **contract-test** — 契约优先的测试套件;必须在运行 `smart-test` / `test` 之前通过。 - **code review 门禁** — 对 `packages/`、`registry/`、`scripts/`、`tools/`、`tests/` 和 `openspec/changes/` 下暂存的 `.py`/`.pyi` 文件运行 `specfact code review run`。如果报告的 `ci_exit_code` 不为零,pre-commit hook 将阻止提交;警告和 `ai_bloat` 信息发现属于咨询性质,除非有记录在案的例外情况,否则必须在合并前予以修复。完整选项(`--mode`、`--focus`、`--bug-hunt` 等)详见 [Code review 模块](./docs/modules/code-review.md)。 ## 模块签名与版本控制 当你更改了 bundle 的源 payload 后,请提升 `packages//module-package.yaml` 中的 `version` 字段,然后刷新校验和: ``` python scripts/sign-modules.py --allow-unsigned --payload-from-filesystem packages//module-package.yaml ``` 在非 `main` 分支上,pre-commit hook 会自动运行此步骤,并重新暂存更新后的清单。 请针对每个 bundle payload 使用语义化版本控制:补丁用于修复 bug 和向后兼容的元数据或 schema 新增, 次要用于新增命令或公共 API 功能,主要用于破坏性的命令、API 或 schema 更改。 清单中的 `integrity.checksum` 值涵盖标准的模块源 payload;注册表中的 `checksum_sha256` 和 `.tar.gz.sha256` 文件涵盖已发布的 tarball artifact,因此这些哈希值可能会不同。 ### 何时需要签名 | 场景 | 要求 | |---------|------------| | 指向 `dev` 的 PR | 校验和 + 版本提升;无需加密签名 | | 指向 `main` 的 PR | 需要加密签名(`--require-signature`) | | 推送到 `dev` / `main` | CI 会在合并后通过 `sign-modules.yml` 自动签名 | | 已批准的同仓库 PR | `sign-modules-on-approval.yml` 会在合并前使用仓库密钥进行签名 | `registry/index.json` 和已发布的 tarballs **不会**在本地更新 —— 它们是由 `publish-modules` 在合并到 `dev`/`main` 后更新的。对于极少见的手动注册表修复,请使用 `hatch run sync-registry-from-package --bundle `(未接入 pre-commit)。 有关完整的签名工作流,请参阅 [模块签名](./docs/authoring/module-signing.md)。 ## 文档 - GitHub Pages: `https://nold-ai.github.io/specfact-cli-modules/` - URL 契约(核心 → 模块交接):`docs/reference/documentation-url-contract.md`
标签:AI辅助开发, LNA, Python, 云安全监控, 代码审查, 无后门, 逆向工具, 静态分析