Complexity Check Skill
Purpose: Analyze a prompt and return an integer score from 1-50 based on task complexity.
Input: prompt (string) - The user's request
Output: score (integer) - Complexity score from 1-50
How to Execute
This is a TEXT ANALYSIS task - parse keywords from the user's prompt as your sole input:
- Scan the prompt text (case-insensitive) for keywords in the algorithm below
- Apply each step of the scoring algorithm sequentially
- Return ONLY:
score: <int>
- Complete in under 200 tokens
Expected output format:
score: 15
Always focus on the prompt text as your only input. Work directly with prompt content for keyword-based analysis and scoring.
Scoring Algorithm
Step 1: Keyword Detection
Scan prompt (case-insensitive) for keywords and add points:
| Category |
Points |
Keywords |
| Ultra-Complex |
+8 |
enterprise, architecture, monorepo, system-wide, migration, standardize across |
| Complex |
+6 |
refactor, standardize, implement, build service, integrate |
| Standard |
+4 |
create, audit, configure, feature, add, update |
| Simple |
+2 |
fix, debug, explain, help, check, what is |
Rules:
- Each keyword matched adds its points
- Multiple matches in same category still add (e.g., "audit and configure" = +8)
Step 2: Scope Multipliers
Add points for scope indicators:
| Indicator |
Points |
Detection Patterns |
| Multi-package |
+5 |
all packages, across, every, monorepo, plural nouns |
| Database |
+5 |
database, schema, migration, prisma, sql |
| Config management |
+5 |
config, configuration, settings, .json, .yaml |
| Security-critical |
+5 |
auth, security, credential, token, password, encrypt |
| API surface |
+5 |
api, endpoint, rest, graphql, service |
| Testing scope |
+3 |
test, coverage, e2e, integration test |
Step 3: Quantity Detection
Add points for explicit quantities:
| Pattern |
Points |
all / every / entire |
+10 |
| Number > 5 (e.g., "10 files") |
+5 |
| Number 2-5 |
+3 |
| Single/specific file mentioned |
+0 |
Step 4: Simplicity Adjustment
Reduce score when simplifying words indicate lower complexity:
| Pattern |
Points |
just / only / simple |
-3 |
quick / small |
-2 |
| Single file path mentioned |
-2 |
Step 5: Clamp Result
- Minimum: 1 (always at least 1, never zero or negative)
- Maximum: 50 (cap for sanity)
Step 6: Sanity Check
After calculating, verify the score makes sense:
- Does a score of 5 feel right for "fix typo in README"? (Correct)
- Does a score of 35 feel right for "explain what this function does"? (Recalibrate down if needed)
- Does a score of 8 feel right for "migrate entire database schema across all services"? (Recalibrate up if needed)
If adjustment needed: Override calculated score with sensible value aligned with actual task scope.
Examples
Example 1: Score 2
Prompt: "fix the typo in README.md"
"fix" = +2
Single file = -2
Total = 0 -> clamped to 1
Example 2: Score 9
Prompt: "audit the eslint config"
"audit" = +4
"config" = +5
Total = 9
Example 3: Score 19
Prompt: "implement JWT authentication API with tests"
"implement" = +6
"auth" = +5
"api" = +5
"test" = +3
Total = 19
Example 4: Score 34
Prompt: "standardize error handling across all microservices in the monorepo"
"standardize" = +6
"monorepo" = +8
"across" = +5
"all" = +10
"service" = +5
Total = 34
Example 5: Score 1 (Negation)
Prompt: "just quickly fix the simple auth bug"
"fix" = +2
"auth" = +5
"just" = -3
"quickly" = -2
"simple" = -3
Total = -1 -> clamped to 1
1---2name: complexity-check-23description: Calculates a complexity score (1-50) from a user prompt. Analyzes keywords, scope indicators, quantity modifiers, and negation patterns to determine task complexity. Returns an integer used by commands for routing decisions.4---5
6# Complexity Check Skill
7
8**Purpose:** Analyze a prompt and return an integer score from 1-50 based on task complexity.
9
10**Input:** `prompt` (string) - The user's request
11
12**Output:** `score` (integer) - Complexity score from 1-50
13
14---
15
16## How to Execute
17
18This is a TEXT ANALYSIS task - parse keywords from the user's prompt as your sole input:
19
201. Scan the prompt text (case-insensitive) for keywords in the algorithm below
212. Apply each step of the scoring algorithm sequentially
223. Return ONLY: `score: <int>`
234. Complete in under 200 tokens
24
25**Expected output format:**
26
27```
28score: 15
29```
30
31Always focus on the prompt text as your only input. Work directly with prompt content for keyword-based analysis and scoring.
32
33---
34
35## Scoring Algorithm
36
37### Step 1: Keyword Detection
38
39Scan prompt (case-insensitive) for keywords and add points:
40
41| Category | Points | Keywords |
42| ------------- | ------ | ------------------------------------------------------------------------------------------ |
43| Ultra-Complex | +8 | `enterprise`, `architecture`, `monorepo`, `system-wide`, `migration`, `standardize across` |
44| Complex | +6 | `refactor`, `standardize`, `implement`, `build service`, `integrate` |
45| Standard | +4 | `create`, `audit`, `configure`, `feature`, `add`, `update` |
46| Simple | +2 | `fix`, `debug`, `explain`, `help`, `check`, `what is` |
47
48**Rules:**
49
50- Each keyword matched adds its points
51- Multiple matches in same category still add (e.g., "audit and configure" = +8)
52
53---
54
55### Step 2: Scope Multipliers
56
57Add points for scope indicators:
58
59| Indicator | Points | Detection Patterns |
60| ----------------- | ------ | ---------------------------------------------------------------- |
61| Multi-package | +5 | `all packages`, `across`, `every`, `monorepo`, plural nouns |
62| Database | +5 | `database`, `schema`, `migration`, `prisma`, `sql` |
63| Config management | +5 | `config`, `configuration`, `settings`, `.json`, `.yaml` |
64| Security-critical | +5 | `auth`, `security`, `credential`, `token`, `password`, `encrypt` |
65| API surface | +5 | `api`, `endpoint`, `rest`, `graphql`, `service` |
66| Testing scope | +3 | `test`, `coverage`, `e2e`, `integration test` |
67
68---
69
70### Step 3: Quantity Detection
71
72Add points for explicit quantities:
73
74| Pattern | Points |
75| ------------------------------ | ------ |
76| `all` / `every` / `entire` | +10 |
77| Number > 5 (e.g., "10 files") | +5 |
78| Number 2-5 | +3 |
79| Single/specific file mentioned | +0 |
80
81---
82
83### Step 4: Simplicity Adjustment
84
85Reduce score when simplifying words indicate lower complexity:
86
87| Pattern | Points |
88| -------------------------- | ------ |
89| `just` / `only` / `simple` | -3 |
90| `quick` / `small` | -2 |
91| Single file path mentioned | -2 |
92
93---
94
95### Step 5: Clamp Result
96
97- Minimum: 1 (always at least 1, never zero or negative)
98- Maximum: 50 (cap for sanity)
99
100---
101
102### Step 6: Sanity Check
103
104After calculating, verify the score makes sense:
105
106- Does a score of 5 feel right for "fix typo in README"? (Correct)
107- Does a score of 35 feel right for "explain what this function does"? (Recalibrate down if needed)
108- Does a score of 8 feel right for "migrate entire database schema across all services"? (Recalibrate up if needed)
109
110**If adjustment needed:** Override calculated score with sensible value aligned with actual task scope.
111
112---
113
114## Examples
115
116### Example 1: Score 2
117
118```
119Prompt: "fix the typo in README.md"
120
121 "fix" = +2
122 Single file = -2
123 Total = 0 -> clamped to 1
124```
125
126### Example 2: Score 9
127
128```
129Prompt: "audit the eslint config"
130
131 "audit" = +4
132 "config" = +5
133 Total = 9
134```
135
136### Example 3: Score 19
137
138```
139Prompt: "implement JWT authentication API with tests"
140
141 "implement" = +6
142 "auth" = +5
143 "api" = +5
144 "test" = +3
145 Total = 19
146```
147
148### Example 4: Score 34
149
150```
151Prompt: "standardize error handling across all microservices in the monorepo"
152
153 "standardize" = +6
154 "monorepo" = +8
155 "across" = +5
156 "all" = +10
157 "service" = +5
158 Total = 34
159```
160
161### Example 5: Score 1 (Negation)
162
163```
164Prompt: "just quickly fix the simple auth bug"
165
166 "fix" = +2
167 "auth" = +5
168 "just" = -3
169 "quickly" = -2
170 "simple" = -3
171 Total = -1 -> clamped to 1
172```