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.
git clone --depth 1 https://github.com/SeanLF/weather-mcpWrote 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/rules/seanlf/weather-mcp/self-review-before-submission)<a href="https://agentmods.dev/rules/seanlf/weather-mcp/self-review-before-submission"><img src="https://agentmods.dev/badge/rules/seanlf/weather-mcp/self-review-before-submission/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/rules/seanlf/weather-mcp/self-review-before-submission"><img src="https://agentmods.dev/badge/rules/seanlf/weather-mcp/self-review-before-submission.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.01364 | $0.01364 |
| Opus 5 | $0.00682 | $0.00682 |
| Sonnet 5 | $0.00273 | $0.00273 |
| Haiku 4.5 | $0.00136 | $0.00136 |
Grade A, and why
self-review-before-submission 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 12d 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 — 195 lines — stays where its author put it; the contents beside it link to each section on GitHub.
filters:
- type: event pattern: "code_completion|solution_finalized"
- type: content pattern: "(?i)(complete|ready|finished|done|solution)"
actions:
-
type: transform pattern: "^.*$" replacement: |
Self-Reviewed Solution
{original_content}
Pre-Submission Checklist
Category Status Notes Functionality {status} {notes} Edge Cases {status} {notes} Error Handling {status} {notes} Security {status} {notes} Performance {status} {notes} Maintainability {status} {notes} Testing {status} {notes} Critical Review
{critical_review_notes}
Improvements for Future Iterations
{future_improvements}
-
type: validate conditions:
-
pattern: "." validationScript: | // Define self-review checklist const requiredChecks = [ { name: "Edge Case Handling", patterns: [ /null|undefined|empty|exception|error|catch|if\s(/i ] }, { name: "Input Validation", patterns: [ /validate|check|assert|if\s*([^)]*param/i ] }, { name: "Comments/Documentation", patterns: [ ///|/*|*/|"""|'''/ ] }, { name: "Testing Considerations", patterns: [ /test|assert|expect|should|mock/i ] } ];
// Check for missing requirements const missingChecks = requiredChecks.filter(check => !check.patterns.some(pattern => pattern.test(fullContent)) );
if (missingChecks.length > 0) { const missing = missingChecks.map(check => check.name).join(", "); return { valid: false, message:
Self-review incomplete: Missing ${missing}}; }return { valid: true };
-
-
type: suggest message: | Before submitting your solution:
- Review functionality for correctness and completeness
- Test with edge cases and unexpected inputs
- Verify error handling for all failure paths
- Check for security vulnerabilities
- Look for performance bottlenecks
- Assess code maintainability
- Include tests or testing plans
examples:
-
input: | I've implemented the user search functionality. Here's the solution:
function searchUsers(query) { const users = database.getUsers(); return users.filter(user => user.name.includes(query) || user.email.includes(query) ); }output: |
Self-Reviewed Solution
/** * Search for users by name or email * @param {string} query - The search term to look for * @returns {Array} - Array of matching user objects */ function searchUsers(query) { // Validate input if (!query || typeof query !== 'string') { return []; } try { // Normalize query for case-insensitive search const normalizedQuery = query.toLowerCase().trim(); // Return empty array for very short queries if (normalizedQuery.length < 2) { return []; } // Get users with timeout and limit const users = database.getUsers({ timeout: 3000, limit: 1000 }); // Perform case-insensitive search on indexed fields return users.filter(user => { // Safely handle potentially missing properties const name = (user.name || '').toLowerCase(); const email = (user.email || '').toLowerCase(); return name.includes(normalizedQuery) || email.includes(normalizedQuery); }).slice(0, MAX_SEARCH_RESULTS); // Limit results for performance } catch (error) { logger.error('User search error:', error); return []; // Return empty array on error rather than breaking UI } }
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.
- 12d ago First seen · 195 lines · 1,364 tokens per session scan A 068851898ed2
self-review-before-submission is a cursor rule published in the GitHub repository SeanLF/weather-mcp (2 stars, last pushed 1y ago), licensed MIT. It adds 1,364 tokens to every session, about $0.0068 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 cursor rules, from other repositories
clean-code-reviewer
Eliminates technical debt using SOLID, DRY, YAGNI, and Addy Osmani production-grade engineering principles. / TR: SOLID, DRY, YAGNI ve Addy Osmani üretim seviyesi mühendislik ilkeleri ile kod kalitesini denetleyen yetenek.
sweep-benchmarks
Audit xrspatial modules for asv benchmark coverage gaps: missing benchmarks, backend parameterization gaps, unrepresentative inputs, broken or silently-skipped benchmarks.
code-review
BMAD BMM Agent: code-review.
ponytail
Ponytail, lazy senior dev mode. Always pick the simplest solution that works.
angular-20
This rule provides comprehensive best practices and coding standards for Angular development, focusing on modern TypeScript, standalone components, signals, and performance optimizations.
dev-standard
Apache Superset development standards and guidelines for Cursor IDE.