sn-spec-writing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sn-spec-writing (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.
Before designing any feature, run every check in order. If any check fails, reject or redesign before proceeding.
| Principle | Question |
|---|---|
| Thin Translator | Does this maintain the stateless translation identity? If it adds state, caching, or agent-side logic — redesign. |
| Simplicity | Is this the simplest possible solution? Can it have fewer moving parts? |
| YAGNI | Is the feature actually needed now, or is it speculative? |
sn-architecture).signnow_client/ → sn_mcp_server/)? → Reject.TokenProvider.signnow_client/exceptions.py.SignNowAPIClient?tests/unit/ source structure.README.md needs updating? (New tools, auth changes, transport changes.)tools/__init__.py → register_tools()?| Do | Don't |
|---|---|
| Define Pydantic models as complete runnable Python (models ARE the spec) | Write function bodies or full implementations |
Define function signatures with full type hints + docstrings (body = ...) | Paste raw SignNow API JSON responses |
| Use numbered pseudo-code for business logic flow | Reference Starlette/ASGI/HTTP in tool specs |
| Produce an explicit error catalog table | Skip error scenarios |
| Produce a test matrix table | Write actual test code |
Write to .specs/Spec-{TASK_NAME}.md with these sections:
One paragraph max. Include a Philosophy Check table (Thin Translator, Stateless, Tool Minimization, Token Efficiency, YAGNI, No Infrastructure Coupling — each with ✅/❌ verdict + rationale).
Table: Layer | File(s) | Change Type | Description.
Sequence diagram: Agent → Tool → Business Logic → API Client → SignNow API → Response Model → Agent.
....Ordered checkbox list. Each step = one reviewable unit.
Table: Test Name | Input | Mocked API Behavior | Expected Output/Assertion.
Table: Risk | Impact | Likelihood | Mitigation.
Tree view of all new and modified files.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.