.claude/skills/budget/SKILL.md
Track and report customer kontingent usage from Productive.io. Monitor budget consumption and warn on low kontingent.
npx skillsauth add lucidlabs-hq/agent-kit budgetInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Track customer kontingent (budget/hours) usage via Productive.io Time Entries.
Read-Only - This skill reads data from Productive.io but does not write:
Budget tracking is essential for:
/budget status [customer]Show current kontingent status for a customer.
Output:
┌─────────────────────────────────────────────────────┐
│ BUDGET STATUS: [Customer Name] │
├─────────────────────────────────────────────────────┤
│ Delivery Unit Booked Used Remaining │
│ ───────────────────── ────── ──── ───────── │
│ Agent: Support Bot 40h 28h 12h │
│ Workshop: AI Training 16h 16h 0h ⚠️ │
│ Advisory: Strategy 8h 4h 4h │
├─────────────────────────────────────────────────────┤
│ TOTAL 64h 48h 16h │
│ Usage: ████████████░░░░ 75% │
└─────────────────────────────────────────────────────┘
Data Sources:
/budget report [customer]Generate a detailed budget report for customer communication.
Report Contents:
Output Format: Markdown for customer-ready sharing
/budget warnCheck all customers for low kontingent and generate warnings.
Thresholds:
Actions:
# Get all budgets for organization
curl -X GET "https://api.productive.io/api/v2/budgets" \
-H "Content-Type: application/vnd.api+json" \
-H "X-Auth-Token: ${PRODUCTIVE_API_TOKEN}" \
-H "X-Organization-Id: ${PRODUCTIVE_ORG_ID}"
Budget Response Fields:
{
"data": {
"id": "budget_id",
"attributes": {
"name": "Monthly Retainer",
"budget_type": "time_and_materials",
"total_hours": 40,
"spent_hours": 28,
"remaining_hours": 12
},
"relationships": {
"project": { "data": { "id": "project_id" } },
"company": { "data": { "id": "company_id" } }
}
}
}
# Get time entries for a project
curl -X GET "https://api.productive.io/api/v2/time_entries?filter[project_id]=PROJECT_ID" \
-H "Content-Type: application/vnd.api+json" \
-H "X-Auth-Token: ${PRODUCTIVE_API_TOKEN}" \
-H "X-Organization-Id: ${PRODUCTIVE_ORG_ID}"
Time Entry Response Fields:
{
"data": {
"id": "time_entry_id",
"attributes": {
"date": "2026-01-15",
"time": 120,
"note": "Agent development session"
},
"relationships": {
"person": { "data": { "id": "person_id" } },
"service": { "data": { "id": "service_id" } },
"task": { "data": { "id": "task_id" } }
}
}
}
# Budget Report: [Customer Name]
**Report Period:** [Start Date] - [End Date]
**Generated:** [Current Date]
## Executive Summary
[Customer Name] hat aktuell **[X]h von [Y]h** des gebuchten Kontingents verbraucht.
Das entspricht einer Auslastung von **[Z]%**.
## Kontingent-Übersicht
| Delivery Unit | Typ | Gebucht | Verbraucht | Verbleibend | Status |
|--------------|-----|---------|------------|-------------|--------|
| [Name] | [Type] | [X]h | [Y]h | [Z]h | 🟢/🟡/🔴 |
## Aktivitäten im Berichtszeitraum
### [Delivery Unit 1]
| Datum | Aktivität | Dauer |
|-------|-----------|-------|
| [Date] | [Description] | [Hours] |
**Gesamt:** [X]h
### [Delivery Unit 2]
...
## Burn-Rate Analyse
- **Durchschnittlicher Verbrauch:** [X]h pro Woche
- **Geschätzte Restlaufzeit:** [Y] Wochen
- **Empfohlene Handlung:** [Recommendation]
## Empfehlungen
1. [Recommendation based on usage patterns]
2. [Recommendation for next period]
3. [Recommendation for kontingent adjustment]
---
*Report generiert via /budget skill*
*Datenquelle: Productive.io*
Session Start During Work Reporting
───────────── ─────────── ─────────
/prime Log time in /budget status
↓ Productive.io /budget report
Check kontingent ↓ ↓
status Time accumulates Customer update
Consider adding to /prime:
1. Check customer kontingent status
2. Warn if < 20% remaining
3. Block work if 0% remaining (optional)
# Productive.io API Access
PRODUCTIVE_API_TOKEN=your-api-token
PRODUCTIVE_ORG_ID=your-organization-id
Store customer → Productive.io mapping in .productive-config:
customers:
customer-slug:
productive_company_id: "123456"
productive_project_ids:
- "789012" # Main project
- "345678" # Secondary project
kontingent_warning_threshold: 0.2 # 20%
kontingent_critical_threshold: 0.1 # 10%
⚠️ LOW KONTINGENT ALERT
Customer: [Name]
Delivery Unit: [Name]
Remaining: [X]h ([Y]%)
Burn Rate: [Z]h/week
Estimated Empty: [Date]
Action Required:
- [ ] Contact customer about extension
- [ ] Review planned work scope
- [ ] Prioritize remaining hours
🔴 KONTINGENT EXHAUSTED
Customer: [Name]
Delivery Unit: [Name]
Status: 0h remaining
Immediate Actions:
1. Pause non-critical work
2. Contact customer
3. Document incomplete items
Do NOT continue work without:
- [ ] Customer approval for extension
- [ ] New kontingent booked in Productive.io
Betreff: Kontingent-Update für [Service Name]
Hallo [Contact],
Ihr aktueller Kontingent-Status für [Service Name]:
- Gebucht: [X]h
- Verbraucht: [Y]h
- Verbleibend: [Z]h
[If low:]
Um die Kontinuität unserer Zusammenarbeit zu gewährleisten,
empfehlen wir eine Aufstockung des Kontingents.
[Options for extension]
Bei Fragen stehen wir gerne zur Verfügung.
Mit freundlichen Grüßen,
[Team]
Before running budget commands:
.productive-config?After generating reports:
development
Deploy invoice-accounting-assistant to HQ server. Runs tests first (TDD), then builds and deploys. Use when ready to push changes to staging/production.
testing
Visual UI verification with agent-browser. Use after implementing UI components to take screenshots, verify interactions, and self-check your work. FASTER than E2E tests.
documentation
Update README with current project status and features. Use after completing features.
tools
--- name: time-report description: Cross-project time report. Aggregates all session data from ~/.claude-time/sessions/. Use to see how much time was spent across all projects. disable-model-invocation: true allowed-tools: Bash, Read argument-hint: [all | this-week | this-month | last-month | {project-name}] --- # Time Report: Cross-Project Session Overview ## Objective Read ALL session files from `~/.claude-time/sessions/*.json` and produce an aggregated time report. Supports filtering by pe