From jaan-to
Activates production deployment pipelines: manages secrets/variables via GitHub/Railway/Vercel/Fly CLI, provisions platforms, hardens supply chain in GitHub Actions. Use for deploying to production.
npx claudepluginhub parhumm/jaan-to --plugin jaan-toThis skill uses the workspace's default tool permissions.
> Activate deployment pipeline — secrets, platforms, supply chain hardening, verification.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Activate deployment pipeline — secrets, platforms, supply chain hardening, verification.
$JAAN_CONTEXT_DIR/tech.md — Tech stack (determines deployment targets, package manager)
#current-stack, #frameworks, #constraints$JAAN_CONTEXT_DIR/config.md — Project configuration$JAAN_TEMPLATES_DIR/jaan-to-devops-deploy-activate.template.md — Activation report template$JAAN_LEARN_DIR/jaan-to-devops-deploy-activate.learn.md — Past lessons (loaded in Pre-Execution)${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md — Language resolution protocolUpstream Artifacts: $ARGUMENTS
/jaan-to:devops-infra-scaffold)$JAAN_OUTPUTS_DIR/devops/infra-scaffold/ for latest outputMANDATORY — Read and execute ALL steps in: ${CLAUDE_PLUGIN_ROOT}/docs/extending/pre-execution-protocol.md
Skill name: devops-deploy-activate
Execute: Step 0 (Init Guard) → A (Load Lessons) → B (Resolve Template) → C (Offer Template Seeding)
Also read context files if available:
$JAAN_CONTEXT_DIR/tech.md — Know the tech stack for platform-specific activation$JAAN_CONTEXT_DIR/config.md — Project configurationRead and apply language protocol: ${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md
Override field for this skill: language_devops-deploy-activate
Language exception: Generated code output (YAML workflows, shell commands, deployment configs) is NOT affected by this setting and remains in English/code.
ultrathink
Use extended reasoning for:
Read infra-scaffold README and CI/CD workflow files:
${{ secrets.* }})
1b. Extract variable names referenced in workflows (${{ vars.* }})If no infra-scaffold found:
$JAAN_OUTPUTS_DIR/devops/infra-scaffold/ for latest outputPresent parsed summary:
INFRA-SCAFFOLD ANALYSIS
=======================
Secrets Referenced: {list with which workflow uses each}
Deployment Platforms: {list}
Docker Registry: {registry or "none"}
GitHub Actions Used: {list with current versions}
Verify required tools are available:
gh auth status (required — GitHub CLI)railway version (if Railway detected)vercel --version (if Vercel detected)fly version (if Fly.io detected)Present status:
CLI TOOL STATUS
===============
gh: ✓ Authenticated as {user} / ✗ Not found
railway: ✓ v{version} / ✗ Not found / ⊘ Not needed
vercel: ✓ v{version} / ✗ Not found / ⊘ Not needed
fly: ✓ v{version} / ✗ Not found / ⊘ Not needed
If gh is missing or not authenticated: stop and ask user to install/authenticate.
Check what is already configured:
gh secret list — which secrets already existgh variable list — which repository variables already exist.vercel/, fly.toml, railway.toml).github/workflows/ for existing CI/CD workflowsPresent state:
CURRENT STATE
=============
Secrets Configured: {count}/{total} ({list})
Secrets Missing: {list}
Variables Configured: {count}/{total} ({list})
Variables Missing: {list}
Platform Links: {found / none}
Existing Workflows: {list or "none"}
Create ordered activation plan:
ACTIVATION CHECKLIST
====================
Status
1. GitHub Secrets {needed / configured / partial}
2. GitHub Repository Variables {needed / configured / partial}
3. GitHub Actions SHA Pinning {needed / done}
4. Backend Platform ({platform}) {needed / linked}
5. Frontend Platform ({platform}) {needed / linked}
6. Repository Variables (post-provision) {needed / configured}
7. Remote Cache (Turborepo) {needed / n/a}
8. Verification Pipeline {needed}
Items to activate: {count}
Already configured: {count}
Mark items as: needed / already configured / optional / n/a
Use AskUserQuestion:
Do NOT proceed to Phase 2 without explicit approval.
For each required secret:
gh secret set {NAME} with the provided valueReference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/devops-deploy-activate-reference.mdsection "Secret Management Patterns" for per-platform secret requirements and naming conventions.
Confirm after each:
Secret
{NAME}configured for repository.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/devops-deploy-activate-reference.mdsection "GitHub Actions SHA Pinning" for the resolution process usinggh api.
For each GitHub Action reference in workflow files:
actions/checkout@v4)gh api repos/{owner}/{repo}/git/ref/tags/{tag}actions/checkout@v4 → actions/checkout@{sha} # v4Present pinning summary:
SHA PINNING RESULTS
===================
Pinned: {count} actions
Skipped: {count} (already pinned)
Failed: {count} (show reasons)
Based on detected deployment target:
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/devops-deploy-activate-reference.mdsection "Platform CLI Provisioning" for Railway, Fly.io, and other platform setup commands.
Railway:
railway init — Create projectrailway link — Link to repositoryrailway variables setrailway statusFly.io:
fly launch — Create app (interactive)fly secrets set — Configure secretsfly statusCapture service URL from platform CLI output for repository variables (Step 8b).
Confirm:
Backend platform ({platform}) provisioned and linked.
Based on detected deployment target:
Vercel:
vercel link — Link to repositoryvercel inspectCapture production URL from platform CLI output for repository variables (Step 8b).
Confirm:
Frontend platform ({platform}) connected with preview deployments.
Set non-sensitive configuration values as GitHub repository variables:
gh variable list — show currently configured variables${{ vars.* }} extraction):
gh variable set {NAME} --body "{value}"gh variable set {NAME} --env production --body "{value}"REPOSITORY VARIABLES
====================
{NAME}: {value}
{NAME}: {value}
Environment-scoped: {list}
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/devops-deploy-activate-reference.mdsection "Repository Variable Patterns" for common variables, URL capture commands, and secrets-vs-variables guidance.
Only if turbo.json exists in the project:
TURBO_TOKEN and TURBO_TEAM as GitHub secretsturbo run build --dryReference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/devops-deploy-activate-reference.mdsection "Caching Hierarchy" for the full caching strategy (pnpm store → Next.js → Docker → Turborepo).
If turbo.json not found: skip with note.
gh workflow run ci.ymlgh run list --limit 1PIPELINE VERIFICATION
=====================
Workflow: {workflow_name}
Run ID: {run_id}
Status: ✓ Pass / ✗ Failed at stage {stage}
Duration: {time}
URL: {run_url}
If failed: show failure details and suggest fixes.
Secrets:
Supply Chain:
v4, latest) remaining in workflowsPlatforms:
Repository Variables:
${{ vars.* }} references have corresponding variables setPipeline:
If any check fails, fix before proceeding.
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/id-generator.sh"
SUBDOMAIN_DIR="$JAAN_OUTPUTS_DIR/devops/deploy-activate"
mkdir -p "$SUBDOMAIN_DIR"
NEXT_ID=$(generate_next_id "$SUBDOMAIN_DIR")
slug="{activation-slug}"
OUTPUT_FOLDER="${SUBDOMAIN_DIR}/${NEXT_ID}-${slug}"
Preview:
Output Configuration
- ID: {NEXT_ID}
- Folder:
$JAAN_OUTPUTS_DIR/devops/deploy-activate/{NEXT_ID}-{slug}/- Main file:
{NEXT_ID}-{slug}.md
Use template from: $JAAN_TEMPLATES_DIR/jaan-to-devops-deploy-activate.template.md
Write {NEXT_ID}-{slug}.md with:
Update index:
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/index-updater.sh"
add_to_index \
"$SUBDOMAIN_DIR/README.md" \
"$NEXT_ID" \
"${NEXT_ID}-${slug}" \
"{Activation Title}" \
"{Executive summary — 1-2 sentences}"
Confirm:
Activation report written to:
$JAAN_OUTPUTS_DIR/devops/deploy-activate/{NEXT_ID}-{slug}/{NEXT_ID}-{slug}.mdIndex updated:$JAAN_OUTPUTS_DIR/devops/deploy-activate/README.md
Deployment pipeline activated!
Immediate Steps:
- Monitor the first real deployment
- Verify preview deployments work on PR creation
- Check secret rotation schedule
Recommended Follow-ups:
- Set up monitoring and alerting for deployed services
- Configure branch protection rules (
gh api repos/{owner}/{repo}/branches/{branch}/protection)- Run
/jaan-to:release-iterate-changelogfor your first release- Schedule secret rotation (recommended: 90 days)
Use AskUserQuestion:
If "Learn from this": Run /jaan-to:learn-add devops-deploy-activate "{feedback}"
/jaan-to:devops-infra-scaffold)/jaan-to:dev-output-integrate)devops-infra-scaffold + dev-output-integrate
|
v
devops-deploy-activate
$JAAN_OUTPUTS_DIR path