用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/dandye/adk_runbooks --skill group-cases-v2命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | group-cases-v2 |
| description | Use when executing advanced multi-factor case grouping and relationship clustering. |
| category | investigation |
| version | 1.0.0 |
| type | Skill |
| title | Skill: Group Cases v2 |
| generated | {"by":"process:google-labs-jules","at":"2025-12-21T03:04:42.000Z"} |
To analyze a defined set of recent SOAR cases, identify logical groupings based on shared entities or alert types, prioritize these groups by potential impact or severity, and generate a summary report of the findings. This helps in understanding related security events and focusing investigative efforts.
This runbook covers:
This runbook explicitly excludes:
${NUMBER_OF_CASES}: Number of recent cases to analyze (e.g., 5, 10). Defaults to a predefined number (e.g., 10) if not specified.${TIME_FRAME_HOURS}: Lookback period in hours for selecting cases. If not provided, NUMBER_OF_CASES will be the primary filter.${GROUPING_CRITERIA}: Specific criteria for grouping cases (e.g., "shared_hostname", "alert_type", "CVE", "malware_family"). If not provided, grouping will be based on observed similarities in entities and alert details.${CASE_LIST}: List of SOAR case IDs selected for analysis.${CASE_DETAILS_MAP}: A map or structure holding details (alerts, entities) for each case in ${CASE_LIST}.${CASE_GROUPS}: Identified groups of related case IDs.${PRIORITIZED_GROUPS}: The ${CASE_GROUPS} ordered by assessed priority.${ENRICHMENT_DATA_SUMMARY}: (Optional) Summary of enrichment for key entities in high-priority groups.${REPORT_FILE_PATH}: The full path to the generated Markdown summary report.${REPORT_CONTENT}: The full Markdown content of the generated report.${GROUPING_ANALYSIS_SUMMARY}: A brief textual summary of how cases were grouped and prioritized.secops-soar: list_cases, get_case_full_details, list_alerts_by_case, get_entities_by_alert_group_identifierssecops-mcp: lookup_entitygti-mcp: Relevant enrichment tools (e.g., get_ip_address_report, get_domain_report)write_to_file (Replaces write_report)soar-mcp_list_cases, filtered by ${NUMBER_OF_CASES} or ${TIME_FRAME_HOURS}. Store in ${CASE_LIST}.${CASE_LIST}:
soar-mcp_get_case_full_details to get overall case information.soar-mcp_list_alerts_by_case to get associated alerts.soar-mcp_get_entities_by_alert_group_identifiers (if applicable, or parse entities from alerts/events) to extract key entities.${CASE_DETAILS_MAP}.${CASE_DETAILS_MAP}. Identify logical groups (${CASE_GROUPS}) based on ${GROUPING_CRITERIA} (if provided) or observed similarities (e.g., shared critical entities, common alert types, overlapping timeframes).${CASE_GROUPS} based on factors like combined alert severity, number of cases in the group, criticality of shared entities, or potential impact. Store as ${PRIORITIZED_GROUPS}.${PRIORITIZED_GROUPS}, identify key shared entities. Perform basic enrichment on these entities using secops-mcp_lookup_entity and relevant gti-mcp tools. Store in ${ENRICHMENT_DATA_SUMMARY}.${REPORT_CONTENT}) summarizing the ${PRIORITIZED_GROUPS}, the rationale for grouping and prioritization, and key findings (including ${ENRICHMENT_DATA_SUMMARY} if available). Use write_to_file to save the report to ${REPORT_FILE_PATH} (e.g., ./reports/case_grouping_report_${timestamp}.md).graph TD
START(["START"]) --> extract_group_v2_payload_node["1. extract_group_v2_payload_node<br/><i>(Extract Environment & Similarity Threshold Payload)</i>"]
extract_group_v2_payload_node --> compute_v2_case_clusters_node["2. compute_v2_case_clusters_node<br/><i>(Compute Entity & Alert Similarity Clusters)</i>"]
compute_v2_case_clusters_node --> group_cases_v2_router{"3. group_cases_v2_router<br/><i>(Event.actions.route)</i>"}
group_cases_v2_router -- "MERGE_HIGH_SIMILARITY_CASES" --> handle_merge_high_similarity_branch["4a. handle_merge_high_similarity_branch<br/><i>(Consolidate High Similarity Case Clusters)</i>"]
group_cases_v2_router -- "NO_MERGE_REQUIRED" --> handle_no_merge_required_branch["4b. handle_no_merge_required_branch<br/><i>(Document Case Groupings)</i>"]
handle_merge_high_similarity_branch --> document_group_v2_report_node["5. document_group_v2_report_node<br/><i>(SOAR Comment & Report Summary)</i>"]
handle_no_merge_required_branch --> document_group_v2_report_node
sequenceDiagram
participant Analyst/User
participant AutomatedAgent as Automated Agent (MCP Client)
participant SOAR as secops-soar
participant SIEM as secops-mcp
participant GTI as gti-mcp
Analyst/User->>AutomatedAgent: Start Group Cases v2 Workflow\nInput: NUMBER_OF_CASES (opt), TIME_FRAME_HOURS (opt), GROUPING_CRITERIA (opt)
%% Step 1: List Cases
AutomatedAgent->>SOAR: list_cases(limit=NUMBER_OF_CASES, time_frame_hours=TIME_FRAME_HOURS)
SOAR-->>AutomatedAgent: List of Cases (CASE_LIST: C1, C2...)
%% Step 2: Gather Details
Note over AutomatedAgent: Initialize CASE_DETAILS_MAP
loop For each Case Ci in CASE_LIST
AutomatedAgent->>SOAR: get_case_full_details(case_id=Ci)
SOAR-->>AutomatedAgent: Details for Ci
AutomatedAgent->>SOAR: list_alerts_by_case(case_id=Ci)
SOAR-->>AutomatedAgent: Alerts for Ci
AutomatedAgent->>SOAR: get_entities_by_alert_group_identifiers(case_id=Ci, ...)
SOAR-->>AutomatedAgent: Entities for Ci
Note over AutomatedAgent: Store all details in CASE_DETAILS_MAP[Ci]
end
%% Step 3 & 4: Group & Prioritize
Note over AutomatedAgent: Analyze CASE_DETAILS_MAP based on GROUPING_CRITERIA or similarities.
Note over AutomatedAgent: Form CASE_GROUPS (G1, G2...).
Note over AutomatedAgent: Prioritize groups into PRIORITIZED_GROUPS.
%% Step 5: Enrich (Optional)
opt Enrich High Priority Groups
Note over AutomatedAgent: Initialize ENRICHMENT_DATA_SUMMARY
loop For each High Priority Group Gp in PRIORITIZED_GROUPS
Note over AutomatedAgent: Identify key shared entities (Ep1, Ep2...)
loop For each Entity Epi in Gp
AutomatedAgent->>SIEM: lookup_entity(entity_value=Epi)
SIEM-->>AutomatedAgent: SIEM Summary for Epi
AutomatedAgent->>GTI: get_..._report(ioc=Epi) %% Appropriate GTI tool
GTI-->>AutomatedAgent: GTI Enrichment for Epi
Note over AutomatedAgent: Store in ENRICHMENT_DATA_SUMMARY
end
end
end
%% Step 6: Generate Report
Note over AutomatedAgent: Synthesize findings into REPORT_CONTENT (Markdown)
AutomatedAgent->>AutomatedAgent: write_to_file(path="./reports/case_grouping_report_${timestamp}.md", content=REPORT_CONTENT)
Note over AutomatedAgent: Report file created (REPORT_FILE_PATH)
Note over AutomatedAgent: Prepare GROUPING_ANALYSIS_SUMMARY
AutomatedAgent->>Analyst/User: attempt_completion(result="Case grouping analysis complete. Report: REPORT_FILE_PATH. Summary: GROUPING_ANALYSIS_SUMMARY.")
${CASE_LIST}) has been retrieved based on the specified criteria.${CASE_DETAILS_MAP}).${CASE_GROUPS}) based on defined or observed criteria.${PRIORITIZED_GROUPS}).${ENRICHMENT_DATA_SUMMARY}) is available.${REPORT_CONTENT}), detailing the groups, prioritization, and key findings, has been generated and saved to ${REPORT_FILE_PATH}.${GROUPING_ANALYSIS_SUMMARY} is available.The following rubric is used to evaluate the execution of this Triage/Response runbook by an LLM agent.
| Criteria | Points | Description |
|---|---|---|
| Context & Enrichment | 25 | Correctly extracted entities and enriched them with relevant context (GTI, SIEM). |
| Analysis & Decision | 25 | Analyzed the enriched data to make a sound decision (FP/TP, Escalate/Close). |
| Action Execution | 20 | Performed the required response actions (e.g., isolation, containment) correctly. |
| Documentation | 15 | Clearly documented findings and actions in the case/ticket. |
| Operational Artifacts | 15 | Produced required artifacts: Sequence diagram, execution metadata (date/cost), and summary. |
enrich_ioc) to gather reputation and history.