MCPInstall

dx-devops-work-item-manage

Use this skill to manage the full lifecycle of DevOps Center work items — list, create, update, commit changes, perform status transitions, and create pull requests. Update fields like subject, description, and status. Commit changes to work item branches, through the DevOps Center commit API or git. Create pull requests for work item branches via DevOps Center API. Invoke when the user wants to track, find, create, or update a work item, commit changes to a work item branch, advance a work item's status through the pipeline, or create a pull request for code review. Consolidates sf devops work-item and review operations. DO NOT TRIGGER for promotion or deployment operations, or conflict detection.

Installs
3K
Last 24h
+11
Trending rank
#8461
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/forcedotcom/sf-skills --skill dx-devops-work-item-manage
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads dx-devops-work-item-manage automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

DevOps Center Work Item Management

Manages the complete work item lifecycle in DevOps Center — from creation through status transitions to promotion readiness. Provides headless CLI-driven operations for autonomous release workflows.

Scope

  • In scope: List work items, create new work items, commit changes to work item branches, update work item fields (subject, description, status), transition work item status (New → In Progress → Ready to Promote), create pull requests for work item branches
  • Out of scope: Promotion/deployment, conflict detection, pipeline or project management (separate skills)

Required Inputs

Gather or infer before proceeding:

  • Operation type: list, create, update, commit, or create-review
  • For list: project ID (required) — obtain via sf devops project list --json if not provided
  • For create: project ID (required), subject (required), description (optional)
  • For commit: work item name or ID (required), commit message, and either the files to commit (git path) or the components to commit (API path). Optional: dev org alias — the org that holds the changes. When provided, try the DevOps Center commit API first (see step 5); otherwise use git
  • For update: work item name (e.g., WI-000001) or work item ID (required), fields to update (subject, description, status)
  • For create-review: work item name (e.g., WI-000001) or work item ID (required)

Defaults unless specified:

  • Output format: --json for headless consumption
  • Work item identifier: prefer --work-item-name (WI-000001) over --work-item-id when both are available (names are human-readable)

If the user provides a clear request ("list work items for Project Alpha", "create work item to fix login bug", "move WI-12345 to In Progress", "create PR for WI-12345"), proceed immediately without unnecessary questions.


Workflow

Operations use sf devops work-item CLI commands with --json output; the API commit path also uses sf api request rest and sf data query.

Phase 1 — Identify Operation

  1. Determine the operation type from user intent:
    • Keywords like "list", "show", "find" → list operation
    • Keywords like "create", "new", "add" → create operation
    • Keywords like "commit", "push", "save changes", "git commit" → commit operation
    • Keywords like "update", "change", "modify", "edit", "move", "transition", "advance", "mark as" → update operation
    • Keywords like "create PR", "pull request", "code review", "review", "open PR" → create-review operation

