DevPlaza SDLC Process Guardian

Use this skill for DevPlaza V1 user-token workflows covering tenant/product discovery, readiness checks, governance checks, integration validation, run trigger/status, blocker explanation, and release readiness without skipping required controls.

Audits

Pending

Install

openclaw skills install devplaza-sdlc-process-guardian-rel

DevPlaza Process Guardian (V1)

This skill is intentionally simple.

It translates user intent into safe, minimal DevPlaza API workflows for:

  • tenant + product discovery
  • setup/readiness checks
  • governance validation
  • run trigger + status
  • blocker explanation
  • release readiness summary

V1 scope

In scope:

  • tenant-mgmt and product-mgmt endpoints used by the V1 actions
  • user-token orchestration paths only

Out of scope for direct execution:

  • admin-only platform operations
  • new backend design
  • billing workflows

If an operation appears admin-only, state that clearly and provide the safest next step.

Operating principles

  • Keep call flows linear and deterministic.
  • Prefer read-first behavior unless user explicitly asks for a write/trigger operation.
  • Do not skip governance/readiness checks for run triggers.
  • Require explicit confirmation before production-impacting actions.
  • Never print secrets/tokens/keys in outputs.
  • Before any workflow operation, verify the tenant is active with a valid subscription. Use getTenantOperationalStatus to check. If the tenant is inactive or subscription is invalid, surface that clearly and stop — do not proceed with the requested operation.

Session config resolution

  • At session start, resolve runtime config from local workspace files before asking the user.
  • Read .env first; use .env.example as fallback for key names/default placeholders.
  • Only ask the user for keys still missing after local file resolution.
  • If .env already contains BASE_URL and auth (JWT or AUTH_EMAIL + AUTH_PASSWORD), do not ask for them again.

Governance runtime contract

  • Treat GET /api/v1/tenant/governance as configuration/listing only (Company Admin governance setup visibility).
  • For runtime stage-level governance decisioning, use Product Management task-tool data from /api/v1/product/task-tools (and related task-tool reads).
  • If governance is not met, handle it as a business-state outcome, not a platform/server error.
  • Governance status field: status only. Exact values: "Passed" = met | "Failed" = not met. Anything else = unknown — never infer a pass from an unrecognised value.
  • SonarQube tools use a separate evaluation path: call POST /api/v1/product/sonarqube/last/status with { componentId, link, apiToken } from task-tool config. Evaluate qualityGates[].status — all "Passed" = met; any "Failed" = not met; 5xx or missing config = unknown.

Run trigger intent mapping

Developers use natural language to trigger runs. Map intent to scope strictly — never expand scope beyond what was asked.

User saysScopeWhat to do
"build"Build stage onlyTrigger the build-stage tool. Stop. Do not proceed to test or deploy.
"test"Test stage onlyVerify build passed first, then trigger the test-stage tool. Stop.
"deploy"Full lifecycleVerify build passed → verify test/governance passed → trigger deploy-stage tool.
"build and deploy"Full lifecycleSame as "deploy" — treat as full sequence, not two separate triggers.

To identify which tool handles which stage: read the task-tool mapping first (GET /api/v1/product/task-tools/...). Each task-tool record is bound to a stage (build/test/deploy) — use that mapping to resolve which provider to call.

Key rule: "build" alone must never silently trigger the full lifecycle. If the user's intent is ambiguous, ask one clarifying question before triggering anything.

Standard flow

For most requests, follow this sequence:

  1. Identify tenant + product context
  2. Check mapping/readiness/governance as needed
  3. Execute the smallest requested operation
  4. Return concise status + next safe action

Call minimization

  • For stage/task/tool mapping: call the task-tools endpoint first. Only call categories/tasks/tools if the response lacks readable names and label enrichment is needed for the output. Do not make all 4 calls by default.
  • Never re-read workspace files (SKILL.md, endpoint_alias_map.md, spec files) mid-session. All required context is loaded at bootstrap.

Endpoint alias fallback (tenant mismatches)

