

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1234567# Core Coding Principles89## 1. Async-First Development1011- **ALWAYS** use `async def` for functions that perform I/O operations12- Use `await` for API calls, database queries, file operations, HTTP requests13- Leverage `asyncio.gather()` for concurrent operations14- Use `async with` for context managers (UniFi client, Redis connections)15- **NEVER** use blocking synchronous calls in async contexts16- Consider using `anyio.to_thread.run_sync()` for CPU-intensive operations1718## 2. Type Safety and Validation1920- **ALWAYS** provide type hints for all function parameters and return values21- Use Pydantic models for complex input/output structures22- Prefer explicit types over `Any` or untyped dicts23- Use `Optional[T]` or `T | None` for nullable values24- Leverage Pydantic's validation features (Field, validator decorators)25- Run mypy before committing changes2627## 3. Security-First Design2829- **CRITICAL**: All mutating operations MUST require `confirm=True` parameter30- Implement `dry_run=True` mode for preview-before-apply31- Log all operations to `audit.log` with context (user, timestamp, parameters)32- Use password masking utilities for sensitive data in logs33- Validate and sanitize all user inputs34- Follow least-privilege principle for API access35- Never commit API keys, passwords, or secrets to version control3637## 4. Comprehensive Testing3839- Write tests FIRST for new features (TDD approach)40- Target 80%+ code coverage for all new code41- Use pytest fixtures for common setup42- Mock external dependencies (UniFi API, Redis) in unit tests43- Mark integration tests with `@pytest.mark.integration`44- Test edge cases, error conditions, and validation failures45- **NEVER** commit code that breaks existing tests4647## 5. Documentation Standards4849- Write clear, comprehensive docstrings for all public functions50- Use Google-style docstring format51- Include Args, Returns, Raises sections52- Provide usage examples in docstrings for complex tools53- Update API.md when adding new tools or changing signatures54- Keep README.md current with project capabilities55
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 |
|---|---|---|---|---|---|
| enuno/unifi-mcp-server.claude/skills/fastmcp/CLAUDE.md · 226 | CLAUDE.md | no sections | 25/100 | today | |
| enuno/unifi-mcp-server.clinerules · 226 | Cline rules | setuptestlint-formatstyle+10 | 96/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/common-mistakes.mdc · 226 | Cursor rules | testlint-formatgitdo-not | 93/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/environment-setup.mdc · 226 | Cursor rules | setupgitsecurityapi+2 | 57/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/mcp-tools.mdc · 226 | Cursor rules | no sections | 45/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/project-context.mdc · 226 | Cursor rules | testlint-formatstylearch+2 | 73/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/unifi-api.mdc · 226 | Cursor rules | setupsecurityapiui+1 | 62/100 | today | |
| enuno/unifi-mcp-server.cursor/rules/workflow.mdc · 226 | Cursor rules | testlint-formatgitagent-behaviour | 86/100 | today | |
| enuno/unifi-mcp-server.cursorrules · 226 | .cursorrules | setuptestlint-formatstyle+7 | 93/100 | today | |
| enuno/unifi-mcp-serverAGENTS.md · 226 | AGENTS.md | setuptestlint-formatstyle+10 | 84/100 | today | |
| enuno/unifi-mcp-serverCLAUDE.md · 226 | CLAUDE.md | testlint-formatarchtesting-strategy+4 | 90/100 | today | |
| enuno/unifi-mcp-serverGEMINI.md · 226 | GEMINI.md | setuptestlint-formatstyle+8 | 89/100 | today |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 46 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| nerds-odd-e/doughnut.cursor/rules/cli.mdc · 49 | Cursor rules | setupbuildteststyle+4 | 96/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/github-actions-testing.mdc · 121 | Cursor rules | setupbuildstylearch+4 | 93/100 | 14 days ago | |
| enuno/unifi-mcp-server.cursor/rules/common-mistakes.mdc · 226 | Cursor rules | testlint-formatgitdo-not | 93/100 | today | |
| iloveitaly/llm-ide-rules.cursor/rules/general.mdc · 13 | Cursor rules | teststyledo-notagent-behaviour+1 | 92/100 | 14 days ago | |
| pr-pm/prpm.cursor/rules/creating-agents-md.mdc · 121 | Cursor rules | testlint-formatstylearch+7 | 92/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/enuno-unifi-mcp-server-cursor-rules-core-principles)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.