一键导入
basecamp-activity
// Fetch Basecamp project or person activity into day-cached JSON atoms. Uses the Basecamp API with pagination and rate-limit backoff. Part of the recap plugin's activity fetcher pipeline.
// Fetch Basecamp project or person activity into day-cached JSON atoms. Uses the Basecamp API with pagination and rate-limit backoff. Part of the recap plugin's activity fetcher pipeline.
Fetch git log from local repos into day-cached JSON atoms. Simplest activity fetcher — no API calls, no pagination. Part of the recap plugin's activity fetcher pipeline.
Fetch GitHub PRs, reviews, issues, and commits into day-cached JSON atoms. Uses the gh CLI for authentication and API calls. Part of the recap plugin's activity fetcher pipeline.
Activity digests — pluggable source fetchers, progressive timescale synthesis, audience-aware composition. Discovers recap:*-activity fetchers, gathers cached activity, synthesizes narrative at daily/weekly/monthly timescales, and composes output for the target audience.
Create install.md files optimized for AI agent execution. Use for ANY question about install.md files or request to create/review installation documentation for autonomous agent use.
Create, edit, and refine agent skills through co-development and eval loops. Use for ANY question about skills or request to create/modify them.
Address PR review comments - fix issues, reply to threads, mark resolved
| name | basecamp-activity |
| description | Fetch Basecamp project or person activity into day-cached JSON atoms. Uses the Basecamp API with pagination and rate-limit backoff. Part of the recap plugin's activity fetcher pipeline. |
| triggers | ["/recap:basecamp-activity","basecamp activity","basecamp project activity"] |
Fetch Basecamp activity events into per-day cached JSON atoms. Supports two scopes:
--project): all events in a Basecamp project--person): all activity by a specific userCaches at ~/.cache/recap/basecamp-project/{id}/{YYYY-MM-DD}/activity.json or
~/.cache/recap/basecamp-person/{slug}/{YYYY-MM-DD}/activity.json.
/recap:basecamp-activity --project 43483623 --since 2026-03-23
/recap:basecamp-activity --project 43483623 --since 2026-03-23 --until 2026-03-30 --reuse
/recap:basecamp-activity --person "Jeremy Daer" --since 2026-03-23
--reuse: skip fetch if cache exists and is marked complete# 1. Validate auth
basecamp auth status | jq -e '.data.authenticated' || { echo "Run: basecamp auth login"; exit 1; }
# 2. Determine date range
SINCE=$(date -d "7 days ago" +%Y-%m-%d)
UNTIL=$(date +%Y-%m-%d)
# 3. Run the fetcher (project-scoped)
"$SKILL_DIR/scripts/basecamp-activity.sh" \
--project 43483623 --since "$SINCE" --until "$UNTIL"
# 4. Verify cache
ls ~/.cache/recap/basecamp-project/43483623/
cat ~/.cache/recap/basecamp-project/43483623/$SINCE/activity.json | jq '.metadata'
Where $SKILL_DIR = directory containing this SKILL.md.
Each activity.json contains:
{
"scope": "project 43483623",
"date": "2026-03-24",
"events": [
{
"id": 123456,
"kind": "message_created",
"created_at": "2026-03-24T14:30:00Z",
"creator": { "id": 789, "name": "Jeremy" },
"title": "Weekly update",
"url": "https://3.basecampapi.com/..."
}
],
"metadata": { "complete": true, "count": 5 }
}
| Argument | Required | Description |
|---|---|---|
--project | One of project/person | Basecamp project ID |
--person | One of project/person | Person name or ID (passed to basecamp timeline --person) |
--since | Yes | Start date (YYYY-MM-DD) |
--until | No | End date (default: today) |
--reuse | No | Skip fetch if cache exists and is complete |
~/.cache/recap/basecamp-project/
43483623/
2026-03-24/activity.json
2026-03-25/activity.json
basecamp CLI installed and authenticated (basecamp auth login)jq for JSON parsingcurl for API calls| Symptom | Cause | Fix |
|---|---|---|
| "basecamp not authenticated" | Token expired | basecamp auth login |
| "account not configured" | Missing config | basecamp config setup |
| Rate limit | Too many API calls | Script retries automatically with backoff |
| Empty activity | No events in range | Expected — empty days are cached as complete |
| HTTP 404 | Wrong project ID | Verify project ID in Basecamp URL |