← 返回 Skills 市场
yoshino-s

Bird Watching Mode

作者 yoshino-s · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ 安全检测通过
115
总下载
0
收藏
1
当前安装
1
版本数
在 OpenClaw 中安装
/install bird-watching-mode
功能描述
Bird-watching log workflow: ask for place on enable, resolve eBird region via superpicky-cli region-query, persist to workspace/bird.json; record sightings (...
使用说明 (SKILL.md)

Bird watching mode (观鸟模式)

Purpose

  1. On enable: Ask the user for 地点 (place name). Resolve eBird region with superpicky-cli region-query, then write workspace/bird.json.
  2. During use: Either identify a photo (BirdID via scripts) or record plain text (species name). Always append time + species (and optional fields) to workspace/bird.json.
  3. Summary / export: On request, run export_csv.py to produce CSV (and optional per-species counts), then send the file or paste to the user (chat attachment, email, etc.).

$SKILL = directory containing this SKILL.md (usually ~/.myagent/skills/bird-watching-mode). Before invoking anything, resolve it to an absolute path (e.g. SKILL="$(cd ~/.myagent/skills/bird-watching-mode && pwd)").

Paths

  • Bird log file: {project}/workspace/bird.json (create workspace/ if missing).
  • SuperPicky skill: default sibling ../superpicky-cli. Override with env SUPERPICKY_CLI_SKILL (absolute path to superpicky-cli skill root).

Absolute paths (required for invocation)

When calling these scripts from the agent or shell, all filesystem arguments must be absolute paths — do not rely on cwd or ~ inside subprocesses unless the shell expands them before the call.

Argument Rule
Python script path Must be absolute, e.g. /Users/you/.myagent/skills/bird-watching-mode/scripts/set_region.py.
--workspace Must be the absolute project root (directory that will contain workspace/bird.json).
Image path (identify_photo.py positional, --image on append_sighting.py) Must be absolute path to the file on disk.
--output / --summary-output (export_csv.py) If not -, use an absolute path for the CSV file (avoids ambiguity vs cwd).

Relative paths inside stored JSON (e.g. past image_path values) are legacy data only; new invocations should still use absolute paths.

Scripts (run from any cwd)

Script Role
scripts/set_region.py After user gives a place: call region-query --json, pick match, merge into bird.json (region, location_query, country_code).
scripts/append_sighting.py Append one observation: --species, optional --notes, --source text|photo, --image, --time (ISO UTC).
scripts/identify_photo.py Run BirdID identify using -c/-r from bird.json; print CLI stdout (agent reads top species); optional --append to log raw output + image path.
scripts/export_csv.py Export all observations to CSV; optional --summary for per-species counts. Deliver CSV to the user (file path or - stdout for inline paste).
# $SKILL and PROJECT must already be absolute (example values):
# SKILL=/Users/you/.myagent/skills/bird-watching-mode
# PROJECT=/Users/you/Workspace/myproject
# PHOTO=/Users/you/.myagent/workspace/media/abc123.jpg

# Resolve region (agent: ask user to confirm if multiple lines printed)
python3 "${SKILL}/scripts/set_region.py" --workspace "${PROJECT}" --location "上海"

# Manual / AI-confirmed text record
python3 "${SKILL}/scripts/append_sighting.py" --workspace "${PROJECT}" \
  --species "Eurasian Tree Sparrow" --source text --notes "flock of 5"

# Photo: run BirdID (requires superpicky install + models)
python3 "${SKILL}/scripts/identify_photo.py" --workspace "${PROJECT}" "${PHOTO}"
# Optional: append a sighting row with species left empty for later edit, or use --append-species "Latin name"
python3 "${SKILL}/scripts/identify_photo.py" --workspace "${PROJECT}" --append "${PHOTO}"

# Export CSV (default: workspace/bird_sightings_export.csv under PROJECT); paths printed on stderr
python3 "${SKILL}/scripts/export_csv.py" --workspace "${PROJECT}"
python3 "${SKILL}/scripts/export_csv.py" --workspace "${PROJECT}" --summary
python3 "${SKILL}/scripts/export_csv.py" --workspace "${PROJECT}" --output -   # stdout for paste only; no second file

Agent workflow

A. User turns on 观鸟模式

  1. Ask: Where are you birding? (地点 — city, province, park, etc.)
  2. Run set_region.py using absolute paths for the script and --workspace. If exit code 3, several matches were printed — ask the user which code (or re-run with --pick N).
  3. Confirm workspace/bird.json exists and contains region.code (and country_code).

B. User sends a photo

  1. Ensure SuperPicky is installed (see Prerequisites below).
  2. Run identify_photo.py with absolute script path, absolute --workspace, and absolute image file path.
  3. Read stdout; treat top BirdID lines as primary candidates. Confirm species with the user if uncertain.
  4. Run append_sighting.py with absolute script path and --workspace, final --species, --source photo, and absolute --image path.

Prerequisites: SuperPicky venv under $SUPERPICKY_CLI_SKILL (default sibling superpicky-cli). If missing: $SUPERPICKY_CLI_SKILL/scripts/install.sh (see superpicky-cli skill).

C. User sends text (species / field note)

  1. Parse species (and optional notes) from the message.
  2. Run append_sighting.py with absolute script path, absolute --workspace, and --source text.

D. User asks for 汇总 / 导出 / CSV

  1. Run export_csv.py with absolute script path and absolute --workspace (add --summary if they want counts by species; use absolute paths for --output / --summary-output when writing files).
  2. Read the path(s) printed on stderr; attach the CSV file(s) in the channel or paste --output - stdout if the UI supports it.
  3. Optional --excel: UTF-8 BOM for Excel on Windows.

bird.json shape (summary)

  • location_query: user’s place string.
  • region: { code, name, name_cn, kind, parent, match_score } from region-query JSON (first line unless --pick).
  • country_code: eBird country (CN, …) — region’s parent if subnational, else region.code.
  • observations[]: { time_utc, species, notes, source, image_path?, birdid_stdout? }.

For full fields, run append_sighting.py --help or read scripts/bird_log_schema.md.

Tests

From $SKILL/scripts/:

./run_tests.sh
# or: python3 bird_json_util_test.py && python3 set_region_test.py && …

Related

安全使用建议
This skill appears internally consistent and implements a local bird-logging workflow. Before installing: 1) confirm you trust the sibling superpicky-cli skill (the included scripts call its scripts/run.sh and that script will execute arbitrary code/network calls); 2) be aware the skill will read image files and write workspace/bird.json and CSVs under whatever PROJECT path you provide (use a dedicated project directory if you are cautious); 3) SKILL.md allows the agent to 'send' CSVs (attachments, email, etc.) — decide which delivery channels you allow your agent to use; 4) run the included tests (scripts/run_tests.sh) locally if you want to audit behavior before enabling. Overall the bundle is coherent with its stated purpose.
功能分析
Type: OpenClaw Skill Name: bird-watching-mode Version: 1.0.0 The bird-watching-mode skill bundle is a well-structured set of scripts for logging bird sightings, identifying species via an external tool (superpicky-cli), and exporting data to CSV. It follows standard practices, including comprehensive unit tests and clear documentation. While it executes external scripts via subprocess.run, this behavior is explicitly documented as a dependency on a sibling skill for bird identification and region lookups, with no evidence of malicious intent, data exfiltration, or prompt injection.
能力评估
Purpose & Capability
Name/description match the included scripts (set_region, append_sighting, identify_photo, export_csv). The only external dependency is the sibling superpicky-cli (invoked via its scripts/run.sh), which is appropriate for eBird region queries and BirdID calls; no unrelated credentials or system accesses are requested.
Instruction Scope
SKILL.md correctly instructs the agent to run the included scripts with absolute paths and to prompt the user for a place. It also mentions delivering CSVs to the user (chat attachment, email, etc.), which is vague and gives the agent discretion about delivery channels — not inherently malicious but worth noting. The scripts themselves only read/write workspace/bird.json, read image files, and invoke the external superpicky-cli run.sh; they do not attempt to read unrelated system files or environment variables.
Install Mechanism
No install spec; this is instruction + script bundle. All code is included in the repo and nothing is downloaded or extracted at install time.
Credentials
The skill declares no required environment variables or credentials. It optionally respects SUPERPICKY_CLI_SKILL to locate a sibling superpicky-cli installation; this optional env var is reasonable. No secrets (TOKENS/KEYS/PASSWORDS) are requested. You should still ensure superpicky-cli (if present) is trusted because these scripts invoke its run.sh.
Persistence & Privilege
always is false and the skill does not request permanent platform-wide privileges. It writes only to the user-specified project workspace (workspace/bird.json and CSV outputs) which is consistent with its purpose.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install bird-watching-mode
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /bird-watching-mode 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
bird-watching-mode 1.0.0 - Initial release: enables a complete workflow for logging bird sightings. - Prompts user for location on enable and resolves the eBird region via superpicky-cli. - Stores region and observation data in workspace/bird.json using absolute paths. - Allows recording sightings via text entry or BirdID-based photo identification. - Exports sighting summaries or detailed CSV reports on request. - Requires all script, workspace, and file arguments to be passed as absolute paths for reliable operation.
元数据
Slug bird-watching-mode
版本 1.0.0
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 1
常见问题

Bird Watching Mode 是什么?

Bird-watching log workflow: ask for place on enable, resolve eBird region via superpicky-cli region-query, persist to workspace/bird.json; record sightings (... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 115 次。

如何安装 Bird Watching Mode?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install bird-watching-mode」即可一键安装,无需额外配置。

Bird Watching Mode 是免费的吗?

是的,Bird Watching Mode 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Bird Watching Mode 支持哪些平台?

Bird Watching Mode 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Bird Watching Mode?

由 yoshino-s(@yoshino-s)开发并维护,当前版本 v1.0.0。

💬 留言讨论