--- name: export description: 从 Git 提交范围、时间范围或当前工作区预览并导出变更文件,保留相对目录并生成分类清单。适用于制作代码交付快照;提交、推送、部署或无审查地导出环境配置不应触发本 Skill。 --- # 导出 Git 变更 使用 `scripts/export.py` 先预演文件分类,再经用户确认写入目标目录。导出不会修改工作区、暂存区、提交或来源文件。 ## 选择模式和快照 - `range`:两个 Git 引用之间发生变化的文件。 - `time`:指定提交时间范围内曾发生变化的文件。 - `worktree`:当前 staged、unstaged,以及用户明确要求时的 untracked 文件。 还必须确认内容快照:工作区、`HEAD` 或指定提交。时间范围只决定“选择哪些文件”,不自动决定“取哪个版本”。详细参数见 [模式说明](references/modes.md)。 ## 环境配置边界 - 环境配置、本地配置、机器配置、`.craftkit/local/**` 和 `.craftkit/cache/**` 默认标记为 `protected`,不导出。 - `.env.example` 等不含真实值的公开模板可作为普通候选,但仍执行内容扫描。 - 只有当前项目适用的 `AGENTS.md`、`.craftkit/agents/` 或 `.craftkit/standards/` 明确要求交付该配置,并且用户看到预览后再次确认,才可同时传入 `--allow-protected` 和 `--policy-evidence <项目内文档>`。 - 私钥和检测到的凭据始终标记为 `blocked`;项目规范和用户确认都不能解除。 - `.craftkit/agents/**`、`.craftkit/standards/**`、`.craftkit/knowledge/**`、`.craftkit/handoff/**` 和 `.craftkit/project.json` 属于普通共享资产。 ## 两阶段执行 1. 不带 `--apply` 运行,查看 `exported`、`protected`、`blocked`、`deleted` 和 `missing` 分类。 2. 展示目标目录、快照引用、规范证据和全部分类;不得只展示将导出的文件。 3. 用户确认后,以相同参数增加 `--apply`。目标已存在时默认停止;覆盖必须另外确认并使用 `--force`。 4. 检查目标目录中的 `export-manifest.json`,抽查路径与内容来源。 脚本只调用本地 Git,不执行 fetch、commit、push 或部署。