We run marketing in Dennis Yu’s shop the same way we run code. Cursor is the desk. Git is the notebook. A public skill and a public article are how someone else’s agent copies the work. That is the whole setup. The rest of this page is the clicks, the folders, and one weekend we actually shipped.
It is not a Cursor tutorial. It is not a prompt library. If the notes live in a chat, they die in the chat. If the agent has to ask “Run?” on every command, the operator becomes the bottleneck. We turned both of those off on purpose.
The desk is Cursor
Local Service Spotlight marketing is a pile of live systems: WordPress sites, speaker pages, ads, a Task Library, a Content Factory. A human used to tab between them and paste. Now the human sits in Cursor and talks. The agent reads the repo, hits the live URL, writes the file, and publishes.
That only works if two things are true. The notes are in git, not in the operator’s head. And the agent is allowed to run without a tap on every command.
Run Everything (stop tapping Run)
Cursor’s default is Auto-review. Safe commands go. Publishing a blog post, touching GitHub, or writing outside the project still pops a Run button. That is fine for a first week. It is tedious when the job is “write the article and put it on the site.”
On 17 August 2026 Dennis asked to stop clicking. The switch:
- Cursor Settings
- Agents
- Approvals & Execution
- Run Everything
Reload the window if the dropdown still shows the old mode. The setting is documented under Cursor’s agent run modes.
What that means in this shop. The agent will publish to WordPress, push git, and call APIs without asking. That is the point. Secrets still do not belong in chat or in the repo. WordPress keys are application passwords, stored in the Mac Keychain, never pasted into the article. The how-to is how to give your AI agent the keys to WordPress. A GitHub look-only token is still a human click, because GitHub will not let an agent mint that key.
Green: Run Everything when the facts live in git, secrets stay out of the repo, and a named human already set the fees and brand names.
Red: Leave Auto-review on forever if every live publish still needs a tap. That is the operator becoming the bottleneck.
| Mode | What you click |
|---|---|
| Auto-review | Run on live publishes and anything outside the project |
| Allowlist | Run unless the command is already blessed |
| Run Everything | Nothing. The agent goes. |
Notes live in a repo
A chat is a scratch pad. The notebook is git. If the next agent cannot clone it, it did not happen. The Claude setup page still uses Obsidian as a second brain. Cursor marketing in this shop uses a git repo, because another vendor’s agent can clone it without a login.
We keep three public-safe layers:
- The working kit — facts the agent may paste. Example: the speaker kit at github.com/dennisyu/dennis-yu-speaking. Fees, bios, talk titles, photos. No street address. No private phone.
- The skill — the SOP. Same kit, machine-readable. keep-speaker-bureau-profile-bookable is the public install file. The house library is the Task Library dashboard.
- The article — the page a stranger or another vendor’s agent can find without a login. Writing rules are public: article guidelines.
Shared operating notes for the team also live in git. BlitzBase is the installable knowledge folder. Do not put passwords in it. Do not put unpublished fees in a public repo. If the human has not set a number, the agent leaves the field empty.
There is a fourth layer, internal: every finished job writes agent-notes/YYYY-MM-DD-model-slug.md to the private GitHub repo Local-Service-Spotlight/agent-runtime. That file is not the public article. It is how the next agent — Claude, Codex, Grok, Gemini — sees what actually happened, including the ugly parts. Public raw/blob URLs 404. No secrets.
Skills are how the next agent starts
A skill is not a vibe. It has inputs, steps, a definition of done, and a link to the hub article. House format is the Task Library standard: one file per job, downloadable, tied to a short URL.
When we document a marketing motion, we do not write a Google Doc. We write the skill, register it, rebuild the dashboard, and publish the hub. Other people’s agents pick it up from the zip, the public GitHub folder, or the article. That is the build-in-public rule: anything we do should be copyable.
The article is the public copy
We write to the Local Service Spotlight article guidelines. Short version:
- Write GCT first: goal, content, targeting.
- Do not invent a second URL next to a page that already owns the keyword. That is the SEO tree rule on the same Content Factory page.
- Answer the title in the first paragraph.
- Real visual above the fold. No stock.
- People link to their site. Methods link to the definitive page.
- Author is the person. On this site that is Dennis Yu, not admin.
- No “delve,” no “digital landscape,” no “unlocking the power.”
The older tutorial stays live as the archive leaf: Blog and Article Posting Guidelines. We do not delete it. We do not noindex it.
Worked example: the speaker kit, one weekend
16–17 August 2026. The job was “keep the speaker bureau profile bookable.” Empty eSpeakers fields, a retired brand still on the form, fees that said inquire. We did not write a new process from memory. We put the facts in git, wrote the skill, published the hub, and pointed the public dashboard at the live library.
| What shipped | URL |
|---|---|
| Speaker kit (public git) | github.com/dennisyu/dennis-yu-speaking |
| Public skill file | SKILL.md in that repo |
| Definitive article | blitzmetrics.com/speaker-kit |
| Meta-article of the run | how we documented the speaker kit task |
| Dashboard other agents search | task-library-dashboard |
| Booking page | dennisyu.com/speaking |
| Inquiry form | speaking inquiry |
Fees in that kit, set by Dennis, not invented by the agent: $5,000 U.S. + travel, $7,500 international + travel, $5,000 virtual. The skill says: if the number is not in the kit, stop.
One plumbing miss almost hid the new skill. The public dashboard page still iframed an old GitHub Pages copy. We pointed it at local-service-spotlight.github.io/task-library. That is what “propagate all the way through” means. Git is not enough if the page visitors load is yesterday’s iframe.
What this is not
- Not BlitzBase itself. BlitzBase is the knowledge folder. Cursor is the desk that reads it.
- Not a persistent agent on a schedule. This page is the human-in-Cursor loop. Scheduled jobs are a later rung.
- Not pitching a conference. That is the speaker kit plus the guest-appearance skill. Cursor is how we keep those files current.
Copy this setup
- Put the facts in a public-safe git repo. One folder. No secrets.
- Open that folder in Cursor. Tell the agent the repo is the source of truth.
- Set Approvals & Execution to Run Everything once you trust the loop. Until then, Auto-review.
- Write a
SKILL.mdwith inputs, steps, and a definition of done. Point it at a hub article. - Publish the hub on a site agents can read. Follow the article guidelines.
- Check the live page a stranger loads. If an iframe still points at an old copy, you did not ship.
Skill packs and the readable process: skill packs. The speaker motion, if you book stages: speaking inquiry.
Written from the 16–17 August 2026 Cursor sessions that shipped the speaker kit, the Task Library skill, and the Run Everything switch. Byline is Dennis Yu. A named human still sets fees and brand names in the kit before an agent pastes them.
