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 agentmods add commands/geoffjay/claude-plugins/sinatra-scaffoldgit clone --depth 1 https://github.com/geoffjay/claude-pluginsWrote 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/commands/geoffjay/claude-plugins/sinatra-scaffold)<a href="https://agentmods.dev/commands/geoffjay/claude-plugins/sinatra-scaffold"><img src="https://agentmods.dev/badge/commands/geoffjay/claude-plugins/sinatra-scaffold.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00018 | $0.03600 |
| Opus 5 | $0.00009 | $0.01800 |
| Sonnet 5 | $0.00004 | $0.00720 |
| Haiku 4.5 | $0.00002 | $0.00360 |
Grade A, and why
sinatra-scaffold 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 3d 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 — 655 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Sinatra Scaffold Command
Scaffolds a new Sinatra application with modern project structure, testing framework, and deployment configuration.
Arguments
- $1: project-name (required) - Name of the project/application
- $2: type (optional) - Application type:
classic,modular, orapi(default:modular) - $3: options (optional) - JSON string with configuration options:
testing:rspecorminitest(default:rspec)database:sequel,activerecord, ornone(default:sequel)frontend:none,erb, orhaml(default:erb)
Usage Examples
# Basic modular app with defaults
/sinatra-scaffold my-app
# Classic app with RSpec and no database
/sinatra-scaffold simple-app classic '{"testing":"rspec","database":"none","frontend":"erb"}'
# API-only app with Minitest and ActiveRecord
/sinatra-scaffold api-service api '{"testing":"minitest","database":"activerecord","frontend":"none"}'
# Full-featured modular app
/sinatra-scaffold webapp modular '{"testing":"rspec","database":"sequel","frontend":"haml"}'
Workflow
Step 1: Validate and Initialize
Actions:
- Validate project name format (alphanumeric, hyphens, underscores)
- Check if directory already exists
- Parse and validate options JSON
- Create project directory structure
Validation:
# Check project name
if [[ ! "$PROJECT_NAME" =~ ^[a-zA-Z0-9_-]+$ ]]; then
echo "Error: Invalid project name. Use alphanumeric characters, hyphens, or underscores."
exit 1
fi
# Check if directory exists
if [ -d "$PROJECT_NAME" ]; then
echo "Error: Directory '$PROJECT_NAME' already exists."
exit 1
fi
Step 2: Create Directory Structure
Classic Structure:
project-name/
├── app.rb
├── config.ru
├── Gemfile
├── Rakefile
├── config/
│ └── environment.rb
├── public/
│ ├── css/
│ ├── js/
│ └── images/
├── views/
│ ├── layout.erb
│ └── index.erb
├── spec/ or test/
└── README.md
Modular Structure:
project-name/
├── app/
│ ├── controllers/
│ │ ├── application_controller.rb
│ │ └── base_controller.rb
│ ├── models/
│ ├── services/
│ └── helpers/
├── config/
│ ├── environment.rb
│ ├── database.yml (if database selected)
│ └── puma.rb
├── config.ru
├── db/
│ └── migrations/
├── lib/
│ └── tasks/
├── public/
│ ├── css/
│ ├── js/
│ └── images/
├── views/
│ ├── layout.erb
│ └── index.erb
├── spec/ or test/
│ ├── spec_helper.rb
│ └── controllers/
├── Gemfile
├── Rakefile
├── .env.example
├── .gitignore
└── README.md
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.
- 3d ago First seen · 655 lines · 18 tokens per session scan A 6ab8762d2acf
sinatra-scaffold is a command published in the GitHub repository geoffjay/claude-plugins (8 stars, last pushed 10mo ago), licensed MIT. It adds 18 tokens to every session and 3,600 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-31.
Other commands, from other repositories
go-review
Go code review for idiomatic patterns.
review-sdk-app
Review and validate a Claude Agent SDK application against best practices.
fastapi
FastAPI application design and implementation conventions. Use this skill when building, updating, or reviewing FastAPI services, routers, dependencies, request/response schemas, streaming endpoints, or API tests. Trigger on FastAPI-specific work such as path operation design, dependency injection, response models…
zuora-cpq-migration-design
Map legacy Zuora CPQ Component Library or Apex customizations to Quote Studio JavaScript.
add-test-fixture-and-go-test-for-langgraph-js-rule
Workflow command scaffold for add-test-fixture-and-go-test-for-langgraph-js-rule in shingan.
savant-python
Python performance optimization with Python Developer agent.