Help us improve
Share bugs, ideas, or general feedback.
From software-of-you
Manages full SQLite database backups: export all tables to dated JSON (default), import from file, or check status and list files.
npx claudepluginhub kmorebetter/better-software-of-youHow this command is triggered — by the user, by Claude, or both
Slash command
/software-of-you:backup export | import <path> | statusThis command is limited to the following tools:
The summary Claude sees in its command listing — used to decide when to auto-load this command
# Backup
Manage full database backups for `${CLAUDE_PLUGIN_ROOT:-$(pwd)}/data/soy.db`.
Parse $ARGUMENTS to determine the subcommand. Default (no args) is **export**.
## /backup or /backup export
Export all data to a single JSON file.
1. Query every table and collect results as JSON arrays. Use `sqlite3 -json` mode for each table:
For tables that don't exist yet (module not installed), skip them — don't error.
2. Combine into a single JSON object keyed by table name:
3. Write to `${CLAUDE_PLUGIN_ROOT:-$(pwd)}/output/backup-{YYYY-MM-DD}.json` (use today's date).
4. Stamp the backu.../backupGenerates automated database backup scripts, restore procedures, cron schedules, monitoring setups, and recovery plans for systems like PostgreSQL, MySQL, MongoDB.
/backupDesigns backup strategies and disaster recovery plans: inventories data assets, defines RPO/RTO targets, automates verification, tests recovery, generates runbooks with PROTECTED/PARTIAL/AT-RISK verdict. Supports inventory, strategy, runbook, test, and scenario flags.
/backupBacks up MCP server configurations by running the armour backup script, creating ~/.armour/backup.json for restoration.
Share bugs, ideas, or general feedback.
Manage full database backups for ${CLAUDE_PLUGIN_ROOT:-$(pwd)}/data/soy.db.
Parse $ARGUMENTS to determine the subcommand. Default (no args) is export.
Export all data to a single JSON file.
sqlite3 -json mode for each table:contacts, tags, entity_tags, notes, activity_log, modules, contact_interactions, contact_relationships, follow_ups, projects, tasks, milestones, emails, calendar_events, transcripts, transcript_participants, commitments, conversation_metrics, communication_insights, relationship_scores, generated_views, soy_meta
For tables that don't exist yet (module not installed), skip them — don't error.
{
"backup_date": "2026-02-19T...",
"tables": {
"contacts": [...],
"projects": [...],
...
}
}
Write to ${CLAUDE_PLUGIN_ROOT:-$(pwd)}/output/backup-{YYYY-MM-DD}.json (use today's date).
Stamp the backup time in soy_meta:
INSERT OR REPLACE INTO soy_meta (key, value) VALUES ('last_backup_at', datetime('now'));
Import data from a backup JSON file.
generated_views — skip those, they are regenerated):
INSERT OR REPLACE to upsert every row.INSERT INTO activity_log (entity_type, entity_id, action, details)
VALUES ('system', 0, 'backup_imported', json_object('source', '<filename>', 'tables_imported', X));
Show the last backup time and available backup files.
SELECT value FROM soy_meta WHERE key = 'last_backup_at';
List backup files in ${CLAUDE_PLUGIN_ROOT:-$(pwd)}/output/ matching backup-*.json, showing filename and size.
Present clearly: "Last backup: 3 days ago. 2 backup files found." If no backups exist, say so and suggest running /backup.