agentsclimarketplace

Cf switch backend

Skill indranilbanerjee/contentforge/skills/cf-switch-backend

Open-source enterprise content production plugin — 21 skills, 13 agents, 11 quality gates, 29-pattern AI humanizer, fact-checker, real .docx output with C2PA signing (EU AI Act Article 50 ready). Installs on Claude Code, Cowork, Codex, Cursor, Copilot CLI, Antigravity. By Indranil Banerjee (indranil.in).

Install
npx -y skills add indranilbanerjee/contentforge --skill cf-switch-backend

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

One thing to look at

  • 17 stars17 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Switch tracking backend (local/airtable/google) with optional data migration

SKILL.md

5.7 KB, as published. Nobody here has run it

Switch Tracking Backend

Switch ContentForge's tracking and delivery backend between Google Sheets + Drive, Airtable, or Local filesystem. Optionally migrate existing tracking data and output files to the new backend.

When to Use

  • Switching from local (default) to a cloud backend for collaboration
  • Migrating from Google to Airtable (or vice versa) for simpler auth
  • Downgrading to local when cloud access isn't needed
  • Checking current backend status before switching

Running in Cowork? The "local" backend writes to the ephemeral sandbox filesystem — files vanish at session end. For Cowork team setups, use the Google (Drive) route and run /contentforge:cf-cowork-setup first to wire the Drive folder layout.

How to Use

/contentforge:cf-switch-backend airtable
/contentforge:cf-switch-backend google
/contentforge:cf-switch-backend local
/contentforge:cf-switch-backend --status

What This Command Does

Step 1: Identify Current Backend

Read the active brand profile's tracking.backend field.

Report current state:

Current backend: local
Records: 47 tracking records
Output files: 42 files in ~/.claude-marketing/{brand}/tracking/outputs/

Step 2: Validate Target Backend

If switching to Airtable:

  1. Check AIRTABLE_TOKEN environment variable exists
  2. If missing, guide through setup:
    • Go to airtable.com/create/tokens
    • Create a Personal Access Token with data.records:read and data.records:write scopes
    • Select the base that will hold tracking data
    • Set the environment variable: export AIRTABLE_TOKEN=patXXXXXXXX
  3. Ask for the Airtable Base ID (from the base URL: airtable.com/appXXXXXXXXX/...)
  4. Verify access by running:
    python {scripts_dir}/airtable-tracker.py --action init --base-id {base_id}
    

If switching to Google Sheets + Drive:

  1. Check Google credentials at ~/.claude-marketing/google-credentials.json
  2. If missing, guide through setup:
    • Go to Google Cloud Console > IAM & Admin > Service Accounts
    • Create a project (or use existing)
    • Enable Google Sheets API and Google Drive API
    • Create a Service Account and download the JSON key
    • Save to ~/.claude-marketing/google-credentials.json
    • Create a Google Sheet and share it with the service account email (Editor)
    • Create a Google Drive folder and share it with the service account email (Editor)
  3. Ask for the Google Sheet ID and Drive folder ID
  4. Verify access by running:
    python {scripts_dir}/sheets-tracker.py --action init --sheet-id {sheet_id}
    

If switching to Local:

  • No setup needed — works immediately
  • Run init to ensure directory exists:
    python {scripts_dir}/local-tracker.py --action init --brand "{brand}"
    

Step 3: Offer Migration

If the current backend has existing records:

You have 47 tracking records and 42 output files on 'local'.
Would you like to migrate this data to Airtable?
  1. Yes — Copy all records and files to the new backend
  2. No — Start fresh (existing data preserved but not synced)
  3. Skip — Just switch, decide on migration later

If yes, run:

python {scripts_dir}/backend-migrator.py --action migrate --brand "{brand}" --from {current} --to {target} [backend-specific args]

Report migration results:

Migration complete:
  Records migrated: 47
  Files migrated: 42
  Files failed: 0
  Source data preserved at: ~/.claude-marketing/{brand}/tracking/

Step 4: Update Brand Profile

Update the brand profile JSON:

  • Set tracking.backend to the new backend value
  • Fill in backend-specific config (base_id, sheet_id, folder_id, etc.)

Step 5: Confirm

Backend switched to Airtable.
  New tracking records → Airtable base appXXXXXX
  Output files → Airtable attachment fields
  Previous data preserved at: ~/.claude-marketing/{brand}/tracking/

Run /contentforge:cf-switch-backend --status to verify anytime.

Backend Comparison

FactorGoogle Sheets + DriveAirtableLocal
Auth setupService account (~5 min)Personal token (~2 min)None
TrackingGoogle SheetsAirtable recordsJSON file
File deliveryGoogle DriveAttachment fieldLocal filesystem
CollaborationShare via GoogleShare via AirtableSingle user
Free tier15GB Drive1,000 records + 10GBUnlimited
OfflineNoNoYes

Check Status

Run with --status flag to check current backend health:

/contentforge:cf-switch-backend --status

This runs:

python {scripts_dir}/backend-migrator.py --action status --brand "{brand}" --from {current_backend}

Important Notes

  • Migration is additive — source data is never deleted
  • Migration is idempotent — running twice won't create duplicates
  • Migration is resumable — if interrupted, re-run picks up where it left off
  • You can switch back anytime — data is preserved on all backends you've used
  • The pipeline uses whichever backend is set in tracking.backend — switching takes effect immediately for the next content run

Related Skills

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.