Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .agents/skills/watchlist-md/LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Injae

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
5 changes: 2 additions & 3 deletions .agents/skills/watchlist-md/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
name: watchlist-md
description: >-
Use when recording, reviewing, or updating WATCHLIST.md/WL-YYYYMMDD-NNN deferred checks for CI/deploy/job/sync/order/PR/ticket/email 후속 체크; not generic calendars/wakeups/polling or lifecycle words unless WATCHLIST-scoped.
description: Record, review, or update WATCHLIST.md/WL-YYYYMMDD-NNN deferred checks and 후속 체크; not generic reminders, wakeups, polling, or unscoped lifecycle requests.
---

# WATCHLIST.md
Expand Down Expand Up @@ -44,7 +43,7 @@ unused `WL-YYYYMMDD-NNN`, edit `## Open` only.
### WL-YYYYMMDD-NNN — Short title
- status: open
- priority: P1
- owner: user|assistant_on_review|both|external
- owner: assistant_on_review
- due_at: YYYY-MM-DDTHH:MM:SS+09:00
- created_at: YYYY-MM-DDTHH:MM:SS+09:00
- source: short stable pointer, safe link, file, PR, issue, or conversation note
Expand Down
9 changes: 1 addition & 8 deletions .agents/skills/watchlist-md/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
interface:
display_name: "WATCHLIST.md"
short_description: "Track deferred checks and 후속 체크 in WATCHLIST.md"
default_prompt: >-
Use $watchlist-md when a user asks to add, review, complete, drop, delete,
archive, or check WATCHLIST.md entries, or when the request mentions a
WL-YYYYMMDD-NNN item ID. Generic lifecycle words such as 완료, 삭제, 취소, 드롭, 차단, 연기,
보관, or 아카이브 should not trigger this skill unless they clearly refer to
WATCHLIST.md or a WL-YYYYMMDD-NNN item. This skill records Markdown notes only; it does
not schedule reminders, wakeups, or background checks. Do not store secrets,
signed URLs, raw logs, raw emails, or private dashboard excerpts.
default_prompt: "Use $watchlist-md to record a deferred CI check in WATCHLIST.md and report its ID, due_at, and scheduler status."
2 changes: 1 addition & 1 deletion .agents/skills/watchlist-md/assets/WATCHLIST.template.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Do not copy the literal ID or timestamps; generate fresh values when adding an i
### WL-20260514-001 — GitHub Actions 결과 확인
- status: open
- priority: P1
- owner: user|assistant_on_review|both|external
- owner: assistant_on_review
- due_at: 2026-05-14T17:00:00+09:00
- created_at: 2026-05-14T16:30:00+09:00
- source: GitHub Actions run for PR #123
Expand Down
26 changes: 18 additions & 8 deletions .agents/skills/watchlist-md/references/format.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ Allowed `archive_policy` values:
When `archive_policy: suggest` is used, add `archive_after_days: N` with a
positive integer.

Use a non-empty IANA time-zone name such as `Asia/Seoul` for `timezone`. The
maintainer validator currently checks this field for presence only; it does not
resolve the name against a host timezone database.

## Sections

Required sections:
Expand Down Expand Up @@ -84,17 +88,23 @@ Keep item fields in this order:

`priority`:

- `P0`
- `P1`
- `P2`
- `P3`
- `P0`: critical or urgent
- `P1`: high or time-sensitive
- `P2`: normal
- `P3`: low or optional

Priority expresses review urgency, not permission to run automatically. Preserve
an explicit user or repository convention; otherwise choose conservatively.

`owner`:

- `user`
- `assistant_on_review`
- `both`
- `external`
- `user`: the user acts at the next explicit review
- `assistant_on_review`: the assistant acts when the item is explicitly reviewed
- `both`: user and assistant each have a review-time action
- `external`: another person or system owns the next action

Owner describes who acts during an explicit WATCHLIST review. It does not grant
background execution, wakeups, or access to an external system.

