Skip to content
Back to skills

Engagement Intake And Planning

ASecurity

Ingest authorized engagement scope, validate targets and windows, enforce boundaries, and compile reviewable immutable action plans.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 15, 2026
securitypythongobashapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 15, 2026

npx -y skills add sodejm/copilot-operation-plugin-for-security --skill engagement-intake-and-planning --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Engagement Intake And Planning?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Engagement Intake And Planning
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sodejm-engagement-intake-and-planning/badge)](https://www.skillsdirectory.com/skills/sodejm-engagement-intake-and-planning)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: engagement-intake-and-planning
description: Ingest authorized engagement scope, validate targets and windows, enforce boundaries, and compile reviewable immutable action plans.
---

# Engagement intake and planning

Guide the intake, scope validation, execution mode classification, and action plan compilation for cybersecurity engagements:

- **Engagement Intake**: Enforces explicit operator ownership, unambiguous targets, non-colliding exclusions, authorized assessment windows, allowed effects, execution budgets, and credential references.
- **Execution Mode Distinction**: Strictly separates `planning` (offline modeling), `import` (static log/artifact parsing), `laboratory` (isolated simulation), and `live` (active execution).
- **Live Safety Gate**: Refuses incomplete live requests when budget, emergency contact, active window, or narrow subnet boundaries are absent.
- **Immutable Action Planning**: Produces cryptographically bound `ActionPlan` (`cops.action-plan/v1`) contracts detailing platform prerequisites, expected evidence, side effects, and cleanup obligations.

## CLI Usage

### 1. Create and Validate an Engagement Intake

```bash
python3 -m cops engagement create \
  --name "Internal Network Review" \
  --owner "secops-lead" \
  --targets "10.0.0.10,app.internal" \
  --exclusions "10.0.0.1,prod-db.internal" \
  --start "2026-10-05T00:00:00Z" \
  --until "2026-10-05T23:59:59Z" \
  --allowed-effects "read_only_discovery,banner_grab" \
  --budget-duration 1800 \
  --budget-output-bytes 5242880 \
  --mode planning \
  --output engagement.json
```

### 2. Validate an Existing Engagement File

```bash
python3 -m cops engagement validate engagement.json
python3 -m cops engagement validate engagement.json --json
```

### 3. Compile an Immutable Action Plan

```bash
python3 -m cops engagement plan \
  --engagement engagement.json \
  --scenario COPS-E03.01-S01 \
  --target 10.0.0.10 \
  --specialist cops-pentest-specialist \
  --output action_plan.json
```

### 4. Inspect Engagement Summary

```bash
python3 -m cops engagement info engagement.json
```

## Python API

```python
from cops.engagement import (
    create_engagement_contract,
    validate_engagement_intake,
    build_action_plan,
)

# 1. Create and validate intake
eng = create_engagement_contract(
    name="Vulnerability Assessment",
    operator="analyst-01",
    included_targets=["10.0.0.10"],
    started_at="2026-10-05T00:00:00Z",
    authorized_until_utc="2026-10-05T12:00:00Z",
    mode="planning",
)

# 2. Compile reviewable ActionPlan
plan = build_action_plan(
    engagement=eng,
    scenario="COPS-E03.01-S01",
    target="10.0.0.10",
    specialist_id="cops-pentest-specialist",
)

print(f"Action plan generated: {plan.plan_id} (digest: {plan.plan_digest})")
print(f"Platform prerequisites: {plan.platform_prerequisites}")
print(f"Operations: {len(plan.operations)}")
```

## Error Codes and Guards

- `MissingOwnerError`: Operator/owner field was omitted or empty.
- `ScopeAmbiguityError`: Targets contain wildcards (`*`), overlapping exclusions, universal ranges, or empty/malformed values.
- `IncompatibleWindowError`: End time precedes start time or timestamps are invalid.
- `IncompleteBudgetError`: Budget duration or output bytes are not positive integers.
- `IncompleteLiveRequestError`: Live mode requested without mandatory budget, emergency contact, or safe mode constraints.

Files in this skill

  • SKILL.md3.3 KB
  • tests/test_skill.py1.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.