🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Client Project Manager

by @seanwyngaard

Manage freelance clients, projects, invoices, and communications. Use when tracking client work, creating invoices, sending updates, managing deadlines, or organizing freelance business operations.

Versionv1.0.0
Downloads1,913
TERMINAL
clawhub install client-project-manager

πŸ“– About This Skill


name: client-project-manager description: Manage freelance clients, projects, invoices, and communications. Use when tracking client work, creating invoices, sending updates, managing deadlines, or organizing freelance business operations. argument-hint: "[action] [client-or-project]" allowed-tools: Read, Write, Edit, Grep, Glob, Bash

Client Project Manager

A complete freelance business management system. Track clients, projects, deadlines, deliverables, invoices, and communications from a single skill.

How to Use

/client-project-manager add client "Acme Corp" --contact "jane@acme.com" --rate "$100/hr"
/client-project-manager add project "Website Redesign" --client "Acme Corp" --deadline "2026-03-15" --budget "$5000"
/client-project-manager status
/client-project-manager update "Website Redesign" --progress 60 --note "Homepage mockup approved"
/client-project-manager invoice "Acme Corp" --project "Website Redesign"
/client-project-manager weekly-update "Acme Corp"
/client-project-manager dashboard

Data Storage

All data is stored in ./freelance-data/ as JSON files:

freelance-data/
  clients.json        # Client CRM data
  projects.json       # Active and completed projects
  time-log.json       # Time tracking entries
  invoices/           # Generated invoices
  updates/            # Client update emails

If the directory doesn't exist, create it on first use. If files exist, read them first and preserve all existing data.

Commands

add client

Add a new client to the CRM.

/client-project-manager add client "[Name]" --contact "[email]" --rate "[rate]" --notes "[notes]"

Store in clients.json:

{
  "id": "client-uuid",
  "name": "Acme Corp",
  "contact_email": "jane@acme.com",
  "default_rate": "$100/hr",
  "notes": "Prefers Slack for communication",
  "projects": [],
  "total_billed": 0,
  "total_paid": 0,
  "created": "2026-02-13",
  "status": "active"
}

add project

Add a new project under a client.

/client-project-manager add project "[Name]" --client "[Client]" --deadline "[date]" --budget "[amount]" --deliverables "[list]"

Store in projects.json:

{
  "id": "project-uuid",
  "name": "Website Redesign",
  "client_id": "client-uuid",
  "client_name": "Acme Corp",
  "status": "active",
  "progress": 0,
  "budget": 5000,
  "billed": 0,
  "deadline": "2026-03-15",
  "created": "2026-02-13",
  "deliverables": [
    { "name": "Homepage mockup", "status": "pending", "due": "2026-02-20" },
    { "name": "Inner pages", "status": "pending", "due": "2026-03-01" },
    { "name": "Development", "status": "pending", "due": "2026-03-10" },
    { "name": "Launch", "status": "pending", "due": "2026-03-15" }
  ],
  "notes": [],
  "time_entries": []
}

log time

Log time worked on a project.

/client-project-manager log time "[Project]" --hours [X] --description "[what you did]"

Append to time-log.json:

{
  "id": "entry-uuid",
  "project_id": "project-uuid",
  "client_id": "client-uuid",
  "date": "2026-02-13",
  "hours": 3.5,
  "rate": 100,
  "amount": 350,
  "description": "Built responsive navigation and hero section"
}

update

Update project progress and add notes.

/client-project-manager update "[Project]" --progress [0-100] --note "[update]" --deliverable "[name]" --status "[done|in-progress|pending]"

status

Show current status of all active projects.

Output format:

╔══════════════════════════════════════════════════════════════╗
β•‘                    FREELANCE DASHBOARD                       β•‘
╠══════════════════════════════════════════════════════════════╣

πŸ“Š Active Projects: 3 πŸ’° Outstanding Invoices: $2,500 ⏰ Hours This Week: 22.5 πŸ“… Next Deadline: Website Redesign (Acme Corp) β€” Mar 15

