# File Output Guard

> 创建/输出文件的安全约束。禁止 HERE 文档创建文件；大文件输出需分段写入同一文件，避免会话超限。

- Skill: `wxy/file-output-guard` (Agent Skill)
- Install (CLI): `npx skillmds@latest add wxy/file-output-guard`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wxy/file-output-guard/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: wxy (https://skillmd.com/u/wxy)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/wxy/file-output-guard

---


# _file-output-guard

## 目标
- **创建文件**必须使用 `create_file` 工具，禁止 HERE 文档。
- **大文件输出**必须分段写入同一文件，避免会话输出过大导致失败。

## 适用范围
- 任何创建新文件的操作。
- 任何可能产生超长输出的内容（例如生成长文档、大型配置、长列表等）。

## 必须遵循的规则
### 1) 创建文件规则
- **必须**使用 `create_file` 创建新文件。
- **禁止**使用 HERE 文档（如 `cat > file << 'EOF'`）。
- **禁止**用终端命令创建内容文件（除非用户明确要求）。

**⚠️ 关键原则：提前识别，不事后补救**
- 在创建文件时，**立即评估内容大小**。若预计内容 > 5KB，直接采用"分段创建"策略
- 禁止等到 API 调用失败或会话超限后才改为分段。应该在生成前就预判并主动分段
- 评估标准：参考 `_session-safety` 中的超长阈值参考表（< 5KB 直接创建，5KB-20KB 建议分段，> 20KB 必须分段）
- 若不确定大小，**宁可分段，不可赌**

### 2) 大文件分段写入规则
当内容可能超出单次回复或工具限制时：
1. **先创建文件**（第一段内容）使用 `create_file`。
2. **后续内容分段追加**：使用 `apply_patch` 将新段落追加到同一文件末尾。
3. **每段写入后**提供简短确认，不在聊天中重复输出大段正文。
4. **分段编号与续写标记**：
   - 每段开头写明 `[Part X/Y]`（未知总数可用 `[Part X/?]`）。
   - 续写时**删除上一段的分段标记**，并在文件末尾**追加新的分段标记与内容**。
   - 续写时必须带上上一段的"最后一行"作为上下文锚点。

### 3) 分段写入操作示例
**首次创建**：
```typescript
create_file({
  filePath: "/path/to/file.md",
  content: "[Part 1/?]\n第一段内容..."
})
```

**后续追加**（示意）：
```diff
*** Update File: /path/to/file.md
@@
 既有末尾内容
+[Part 2/?]
+第二段内容...
```

## 检查清单
- [ ] 新文件是否通过 `create_file` 创建？
- [ ] 是否避免使用 HERE 文档？
- [ ] 大文件是否分段输出并持续写入同一文件？
- [ ] 是否避免在聊天中重复输出大段内容？
- [ ] 是否包含分段编号与续写标记？

## 与其他技能的关系
- 与 `_context-ack` 配合：在"已启用技能"中标注该约束已生效。
- 与 `_instruction-guard` 配合：在读取指令后执行文件输出约束。

