@namewta/speculo 0.7.4 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/package.json +1 -1
- package/template/canonical/README.md +208 -63
- package/template/canonical/canonical-person-steelman-deliberation.md +518 -0
- package/template/skills/engineering-standards-builder/README.md +43 -0
- package/template/skills/engineering-standards-builder/SKILL.md +233 -0
- package/template/skills/engineering-standards-builder/examples/README.md +15 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/build.gradle.kts +5 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/expected.json +12 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/src/main/kotlin/example/App.kt +2 -0
- package/template/skills/engineering-standards-builder/examples/go/service/.golangci.yml +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/cmd/api/main.go +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/expected.json +23 -0
- package/template/skills/engineering-standards-builder/examples/go/service/go.mod +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/internal/service/service.go +2 -0
- package/template/skills/engineering-standards-builder/examples/go/service/internal/service/service_test.go +3 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/pom.xml +12 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/src/main/java/dev/speculo/orders/OrdersApplication.java +7 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/src/test/java/dev/speculo/orders/OrdersApplicationTest.java +3 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/.github/workflows/ci.yml +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/package.json +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/src/App.vue +2 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/tsconfig.json +8 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/package.json +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/pnpm-workspace.yaml +2 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/orders/pom.xml +12 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/orders/src/main/java/dev/speculo/orders/OrdersApplication.java +7 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/worker/go.mod +3 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/worker/main.go +2 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/Cargo.toml +7 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/cli/Cargo.toml +8 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/cli/src/main.rs +1 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/core/Cargo.toml +5 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/core/src/lib.rs +3 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/expected.json +14 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/rust-toolchain.toml +3 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/expected.json +21 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/package.json +20 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/App.test.tsx +2 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/App.tsx +1 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/main.tsx +3 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/tsconfig.json +10 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/package.json +21 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/App.test.ts +2 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/App.vue +7 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/main.ts +4 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/tsconfig.json +11 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/vite.config.ts +2 -0
- package/template/skills/engineering-standards-builder/manifest.txt +112 -0
- package/template/skills/engineering-standards-builder/references/go/00-detection-and-scope.md +37 -0
- package/template/skills/engineering-standards-builder/references/go/01-language-and-idioms.md +34 -0
- package/template/skills/engineering-standards-builder/references/go/02-modules-packages-and-layout.md +34 -0
- package/template/skills/engineering-standards-builder/references/go/03-errors-context-and-concurrency.md +38 -0
- package/template/skills/engineering-standards-builder/references/go/04-testing-tooling-quality-gates.md +46 -0
- package/template/skills/engineering-standards-builder/references/go/README.md +9 -0
- package/template/skills/engineering-standards-builder/references/java/00-detection-and-scope.md +40 -0
- package/template/skills/engineering-standards-builder/references/java/01-language-packages-and-api.md +35 -0
- package/template/skills/engineering-standards-builder/references/java/02-build-modules-and-dependencies.md +39 -0
- package/template/skills/engineering-standards-builder/references/java/03-errors-nullability-resources-concurrency.md +36 -0
- package/template/skills/engineering-standards-builder/references/java/04-testing-tooling-quality-gates.md +36 -0
- package/template/skills/engineering-standards-builder/references/java/README.md +10 -0
- package/template/skills/engineering-standards-builder/references/java/frameworks/spring-boot.md +74 -0
- package/template/skills/engineering-standards-builder/references/rules/00-governance-and-precedence.md +52 -0
- package/template/skills/engineering-standards-builder/references/rules/01-project-discovery.md +79 -0
- package/template/skills/engineering-standards-builder/references/rules/02-evidence-topology-and-scope.md +87 -0
- package/template/skills/engineering-standards-builder/references/rules/03-interview-and-decisions.md +77 -0
- package/template/skills/engineering-standards-builder/references/rules/04-architecture-and-dependency-boundaries.md +58 -0
- package/template/skills/engineering-standards-builder/references/rules/05-files-directories-and-naming.md +53 -0
- package/template/skills/engineering-standards-builder/references/rules/06-apis-errors-resources-and-concurrency.md +53 -0
- package/template/skills/engineering-standards-builder/references/rules/07-documentation-and-comments.md +46 -0
- package/template/skills/engineering-standards-builder/references/rules/08-testing-strategy.md +45 -0
- package/template/skills/engineering-standards-builder/references/rules/09-security-configuration-and-data.md +44 -0
- package/template/skills/engineering-standards-builder/references/rules/10-performance-observability-and-i18n.md +36 -0
- package/template/skills/engineering-standards-builder/references/rules/11-tooling-quality-gates-and-ci.md +69 -0
- package/template/skills/engineering-standards-builder/references/rules/12-git-review-and-delivery.md +46 -0
- package/template/skills/engineering-standards-builder/references/rules/13-adoption-exceptions-and-ratchets.md +60 -0
- package/template/skills/engineering-standards-builder/references/rules/14-generation-contract.md +105 -0
- package/template/skills/engineering-standards-builder/references/rules/15-validation-contract.md +65 -0
- package/template/skills/engineering-standards-builder/references/rules/16-language-adapter-contract.md +55 -0
- package/template/skills/engineering-standards-builder/references/rules/README.md +23 -0
- package/template/skills/engineering-standards-builder/references/rust/00-detection-and-scope.md +38 -0
- package/template/skills/engineering-standards-builder/references/rust/01-language-api-and-safety.md +35 -0
- package/template/skills/engineering-standards-builder/references/rust/02-crates-workspaces-and-layout.md +36 -0
- package/template/skills/engineering-standards-builder/references/rust/03-errors-ownership-and-concurrency.md +37 -0
- package/template/skills/engineering-standards-builder/references/rust/04-testing-tooling-quality-gates.md +44 -0
- package/template/skills/engineering-standards-builder/references/rust/README.md +9 -0
- package/template/skills/engineering-standards-builder/references/typescript/00-detection-and-scope.md +58 -0
- package/template/skills/engineering-standards-builder/references/typescript/01-language-and-type-system.md +49 -0
- package/template/skills/engineering-standards-builder/references/typescript/02-modules-packages-and-runtime-boundaries.md +49 -0
- package/template/skills/engineering-standards-builder/references/typescript/03-functions-async-errors-resources.md +42 -0
- package/template/skills/engineering-standards-builder/references/typescript/04-testing-tooling-quality-gates.md +51 -0
- package/template/skills/engineering-standards-builder/references/typescript/README.md +27 -0
- package/template/skills/engineering-standards-builder/references/typescript/app-types/cli.md +11 -0
- package/template/skills/engineering-standards-builder/references/typescript/app-types/library.md +11 -0
- package/template/skills/engineering-standards-builder/references/typescript/frameworks/react.md +71 -0
- package/template/skills/engineering-standards-builder/references/typescript/frameworks/vue.md +131 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/browser.md +15 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/electron.md +25 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/node.md +13 -0
- package/template/skills/engineering-standards-builder/scripts/discover-project.mjs +957 -0
- package/template/skills/engineering-standards-builder/scripts/self-test.mjs +203 -0
- package/template/skills/engineering-standards-builder/scripts/sync-manifest.mjs +105 -0
- package/template/skills/engineering-standards-builder/scripts/validate-builder.mjs +255 -0
- package/template/skills/engineering-standards-builder/scripts/validate-generated-skill.mjs +286 -0
- package/template/skills/engineering-standards-builder/templates/README.md +18 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/agents-typescript--standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/agents-typescript-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/claude-engineering-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/claude-typescript-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/SKILL.md.template +26 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/00-project-profile.md.template +26 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/01-module-map.md.template +27 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/02-decisions-and-exceptions.md.template +31 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/review-checklist.md.template +14 -0
- package/template/skills/source-code-zip-skill/SKILL.md +343 -0
- package/template/skills/source-code-zip-skill/scripts/zip_source_code.py +638 -0
- package/template/workflows/person/INDEX.md +1 -0
- package/template/workflows/person/S-steelman-deliberation/S-steelman-deliberation.md +218 -0
- package/template/workflows/person/S-steelman-deliberation/_templates/decision-template.md +51 -0
- package/template/workflows/person/S-steelman-deliberation/_templates/steelman-dossier-template.md +96 -0
- package/template/workflows/person/S-steelman-deliberation/deliberate.md +127 -0
- package/template/workflows/person/S-steelman-deliberation/evidence-gate.md +37 -0
- package/template/workflows/person/S-steelman-deliberation/judge.md +69 -0
- package/template/workflows/person/S-steelman-deliberation/tools/validate-steelman-change.mjs +697 -0
- package/template/skills/typescript-standards-builder/README.md +0 -53
- package/template/skills/typescript-standards-builder/SKILL.md +0 -245
- package/template/skills/typescript-standards-builder/examples/sample-generated-tree.md +0 -30
- package/template/skills/typescript-standards-builder/examples/sample-interview-decisions.md +0 -26
- package/template/skills/typescript-standards-builder/manifest.txt +0 -29
- package/template/skills/typescript-standards-builder/references/00-governance-and-fixed-defaults.md +0 -77
- package/template/skills/typescript-standards-builder/references/01-project-discovery.md +0 -100
- package/template/skills/typescript-standards-builder/references/02-interview-workflow.md +0 -129
- package/template/skills/typescript-standards-builder/references/03-project-architecture-and-directory-layout.md +0 -84
- package/template/skills/typescript-standards-builder/references/04-file-directory-and-symbol-naming.md +0 -92
- package/template/skills/typescript-standards-builder/references/05-modules-imports-exports-and-dependencies.md +0 -63
- package/template/skills/typescript-standards-builder/references/06-typescript-type-system.md +0 -64
- package/template/skills/typescript-standards-builder/references/07-functions-async-errors-and-resources.md +0 -42
- package/template/skills/typescript-standards-builder/references/08-comments-jsdoc-and-documentation.md +0 -51
- package/template/skills/typescript-standards-builder/references/09-testing-strategy.md +0 -58
- package/template/skills/typescript-standards-builder/references/10-react-and-frontend.md +0 -39
- package/template/skills/typescript-standards-builder/references/11-node-cli-and-cross-platform.md +0 -31
- package/template/skills/typescript-standards-builder/references/12-formatting-lint-and-complexity.md +0 -58
- package/template/skills/typescript-standards-builder/references/13-configuration-dependencies-and-ci.md +0 -71
- package/template/skills/typescript-standards-builder/references/14-security-performance-and-i18n.md +0 -32
- package/template/skills/typescript-standards-builder/references/15-git-review-and-delivery.md +0 -28
- package/template/skills/typescript-standards-builder/references/16-adoption-exceptions-and-migration.md +0 -61
- package/template/skills/typescript-standards-builder/references/17-generation-contract.md +0 -104
- package/template/skills/typescript-standards-builder/references/README.md +0 -37
- package/template/skills/typescript-standards-builder/templates/agents-compat-skill/SKILL.md +0 -1
- package/template/skills/typescript-standards-builder/templates/claude-skill/SKILL.md +0 -1
- package/template/skills/typescript-standards-builder/templates/project-skill/SKILL.md.template +0 -34
- package/template/skills/typescript-standards-builder/templates/project-skill/references/00-project-profile.md.template +0 -17
- package/template/skills/typescript-standards-builder/templates/project-skill/references/10-review-checklist.md +0 -23
- package/template/skills/typescript-standards-builder/templates/project-skill/references/11-decisions-and-exceptions.md.template +0 -19
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: source-code-zip
|
|
3
|
+
description: 将指定源码目录打包为只包含代码的 ZIP,并使用可编辑的正则 IGNORE 规则排除 node_modules、虚拟环境、构建产物、压缩包、.env、YAML、密钥、媒体和办公文件。用户要求归档、传输、备份或提交源码目录时使用。必须优先通过 uv 运行;uv 不可用或无法运行时,再回退到 python3、py -3 或 python。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Source Code ZIP
|
|
7
|
+
|
|
8
|
+
把一个目录压缩为安全、精简的源码 ZIP。实际执行逻辑位于:
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
scripts/zip_source_code.py
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
该脚本只有一个 Python 文件,仅使用标准库,不需要安装第三方依赖。
|
|
15
|
+
|
|
16
|
+
## 必须遵循的运行顺序
|
|
17
|
+
|
|
18
|
+
始终先尝试 `uv`,不要一开始就使用 `pip`、`python` 或创建虚拟环境。
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
uv --version
|
|
22
|
+
uv run scripts/zip_source_code.py "/path/to/project"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
脚本带有 PEP 723 元数据:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
requires-python = ">=3.10"
|
|
29
|
+
dependencies = []
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
若系统没有 `uv`,或 `uv` 因当前环境限制无法运行,再按以下顺序回退:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
python3 scripts/zip_source_code.py "/path/to/project"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Windows 可使用:
|
|
39
|
+
|
|
40
|
+
```powershell
|
|
41
|
+
py -3 scripts/zip_source_code.py "C:\path\to\project"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
最后才尝试:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
python scripts/zip_source_code.py "/path/to/project"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
因为脚本无第三方依赖,所以回退时不应执行 `pip install`。若用户希望安装 `uv`,优先使用其系统包管理器或官方安装方式,例如:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# macOS / Linux
|
|
54
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
55
|
+
|
|
56
|
+
# macOS Homebrew
|
|
57
|
+
brew install uv
|
|
58
|
+
|
|
59
|
+
# Windows PowerShell
|
|
60
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 标准工作流
|
|
64
|
+
|
|
65
|
+
1. 确认用户提供的源目录路径,并对包含空格的路径加引号。
|
|
66
|
+
2. 默认先运行一次 `--dry-run`,尤其是在目录较大、规则刚修改或内容可能敏感时。
|
|
67
|
+
3. 检查预览结果,确保 `.env`、YAML、依赖目录、压缩包和密钥没有被纳入。
|
|
68
|
+
4. 使用 `uv run` 正式创建 ZIP。
|
|
69
|
+
5. 报告 ZIP 的绝对路径、纳入文件数和生成结果。
|
|
70
|
+
6. 除非用户明确要求,不要使用 `--no-default-ignore`。
|
|
71
|
+
|
|
72
|
+
推荐预览命令:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
uv run scripts/zip_source_code.py "/path/to/project" --dry-run
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
需要查看每个文件为何被排除时:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
uv run scripts/zip_source_code.py "/path/to/project" --dry-run --verbose
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
正式创建:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
uv run scripts/zip_source_code.py "/path/to/project"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
默认输出在源目录旁边:
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
<目录名>.code.zip
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
例如 `/work/my-app` 默认生成 `/work/my-app.code.zip`。
|
|
97
|
+
|
|
98
|
+
## 默认过滤行为
|
|
99
|
+
|
|
100
|
+
脚本采用两层过滤:
|
|
101
|
+
|
|
102
|
+
1. `IGNORE` 正则规则先排除危险、庞大或非源码内容。
|
|
103
|
+
2. 默认源码白名单只纳入常见代码扩展名、特殊构建脚本名,以及带 shebang 的无扩展名脚本。
|
|
104
|
+
|
|
105
|
+
内置 `IGNORE` 默认排除:
|
|
106
|
+
|
|
107
|
+
- `.git`、`.hg`、`.svn`、IDE 元数据和系统元数据。
|
|
108
|
+
- `node_modules`、`vendor`、虚拟环境、Python/测试缓存。
|
|
109
|
+
- `dist`、`build`、`target`、覆盖率目录和常见前端框架缓存。
|
|
110
|
+
- `.env`、`.env.local` 等环境变量文件。
|
|
111
|
+
- `.yml`、`.yaml`。
|
|
112
|
+
- ZIP、RAR、TAR、GZ、JAR、WHL 等归档文件。
|
|
113
|
+
- 可执行文件、动态库、目标文件、字节码和 WebAssembly 产物。
|
|
114
|
+
- 证书、私钥、keystore 和常见 SSH 密钥文件名。
|
|
115
|
+
- 图片、音视频、PDF、Office 文件、数据库、日志和临时文件。
|
|
116
|
+
- 常见依赖锁文件。
|
|
117
|
+
|
|
118
|
+
默认会纳入 Python、JavaScript、TypeScript、Java、Go、Rust、C/C++、C#、Shell、SQL、HTML、CSS、Vue、Svelte、Terraform 等源码。
|
|
119
|
+
|
|
120
|
+
## IGNORE 正则规则
|
|
121
|
+
|
|
122
|
+
脚本顶部有可直接编辑的字段:
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
IGNORE: list[str] = [
|
|
126
|
+
r"(^|/)\.git(?:/|$)",
|
|
127
|
+
r"(^|/)node_modules(?:/|$)",
|
|
128
|
+
r"\.zip$",
|
|
129
|
+
r"(^|/)\.env(?:\..*)?$",
|
|
130
|
+
r"\.ya?ml$",
|
|
131
|
+
]
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
实际脚本中的默认列表更完整。匹配规则如下:
|
|
135
|
+
|
|
136
|
+
- 匹配对象是相对于源目录的路径。
|
|
137
|
+
- 路径分隔符统一为 `/`,即使在 Windows 上也是如此。
|
|
138
|
+
- 路径开头没有 `/`。
|
|
139
|
+
- 使用 `re.search`,默认不区分大小写。
|
|
140
|
+
- 这是正则表达式,不是 Git `.gitignore` 的 glob 语法。
|
|
141
|
+
- 忽略规则优先于 `--include`;被忽略的目录不会继续遍历。
|
|
142
|
+
|
|
143
|
+
显示当前全部默认规则:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
uv run scripts/zip_source_code.py --show-defaults
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
临时追加一个正则,不修改脚本:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
uv run scripts/zip_source_code.py ./project \
|
|
153
|
+
--ignore '(^|/)fixtures?(/|$)'
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
可重复添加:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
uv run scripts/zip_source_code.py ./project \
|
|
160
|
+
--ignore '(^|/)fixtures?(/|$)' \
|
|
161
|
+
--ignore '(^|/)generated(/|$)'
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
也可以从 UTF-8 文本文件读取,每行一个正则,空行和以 `#` 开头的行会被忽略:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
uv run scripts/zip_source_code.py ./project \
|
|
168
|
+
--ignore-from ./custom-ignore.regex
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
示例规则文件:
|
|
172
|
+
|
|
173
|
+
```text
|
|
174
|
+
# 测试夹具
|
|
175
|
+
(^|/)fixtures?(/|$)
|
|
176
|
+
|
|
177
|
+
# 自动生成代码
|
|
178
|
+
(^|/)generated(/|$)
|
|
179
|
+
\.gen\.[a-z0-9]+$
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## 纳入额外的项目文件
|
|
183
|
+
|
|
184
|
+
默认只打包源码,所以 `README.md`、`package.json`、`pyproject.toml` 等不会自动进入 ZIP。
|
|
185
|
+
|
|
186
|
+
只额外纳入指定文件时,优先使用 `--include`:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
uv run scripts/zip_source_code.py ./project \
|
|
190
|
+
--include '(^|/)package\.json$' \
|
|
191
|
+
--include '(^|/)pyproject\.toml$'
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
`--include` 只绕过源码扩展名白名单,不会绕过 `IGNORE`。例如 `.env` 和 `.yml` 仍然会被排除。
|
|
195
|
+
|
|
196
|
+
需要纳入所有未被 `IGNORE` 排除的普通文件时:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
uv run scripts/zip_source_code.py ./project --all-files
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
只有用户明确理解风险并要求禁用安全规则时,才使用:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
uv run scripts/zip_source_code.py ./project \
|
|
206
|
+
--all-files \
|
|
207
|
+
--no-default-ignore
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
该组合可能把密钥、凭据、依赖和大型二进制文件打包,不应作为默认方案。
|
|
211
|
+
|
|
212
|
+
## 输出控制
|
|
213
|
+
|
|
214
|
+
指定输出位置:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
uv run scripts/zip_source_code.py ./project \
|
|
218
|
+
--output ./artifacts/project-source.zip
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
`-o` 是 `--output` 的缩写。输出名称没有 `.zip` 后缀时,脚本会自动补上。
|
|
222
|
+
|
|
223
|
+
默认不覆盖已有 ZIP。确认允许覆盖后使用:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
uv run scripts/zip_source_code.py ./project \
|
|
227
|
+
-o ./artifacts/project-source.zip \
|
|
228
|
+
--force
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
默认 ZIP 内会保留一个顶层目录:
|
|
232
|
+
|
|
233
|
+
```text
|
|
234
|
+
project/src/main.py
|
|
235
|
+
project/tests/test_main.py
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
需要直接把目录内容放到 ZIP 根目录时:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
uv run scripts/zip_source_code.py ./project --contents-only
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
压缩级别范围是 `0` 到 `9`,默认 `9`:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
uv run scripts/zip_source_code.py ./project --compression-level 6
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
其中 `0` 表示仅存储不压缩,`1` 更快,`9` 压缩率通常更高。
|
|
251
|
+
|
|
252
|
+
## 完整命令示例
|
|
253
|
+
|
|
254
|
+
安全预览:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
uv run scripts/zip_source_code.py "/work/my app" \
|
|
258
|
+
--dry-run \
|
|
259
|
+
--verbose
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
打包源码并额外纳入 Python 与 Node 项目清单:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
uv run scripts/zip_source_code.py "/work/my app" \
|
|
266
|
+
--include '(^|/)pyproject\.toml$' \
|
|
267
|
+
--include '(^|/)package\.json$' \
|
|
268
|
+
-o "/work/artifacts/my-app-source.zip"
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
排除测试夹具和自动生成目录:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
uv run scripts/zip_source_code.py ./project \
|
|
275
|
+
--ignore '(^|/)fixtures?(/|$)' \
|
|
276
|
+
--ignore '(^|/)generated(/|$)'
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
适合脚本调用的安静模式,成功时只输出 ZIP 绝对路径:
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
archive_path="$(uv run scripts/zip_source_code.py ./project --quiet)"
|
|
283
|
+
printf '%s\n' "$archive_path"
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Windows PowerShell:
|
|
287
|
+
|
|
288
|
+
```powershell
|
|
289
|
+
$archivePath = uv run scripts/zip_source_code.py "C:\work\project" --quiet
|
|
290
|
+
$archivePath
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## 安全与可靠性约束
|
|
294
|
+
|
|
295
|
+
- 默认跳过所有符号链接,不跟随到源目录之外。
|
|
296
|
+
- 默认拒绝覆盖已有 ZIP,避免误删旧归档。
|
|
297
|
+
- 输出文件位于源目录内部时,扫描会排除该输出 ZIP 本身。
|
|
298
|
+
- ZIP 先写入临时文件,成功后再替换最终输出,降低留下半成品的概率。
|
|
299
|
+
- 默认不允许创建空 ZIP;确认需要时使用 `--allow-empty`。
|
|
300
|
+
- 正式打包前修改过 `IGNORE` 时,应重新执行 `--dry-run --verbose`。
|
|
301
|
+
- 不要为了运行该脚本安装第三方 Python 包。
|
|
302
|
+
|
|
303
|
+
## 常见问题
|
|
304
|
+
|
|
305
|
+
### 没有找到可打包文件
|
|
306
|
+
|
|
307
|
+
先查看默认规则:
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
uv run scripts/zip_source_code.py --show-defaults
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
再预览全部未被忽略的普通文件:
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
uv run scripts/zip_source_code.py ./project --all-files --dry-run
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
若只缺少少量项目文件,使用 `--include`,不要直接禁用默认忽略规则。
|
|
320
|
+
|
|
321
|
+
### 输出文件已存在
|
|
322
|
+
|
|
323
|
+
指定新文件名,或在确认覆盖安全后添加 `--force`。
|
|
324
|
+
|
|
325
|
+
### 正则无效
|
|
326
|
+
|
|
327
|
+
脚本会指出无效的命令行规则,或 `--ignore-from` 文件中的具体行号。正则应符合 Python `re` 语法。
|
|
328
|
+
|
|
329
|
+
### uv 不可用
|
|
330
|
+
|
|
331
|
+
按本 SKILL 开头的回退顺序使用 `python3`、Windows 的 `py -3`,最后使用 `python`。脚本不依赖外部包。
|
|
332
|
+
|
|
333
|
+
## 命令帮助
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
uv run scripts/zip_source_code.py --help
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
版本信息:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
uv run scripts/zip_source_code.py --version
|
|
343
|
+
```
|