ads-audit
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok…
Build and schedule a personalized Operator prompt that runs a Baalda vault as a second brain on a recurring cadence. Run it from inside the vault: it reads Context/ and CLAUDE.md first to infer org, team, brand voice and paths, then asks only the gaps (cadence, connectors, DM
Claude Code
$ npx -y skills add naveedharri/benai-skills --skill operator --agent claude-code
Codex
$ npx skills add naveedharri/benai-skills --skill operator -a codex -y
Cursor
$ npx skills add naveedharri/benai-skills --skill operator -a cursor -y
Gemini CLI
$ npx skills add naveedharri/benai-skills --skill operator -a gemini-cli -y
GitHub Copilot
$ npx skills add naveedharri/benai-skills --skill operator -a github-copilot -y
OpenCode
$ npx skills add naveedharri/benai-skills --skill operator -a opencode -y
Windsurf
$ npx skills add naveedharri/benai-skills --skill operator -a windsurf -y
name: operator description: "Build and schedule a personalized Operator prompt that runs a Baalda vault as a second brain on a recurring cadence. Run it from inside the vault: it reads Context/ and CLAUDE.md first to infer org, team, brand voice and paths, then asks only the gaps (cadence, connectors, DM recipient, budgets, signature), writes the rendered prompt locally, and invokes the schedule skill to wire the recurring trigger. Baalda-aware: routes every note move or rename through the app or the Baalda MCP so notes keep their doc_id, and never touches .context/. Use when the user says \"set up the operator\", \"build my operator prompt\", \"operate my Baalda vault\", \"schedule my OS\", \"vault operator\", or runs /operator." disable-model-invocation: true
Build a personalized Operator prompt that runs the user's Baalda vault on a recurring schedule.
These are app invariants, not preferences. Breaking them corrupts note identity or the sync state, and the Operator runs unattended, so a broken rule compounds across every run.
1. **Run from the vault root.** The vault root is the folder the user opened in Baalda. 2. **`.context/` is off-limits.** Baalda keeps its SQLite index, CRDT store and `config.json` there. Never read, write, walk or index it. Same for `.git` and `attachments/`. 3. **Write files, don't shell out to move them.** Creating and editing `.md` files with normal tools is fully supported: the watcher picks the change up in about 150ms and merges it as a CRDT operation, so an Operator edit and a human keystroke coexist instead of clobbering. 4. **Never `mv` or `rm` a synced note.** A note's identity is a `doc_id`, not its path. An external move reads as delete plus create: the note gets a new `doc_id` and its history, backlinks and share settings do not follow. The Operator moves and renames through `move_note` / `move_folder` on the Baalda MCP, or not at all. 5. **Prefer `[[wikilinks]]` over relative paths** so links survive a later move.
Build a personalized Operator prompt that runs the user's second brain on a recurring schedule. The Operator is a fully autonomous maintenance agent — one session = one run, no questions, no confirmations, executes and reports.
This skill does **four** jobs, in order:
1. **Discover** what the vault already knows. Read `Context/` and `CLAUDE.md` silently — extract org name, team scope, brand voice, vault folders, runtime conventions. 2. **Ask only the gaps.** Cadence, connectors, DM recipient, budgets, signature. Don't re-ask anything Phase 0 already pulled out of the vault. 3. **Render and save** the personalized prompt locally. 4. **Schedule it.** Hand off to the `schedule` skill (via the `Skill` tool) so the trigger is wired before the run ends — the user does not need to manually run `/schedule create`.
Read both before generating output.
---
The user invokes this skill **from inside their vault folder locally**. Everything here is filesystem-only. Do NOT call any `vault_*` MCP tools — the Vault MCP only matters at *runtime* when the rendered Operator agent runs.
1. **Verify the cwd is a Baalda vault that has been set up.** Print the current directory and check for both markers:
pwd && ls -a | grep -E '^\.context$' || echo "no .context/ — not yet opened in Baalda"
Then confirm `claude.md` or `CLAUDE.md` exists at the cwd root. If neither exists, the vault has not been set up: point the user at `/setup` and stop. 2. **List top-level folders.** `Glob` pattern `*/` at cwd. Cache the result as `{{VAULT_FOLDERS}}` (one folder name per line). 3. **Read `CLAUDE.md`.** Pull conventions: signature style, em-dash rule, voice rules, folder routing, any explicit operator paths, `os-mode` (professional vs business). 4. **Find the curated layer, then read it by subject.** Do not assume it is called `Context/`.
Resolve it: the folder named in `CLAUDE.md`'s routing table as holding identity, brand or strategy; else a top-level folder from `{{VAULT_FOLDERS}}` named `Context`, `About`, `Me`, `Identity`, `Personal`, `Brand` or similar; else the folder whose files actually carry that content. Cache it as `{{CONTEXT_ROOT}}`.
Then `Glob` `{{CONTEXT_ROOT}}/**/*.md` and read what is there. **Match on subject, not on filename**, because the same content sits at a different path in every vault:
| Looking for | Common homes | | --- | --- | | Operator profile: name, role, focus | `me.md`, `operator.md`, `personal-brand/background.md` | | Org name, mission, products, locations | `business.md`, `organization.md`, `company.md` | | Team member full names, roles, who handles what | `team.md`, or one file per person under a `Team/` role folder | | Voice, and any hex colors that could seed the signature | `brand.md`, `voice.md`, `personal-brand/voice.md`, `brand/brand-kit.md` | | Current focus, OKRs, the funnel or workstream map | `strategy.md` | | Who the audience is | `icp.md`, or one file per segment under `icp/` | | External people to be aware of, outside team scope | `stakeholders.md` |
A row with no match is a gap, not an error: note it and carry on. A row matched by several files reads all of them. **Never write to this layer**, it is human-owned. 5. **Cache inferred values:**
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok…
Budget allocation and bidding strategy review across all ad platforms. Evaluates spend distribution, bidding strategy…
Competitor ad intelligence analysis across Google, Meta, LinkedIn, TikTok, and Microsoft. Analyzes competitor ad copy, creative…
Cross-platform creative quality audit covering ad copy, video, image, and format diversity across all platforms. Detects creative…
Google Ads deep analysis covering Search, Performance Max, Display, YouTube, and Demand Gen campaigns. Evaluates 74 checks across…
Landing page quality assessment for paid advertising campaigns. Evaluates message match, page speed, mobile experience, trust…
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…