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 rules/chihebnabil/lovable-boilerplate/servicesgit clone --depth 1 https://github.com/chihebnabil/lovable-boilerplateWhat 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.00000 | $0.01199 |
| Opus 5 | $0.00000 | $0.00600 |
| Sonnet 5 | $0.00000 | $0.00240 |
| Haiku 4.5 | $0.00000 | $0.00120 |
Grade A, and why
services 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 yesterday.
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 — 189 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Service Layer & Data Management Rules
Service Layer Organization
File Structure
src/lib/
├── utils.ts # General utilities (keep cn function)
├── types.ts # Shared TypeScript interfaces
├── constants.ts # App-wide constants
├── validations/ # Zod schemas
│ ├── user.ts
│ ├── product.ts
│ └── common.ts
└── services/ # API service layer
├── api.ts # Base API client
├── userService.ts
└── productService.ts
Service Layer Pattern
// services/userService.ts
export const userService = {
async getAll(): Promise<User[]> {
const response = await fetch('/api/users')
if (!response.ok) throw new Error('Failed to fetch users')
return response.json()
},
async getById(id: string): Promise<User> {
const response = await fetch(`/api/users/${id}`)
if (!response.ok) throw new Error('Failed to fetch user')
return response.json()
},
async create(data: CreateUserData): Promise<User> {
const response = await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
})
if (!response.ok) throw new Error('Failed to create user')
return response.json()
},
async update(id: string, data: Partial<User>): Promise<User> {
const response = await fetch(`/api/users/${id}`, {
method: 'PATCH',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
})
if (!response.ok) throw new Error('Failed to update user')
return response.json()
}
}
Shared Types (lib/types.ts)
export interface User {
id: string
email: string
name: string
avatar?: string
role: UserRole
createdAt: string
updatedAt: string
}
export interface ApiResponse<T> {
data: T
message: string
success: boolean
meta?: {
total: number
page: number
limit: number
}
}
export type UserRole = 'admin' | 'user' | 'guest'
export type Theme = 'light' | 'dark' | 'system'
export type LoadingState = 'idle' | 'loading' | 'success' | 'error'
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.
- yesterday First seen · 189 lines · 0 tokens per session scan A 12f74e0349c3
services is a cursor rule published in the GitHub repository chihebnabil/lovable-boilerplate (65 stars, last pushed 1mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,199 tokens. 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 cursor rules, from other repositories
library-conventions
React Native library conventions for this starter. Apply when creating or editing components, hooks, types, or tests in src/.
ai-collaboration
Instructions for AI agent code generation workflow.
api-validation
API route validation — enforces Zod validation on all route handlers and server actions.
error-handling
Error boundaries, loading states, and server error handling.
file-uploads
Image and file upload patterns — prevents insecure client-side uploads and missing file validation.
security
Security rules and OWASP Top 10 enforcement for AI-generated code.