agentsclimarketplace

Bamboohr prod checklist

Skill jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/bamboohr-pack/skills/bamboohr-prod-checklist

425 plugins, 2,810 skills, 200 agents for Claude Code. Open-source marketplace at tonsofskills.com with the ccpi CLI package manager.

Install
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill bamboohr-prod-checklist

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

'Execute BambooHR production deployment checklist and rollback procedures.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.6 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

BambooHR Production Checklist

Overview

Complete pre-launch checklist for deploying BambooHR integrations to production, covering API configuration, data integrity, monitoring, and rollback procedures.

Prerequisites

  • Staging environment tested and verified
  • Production BambooHR API key ready
  • Deployment pipeline configured
  • Monitoring and alerting infrastructure available

Instructions

Pre-Deployment Checklist

Authentication & Secrets

  • Production API key created under a service account (not personal account)
  • API key stored in secrets manager (AWS Secrets Manager / GCP Secret Manager / Vault)
  • BAMBOOHR_COMPANY_DOMAIN set correctly for production
  • Webhook secret stored securely
  • Key rotation procedure documented and tested
  • Old staging/test keys will not be deployed to production

API Integration Quality

  • All API calls use Accept: application/json header
  • Error handling covers all BambooHR HTTP statuses (400, 401, 403, 404, 503)
  • X-BambooHR-Error-Message header parsed for error details
  • Retry-After header honored on 503 responses
  • Exponential backoff with jitter implemented for retries
  • Request queue limits concurrent API calls (max 3-5 parallel)
  • No hardcoded employee IDs, company domains, or API keys

Data Integrity

  • Custom reports validated against expected field schema
  • Employee directory sync handles new, updated, and terminated employees
  • Date fields parsed consistently (YYYY-MM-DD format)
  • Null/empty field handling tested (BambooHR returns null or "")
  • Unicode employee names handled correctly
  • Large directory tested (500+ employees)

Security & Compliance

  • PII fields redacted from application logs
  • Webhook signatures verified with HMAC-SHA256
  • Only necessary BambooHR fields requested (least data principle)
  • No SSN, salary, or restricted data stored without encryption at rest
  • API access audit trail enabled

Health Check Endpoint

// api/health.ts
import { BambooHRClient, BambooHRApiError } from '../bamboohr/client';

interface HealthStatus {
  status: 'healthy' | 'degraded' | 'down';
  bamboohr: {
    connected: boolean;
    latencyMs: number;
    error?: string;
    employeeCount?: number;
  };
  timestamp: string;
}

export async function healthCheck(client: BambooHRClient): Promise<HealthStatus> {
  const start = Date.now();
  try {
    const dir = await client.getDirectory();
    return {
      status: 'healthy',
      bamboohr: {
        connected: true,
        latencyMs: Date.now() - start,
        employeeCount: dir.employees.length,
      },
      timestamp: new Date().toISOString(),
    };
  } catch (err) {
    const latency = Date.now() - start;
    const errMsg = err instanceof BambooHRApiError ? err.message : 'Unknown error';

    return {
      status: err instanceof BambooHRApiError && err.retryable ? 'degraded' : 'down',
      bamboohr: { connected: false, latencyMs: latency, error: errMsg },
      timestamp: new Date().toISOString(),
    };
  }
}

Monitoring & Alerting

// Recommended alert thresholds for BambooHR integrations
const ALERTS = {
  p1_critical: [
    { name: 'Auth failure', condition: '401/403 errors > 0', action: 'Page on-call' },
    { name: 'API down', condition: 'Health check fails 3x consecutive', action: 'Page on-call' },
  ],
  p2_high: [
    { name: 'Rate limited', condition: '503 errors > 3/min', action: 'Slack alert' },
    { name: 'High latency', condition: 'p99 > 5000ms', action: 'Slack alert' },
    { name: 'Sync failure', condition: 'Sync job fails', action: 'Slack + ticket' },
  ],
  p3_medium: [
    { name: 'Elevated errors', condition: '4xx errors > 10/hour', action: 'Log + daily review' },
    { name: 'Data mismatch', condition: 'Schema validation failures', action: 'Log + ticket' },
  ],
};

Gradual Rollout Strategy

#!/bin/bash
# deploy-bamboohr-integration.sh

echo "=== Pre-flight checks ==="
# 1. Verify BambooHR API is up
curl -sf "https://status.bamboohr.com" > /dev/null || { echo "BambooHR may be down!"; exit 1; }

# 2. Verify production credentials work
STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
  -u "${BAMBOOHR_API_KEY}:x" \
  -H "Accept: application/json" \
  "https://api.bamboohr.com/api/gateway.php/${BAMBOOHR_COMPANY_DOMAIN}/v1/employees/directory")
[ "$STATUS" -eq 200 ] || { echo "Auth check failed: $STATUS"; exit 1; }
echo "API auth: OK"

# 3. Deploy
echo "=== Deploying ==="
# Platform-specific deployment command here
# kubectl apply -f k8s/production.yaml
# fly deploy
# gcloud run deploy ...

# 4. Post-deploy health check
echo "=== Post-deploy verification ==="
sleep 10
curl -sf "https://your-app.com/api/health" | jq .bamboohr

Rollback Procedure

# Immediate rollback
# kubectl rollout undo deployment/bamboohr-integration
# fly releases rollback
# gcloud run services update-traffic --to-revisions=REVISION=100

# Verify rollback health
curl -sf "https://your-app.com/api/health" | jq .

Output

  • Completed pre-deployment checklist
  • Health check endpoint deployed
  • Monitoring alerts configured
  • Gradual rollout with pre-flight checks
  • Documented rollback procedure

Error Handling

AlertConditionSeverityResponse
Auth failure401/403 from BambooHRP1Check API key; rotate if compromised
Rate limit stormContinuous 503sP2Pause sync jobs; reduce request rate
Sync data gapMissing employees in syncP2Run full resync; check changed-since
Schema mismatchNew/removed BambooHR fieldsP3Update field mappings; add defaults

Resources

Next Steps

For version upgrades, see bamboohr-upgrade-migration.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.