Cline rules
.clinerules/04-security.mdCline rules
Quality
65/100
Scores the file, not the repository.Length
488 words
15 headings · 5 code blocksRepository
17
— · pushed 200 days agoLast changed
3 days ago
First indexed 3 days ago.1# Security Guidelines23## API Key and Credential Management4**CRITICAL**: Never commit sensitive data to version control.56### Environment Variable Patterns7```bash8# Required AI service keys9OPENAI_API_KEY=sk-...10ANTHROPIC_API_KEY=sk-ant-...11HUGGINGFACE_API_KEY=hf_...1213# Optional service configurations14AI_MODEL_TEMPERATURE=0.715AI_MAX_TOKENS=204816AI_RATE_LIMIT_PER_HOUR=10017```1819### Security Best Practices20- Use `.env.local` for development secrets (never commit)21- Create `.env.example` with dummy values to document required variables22- Implement API key rotation strategies for production deployments23- Use secure key management services (AWS Secrets Manager, Azure Key Vault, etc.)24- Validate API keys on application startup and fail fast if missing2526## AI Service Security2728### Input Validation29Always validate and sanitize inputs to AI services:30```javascript31// Validate prompt length and content32function validatePrompt(prompt) {33 if (!prompt || typeof prompt !== 'string') {34 throw new Error('Invalid prompt: must be a non-empty string');35 }3637 if (prompt.length > 10000) {38 throw new Error('Prompt too long: maximum 10,000 characters');39 }4041 // Remove potential injection attacks42 const sanitized = prompt.replace(/[<>]/g, '');43 return sanitized;44}45```4647### Output Sanitization48Sanitize AI service responses before displaying to users:49```javascript50// Sanitize AI responses for display51function sanitizeAIResponse(response) {52 // Remove potential script injections53 return response54 .replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '')55 .replace(/javascript:/gi, '')56 .trim();57}58```5960### Rate Limiting and Usage Control61Implement safeguards against API abuse:62```javascript63// Example rate limiting implementation64const rateLimiter = new Map();6566function checkRateLimit(userId, maxRequests = 10, windowMs = 60000) {67 const now = Date.now();68 const userRequests = rateLimiter.get(userId) || [];6970 // Remove old requests outside the window71 const validRequests = userRequests.filter(time => now - time < windowMs);7273 if (validRequests.length >= maxRequests) {74 throw new Error('Rate limit exceeded');75 }7677 validRequests.push(now);78 rateLimiter.set(userId, validRequests);79}80```8182## Data Privacy and Compliance8384### User Data Handling85- Never log sensitive user inputs or AI responses86- Implement data retention policies for AI interactions87- Consider GDPR and other privacy regulations88- Provide user controls for data deletion8990### AI Service Data Policies91- Understand data usage policies of each AI provider92- Implement opt-out mechanisms for data training93- Consider on-premise or private cloud AI solutions for sensitive data94- Document data flow and processing for compliance audits9596## Error Handling Security97Avoid exposing sensitive information in error messages:98```javascript99// Secure error handling100try {101 const response = await aiService.complete(prompt);102 return response;103} catch (error) {104 // Log detailed error internally105 console.error('AI service error:', error);106107 // Return generic error to user108 throw new Error('AI service temporarily unavailable');109}110```111112## Production Security Checklist113- [ ] All API keys stored in secure environment variables114- [ ] Input validation implemented for all AI service calls115- [ ] Output sanitization applied to AI responses116- [ ] Rate limiting configured for API endpoints117- [ ] Error messages don't expose sensitive information118- [ ] Data retention policies documented and implemented119- [ ] Security headers configured for web applications120- [ ] HTTPS enforced for all AI service communications
Also in HerringtonDarkholme/megarepo
Diff this repo’s formatsOne 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 |
|---|---|---|---|---|---|
| HerringtonDarkholme/megarepo.clinerules/03-documentation.md · 17 | Cline rules | securitydocs | 50/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.cursor/rules/code-quality.mdc · 17 | Cursor rules | teststyletypestesting-strategy+3 | 58/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.cursor/rules/project-structure.mdc · 17 | Cursor rules | stylearchui | 66/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.github/copilot-instructions.md · 17 | Copilot instructions | setupbuildtestlint-format+7 | 100/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.clinerules/README.md · 17 | Cline rules | archdo-not | 55/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.clinerules/01-core-principles.md · 17 | Cline rules | gitsecuritydeploymentdo-not+1 | 51/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.clinerules/02-development.md · 17 | Cline rules | setupbuildteststyle+3 | 92/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.cursor/rules/ai-development.mdc · 17 | Cursor rules | stylesecuritydependenciesapi+1 | 54/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.cursor/rules/prompt-engineering.mdc · 17 | Cursor rules | teststylearch | 70/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.cursor/rules/security.mdc · 17 | Cursor rules | setupstylesecuritydatabase+1 | 54/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.cursor/rules/testing-advanced.mdc · 17 | Cursor rules | teststyletesting-strategyperformance | 58/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.cursorrules · 17 | .cursorrules | setupbuildtestlint-format+13 | 96/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.windsurf/rules/README.md · 17 | Windsurf rules | typesdo-not | 51/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.windsurf/rules/ai-development-core.md · 17 | Windsurf rules | do-notdocs | 45/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.windsurf/rules/ai-optimization.md · 17 | Windsurf rules | no sections | 30/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.windsurf/rules/documentation-standards.md · 17 | Windsurf rules | docs | 30/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.windsurf/rules/security-api-keys.md · 17 | Windsurf rules | securityapido-not | 37/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.windsurf/rules/testing-ai-components.md · 17 | Windsurf rules | testtesting-strategy | 34/100 | 3 days ago | |
| HerringtonDarkholme/megarepo.windsurf/rules/typescript-javascript.md · 17 | Windsurf rules | styletypesdo-not | 49/100 | 3 days ago | |
| HerringtonDarkholme/megarepoAGENTS.md · 17 | AGENTS.md | archagent-behaviour | 52/100 | 3 days ago |
Diff against .clinerules/03-documentation.md Diff against .cursor/rules/code-quality.mdc Diff against .cursor/rules/project-structure.mdc Diff against .github/copilot-instructions.md Diff against .clinerules/README.md Diff against .clinerules/01-core-principles.md Diff against .clinerules/02-development.md Diff against .cursor/rules/ai-development.mdc Diff against .cursor/rules/prompt-engineering.mdc Diff against .cursor/rules/security.mdc Diff against .cursor/rules/testing-advanced.mdc Diff against .cursorrules Diff against .windsurf/rules/README.md Diff against .windsurf/rules/ai-development-core.md Diff against .windsurf/rules/ai-optimization.md Diff against .windsurf/rules/documentation-standards.md Diff against .windsurf/rules/security-api-keys.md Diff against .windsurf/rules/testing-ai-components.md Diff against .windsurf/rules/typescript-javascript.md Diff against AGENTS.md
