aictrl
Governance layer for AI coding agents: knowledge-graph grounding, session audit, policy controls.
Open source Repository Open in the app JSON README (API)
About
Governance layer for AI coding agents: knowledge-graph grounding, session audit, policy controls.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- vasparshin
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 1.0.0-beta.1
- Open pull requests
- 2
- Last push
- 2026-08-21T16:26:50Z
- Repository state
- sumiu
- Language
- Shell
- Added
- 2026-08-29 04:01:37
- Updated
- 2026-08-29 04:01:37
- Origin id
io.github.vasparshin/aictrl
README
# aictrl Team Skills — Marketing & Sales Claude Code skills + a small helper + cron wrappers for the aictrl outreach pipeline: one **unified CRM**, grade-driven, three daily crons (LinkedIn connect, accept-tracker, email sequence), all **approve-before-send** except the connects. Shared so the team can run the same playbook. > **See `docs/process-flow.md`** for the end-to-end flow diagram (renders on GitHub). ## The model (read this first) - **One CRM = the `Log` tab** of the shared sheet. One row per contact — Apollo-sourced (auto-synced) and hand-picked alike. Column blocks: - **A–Q** Apollo state (synced by `aictrl-crm-refresh`; never hand-edit) - **O** `Our Grade` (A/B/C/D) — *the dial that steers every cron* (set by `aictrl-crm-qualify` or by hand) - **R–V** LinkedIn outreach · **W–Z** LinkedIn accept-tracker - **AA–AF** OUR email sequence: `Email Status · Email Step · Email Last Sent · Email Next Due · Email Reply? · Why/Hook` - **Grade A = priority.** Connect cron does grade-A leads first (then the Apollo backlog); our email cron emails grade-A only, ≤5/day. B/ungraded are left to Apollo's own sequences (~50/day). - **Never double-email:** a row whose `Email Status` starts `skip` (already in an Apollo email sequence) is excluded. If an A-grade lead is in an Apollo sequence but not yet emailed, pull them out of Apollo and run ours instead. - **Approve-before-send:** LinkedIn follow-up DMs and all emails are *drafted* to the operator's Telegram DM for approve/edit/skip. Connects are the only auto step. ## What's here **`skills/`** → drop into `~/.claude/skills/`: | Skill | What it does | |---|---| | `aictrl-crm-refresh` | Upserts live Apollo state for H1/H2/H3 contacts into the Log (non-destructive). | | `aictrl-crm-qualify` | Grades each contact A–D into col O. | | `aictrl-linkedin-outreach` | Daily connect batch (interactive form). | | `aictrl-linkedin-status-tracker` | Polls accepts → researches → drafts follow-up → **approve before send**. | | `email-sequencer` | General approval-gated cold-email cadence engine. | | `prospect-research` | Person → research brief + ICP-fit verdict + outreach angle. | | `outreach-copy-review` | Critiques a draft vs the research + intended outcome; flags slop/unverifiable claims. | | `inbox-triage` / `reply-audit` / `bounce-diagnosis` | Inbox sort / unanswered-reply audit / NDR diagnosis. | **`scripts/aictrl-sheets.py`** → `~/.claude/scripts/`. The CRM helper: direct Google Sheets API (works in a headless cron, unlike the Sheets MCP). Subcommands: `candidates` (connect, grade-A first then Apollo), `pending`/`track-update` (accepts), `due-steps`/`email-update` (email). **`crons/`** → `~/.claude/scripts/`. The three wrappers (`aictrl-linkedin-cron.sh` 10:00, `aictrl-linkedin-tracker-cron.sh` 10:15, `aictrl-email-sequence-cron.sh` 10:30). Each runs `claude -p` headless with a scoped `--allowedTools` (NO send tools — sends stay behind your approval) and posts results/drafts to your Telegram DM. **`project-config/`** → `<your-aictrl-project>/.claude/`. Per-project config the engines read. ## Install 1. `cp -r skills/* ~/.claude/skills/` 2. `cp scripts/* ~/.claude/scripts/ && chmod +x ~/.claude/scripts/*.sh ~/.claude/scripts/aictrl-sheets.py` 3. `cp project-config/* <your-aictrl-project>/.claude/` 4. Add the three cron lines (weekdays) — `crontab -e`: ``` 0 10 * * 1-5 ~/.claude/scripts/aictrl-linkedin-cron.sh >> ~/.claude/logs/aictrl-linkedin-cron-wrapper.err 2>&1 15 10 * * 1-5 ~/.claude/scripts/aictrl-linkedin-tracker-cron.sh >> ~/.claude/logs/aictrl-linkedin-tracker-wrapper.err 2>&1 30 10 * * 1-5 ~/.claude/scripts/aictrl-email-sequence-cron.sh >> ~/.claude/logs/aictrl-email-sequence-wrapper.err 2>&1 ``` 5. Restart Claude Code so the skills load. ## ⚙️ ADAPT THESE before first run (the scripts carry Vas's values) In **`scripts/aictrl-sheets.py`**: - `CREDS` path → your own google-workspace-mcp OAuth creds file (must have **edit access to the shared sheet** — ask Vas to share it with your Google account). - `VAS_USER_ID` → **your** Apollo user_id (from `apollo_users_api_profile`); this scopes the connect queue to *your* Apollo tasks. - `SID` (spreadsheet) + the H1/H2/H3 `SEQS` → **keep as-is** (shared team CRM + sequences). In **`crons/*.sh`**: - All `/home/vas/...` paths → your home/project paths. - `CHAT_ID="<YOUR_TELEGRAM_DM_CHAT_ID>"` → **your** Telegram DM chat_id. - `"Vas Parshin"` sender label (connect cron) → your name. - The MS365 sender (email cron prompt, `<YOUR_SENDING_MAILBOX>`) → your aictrl address. Prereqs (your own accounts): LinkedIn MCP (`uvx linkedin-scraper-mcp@latest --login`), Apollo MCP, MS365 (`@softeria/ms-365-mcp-server`), Google Workspace MCP, Firecrawl. ## Security No secrets are committed — scripts read `~/.claude/secrets.env` (Apollo key), `.telegram/.env` (Telegram token), and the GWS creds file from your own machine at runtime. The crons deliberately exclude all *send* tools so nothing is sent without your Telegram approval. Keep this repo private.