From lc-essentials
Integrates Velociraptor DFIR with LimaCharlie to list VQL artifacts, view definitions, launch endpoint collections, query events, and build D&R rules for triage, incident response, and threat hunting.
npx claudepluginhub refractionpoint/lc-ai --plugin lc-essentialsThis skill is limited to using the following tools:
Launch Velociraptor forensic collections and work with collection results in LimaCharlie.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Proposes cuts, reorganization, and simplification to improve document structure, clarity, and flow while preserving comprehension. Use for structural or editorial reviews.
Launch Velociraptor forensic collections and work with collection results in LimaCharlie.
Prerequisites: Run
/init-lcto initialize LimaCharlie context.
All LimaCharlie operations use the limacharlie CLI directly:
limacharlie <noun> <verb> --oid <oid> --output yaml [flags]
For command help and discovery: limacharlie <command> --ai-help
| Rule | Wrong | Right |
|---|---|---|
| CLI Access | Call MCP tools or spawn api-executor | Use Bash("limacharlie ...") directly |
| Output Format | --output json | --output yaml (more token-efficient) |
| Filter Output | Pipe to jq/yq | Use --filter JMESPATH to select fields |
| LCQL Queries | Write query syntax manually | Use limacharlie ai generate-query first |
| Timestamps | Calculate epoch values | Use date +%s or date -d '7 days ago' +%s |
| OID | Use org name | Use UUID (call limacharlie org list if needed) |
Velociraptor is an open source endpoint visibility tool for digital forensics, incident response, and triage. LimaCharlie integrates with Velociraptor via the ext-velociraptor extension.
When a Velociraptor collection runs:
Raw Artifacts: The collected data is stored as a ZIP file in LimaCharlie's Artifact system
artifact_type: velociraptorsource field contains the Sensor ID (SID) where it was collectedProcessed Events: For small collections, data is also processed to JSON and ingested as sensor events
velociraptorext:ext-velociraptorvelociraptor_collection, artifact_eventD&R Automation: You can trigger on these events for automated workflows
Use this skill when the user wants to:
The organization must have the ext-velociraptor extension subscribed.
The
limacharlieCLI must be available.
If not already known, get the OID:
limacharlie org list --output yaml
List all VQL artifacts available for collection (built-in and external from triage.velocidex.com):
limacharlie extension request --name ext-velociraptor --action list_artifacts --oid <oid> --output yaml
Before collecting, view an artifact's YAML to understand its parameters:
limacharlie extension request --name ext-velociraptor --action show_artifact \
--data '{"artifact_name": "Windows.System.Drivers"}' --oid <oid> --output yaml
Collect from a single sensor:
limacharlie extension request --name ext-velociraptor --action collect \
--data '{"artifact_list": ["Windows.System.Drivers"], "sid": "<sensor-id>"}' \
--oid <oid> --output yaml
Collect from multiple sensors using a selector:
limacharlie extension request --name ext-velociraptor --action collect \
--data '{"artifact_list": ["Windows.KapeFiles.Targets"], "sensor_selector": "plat == windows", "args": "KapeTriage=Y", "collection_ttl": 3600, "retention_ttl": 7}' \
--oid <oid> --output yaml
List raw Velociraptor artifacts stored in the Artifact system:
limacharlie artifact list --type velociraptor --sid <sensor-id> --oid <oid> --output yaml
Download an artifact:
limacharlie artifact download --id <artifact-id> --oid <oid> --output yaml
For small collections, data is also available as events. Use LCQL to query them.
CRITICAL: Always use limacharlie ai generate-query first - never write LCQL manually.
limacharlie ai generate-query --prompt "velociraptor_collection events from the last 7 days" --oid <oid> --output yaml
Then execute:
limacharlie search run --query "<generated-query>" --start <ts> --end <ts> --oid <oid> --output yaml
To find the virtual sensor that receives processed Velociraptor data:
limacharlie sensor list --selector "\`ext:ext-velociraptor\` in tags" --oid <oid> --output yaml
| Parameter | Type | Description |
|---|---|---|
artifact_list | string[] | List of artifacts to collect (use one of artifact_list OR custom_artifact) |
custom_artifact | string | Custom artifact YAML definition |
sid | string | Single sensor ID (use one of sid OR sensor_selector) |
sensor_selector | string | bexpr selector for multiple sensors (e.g., plat == windows) |
args | string | Comma-separated artifact arguments (e.g., KapeTriage=Y,EventLogs=Y) |
collection_ttl | int | Seconds to keep attempting collection (default: 604800 = 7 days) |
retention_ttl | int | Days to retain collected artifacts (default: 7) |
ignore_cert | bool | Ignore SSL certificate errors during collection |
| Artifact | Platform | Description |
|---|---|---|
Windows.KapeFiles.Targets | Windows | KAPE-style triage collection |
Windows.System.Pslist | Windows | Running processes |
Windows.System.Drivers | Windows | Loaded kernel drivers |
Windows.Network.Netstat | Windows | Network connections |
Windows.EventLogs.Evtx | Windows | Windows event logs |
Windows.Registry.UserAssist | Windows | User activity tracking |
Generic.System.Pstree | All | Process tree |
Linux.Sys.Users | Linux | User accounts |
Linux.Sys.Syslog | Linux | System logs |
MacOS.Applications.List | macOS | Installed applications |
Detect when a Velociraptor collection completes:
# Detection
op: is
path: routing/log_type
value: velociraptor
target: artifact_event
# Response
- action: report
name: Velociraptor Collection Complete
- action: output
name: my-siem-output
Process the actual collection data:
# Detection
event: velociraptor_collection
op: exists
path: event/collection
# Response
- action: report
name: Velociraptor Data Available
- action: output
name: bigquery-tailored
Start a Velociraptor collection as a response action:
# Response (add to any detection)
- action: extension request
extension action: collect
extension name: ext-velociraptor
extension request:
artifact_list: ['Windows.KapeFiles.Targets']
sid: '{{ .routing.sid }}'
args: 'KapeTriage=Y'
collection_ttl: 3600
retention_ttl: 7
When working with artifacts:
start, end in list_artifacts): Unix seconds (10 digits)date +%s # Now
date -d '24 hours ago' +%s # 24 hours ago
date -d '7 days ago' +%s # 7 days ago
collect_velociraptor_artifact returns immediately with a job_id; results are ingested asynchronouslycollection_ttl expiresusp_adapter (code 9) - adapters cannot run collections(plat==windows or plat==linux or plat==macos) and arch!=usp_adapterget_url_only: true and download externallylist-artifacts / get-artifact - Work with raw artifact filesdetection-engineering - Build D&R rules for Velociraptor eventssensor-tasking - Execute live commands (alternative to Velociraptor for some use cases)limacharlie extension request --ai-help for CLI help