sn-planning — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sn-planning (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Convert a Technical Specification into a rigorous, step-by-step Implementation Plan. Define WHAT needs to be done, WHERE (exact file paths), and in WHAT ORDER — so a developer agent can execute each step linearly without ambiguity.
| Do | Don't |
|---|---|
| Write function signatures (name, params, return type) | Write function bodies or class implementations |
| Describe logic in prose/pseudo-code | Write actual code blocks |
| Use explicit file paths relative to project root | Leave locations ambiguous |
Use Markdown checkboxes - [ ] for all steps | Use numbered lists without checkboxes |
| Prefix each step with a layer tag | Mix layers within a single step |
| Describe test intent and coverage in prose | Write test code |
Prefix every step:
| Tag | Layer | Location |
|---|---|---|
[API Model] | Pydantic API models | signnow_client/models/ |
[API Client] | HTTP client methods | signnow_client/client_*.py |
[Tool Model] | Curated response DTOs | sn_mcp_server/tools/models.py |
[Tool Logic] | Business logic | sn_mcp_server/tools/<feature>.py |
[Tool Orchestrator] | MCP tool wiring | sn_mcp_server/tools/signnow.py |
[Registration] | Tool registration | sn_mcp_server/tools/__init__.py |
[Config] | Configuration | */config.py |
[Auth] | Authentication | sn_mcp_server/auth.py, token_provider.py |
[Transport] | CLI/HTTP app | sn_mcp_server/cli.py, app.py |
[Tests] | Unit tests | tests/unit/ |
[Docs] | Documentation | README.md |
Write to .plans/Plan-{TASK_NAME}.md. Group steps into phases following the dependency graph — foundational layers first, dependent layers last.
Pure data definitions. Zero dependencies. Represent SignNow API payloads.
pydantic.HTTP communication. Depends only on Phase 1.
sn_mcp_server.* imports. Errors via signnow_client/exceptions.py.Token-efficient DTOs for agents. Depends on pydantic only.
Stateless transformation. Depends on Phase 2 + Phase 3.
Thin wiring. Depends on Phase 4.
tools/__init__.py if needed.Unit tests for Phase 4. Mock SignNowAPIClient.
pytest.README.md if new tools added.pytest, ruff check src/, ruff format --check src/.Each step must be atomic: "Add model X to file Y", "Add method Z to class W". A developer should complete one step, commit, and move to the next.
Before finalizing, verify:
signnow_client/ has zero imports from sn_mcp_server/? (No Upward Imports)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.