init
This commit is contained in:
113
.opencode/skills/ck-scenario/SKILL.md
Normal file
113
.opencode/skills/ck-scenario/SKILL.md
Normal file
@@ -0,0 +1,113 @@
|
||||
---
|
||||
name: ck:scenario
|
||||
description: "Generate comprehensive edge cases and test scenarios by decomposing features across 12 dimensions. Use before implementation or testing to catch issues early."
|
||||
argument-hint: "<file path or feature description>"
|
||||
metadata:
|
||||
author: claudekit
|
||||
attribution: "Scenario exploration pattern adapted from autoresearch by Udit Goenka (MIT)"
|
||||
license: MIT
|
||||
version: "1.0.0"
|
||||
---
|
||||
|
||||
# ck:scenario — Edge Case & Scenario Explorer
|
||||
|
||||
Decompose any feature or code path across 12 dimensions to surface edge cases, risks, and test targets before implementation begins.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Before implementing complex or stateful features
|
||||
- Before writing tests (generates test targets)
|
||||
- Risk assessment during planning or code review
|
||||
- API design review — surface contract edge cases early
|
||||
|
||||
## When NOT to Use
|
||||
|
||||
- Trivial single-line changes or cosmetic UI tweaks
|
||||
- Already well-tested, stable code with no recent modifications
|
||||
- Pure configuration changes with no logic paths
|
||||
|
||||
---
|
||||
|
||||
## 12 Decomposition Dimensions
|
||||
|
||||
Not all 12 apply to every feature. Identify relevant dimensions first, then generate scenarios only for those.
|
||||
|
||||
| # | Dimension | What to Look For |
|
||||
|---|-----------|------------------|
|
||||
| 1 | **User Types** | admin, guest, banned, new user, power user, bot/scraper |
|
||||
| 2 | **Input Extremes** | empty, null, max length, unicode, special chars, SQL/script injection |
|
||||
| 3 | **Timing** | concurrent access, race conditions, timeout, slow network, retry storms |
|
||||
| 4 | **Scale** | 0 items, 1 item, 1M items, pagination boundary, cursor wrap |
|
||||
| 5 | **State Transitions** | first use, mid-flow abort, resume after crash, partial completion |
|
||||
| 6 | **Environment** | mobile/low-end CPU, no JS, screen reader, proxy/VPN, different timezone/locale |
|
||||
| 7 | **Error Cascades** | DB down, API timeout, disk full, OOM, network partition, partial write |
|
||||
| 8 | **Authorization** | expired token, wrong role, shared/public link, CORS, CSRF, privilege escalation |
|
||||
| 9 | **Data Integrity** | duplicate entries, orphan references, encoding mismatch, concurrent schema migration |
|
||||
| 10 | **Integration** | webhook replay, API version mismatch, third-party outage, contract drift |
|
||||
| 11 | **Compliance** | GDPR deletion request, audit logging gap, data retention, accidental PII exposure |
|
||||
| 12 | **Business Logic** | edge pricing (zero/negative), coupon stacking, refund after partial delivery, free tier limits |
|
||||
|
||||
---
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Read** target file(s) or parse feature description from argument
|
||||
2. **Filter dimensions** — mark which of the 12 apply; skip irrelevant ones explicitly
|
||||
3. **Generate 3–5 scenarios** per relevant dimension
|
||||
4. **Categorize severity** — Critical / High / Medium / Low
|
||||
5. **Output** as structured table (see format below)
|
||||
6. **Summarize** total scenario count by severity
|
||||
|
||||
### Severity Criteria
|
||||
|
||||
| Level | Meaning |
|
||||
|-------|---------|
|
||||
| **Critical** | Data loss, security breach, auth bypass, silent corruption |
|
||||
| **High** | Feature broken for a subset of users, data inconsistency |
|
||||
| **Medium** | Degraded UX, recoverable error not surfaced to user |
|
||||
| **Low** | Minor visual glitch, non-blocking warning |
|
||||
|
||||
---
|
||||
|
||||
## Output Format
|
||||
|
||||
```
|
||||
## Scenario Report: [target]
|
||||
|
||||
Dimensions analyzed: [list]
|
||||
Dimensions skipped: [list + reason]
|
||||
|
||||
| # | Dimension | Scenario | Severity | Expected Behavior |
|
||||
|---|-----------|----------|----------|-------------------|
|
||||
| 1 | Input Extremes | Empty string for required name field | High | Return 400 with field error |
|
||||
| 2 | Authorization | Expired JWT accessing protected route | Critical | Redirect to login, invalidate session |
|
||||
| 3 | Timing | Two users submit same form simultaneously | High | Idempotency key or conflict error |
|
||||
|
||||
### Summary
|
||||
- Critical: N
|
||||
- High: N
|
||||
- Medium: N
|
||||
- Low: N
|
||||
- Total: N scenarios across X dimensions
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Integration with Other Skills
|
||||
|
||||
| Next Step | Skill | How |
|
||||
|-----------|-------|-----|
|
||||
| Generate test cases from scenarios | `ck:test` | Pass scenario table as input context |
|
||||
| Inform implementation plan risks | `ck:plan` | Paste Critical/High rows into risk assessment |
|
||||
| Deep persona debate on top risks | `ck:predict` | Feed Critical scenarios as the change proposal |
|
||||
|
||||
---
|
||||
|
||||
## Example Invocations
|
||||
|
||||
```
|
||||
/ck:scenario src/api/payment.ts
|
||||
/ck:scenario "User registration with OAuth providers"
|
||||
/ck:scenario src/middleware/auth.ts
|
||||
/ck:scenario "Add multi-tenancy to the database layer"
|
||||
```
|
||||
Reference in New Issue
Block a user