diff --git a/PLUGINS.md b/PLUGINS.md index 568a91630..f24e3ee19 100644 --- a/PLUGINS.md +++ b/PLUGINS.md @@ -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 diff --git a/README.md b/README.md index 7c1a7b625..8a40b8bcb 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docs/plugins/plugin-development-walkthrough.md b/docs/plugins/plugin-development-walkthrough.md new file mode 100644 index 000000000..fb9ea4f41 --- /dev/null +++ b/docs/plugins/plugin-development-walkthrough.md @@ -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. \ No newline at end of file