Phase 2 — Execute Operation

  1. Verify org authentication before any operation:

    sf org display --json
    
    • If no default org is set or authentication has expired, instruct the user to run:
      sf org login web --set-default --alias <alias>
      
    • Verify the authenticated org has DevOps Center enabled by attempting to list projects
    • If the user wants to target a specific org, use --target-org <alias> on all subsequent commands
    • For the API commit path, run sf org display --target-org <alias> --json for both the dev org and the hub org
  2. List work items — when the user wants to see existing work items:

    sf devops work-item list --project-id <project-id> --json
    
    • --project-id is required — if the user provides a project name instead of ID, first run sf devops project list --json to resolve the name to an ID
    • Verify the command returns status 0 (success)
    • Parse the JSON output: the work items are in the .result[] array
    • Each work item has: name (e.g., WI-000001), subject, branch, environment, status, description
    • Present in a readable format showing work item name, subject, status, branch, and environment
    • If .result[] is an empty array, confirm "No work items found in project <project-name>."
    • If the user requested filtering by status (e.g., "show work items in Ready to Promote status"), run:
      sf devops work-item list --project-id <id> --json | jq '.result[] | select(.status == "<requested-status>")'
      
      Then present the matching work items
  3. Create a work item — when the user wants to create a new work item:

    sf devops work-item create \
      --project-id <project-id> \
      --subject "<subject>" \
      --description "<description>" \
      --json
    
    • --project-id is required (obtain from user or via sf devops project list --json)
    • --subject is required (user-facing title)
    • --description is optional (defaults to blank if omitted)
    • Capture the returned work item name (e.g., WI-000001), branch name, and environment from JSON output for future operations
    • Idempotent: if the user attempts to create a duplicate (same subject + project), check via list first and return the existing work item
  4. Execute commit operation — when operation type is commit. Choose the path first:

    • API path — only when the user gave a dev org alias AND the changes are already deployed in that dev org (if unsure, ask: deploy with sf project deploy start, or use git). Dev org alias: commitChanges, DevopsRequestInfo. Hub alias: sf devops and WorkItemComponentList. DevOps Center retrieves the named components from the dev org and commits them as DevOps Center <noreply@salesforce.com>.
    • Git path — everything else. If the changes exist only in the dev org, run sf project retrieve start --target-org <dev-org> first.

    API path (commands, body, error codes and polling in references/commit-api.md):

    1. Preflight GET /connect/devops/doceConnectionType on the dev org; a failed call (non-zero exit or error body) or isCore not true means use the git path.
    2. sf devops project list → project id, then sf devops work-item list --project-id <id> --target-org <hub> → work item id and name. Status must be New, In Progress, In Review or Ready to Promote.
    3. POST /connect/devops/commitChanges on the dev org; the body is the inner object (no commitChanges wrapper).
    4. A failed call, or status: "ERROR" with reqId = CODE:message: surface it and stop.
    5. If the POST status is SUCCESS (accepted only), poll DevopsRequestInfo WHERE RequestToken = '<reqId>' on the dev org every 10 seconds until Status is SUCCESS or ERROR (report Message/ErrorDetails), 12-minute deadline. Past it the request is stuck; report it and do not retry automatically.
    6. Confirm a new WorkItemComponentList exists on the hub before creating a review.

    Git path:

    • If the work item is New, first set it to In Progress (step 6); the hub ignores pushes made while it is New
    • Use the work item's branch field as the branch
    • Standard git workflow:
      git checkout <branch-name>
      git add <files>
      git commit -m "<commit-message>"
      git push origin <branch-name>
      
    • The hub registers the push asynchronously; re-check it before creating a PR
  5. Update work item — when the user wants to change subject, description, or status:

    sf devops work-item update \
      --work-item-name <WI-name> \
      --subject "<new-subject>" \
      --description "<new-description>" \
      --status "<In Progress|Ready to Promote>" \
      --json
    
    • Work item identifier is required: use --work-item-name <WI-000001> (preferred) or --work-item-id <id>
    • If the user provides a work item by subject instead of name, resolve it to a name first:
      sf devops work-item list --project-id <id> --json | jq -r '.result[] | select(.subject == "<user-provided-subject>") | .name'
      
      Then pass the returned name (e.g., WI-000001) to the update command
    • At least one of --subject, --description, or --status must be provided
    • Valid status values: "In Progress" or "Ready to Promote" (exact strings with spaces)
    • Only include flags for fields being updated (omit unchanged fields)
    • Verify the command returns status 0 (success)
    • Parse the JSON response: .result.name, .result.subject, .result.status contain the updated values
    • For status transitions specifically: after the command completes, explicitly confirm the new status by checking .result.status in the response. If the status field is absent from the update response, re-query the work item via list to verify the status persisted
  6. Create pull request — when the user wants to create a PR for code review:

    sf devops review create \
      --work-item-name <WI-name> \
      --json
    
    • Work item identifier is required: use --work-item-name <WI-000001> (preferred) or --work-item-id <id>
    • If the user provides a work item by subject instead of name, resolve it to a name first:
      sf devops work-item list --project-id <id> --json | jq -r '.result[] | select(.subject == "<user-provided-subject>") | .name'
      
      Then pass the returned name (e.g., WI-000001) to the review create command
    • Creates PR via DevOps Center API using VCS credentials stored in the org
    • No local VCS authentication required — DevOps Center handles GitHub/Bitbucket auth
    • Works with GitHub and Bitbucket
    • Verify the command returns status 0 (success)
    • Parse the JSON response: .result.pullRequestUrl contains the PR URL, .result.status contains the PR status (typically "open" for newly created PRs), .result.number contains the PR number
    • If the command fails with a VCS credentials error, instruct the user to configure VCS credentials in the DevOps Center org (Setup → DevOps Center → VCS Credentials)
    • If the command fails with "PR already exists" error, report that a PR already exists for this work item (idempotent operation)

