feat(skills): add screen-recording awareness skill#8011
Conversation
Add a bundled screen-recording SKILL.md that teaches the model about screen recording capabilities, lifecycle, retention, and limitations. Awareness-only — no tools, just contextual knowledge for the model. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
| metadata: | ||
| vellum: | ||
| emoji: "🎥" | ||
| os: ["darwin"] |
There was a problem hiding this comment.
🔴 Multi-line YAML metadata not parsed by line-based frontmatter parser, losing os constraint and emoji
The metadata field in the new SKILL.md uses multi-line nested YAML syntax, but the frontmatter parser (assistant/src/skills/frontmatter.ts:28-62) is a simple line-by-line key-value parser that splits on :. It does not support multi-line YAML or nested structures.
Root Cause and Impact
When the parser encounters:
metadata:
vellum:
emoji: "🎥"
os: ["darwin"]It parses each line independently, producing:
metadata→""(empty string)vellum→""(empty string)emoji→"🎥"os→["darwin"]
Since metadata is an empty string, the check at assistant/src/config/skills.ts:309 (if (metadataRaw)) evaluates to false and skips JSON parsing entirely. The metadata field on the skill will be undefined.
This causes two problems:
- The
os: ["darwin"]constraint is lost — the skill will appear available on all platforms instead of only macOS. The OS eligibility check atassistant/src/config/skills.ts:149-158will never fire becausevellum.osis undefined. - The emoji
🎥is lost — the skill won't display its intended icon.
Every other skill in the codebase uses single-line JSON for metadata (e.g., metadata: {"vellum": {"emoji": "🍎", "os": ["darwin"]}} in assistant/src/config/bundled-skills/macos-automation/SKILL.md).
| metadata: | |
| vellum: | |
| emoji: "🎥" | |
| os: ["darwin"] | |
| metadata: {"vellum": {"emoji": "🎥", "os": ["darwin"]}} |
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 30a6047ecf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| metadata: | ||
| vellum: | ||
| emoji: "🎥" | ||
| os: ["darwin"] |
There was a problem hiding this comment.
Use JSON metadata frontmatter for OS gating
The skill loader only parses metadata as a single-line JSON value (JSON.parse(fields.metadata) in assistant/src/config/skills.ts), but this frontmatter uses nested YAML under metadata:. That means metadata is effectively dropped, including os: ["darwin"], so this macOS-only skill becomes eligible on other platforms and can be surfaced/invoked where screen recording is unavailable.
Useful? React with 👍 / 👎.
| ## How It Works | ||
|
|
||
| - **Automatic in QA mode**: When a QA/test session starts, recording begins automatically before any destructive actions (clicks, typing, etc.) | ||
| - **Can be requested explicitly**: Sessions can be configured with `requiresRecording: true` to enable recording outside of QA mode |
There was a problem hiding this comment.
Avoid claiming requiresRecording works outside QA
This instruction says requiresRecording: true enables recording outside QA mode, but the macOS session starts recording only in the qaMode path and app call sites only provide a ScreenRecorder when qaMode == true. In practice, a non-QA session with only requiresRecording cannot start recording and can hit recording-gate failure behavior, so this guidance teaches an unsupported flow.
Useful? React with 👍 / 👎.
Summary
screen-recordingskill with SKILL.md that teaches the model about screen recording capabilitiesTest plan
🤖 Generated with Claude Code