Use when working with Chaos Engineering steps inside a Harness pipeline. Covers ChaosFault, ChaosProbe, ChaosAction steps (DRTest stages), the Chaos step (DRTest stages), and DRTest stage/pipeline structure. Use when the user asks to add, modify, or create chaos steps, fault injection, probes, or disaster recovery test pipelines. Do not use for standalone Chaos Experiment create or edit; use chaos-experiment for those. Trigger phrases: DR test, DRTest pipeline, disaster recovery test, chaos step, ChaosFault step, ChaosProbe step, ChaosAction step.
69
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Create and edit Harness DR Test pipelines — pipelines with a DRTest stage
containing ChaosFault, ChaosProbe, ChaosAction, and Chaos steps — via MCP.
MANDATORY — Tool Result Verification:
Follow references/scope-establishment.md for establishing org/project scope before calling harness_list, harness_get, harness_create, harness_update, or harness_execute in this skill:
org / project from the user's message or a pasted Harness UI URL first.Output style — always emit block-style YAML for pipeline manifests (each key on its own line, list items on their own line with -, children indented). The YAML examples shown in references/components.md (Series + Parallel Steps, Full DRTest Pipeline, Chaos step) appear as minified JSON purely for token efficiency — JSON parses identically to YAML, so the examples remain authoritative for field names and structure, but the pipeline YAML you produce MUST be block-style matching the canonical scaffold below. Never put JSON in the request body for harness_create or harness_update pipeline YAML.
Two ways to verify a pipeline is a DR Test:
module: drtest in their top-level tags. Additionally, stages within the pipeline have type: DRTest.harness_list(resource_type="chaos_dr_test", org_id="<org_id>", project_id="<project_id>") to get all DR Test pipelines in the project. If the pipeline appears in this list, it is a DR Test. Pass org_id/project_id using the active scope (see Scope Rules above).Chaos-related steps (ChaosFault, ChaosProbe, ChaosAction, Chaos) can ONLY be added to a stage with type: DRTest. They are not valid in any other stage type.
When a user creates a DR Test via harness_create(resource_type="chaos_dr_test", org_id="<org_id>", project_id="<project_id>", body={"name": "...", "identifier": "..."}), the pipeline is generated with steps: []. The create response returns metadata only — fetch the full YAML with harness_get(resource_type="pipeline", resource_id="<identifier>_pipeline", org_id="<org_id>", project_id="<project_id>") (pass org_id/project_id using the active scope on both calls):
pipeline:
description: "" # optional, user can update later
identifier: test_new_dr_test_pipeline # auto: <identifier>_pipeline, does NOT change
name: test new dr test pipeline # auto: <name> Pipeline, user can update
orgIdentifier: default # from account context, does NOT change
projectIdentifier: ChaosDev1 # from account context, does NOT change
stages:
- stage:
description: Optional Description # optional, user can set at create or update later
identifier: test_new_dr_test # auto-derived from name, does NOT change
name: test new dr test # user-provided name, user can update
objective: Optional Objective # optional, user can set at create or update later
spec:
execution:
steps: [] # EMPTY — agent must populate with chaos steps
tags:
someTag: value # optional, user can add at create or update later
type: DRTest # fixed, set at stage creation — do NOT remove
tags:
module: drtest # fixed, auto-set by MCP — do NOT removeNote: The example above shows the minimal structure. A real pipeline may contain additional fields (e.g., allowStageExecutions, notificationRules, flowControl, timeout, etc.) — preserve any extra fields present in the fetched YAML as-is. Do not remove or overwrite them.
The stage-level environment block is NOT used by DRTest pipelines. It may appear in fetched YAML but is ignored by the backend:
environment:
environmentRef: demo
deployToAll: false
infrastructureDefinitions:
- identifier: qaauto1Do not ask the user to provide stage-level environment or infrastructure — each chaos step has its own infraReference field instead (see references/components.md Step 1). If this block already exists in fetched YAML, preserve it as-is — do not remove it.
The agent's job is to populate steps: [] with chaos steps (ChaosFault, ChaosProbe, ChaosAction, Chaos) using the workflow described in references/components.md. Only these chaos step types are valid inside a DRTest stage.
Naming convention: if user creates a DR Test with name test new dr test (identifier auto-derived as test_new_dr_test):
test_new_dr_test_pipeline (auto: <identifier>_pipeline)test new dr test pipeline (auto: <name> Pipeline)test_new_dr_test (auto-derived from name)test new dr test (= the name provided by the user)Optional stage fields: description, objective, tags, runMode, variables, delegateSelectors, failureStrategies, when, timeout.
Parse the user's ORIGINAL message (the one that triggered this skill) to determine their intent. Do NOT ask them "create or edit?" again — their original message already tells you.
Intent signals:
| Intent | Keywords in the user's original message |
|---|---|
| Create | create, build, set up, set-up, new, make, add (a new DR Test / new step), launch |
| Edit | edit, update, modify, change, fix, adjust, rename, tweak, remove, delete, add to an existing |
| Ambiguous | "DR Test" or "chaos step" alone with no verb |
Routing:
references/create.md — creates a brand-new DR Test pipeline, then proceeds to the Choose Action hub.references/edit.md — looks up an existing pipeline by name/identifier, confirms, then proceeds to the Choose Action hub.Would you like to create a new DR Test (or add new chaos steps) or edit an existing DR Test pipeline?
Once the path is determined, do NOT ask again.
Step-building mechanics (naming, environment/infra selection, fault/probe/action/experiment selection, runtime variables, saving) live in references/components.md and are shared by both the create and edit flows.
For standalone Chaos Experiment YAML (not a pipeline step), stop and use chaos-experiment instead.
references/create.mdtest_new_dr_test DR Test" -> route to references/edit.mdreferences/edit.mdDRTest Stage and Steps)ChaosProbe / ChaosFault / ChaosAction step, even when adding steps in parallel — never reuse a prior step's infraReference.harness_list and use the returned values.harness_update) is a full-replace PUT — always fetch the current YAML first and apply only the requested changes, preserving every existing field.harness_get the current YAML immediately before modifying and re-sending it, per references/components.md Step 4.ChaosFault / ChaosProbe / ChaosAction / Chaos steps are only valid inside a stage with type: DRTest; verify the target stage type before adding steps.name and identifier must be unique within the stage; check existing steps before naming a new one.23e9b8b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.