## Required populated values

Expand Down
17 changes: 11 additions & 6 deletions .agents/skills/watchlist-md/references/lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,18 @@ an update, a check is performed, or the result is known.
| `blocked` | `snoozed` | blocker remains but the next review time is known | `due_at`, `last_checked_at`, `result` |
| `blocked` | `done` | `done_when` is satisfied or the user reports completion | `last_checked_at`, `result` |
| any active status | `dropped` | user says to drop, cancel, or ignore | `result` |
| `done` or `dropped` | active status | user explicitly asks to reopen | `result` describing the reopen reason |
| `done` or `dropped` | active status | user explicitly asks to reopen | `result` describing the reopen reason, plus the target status requirements in `format.md` |

When marking an item done, the default lifecycle update is: set `status: done`,
fill `last_checked_at`, fill `result`, and move the completed item under `## Done`
if that section exists. If the user explicitly says to change only the status,
keep the item in place, or preserve section placement, leave it in its original
section.
By default, section placement follows status:

- Keep `open`, `snoozed`, and `blocked` items under `## Open`.
- Move `done` and `dropped` items under `## Done` when that section exists.
- Move a reopened `done` or `dropped` item back under `## Open`.
- Move terminal items under `## Archive` only after an explicit archive request.

These moves are part of the default lifecycle update. If the user explicitly
asks to change only the status, keep an item in place, or preserve section
placement, leave it in its original section.

## Archive Policy

Expand Down
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

### Added

- Added regression coverage for validator false negatives, trigger-boundary
pairs, exact package contents, and template/example drift.
- Added the MIT notice to the standalone runtime bundle.
- Added English and Korean semantic coverage for default local/private
watchlist creation when no WATCHLIST file exists.
- Added a broad staging self-check to keep private `.watchlist/WATCHLIST.md` data
Expand All @@ -17,10 +20,25 @@

### Changed

- Aligned runtime metadata, lifecycle/enum guidance, vendor installation paths,
and compatibility claims with their documented contracts and smoke status.
- Clarified that semantic-case checks lint declared fixtures and contracts; they
do not execute an LLM, agent, or runtime.
- Made the installable skill bundle py-free and slimmer by moving the WATCHLIST
validator and self-check prompts to source-repository maintainer tooling,
trimming `SKILL.md`, tightening package guards, and preserving CI validation.

### Fixed

- Rejected invalid skeleton values, misplaced top-level fields, empty open-item
semantics, and overflowing timezone-offset minutes in the maintainer validator.
- Scoped positive trigger cases to explicit WATCHLIST context and preserved the
original generic prompts as negative routing cases.
- Replaced the clean-clone-invalid contributor validation command and enforced
the documented exact runtime package allowlist.
- Allowed explicit WATCHLIST negation as a declared no-trigger intent and made
the dependency-free YAML subset validator track parent container types.

## [0.4.2] - 2026-06-10

### Changed
Expand Down
8 changes: 6 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

Keep changes narrow and update the files that define the same behavior.

When changing WATCHLIST lifecycle behavior, update:
When changing WATCHLIST behavior or runtime packaging, update the applicable sources:

- `.agents/skills/watchlist-md/SKILL.md`
- `.agents/skills/watchlist-md/LICENSE.txt` when repository licensing changes
- `.agents/skills/watchlist-md/agents/openai.yaml` if trigger or boundary text changes
- `README.md`
- `README.ko.md`
- `.agents/skills/watchlist-md/assets/WATCHLIST.template.md` if the file format changes
- `.agents/skills/watchlist-md/references/format.md` or `lifecycle.md` when its contract changes
- `examples/WATCHLIST.example.md`, which must mirror the canonical runtime template
- `evals/prompts.csv`
- `evals/self_checks.yaml`
- `evals/cases/*.json` and `evals/trigger_cases.json`
- `evals/test_check_watchlist.py`
- `CHANGELOG.md`