Phase 3 — Verify and Report

  1. Verify operation success:

    • For list: confirm the CLI returned status 0, parse the JSON .result[] array, and verify it contains work items (or is empty if no matches). If the user specified a project by name, confirm the resolved project ID matches.
    • For create: verify the CLI returned status 0 and the JSON output contains .result.name (work item ID like WI-000001), .result.branch (branch name), and .result.environment fields.
    • For commit (git path): verify each git command returned exit code 0. If git push succeeds, the commit is saved to the work item branch; the hub registers it asynchronously.
    • For commit (API path): verify the POST status, then DevopsRequestInfo.Status, are SUCCESS, and that a new WorkItemComponentList with a CommitReference exists on the hub. A new list with an empty CommitReference means nothing new was committed; report that, not a clean success.
    • For update (general fields): verify the CLI returned status 0 and compare the returned JSON fields against the user's requested changes. If updating subject, confirm .result.subject matches the new value.
    • For update (status transition): verify the CLI returned status 0, then explicitly confirm the status transition by checking .result.status in the JSON response matches the target status (e.g., "Ready to Promote"). If the response doesn't include the status field, re-run sf devops work-item list filtered to this work item and verify the status persisted.
    • For create-review: verify the CLI returned status 0 and the JSON output contains .result.pullRequestUrl (the PR URL) and .result.status (should be "open" or equivalent). If VCS credentials are missing, the CLI returns an error — surface this to the user.
  2. Report results:

    • List: present work items in a readable format showing work item name, subject, status, branch, and environment. If filtering by status was requested, show only matching work items.
    • Create: return the work item name (e.g., WI-000001), branch name, environment, and confirm "Work item created successfully."
    • Commit: git path — confirm which files were staged, the commit SHA (from git output), and "Changes committed and pushed to branch <branch-name>." API path — confirm the reqId, components committed and hub CommitReference (author is DevOps Center)
    • Update (general): confirm which fields changed with before/after values (e.g., "Subject updated from 'X' to 'Y'").
    • Status transition: explicitly state the transition with old → new status (e.g., "Status updated: In Progress → Ready to Promote").
    • Create-review: return the PR URL and confirm "Pull request created successfully. Status: open. URL: <url>"

Rules / Constraints

ConstraintRationale
All sf devops commands must use --json flagStructured output is required for headless consumption; human-readable output is unreliable for parsing
Work item identifier required for commit, update, and create-reviewUse --work-item-name (preferred) or --work-item-id; obtain from list or prior create
Project ID required for list and createAll work items belong to a project; use sf devops project list --json if not provided
At least one update field requiredUpdate command fails if no --subject, --description, or --status flag is provided
Status values must be exact strings"In Progress" and "Ready to Promote" (with spaces, proper capitalization); other values fail
Idempotent create operationsCheck for existing work item with same subject + project before creating duplicates
Commit before creating a PRCommit first and confirm a component list exists on the hub before review create
API commit only sends components already in the dev orgThe API retrieves from the dev org, not from local disk; deploy local-only edits first (sf project deploy start) or use the git path
Check status in the commit API responseErrors are returned as HTTP 200 with status: "ERROR"
PR creation requires VCS credentials in orgDevOps Center API uses stored VCS credentials; no local git auth needed
Never use interactive promptsSkills run in headless environments; all inputs must be via CLI flags

Gotchas

IssueResolution
No default org setRun sf org display --json first; if it fails, instruct user to run sf org login web --set-default
User provides work item by subject, not nameResolve via: sf devops work-item list --project-id <id> --json | jq -r '.result[] | select(.subject == "<subject>") | .name'; then pass the returned name to the update/create-review command
User provides project by name, not IDFirst run sf devops project list --json and filter .result[] by .name field to find the project ID, then use that ID in the list/create command
Status update response missing status fieldThe CLI doesn't always return the status field in the update response; re-run sf devops work-item list filtered to this work item and check .result[0].status to verify the transition persisted
Work item not foundUser provided invalid work item name/ID; run list command to show available work items
Invalid status valueOnly "In Progress" and "Ready to Promote" are valid (exact strings with spaces); check spelling and capitalization
Project not foundUser provided invalid project ID; run sf devops project list --json to show available projects
Duplicate work item subjectIdempotent create check should catch this; return existing work item name instead of creating duplicate
Commit pushed while work item is NewThe hub ignores external pushes for New work items; set In Progress first and, if already pushed, re-check after the status change
API commit still in progress past the deadlineReport it as stuck; do not retry automatically (a new request could race it)
Git push fails - no commits or branch not foundVerify files are staged with git status and branch name retrieved from work item via list command
PR creation fails - VCS credentialsVCS credentials not configured in DevOps Center UI; instruct user to configure in Setup → DevOps Center → VCS Credentials

Output Expectations

