Skip to content
Back to skills

Freelance Tracker

ASecurity

Track freelance clients, log hours, and generate markdown invoices from ~/openclaw-work/freelance/clients/<client>/config.json. Use whenever you need to log time, summarize hours, or produce a ready-to-send invoice for a client.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
businesspythonbash

Works with

  • cli

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add Arry8/openclaw-edge --skill freelance-tracker --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Freelance Tracker?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Freelance Tracker
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/arry8-freelance-tracker/badge)](https://www.skillsdirectory.com/skills/arry8-freelance-tracker)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: freelance-tracker
description: Track freelance clients, log hours, and generate markdown invoices from ~/openclaw-work/freelance/clients/<client>/config.json. Use whenever you need to log time, summarize hours, or produce a ready-to-send invoice for a client.
---

# Freelance Tracker

## Overview

Keeps a running log of hours worked per client and project, then generates clean markdown invoices you can copy-paste or convert to PDF. All data lives in plain JSON files you own.

## Quick Start

1. **Initialize a client** (run once per client):
   ```bash
   cd /Users/chenjiaxuan/openclaw/skills/freelance-tracker
   python scripts/freelance_tracker.py --init-client <client-slug> --rate 100
   ```
2. **Log hours:**
   ```bash
   python scripts/freelance_tracker.py --client <client-slug> --log "2h project-name: built login page"
   ```
3. **Show summary for current week:**
   ```bash
   python scripts/freelance_tracker.py --client <client-slug> --summary
   ```
4. **Generate an invoice:**
   ```bash
   python scripts/freelance_tracker.py --client <client-slug> --invoice
   ```
   Output lands in `~/openclaw-work/freelance/out/<client>/invoice_YYYY-MM-DD.md`.

## Workflow

### 1. Set Up a Client

- Config lives at `~/openclaw-work/freelance/clients/<client>/config.json`.
- Set `name`, `email`, `rate` (hourly, USD), and optional `currency` and `payment_terms`.
- Use `--init-client` flag to scaffold it automatically.

### 2. Log Time

- Format: `<Nh> <project>: <description>` — e.g. `2.5h openclaw-setup: configured gateway and channels`
- Entries are appended to `~/openclaw-work/freelance/clients/<client>/log.json` with an ISO timestamp.
- Use `--date YYYY-MM-DD` to backfill past entries.

### 3. Summarize Hours

- `--summary` prints a table of all unbilled entries grouped by project.
- Add `--week` or `--month` to filter by period.
- Add `--all` to include already-billed entries.

### 4. Generate Invoice

- Reads all unbilled log entries, applies the hourly rate, and fills `assets/invoice-template.md`.
- Marks entries as billed so they won't appear on the next invoice.
- Supports `--dry-run` to preview without marking entries.

## Scripts

| Path                           | Purpose                                                              |
| ------------------------------ | -------------------------------------------------------------------- |
| `scripts/freelance_tracker.py` | Main CLI: init clients, log hours, summarize, and generate invoices. |

## References & Assets

- [`references/config-schema.md`](references/config-schema.md): Client config contract and field descriptions.
- [`assets/invoice-template.md`](assets/invoice-template.md): Markdown invoice skeleton injected on each run.

Files in this skill

  • SKILL.md2.7 KB
  • assets/invoice-template.md605 B
  • references/config-schema.md1.2 KB
  • scripts/freelance_tracker.py11.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…