Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add smicolon/ai-kit --skill model-entity-validatorgit clone --depth 1 https://github.com/smicolon/ai-kitWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/smicolon/ai-kit/model-entity-validator)<a href="https://agentmods.dev/skills/smicolon/ai-kit/model-entity-validator"><img src="https://agentmods.dev/badge/skills/smicolon/ai-kit/model-entity-validator/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/smicolon/ai-kit/model-entity-validator"><img src="https://agentmods.dev/badge/skills/smicolon/ai-kit/model-entity-validator.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00057 | $0.01835 |
| Opus 5.5 | $0.00023 | $0.00734 |
| Sonnet 5.5 | $0.00011 | $0.00367 |
| Haiku 4.5 | $0.00006 | $0.00184 |
Grade A, and why
model-entity-validator scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 299 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Model/Entity Validator
Enforces the BaseModel inheritance pattern (UUID primary keys, audit timestamps, soft deletes) for all Django models.
Activation Triggers
This skill activates when:
- Creating new model files
- Modifying existing models
- Mentioning "model", "database", "schema", "table"
- Writing class inheriting from
models.Model - Running migrations
- Discussing data structure
Core Principle: BaseModel Inheritance
NEVER repeat UUID/timestamp fields. All models inherit from BaseModel.
# ❌ WRONG - Repeating fields
class User(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_deleted = models.BooleanField(default=False)
email = models.EmailField()
# ✅ CORRECT - Inherit from BaseModel
import core.models as _core_models
class User(_core_models.BaseModel):
email = models.EmailField(unique=True)
Validation Process
Step 1: Check if BaseModel Exists
Before any action, check if the project has a BaseModel:
# Search for BaseModel in (in order):
# 1. core/models.py
# 2. shared/models.py
# 3. common/models.py
# 4. {app}/base.py
If BaseModel found: Suggest inheritance (Step 2a) If BaseModel NOT found: Create BaseModel first (Step 2b)
Step 2a: BaseModel Exists - Suggest Inheritance
When seeing:
class Product(models.Model):
name = models.CharField(max_length=255)
Fix to:
import core.models as _core_models
class Product(_core_models.BaseModel):
"""Product model - inherits id, timestamps, soft delete from BaseModel."""
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=10, decimal_places=2)
class Meta:
db_table = 'products'
Step 2b: BaseModel NOT Found - Create It First
If no BaseModel exists, create it:
# core/models.py
import uuid
from django.db import models
class BaseModel(models.Model):
"""
Abstract base model providing:
- UUID primary key
- Automatic timestamps (created_at, updated_at)
- Soft delete support (is_deleted)
All models MUST inherit from this class.
"""
id = models.UUIDField(
primary_key=True,
default=uuid.uuid4,
editable=False
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_deleted = models.BooleanField(default=False)
class Meta:
abstract = True
ordering = ['-created_at']
def soft_delete(self) -> None:
"""Soft delete the record."""
self.is_deleted = True
self.save(update_fields=['is_deleted', 'updated_at'])
def restore(self) -> None:
"""Restore a soft-deleted record."""
self.is_deleted = False
self.save(update_fields=['is_deleted', 'updated_at'])
class ActiveManager(models.Manager):
"""Manager that excludes soft-deleted records."""
def get_queryset(self):
return super().get_queryset().filter(is_deleted=False)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed a16d2f7dca3f
- 1mo ago First seen · 299 lines · 57 tokens per session scan A fdf04428471a
model-entity-validator is a skill published in the GitHub repository smicolon/ai-kit (6 stars, last pushed 1mo ago), licensed MIT. It adds 57 tokens to every session and 1,835 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
nodejs-backend-patterns
Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices. Use when creating Node.js servers, REST APIs, GraphQL backends, or microservices architectures.
neon-postgres
Guides and best practices for working with Neon Serverless Postgres. Covers getting started, local development with Neon, choosing a connection method, Neon features, authentication (@neondatabase/auth), PostgREST-style data API (@neondatabase/neon-js), Neon CLI, and Neon's Platform API/SDKs. Use for any Neon-related…
event-store-design
Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns.
add-matrix
Add Matrix channel integration via Chat SDK. Works with any Matrix homeserver.
ha-data-stores
Map of Hope Agent's local data stores and safe read-only query workflow. Use when the user asks where Hope Agent stores data, wants to inspect sessions/messages/memory/logs/background jobs/knowledge indexes/settings, asks the model to query local app data, or debugging requires checking persisted state. Trigger…
platform-custom-field-generate
Use when users create, generate, or validate Salesforce Custom Field metadata. Trigger on custom fields, field types, Roll-Up Summary, Master-Detail/Lookup relationships, formula fields, picklists, dependent (controlling) picklists, referencing a value set from a field, or scoping picklist values per record type; also…