Expand All @@ -20,7 +24,7 @@ prerequisites for the py-free skill bundle.

```bash
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s evals -p 'test_*.py'
python3 evals/check_watchlist.py .watchlist/WATCHLIST.md --strict-format --strict-safety --require-archive-section
python3 evals/check_watchlist.py examples/WATCHLIST.example.md --strict-format --strict-safety --require-archive-section
python3 evals/check_watchlist.py .agents/skills/watchlist-md/assets/WATCHLIST.template.md --strict-format --strict-safety --require-archive-section
python3 evals/check_release_metadata.py
python3 evals/check_policy_markers.py
Expand Down
9 changes: 5 additions & 4 deletions README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

[English README](README.md)

`WATCHLIST.md`는 deferred check를 기록하기 위한 경량 **AI Agent Skill**이자 AgentSkills 호환 Markdown workflow입니다. Codex, Claude Code, OpenClaw, Gemini CLI, Kilo, Hermes가 CI 후속 확인, 배포 검증, PR 확인, 티켓, 작업, 데이터 동기화, 이메일을 scheduler, daemon, database, MCP server 없이 추적하도록 돕습니다.
`WATCHLIST.md`는 deferred check를 기록하기 위한 경량 **AI Agent Skill**이자 AgentSkills 호환 Markdown workflow입니다. Codex, Claude Code, OpenClaw, Gemini CLI, Kilo, Hermes에서 CI 후속 확인, 배포 검증, PR 확인, 티켓, 작업, 데이터 동기화, 이메일을 scheduler, daemon, database, MCP server 없이 추적하도록 설계됐습니다. 문서상 format/path 호환성과 실제 runtime 검증은 구분하며, runtime smoke matrix의 pending 상태를 기준으로 봅니다.

이 스킬은 자율 스케줄러, 자율 알림, daemon, database, cron job, UI, background worker가 아닙니다. 나중에 확인할 일을 기록할 뿐이며, 스스로 깨어나거나 polling, 알림, 확인 실행을 하지 않습니다.

Expand Down Expand Up @@ -38,10 +38,11 @@ python3 evals/check_watchlist.py examples/WATCHLIST.example.md
.agents/skills/watchlist-md
```

runtime bundle에는 스킬 지시문, 템플릿, OpenAI 메타데이터, 짧은 reference가 들어갑니다:
runtime bundle에는 스킬 지시문, 라이선스 고지, 템플릿, OpenAI 메타데이터, 짧은 reference가 들어갑니다:

```text
.agents/skills/watchlist-md/SKILL.md
.agents/skills/watchlist-md/LICENSE.txt
.agents/skills/watchlist-md/assets/WATCHLIST.template.md
.agents/skills/watchlist-md/agents/openai.yaml
.agents/skills/watchlist-md/references/format.md
Expand Down Expand Up @@ -71,11 +72,11 @@ Markdown 편집으로 add, review, complete, blocked, snoozed, dropped, explicit

`.agents/skills/watchlist-md/`에 CLI, MCP server, browser automation, bundled validator, smoke transcript, screenshot, 긴 eval corpus를 넣지 마세요.

Gemini CLI, Kilo, OpenClaw, Hermes 같은 AgentSkills 호환 런타임은 가능하면 같은 스킬 디렉토리를 사용하세요. OpenClaw와 Hermes는 runtime smoke 전까지 AgentSkills 호환/manual 지원으로 보고, 리포지토리 루트가 아니라 `SKILL.md`가 루트에 있는 스킬 디렉토리를 설치하세요.
각 벤더가 문서화한 discovery path 또는 install flow를 사용하세요. format/path 호환성은 runtime smoke pass가 아닙니다. 설치 세부사항과 pending 검증 matrix는 `docs/install.md`와 `docs/runtime-smoke.md`에 있습니다.

## Docs

- [Installation](docs/install.md): Codex, Claude Code, OpenAI Skills zip packaging, AgentSkills-compatible runtime notes.
- [Installation](docs/install.md): vendor discovery path, Codex·Claude Code setup, standalone zip packaging.
- [Storage and privacy](docs/storage-and-privacy.md): generated `.watchlist/WATCHLIST.md`, shared root watchlists, archive policy, concurrent edits, retention.
- [Validation](docs/validation.md): validator commands, strict-safety behavior, semantic cases, item format expectations.
- [Runtime smoke](docs/runtime-smoke.md): transcript나 raw log 없는 compact vendor/runtime smoke matrix.
Expand Down
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

[Korean README](README.ko.md)

`WATCHLIST.md` is a lightweight **AI Agent Skill** and AgentSkills-compatible Markdown workflow for recording deferred checks. It helps Codex, Claude Code, OpenClaw, Gemini CLI, Kilo, and Hermes track CI follow-ups, deployment verification, PR checks, tickets, jobs, data syncs, and emails without creating a scheduler, daemon, database, or MCP server.
`WATCHLIST.md` is a lightweight **AI Agent Skill** and AgentSkills-compatible Markdown workflow for recording deferred checks. It is designed for Codex, Claude Code, OpenClaw, Gemini CLI, Kilo, and Hermes to track CI follow-ups, deployment verification, PR checks, tickets, jobs, data syncs, and emails without creating a scheduler, daemon, database, or MCP server. Documented format and path compatibility is separate from real runtime verification; see the pending rows in the runtime smoke matrix.

It is not an autonomous scheduler, reminder service, daemon, database, cron job, UI, or background worker. It records what should be checked later; it does not wake up, poll, notify, or run checks by itself.

Expand Down Expand Up @@ -38,10 +38,11 @@ Install or copy the skill directory whose root contains `SKILL.md`, not the repo
.agents/skills/watchlist-md
```

The runtime bundle contains the skill instructions, template, OpenAI metadata, and compact references:
The runtime bundle contains the skill instructions, license notice, template, OpenAI metadata, and compact references:

```text
.agents/skills/watchlist-md/SKILL.md
.agents/skills/watchlist-md/LICENSE.txt
.agents/skills/watchlist-md/assets/WATCHLIST.template.md
.agents/skills/watchlist-md/agents/openai.yaml
.agents/skills/watchlist-md/references/format.md
Expand Down Expand Up @@ -71,11 +72,11 @@ The installable runtime skill stays Python-free. Agents edit Markdown directly f

Do not add a CLI, MCP server, browser automation, bundled validator, smoke transcript, screenshot, or long eval corpus to `.agents/skills/watchlist-md/`.

AgentSkills-compatible runtimes such as Gemini CLI, Kilo, OpenClaw, and Hermes should use the same skill directory when possible. For OpenClaw and Hermes, treat support as AgentSkills-compatible/manual until runtime-smoked; install the skill directory whose root contains `SKILL.md`, not the repository root.
Use each vendor's documented discovery path or install flow. Format/path compatibility does not count as a runtime smoke pass; install details and the pending verification matrix are in `docs/install.md` and `docs/runtime-smoke.md`.

## Docs

- [Installation](docs/install.md): Codex, Claude Code, OpenAI Skills zip packaging, and AgentSkills-compatible runtime notes.
- [Installation](docs/install.md): vendor discovery paths, Codex and Claude Code setup, and standalone zip packaging.
- [Storage and privacy](docs/storage-and-privacy.md): generated `.watchlist/WATCHLIST.md`, shared root watchlists, archive policy, concurrent edits, and retention.
- [Validation](docs/validation.md): validator commands, strict-safety behavior, semantic cases, and item format expectations.
- [Runtime smoke](docs/runtime-smoke.md): compact vendor/runtime smoke matrix without transcripts or raw logs.
Expand Down
Loading
Loading