Thank you for helping improve SafeguardCustomPlatform. We welcome new sample scripts, documentation improvements, bug fixes, and feature requests.
- Fork this repository on GitHub.
- Clone your fork locally.
- Create a feature branch for one logical change.
- Make and test your changes.
- Submit a pull request.
git clone https://github.com/<your-account>/SafeguardCustomPlatform.git
cd SafeguardCustomPlatform
git checkout -b my-change- Add new scripts under
samples/in the correct protocol folder:samples/ssh/samples/http/samples/telnet/
- Follow the JSON structure in docs/reference/script-structure.md.
- Include the standard operations your target supports whenever possible. At minimum, include
CheckSystem(the operation behind Test Connection) andCheckPassword, unless accounts change their own passwords on that platform (in which caseCheckSystemmay not apply). - Use meaningful parameter names and sensible defaults.
- Use the
Commentcommand to explain non-obvious logic. - Test against a real SPP instance before submitting.
- During development, validate locally with
Test-SafeguardCustomPlatformScriptand useImport-SafeguardCustomPlatformScriptwhen you need to upload a revised script to SPP. See docs/guides/testing-and-debugging.md.
- JSON must be valid: no trailing commas, proper escaping, and correct data types.
- Use descriptive function names such as
ConnectSshandChangePasswordSsh, not placeholder names likefunc1. - Use the
Global:prefix for connection or response objects that must be shared across functions. - Always include
Disconnectin cleanup paths for SSH or Telnet sessions. - Handle error conditions explicitly: check command results, validate responses, and fail with a clear reason when needed.
- Include
Timeoutparameters with reasonable defaults. - Mask sensitive values with
ContainsSecret: trueorOutputContainsSecret: truewhere appropriate. - Prefer readable, maintainable logic over clever shortcuts.
- Documentation lives in
docs/. - Follow the existing markdown style and heading structure used in the repo.
- Cross-link to related reference pages when you add or update documentation.
- Never use internal codenames in customer-facing documentation.
- If you update script behavior or conventions, update the related reference or guide page in the same pull request when possible.
- Describe what changed and why.
- Reference any related GitHub issues.
- Keep pull requests focused; one logical change per PR is preferred.
- Make sure JSON is valid before opening the PR. CI will check this, but please validate locally first.
- If your change affects script authoring guidance, include the related documentation update.
Please use GitHub Issues for bugs and feature requests.
When reporting a problem, include:
- SPP version
- A sanitized script excerpt
- The error message
- Expected behavior
- Actual behavior
If possible, also include the operation you ran and any relevant Get-SafeguardTaskLog output with secrets removed.
Please be respectful, constructive, and patient in all discussions and reviews. We want this repository to be welcoming to everyone who is trying to learn, contribute, or help others.