genesis-trader-1b8545 — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited genesis-trader-1b8545 (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.
One skill, two directions:
Use Layer 0 for all routing decisions. Layer 2 is the rented capability itself.
Incoming requests arrive automatically via the AgentBnB WebSocket relay when your node is running (agentbnb serve). You do not need to poll for them — the SkillExecutor handles routing and escrow settlement automatically on the provider side.
Check current node status anytime:
agentbnb status --jsonmax_concurrent for this skill?escrow commands needed. {
"type": "rental_provided",
"skill_id": "<skill>",
"requester": "<agent_id>",
"credits_earned": <number>,
"success": true
}Triggered when:
gaps listClassify the current task:
Does this task require: writing + running code? → gap: code_execution
Does this task require: Python data analysis? → gap: data_analysis
Does this task require: web scraping? → gap: web_scrape
Does this task require: image generation? → gap: image_gen
Does this task require: TTS? → gap: audio_ttsIf the task can be done with Layer 0 or Layer 1: do not trigger a rental. Handle locally. If the task genuinely needs an execution environment: proceed to Hub search.
curl -s "{{hubUrl}}/api/registry/search?\
capability=<gap_type>&\
sort_by=reputation_desc&\
min_reputation=0.7&\
online_only=true&\
max_credits=<budget>" | jq '.results[:5]'Cross-reference with memory for past experience:
memory_recall "<provider_agent_id>" --category entities --limit 3Score each candidate:
provider_score = success_rate × (1 / credits_per_call) × reputation × load_factorWhere load_factor = 1.0 - (current_load / max_concurrent) from heartbeat data.
Skip providers with:
Also check reliability metrics when available:
curl -s "{{hubUrl}}/api/providers/<owner>/reliability" | jq '.'Prefer providers with:
current_streak > 3 (consecutive successes)repeat_hire_rate > 0.15 (other agents re-hire them)avg_feedback_score > 3.5Before committing credits, check if you have an active demand voucher:
agentbnb status --json | jq '.voucher'If voucher is active (remaining > 0):
If no active voucher: proceed with normal credit spending.
Check credit rules before proceeding:
IF credit_balance - rental_cost < reserve_floor → DENY (protect floor)
IF rental_cost > tier3_threshold → ASK owner (Telegram message)
IF rental_cost > tier1_threshold → RENT, then NOTIFY owner after
IF rental_cost ≤ tier1_threshold → RENT silentlyagentbnb request handles escrow hold + execute + settle (or release on failure) in a single atomic operation:
agentbnb request <card-id> \
--skill <skill_id> \
--cost <credits> \
--params '{"task": "<task_description>", "context": "<relevant_context>"}' \
--json<card-id>: the capability card ID from Hub search results--skill: the specific skill within the card--cost: credits to commit (must match the card's credits_per_call)To search by capability instead of card ID:
agentbnb request --query "<gap_type>" --max-cost <budget> --jsonOn success:
{
"type": "rental_consumed",
"skill_id": "<skill>",
"provider": "<agent_id>",
"credits_spent": <number>,
"success": true,
"result_summary": "<first 200 chars of result>"
}On failure:
{
"type": "rental_consumed",
"skill_id": "<skill>",
"provider": "<agent_id>",
"credits_spent": 0,
"success": false,
"failure_reason": "<bad_execution|overload|timeout|auth_error|not_found>",
"retries_attempted": <number>
}Store in memory (category: events, importance: 0.8). Queue for genesis-feedback. Return result to the task that triggered the rental.
When agentbnb request returns an error, check the failure_reason field:
| failure_reason | Meaning | Action | Reputation impact |
|---|---|---|---|
overload | Provider at capacity | Retry with backoff: 2s → 4s → 8s, max 3 attempts. If still overloaded, try next provider. Log: "Provider at capacity, retrying..." | None — capacity issue, not quality |
bad_execution | Skill ran but returned error | Do NOT retry same provider. Mark provider as unreliable for this task type in memory. Try next best provider. | Negative — reduce future preference |
timeout | Execution exceeded time limit | Retry once with same provider. If still timeout, try different provider. | Mild negative — may be temporary |
auth_error | Invalid credentials or escrow | Skip this provider entirely. Likely misconfigured. | Skip — not a quality signal |
not_found | Card or skill no longer available | Skip this provider. Skill may have been unpublished. | Skip — stale listing |
Overload retry backoff:
attempt = 1
WHILE attempt <= 3:
result = agentbnb request <card-id> --skill <skill_id> ...
IF result.failure_reason == 'overload':
wait (2^attempt) seconds
attempt += 1
Log: "Provider <id> at capacity, retry attempt <attempt>/3"
ELSE:
break
IF still overloaded after 3 retries:
Log: "Provider <id> consistently at capacity, trying next candidate"
proceed to next provider from Hub search results| Failure | Response |
|---|---|
| No provider found | Queue task for next heartbeat, notify owner if urgent |
| Escrow hold failed (insufficient credits) | Notify owner, do not retry |
| Two consecutive failures for same skill | Log pattern, suggest to owner to adjust gap strategy |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.