────────────────────────────────────────────────────────────── PROJECT: Website Redesign CLIENT: Acme Corp | DEADLINE: Mar 15, 2026 PROGRESS: β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 60% BUDGET: $3,000 / $5,000 billed DELIVERABLES: βœ… Homepage mockup (Feb 20) β€” DONE πŸ”„ Inner pages (Mar 1) β€” IN PROGRESS ⬜ Development (Mar 10) β€” PENDING ⬜ Launch (Mar 15) β€” PENDING ──────────────────────────────────────────────────────────────

invoice

Generate a professional invoice for a client.

/client-project-manager invoice "[Client]" --project "[Project]" --period "[start] to [end]"

Generate the invoice as both Markdown and HTML in freelance-data/invoices/:

Invoice content:

INVOICE #[INV-YYYY-NNN]
Date: [today]
Due: [today + 14 days]

FROM: [Your name/business β€” read from freelance-data/config.json if exists]

TO: [Client name] [Client contact]

PROJECT: [Project name] PERIOD: [Date range]

| Date | Description | Hours | Rate | Amount | |------|-------------|-------|------|--------| | ... time entries from period ... |

Subtotal: $X,XXX.XX Tax (0%): $0.00 TOTAL DUE: $X,XXX.XX

Payment Terms: Net 14 Payment Methods: [from config.json or "Bank Transfer / PayPal"]

Thank you for your business.

Save as freelance-data/invoices/INV-2026-001-acme-corp.md and .html.

weekly-update

Generate a professional weekly client update email.

/client-project-manager weekly-update "[Client]"

Read the client's projects, recent time entries, and notes. Generate:

Subject: Weekly Update β€” [Project Name] β€” Week of [date]

Hi [Contact first name],

Here's your weekly update on [Project Name]:

This Week:

  • [Completed deliverables and progress]
  • [Key decisions made]
  • [Hours worked: X.X]
  • Next Week:

  • [Planned deliverables]
  • [Any blockers or decisions needed from client]
  • Project Status:

  • Progress: XX%
  • Budget used: $X,XXX / $X,XXX
  • On track for [deadline]: βœ… Yes / ⚠️ At risk / ❌ Behind
  • [Any questions or items needing client input]

    Best, [Your name]

    Save to freelance-data/updates/ and display for copy-paste.

    payment-reminder

    Generate a polite payment reminder for overdue invoices.

    /client-project-manager payment-reminder "[Client]"
    

    Check for unpaid invoices past due date. Generate appropriate reminder:

  • 1-7 days overdue: Gentle reminder
  • 8-14 days overdue: Firm but professional follow-up
  • 15+ days overdue: Final notice with late fee mention
  • dashboard

    Show a comprehensive business overview:

    ╔══════════════════════════════════════════════════════════════╗
    β•‘                  MONTHLY BUSINESS REPORT                     β•‘
    ╠══════════════════════════════════════════════════════════════╣

    πŸ’° Revenue This Month: $4,250 πŸ’° Revenue Last Month: $3,800 (↑ 12%) πŸ“Š Active Projects: 3 βœ… Completed This Month: 1 ⏰ Hours Billed: 42.5 πŸ’΅ Effective Hourly Rate: $100/hr πŸ“‹ Outstanding Invoices: $2,500 (2 invoices) ⚠️ Overdue Invoices: $0

    TOP CLIENTS (by revenue): 1. Acme Corp $2,500 (59%) 2. StartupXYZ $1,250 (29%) 3. LocalBiz $500 (12%)

    UPCOMING DEADLINES: Feb 20 β€” Homepage mockup (Acme Corp) Mar 01 β€” Content strategy (StartupXYZ) Mar 15 β€” Website launch (Acme Corp)

    config

    Set your business details for invoices and communications.

    /client-project-manager config --name "Your Name" --business "Your Business LLC" --email "you@email.com" --payment "PayPal: you@email.com / Bank: routing XXX"
    

    Save to freelance-data/config.json.

    Data Integrity Rules

    1. Never overwrite β€” always read existing data first, modify, then write back 2. Always backup β€” before any write operation, check data exists and is valid JSON 3. UUID generation β€” use timestamp-based IDs: client-[timestamp], project-[timestamp] 4. Date format β€” always use ISO 8601: YYYY-MM-DD 5. Currency β€” store as numbers, display with $ formatting