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).
npx -y skills add indranilbanerjee/contentforge --skill cf-switch-backendAssembled 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:
- Check
AIRTABLE_TOKENenvironment variable exists - If missing, guide through setup:
- Go to airtable.com/create/tokens
- Create a Personal Access Token with
data.records:readanddata.records:writescopes - Select the base that will hold tracking data
- Set the environment variable:
export AIRTABLE_TOKEN=patXXXXXXXX
- Ask for the Airtable Base ID (from the base URL:
airtable.com/appXXXXXXXXX/...) - Verify access by running:
python {scripts_dir}/airtable-tracker.py --action init --base-id {base_id}
If switching to Google Sheets + Drive:
- Check Google credentials at
~/.claude-marketing/google-credentials.json - 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)
- Ask for the Google Sheet ID and Drive folder ID
- 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.backendto 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
| Factor | Google Sheets + Drive | Airtable | Local |
|---|---|---|---|
| Auth setup | Service account (~5 min) | Personal token (~2 min) | None |
| Tracking | Google Sheets | Airtable records | JSON file |
| File delivery | Google Drive | Attachment field | Local filesystem |
| Collaboration | Share via Google | Share via Airtable | Single user |
| Free tier | 15GB Drive | 1,000 records + 10GB | Unlimited |
| Offline | No | No | Yes |
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
- /contentforge:cf-style-guide — Brand setup (Step G sets initial backend)
- /contentforge:cf-cowork-setup — Wire Cowork + Drive before choosing the Google backend in Cowork
- /contentforge:cf-integrations — Check all connector status
- /contentforge:cf-connect — Set up individual connectors