risk-register
π―Skillfrom zbruhnke/claude-code-starter
Systematically documents and assesses risks for sensitive changes, providing a structured approach to identifying, mitigating, and monitoring potential issues during software modifications.
Installation
npx skills add https://github.com/zbruhnke/claude-code-starter --skill risk-registerSkill Details
Document risks for changes touching auth, data, or migrations. Lists top risks, how to test/monitor them, and rollback strategy.
Overview
# Risk Register
For changes that touch sensitive areas (authentication, data, migrations, infrastructure), document the risks explicitly. This is what senior developers do naturally - making it explicit ensures nothing is overlooked.
When to Use
Use this skill when your change involves:
- Authentication/Authorization - Login, sessions, permissions, tokens
- User Data - PII, passwords, payment info, user content
- Data Migrations - Schema changes, data transformations, backfills
- External Integrations - Third-party APIs, webhooks, OAuth
- Infrastructure - Deployment, scaling, configuration changes
- Breaking Changes - API changes, behavioral changes, deprecations
Quick Start
```
/risk-register
```
Or specify the change:
```
/risk-register "Adding password reset functionality"
```
The Risk Register Template
For each risky change, complete this register:
```markdown
# Risk Register: [Feature/Change Name]
Summary
Brief description of what's changing and why it's sensitive.
Top 3 Risks
Risk 1: [Name]
Likelihood: Low / Medium / High
Impact: Low / Medium / High / Critical
Description:
What could go wrong?
Mitigation:
How are we preventing this?
Detection:
How would we know if this happened?
Response:
What do we do if it happens?
---
Risk 2: [Name]
...
Risk 3: [Name]
...
Testing Strategy
Pre-deployment
- [ ] Unit tests cover the change
- [ ] Integration tests for critical paths
- [ ] Manual testing of edge cases
- [ ] Security review completed
Post-deployment
- [ ] Smoke test in production
- [ ] Monitor error rates
- [ ] Watch for anomalies in [specific metrics]
- [ ] Verify [specific functionality] works
Monitoring & Alerting
What should we watch after deployment?
| Metric | Normal Range | Alert Threshold | Response |
|--------|--------------|-----------------|----------|
| Login failure rate | < 5% | > 10% | Check auth service |
| API error rate | < 1% | > 5% | Investigate errors |
| ... | ... | ... | ... |
Rollback Strategy
Can we rollback?
Yes / Partial / No (explain why)
Rollback steps
- [Step 1]
- [Step 2]
- [Step 3]
Rollback time estimate
[X minutes/hours]
Data implications
What happens to data created after deployment if we rollback?
Approval
- [ ] Engineer reviewed risks
- [ ] Security reviewed (if auth/data)
- [ ] Stakeholder aware of risks
```
Risk Categories
Authentication Risks
| Risk | Impact | Common Mitigations |
|------|--------|-------------------|
| Session hijacking | Critical | Secure cookies, HTTPS, token rotation |
| Credential stuffing | High | Rate limiting, MFA, breach detection |
| Token leakage | Critical | Short expiry, secure storage, no logging |
| Privilege escalation | Critical | Strict authz checks, principle of least privilege |
| Account takeover | Critical | Email verification, suspicious activity alerts |
Data Risks
| Risk | Impact | Common Mitigations |
|------|--------|-------------------|
| Data loss | Critical | Backups, soft deletes, transaction safety |
| Data corruption | Critical | Validation, constraints, idempotency |
| Data leakage | Critical | Access controls, encryption, audit logs |
| Privacy violation | High | PII handling, consent, data minimization |
| Compliance breach | High | Audit trails, retention policies |
Migration Risks
| Risk | Impact | Common Mitigations |
|------|--------|-------------------|
| Failed migration | High | Dry runs, backups, reversible migrations |
| Data inconsistency | High | Validation checks, reconciliation |
| Downtime | Medium | Rolling deploys, feature flags |
| Performance degradation | Medium | Index analysis, query optimization |
Example Risk Register
```markdown
# Risk Register: Password Reset Feature
Summary
Adding password reset via email. Touches auth system, sends emails with tokens,
allows password changes without current password.
Top 3 Risks
Risk 1: Token Theft/Replay
Likelihood: Medium
Impact: Critical
Description:
Reset tokens could be intercepted or reused to take over accounts.
Mitigation:
- Tokens expire in 1 hour
- Single use (invalidated after use)
- Tokens are cryptographically random (32 bytes)
- HTTPS only
Detection:
- Alert on multiple reset attempts for same user
- Log all password resets with IP
Response:
- Invalidate all tokens for affected user
- Force password change
- Notify user of suspicious activity
---
Risk 2: Email Enumeration
Likelihood: High
Impact: Medium
Description:
Attackers could use the reset form to discover which emails have accounts.
Mitigation:
- Same response for valid/invalid emails
- Rate limiting on reset endpoint
- CAPTCHA after 3 attempts
Detection:
- Monitor for high volume of reset requests
- Alert on requests from same IP for many emails
Response:
- Block IP temporarily
- Enable additional rate limiting
---
Risk 3: Token Logged/Exposed
Likelihood: Low
Impact: Critical
Description:
Reset token appears in logs, error messages, or URLs shared externally.
Mitigation:
- Token in POST body, not URL
- Logging excludes token field
- Error messages are generic
Detection:
- Grep logs for token patterns
- Review error handling
Response:
- Purge affected logs
- Rotate any exposed tokens
- Notify affected users
Testing Strategy
Pre-deployment
- [x] Unit tests for token generation, validation, expiry
- [x] Integration test for full reset flow
- [x] Test expired token rejection
- [x] Test reused token rejection
- [x] Security review of token handling
Post-deployment
- [ ] Smoke test: Complete reset flow in production
- [ ] Monitor email delivery rate
- [ ] Watch for spike in reset requests
Monitoring & Alerting
| Metric | Normal | Alert | Response |
|--------|--------|-------|----------|
| Reset requests/hour | < 100 | > 500 | Check for abuse |
| Reset completion rate | > 80% | < 50% | Check email delivery |
| Failed reset attempts | < 10% | > 30% | Check token generation |
Rollback Strategy
Can we rollback?
Yes - feature flag controls access to reset endpoint.
Rollback steps
- Disable
PASSWORD_RESET_ENABLEDfeature flag - Invalidate all outstanding reset tokens
- Communicate to support team
Rollback time estimate
~5 minutes (feature flag toggle)
Data implications
Outstanding reset tokens will be invalidated. Users mid-reset will need to retry.
```
Integration with Wiggum
When wiggum detects changes to auth, data, or migrations, it should prompt:
```
This change touches [auth/data/migrations].
Should we create a risk register? (y/n)
```
If yes, use this skill to document risks before proceeding.
Remember
- Be specific - "data loss" is too vague; "orphaned records if parent deleted" is actionable
- Be honest - If you can't roll back, say so
- Think like an attacker - What would you try if you wanted to break this?
- Think like ops - How would you know something is wrong at 3am?
The goal isn't to prevent all risks - it's to know what the risks are and have a plan.
More from this repository7
Installs a pre-commit review hook that forces code review by showing changes, detecting potential issues, and requiring user confirmation before committing.
explain-code skill from zbruhnke/claude-code-starter
Refreshes CLAUDE.md by analyzing recent code changes, identifying new patterns, and updating project context for future Claude Code sessions.
Systematically reviews merge requests by comparing branches, analyzing changes, summarizing key modifications, and providing actionable feedback for code improvements.
Systematically verifies code quality by checking for TODOs, debug code, documentation, test coverage, and dependency health before releasing.
Autonomously implements a project from spec, enforcing quality gates, incrementally committing code, and maintaining comprehensive documentation.
Refactors code to enhance readability, reduce complexity, and eliminate duplication while preserving original functionality.