convention-over-configuration — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited convention-over-configuration (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
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.
If .agents/stack-context.md exists, read it first. Apply this principle using idiomatic patterns for the detected stack. For framework-specific details, use context7 MCP or web search — don't guess.
Adopt sensible defaults and consistent patterns so that decisions are made once and applied everywhere. Reserve explicit configuration for the cases that genuinely need to differ from the default.
Every configuration option is a decision that someone must make, document, understand, and maintain. Misconfigured systems are a top cause of production incidents — wrong environment variables, typos in YAML, conflicting settings between services.
Convention-driven systems are predictable. A new team member can look at one module and know how every other module works. There's no "well, this service does it differently because someone configured it that way 18 months ago."
Configuration should be the exception, not the default. When everything is configurable, nothing is standardized.
routes/, models in models/, and tests in tests/ — follow that. Don't invent a custom layout unless the framework's conventions genuinely don't fit.users.rs, the tests should be in users_test.rs, the migration should reference users, and the API endpoint should be /users. Predictable naming is a convention that eliminates searching.-- Over-configured: every handler specifies its own middleware stack
app.route("/users", handler=users, middleware=[auth, logging, rate_limit, cors])
app.route("/orders", handler=orders, middleware=[auth, logging, rate_limit, cors])
app.route("/products", handler=products, middleware=[logging, cors]) # oops, forgot auth
-- Convention: default middleware applied globally, exceptions are explicit
app.use([auth, logging, rate_limit, cors]) # convention: all routes get this
app.route("/users", handler=users)
app.route("/orders", handler=orders)
app.route("/health", handler=health, skip=[auth]) # explicit exception-- Over-configured: every test specifies database setup
def test_create_user():
db = connect("postgres://localhost:5432/test")
db.migrate()
db.seed("users.sql")
...
-- Convention: test framework handles setup, tests just test
def test_create_user(db): # db fixture provided by convention
user = create_user(db, name="Alice")
assert user.name == "Alice"~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.