opencode-skills-collection 3.0.28 → 3.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +11 -1
- package/bundled-skills/bumblebee/SKILL.md +186 -0
- package/bundled-skills/bumblebee/scripts/render_report.py +362 -0
- package/bundled-skills/complexity-cuts/SKILL.md +254 -0
- package/bundled-skills/decision-navigator/SKILL.md +238 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/invariant-guard/SKILL.md +307 -0
- package/bundled-skills/lemmaly/SKILL.md +236 -0
- package/bundled-skills/mathguard/SKILL.md +269 -0
- package/bundled-skills/sendblue/sendblue-api/SKILL.md +194 -0
- package/bundled-skills/sendblue/sendblue-cli/SKILL.md +145 -0
- package/bundled-skills/sendblue/sendblue-notify/SKILL.md +173 -0
- package/bundled-skills/sendblue/textme/SKILL.md +232 -0
- package/package.json +1 -1
- package/skills_index.json +220 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: complexity-cuts
|
|
3
|
+
description: "Lower Big-O on existing code via a one-transformation-at-a-time playbook with verify-revert-stop. For new code use lemmaly; for math-level wins escalate to mathguard."
|
|
4
|
+
risk: safe
|
|
5
|
+
source: community
|
|
6
|
+
source_repo: morsechimwai/lemmaly
|
|
7
|
+
source_type: community
|
|
8
|
+
date_added: "2026-05-26"
|
|
9
|
+
author: morsechimwai
|
|
10
|
+
tags: [algorithms, big-o, refactoring, optimization, performance, n-plus-one]
|
|
11
|
+
tools: [claude-code, antigravity, cursor, gemini-cli, codex-cli]
|
|
12
|
+
license: "Apache-2.0"
|
|
13
|
+
license_source: "https://github.com/morsechimwai/lemmaly/blob/main/LICENSE"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# complexity-cuts — Lower Big-O on Existing Code
|
|
17
|
+
|
|
18
|
+
`lemmaly` prevents bad complexity before code is written. **complexity-cuts** fixes it after the fact: code already exists, it works, but its time or space complexity is worse than necessary.
|
|
19
|
+
|
|
20
|
+
**Violating the letter of these rules is violating the spirit of the skill.** Adapting "just a little" is how a faster-but-wrong rewrite ships.
|
|
21
|
+
|
|
22
|
+
## When to Use This Skill
|
|
23
|
+
|
|
24
|
+
Use **complexity-cuts** when refactoring existing code that has poor Big-O:
|
|
25
|
+
|
|
26
|
+
- Nested loops, `O(n²)` or worse scans, repeated work, redundant allocations, blown memory.
|
|
27
|
+
- Stated symptoms: "this is slow on large inputs", "times out", "OOM", "too much memory", "reduce complexity", "optimize this algorithm".
|
|
28
|
+
- N+1 query patterns in ORMs (Prisma, Drizzle, SQLAlchemy, Django, ActiveRecord).
|
|
29
|
+
- `await` inside `for` over independent items causing serial latency.
|
|
30
|
+
|
|
31
|
+
For *preventing* bad complexity before code is written, use **`lemmaly`**. For math-level optimizations (Bloom, HLL, FFT, JL projection), escalate to **`mathguard`**.
|
|
32
|
+
|
|
33
|
+
## The Iron Law
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
NO TRANSFORMATION WITHOUT EXISTING TESTS GREEN BEFORE AND AFTER
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If the code has no tests, you write a characterization test first (golden input → current output). Then transform. Then verify the test still passes. If you skip this, the optimization can silently break callers — and faster-but-wrong is worse than slow-and-right.
|
|
40
|
+
|
|
41
|
+
## Non-negotiable rules
|
|
42
|
+
|
|
43
|
+
1. **State current and target Big-O before touching code.** In one line:
|
|
44
|
+
- Current: `time = O(?)`, `space = O(?)`
|
|
45
|
+
- Target: `time = O(?)`, `space = O(?)`
|
|
46
|
+
- Dominant input dimension (n = what, how large in practice)
|
|
47
|
+
|
|
48
|
+
If you cannot state current Big-O, you do not yet understand the code. Read more.
|
|
49
|
+
|
|
50
|
+
2. **Identify the bottleneck, do not guess.** Point to the exact line(s) responsible for the dominant term. Nested loop? Repeated linear scan? Recomputation? Allocation inside a hot loop? The fix lives there, not elsewhere.
|
|
51
|
+
|
|
52
|
+
3. **One transformation at a time, with a verify-revert-stop loop.** The loop is:
|
|
53
|
+
|
|
54
|
+
1. Apply exactly one transformation from the playbook.
|
|
55
|
+
2. Run the existing test suite (or the characterization test you wrote per the Iron Law).
|
|
56
|
+
3. If any test breaks: **revert immediately.** Do not patch the test. Do not patch around the failure. Revert.
|
|
57
|
+
4. Count reverts on this piece of code. If **3 reverts in a row**, STOP optimizing. The bottleneck is wrong, the transformation is wrong, or the code has invariants you have not modeled. Escalate to `invariant-guard` and write the missing contract — do not try a fourth transformation.
|
|
58
|
+
5. Only after a transformation lands green: pick the next one.
|
|
59
|
+
|
|
60
|
+
Stacked changes hide regressions. Patched tests hide regressions louder.
|
|
61
|
+
|
|
62
|
+
4. **Preserve semantics exactly.** Lower complexity must not change outputs, ordering guarantees, stability, or error behavior. If the optimization requires a semantic change (e.g. unordered output), call it out explicitly and confirm it is acceptable.
|
|
63
|
+
|
|
64
|
+
5. **No invented numbers.** Never write "10x faster" or "saves 200MB" without measuring. Write `<measured: TBD>` and move on, or actually measure with a representative input.
|
|
65
|
+
|
|
66
|
+
6. **Always report the measured speedup ratio after a transformation lands.** Once the new code is green, run a representative benchmark (same input, same machine, warm cache) and report `before → after` plus the ratio as `N× faster` (or `N× less memory`). One line, attached to the diff:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
p50: 186 ms → 1.1 ms (169× faster, n=20,000, 200 samples)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If you cannot measure (e.g. the win is purely asymptotic on inputs you don't have), say so explicitly: `asymptotic only, no measurement — O(n²) → O(n)`. Never silently skip this step.
|
|
73
|
+
|
|
74
|
+
## The transformation playbook
|
|
75
|
+
|
|
76
|
+
The vast majority of real-world Big-O wins come from a small set of moves. Try them in this order:
|
|
77
|
+
|
|
78
|
+
### Time-complexity reductions
|
|
79
|
+
|
|
80
|
+
| Smell | Fix | Typical win |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| `for x in A: if x in B` where B is list/array | Convert B to `Set`/`Map` once | O(n·m) → O(n+m) |
|
|
83
|
+
| Nested loop computing pairs/joins | Hash-join on the key; index by lookup field | O(n·m) → O(n+m) |
|
|
84
|
+
| Repeated `.find` / `.indexOf` / `.includes` inside a loop | Precompute index `Map<key, item>` outside loop | O(n^2) → O(n) |
|
|
85
|
+
| Repeated recomputation of same value | Memoize / cache by input key | O(n·f(n)) → O(n + f(n)) |
|
|
86
|
+
| Sort inside a loop | Sort once outside | O(n^2 log n) → O(n log n) |
|
|
87
|
+
| Linear scan for min/max/median repeatedly | Heap / sorted structure | O(n·k) → O(n log k) |
|
|
88
|
+
| Recursive recomputation (naive Fibonacci shape) | Memoize, or convert to iterative DP | exponential → O(n) |
|
|
89
|
+
| String concatenation in a loop (some langs) | Use builder / `join` / `array.push` then join | O(n^2) → O(n) |
|
|
90
|
+
| Repeated regex compile in loop | Compile once outside | constant-factor, large |
|
|
91
|
+
| Counting / grouping via nested loop | Single pass with `Counter` / `Map<k, count>` | O(n^2) → O(n) |
|
|
92
|
+
| Sliding-window written as nested loop | Two-pointer / windowed sum | O(n^2) → O(n) |
|
|
93
|
+
| Repeated prefix sums | Precompute prefix array, O(1) range queries | O(n·q) → O(n+q) |
|
|
94
|
+
| Pairwise distance / containment checks on intervals | Sort + sweep line | O(n^2) → O(n log n) |
|
|
95
|
+
| Top-K via full sort | Heap of size K | O(n log n) → O(n log k) |
|
|
96
|
+
| Repeated set membership in loop body | `Set` once, reuse | O(n·m) → O(n) |
|
|
97
|
+
| `await` inside a `for` over independent items | `Promise.all` / batched concurrency | wall-clock O(n·latency) → O(latency) |
|
|
98
|
+
| ORM query inside a loop (N+1) | `IN (...)` / `select_related` / bulk fetch | O(n) round-trips → O(1) |
|
|
99
|
+
|
|
100
|
+
### Space-complexity reductions
|
|
101
|
+
|
|
102
|
+
| Smell | Fix | Typical win |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| Materializing whole list/array just to iterate | Generator / iterator / stream | O(n) → O(1) |
|
|
105
|
+
| Building intermediate arrays via chained `.map().filter().map()` on huge data | Single-pass loop or lazy pipeline | k·O(n) → O(n) (often O(1) extra) |
|
|
106
|
+
| Caching every intermediate result of a recursion | Rolling window (keep last k states) | O(n) → O(k) |
|
|
107
|
+
| Storing parents/visited for graph traversal when only count needed | Bitset / counter only | O(n) → O(1) |
|
|
108
|
+
| Copying input to mutate | In-place mutation when caller allows | O(n) → O(1) |
|
|
109
|
+
| Reading entire file before processing | Stream line-by-line / chunked | O(file) → O(chunk) |
|
|
110
|
+
| Deep-clone for safety in a loop | Clone once, or use structural sharing / immutables | O(n·m) → O(n+m) |
|
|
111
|
+
| Holding references that prevent GC (closures, listeners, caches) | Bound the cache (LRU), remove listeners, scope closures tightly | unbounded → bounded |
|
|
112
|
+
| Loading full result set from DB | Cursor / pagination / streaming query | O(rows) → O(page) |
|
|
113
|
+
| `JSON.parse(JSON.stringify(x))` for cloning | `structuredClone` or targeted copy | O(n) work and allocation removed |
|
|
114
|
+
|
|
115
|
+
### When you cannot lower asymptotic Big-O
|
|
116
|
+
|
|
117
|
+
Sometimes O(n log n) really is the floor. Then move to constant-factor wins:
|
|
118
|
+
|
|
119
|
+
- Replace pointer-chasing structures with contiguous arrays (cache locality).
|
|
120
|
+
- Hoist invariants out of loops.
|
|
121
|
+
- Avoid allocation in the hot loop (reuse buffers).
|
|
122
|
+
- Prefer typed arrays / native containers over boxed objects for numeric work.
|
|
123
|
+
- Batch syscalls / I/O.
|
|
124
|
+
|
|
125
|
+
State explicitly: "Asymptotic floor is O(n log n); applying constant-factor optimizations only."
|
|
126
|
+
|
|
127
|
+
## Required workflow
|
|
128
|
+
|
|
129
|
+
For each piece of code you optimize:
|
|
130
|
+
|
|
131
|
+
1. **Measure or estimate current Big-O.** Write it down.
|
|
132
|
+
2. **Identify the bottleneck line(s).** Point at them.
|
|
133
|
+
3. **Pick one transformation from the playbook.** Name it.
|
|
134
|
+
4. **Apply it.** One change.
|
|
135
|
+
5. **Verify behavior.** Tests pass, or outputs match on a representative input.
|
|
136
|
+
6. **State new Big-O.** Time and space.
|
|
137
|
+
7. **Repeat if more wins exist and are worth the complexity cost.**
|
|
138
|
+
|
|
139
|
+
## Canonical example — workflow vs no-workflow
|
|
140
|
+
|
|
141
|
+
The same optimization with and without the verify-revert-stop loop.
|
|
142
|
+
|
|
143
|
+
**Bottleneck.** `getOrdersWithUsers()` runs 10s on 10k orders. Cause: `users.find(u => u.id === o.userId)` inside the map → O(n·m).
|
|
144
|
+
|
|
145
|
+
### Without the workflow — changes semantics AND patches the test
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
// No workflow: change semantics + the optimization in one go
|
|
149
|
+
export function getOrdersWithUsers(orders, users) {
|
|
150
|
+
const userById = Object.fromEntries(users.map(u => [u.id, u]));
|
|
151
|
+
return orders
|
|
152
|
+
.map(o => ({ ...o, user: userById[o.userId] }))
|
|
153
|
+
.filter(o => o.user); // silently drops orders whose user was deleted
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Faster, *and* changes the result set. Existing tests catch it — but the diff also "fixes" a flaky test by removing the assertion that checked the old behavior. Ships green. Breaks the billing report two weeks later.
|
|
158
|
+
|
|
159
|
+
### With the workflow — one transformation, semantics preserved
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
// Workflow applied:
|
|
163
|
+
// Bottleneck: orders.map → users.find (line 14)
|
|
164
|
+
// Current: time = O(n·m), space = O(1)
|
|
165
|
+
// Target: time = O(n+m), space = O(m)
|
|
166
|
+
// Transformation: precompute index Map<userId, User> outside the loop
|
|
167
|
+
// Semantic risk: None — orders with missing users still emit `user: undefined` exactly as before
|
|
168
|
+
// Reverts so far: 0
|
|
169
|
+
|
|
170
|
+
export function getOrdersWithUsers(orders, users) {
|
|
171
|
+
const userById = new Map(users.map(u => [u.id, u]));
|
|
172
|
+
return orders.map(o => ({ ...o, user: userById.get(o.userId) }));
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
One transformation. Existing tests stay untouched. Run them. If green, ship. If red, revert (don't patch). After 3 reverts, stop and load `invariant-guard` — the bottleneck is wrong, or the function has a contract no one wrote down.
|
|
177
|
+
|
|
178
|
+
## Output discipline
|
|
179
|
+
|
|
180
|
+
When proposing or applying an optimization, your message must contain — in this order:
|
|
181
|
+
|
|
182
|
+
1. **Bottleneck** — file:line and one-sentence reason.
|
|
183
|
+
2. **Current complexity** — `time = O(?)`, `space = O(?)`.
|
|
184
|
+
3. **Transformation** — name from the playbook (or describe it if novel).
|
|
185
|
+
4. **New complexity** — `time = O(?)`, `space = O(?)`.
|
|
186
|
+
5. **Semantic risk** — anything callers might notice (ordering, stability, error timing). "None" is a valid answer if true.
|
|
187
|
+
6. **Measured speedup** — `before → after` with the ratio as `N× faster` (or `asymptotic only` if not measured). One line, honest numbers.
|
|
188
|
+
7. **The diff.**
|
|
189
|
+
|
|
190
|
+
If any of 1–6 is missing, the optimization is not ready to apply.
|
|
191
|
+
|
|
192
|
+
## Stop conditions — do not optimize further when
|
|
193
|
+
|
|
194
|
+
- Asymptotic Big-O already matches a known lower bound for the problem.
|
|
195
|
+
- The input is provably small and bounded (n < ~100 and not on a hot path).
|
|
196
|
+
- The optimization would obscure correctness or harm readability without a measured win.
|
|
197
|
+
- The bottleneck is I/O or external service latency, not CPU/memory — go fix that instead.
|
|
198
|
+
|
|
199
|
+
Premature optimization past these points adds risk without payoff.
|
|
200
|
+
|
|
201
|
+
## Rationalizations to watch for
|
|
202
|
+
|
|
203
|
+
| Excuse | Reality |
|
|
204
|
+
| --- | --- |
|
|
205
|
+
| "I already solved this in my head — just paste the diff and add labels after." | Retrofitted labels lie about the reasoning order. Write bottleneck → complexity → transformation → diff in that order, or you are writing fiction. |
|
|
206
|
+
| "Stating the current Big-O is busywork — everyone can see the nested loop." | If everyone can see it, writing one line costs nothing. If only you can see it, you just saved the reviewer's time. |
|
|
207
|
+
| "Semantic risk is None, skip that step." | "None" is a valid answer — but write it. The next reader does not know which guarantees you considered. |
|
|
208
|
+
| "I'll do all three transformations in one diff." | Stacked transformations hide regressions. One transformation, verify, repeat. |
|
|
209
|
+
| "It's just a small refactor, the workflow is overkill." | Then it takes 30 seconds. The cases where you skip the workflow are the ones where you miss the optimization next to the obvious one. |
|
|
210
|
+
| "I'll measure later." | Later is `<measured: TBD>` forever. Either measure now or accept the asymptotic argument as the only claim. |
|
|
211
|
+
|
|
212
|
+
## Red flags — STOP
|
|
213
|
+
|
|
214
|
+
- Optimizing without stating current Big-O.
|
|
215
|
+
- "This should be faster" without identifying a specific bottleneck line.
|
|
216
|
+
- Stacking multiple transformations before verifying any one of them.
|
|
217
|
+
- Claiming a speedup without measuring or without an asymptotic argument.
|
|
218
|
+
- Lowering complexity by silently changing output semantics.
|
|
219
|
+
- Rewriting code that runs once at startup with n = 12.
|
|
220
|
+
|
|
221
|
+
## Verification checklist
|
|
222
|
+
|
|
223
|
+
Before claiming an optimization is complete:
|
|
224
|
+
|
|
225
|
+
- [ ] Existing tests (or a written characterization test) were green BEFORE the transformation.
|
|
226
|
+
- [ ] Exactly one transformation was applied.
|
|
227
|
+
- [ ] Tests are green AFTER the transformation.
|
|
228
|
+
- [ ] No test was modified, weakened, or skipped to make it pass.
|
|
229
|
+
- [ ] Current Big-O and target Big-O are stated in the diff or PR description.
|
|
230
|
+
- [ ] Semantic risk is written down ("None" is valid if true).
|
|
231
|
+
- [ ] Measured speedup ratio is reported as `before → after · N× faster` (or explicitly marked `asymptotic only` if no measurement was possible).
|
|
232
|
+
- [ ] If a measured claim was made (e.g. "3x faster"), the measurement command is included.
|
|
233
|
+
- [ ] Revert count on this code is < 3.
|
|
234
|
+
|
|
235
|
+
Cannot check every box? The optimization is not done. Either revert or finish the gap — do not ship a half-verified speedup.
|
|
236
|
+
|
|
237
|
+
## Limitations
|
|
238
|
+
|
|
239
|
+
- **Requires existing tests or a written characterization test.** Without one, you cannot detect silent semantic regressions; the Iron Law refuses to skip this.
|
|
240
|
+
- **Asymptotic wins only; constant-factor work is a separate mode** (clearly labeled). The playbook will not improve cache locality or SIMD utilization on its own.
|
|
241
|
+
- **Single-process scope.** Distributed-system bottlenecks (consensus latency, replication lag, queue backpressure) are out of scope.
|
|
242
|
+
- **3-revert rule is firm.** If three transformations failed, the skill explicitly forces escalation to `invariant-guard`; it does not let you try a fourth.
|
|
243
|
+
- **Measurement is on the author.** complexity-cuts requires the ratio to be reported but does not run the benchmark for you — you must produce a representative input.
|
|
244
|
+
- **Won't help I/O-bound code.** If the dominant term is network latency or disk, the playbook will not move the needle — fix the I/O pattern instead.
|
|
245
|
+
|
|
246
|
+
## The thesis, in one line
|
|
247
|
+
|
|
248
|
+
> **Existing code earned its slowness one shortcut at a time. complexity-cuts removes them one transformation at a time — and refuses to ship the optimization without a green test.**
|
|
249
|
+
|
|
250
|
+
## Related Skills
|
|
251
|
+
|
|
252
|
+
- `lemmaly` — prevention gateway; use when writing new code instead of refactoring existing.
|
|
253
|
+
- `invariant-guard` — escalation target when 3+ transformations have failed tests — the missing piece is a contract, not an optimization.
|
|
254
|
+
- `mathguard` — escalation when the classical floor is reached and an approximate or math-heavy structure could win.
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: decision-navigator
|
|
3
|
+
description: "Guide stuck or overwhelmed users through targeted branching questions until they reach concrete next steps."
|
|
4
|
+
category: planning
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_type: community
|
|
8
|
+
date_added: "2026-05-27"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Decision Navigator
|
|
12
|
+
|
|
13
|
+
Help users who feel stuck or overwhelmed by guiding them through a structured branching exploration
|
|
14
|
+
of their situation — one clear question at a time — until they arrive at concrete, actionable steps.
|
|
15
|
+
|
|
16
|
+
## Core Philosophy
|
|
17
|
+
|
|
18
|
+
Most people go blank not because they're incapable, but because the problem space feels infinite.
|
|
19
|
+
Your job is to collapse that space progressively: ask one clarifying question, offer 3–5 distinct
|
|
20
|
+
paths, let them choose, and repeat — getting more specific each level — until you reach a leaf
|
|
21
|
+
where concrete steps make sense.
|
|
22
|
+
|
|
23
|
+
Never overwhelm with a wall of options or advice upfront. Navigate, don't lecture.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## When to Use This Skill
|
|
28
|
+
|
|
29
|
+
Use this skill whenever a user feels stuck, overwhelmed, or does not know where to start.
|
|
30
|
+
Trigger on phrases like "I don't know what to do", "I want to X but don't know how",
|
|
31
|
+
"I'm not sure where to begin", "help me figure out...", "I feel lost about...", or broad
|
|
32
|
+
open-ended goals like "I want to start a business", "I want to change careers", "I want to
|
|
33
|
+
learn something new", or "I need to make a decision about X".
|
|
34
|
+
|
|
35
|
+
Do not wait for the user to ask a precise question. If they seem stuck or overwhelmed, use
|
|
36
|
+
this skill.
|
|
37
|
+
|
|
38
|
+
## The Process
|
|
39
|
+
|
|
40
|
+
### Step 1 — Acknowledge and orient (1–2 sentences)
|
|
41
|
+
|
|
42
|
+
Reflect the situation back briefly so the user feels heard. Don't give advice yet.
|
|
43
|
+
|
|
44
|
+
> "Changing careers is a big one — lots of directions it could go. Let me help you narrow it down."
|
|
45
|
+
|
|
46
|
+
### Step 2 — Ask one clarifying question
|
|
47
|
+
|
|
48
|
+
Ask the single most useful question to understand *what kind* of problem this actually is.
|
|
49
|
+
Frame it as a choice between 3–5 concrete options, not open-ended.
|
|
50
|
+
|
|
51
|
+
**Option labels must be short** — 2 to 6 words max. No explanations inside the bullet.
|
|
52
|
+
The question itself carries the context; the options are just the choices.
|
|
53
|
+
|
|
54
|
+
**Good question format:**
|
|
55
|
+
> "What's driving this for you right now?
|
|
56
|
+
> - Unhappy in my current role
|
|
57
|
+
> - Want to earn more
|
|
58
|
+
> - Want more flexibility
|
|
59
|
+
> - Found a new interest
|
|
60
|
+
> - Not sure yet"
|
|
61
|
+
|
|
62
|
+
**Bad question format:**
|
|
63
|
+
> "Tell me more about your situation." ← too open, doesn't reduce the space
|
|
64
|
+
|
|
65
|
+
> "- Simplicity: I want the easiest setup with zero server management." ← option labels should never have colons or sub-explanations
|
|
66
|
+
|
|
67
|
+
### Step 2b — Extract before you ask
|
|
68
|
+
|
|
69
|
+
If the user's message already contains useful information (they described constraints, named
|
|
70
|
+
platforms, listed requirements), pull that out first. Don't make them re-answer what they
|
|
71
|
+
already told you.
|
|
72
|
+
|
|
73
|
+
> "Ok so you've got: Docker container ready, needs auth + multi-tenant DB, websockets, and
|
|
74
|
+
> the client wants AWS or GCP. That's a lot. What's the scariest part right now?
|
|
75
|
+
> - Choosing between AWS and GCP
|
|
76
|
+
> - Understanding how all the pieces connect
|
|
77
|
+
> - Actually deploying the container
|
|
78
|
+
> - Not sure where to even begin"
|
|
79
|
+
|
|
80
|
+
### Step 3 — Branch based on their answer
|
|
81
|
+
|
|
82
|
+
After they choose, go one level deeper. Each level should feel more specific.
|
|
83
|
+
|
|
84
|
+
Typical depth: 3–4 levels before reaching actionable steps.
|
|
85
|
+
|
|
86
|
+
**Level 1** — What kind of problem is this? (motivation, constraint, knowledge gap, fear, resources...)
|
|
87
|
+
**Level 2** — What's the most important factor for them? (urgency, risk tolerance, resources available...)
|
|
88
|
+
**Level 3** — What's their current situation / starting point?
|
|
89
|
+
**Level 4** (leaf) — Give concrete steps
|
|
90
|
+
|
|
91
|
+
### Step 4 — Deliver concrete steps at the leaf
|
|
92
|
+
|
|
93
|
+
When you've narrowed things down enough (usually 3–4 questions in), stop branching and give
|
|
94
|
+
3–6 specific, ordered action steps. These should be immediately doable, not vague advice.
|
|
95
|
+
|
|
96
|
+
**Good leaf output:**
|
|
97
|
+
> Based on what you've shared — you're unhappy in your current role, want to stay in tech, and
|
|
98
|
+
> have about 3 months before you need to move — here's where to start:
|
|
99
|
+
>
|
|
100
|
+
> 1. Spend one hour this week writing down what specifically drains you vs. energizes you at work.
|
|
101
|
+
> 2. Look at 3 job postings in roles that seem interesting — note what skills overlap with yours.
|
|
102
|
+
> 3. Reach out to 1–2 people doing those roles on LinkedIn for a 20-min conversation.
|
|
103
|
+
> 4. Set a decision deadline: commit to applying somewhere within 6 weeks.
|
|
104
|
+
> 5. Tell one trusted person about your plan so you have accountability.
|
|
105
|
+
|
|
106
|
+
**Bad leaf output:**
|
|
107
|
+
> "You should network more and update your resume." ← too vague
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Branching Guidelines
|
|
112
|
+
|
|
113
|
+
### How to design your questions
|
|
114
|
+
|
|
115
|
+
- **Short option labels** — 2 to 6 words. Never a colon + explanation inside a bullet.
|
|
116
|
+
The question sets the context; options are just the fork in the road.
|
|
117
|
+
- **Mutually exclusive options** — each choice should lead down a genuinely different path
|
|
118
|
+
- **Concrete labels** — "Earn more money" not "financial reasons"
|
|
119
|
+
- **Cover the realistic space** — include the uncomfortable options (e.g. "Scared of failing")
|
|
120
|
+
- **Always offer an escape** — include "Not sure yet" so no one feels forced
|
|
121
|
+
- **Extract first** — if the user already gave you info, acknowledge it before asking the next question.
|
|
122
|
+
Summarize what you know in 1–2 lines, then ask only what's still missing.
|
|
123
|
+
|
|
124
|
+
### When to branch vs. when to go straight to steps
|
|
125
|
+
|
|
126
|
+
Go straight to concrete steps when:
|
|
127
|
+
- The user's situation is already specific enough (they've answered 3+ questions)
|
|
128
|
+
- The remaining branches would all lead to the same advice
|
|
129
|
+
- The user says something like "just tell me what to do"
|
|
130
|
+
|
|
131
|
+
Keep branching when:
|
|
132
|
+
- The advice would be meaningfully different depending on their answer
|
|
133
|
+
- You'd be guessing at key constraints (budget, timeline, risk tolerance, etc.)
|
|
134
|
+
- The problem space still feels large
|
|
135
|
+
|
|
136
|
+
### How many options per question
|
|
137
|
+
|
|
138
|
+
- **3 options** — when the distinctions are clear-cut
|
|
139
|
+
- **4–5 options** — when the space is genuinely varied
|
|
140
|
+
- **Never more than 5** — more than that is overwhelming (the whole problem we're solving)
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Tone and Style
|
|
145
|
+
|
|
146
|
+
- Warm but efficient — not therapist-soft, not consultant-cold
|
|
147
|
+
- Short sentences. No jargon.
|
|
148
|
+
- Reflect their words back to them (if they said "burned out", use "burned out" not "fatigued")
|
|
149
|
+
- Never judge the path they choose
|
|
150
|
+
- If they seem emotionally distressed (not just confused), acknowledge that before navigating
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Format
|
|
155
|
+
|
|
156
|
+
Present choices as a short list, not prose:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
[Question]
|
|
160
|
+
|
|
161
|
+
- Option A
|
|
162
|
+
- Option B
|
|
163
|
+
- Option C
|
|
164
|
+
- Something else / not sure
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
At the leaf, use a numbered list for steps. Start with the number ("1.") not a bullet.
|
|
168
|
+
|
|
169
|
+
Keep the whole interaction feeling like a conversation, not a form.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Example Flow
|
|
174
|
+
|
|
175
|
+
**User:** I want to start a business but I have no idea where to start.
|
|
176
|
+
|
|
177
|
+
**Claude (Level 1):**
|
|
178
|
+
Starting a business means different things to different people. What's the main thing drawing you to it?
|
|
179
|
+
|
|
180
|
+
- I have a specific idea I want to build
|
|
181
|
+
- I want freedom / to be my own boss
|
|
182
|
+
- I want to make more money than my job pays
|
|
183
|
+
- I'm not sure yet — I just know I want something different
|
|
184
|
+
|
|
185
|
+
**User:** I have a specific idea I want to build.
|
|
186
|
+
|
|
187
|
+
**Claude (Level 2):**
|
|
188
|
+
Got it. Where are you in terms of the idea itself?
|
|
189
|
+
|
|
190
|
+
- It's clear in my head but I haven't done anything yet
|
|
191
|
+
- I've talked to some people about it but haven't built anything
|
|
192
|
+
- I've started building / have a prototype
|
|
193
|
+
- I've tried before and it didn't work out
|
|
194
|
+
|
|
195
|
+
**User:** It's clear in my head but I haven't done anything yet.
|
|
196
|
+
|
|
197
|
+
**Claude (Level 3):**
|
|
198
|
+
One more thing — what feels like the biggest blocker right now?
|
|
199
|
+
|
|
200
|
+
- I don't know if the idea is actually good
|
|
201
|
+
- I don't know how to build it / lack technical skills
|
|
202
|
+
- I'm worried about the financial risk
|
|
203
|
+
- I don't know the first practical step to take
|
|
204
|
+
|
|
205
|
+
**User:** I don't know if the idea is actually good.
|
|
206
|
+
|
|
207
|
+
**Claude (Leaf):**
|
|
208
|
+
That's the right thing to worry about first — most ideas fail on this, not execution.
|
|
209
|
+
Here's how to find out quickly:
|
|
210
|
+
|
|
211
|
+
1. Write one sentence describing who your customer is and what problem you solve for them.
|
|
212
|
+
2. Find 5 people who match that description. Not friends — people who'd actually pay.
|
|
213
|
+
3. Ask them: "Do you have this problem? How do you currently deal with it?"
|
|
214
|
+
4. Do NOT pitch your solution yet. Just listen. If they describe your problem unprompted, that's signal.
|
|
215
|
+
5. After 5 conversations, you'll know if this is real. If 3+ people have the problem badly, keep going.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Edge Cases
|
|
220
|
+
|
|
221
|
+
**User gives a very vague situation** ("I don't know what to do with my life")
|
|
222
|
+
→ Start even broader: ask what *area* of life feels most stuck (work, relationships, health, purpose, finances)
|
|
223
|
+
|
|
224
|
+
**User picks "something else"**
|
|
225
|
+
→ Ask them to describe it briefly, then fit their answer into the next level of branching
|
|
226
|
+
|
|
227
|
+
**User wants to explore multiple paths**
|
|
228
|
+
→ Finish one path to the leaf, then offer: "Want to explore what the [other option] path looks like too?"
|
|
229
|
+
|
|
230
|
+
**User is clearly in distress**
|
|
231
|
+
→ Pause the navigation. Acknowledge first. Ask if they want to talk through how they're feeling or
|
|
232
|
+
if they'd find it helpful to focus on practical next steps.
|
|
233
|
+
|
|
234
|
+
## Limitations
|
|
235
|
+
|
|
236
|
+
- This skill helps structure uncertainty; it does not replace professional legal, medical, financial, or mental-health advice.
|
|
237
|
+
- It should not force branching when the user has already requested a specific action or direct answer.
|
|
238
|
+
- It depends on the user's stated preferences and constraints, so recommendations should stay tentative when important facts are missing.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Jetski/Cortex + Gemini Integration Guide
|
|
3
|
-
description: "Use antigravity-awesome-skills with Jetski/Cortex without hitting context-window overflow with 1,
|
|
3
|
+
description: "Use antigravity-awesome-skills with Jetski/Cortex without hitting context-window overflow with 1,480+ skills."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Jetski/Cortex + Gemini: safe integration with 1,
|
|
6
|
+
# Jetski/Cortex + Gemini: safe integration with 1,480+ skills
|
|
7
7
|
|
|
8
8
|
This guide shows how to integrate the `antigravity-awesome-skills` repository with an agent based on **Jetski/Cortex + Gemini** (or similar frameworks) **without exceeding the model context window**.
|
|
9
9
|
|
|
@@ -23,7 +23,7 @@ Never do:
|
|
|
23
23
|
- concatenate all `SKILL.md` content into a single system prompt;
|
|
24
24
|
- re-inject the entire library for **every** request.
|
|
25
25
|
|
|
26
|
-
With 1,
|
|
26
|
+
With 1,480+ skills, this approach fills the context window before user messages are even added, causing truncation.
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
@@ -21,7 +21,7 @@ This example shows one way to integrate **antigravity-awesome-skills** with a Je
|
|
|
21
21
|
- How to enforce a **maximum number of skills per turn** via `maxSkillsPerTurn`.
|
|
22
22
|
- How to choose whether to **truncate or error** when too many skills are requested via `overflowBehavior`.
|
|
23
23
|
|
|
24
|
-
This pattern avoids context overflow when you have 1,
|
|
24
|
+
This pattern avoids context overflow when you have 1,480+ skills installed.
|
|
25
25
|
|
|
26
26
|
Manifest contract references:
|
|
27
27
|
|
|
@@ -6,7 +6,7 @@ This document keeps the repository's GitHub-facing discovery copy aligned with t
|
|
|
6
6
|
|
|
7
7
|
Preferred positioning:
|
|
8
8
|
|
|
9
|
-
> Installable GitHub library of 1,
|
|
9
|
+
> Installable GitHub library of 1,480+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and other AI coding assistants.
|
|
10
10
|
|
|
11
11
|
Key framing:
|
|
12
12
|
|
|
@@ -20,7 +20,7 @@ Key framing:
|
|
|
20
20
|
|
|
21
21
|
Preferred description:
|
|
22
22
|
|
|
23
|
-
> Installable GitHub library of 1,
|
|
23
|
+
> Installable GitHub library of 1,480+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.
|
|
24
24
|
|
|
25
25
|
Preferred homepage:
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ Preferred homepage:
|
|
|
28
28
|
|
|
29
29
|
Preferred social preview:
|
|
30
30
|
|
|
31
|
-
- use a clean preview image that says `1,
|
|
31
|
+
- use a clean preview image that says `1,480+ Agentic Skills`;
|
|
32
32
|
- mention Claude Code, Cursor, Codex CLI, and Gemini CLI;
|
|
33
33
|
- avoid dense text and tiny logos that disappear in social cards.
|
|
34
34
|
|
|
@@ -72,7 +72,7 @@ The update process refreshes:
|
|
|
72
72
|
- Canonical skills index (`skills_index.json`)
|
|
73
73
|
- Compatibility mirror (`data/skills_index.json`)
|
|
74
74
|
- Web app skills data (`apps\web-app\public\skills.json`)
|
|
75
|
-
- All 1,
|
|
75
|
+
- All 1,480+ skills from the skills directory
|
|
76
76
|
|
|
77
77
|
## When to Update
|
|
78
78
|
|
|
@@ -12,7 +12,7 @@ Install the library into Claude Code, then invoke focused skills directly in the
|
|
|
12
12
|
|
|
13
13
|
## Why use this repo for Claude Code
|
|
14
14
|
|
|
15
|
-
- It includes 1,
|
|
15
|
+
- It includes 1,480+ skills instead of a narrow single-domain starter pack.
|
|
16
16
|
- It supports the standard `.claude/skills/` path and the Claude Code plugin marketplace flow.
|
|
17
17
|
- It also ships generated bundle plugins so teams can install focused packs like `Essentials` or `Security Developer` from the marketplace metadata.
|
|
18
18
|
- It includes onboarding docs, bundles, and workflows so new users do not need to guess where to begin.
|
|
@@ -12,7 +12,7 @@ Install into the Gemini skills path, then ask Gemini to apply one skill at a tim
|
|
|
12
12
|
|
|
13
13
|
- It installs directly into the expected Gemini skills path.
|
|
14
14
|
- It includes both core software engineering skills and deeper agent/LLM-oriented skills.
|
|
15
|
-
- It helps new users get started with bundles and workflows rather than forcing a cold start from 1,
|
|
15
|
+
- It helps new users get started with bundles and workflows rather than forcing a cold start from 1,480+ files.
|
|
16
16
|
- It is useful whether you want a broad internal skill library or a single repo to test many workflows quickly.
|
|
17
17
|
|
|
18
18
|
## Install Gemini CLI Skills
|
|
@@ -18,7 +18,7 @@ Kiro is AWS's agentic AI IDE that combines:
|
|
|
18
18
|
|
|
19
19
|
Kiro's agentic capabilities are enhanced by skills that provide:
|
|
20
20
|
|
|
21
|
-
- **Domain expertise** across 1,
|
|
21
|
+
- **Domain expertise** across 1,480+ specialized areas
|
|
22
22
|
- **Best practices** from Anthropic, OpenAI, Google, Microsoft, and AWS
|
|
23
23
|
- **Workflow automation** for common development tasks
|
|
24
24
|
- **AWS-specific patterns** for serverless, infrastructure, and cloud architecture
|
|
@@ -14,7 +14,7 @@ If you came in through a **Claude Code** or **Codex** plugin instead of a full l
|
|
|
14
14
|
|
|
15
15
|
When you ran `npx antigravity-awesome-skills` or cloned the repository, you:
|
|
16
16
|
|
|
17
|
-
✅ **Downloaded 1,
|
|
17
|
+
✅ **Downloaded 1,480+ skill files** to your computer (default: `~/.agents/skills/`; or a custom path like `~/.agent/skills/` if you used `--path`)
|
|
18
18
|
✅ **Made them available** to your AI assistant
|
|
19
19
|
❌ **Did NOT enable them all automatically** (they're just sitting there, waiting)
|
|
20
20
|
|
|
@@ -34,7 +34,7 @@ Bundles are **curated groups** of skills organized by role. They help you decide
|
|
|
34
34
|
|
|
35
35
|
**Analogy:**
|
|
36
36
|
|
|
37
|
-
- You installed a toolbox with 1,
|
|
37
|
+
- You installed a toolbox with 1,480+ tools (✅ done)
|
|
38
38
|
- Bundles are like **labeled organizer trays** saying: "If you're a carpenter, start with these 10 tools"
|
|
39
39
|
- You can either **pick skills from the tray** or install that tray as a focused marketplace bundle plugin
|
|
40
40
|
|
|
@@ -212,7 +212,7 @@ Let's actually use a skill right now. Follow these steps:
|
|
|
212
212
|
|
|
213
213
|
## Step 5: Picking Your First Skills (Practical Advice)
|
|
214
214
|
|
|
215
|
-
Don't try to use all 1,
|
|
215
|
+
Don't try to use all 1,480+ skills at once. Here's a sensible approach:
|
|
216
216
|
|
|
217
217
|
If you want a tool-specific starting point before choosing skills, use:
|
|
218
218
|
|
|
@@ -343,7 +343,7 @@ Usually no, but if your AI doesn't recognize a skill:
|
|
|
343
343
|
|
|
344
344
|
### "Can I load all skills into the model at once?"
|
|
345
345
|
|
|
346
|
-
No. Even though you have 1,
|
|
346
|
+
No. Even though you have 1,480+ skills installed locally, you should **not** concatenate every `SKILL.md` into a single system prompt or context block.
|
|
347
347
|
|
|
348
348
|
The intended pattern is:
|
|
349
349
|
|