Install
$ agentstack add skill-knoxops-open-devops-skills-isolation-executor ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Input Parameters
| Name | Type | Required | Description | |------|------|----------|-------------| | rundir | string | Yes | Workspace root directory for file passing between agents | | sshkeypath | string | No | SSH key path for cloud provider access | | batchplan | string | Yes | Path to analysis/isolationbatchplan.json (batch order, dependencies) | | isolationplans | string | Yes | Path to analysis/isolationplan{resourceid}.json files (glob pattern) | | environment | string | Yes | Environment tier for observation period matrix lookup |
Execution Flow
Task Context
Before starting execution, initialize task_context.json:
{
"task_id": "",
"current_step": 0,
"current_step_id": null,
"status": "running",
"steps": {
"phase_a_pre_isolation_setup": "pending",
"phase_a_batch_isolation": "pending",
"phase_b_observation_monitoring": "pending",
"phase_c_anomaly_attribution": "pending",
"phase_d_generate_observation_report": "pending",
"phase_e_observation_batch_summary": "pending"
},
"updated_at": ""
}
Update this file after each step completes. On error, set step status to "failed" and overall status to "failed".
Step 1: phaseapreisolationsetup
Type: inline Description: Initialize observation directories and load isolation plans
Execution
Follow these instructions:
Initialize Phase 4 execution environment:
- Create directory structure:
- {run_dir}/observe/ - for observation reports
- {run_dir}/observe/snapshots/ - for pre-isolation state snapshots
- {run_dir}/observe/logs/ - for execution logs
- Load and validate inputs:
- Read {rundir}/analysis/isolationbatch_plan.json
- Load all {rundir}/analysis/isolationplan{resourceid}.json files
- Validate schema conformance
- Determine observation period matrix:
- Read environment: {{ environment }}
- For each resource, determine observationperioddays:
- dev/test: 3 days (extend to 90 if quarterly task detected)
- staging: 7 days (extend to 35 if monthly task detected)
- production: 30 days (extend to 365 if annual task detected)
- Calculate observationend = isolationexecutedat + observationperiod_days
- Write {rundir}/observe/executionplan.json with:
- batch_count: number of batches
- total_resources: count of all resources
- observationperiods: {resourceid: {start, end, days}}
- executionstartedat: ISO8601 timestamp
This file is required for subsequent steps.
Progress Tracking
After completing this step, update task_context.json:
- Set
current_step_idto"phase_a_pre_isolation_setup" - Set
steps.phase_a_pre_isolation_setupto"completed"
Step 2: phaseabatch_isolation
Type: agent Description: Execute isolation for ALL batches sequentially
Input Files
observe/execution_plan.json(from Step phaseapreisolationsetup, schema: schemas/execution-plan.schema.json)analysis/isolation_plan_{resource_id}.json
Execution
Launch an independent agent with the following prompt file:
Dispatch instruction:
IMPORTANT: The batch plan (isolationbatchplan.json) can contain N batches. You MUST iterate over ALL batches 1..N sequentially.
- Read batchcount from {rundir}/analysis/isolationbatchplan.json
or {rundir}/observe/executionplan.json.
- For batchnum in 1..batchcount (SEQUENTIAL, one batch at a time):
a. Identify all resources in batch batchnum from isolationbatchplan.json. b. Execute isolation for ALL resources in this batch (can run in PARALLEL within the batch, but must complete before starting next batch). c. Follow the per-resource isolation procedure below for each resource. d. Wait for every resource in this batch to finish (success or failure) before advancing to batchnum + 1.
- After ALL batches complete, collect all isolationexecuted{resource_id}.json
files and proceed to phasebobservation_monitoring.
Per-resource isolation procedure:
For each resource:
- Pre-isolation snapshot:
- Capture current state (VM: iptables rules, RDS: SG rules, Redis: config, K8s: replicas, etc.)
- Save to {rundir}/observe/snapshots/{resourceid}preisolation.json
- Include: timestamp, resourcetype, isolationmethod, current_state
- Execute isolation steps:
- Read isolationplan{resource_id}.json
- Execute each isolation_step in sequence
- For each step: SSH exec / cloud API call / kubectl command (per resource type)
- Log each step: command, exit_code, stdout, stderr, timestamp
- Verify isolation took effect:
- Re-check state to confirm isolation is active
- For iptables: verify rule exists in
iptables -L -n - For RDS SG: verify inbound rules count = 0
- For Redis: verify old password fails, new password works
- For K8s: verify replicas = 0 or selector matches no pods
- If verification fails: attempt immediate rollback, mark resource as failed
- Record isolation execution:
- Write {rundir}/observe/isolationexecuted{resourceid}.json with status and verification
Error handling:
- If isolation step fails: log error, attempt rollback, mark as isolation_failed
- If verification fails: attempt rollback, mark as failed
- If rollback fails: P0 escalation, notify user, do NOT proceed to observation
- Partial batch failure: successfully isolated resources proceed to observation
- If an entire batch fails: do NOT skip remaining batches; continue to next batch
- Batch timeout: if a batch takes > 30min, log warning but continue to next batch
Proceed to observation only if isolationexecuted{resourceid}.json has status = "isolated" and verificationpassed = true.
Agent workflow:
- Read input data from:
- Schema:
schemas/execution-plan.schema.json - Schema:
schemas/isolation-plan.schema.json
- Execute the agent with the prompt
- Write results to:
- File:
observe/isolation_executed_{resource_id}.json
Output
- Schema: schemas/isolation-execution-result.schema.json
- File: observe/isolationexecuted{resource_id}.json
Progress Tracking
After completing this step, update task_context.json:
- Set
current_step_idto"phase_a_batch_isolation" - Set
steps.phase_a_batch_isolationto"completed"
Step 3: phasebobservation_monitoring
Type: agent Description: Monitor observation period, collect signals, detect anomalies, trigger rollback
Input Files
observe/isolation_executed_{resource_id}.json(from Step phaseabatch_isolation, schema: schemas/isolation-execution-result.schema.json)analysis/isolation_plan_{resource_id}.json
Execution
Launch an independent agent with the following prompt file:
Dispatch instruction:
For each resource that successfully completed isolation (status = "isolated"), run observation monitoring in parallel.
Observation period: from isolationexecutedat to observation_end (per resource)
For each resource, run observation loop:
- Initialize observation state:
- observation_id: obs-{uuid}
- observationstart: isolationexecuted_at
- observationend: isolationexecutedat + observationperiod_days
- signals: [] (list of collected signals)
- rollback_triggered: false
- Monitoring loop (poll every 5 minutes until observation_end):
a. Collect metrics (5min window): Error rate, latency, CPU, memory, disk usage b. Fetch alerts: Query alert system for alerts touching blastradius.affectedservices c. Fetch complaints (poll q1h): Check IM channels and email/tickets d. Check auto-rollback triggers from isolationplan.autorollback_triggers
- If P0/P1: trigger rollback immediately
- If P2: pause observation, mark uncertain
- P0/P1 Rollback execution (if triggered):
Retry strategy: max 3 attempts with exponential backoff (5s, 10s, 20s)
For each rollback attempt: a. Execute rollbackplan from isolationplan{resourceid}.json b. Verify rollback took effect c. Health check: wait for affected_services to recover (timeout 300s) d. If verification AND health pass: stop rollback, mark as completed e. If attempt 1440 min: score = 0.0 (negligible)
- Topological Association:
- In blastradius.affectedservices: score = 1.0
- Within 2 hops: score = 0.6
- No match: score = 0.0
- Directional Association:
- Isolated is upstream, anomaly in downstream: score = 1.0
- Isolated is downstream, anomaly in upstream: score = 0.0
- Peer: score = 0.5
Attribution decision:
- >= 2 dimensions scored > 0: CONFIRMED, high confidence
- 1 dimension scored > 0: UNCERTAIN, low confidence
- 0 dimensions scored > 0: DISMISS, no confidence
Write {rundir}/observe/attribution{resource_id}.json
Write the output to the specified output file.
Output
- Schema: schemas/attribution-result.schema.json
- File: observe/attribution{resourceid}.json
Progress Tracking
After completing this step, update task_context.json:
- Set
current_step_idto"phase_c_anomaly_attribution" - Set
steps.phase_c_anomaly_attributionto"completed"
Step 5: phasedgenerateobservationreport
Type: inline Description: Generate final observation report per resource
Input Files
observe/isolation_executed_{resource_id}.jsonobserve/observation_monitoring_{resource_id}.jsonobserve/attribution_{resource_id}.json
Execution
Follow these instructions:
For each resource, generate final observation report.
Read:
- {rundir}/observe/isolationexecuted{resourceid}.json
- {rundir}/observe/observationmonitoring{resourceid}.json
- {rundir}/observe/attribution{resource_id}.json (if exists)
- {rundir}/analysis/isolationplan{resourceid}.json
Determine observation_result:
- rollback completed: result = "failed"
- rollback failed: result = "failedrollbackincomplete"
- observation incomplete or has P2 anomaly: result = "uncertain"
- otherwise: result = "passed"
Summarize metrics: alertcount, complaintcount, anomalydates, maxerror_rate.
Write {rundir}/observe/observation{resource_id}.json per schema.
Write the output to the specified output file.
Output
- Schema: schemas/observation-report.schema.json
- File: observe/observation{resourceid}.json
Progress Tracking
After completing this step, update task_context.json:
- Set
current_step_idto"phase_d_generate_observation_report" - Set
steps.phase_d_generate_observation_reportto"completed"
Step 6: phaseeobservationbatchsummary
Type: inline Description: Aggregate all observation reports into batch summary
Input Files
observe/observation_{resource_id}.json(from Step phasedgenerateobservationreport, schema: schemas/observation-report.schema.json)
Execution
Follow these instructions:
Aggregate all observation{resourceid}.json files into summary.
Read all {rundir}/observe/observation{resource_id}.json files.
Calculate aggregate metrics:
- total_resources, passed, failed, uncertain counts
- rollback_triggered count
- totalalerts, totalcomplaints
Write {rundir}/observe/observationbatch_summary.json per schema. This summary is required for the decision phase.
Write the output to the specified output file.
Output
- Schema: schemas/observation-batch-summary.schema.json
- File: observe/observationbatchsummary.json
Progress Tracking
After completing this step, update task_context.json:
- Set
current_step_idto"phase_e_observation_batch_summary" - Set
steps.phase_e_observation_batch_summaryto"completed"
Error Handling
Isolation execution fails for a resource
Log error, skip observation for that resource, mark as isolation_failed. Continue with remaining resources in batch.
Isolation verification fails
Attempt immediate rollback. If rollback succeeds, mark as failed. If rollback fails, P0 escalation, notify user, do NOT proceed.
Observation monitoring encounters metric backend unavailable
Graceful degradation: rely on alert/complaint channels. If critical data missing, mark observation as uncertain.
P0 anomaly detected during observation
Execute rollback immediately (no attribution needed). Mark observation_result = failed.
P1 anomaly detected during observation
Perform 3D attribution. If CONFIRMED, execute rollback. If UNCERTAIN, pause observation, notify user.
P2 anomaly detected during observation
Pause observation clock. Mark observation_result = uncertain. Notify user for manual judgment.
Rollback execution fails (after max 3 retries with backoff)
P0 Escalation protocol:
- Mark resource: rollbackstatus = "rollbackfailed"
- Generate incident report with all attempts, timestamps, errors
- Immediate notifications to on-call engineer
- Batch pause: STOP all observation loops for remaining resources
- Save batch state, wait for manual intervention
Observation period expires without anomalies
Mark observation_result = passed. Proceed to deletion phase.
User interrupts observation period
Save current observation state. Can resume from checkpoint. Do not mark as complete until full period elapsed.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: KnoxOps
- Source: KnoxOps/open-devops-skills
- License: Apache-2.0
- Homepage: https://knoxops.app?invite_token=GITHUB26
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.