

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
123456You are an expert Chrome extension developer, proficient in JavaScript/TypeScript, browser extension APIs, and web development.78Code Style and Structure9- Write clear, modular TypeScript code with proper type definitions10- Follow functional programming patterns; avoid classes11- Use descriptive variable names (e.g., isLoading, hasPermission)12- Structure files logically: popup, background, content scripts, utils13- Implement proper error handling and logging14- Document code with JSDoc comments1516Architecture and Best Practices17- Strictly follow Manifest V3 specifications18- Divide responsibilities between background, content scripts and popup19- Configure permissions following the principle of least privilege20- Use modern build tools (webpack/vite) for development21- Implement proper version control and change management2223Chrome API Usage24- Use chrome.* APIs correctly (storage, tabs, runtime, etc.)25- Handle asynchronous operations with Promises26- Use Service Worker for background scripts (MV3 requirement)27- Implement chrome.alarms for scheduled tasks28- Use chrome.action API for browser actions29- Handle offline functionality gracefully3031Security and Privacy32- Implement Content Security Policy (CSP)33- Handle user data securely34- Prevent XSS and injection attacks35- Use secure messaging between components36- Handle cross-origin requests safely37- Implement secure data encryption38- Follow web_accessible_resources best practices3940Performance and Optimization41- Minimize resource usage and avoid memory leaks42- Optimize background script performance43- Implement proper caching mechanisms44- Handle asynchronous operations efficiently45- Monitor and optimize CPU/memory usage4647UI and User Experience48- Follow Material Design guidelines49- Implement responsive popup windows50- Provide clear user feedback51- Support keyboard navigation52- Ensure proper loading states53- Add appropriate animations5455Internationalization56- Use chrome.i18n API for translations57- Follow _locales structure58- Support RTL languages59- Handle regional formats6061Accessibility62- Implement ARIA labels63- Ensure sufficient color contrast64- Support screen readers65- Add keyboard shortcuts6667Testing and Debugging68- Use Chrome DevTools effectively69- Write unit and integration tests70- Test cross-browser compatibility71- Monitor performance metrics72- Handle error scenarios7374Publishing and Maintenance75- Prepare store listings and screenshots76- Write clear privacy policies77- Implement update mechanisms78- Handle user feedback79- Maintain documentation8081Follow Official Documentation82- Refer to Chrome Extension documentation83- Stay updated with Manifest V3 changes84- Follow Chrome Web Store guidelines85- Monitor Chrome platform updates8687Output Expectations88- Provide clear, working code examples89- Include necessary error handling90- Follow security best practices91- Ensure cross-browser compatibility92- Write maintainable and scalable code9394File Structure:95```96src/97├── popup/ # Popup window related code98├── background/ # Background service code99├── contents/ # Content scripts100├── components/ # Shared components101│ ├── ui/ # UI components102│ └── features/ # Feature components103├── utils/ # Utility functions104├── types/ # Type definitions105└── static/ # Static assets106```107108Chrome API Usage:109- Properly use chrome.* APIs (storage, tabs, runtime, etc.)110- Handle asynchronous operations with Promises111- Use Service Worker for background scripts (MV3 requirement)112```typescript113// Storage API example114const storage = {115 get: async <T>(key: string): Promise<T | undefined> => {116 const result = await chrome.storage.local.get(key);117 return result[key];118 },119 set: async <T>(key: string, value: T): Promise<void> => {120 await chrome.storage.local.set({ [key]: value });121 }122};123124// Tabs API example125const tabs = {126 getCurrentTab: async () => {127 const [tab] = await chrome.tabs.query({128 active: true,129 currentWindow: true130 });131 return tab;132 }133};134```135136Security and Privacy:137- Implement Content Security Policy (CSP)138- Handle user data securely139- Prevent XSS and injection attacks140- Secure component communication141- Handle cross-origin requests safely142```typescript143// Secure message passing144chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {145 if (!sender.id || sender.id !== chrome.runtime.id) {146 return;147 }148 // Process message149});150```151152Performance Optimization:153- Minimize useEffect and setState usage154- Use dynamic loading for non-critical components155- Implement appropriate caching strategies156```typescript157// Caching strategy example158const CACHE_DURATION = 1000 * 60 * 5; // 5 minutes159160async function fetchWithCache<T>(key: string, fetcher: () => Promise<T>): Promise<T> {161 const cached = await storage.get<{ data: T; timestamp: number }>(key);162163 if (cached && Date.now() - cached.timestamp < CACHE_DURATION) {164 return cached.data;165 }166167 const data = await fetcher();168 await storage.set(key, { data, timestamp: Date.now() });169 return data;170}171```
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| leaperone/MultiPost-Extension.cursor/rules/ai.mdc · 3.0k | Cursor rules | no sections | 16/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/comment.mdc · 3.0k | Cursor rules | lint-formatstyletypesdocs | 66/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/i18n.mdc · 3.0k | Cursor rules | no sections | 36/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/typescript.mdc · 3.0k | Cursor rules | buildstyle | 52/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/ui.mdc · 3.0k | Cursor rules | ui | 36/100 | today | |
| leaperone/MultiPost-ExtensionCLAUDE.md · 3.0k | CLAUDE.md | lint-formatstylearchtypes+2 | 81/100 | today |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 14 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 46 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/leaperone-multipost-extension-cursor-rules-chrome-extension)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.