Complete Doppler secret management setup with scripts, docs, and GitHub integration
Sets up complete Doppler secret management with scripts, documentation, and GitHub integration.
/plugin marketplace add vanman2024/dev-lifecycle-marketplace/plugin install foundation@dev-lifecycle-marketplaceproject-namešØ EXECUTION NOTICE FOR CLAUDE
When you invoke this command via SlashCommand, the system returns THESE INSTRUCTIONS below.
YOU are the executor. This is NOT an autonomous subprocess.
Immediately after SlashCommand returns, start executing Phase 0, then Phase 1, etc.
See @CLAUDE.md section "SlashCommand Execution - YOU Are The Executor" for detailed explanation.
CRITICAL: All generated files must follow security rules:
@~/.claude/plugins/marketplaces/dev-lifecycle-marketplace/docs/security/SECURITY-RULES.md
Key requirements:
your_service_key_here.env files with .gitignore.env.example with placeholders onlyArguments: $ARGUMENTS
Goal: Complete Doppler setup with scripts, documentation, and GitHub integration
This command uses the doppler-management skill to generate all necessary files.
Goal: Detect project context and check prerequisites
Actions:
If Doppler not installed:
If not authenticated:
Goal: Create Doppler project and environments
Actions:
Create Doppler project: !{bash doppler projects create $PROJECT_NAME --description "$PROJECT_NAME - AI-powered application" 2>&1}
Create environments with proper names and slugs: !{bash doppler environments create dev dev --project $PROJECT_NAME 2>&1 || echo "dev exists"} !{bash doppler environments create staging stg --project $PROJECT_NAME 2>&1 || echo "stg exists"} !{bash doppler environments create production prd --project $PROJECT_NAME 2>&1 || echo "prd exists"}
Configure local development: !{bash doppler setup --project $PROJECT_NAME --config dev --no-interactive 2>&1}
Verify environments created: !{bash doppler environments --project $PROJECT_NAME 2>&1}
Goal: Create all Doppler utility scripts from templates
Use doppler-management skill templates:
Create scripts/doppler/ directory: !{bash mkdir -p scripts/doppler}
Generate migrate-to-doppler.sh:
skills/doppler-management/scripts/migrate-to-doppler.sh{{PROJECT_NAME}} ā $PROJECT_NAME{{GITHUB_REPO}} ā $GITHUB_REPO (detected){{GENERATION_DATE}} ā $(date +%Y-%m-%d)scripts/doppler/migrate-to-doppler.shGenerate run-with-doppler.sh:
skills/doppler-management/scripts/run-with-doppler.sh{{PROJECT_NAME}} ā $PROJECT_NAMEscripts/doppler/run-with-doppler.shGenerate setup-doppler-github.sh:
skills/doppler-management/scripts/setup-doppler-github.sh{{PROJECT_NAME}} ā $PROJECT_NAME{{GITHUB_REPO}} ā $GITHUB_REPOscripts/doppler/setup-doppler-github.shGoal: Create comprehensive Doppler documentation
Use doppler-management skill templates:
Create docs/doppler/ directory: !{bash mkdir -p docs/doppler}
Generate README.md:
skills/doppler-management/templates/docs/README.md{{PROJECT_NAME}} ā $PROJECT_NAME{{GITHUB_REPO}} ā $GITHUB_REPOdocs/doppler/README.mdGenerate integration-guide.md:
skills/doppler-management/templates/docs/integration-guide.mddocs/doppler/integration-guide.mdGenerate github-integration.md:
skills/doppler-management/templates/docs/github-integration.md{{GITHUB_REPO}} ā $GITHUB_REPOdocs/doppler/github-integration.mdGenerate environment-setup.md:
skills/doppler-management/templates/docs/environment-setup.mddocs/doppler/environment-setup.mdCopy PLUGIN-DESIGN.md:
skills/doppler-management/templates/docs/PLUGIN-DESIGN.mddocs/doppler/PLUGIN-DESIGN.mdGoal: Create test workflow for verifying Doppler integration
Actions:
Create .github/workflows/ directory if not exists: !{bash mkdir -p .github/workflows}
Generate test-doppler-secrets.yml:
skills/doppler-management/templates/workflows/test-doppler-secrets.yml.github/workflows/test-doppler-secrets.ymlGoal: Protect Doppler configuration files
Actions:
Check if .gitignore exists
Add Doppler entries if not present:
# Doppler (secret management)
.doppler.env
doppler.yaml
.doppler/
Add to .gitignore: !{bash grep -q "doppler" .gitignore 2>/dev/null || echo -e "\n# Doppler (secret management)\n.doppler.env\ndoppler.yaml\n.doppler/" >> .gitignore}
Goal: Create quick reference guide
Actions:
Goal: Display completion status and guide user
Display:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Doppler Setup Complete! ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Project: $PROJECT_NAME
Repository: $GITHUB_REPO
Environments: dev, stg, prd
Files Created:
ā scripts/doppler/
āāā migrate-to-doppler.sh (8.4K)
āāā run-with-doppler.sh (1.3K)
āāā setup-doppler-github.sh (8.2K)
ā docs/doppler/
āāā README.md (9.7K)
āāā integration-guide.md (15K)
āāā github-integration.md (12K)
āāā environment-setup.md (17K)
āāā PLUGIN-DESIGN.md (Design docs)
ā .github/workflows/
āāā test-doppler-secrets.yml (6.8K)
ā DOPPLER-SETUP-SUMMARY.md (11K)
ā .gitignore updated
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Next Steps:
1. EDIT MIGRATION SCRIPT (Required)
nano scripts/doppler/migrate-to-doppler.sh
Replace placeholders with real values:
- GOOGLE_API_KEY
- SUPABASE_URL
- SUPABASE_ANON_KEY
- SUPABASE_SERVICE_KEY
2. RUN MIGRATION
scripts/doppler/migrate-to-doppler.sh
3. SETUP GITHUB INTEGRATION
scripts/doppler/setup-doppler-github.sh
4. TEST LOCAL DEVELOPMENT
scripts/doppler/run-with-doppler.sh uvicorn api.main:app --reload
5. VERIFY SECRETS
doppler secrets --project $PROJECT_NAME --config dev
6. CLEAN UP OLD .env FILES (After verification)
trash-put .env.development .env.staging .env.production
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Documentation:
- Quick Start: docs/doppler/README.md
- Full Guide: docs/doppler/integration-guide.md
- GitHub Setup: docs/doppler/github-integration.md
- Summary: DOPPLER-SETUP-SUMMARY.md
Dashboards:
- Doppler: https://dashboard.doppler.com/workplace/projects/$PROJECT_NAME
- GitHub: https://github.com/$GITHUB_REPO
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
SECURITY REMINDER:
ā ļø migrate-to-doppler.sh contains PLACEHOLDERS only
ā ļø You MUST edit with real secrets before running
ā ļø Never commit this file after adding real secrets
This command has access to foundation plugin skills:
To use a skill: !{skill skill-name}