agentsclimarketplace

Log activity

Skill aAAaqwq/AGI-Super-Team/skills/log-activity

Log activity to activities.csvFrom its SKILL.md

Install
npx -y skills add aAAaqwq/AGI-Super-Team --skill log-activity

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

3.3 KB, 852 tokens by cl100k_base, as published. Nobody here has run it

CRM Log Activity

Logging outreach activities (calls, messages, emails)

When to use

  • After any outreach
  • "log what I wrote"
  • "record a call"
  • For effectiveness analytics

Paths

WhatPath
Activities$CRM_PATH/activities.csv
People$CRM_PATH/contacts/people.csv

Schema

activity_id,linkedin_url,date,channel,activity_type,message_preview,result,response_quality,next_followup_date,audience_segment,hook_type,notes

How to log

import pandas as pd
from datetime import date, timedelta
import uuid

activities = pd.read_csv('$CRM_PATH/activities.csv')

new_activity = {
    'activity_id': f'act-{uuid.uuid4().hex[:8]}',
    'linkedin_url': 'https://linkedin.com/in/example',  # or email
    'date': str(date.today()),
    'channel': 'telegram',  # linkedin/email/twitter/telegram/whatsapp
    'activity_type': 'dm',  # dm/connect_request/followup/email/call/research
    'message_preview': 'Hi! This is Ivan from WeLabelData...',  # first 100 characters
    'result': 'sent',  # sent/replied/no_response/accepted/rejected
    'response_quality': '',  # positive/neutral/negative/meeting
    'next_followup_date': str(date.today() + timedelta(days=7)),
    'audience_segment': 'training_course',
    'hook_type': 'course_invitation',
    'notes': ''
}

activities = pd.concat([activities, pd.DataFrame([new_activity])], ignore_index=True)
activities.to_csv('$CRM_PATH/activities.csv', index=False)

After logging -- update the person

people = pd.read_csv('$CRM_PATH/contacts/people.csv')

mask = people['linkedin_url'] == 'https://linkedin.com/in/example'
people.loc[mask, 'status'] = 'contacted'
people.loc[mask, 'last_contact_date'] = str(date.today())
people.loc[mask, 'next_followup_date'] = str(date.today() + timedelta(days=7))
people.loc[mask, 'last_updated'] = str(date.today())

people.to_csv('$CRM_PATH/contacts/people.csv', index=False)

Channels (channel)

  • linkedin -- LinkedIn DM
  • email -- Email
  • telegram -- Telegram
  • whatsapp -- WhatsApp
  • twitter -- Twitter/X

Activity types (activity_type)

  • dm -- Direct message
  • connect_request -- Connection request
  • followup -- Follow-up contact
  • email -- Email message
  • call -- Phone call
  • research -- Research (not outreach)

Results (result)

  • sent -- Sent, waiting for response
  • replied -- Received a response
  • no_response -- No response (after N days)
  • accepted -- Accepted request/invitation
  • rejected -- Declined

Response quality (response_quality)

  • positive -- Interested
  • neutral -- Neither yes nor no
  • negative -- Not interested
  • meeting -- Meeting scheduled

Batch logging

For mass outreach -- log multiple at once:

sent_to = ['[email protected]', '[email protected]', '[email protected]']

for email in sent_to:
    new_activity = {
        'activity_id': f'act-{uuid.uuid4().hex[:8]}',
        'linkedin_url': email,  # using email as ID
        'date': str(date.today()),
        'channel': 'telegram',
        'activity_type': 'dm',
        'result': 'sent',
        # ...
    }
    activities = pd.concat([activities, pd.DataFrame([new_activity])], ignore_index=True)

Related skills

  • telegram-send -- before logging
  • update-lead -- update person status

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.