Borrowing it
Nothing to install: this file belongs to crystal-autobot/autobot. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/crystal-autobot/autobot/main/.claude/skills/autobot-test/SKILL.mdgit clone --depth 1 https://github.com/crystal-autobot/autobotWrote 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/crystal-autobot/autobot/autobot-test)<a href="https://agentmods.dev/skills/crystal-autobot/autobot/autobot-test"><img src="https://agentmods.dev/badge/skills/crystal-autobot/autobot/autobot-test/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/crystal-autobot/autobot/autobot-test"><img src="https://agentmods.dev/badge/skills/crystal-autobot/autobot/autobot-test.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.00017 | $0.01186 |
| Opus 5 | $0.00009 | $0.00593 |
| Sonnet 5 | $0.00003 | $0.00237 |
| Haiku 4.5 | $0.00002 | $0.00119 |
Grade A, and why
autobot-test 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 11d 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 — 213 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Testing Standards
AAA Pattern
Structure all tests with Arrange-Act-Assert and require the spec helper:
require "../spec_helper"
describe "MyFeature" do
it "does something expected" do
# Arrange
tool = Autobot::Tools::MyTool.new
params = {"key" => JSON::Any.new("value")}
# Act
result = tool.execute(params)
# Assert
result.success?.should be_true
result.content.should contain("expected")
end
end
Test File Organization
Mirror source structure:
spec/
├── autobot/
│ ├── providers/
│ │ ├── http_provider_spec.cr
│ │ └── registry_spec.cr
│ ├── tools/
│ │ ├── web_spec.cr
│ │ └── exec_spec.cr
│ └── config/
│ └── schema_spec.cr
├── spec_helper.cr
└── security_spec.cr
Running Tests
# Run all tests
crystal spec
# Run specific file
crystal spec spec/autobot/tools/web_spec.cr
# Run specific test by line number
crystal spec spec/autobot/tools/web_spec.cr:42
# Run with verbose output
crystal spec -v
# Run with color (default)
crystal spec --color
Mocking External Services
HTTP Provider Mocking:
class MockHttpProvider < Autobot::Providers::HttpProvider
property responses = [] of HTTP::Client::Response
property call_count = 0
def post(path : String, body : Hash) : HTTP::Client::Response
@call_count += 1
responses.shift? || HTTP::Client::Response.new(500, body: "{}").tap { |r| r.consume_body_io }
end
end
Tool Execution Mocking:
# Use dependency injection or monkey-patch for tests
class TestableExecTool < Autobot::Tools::ExecTool
property captured_commands = [] of String
def execute_system_command(cmd)
@captured_commands << cmd
{output: "mock output", exit_code: 0}
end
end
Testing Error Conditions
Always test error paths:
it "handles missing parameters" do
tool = Autobot::Tools::MyTool.new
result = tool.execute({} of String => JSON::Any)
result.error?.should be_true
result.content.should contain("missing")
end
it "handles rate limiting" do
limiter = Autobot::Tools::RateLimiter.new(
per_tool_limits: {"exec" => Autobot::Tools::RateLimiter::Limit.new(
max_calls: 1,
window_seconds: 60
)}
)
limiter.record_call("exec", "session")
error = limiter.check_limit("exec", "session")
error.should_not be_nil
error.should contain("max 1 calls")
end
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.
- 11d ago First seen · 213 lines · 17 tokens per session scan A 4a974e1b9c2e
autobot-test is a skill published in the GitHub repository crystal-autobot/autobot (45 stars, last pushed 2d ago), licensed MIT. It adds 17 tokens to every session and 1,186 once invoked, about $0.0001 per session on Opus 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-30.
Other skills, from other repositories
Verification & Quality Assurance
Comprehensive truth scoring, code quality verification, and automatic rollback system with 0.95 accuracy threshold for ensuring high-quality agent outputs and codebase reliability.
Verification & Quality Assurance
Comprehensive truth scoring, code quality verification, and automatic rollback system with 0.95 accuracy threshold for ensuring high-quality agent outputs and codebase reliability.
foundry-hosted-agent-validation
Step-by-step process for validating a Python Foundry hosted agent sample (under python/samples/04-hosting/foundry-hosted-agents/) end to end — running it locally (native runtime and azd ai agent run) and after deploying it to an Azure AI Foundry project with azd. Use this when asked to validate a hosted agent sample.
verify-samples-tool
How to use the verify-samples tool to run, verify, and manage sample definitions in the Agent Framework repository. Use this when adding, updating, or running sample verification.
build-and-test
How to build and test .NET projects in the Agent Framework repository. Use this when verifying or testing changes.
python-testing
Guidelines for writing and running tests in the Agent Framework Python codebase. Use this when creating, modifying, or running tests.