7 text files just replaced a $75K/year executive assistant. Full end-to-end build guide for turning OpenClaw into an autonomous chief of staff — inbox, calendar, outreach, tasks, meeting notes, running on 3 cron jobs, 4 skills, and 8 markdown files. Extracted verbatim from snarktank/clawchief.
A complete, copy-paste operating system that turns OpenClaw into an autonomous chief of staff. Inbox. Calendar. Outreach. Tasks. Meeting notes. Running on 3 cron jobs, 4 skills, and 8 markdown files — while you sleep.
A real chief of staff doesn't wait for prompts. They check your inbox at 8:15am. Your calendar at 8:30. Your CRM at 9. And only interrupt you when something actually needs you.
Every AI tutorial stops at "give it tools." That's where this one starts. The 8 files, 4 skills, and 3 cron jobs below define the missing operating system — who matters, what's urgent, when to act alone, when to escalate, and what to check every 15 minutes from 8am to 9pm.
Everything on this page is extracted verbatim from github.com/snarktank/clawchief — the public starter kit Ryan Carson released for his own chief-of-staff setup. The patterns below are the ones he runs in production.
The 3-layer rule Skills tell the agent how to act. Files tell the agent who to act for. Crons tell the agent when to wake up. Without all three, you have a chatbot. With all three, you have an operator.
The entire value of the repo is the separation boundary between files. Each layer owns exactly one thing. Swap any one without breaking the others.
priority-map.md. Nowhere else.auto-resolver.md. Nowhere else.meeting-notes.md. Nowhere else.tasks.md. Nowhere else.tasks-completed.md. Nowhere else.TOOLS.md. Nowhere else.HEARTBEAT.md plus the cron jobs. Nowhere else.Three layers. Each layer is portable. Each file does one thing.
Without this file, the agent treats every email like an emergency. With it, only revenue-blocking signals from named people reach you.
When a new signal arrives from Slack, email, calendar, tasks, meeting notes, docs, or notes:
If a signal maps to no important people and no important programs, it should usually be ignored or batched and archived.
Add one block per person. Family. Co-founders. Lead investors. Top customers. Lawyers. Anyone who outranks the noise filter gets a row. Everyone else gets archived by default.
One block per active program. Revenue. Hiring. Fundraising. Each paid ad channel. Each strategic partnership. The agent uses these blocks to decide whether a signal is worth your attention.
These deterministic routes tell the agent which skill owns which class of signal:
The hardest problem with AI assistants: they either ask permission for everything or act on things they shouldn't. This file makes that decision deterministic.
After classifying a signal, the agent prefers to resolve the obvious next step instead of merely summarizing it. That means: do low-risk operational work in the same turn when authority is clear. Update the source of truth as part of doing the work. Interrupt the principal only when judgment, approval, ambiguity, or sensitivity requires it.
Low-risk, operationally clear, reversible or easy to audit. The agent does the work and updates the source of truth in the same turn.
The next step is visible, but the principal should approve the wording or decision first. Legal, policy, investor, pricing, press, emotional.
Too much ambiguity, risk, or missing authority to safely draft or send. One-line summary with the blocker and the recommendation.
Noise, duplicative, already handled, or not worth surfacing. Marked read and gone.
The agent only acts alone when all five are true. If any condition fails, it falls back to draft-and-ask.
tasks.md.Source-of-truth rule Do not auto-resolve from memory alone. Always ground the action in the relevant live source of truth before acting. Tasks →tasks.md. Outreach → CRM. Scheduling → live calendar. Priority →priority-map.md.
This is the file that turns a passive chatbot into a proactive operator. Every cron firing, every wake-up, every check-in runs this exact sequence top to bottom.
clawchief/tasks.md.priority-map.md own people and program priority.auto-resolver.md own auto-resolution policy.meeting-notes.md own meeting-notes ingestion policy.tasks.md own the live task state.The agent reads tasks.md at the start of every heartbeat. Updates it in the same turn it changes anything. Treats it as the single source of truth across sessions, devices, and crons.
tasks.md before answering any question about current tasks or composing a check-in.tasks.md, and completed history in tasks-completed.md.tasks.md.YYYY-MM-DD for all-day due dates and YYYY-MM-DD HH:MM TZ for timed due dates.Most meeting notes die in a Google Doc nobody reopens. This file makes the agent treat notes as a live signal source — it reads them, extracts action items, and creates tasks before you even leave the meeting.
workspace/memory/meeting-notes-state.json.tasks.md and any other live source of truth in the same turn.A note is not handled just because it was read. It is only handled when:
tasks.md.The ledger prevents the agent from reprocessing the same doc on the next heartbeat. Every processed record keeps a timestamp and a short summary.
Each skill reads the relevant files, then runs a deterministic workflow. Skills live in ~/.openclaw/skills/ and are auto-loaded by the runtime.
The skill reads priority-map.md, auto-resolver.md, meeting-notes.md, tasks.md, and TOOLS.md at the start of every run.
gog gmail send --reply-to-message-id=... instead of a fresh send with Re: in the subject.--reply-all when the thread recipients should stay copied.tasks.md before ending the turn.tasks.md. Check for overdue or due-today assistant tasks before starting inbox or calendar work.newer_than:3d, unread or important) and expand only if needed.The outreach sheet or CRM is the live source of truth. Local prospect files are never treated as current state.
Rule: update the tracker before marking the thread handled. Not after.
resources/partners.md.This is the exact template shipped in the repo. The subject line intentionally breaks the professional-cold-email pattern — it reads like a forwarded intro, not a campaign.
Triggered by any task CRUD request. Reads tasks.md first. Updates in the same turn. When a task creates a future dependency, adds a follow-up task immediately so nothing falls through inbox memory. Never relies on memory between sessions.
Triggered by the 02:00 cron. Preserves manually-added open tasks. On weekdays, seeds from Every weekday. Promotes due-today backlog items. Adds principal-owned meetings. Archives yesterday's completed tasks. Stays silent unless something needs human attention.
tasks.md.priority-map.md.tasks-completed.md if it exists.tasks.md into tasks-completed.md.## Today list from current open tasks plus weekday recurrences plus due-today backlog plus recurring reminders plus today's principal meetings.## Today just to rebuild it.Three required jobs plus two optional ones. Each runs in its own session target. Each has a deliberately short prompt — the skill does the heavy lifting.
Every 15 minutes, 8am to 9pm. Fires a heartbeat. Inbox scan plus calendar check plus meeting-note ingestion. Stays silent unless something needs you. Session target: main. Around 52 sweeps per day.
Runs at 02:00 in your timezone. Promotes due-today items into Today, adds calendar meetings, archives yesterday's completions. Your task list is ready before your alarm goes off. Session target: isolated. Silent delivery.
Runs at 02:00. Pulls 10 verified leads matching your geography and segment, drops them into your CRM with verified email and website. Announces completion to your primary update channel.
Performs the nightly backup to the configured Git remote using a deterministic allowlisted git flow. Never adds secrets, runtime state, logs, media, or ignored files. Keep disabled until the remote repo and allowlist are correct.
Checks whether an OpenClaw update is available and installs it via the gateway update tool. Silent unless a meaningful problem needs human attention. Enable only if you explicitly want automatic updates.
The repo is explicitly designed to run on whatever messaging surface you prefer. Keep workflows generic; only the delivery route changes.
Slack / Telegram / Signal / Discord / Google Chat
Use {{PRIMARY_UPDATE_CHANNEL}} and {{PRIMARY_UPDATE_TARGET}} in cron delivery blocks. Don't hardcode Slack unless you're explicitly Slack-only. Use one primary route — founder DM, private ops channel, or dedicated assistant thread. Don't spray updates across multiple surfaces.
Assumes OpenClaw is installed locally. GOG — the Google Workspace CLI — is a hard prerequisite. Set it up first.
Collect these before editing files. Every template placeholder maps to one of these.
{{OWNER_NAME}} · {{ASSISTANT_NAME}} · {{ASSISTANT_EMAIL}} · {{PRIMARY_WORK_EMAIL}} · {{PERSONAL_EMAIL}} · {{BUSINESS_NAME}} · {{BUSINESS_URL}} · {{TIMEZONE}} · {{PRIMARY_UPDATE_CHANNEL}} · {{PRIMARY_UPDATE_TARGET}} · {{GOOGLE_SHEET_ID}} · {{TARGET_MARKET}} · {{TARGET_GEOGRAPHY}}
snarktank/clawchief into your OpenClaw workspace as a starter. Use it as a template, not a final config.skills/executive-assistant, business-development, daily-task-manager, daily-task-prep into ~/.openclaw/skills/.clawchief/, workspace/HEARTBEAT.md, workspace/TOOLS.md, and workspace/memory/meeting-notes-state.json into ~/.openclaw/workspace/.{{ across the whole workspace. Replace each token with the real value from your 13-item list.skills/business-development/resources/partners.md. Change the subject and body to match your offer.cron/jobs.template.json into your runtime. Replace {{TIMEZONE}}, {{PRIMARY_UPDATE_CHANNEL}}, {{PRIMARY_UPDATE_TARGET}}. Enable the EA sweep first. Enable the two 2am crons after a week of tuning.Common mistake Most people enable all 3 crons before customizing the priority map. You'll get 52 useless sweeps per day. Customizepriority-map.mdandTOOLS.mdfirst, then enable the EA sweep, then the daily crons after a week of tuning.
The public starter kit intentionally does not ship these. Author your own if your setup depends on them:
AGENTS.md · SOUL.md · USER.md · IDENTITY.md · MEMORY.md · memory/
This is the verbatim install-validation checklist from the repo. Walk it after the 7-step install.
gog auth list shows the correct operating account.executive-assistant installed.business-development installed.daily-task-manager installed.daily-task-prep installed.priority-map.md installed.auto-resolver.md installed.meeting-notes.md installed.tasks.md installed.tasks-completed.md installed.HEARTBEAT.md installed.TOOLS.md installed.meeting-notes-state.json installed.tasks.md as live source of truth.tasks-completed.md.## Today.These are the lessons the author learned from running this setup in production — documented in the repo's README and REVIEW-NOTES. Every one is a tested pattern, not a hypothesis.
Comparing apples to apples. The named tools and roles a fractional founder typically pays for to get the same coverage.
This is not AI replaces humans. This is: the boring 80% of an EA's day is now files and crons. The strategic 20% — judgment, taste, relationships — is still yours.
None of this is original work by me. The blueprint above is a faithful distillation of two specific public artifacts. Credit lives with the authors.
Ryan Carson released snarktank/clawchief as the public starter kit for his own chief-of-staff setup. Every template, command, and rule on this page is copied verbatim from that repo. His launch post is the original public context for the design decisions.
The evolution of the setup was influenced by Pedro Franceschi's OpenClaw setup, which he explained during his Core Memory podcast segment with Ashlee Vance. In particular, his setup helped inspire the priority map, the auto-resolver layer, and the ingestion-pipeline mindset that turns passive context into active operational state.
This page was compiled by Ghiles Moussaoui at Muditek — AI RevOps for B2B SaaS. If you want this exact architecture wired into your real business with your real priorities, customers, and offers, that's what I do.
Last edition: an outbound system that books 153 calls for $1,200/month. The one before: an AI agent that writes proposals in 12 minutes. You get the full build. 5,300+ operators already do.