Install
openclaw skills install devplaza-sdlc-process-guardian-relUse 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.
openclaw skills install devplaza-sdlc-process-guardian-relThis skill is intentionally simple.
It translates user intent into safe, minimal DevPlaza API workflows for:
In scope:
tenant-mgmt and product-mgmt endpoints used by the V1 actionsOut of scope for direct execution:
If an operation appears admin-only, state that clearly and provide the safest next step.
getTenantOperationalStatus to check. If the tenant is inactive or subscription is invalid, surface that clearly and stop — do not proceed with the requested operation..env first; use .env.example as fallback for key names/default placeholders..env already contains BASE_URL and auth (JWT or AUTH_EMAIL + AUTH_PASSWORD), do not ask for them again.GET /api/v1/tenant/governance as configuration/listing only (Company Admin governance setup visibility)./api/v1/product/task-tools (and related task-tool reads).status only. Exact values: "Passed" = met | "Failed" = not met. Anything else = unknown — never infer a pass from an unrecognised value.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.Developers use natural language to trigger runs. Map intent to scope strictly — never expand scope beyond what was asked.
| User says | Scope | What to do |
|---|---|---|
"build" | Build stage only | Trigger the build-stage tool. Stop. Do not proceed to test or deploy. |
"test" | Test stage only | Verify build passed first, then trigger the test-stage tool. Stop. |
"deploy" | Full lifecycle | Verify build passed → verify test/governance passed → trigger deploy-stage tool. |
"build and deploy" | Full lifecycle | Same 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.
For most requests, follow this sequence:
Apply exactly one fallback retry rule:
404 and a known alias path exists, retry once with alias path.Known alias paths (tenant service):
| Contract path | Alias path |
|---|---|
GET /api/v1/tenant/customer/:tenantId | GET /api/v1/tenant/customer/tenantId/:tenantId |
GET /api/v1/tenant/customer/domain/:domain | GET /api/v1/tenant/customer/tenantDomain/:tenantDomain |
DELETE /api/v1/tenant/customer/:tenantId | DELETE /api/v1/tenant/customer/customer/:tenantId |
GET /api/v1/tenant/customer/:tenantId/status | GET /api/v1/tenant/customer/tenantStatus/:tenantId |
GET /api/v1/tenant/customer/pending/approvals | GET /api/v1/tenant/customer/approvals/pending |
POST /api/v1/tenant/customer/:tenantId/approve | POST /api/v1/tenant/customer/approvals/:tenantId/approve |
POST /api/v1/tenant/customer/:tenantId/reject | POST /api/v1/tenant/customer/approvals/:tenantId/reject |
Prefer this structure when useful:
Current stateBlocking issues (or None)Next safe actionNext safe action must be user-facing and actionable; do not reference test-step numbers or "Prompt N".For triggers/runs, always include:
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 configured409/422: validation/conflict; list exact missing/invalid fields5xx/timeout: transient platform issue; suggest retryDo not classify valid "governance not met" outcomes as 5xx errors.
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.
POST /api/v1/product/teamAdmin-approval/tenant/:tenantId
{ "productIds": ["<productId>"] } — pass the specific product id(s) to scope the resultsGET /api/v1/product/teamAdmin-approval/:idPUT /api/v1/product/teamAdmin-approval/:id"Product <name> (id: <id>) is pending Company Admin approval. Use 'check approval status' at any time to see if it has been approved."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."name + id before soft/permanent delete.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.