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/ninsau/nextjs-reusable-table/testinggit clone --depth 1 https://github.com/ninsau/nextjs-reusable-tableWhat 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.00600 |
| Opus 5 | $0.00000 | $0.00300 |
| Sonnet 5 | $0.00000 | $0.00120 |
| Haiku 4.5 | $0.00000 | $0.00060 |
Grade A, and why
testing 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 — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Testing Rules
Test File Location
- Component tests:
src/components/__tests__/ComponentName.test.tsx - Utility tests:
src/utils/__tests__/filename.test.ts
Required Test Structure
import { render, screen, fireEvent } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import ComponentName from "../ComponentName";
const defaultProps = {
// Always define a typed defaultProps object so tests are self-documenting
};
describe("ComponentName", () => {
describe("rendering", () => {
it("renders with required props", () => { ... });
it("renders empty/loading/error states", () => { ... });
});
describe("interactions", () => {
it("handles click events", async () => {
const user = userEvent.setup();
const handler = jest.fn();
render(<ComponentName {...defaultProps} onClick={handler} />);
await user.click(screen.getByRole("button"));
expect(handler).toHaveBeenCalledTimes(1);
});
});
describe("accessibility", () => {
it("has correct ARIA attributes", () => { ... });
});
});
Coverage Requirements
- 90%+ coverage for all new or modified code
- Test: rendering, user interactions, edge cases (empty arrays, undefined props), dark mode, custom class names
Mock Patterns
// Mock next/link
jest.mock("next/link", () => ({ __esModule: true, default: ({ children, href }: { children: React.ReactNode; href: string }) => <a href={href}>{children}</a> }));
// Mock window.matchMedia
Object.defineProperty(window, "matchMedia", {
writable: true,
value: jest.fn().mockImplementation((query) => ({
matches: false,
media: query,
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
})),
});
// Mock createPortal
jest.mock("react-dom", () => ({
...jest.requireActual("react-dom"),
createPortal: (node: React.ReactNode) => node,
}));
Data Fixtures
Use realistic, typed data that reflects real usage:
interface User { id: string; name: string; email: string; }
const mockUsers: User[] = [
{ id: "1", name: "Alice", email: "[email protected]" },
];
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 · 83 lines · 0 tokens per session scan A 5182f2a3e883
testing is a cursor rule published in the GitHub repository ninsau/nextjs-reusable-table (6 stars, last pushed 5mo ago), licensed 0BSD. It costs nothing until one of its globs matches a file; then it loads 600 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-31.
Other cursor rules, from other repositories
java-import-fqn
Java 禁止不必要的全限定类名,必须 import(类名冲突除外).
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.
typescript
Changes to these high-fan-out internals can affect every message, delta, element, or rerun. Keep work in them minimal, and benchmark changes with representative stress-test apps.
coolify-ai-docs
Master reference to all Coolify AI documentation in .ai/ directory.
python_lib
Tips and guidelines specific to the development of the Streamlit Python library, not applicable to scripts and e2e tests.