ads-audit
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, and Microsoft Ads…
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
$ npx -y skills add naveedharri/benai-skills --skill operator --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/operatorContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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."
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:**
Expert automation skills for Claude Code, organized by department.
Repo: naveedharri/benai-skills
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, and Microsoft Ads…
Budget allocation and bidding strategy review across all ad platforms. Evaluates spend distribution, bidding strategy appropriateness, scaling readiness, and…
Competitor ad intelligence analysis across Google, Meta, LinkedIn, TikTok, and Microsoft. Analyzes competitor ad copy, creative strategy, keyword targeting,…
Cross-platform creative quality audit covering ad copy, video, image, and format diversity across all platforms. Detects creative fatigue, evaluates…
Google Ads deep analysis covering Search, Performance Max, Display, YouTube, and Demand Gen campaigns. Evaluates 74 checks across conversion tracking, wasted…
Landing page quality assessment for paid advertising campaigns. Evaluates message match, page speed, mobile experience, trust signals, form optimization, and…