crm-sync · diff

git:20260814.5023d8c to git:20260814.06fa906

13 added, 0 removed. Audit A to A.

---
name: crm-sync
description: >
Keep the CRM knowledge layer in the vault in sync with the live CRM code repositories. Pull
the latest of the read-only repos, detect which changed, and refresh ONLY the affected
reverse-engineering notes and the KEEP/DROP/DECIDE decision note. Trigger on "/crm-sync",
"refresh CRM knowledge", "what changed in the CRM code".
license: MIT
---
# /crm-sync - keep the CRM knowledge layer fresh
The CRM (CHARM) is Anton's proven engine on GitLab. We reverse-engineered it once
(2026-06-19) into a linked vault layer so his digital twin can `/ask` how the CRM
works. Code keeps changing; this skill stops that knowledge from going stale silently.
It is the recurring half of the standing rule `evaluate-recurring-into-routine`.
**What this is NOT:** not a re-decompose-from-scratch. It is a DIFF-DRIVEN refresh:
pull, see what changed, update only the notes that map to the changed code.
## Where everything lives
- **Code (read-only clone, 16 repos):** `E:\CRM-app` (memory `crm-gitlab`).
- **Decomposition audit (HTML, source of the notes):** `E:\CRM-app\_AUDIT\`
(`Functional-Map.html`, `Know-How-Decomposition.html`, `Architecture-Deep.html`).
- **Vault knowledge layer:** `$OBSIDIAN_VAULT/05-Resources/CRM-Engine/`
- `_CHARM-CRM-Engine-MOC.md` (hub)
- `crm-architecture-4-layers.md`
- `crm-mtproto-engine.md`
- `crm-core-autopilot.md`
- `crm-admin-panel-api-brain.md`
- `crm-data-model-mongo.md`
- `crm-know-how-13-patterns.md`
- `crm-landing-api-money.md`
- decision: `$OBSIDIAN_VAULT/02-Decisions/decision-crm-keep-cc-drop-decide.md`
## Repo -> note map (which note to refresh when which code changes)
| Code area in E:\CRM-app | Note(s) to refresh |
|---|---|
| `admin-panel` / `admin-panel-api` (FastAPI brain, filter-DSL, $facet) | `crm-admin-panel-api-brain` |
| `mtproto-api` (Telethon hands, event-pool, dialog export, FloodWait) | `crm-mtproto-engine` |
| `core` (aiocron autopilot: newsletters, gatekeeper, tapping, calls) | `crm-core-autopilot` |
| `landing-api` (token sale, NOWPayments, CHEATING_MODE, webhook) | `crm-landing-api-money` |
| shared models / Mongo schema (collections, fields) | `crm-data-model-mongo` |
| cross-cutting architecture / generations | `crm-architecture-4-layers` |
| reusable patterns / know-hows | `crm-know-how-13-patterns` |
| any capability added/removed/disabled | `decision-crm-keep-cc-drop-decide` (+ MOC) |
## Procedure
1. **RECALL first (don't duplicate).** Read memory `crm-gitlab` and `_CHARM-CRM-Engine-MOC.md`
so you refresh, not rewrite. Note the date of the last sync.
2. **Pull the repos.** For each repo dir under `E:\CRM-app`:
`git -C "E:\CRM-app\<repo>" pull --ff-only` (clone is read-only; this only updates).
Collect the set of repos that actually moved (non-empty pull, or
`git -C <repo> log --oneline <old>..<new>`). If a pull needs GitLab creds and fails,
stop and tell Anton (creds in `secrets\`; do NOT hardcode).
3. **No changes -> stop.** If nothing moved since last sync, report "CRM unchanged since
<date>, 0 notes touched" and exit. (Cheapest correct answer.)
4. **For each changed repo,** re-read ONLY the changed files/areas (use an `Explore`
subagent with `model: 'sonnet'` - this is grunt extraction, per `model-routing-sonnet-grunt`;
escalate to Opus only if a judgement call). Ask it to report: what behavior changed vs
what the mapped note currently says, with file+line evidence.
5. **Backup before writing.** `python "$IMPORTS_ROOT/vault_backup.py"` (rule
`vault-backup-rule`). NEVER blanket-delete; edit in place.
6. **Update the mapped note(s)** - the "How it works" / "Weak spots" sections only.
PRESERVE frontmatter, `origin: external`, `authored_by:` (denis-udot / gleb-taigunov),
and all `[[wikilinks]]`. If a capability moved KEEP<->DROP<->DECIDE, update the decision
note too. New behavioral pattern worth a concept? Follow `concept-creation-rules` (create
if >=3 repeats + entity noun + domain), and relink (`no-orphan-notes-rule`).
7. **Verify + reindex.** Run the vault broken-link check; then
`python "$IMPORTS_ROOT/brain_embed_update.py"` (cooldown 15min; nightly @04:00
will catch it otherwise) so the refreshed notes are `/ask`-searchable.
8. **Report post-hoc** (not for permission): which repos moved, which notes changed,
any new concept, any DECIDE item that flipped, and what still needs Anton/Denis.
## Guardrails
- Read-only by default; the only writes are git pull (updates the clone) + the mapped
vault notes, always backup-first.
- Don't touch the live CRM server or its Mongo - that is the prod-access track, separate.
- AK-47: this is one markdown procedure. If the CRM grew a whole new service, that is a new
note + MOC link, still just notes - flag it, don't over-build.
## When to run
On demand (after Anton hears the CRM changed), or as a light routine. Pairs with the
`crm-gitlab` DD-audit and the `decision-crm-keep-cc-drop-decide` open items.
+ ---
+
+ <!-- CONTACT-FOOTER -->
+ ## About & contact
+
+ Built and battle-tested at **Palo Alto AI Research Lab** — a fleet of Claude Code machines
+ running 24/7 as a second brain and synthetic cofounder. Every skill here survived real
+ production use before publication.
+
+ - 📦 All 101 skills: https://github.com/tonydzi/second-brain-starter-kit
+ - 👤 Author: **Anton Dziatkovskii** — Telegram [@tonydzi](https://t.me/tonydzi) · WhatsApp [+1 341 222 9178](https://wa.me/13412229178) · X [@Tony_Stef_](https://x.com/Tony_Stef_)
+ - 🧪 **Engineers: want to test-drive this setup?** Message me — I hand out free starter seeds to engineers who test and report back. Custom skill requests welcome.
+