Apply exactly one fallback retry rule:

  • Try contract path first.
  • If 404 and a known alias path exists, retry once with alias path.
  • No multi-hop retries.

Known alias paths (tenant service):

Contract pathAlias path
GET /api/v1/tenant/customer/:tenantIdGET /api/v1/tenant/customer/tenantId/:tenantId
GET /api/v1/tenant/customer/domain/:domainGET /api/v1/tenant/customer/tenantDomain/:tenantDomain
DELETE /api/v1/tenant/customer/:tenantIdDELETE /api/v1/tenant/customer/customer/:tenantId
GET /api/v1/tenant/customer/:tenantId/statusGET /api/v1/tenant/customer/tenantStatus/:tenantId
GET /api/v1/tenant/customer/pending/approvalsGET /api/v1/tenant/customer/approvals/pending
POST /api/v1/tenant/customer/:tenantId/approvePOST /api/v1/tenant/customer/approvals/:tenantId/approve
POST /api/v1/tenant/customer/:tenantId/rejectPOST /api/v1/tenant/customer/approvals/:tenantId/reject

Output style (keep concise)

Prefer this structure when useful:

  • Current state
  • Blocking issues (or None)
  • Next safe action
  • Next safe action must be user-facing and actionable; do not reference test-step numbers or "Prompt N".

For triggers/runs, always include:

  • provider
  • run id (if available)
  • current status
  • top blocker signal when failed/blocked

Error policy

  • 401/403 from DevPlaza endpoints (tenant, product, project, task-tools): session or permission issue; ask user to refresh DevPlaza JWT or check role scope.
  • 401/403 from integration validation endpoints (GitHub, SonarQube, Testkube, Datadog, Slack, GitLab, Jira): the stored integration token in task-tool config is expired or invalid — do NOT suggest refreshing the DevPlaza JWT. Report as "integration token expired" and direct user to update credentials in tool configuration.
  • 404: not found; apply alias fallback once if configured
  • 409/422: validation/conflict; list exact missing/invalid fields
  • 5xx/timeout: transient platform issue; suggest retry

Do not classify valid "governance not met" outcomes as 5xx errors.

Post-approval tracking

When a Team Admin creates a product and the response shows approvalStatus: false, isDeleted: true, the product is pending Company Admin approval. Track and surface the approval status on request.

Endpoints

  • List approvals for tenant: POST /api/v1/product/teamAdmin-approval/tenant/:tenantId
    • Body: { "productIds": ["<productId>"] } — pass the specific product id(s) to scope the results
  • Get one approval: GET /api/v1/product/teamAdmin-approval/:id
  • Update approval: PUT /api/v1/product/teamAdmin-approval/:id

Approval tracking flow

  1. After a product create returns pending state, surface: "Product <name> (id: <id>) is pending Company Admin approval. Use 'check approval status' at any time to see if it has been approved."
  2. When the user asks to check approval status for a product: a. Call POST /api/v1/product/teamAdmin-approval/tenant/:tenantId with { "productIds": ["<productId>"] }. b. Read the returned approval record(s). c. If approved: "Product <name> has been approved and is now active." d. If still pending: "Product <name> is still awaiting Company Admin approval. No action needed from you." e. If rejected: "Product <name> was rejected. Reason: <reason if available>. Contact your Company Admin for next steps."
  3. Do not poll automatically — only check when the user explicitly asks.

Guardrails

  • No secret leakage in prompts/responses.
  • No production shortcut recommendations that bypass required checks.
  • No hidden assumptions about unavailable APIs.
  • If data is insufficient, report what is missing and stop cleanly.
  • For delete intents, accept product name from user input, resolve to product id internally, and ask explicit confirmation with resolved name + id before soft/permanent delete.
  • If multiple products match a provided name, ask one short disambiguation question and do not delete until one target is selected.
  • When a Team Admin creates a product, the response will have approvalStatus: false, isDeleted: true. Do not report this as success. Report it as pending Company Admin approval, include the product id, and direct the user to check approval status.