ingest-source — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ingest-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.
The fat-skill orchestrator for the three-layer ingest pipeline. See docs/proposals/three-layer-ingest.md for the architecture.
| Parameter | Required | Example | Meaning |
|---|---|---|---|
SOURCE | yes | mcp-registry | Slug of a registered source — must match a file at data/sources/<SOURCE>.yml |
LIMIT | no | 25 | Cap the pull size for first-run shake-down. Omit to paginate to exhaust. |
DRY_RUN | no | true | Stop short of auxiliar ingest promote — staging stays untouched of data/capabilities/. |
The same procedure handles every source. Different parameter → different universe ingested (MCP Registry servers, Printing Press bundles, ClawHub skills, …). One skill, many capabilities. Per the framework: "Same skill. Same seven steps. Same markdown file."
/ingest-source mcp-registry).refresh_cadence field.data/capabilities-staging/<source>/that need to finish their journey.
Read data/sources/<SOURCE>.yml. Verify:
adapter_status: shipped (or spike).auxiliar ingest list-sources shows ✓.If the source isn't registered, do not improvise. Stop and ask the user to either build the adapter or correct the slug. The skill is not a code-writer; it is an orchestrator.
auxiliar ingest pull $SOURCE ${LIMIT:+--limit $LIMIT}Outputs at data/capabilities-staging/$SOURCE/<slug>.yml. Every record arrives with experimental: true, cost.type: unknown, and only the fields the upstream registry could supply (id, name, description, repository, mcp_registry_id, etc.).
Sanity-check the count against the prior run if there is one — a 10x drop or 10x spike usually means upstream changed shape; surface that to the user before continuing.
auxiliar ingest dedup $SOURCE --report data/capabilities-staging/$SOURCE/_dedup-report.jsonThe CLI applies the source's dedup_strategy (default skip-on-hand-curated):
discarded by the CLI; no further action.
overwrite-with-flag policy hit a match; the CLI leftthe staging file in place. Human review required — surface the conflict list to the user and pause.
For every staging YAML that survived dedup:
invoke /enrich-capability with RECORD=data/capabilities-staging/$SOURCE/<slug>.ymlThe enrichment skill writes back jtbd_tags, aliases_search, categories, choose_if, avoid_if, and (if it can confirm) updates cost.type from unknown to a known value. Do not run more than 5 concurrent enrichments per source — the upstream README/repo fetches hit rate limits.
If /enrich-capability returns "INSUFFICIENT_DATA" for a record, leave it staged with experimental: true and a # enrichment-failed: 2026-... comment line at the top of the YAML. The next refresh cron will retry.
For each enriched record, invoke the appropriate curator smoke:
element_type: mcp + has remotes[] → HTTP transport: call theinitialize MCP method, expect a 200 with a valid response.
element_type: mcp + has packages[] → stdio transport: install viathe declared package manager, spawn, check initialize.
element_type: skill from pp-library → run the printed skill'ssmoke-test against a canonical input where available.
smoke-skipped: true in a transient sidecar.The smoke result feeds the promotion decision. Smoke is mandatory — records that don't pass stay experimental: true and remain in staging. Per the business model: "add to the list only when we can credibly deliver."
Build the promote allowlist as: enriched and smoke-passed. Flip experimental: false in each YAML, then:
auxiliar ingest promote $SOURCE --only <slug1> --only <slug2> ...The CLI refuses to overwrite hand-curated records (provenance: hand-curated) — that's the dedup gate's last line of defense.
Summarize for the user:
Plus any conflicts that need human review.
This skill is the natural unit for a scheduled run:
# Pseudocode for /schedule wiring
on cron(weekly):
/ingest-source mcp-registry
/ingest-source printing-press
on cron(daily, for high-velocity sources):
/ingest-source npm-mcpCadence is read from data/sources/<SOURCE>.yml → refresh_cadence. Operators wire the cron via /schedule once the policy is validated on the first manual runs.
adapter is missing for a source, stop and surface the gap.
what's declared.
requires writing the adapter, the source YAML, and (sometimes) a schema-enum expansion.
experimental. We rank capabilities; we don't fake them.
docs/proposals/three-layer-ingest.md — the architecturedocs/sources/inventory.md — universe enumeration + per-source verificationdata/sources/ — per-source config recordssrc/auxiliar/cli/ingest.py — the CLI surface this skill orchestratesmemos/Arquitetura.pdf — the thin-harness-fat-skills frame~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.