add-data-source — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited add-data-source (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.
Follow these 6 steps in order. Each step must be completed before moving to the next.
Create property_core/new_client.py. Choose the pattern that fits:
property_core/companies_house_client.pyis_configured() check for optional credentialsos.getenv()property_core/epc_client.pyproperty_core/rightmove_scraper.pyproperty_core/ppd_client.pyRequired in all clients:
from __future__ import annotationsCreate property_core/models/new_source.py.
Transport-parsed models get the raw field:
raw: dict | None = Field(default=None, exclude=True)Use @classmethod factory methods for parsing:
@classmethod
def from_api_response(cls, data: dict) -> "NewModel":
return cls(field=data.get("key"), raw=data)Open property_core/models/__init__.py:
from .new_source import NewModel__all__ listOpen property_core/__init__.py:
__all__ listIf the data source needs orchestration (combining with other sources, stats computation, guardrails), create property_core/new_service.py.
class NewServicedef analyze_new()property_core/__init__.pyAll three consumers must be updated:
Create app/api/v1/new_source.py, register in app/api/routes.py. See /add-endpoint skill for details.
Add @mcp.tool() function in mcp_server/server.py. See /add-mcp-tool skill for details.
Add Typer command/subcommand in property_cli/main.py. Follow existing patterns (Rich tables, _join_tokens() for postcodes).
from __future__ import annotations in all new filesproperty_core/models/__init__.pyproperty_core/__init__.pyapp/api/routes.pymcp_server/server.pyproperty_cli/main.pyRUN_LIVE_TESTS=1).env.exampleuv run --extra dev pytest -v~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.