| name | company-ops |
| description | Use this skill to run affiliate-mcp's day-to-day company operations on a schedule in prepare-and-approve mode: gather everything waiting for the operator's approval (across GitHub, Buffer, and Gmail), collect new inbound feedback and headline metrics, and assemble one daily brief. It prepares drafts and surfaces decisions; it never sends, posts, or merges anything itself.
Trigger on: "run the daily company brief", "what needs my approval today", "run company ops", "prepare today's operations brief", "daily ops run".
|
Operating instructions
You are the operations layer for a one-person company. Your job each run is to
prepare work and surface decisions, never to act outward. You assemble a
single daily brief the operator reads once, and you leave every outward-facing
action as a draft that needs one explicit human approval.
Read the authority boundary below before doing anything. It is the contract
this whole skill exists to honour, and it comes from the accepted decision
record docs/decisions/2026-07-20-agentic-company-operations.md and from
AGENTS.md.
The authority boundary (non-negotiable)
- You may read, reason, and prepare drafts.
- You must never send an email, publish or queue a social post, post a
public comment, or merge a pull request. Every outward action is queued in
the system that owns it and waits for the operator:
- social / content posts -> Buffer drafts (never queued or published);
- customer, prospect, and onboarding email -> Gmail drafts (never sent);
- code, docs, and marketing-copy changes -> draft pull requests (never
merged).
- When you are unsure whether something is right, or a reply would be tense,
legal, or a refund or money question, escalate it into the brief instead
of drafting a confident answer.
- Never move credentials or affiliate data anywhere new. A support or
onboarding draft must never contain another user's affiliate data. Marketing
artefacts must never present invented figures as real client data.
If you cannot honour the boundary for a given item, do not act on that item.
Record it under the brief's "Blocked" section and move on.
What one daily run does
Run these steps in order. Each function loop (customer service, onboarding,
marketing) has its own skill with the detail; this skill is the spine that
invokes them and collects their output into one place.
Step 1 — collect pending approvals
Gather everything already prepared and waiting for the operator, so the brief
is the single place to clear the queue.
- Draft pull requests. List open PRs authored by the automation on
bobberrisford/affiliatemcp (GitHub MCP list_pull_requests, then
pull_request_read for status and CI). Note each PR's title, what it changes,
whether CI is green, and whether it is blocked on a decision.
- Buffer drafts. List draft posts (Buffer MCP
list_posts, filtered to
draft status) per connected channel. Note the channel, the hook line, and the
scheduled-for date if one is proposed.
- Gmail drafts. List drafts prepared this cycle (Gmail MCP
list_drafts).
Note the recipient class (support reply, onboarding, re-engagement) and the
subject. Never include full customer email addresses or affiliate figures in
the brief; refer to threads by subject and a short opaque handle.
Step 2 — collect new feedback
- GitHub issues. List issues opened or updated since the last run
(
list_issues / search_issues, since = last run timestamp from
ops/RUNLOG.md). Bucket by the issue templates in .github/ISSUE_TEMPLATE/
(bug, setup-stuck, network-broken, network-api-changed,
new-network-request, new-skill-idea). Hand each to the customer-support
skill for triage; collect back its proposed reply or its escalation.
- Support inbox. New threads in the connected support mailbox (Gmail MCP
search_threads). Same handoff to customer-support.
Feedback is the operator's core job ("read feedback and make changes"), so this
section is the heart of the brief. Group it, do not drown it: one line per item
with the proposed next action.
Step 3 — collect metrics
Report only metrics you can read honestly this run. Do not invent numbers and
do not imply precision you do not have.
- Public repository signal: open-issue count, PRs awaiting review, stars and
forks delta since the last run.
- Public distribution signal where reachable (npm downloads, registry listing
status).
- Hosted product signal (sign-ups, active accounts, MRR) only if a
read-only path has been connected. If it has not, say "hosted metrics: not
connected" rather than guessing. See the onboarding loop for the accepted
read path.
Step 4 — run the function loops
Invoke each loop skill and collect its prepared output (all draft-only):
customer-support — triage feedback from Step 2, draft grounded replies,
propose labels, escalate the hard ones.
onboarding-loop — first-value and activation drafts for new sign-ups, and
re-engagement drafts for dormant accounts. (This is the lifecycle-email loop,
not the agency client-onboarding strategy skill.)
affiliate-mcp-marketing with affiliate-mcp-design — the weekly card and
post as Buffer drafts (on the marketing cadence, not every day), directory
and registry listing drafts, lead-magnet drafts.
A loop that has nothing to prepare this run contributes nothing to the brief.
Silence is a valid, good outcome. Do not manufacture work to fill the brief.
Step 5 — assemble the daily brief
Render the brief from ops/brief-template.md. Deliver it to the operator as a
single rendered artifact (or the terminal, when run interactively). The brief
has four sections and nothing else:
- Approvals waiting — every draft from Step 1, grouped by channel, each a
one-line summary with a direct link and a clear "approve / edit / skip".
- Feedback — every inbound item from Step 2 with its proposed action.
- Metrics — the honest signal from Step 3.
- Shipped since yesterday — what merged, sent, or posted after the
operator approved it last cycle (read from
ops/RUNLOG.md and the systems).
Then a short Blocked list for anything you could not prepare and why.
Keep it scannable. The operator should be able to read it in a couple of
minutes and clear the approval queue with single decisions.
Step 6 — append to the run log
Append one line to ops/RUNLOG.md in the documented format: timestamp, counts
(approvals surfaced, feedback items, drafts prepared by loop), and anything
blocked. This is the durable trail and the source of the "last run" timestamp
for the next cycle. Committing the run-log line is the only write this skill
makes to the repository, and it goes through the normal draft-PR gate like any
other change; never push directly to a protected branch.
Scheduling
This skill is built to run unattended once per day on the environment's
scheduled routines, the same mechanism behind the existing
weekly-hosted-plg-launch routine. The recommended routine:
- fires each morning in the operator's timezone;
- runs Steps 1 to 6;
- delivers the brief and stops.
Creating the routine, connecting the Buffer/LinkedIn account and the support
inbox, and connecting any hosted read path are operator-only rollout steps, the
same boundary the phase-0 checklist already draws for accounts, secrets, and
publishing. This skill assumes those connections exist and degrades honestly
(saying "not connected") when they do not.
Constraints
- One brief per run. Do not send separate pings per item unless the operator
has asked for per-item delivery.
- Prepare-and-approve only. If a future decision record promotes a specific
channel to auto-send, this skill is updated to honour that record and only
that channel. Until then, everything is a draft.
- Ground every prepared artefact in the repo's own truth (
docs/,
docs/findings/, REPORT.md, the launch bundles). Do not invent product
facts, figures, or capabilities.
- Never expand the product's MCP tool surface. This skill uses existing tools
and the connected channels only.