Claude-skill-registry-data migrate-config
Migrate .env-only configuration to split secrets/config format
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/migrate-config" ~/.claude/skills/majiayu000-claude-skill-registry-data-migrate-config && rm -rf "$T"
manifest:
data/migrate-config/SKILL.mdsource content
Migrate your project from the old .env-only format to the new split format where secrets stay in
.env (gitignored) and configuration moves to .specweave/config.json (committed to git).
What this command does:
- ✅ Analyzes your
file.env - ✅ Classifies variables as "secrets" or "config"
- ✅ Backs up original
file.env - ✅ Updates
(keeps only secrets).env - ✅ Creates/updates
(adds config).specweave/config.json - ✅ Generates
for team onboarding.env.example
When to use:
- You're upgrading from SpecWeave v0.23.x or earlier
- Your
contains both secrets AND configuration (domain, strategy, etc.).env - You want to share configuration with your team via git
Command:
node -e "require('./dist/src/cli/commands/migrate-config.js').migrateConfig()"
Options:
: Preview migration without making changes--dry-run
: Skip confirmation prompt--yes
: Force migration even if not needed--force
Example output:
🔄 SpecWeave Configuration Migration 📋 Migration Preview Classification Results: Secrets: 3 variables Config: 5 variables 📊 Detailed Breakdown: Secrets (will stay in .env): JIRA_API_TOKEN=xyzabc***456 └─ Contains keyword: token JIRA_EMAIL=user@example.com └─ Email address (used for authentication) Configuration (will move to config.json): JIRA_DOMAIN=company.atlassian.net └─ Non-sensitive configuration data JIRA_STRATEGY=project-per-team └─ Non-sensitive configuration data ✅ Migration Successful! Summary: ✓ 3 secrets kept in .env ✓ 5 config items moved to config.json ✓ Backup created: .env.backup.1234567890 ✓ .env.example generated 📝 Next Steps: 1. Review .specweave/config.json (commit to git) 2. Share .env.example with team (commit to git) 3. Team members: cp .env.example .env (fill in tokens)
Benefits:
- ✅ Team shares configuration via git
- ✅ Secrets stay local (never committed)
- ✅ Type-safe configuration with validation
- ✅ Easy onboarding for new team members
Classification logic:
Variables classified as secrets (stay in .env):
- Contains keywords:
,token
,api_token
,pat
,secret
,key
,password
,credentialauth - Email addresses (used for authentication)
Variables classified as config (move to config.json):
- Everything else: domains, strategies, project keys, organizations, etc.
Safety:
- 🔒 Always creates backup before modifying
.env - 🔒 Atomic operation (either completes fully or rolls back)
- 🔒 Idempotent (can run multiple times safely)
- 🔒 Dry-run mode available for preview
See also:
- ADR-0050: Secrets vs Configuration Separation
- Validate configuration after migration/sw:validate- Documentation:
→ Configuration Management sectionCLAUDE.md