CtrlK
BlogDocsLog inGet started
Tessl Logo

netalertx-plugin-run-development

Create and run NetAlertX plugins. Use this when asked to create plugin, run plugin, test plugin, plugin development, or execute plugin script.

66

Quality

78%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./.github/skills/plugin-run-development/SKILL.md
SKILL.md
Quality
Evals
Security

Plugin Development

Expected Workflow for Running Plugins

  1. Read this skill document for context and instructions.
  2. Find the plugin in server/plugins/<code_name>/.
  3. Read the plugin's config.json and script.py to understand its functionality and settings.
  4. Formulate and run the command: python3 server/plugins/<code_name>/script.py.
  5. Retrieve the result from the plugin log folder (/tmp/log/plugins/last_result.<PREF>.log) quickly, as the backend may delete it after processing.

Run a Plugin Manually

python3 server/plugins/<code_name>/script.py

Ensure sys.path includes /app/server/plugins and /app/server (as in the template).

Plugin Structure

server/plugins/<code_name>/
├── config.json      # Manifest with settings
├── script.py        # Main script
└── ...

Manifest Location

server/plugins/<code_name>/config.json

  • code_name == folder name
  • unique_prefix drives settings and filenames (e.g., ARPSCAN)

Settings Pattern

  • <PREF>_RUN: execution phase
  • <PREF>_RUN_SCHD: cron-like schedule
  • <PREF>_CMD: script path
  • <PREF>_RUN_TIMEOUT: timeout in seconds
  • <PREF>_WATCH: columns to watch for changes

Data Contract

Scripts write to /tmp/log/plugins/last_result.<PREF>.log

Important: The backend will almost immediately process this result file and delete it after ingestion. If you need to inspect the output, run the plugin and immediately retrieve the result file before the backend processes it.

Use server/plugins/plugin_helper.py:

from plugin_helper import Plugin_Objects

plugin_objects = Plugin_Objects()
plugin_objects.add_object(...)  # During processing
plugin_objects.write_result_file()  # Exactly once at end

Execution Phases

  • once: runs once at startup
  • schedule: runs on cron schedule
  • always_after_scan: runs after every scan
  • before_name_updates: runs before name resolution
  • on_new_device: runs when new device detected
  • on_notification: runs when notification triggered

Plugin Formats

FormatPurposeRuns
publisherSend notificationson_notification
dev scannerCreate/manage devicesschedule
name discoveryDiscover device namesbefore_name_updates
importerImport from servicesschedule
systemCore functionalityschedule

Starting Point

Copy from server/plugins/__template and customize.

Repository
netalertx/NetAlertX
Last updated
First committed

Is this your skill?

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.