Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
basecamp avatar

Basecamp Activity

  • 6 installs
  • 76 repo stars
  • Updated July 31, 2026
  • basecamp/house-skills

basecamp-activity is a Claude Code skill that fetches Basecamp project or person activity into day-cached JSON atoms.

About

basecamp-activity is a Claude Code skill that fetches Basecamp project or person activity into per-day cached JSON atoms via the Basecamp API. A developer uses it as part of the recap plugin's fetcher pipeline to build daily, weekly, or monthly activity digests. It is idempotent, day-cached, and handles pagination and rate-limit backoff.

  • Fetches Basecamp project or person activity into day-cached JSON atoms
  • Idempotent and rate-limit aware with exponential backoff on 429s
  • Feeds the recap plugin's activity fetcher pipeline

Basecamp Activity by the numbers

  • 6 all-time installs (skills.sh)
  • Ranked #1,691 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

basecamp-activity capabilities & compatibility

Capabilities
activity fetch · data caching
Use cases
data analysis
From the docs

What basecamp-activity says it does

Fetch Basecamp project or person activity into day-cached JSON atoms. Uses the Basecamp API with pagination and rate-limit backoff.
SKILL.md
Part of the recap plugin's activity fetcher pipeline.
SKILL.md
npx skills add https://github.com/basecamp/house-skills --skill basecamp-activity

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs6
repo stars76
Last updatedJuly 31, 2026
Repositorybasecamp/house-skills

What it does

Fetch Basecamp project or person activity into day-cached JSON atoms for recap digests.

Who is it for?

Pulling Basecamp activity into cached atoms for recap digests.

When should I use this skill?

You need to fetch Basecamp project or person activity for a recap.

What you get

Per-day cached JSON atoms of Basecamp activity ready for digest synthesis.

  • day-cached activity.json atoms

By the numbers

  • one JSON file per scope per day

Files

SKILL.mdMarkdownGitHub ↗

Basecamp Activity Fetcher

Fetch Basecamp activity events into per-day cached JSON atoms. Supports two scopes:

  • Project-scoped (--project): all events in a Basecamp project
  • Person-scoped (--person): all activity by a specific user

Caches at ~/.cache/recap/basecamp-project/{id}/{YYYY-MM-DD}/activity.json or ~/.cache/recap/basecamp-person/{slug}/{YYYY-MM-DD}/activity.json.

Invocation

/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

Contract

  • Idempotent: same input produces same output, safe to re-run
  • Day-cached: one JSON file per scope per day
  • `--reuse`: skip fetch if cache exists and is marked complete
  • Rate-limit aware: exponential backoff on 429 responses

Quick Run

# 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.

Output Format

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 }
}

Arguments

ArgumentRequiredDescription
--projectOne of project/personBasecamp project ID
--personOne of project/personPerson name or ID (passed to basecamp timeline --person)
--sinceYesStart date (YYYY-MM-DD)
--untilNoEnd date (default: today)
--reuseNoSkip fetch if cache exists and is complete

Cache Structure

~/.cache/recap/basecamp-project/
  43483623/
    2026-03-24/activity.json
    2026-03-25/activity.json

Prerequisites

  • basecamp CLI installed and authenticated (basecamp auth login)
  • jq for JSON parsing
  • curl for API calls

Failure Modes

SymptomCauseFix
"basecamp not authenticated"Token expiredbasecamp auth login
"account not configured"Missing configbasecamp config setup
Rate limitToo many API callsScript retries automatically with backoff
Empty activityNo events in rangeExpected — empty days are cached as complete
HTTP 404Wrong project IDVerify project ID in Basecamp URL

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.