Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions PLUGINS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# SecuScan Plugin Catalogue

## Plugin Development

New contributors can follow the complete plugin creation walkthrough:

docs/plugins/plugin-development-walkthrough.md

This file is a human-readable index of the plugins currently present in `plugins/*/metadata.json`.

Last synced: 2026-05-11
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,10 @@ Before opening a plugin PR:
7. Refresh checksums.
8. Update `PLUGINS.md` if the catalogue changes.

For a complete plugin creation tutorial:

docs/plugins/plugin-development-walkthrough.md

Start with [PLUGINS.md](PLUGINS.md), [docs/plugin-validation.md](docs/plugin-validation.md), and [CONTRIBUTING.md](CONTRIBUTING.md).

## Contributing
Expand Down
52 changes: 52 additions & 0 deletions docs/plugins/plugin-development-walkthrough.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Plugin Development Walkthrough

## Introduction

This guide helps contributors create a new SecuScan plugin.

## Plugin Structure

plugins/example_plugin/
├── metadata.json
└── parser.py

## Step 1: Create metadata.json

Example:

{
"id": "example_plugin",
"name": "Example Plugin",
"category": "recon",
"safety_level": "safe"
}

## Step 2: Create parser.py

Example:

def parse(output):
return {
"findings": [],
"raw_output": output
}

## Validation

python scripts/validate_plugins.py

python scripts/validate_plugin.py --plugin example_plugin

## Refresh Checksum

python scripts/refresh_plugin_checksum.py --plugin example_plugin

## Common Mistakes

- Missing metadata fields
- Invalid safety level
- Incorrect parser output

## Conclusion

You are now ready to contribute a plugin.
Loading