Deliverables vary by operation:

  • List: JSON array of work items with work item name (WI-######), subject, branch, environment, repository details
  • Create: Work item name (e.g., WI-000001), ID, branch name, and environment of the newly created work item
  • Commit: Confirmation of git commit and push success with commit SHA, or for the API path the reqId, final request status and CommitReference
  • Update: Confirmation of updated fields (old value → new value for subject/description, or status change)
  • Create-review: Pull request URL, PR number, and status

Outputs are derived from sf devops work-item CLI, sf devops review create CLI, and standard git commands.


Verification Checklist

Before reporting results to the user:

Universal Checks

  • Was org authentication verified with sf org display --json?
  • Was the CLI command executed with --json flag?
  • Did the CLI return a successful exit code (0)?
  • Is the JSON output parseable and non-empty?
  • If multi-org scenario, was --target-org specified on all commands?

List Operation Checks

  • Was --project-id provided?
  • Are work items displayed with work item name, subject, branch, environment?
  • If the list is empty, was this communicated to the user?

Create Operation Checks

  • Was a work item name (WI-######) and ID returned in the JSON output?
  • Was the branch name returned in the JSON output?
  • Was --subject provided and included in the command?
  • Was --project-id provided (or obtained via project list)?

Commit Operation Checks

  • API path: preflight passed, POST status checked, DevopsRequestInfo polled to SUCCESS, new WorkItemComponentList with CommitReference seen on the hub?
  • Git path: was the work item In Progress, and the branch name retrieved?
  • Git path: did git add, git commit and git push all exit 0?

Update Operation Checks

  • Was work item identifier provided (name or ID)?
  • Was at least one update field provided (subject, description, or status)?
  • If status was updated, was it a valid value ("In Progress" or "Ready to Promote")?
  • Was the updated work item returned in JSON?

Create-Review Operation Checks

  • Was work item identifier provided (name or ID)?
  • Was a PR URL returned in JSON output?
  • Was the PR creation confirmed?

Reference File Index

FileWhen to read
references/commit-api.mdWhen committing through the DevOps Center API: request body, response and error codes, polling, preflight
references/cli-commands.mdWhen you need detailed CLI flag documentation, JSON output schemas, or error handling patterns
examples/common-workflows.mdWhen the user's request matches a common pattern (bulk updates, reassignment, idempotent creation, sequential transitions)

FAQ

What does the dx-devops-work-item-manage skill do?

Use this skill to manage the full lifecycle of DevOps Center work items — list, create, update, commit changes, perform status transitions, and create pull requests. Update fields like subject, description, and status. Commit changes to work item branches, through the DevOps Center commit API or git. Create pull requests for work item branches via DevOps Center API. Invoke when the user wants to track, find, create, or update a work item, commit changes to a work item branch, advance a work item's status through the pipeline, or create a pull request for code review. Consolidates sf devops work-item and review operations. DO NOT TRIGGER for promotion or deployment operations, or conflict detection.

How do I install dx-devops-work-item-manage?

Run npx skills add https://github.com/forcedotcom/sf-skills --skill dx-devops-work-item-manage in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/dx-devops-work-item-manage/ (personal) or .claude/skills/dx-devops-work-item-manage/ (project).

Which AI agents can use dx-devops-work-item-manage?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is dx-devops-work-item-manage safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains dx-devops-work-item-manage?

It is published by forcedotcom in forcedotcom/sf-skills. It has 3,048 recorded installs.

More from forcedotcom/sf-skills

View all →

platform-apex-generate

forcedotcom/sf-skills

Primary Apex authoring skill for class generation, refactoring, and review. ALWAYS ACTIVATE when the user mentions Apex, .cls, triggers, or asks to create/refactor a class (service, selector, domain, batch, queueable, schedulable, invocable, DTO, utility, interface, abstract, exception, REST resource). Use this skill for requests involving SObject CRUD, mapping collections, fetching related records, scheduled jobs, batch jobs, trigger design, @AuraEnabled controllers, @RestResource endpoints, custom REST APIs, or code review of existing Apex.

platform-apex-test-generate

forcedotcom/sf-skills

Use to generate and validate Apex test classes with TestDataFactory patterns, bulk testing (251+ records), mocking, assertions, and disciplined test-fix loops. Use when creating Apex test classes (for triggers, services, controllers, batch jobs, queueables, and callouts), improving coverage, debugging or fixing failing Apex tests, or running test/coverage analysis. Triggers on Test.cls files, sf apex run test, coverage reports. Do NOT trigger for production Apex (use platform-apex-generate) or Jest/LWC tests.

Testing & QA7.1K installs

platform-apex-test-run

forcedotcom/sf-skills

Apex test execution, coverage analysis, and test-fix loops with 120-point scoring. Use when the user runs Apex tests, checks code coverage, fixes failing tests, or touches Test.cls / Test.cls files. DO NOT TRIGGER when writing Apex production code (use platform-apex-generate), Agentforce agent testing (use agentforce-test), or Jest/LWC tests (use experience-lwc-generate).

Testing & QA7K installs

platform-apex-logs-debug

forcedotcom/sf-skills

Salesforce debug log analysis and troubleshooting with 100-point scoring. TRIGGER when: user analyzes debug logs, hits governor limits, reads stack traces, or touches .log files from Salesforce orgs. DO NOT TRIGGER when: running Apex tests (use platform-apex-test-run), generating or fixing Apex code (use platform-apex-generate), or Agentforce session tracing (use agentforce-observe).

platform-soql-query

forcedotcom/sf-skills

Use when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan/selectivity analysis, and performance or safety improvements. TRIGGER when the user writes, optimizes, or debugs SOQL/SOSL, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER for bulk data operations (use platform-data-manage), Apex DML logic (use platform-apex-generate), or report/dashboard queries.

platform-metadata-deploy

forcedotcom/sf-skills

Salesforce DevOps automation using sf CLI v2. TRIGGER when: user deploys metadata, validates a deploy or does a dry-run, deploys to a Production org, quick-deploys a validated job ID, ships/promotes to prod, creates/manages scratch orgs or sandboxes, sets up CI/CD pipelines, or troubleshoots deployment errors with sf project deploy. DO NOT TRIGGER when: writing Apex code, building LWC components (use experience-lwc-generate), creating metadata definitions (use platform-custom-object-generate), deleting metadata from an org (use platform-destructive-deploy), or querying org data (use platform-data-manage).

DevOps & Cloud6.8K installs

Popular devops & cloud skills

View category →

microsoft-foundry

microsoft/azure-skills

Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, azd provision/deploy, hosted agent scaffold/develop/run/deploy/troubleshoot, prompt agent create, managed harness agent create, GitHub Copilot harness agent, create agent, update agent, add tool to agent, invoke agent, agent insights, evaluate agent, batch eval, continuous eval, continuous monitoring, agent CI/CD, optimize prompt, improve prompt, optimize agent instructions, Agent Optimizer scaffold, dataset curation from traces, deploy model, model fine-tuning (SFT/DPO/RFT), Foundry project, RBAC, role assignment, permissions, quota, capacity, region, deployment failure, AI Services, create Foundry resource, knowledge index, customize deployment, onboard, availability, training-data, grader, distillation, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure

OfficialDevOps & Cloud579.1K installs

azure-diagnostics

microsoft/azure-skills

Debug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, container app 503 or target port mismatch, troubleshoot functions, function telemetry missing or stopped after a config/connection-string change, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, analyze logs, KQL, insights, image pull failures, cold start issues, health probe failures, resource health, root cause of errors, troubleshoot event hubs, troubleshoot service bus, messaging SDK error, AMQP connection failure, message lock lost, lock renewal during long-running processing, service bus dead letter.

OfficialDevOps & Cloud569.8K installs

azure-prepare

microsoft/azure-skills

Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azd infrastructure, modernize app for Azure with azd, deploy with azd, function app, timer trigger, service bus trigger, event-driven function, managed identity, generate Bicep, generate Terraform, create and deploy to Azure.

OfficialDevOps & Cloud569K installs

azure-ai

microsoft/azure-skills

Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.

OfficialDevOps & Cloud568.8K installs

azure-deploy

microsoft/azure-skills

Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: "run azd up", "run azd deploy", "execute deployment", "push to production", "push to cloud", "go live", "ship it", "bicep deploy", "terraform apply", "publish to Azure", "launch on Azure". DO NOT USE WHEN: "create and deploy", "build and deploy", "create a new app", "set up infrastructure", "create and deploy to Azure using Terraform" — use azure-prepare for these.

OfficialDevOps & Cloud568.6K installs

azure-validate

microsoft/azure-skills

Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight checks, verify configuration, check if ready to deploy, validate azure.yaml, validate Bicep, test before deploying, troubleshoot deployment errors, validate Azure Functions, validate function app, validate serverless deployment, verify RBAC roles, check role assignments, review managed identity permissions, what-if analysis, validate Container Apps deployment.

OfficialDevOps & Cloud568K installs