Skip to content

thoughtpilot99/agency-ops-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ› οΈ Agency Ops Stack

Author once in Claude Code. Run autonomously on your own infra with Hermes Agent.

A complete, working stack for automating the six repeating tasks that eat every agency operator's week.

License: MIT agentskills.io MCP Built with Claude Code Runtime: Hermes Agent PRs Welcome

Quick start Β· Architecture Β· The six skills Β· MCP servers Β· FAQ Β· Article


🧭 Table of contents


🎯 What this is

Most agencies run on six repeating tasks:

Task What it eats
Status updates for clients 4-6 hours per account lead per week
Briefs on new leads 30-60 min per inbound lead
First drafts of content 2-4 hours per piece
Daily mention + competitor checks 30 min per morning per operator
Internal handoffs and retros 2-3 hours per week per team
Final QA before things ship 30-90 min per deliverable

This repo automates all six on a stack of two free, open tools.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     β”‚   SKILL.md (open    β”‚                     β”‚
β”‚    Claude Code      β”‚   agentskills.io    β”‚    Hermes Agent     β”‚
β”‚   (build environ.)  β”‚ ◄─── format ────►   β”‚   (autonomous       β”‚
β”‚                     β”‚                     β”‚     runtime)        β”‚
β”‚  β€’ Authors skills   β”‚                     β”‚                     β”‚
β”‚  β€’ Writes MCP svrs  β”‚   Skills move       β”‚  β€’ Cron scheduler   β”‚
β”‚  β€’ Iterates fast    β”‚   between freely    β”‚  β€’ Persistent mem   β”‚
β”‚  β€’ Reviews diffs    β”‚                     β”‚  β€’ Slack/TG/Discord β”‚
β”‚                     β”‚                     β”‚  β€’ Self-hosted, MIT β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β–²                                            β”‚
        β”‚                                            β–Ό
   You sit here                              Your team sees this
   refining skills.                          in Slack every day.

Stack at a glance:

  • πŸ€– Six working skills. Drop them into Hermes and they run.
  • πŸ”Œ Generic CRM template. Adapt to HubSpot, Salesforce, Pipedrive, Close, Folk, Attio, or any CRM.
  • 🧱 Two complete MCP servers. Pipedrive (CRM) and Notion (project tracker).
  • πŸ“œ Setup guide. End-to-end walkthrough from zero to one running skill.
  • πŸ” Self-hosted, MIT-licensed. Your data stays on your infrastructure.

⚑ Quick start

# 1. Install both tools (one curl each)
curl -fsSL https://claude.ai/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

# 2. Clone this repo
git clone https://github.com/thoughtpilot99/agency-ops-stack.git
cd agency-ops-stack

# 3. Install the six skills into Hermes
./install.sh

# 4. Open Claude Code in the repo
claude

πŸ“– For the full walkthrough, see docs/setup.md.

After bootstrap, you'll have all six skills available in Hermes:

$ hermes skills list

NAME                              CADENCE         DELIVERY
─────────────────────────────────────────────────────────────────
weekly-client-status-digest       Mon 07:00       #client-status
lead-enrichment-brief             on CRM event    DM to account lead
content-draft-from-brief          on brief ready  thread on writer's task
cross-platform-monitor            daily 09:00     #radar
weekly-retro-prep                 Fri 16:00       #leadership
deliverable-qa-check              on task review  thread on task

πŸ—οΈ Architecture

Build-to-deploy flow

flowchart LR
    Dev[You + Claude Code] -->|writes SKILL.md| Folder[Shared skill folder]
    Folder -->|symlinked into| Hermes[Hermes runtime]
    Hermes -->|cron / event triggers| Skill[Skill executes]
    Skill <-->|MCP tools| CRM[(Your CRM)]
    Skill <-->|MCP tools| PT[(Project tracker)]
    Skill <-->|reads/writes| Mem[(Per-client memory)]
    Skill -->|posts result| Slack[Slack / Telegram / Discord]
    Slack -->|edits + feedback| Mem

    classDef build fill:#7C3AED,color:#fff,stroke:none
    classDef runtime fill:#10B981,color:#fff,stroke:none
    classDef store fill:#3B82F6,color:#fff,stroke:none
    classDef output fill:#F59E0B,color:#fff,stroke:none
    class Dev,Folder build
    class Hermes,Skill runtime
    class CRM,PT,Mem store
    class Slack output
Loading

How a skill runs end-to-end

sequenceDiagram
    autonumber
    participant Cron as Hermes cron
    participant Skill as weekly-client-status-digest
    participant Mem as Memory (FTS5)
    participant CRM as CRM MCP
    participant PT as Project tracker MCP
    participant Slack

    Cron->>Skill: Monday 07:00 fires
    Skill->>Mem: load client.acme_corp namespace
    Mem-->>Skill: voice rules, banned topics, account lead
    Skill->>PT: list_tasks_for_project(acme_corp, since=7d)
    Skill->>CRM: list_deals(status=all, since=7d)
    Skill->>Slack: channel_history(#client-acme, since=7d)
    PT-->>Skill: 14 task updates
    CRM-->>Skill: 6 deal updates
    Slack-->>Skill: 23 messages
    Skill->>Skill: synthesize 200-word note
    Skill->>Slack: post to #client-status
    Slack-->>Mem: account lead's edits feed back in
Loading

Tool contract pattern

The skills never reference vendor names. They call MCP tools by standard names. The mapping happens inside each MCP server.

flowchart TB
    subgraph Skills["Skills (vendor-agnostic)"]
        S1[weekly-client-status-digest]
        S2[lead-enrichment-brief]
        S3[weekly-retro-prep]
    end

    subgraph Contract["Standard tool contract"]
        T1[list_deals]
        T2[get_deal]
        T3[list_contacts]
        T4[get_contact]
    end

    subgraph Servers["One MCP server per CRM"]
        M1[pipedrive-mcp]
        M2[hubspot-mcp]
        M3[salesforce-mcp]
        M4[your-crm-mcp]
    end

    Skills --> Contract
    Contract --> Servers
    M1 -.-> P1[(Pipedrive API)]
    M2 -.-> P2[(HubSpot API)]
    M3 -.-> P3[(Salesforce API)]
    M4 -.-> P4[(Your CRM API)]

    classDef skill fill:#7C3AED,color:#fff,stroke:none
    classDef contract fill:#F59E0B,color:#fff,stroke:none
    classDef server fill:#10B981,color:#fff,stroke:none
    classDef api fill:#3B82F6,color:#fff,stroke:none
    class S1,S2,S3 skill
    class T1,T2,T3,T4 contract
    class M1,M2,M3,M4 server
    class P1,P2,P3,P4 api
Loading

Swap CRMs by writing one new MCP server. Skills do not change.


πŸ“‚ What's included

agency-ops-stack/
β”œβ”€β”€ πŸ“œ README.md                     ◄── you are here
β”œβ”€β”€ πŸ“– article.md                    The long-form piece this repo accompanies
β”œβ”€β”€ βš™οΈ install.sh                    Bootstrap script
β”œβ”€β”€ πŸ“„ LICENSE                       MIT
β”‚
β”œβ”€β”€ πŸ€– skills/                       Six agentskills.io-compliant skills
β”‚   β”œβ”€β”€ weekly-client-status-digest/
β”‚   β”‚   β”œβ”€β”€ SKILL.md                 Skill instructions + frontmatter
β”‚   β”‚   └── scripts/                 Optional helper scripts
β”‚   β”‚       └── pull_context.py
β”‚   β”œβ”€β”€ lead-enrichment-brief/
β”‚   β”‚   β”œβ”€β”€ SKILL.md
β”‚   β”‚   └── scripts/enrich.py
β”‚   β”œβ”€β”€ content-draft-from-brief/
β”‚   β”‚   └── SKILL.md
β”‚   β”œβ”€β”€ cross-platform-monitor/
β”‚   β”‚   └── SKILL.md
β”‚   β”œβ”€β”€ weekly-retro-prep/
β”‚   β”‚   └── SKILL.md
β”‚   └── deliverable-qa-check/
β”‚       └── SKILL.md
β”‚
β”œβ”€β”€ πŸ”Œ mcp-servers/                  MCP server templates + worked examples
β”‚   β”œβ”€β”€ README.md                    Pattern overview + tool contracts
β”‚   β”œβ”€β”€ _crm-template/               Generic CRM skeleton (adapt to any vendor)
β”‚   β”‚   β”œβ”€β”€ server.py                FastMCP scaffold with CHANGEME markers
β”‚   β”‚   β”œβ”€β”€ requirements.txt
β”‚   β”‚   └── README.md                Step-by-step adaptation guide
β”‚   β”œβ”€β”€ pipedrive-mcp/               Complete Pipedrive example
β”‚   β”‚   β”œβ”€β”€ server.py
β”‚   β”‚   β”œβ”€β”€ requirements.txt
β”‚   β”‚   └── README.md
β”‚   └── notion-projects-mcp/         Complete Notion projects example
β”‚       β”œβ”€β”€ server.py
β”‚       β”œβ”€β”€ requirements.txt
β”‚       └── README.md
β”‚
β”œβ”€β”€ πŸ“‹ examples/
β”‚   β”œβ”€β”€ clients.yml.example          Client list schema with comments
β”‚   └── cron-commands.md             Exact hermes cron create commands
β”‚
└── πŸ“š docs/
    β”œβ”€β”€ setup.md                     End-to-end install walkthrough
    β”œβ”€β”€ claude-code-vs-hermes.md     When to use which tool
    └── verified-sources.md          Citation trail for every technical claim

πŸ€– The six skills

Each skill is one folder with one SKILL.md file following the agentskills.io spec. The frontmatter requires only name and description; everything else is optional.

# Skill Trigger Delivery What it does
1 weekly-client-status-digest Cron Β· Mon 7am Slack #client-status One status note per active client from project tracker + CRM + Slack
2 lead-enrichment-brief Event Β· new CRM lead Slack DM to account lead One-page brief with TL;DR, prior touches, why-now, risk flags
3 content-draft-from-brief Event Β· brief ready Slack thread on task Three rough drafts differing in hook, thesis, and structure
4 cross-platform-monitor Cron Β· daily 9am Slack #radar Ranked digest of mentions, competitor moves, buying signals
5 weekly-retro-prep Cron Β· Fri 4pm Slack #leadership Retro doc with wins, misses, snapshots, questions for Monday
6 deliverable-qa-check Event Β· task to review Slack thread on task Link integrity, voice rules, banned words, naming, version

πŸ’‘ Sequencing tip: Start with skill 1 (status digests). High payoff per hour, low risk, obvious failure modes from the first run. The memory-heavy skills (lead enrichment, content drafting) get better over weeks as the team's edits feed back into memory.


🧰 How the two tools split the job

Task Use Claude Code Use Hermes Agent
Write a new skill βœ…
Iterate on a skill's prompt βœ…
Scaffold an MCP server βœ…
Debug an existing skill βœ…
Run a skill on cron βœ…
Run from Slack / Telegram / Discord βœ…
Maintain per-client memory across runs βœ…
Process paying-client data on your own infra βœ…
Internal team automation (PR reviews, dep audits) βœ… (Routines)

Claude Code is the build environment. Hermes is the runtime. They share the same skill format, so skills move between them without rewriting.

πŸ“„ For the long form, see docs/claude-code-vs-hermes.md.


πŸ”Œ MCP servers

The skills call a small set of standard tool names. Each MCP server translates those names into its vendor's actual API calls.

CRM contract

Every skill that touches the CRM calls these four tools:

Tool Purpose
list_deals(status, limit) List deals filtered by status
get_deal(deal_id) Fetch one deal with custom fields
list_contacts(query, limit) List or search contacts
get_contact(contact_id) Fetch one contact

Project tracker contract

Every skill that reads project state calls these four:

Tool Purpose
list_projects(filter_status) List projects, optionally filtered
get_project(project_id) Fetch one project page
list_tasks_for_project(project_id, status) List tasks under a project
recent_updates(project_id, since_iso) Tasks edited since a timestamp

Supported vendors

Vendor CRM Project Tracker Auth pattern Status
Pipedrive βœ… (worked example) API key in api_token query param Shipped
Notion βœ… (worked example) Bearer (integration token) Shipped
HubSpot πŸ”§ (adapt template) Bearer (Private App token) Template ready
Salesforce πŸ”§ (adapt template) OAuth bearer Template ready
Close πŸ”§ (adapt template) Bearer Template ready
Folk πŸ”§ (adapt template) Bearer Template ready
Attio πŸ”§ (adapt template) Bearer Template ready
ActiveCampaign πŸ”§ (adapt template) API key in Api-Token header Template ready
Copper πŸ”§ (adapt template) API key + email in headers Template ready
Zoho CRM πŸ”§ (adapt template) OAuth bearer Template ready
Linear πŸ”§ (adapt pattern) API key in header Pattern in repo
Airtable πŸ”§ (adapt pattern) Bearer Pattern in repo
Asana πŸ”§ (adapt pattern) Bearer Pattern in repo
ClickUp πŸ”§ (adapt pattern) API key in header Pattern in repo

πŸ”§ Legend: βœ… ready to use as-is Β· πŸ”§ use _crm-template/ and follow the adaptation guide

Adding a new CRM

cp -r mcp-servers/_crm-template mcp-servers/my-crm-mcp
cd mcp-servers/my-crm-mcp
# Edit server.py:
#   1. Rename env var (CRM_API_KEY β†’ HUBSPOT_API_KEY, etc.)
#   2. Set API_BASE
#   3. Swap auth pattern in _call()
#   4. Fill four endpoint placeholders
# Test:
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python server.py
# Register with Hermes:
hermes config set  # or hermes dashboard

No skill edits required.


🧠 Memory layer

flowchart LR
    Skill[Skill execution] -->|reads at start| NS[Client namespace]
    NS --> AL[Account lead]
    NS --> AC[Active campaigns]
    NS --> VR[Voice rules]
    NS --> BT[Banned topics]
    NS --> RW[What account lead rewrites]
    NS --> RW2[Recent winners]

    Skill -->|produces draft| Slack
    Slack -->|account lead edits| Feedback[Diff: kept vs cut]
    Feedback -->|FTS5 + LLM summary| NS

    classDef skill fill:#7C3AED,color:#fff,stroke:none
    classDef store fill:#3B82F6,color:#fff,stroke:none
    classDef out fill:#F59E0B,color:#fff,stroke:none
    class Skill skill
    class NS,AL,AC,VR,BT,RW,RW2,Feedback store
    class Slack out
Loading

Hermes keeps cross-session memory using FTS5 full-text search plus an LLM summarization pass. Each client gets its own namespace.

client.acme_corp:
  account_lead: "Sarah Mitchell"
  active_campaigns:
    - "Q3 outbound to mid-market SaaS"
    - "Lifecycle email series for product activation"
  voice_rules:
    max_sentence_length: 18
    banned_phrases: ["synergy", "best in class", "next-gen"]
    em_dashes: forbidden
  banned_topics:
    - "competitor X"
    - "the partnership with Y (under NDA)"
  what_sarah_rewrites:
    - "She always rewrites the deal-movement section. Keeps it shorter, drops 'pipeline'."
    - "She cuts forward-looking commitments unless they're in the tracker."
  recent_winners:
    - <link to last week's note Sarah barely edited>

πŸ” Why this works: Week one's draft reads like a competent intern's first try. Week ten reads closer to what Sarah herself would have written, because the agent has watched her edit nine drafts and learned what she keeps and what she cuts.


βš™οΈ Configuration reference

Environment variables

Variable Required by Purpose
HERMES_HOME install.sh Override Hermes config dir (default ~/.hermes)
PIPEDRIVE_API_KEY pipedrive-mcp Pipedrive API token
NOTION_TOKEN notion-projects-mcp Notion integration token
NOTION_PROJECTS_DB_ID notion-projects-mcp Notion projects database ID
NOTION_TASKS_DB_ID notion-projects-mcp Notion tasks database ID
CRM_API_KEY _crm-template Generic CRM API key (rename when adapting)
CRM_API_BASE _crm-template Generic CRM API base URL (rename when adapting)

Hermes CLI cheat sheet

# Skills
hermes skills list                       # show installed skills
hermes skills install <url-or-id>        # install from registry or URL
hermes skills update                     # pull upstream changes
hermes skills uninstall <skill>          # remove

# Cron
hermes cron create --skill <name> "<prompt>"   # schedule a skill
hermes cron list                               # show all scheduled jobs
hermes cron edit <job-id>                      # update schedule
hermes cron pause <job-id>                     # suspend without deleting
hermes cron resume <job-id>                    # resume
hermes cron run <job-id>                       # trigger on next tick
hermes cron remove <job-id>                    # delete

# One-shot execution
hermes chat -s <skill> -q "<prompt>"           # run a skill once

# Memory
hermes memory setup                            # interactive provider selection
hermes memory status                           # show current config
hermes memory off                              # disable external provider

# Platforms
hermes gateway setup                           # connect Slack/Telegram/Discord
hermes slack manifest --write                  # generate Slack app manifest
hermes whatsapp                                # WhatsApp pairing
hermes auth                                    # manage OAuth credentials

# Diagnostics
hermes doctor                                  # diagnose issues
hermes dashboard                               # web UI

πŸ’¬ Example output

A real client status digest as it lands in Slack:

## Acme Corp

🚩 Two deliverables slipped past target this week.

Sarah's team closed the homepage rebuild and the lifecycle email series on
schedule. The Q3 outbound campaign launched on time, but Acme paused after
two days when their head of growth flagged inbox-warming concerns.
Pipedrive shows the renewal call set for May 22 with their CMO. Three new
tickets opened this week, two from the Acme product team asking for
custom dashboards we haven't scoped or quoted. The slipped deliverables
are the analytics audit (target May 8, now in review) and the H2 content
calendar (target May 12, still in draft, stuck on a stakeholder review
that didn't happen Wednesday). Sarah is meeting Acme's head of growth on
Friday to walk through both. The outbound team has a remediation plan
ready for the campaign restart on Monday.

Account team reads it, edits it in the channel, sends it to the client. The agent watches what they kept and what they cut. Next Monday's draft moves a little closer.


πŸ—ΊοΈ Roadmap

v0.1 (shipped)

  • βœ… Six core agency-ops skills following agentskills.io spec
  • βœ… Generic CRM MCP template + Pipedrive worked example
  • βœ… Notion projects MCP (worked example)
  • βœ… Setup guide + cron command reference
  • βœ… Vendor-agnostic tool contracts (skills swap CRMs without edits)

v0.2 (planned)

  • πŸ”„ _project-tracker-template/ for generic project-tracker adaptation
  • πŸ”„ HubSpot + Salesforce worked examples
  • πŸ”„ Linear MCP example
  • πŸ”„ Webhook receiver helper (Cloudflare Worker / Vercel function template) for event-triggered skills
  • πŸ”„ clients-onboarding skill (auto-build a client namespace from a public website)

v0.3 (planned)

  • ⏳ invoice-followup skill (payments + reminders)
  • ⏳ proposal-draft skill (from discovery notes + similar past deals)
  • ⏳ Stripe MCP for invoicing data
  • ⏳ Gmail / Outlook MCP for email thread context
  • ⏳ A skill self-review eval suite

Wishlist

  • 🌟 Multi-CRM support per agency (different CRMs for different clients)
  • 🌟 Notion-native client list (replace clients.yml)
  • 🌟 A "what changed this quarter" skill that diffs successive memory snapshots
  • 🌟 Web dashboard that wraps the cron jobs and memory namespaces

πŸ’‘ Want one of the wishlist items sooner? Open an issue or submit a PR.


❓ FAQ

Do I need both Claude Code AND Hermes Agent?

Yes for the full pattern. Claude Code is the build environment (writing and iterating on skills, scaffolding MCP servers). Hermes is the runtime (running skills on cron, maintaining memory, reaching into Slack). You can technically run skills inside Claude Code Routines if you want a single-tool setup, but you give up self-hosting, persistent memory across sessions, and the messaging gateway. For agency-ops work, both tools earn their keep.

What does "vendor-agnostic" actually mean here?

Every skill in this repo calls MCP tools by their standard names (list_deals, list_projects, etc.). They never reference a vendor name like pipedrive.list_deals. The mapping from "standard name" to "vendor's actual API call" happens inside each MCP server. If you swap CRMs, you write one new MCP server. Every skill keeps working without any edits to the skill files themselves.

How much does this cost to run?

Both tools install for free. Costs:

  • Hermes Agent: $0/month for the runtime itself (MIT licensed, you host it)
  • LLM tokens: you pick the provider. Estimate $20-100/month for a 10-client agency depending on model choice and skill frequency.
  • Claude Code: your existing Claude subscription
  • Infrastructure: $5-20/month if you run Hermes on a small VPS, or $0 on a Mac mini you already own
What if a skill outputs something bad?

Every client-facing skill in this repo has a human-in-the-loop step. The agent drafts; the human edits and ships. Status digests land in a Slack channel the account team reviews before sending. Lead briefs land in deal records that sales leads read before the call. Content drafts go to writers, not directly to clients. The pattern is "agent drafts, human ships," not "agent ships."

Can I run this without exposing my CRM data to a third-party LLM?

Yes. Hermes supports local LLM endpoints (vLLM, llama.cpp, Ollama, any OpenAI-compatible endpoint). Configure the LLM provider during hermes setup and point it at your local model. Your CRM data, project tracker data, and client memory never leaves your infrastructure.

How long does the memory take to start paying off?

Depends on how often the skill runs and how much the team edits the drafts. Weekly skills (status digests, retro prep) typically need 6-10 cycles before the agent's draft requires minor edits instead of major rewrites. Daily skills (cross-platform monitor) get there faster. Event-triggered skills (lead enrichment) improve based on volume. High-traffic agencies see meaningful improvement faster.

What if Hermes ships a breaking change to its CLI?

The skill format (agentskills.io) is the stable surface. CLI commands (hermes cron create, hermes skills install, etc.) may evolve. Watch the Hermes Agent releases for breaking changes, and consult hermes <command> --help for the current syntax. The skills in this repo do not depend on CLI specifics. They only depend on the open skill format.

Can multiple people on the team trigger skills?

Yes. Once hermes slack manifest --write is configured and the Slack app is installed, every skill exposes as a Slack slash command. Any team member in the workspace can run /skill-name. For cron-triggered skills, no one needs to do anything; they fire on schedule.

Is this production-ready?

It's working code that real agencies use. It is not "enterprise" software (no SLAs, no dedicated support, no compliance certifications). Two reasonable patterns: (1) run it on a single VPS for your own agency, ship it, iterate, or (2) fork it, harden it for your environment, and maintain your own copy. The MIT license allows both.

How do I contribute a new MCP server?

See Contributing below. The short version: copy _crm-template/, adapt it, test it locally, and open a PR with the new server folder + README. Same for project trackers, billing systems, or any other vendor.


🀝 Contributing

PRs welcome for:

  • πŸ”Œ New MCP servers for CRMs, project trackers, billing, support, or anything else with an HTTP API
  • πŸ€– New skills for agency-ops workflows we haven't covered (proposal generation, invoice followups, churn alerts)
  • πŸ› Bug fixes in existing skills or servers
  • πŸ“– Documentation improvements, especially in docs/ and the per-skill SKILL.md files
  • 🌐 Translations of the docs

Process

  1. Open an issue describing what you want to add (skip for typo fixes)
  2. Fork the repo
  3. Make the change in a feature branch
  4. Test locally (run the skill in Claude Code, deploy to Hermes if applicable)
  5. Open a PR with:
    • A short description of what changed
    • Why it matters
    • How you tested it

Style

  • Prose: plain language. No em dashes. No "it's not X, it's Y" constructions. No architectural buzzphrases. Match the voice of article.md.
  • Code: type hints on every public function. Docstrings that explain when and why to use the function. Format with black for Python.
  • SKILL.md files: follow the agentskills.io spec exactly. name and description are required; everything else is optional. Keep the body under 500 lines.

πŸ™ Acknowledgments

This stack exists because of these projects:

Plus the open-source CRM and project-tracker APIs we map to: Pipedrive, HubSpot, Salesforce, Close, Folk, Attio, ActiveCampaign, Copper, Zoho, Notion, Linear, Airtable, Asana, ClickUp.


πŸ“œ License

MIT Β© 2026 Agency Ops Stack contributors

πŸ“– Want the long-form rationale? Read the article that this repo accompanies.


Made for agency operators who want to ship outcomes, not status updates.

Quick start Β· Architecture Β· The six skills Β· Article Β· Setup

About

Author once in Claude Code. Run autonomously on your own infra with Hermes Agent. Six working agency-ops skills following the agentskills.io spec, two MCP server scaffolds, exact cron commands.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors