Skip to content
Back to skills

Watch

ASecurity

用宿主的调度原语让 Arbiter 定时盯住一个目录,把新出现的文件转成指定格式。示例:/arbiter:watch

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 26, 2026
ai-agents

Works with

  • claude code

Security analysis

A100/100

Scanned September 26, 2026

npx -y skills add Polaris-bit189/Arbiter --skill watch --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Watch?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Watch
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/polaris-bit189-watch/badge)](https://www.skillsdirectory.com/skills/polaris-bit189-watch)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: watch
description: 用宿主的调度原语让 Arbiter 定时盯住一个目录,把新出现的文件转成指定格式。示例:/arbiter:watch
argument-hint: [目录] [目标格式]
---

# /arbiter:watch —— 盯着一个目录

用户给的参数是:

```
$ARGUMENTS
```

## 这个命令**不做**什么(先读这一段)

⚠️ **关掉 Claude Code 它就停了。** 它不是后台服务、不是托盘常驻程序。
定时唤醒只在这个会话活着的时候存在。**先把这句话告诉用户**,别让他以为
装了个 7×24 的东西。

⚠️ **不要为此写代码、不要建监视脚本、不要起常驻进程。** Claude Code 自己就有
调度原语,直接用:

| 原语             | 什么时候用它                                                                       |
| ---------------- | ---------------------------------------------------------------------------------- |
| `Monitor`        | 把一条命令的 stdout 每一行当成事件。**优先用它**——「目录里多了一个文件」最贴的形状 |
| `CronCreate`     | 按 cron 定时唤醒。目录很大、或者只需要「每小时看一遍」时用它                       |
| `ScheduleWakeup` | 一次性延后唤醒。「30 分钟后再看一次」这种退避                                      |

三者不必都用。默认选 `Monitor`;它在这个环境里不可用时,退到 `CronCreate`,
并把选了什么、为什么告诉用户。

## 先问清楚四件事,一件都不能猜

1. **哪个目录**(绝对路径)。
2. **转成什么格式**(不带点的扩展名)。**绝不替用户猜**——「转成能发微信的」
   这种说法要先问回来。猜错的代价是他的磁盘上多一个他没要的文件。
3. **要不要递归子目录**。默认**不递归**。
4. **一次最多转几个**。默认 20,上限 100。这个数字是防呆的:
   用户不小心把下载目录指过来时,不该一次冒出几千条任务。

第 3、4 条要说清默认值,让用户有机会改。

## 条件:什么文件才算「该转的」

每一轮只处理同时满足这四条的:

1. **扩展名在能力矩阵里**,而且用 `inspect_file`(或 `list_supported_formats`)
   确认能转成目标格式;
2. **产物还不存在**(`目标目录/<同词干>.<目标扩展名>`)。存在就跳过——
   用户手动转过的、上一轮转过的,都不该再转一遍;
3. **不是正在写的文件**:连续两次采样之间**体积没有变化**才算写完。
   这一条挡的是「下载器正在往这里写」——一次抓走半个文件会得到一个损坏的产物,
   而且**不会报错**(这正是监视目录这条路在别家产品上失败最多的原因);
4. **不是本轮的产物自己**(别把自己转出来的东西又转一遍)。

## ⚠️ 与「重命名即转换」不能同时开在同一个目录上

应用设置里那个「重命名即转换」开关(M8)也会看同一个目录。两条路同时开着时,
用户手动改一个文件名会让两边各自动一次,结果是一份产物加一个 `(1)` 的重名副本。

**同一个目录,两个功能只开一个。** 开工之前问一句用户有没有开那个开关,
开了就请他二选一。完整说明见 `../../docs/automation.md`。

## 每一轮怎么做

1. **先算出一个清单**,把「将转 N 个文件」告诉用户,再动手。N 为 0 就安静等着,
   **不要每轮都汇报一次「没有新文件」**——那是噪音。
2. 转换用 `batch_convert`(多个文件共用一个目标格式)或 `convert_file`(单文件)。
   **不要把「要下载引擎」的格式放进这条流程**:357 MiB 的下载要用户点头,
   不该由一次定时唤醒在背后发起。遇到这种就在那一轮里说明并跳过。
3. **产物落在源文件旁边**(默认),或者按用户要求指定 `output_dir`。
   **绝不删源文件、绝不移动源文件**——用户只是让你转,没让你整理他的目录。
4. 只报**这一轮新做了什么**:转了几个、失败几个(失败要带原因)。
   没有新动作就什么都不说。

## 收尾时要说的话

- 这是个**会话级**的定时任务,Claude Code 关掉就没了;
- 想停就说一句「停掉目录监视」,把这轮挂上的调度原语撤掉;
- 目录里现在有哪些文件被转过、产物在哪,列一次就够,别每轮都列。

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.