agy-superpowers 5.2.2 → 5.2.4
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/README.md +47 -150
- package/package.json +1 -1
- package/template/agent/rules/CLAUDE.md +80 -0
- package/template/agent/rules/code-styles.md +31 -32
- package/template/agent/rules/debug-confirmation-policy.md +2 -0
- package/template/agent/rules/file-length-policy.md +2 -0
- package/template/agent/rules/git-policy.md +7 -0
- package/template/agent/rules/language-matching.md +2 -0
- package/template/agent/rules/scratch-scripts.md +39 -0
- package/template/agent/rules/superpowers.md +8 -51
- package/template/agent/skills/executing-plans/SKILL.md +17 -0
- package/template/agent/skills/systematic-debugging/SKILL.md +16 -0
- package/template/agent/skills/test-driven-development/SKILL.md +16 -0
- package/template/agent/skills/verification-before-completion/SKILL.md +22 -0
- package/template/agent/skills/writing-plans/SKILL.md +16 -0
- package/template/agent/skills/ai-integrated-product/SKILL.md +0 -57
- package/template/agent/skills/analytics-setup/SKILL.md +0 -51
- package/template/agent/skills/api-design/SKILL.md +0 -193
- package/template/agent/skills/app-store-optimizer/SKILL.md +0 -127
- package/template/agent/skills/auth-and-identity/SKILL.md +0 -167
- package/template/agent/skills/backend-developer/SKILL.md +0 -148
- package/template/agent/skills/bootstrapper-finance/SKILL.md +0 -55
- package/template/agent/skills/chrome-extension-developer/SKILL.md +0 -53
- package/template/agent/skills/community-manager/SKILL.md +0 -115
- package/template/agent/skills/content-marketer/SKILL.md +0 -111
- package/template/agent/skills/conversion-optimizer/SKILL.md +0 -142
- package/template/agent/skills/cto-architect/SKILL.md +0 -133
- package/template/agent/skills/customer-success-manager/SKILL.md +0 -126
- package/template/agent/skills/data-analyst/SKILL.md +0 -147
- package/template/agent/skills/devops-engineer/SKILL.md +0 -117
- package/template/agent/skills/email-infrastructure/SKILL.md +0 -164
- package/template/agent/skills/game-design/SKILL.md +0 -194
- package/template/agent/skills/game-developer/SKILL.md +0 -175
- package/template/agent/skills/growth-hacker/SKILL.md +0 -122
- package/template/agent/skills/idea-validator/SKILL.md +0 -55
- package/template/agent/skills/indie-legal/SKILL.md +0 -53
- package/template/agent/skills/influencer-marketer/SKILL.md +0 -141
- package/template/agent/skills/landing-page-builder/SKILL.md +0 -59
- package/template/agent/skills/launch-strategist/SKILL.md +0 -62
- package/template/agent/skills/market-researcher/SKILL.md +0 -53
- package/template/agent/skills/micro-saas-builder/SKILL.md +0 -56
- package/template/agent/skills/monetization-strategist/SKILL.md +0 -119
- package/template/agent/skills/paid-acquisition-specialist/SKILL.md +0 -119
- package/template/agent/skills/pricing-psychologist/SKILL.md +0 -58
- package/template/agent/skills/real-time-features/SKILL.md +0 -194
- package/template/agent/skills/retention-specialist/SKILL.md +0 -123
- package/template/agent/skills/rust-developer/SKILL.md +0 -281
- package/template/agent/skills/rust-developer/references/rust-rules/_sections.md +0 -231
- package/template/agent/skills/rust-developer/references/rust-rules/anti-clone-excessive.md +0 -124
- package/template/agent/skills/rust-developer/references/rust-rules/anti-collect-intermediate.md +0 -131
- package/template/agent/skills/rust-developer/references/rust-rules/anti-empty-catch.md +0 -132
- package/template/agent/skills/rust-developer/references/rust-rules/anti-expect-lazy.md +0 -95
- package/template/agent/skills/rust-developer/references/rust-rules/anti-format-hot-path.md +0 -141
- package/template/agent/skills/rust-developer/references/rust-rules/anti-index-over-iter.md +0 -125
- package/template/agent/skills/rust-developer/references/rust-rules/anti-lock-across-await.md +0 -127
- package/template/agent/skills/rust-developer/references/rust-rules/anti-over-abstraction.md +0 -120
- package/template/agent/skills/rust-developer/references/rust-rules/anti-panic-expected.md +0 -131
- package/template/agent/skills/rust-developer/references/rust-rules/anti-premature-optimize.md +0 -156
- package/template/agent/skills/rust-developer/references/rust-rules/anti-string-for-str.md +0 -122
- package/template/agent/skills/rust-developer/references/rust-rules/anti-stringly-typed.md +0 -167
- package/template/agent/skills/rust-developer/references/rust-rules/anti-type-erasure.md +0 -134
- package/template/agent/skills/rust-developer/references/rust-rules/anti-unwrap-abuse.md +0 -143
- package/template/agent/skills/rust-developer/references/rust-rules/anti-vec-for-slice.md +0 -121
- package/template/agent/skills/rust-developer/references/rust-rules/api-builder-must-use.md +0 -143
- package/template/agent/skills/rust-developer/references/rust-rules/api-builder-pattern.md +0 -187
- package/template/agent/skills/rust-developer/references/rust-rules/api-common-traits.md +0 -165
- package/template/agent/skills/rust-developer/references/rust-rules/api-default-impl.md +0 -177
- package/template/agent/skills/rust-developer/references/rust-rules/api-extension-trait.md +0 -163
- package/template/agent/skills/rust-developer/references/rust-rules/api-from-not-into.md +0 -146
- package/template/agent/skills/rust-developer/references/rust-rules/api-impl-asref.md +0 -142
- package/template/agent/skills/rust-developer/references/rust-rules/api-impl-into.md +0 -160
- package/template/agent/skills/rust-developer/references/rust-rules/api-must-use.md +0 -125
- package/template/agent/skills/rust-developer/references/rust-rules/api-newtype-safety.md +0 -162
- package/template/agent/skills/rust-developer/references/rust-rules/api-non-exhaustive.md +0 -177
- package/template/agent/skills/rust-developer/references/rust-rules/api-parse-dont-validate.md +0 -184
- package/template/agent/skills/rust-developer/references/rust-rules/api-sealed-trait.md +0 -168
- package/template/agent/skills/rust-developer/references/rust-rules/api-serde-optional.md +0 -182
- package/template/agent/skills/rust-developer/references/rust-rules/api-typestate.md +0 -199
- package/template/agent/skills/rust-developer/references/rust-rules/async-bounded-channel.md +0 -175
- package/template/agent/skills/rust-developer/references/rust-rules/async-broadcast-pubsub.md +0 -185
- package/template/agent/skills/rust-developer/references/rust-rules/async-cancellation-token.md +0 -203
- package/template/agent/skills/rust-developer/references/rust-rules/async-clone-before-await.md +0 -171
- package/template/agent/skills/rust-developer/references/rust-rules/async-join-parallel.md +0 -158
- package/template/agent/skills/rust-developer/references/rust-rules/async-joinset-structured.md +0 -195
- package/template/agent/skills/rust-developer/references/rust-rules/async-mpsc-queue.md +0 -171
- package/template/agent/skills/rust-developer/references/rust-rules/async-no-lock-await.md +0 -156
- package/template/agent/skills/rust-developer/references/rust-rules/async-oneshot-response.md +0 -191
- package/template/agent/skills/rust-developer/references/rust-rules/async-select-racing.md +0 -198
- package/template/agent/skills/rust-developer/references/rust-rules/async-spawn-blocking.md +0 -154
- package/template/agent/skills/rust-developer/references/rust-rules/async-tokio-fs.md +0 -167
- package/template/agent/skills/rust-developer/references/rust-rules/async-tokio-runtime.md +0 -169
- package/template/agent/skills/rust-developer/references/rust-rules/async-try-join.md +0 -172
- package/template/agent/skills/rust-developer/references/rust-rules/async-watch-latest.md +0 -189
- package/template/agent/skills/rust-developer/references/rust-rules/doc-all-public.md +0 -113
- package/template/agent/skills/rust-developer/references/rust-rules/doc-cargo-metadata.md +0 -147
- package/template/agent/skills/rust-developer/references/rust-rules/doc-errors-section.md +0 -122
- package/template/agent/skills/rust-developer/references/rust-rules/doc-examples-section.md +0 -161
- package/template/agent/skills/rust-developer/references/rust-rules/doc-hidden-setup.md +0 -149
- package/template/agent/skills/rust-developer/references/rust-rules/doc-intra-links.md +0 -138
- package/template/agent/skills/rust-developer/references/rust-rules/doc-link-types.md +0 -169
- package/template/agent/skills/rust-developer/references/rust-rules/doc-module-inner.md +0 -116
- package/template/agent/skills/rust-developer/references/rust-rules/doc-panics-section.md +0 -128
- package/template/agent/skills/rust-developer/references/rust-rules/doc-question-mark.md +0 -136
- package/template/agent/skills/rust-developer/references/rust-rules/doc-safety-section.md +0 -131
- package/template/agent/skills/rust-developer/references/rust-rules/err-anyhow-app.md +0 -179
- package/template/agent/skills/rust-developer/references/rust-rules/err-context-chain.md +0 -144
- package/template/agent/skills/rust-developer/references/rust-rules/err-custom-type.md +0 -152
- package/template/agent/skills/rust-developer/references/rust-rules/err-doc-errors.md +0 -145
- package/template/agent/skills/rust-developer/references/rust-rules/err-expect-bugs-only.md +0 -133
- package/template/agent/skills/rust-developer/references/rust-rules/err-from-impl.md +0 -152
- package/template/agent/skills/rust-developer/references/rust-rules/err-lowercase-msg.md +0 -124
- package/template/agent/skills/rust-developer/references/rust-rules/err-no-unwrap-prod.md +0 -115
- package/template/agent/skills/rust-developer/references/rust-rules/err-question-mark.md +0 -151
- package/template/agent/skills/rust-developer/references/rust-rules/err-result-over-panic.md +0 -130
- package/template/agent/skills/rust-developer/references/rust-rules/err-source-chain.md +0 -155
- package/template/agent/skills/rust-developer/references/rust-rules/err-thiserror-lib.md +0 -171
- package/template/agent/skills/rust-developer/references/rust-rules/lint-cargo-metadata.md +0 -138
- package/template/agent/skills/rust-developer/references/rust-rules/lint-deny-correctness.md +0 -107
- package/template/agent/skills/rust-developer/references/rust-rules/lint-missing-docs.md +0 -154
- package/template/agent/skills/rust-developer/references/rust-rules/lint-pedantic-selective.md +0 -118
- package/template/agent/skills/rust-developer/references/rust-rules/lint-rustfmt-check.md +0 -157
- package/template/agent/skills/rust-developer/references/rust-rules/lint-unsafe-doc.md +0 -133
- package/template/agent/skills/rust-developer/references/rust-rules/lint-warn-complexity.md +0 -131
- package/template/agent/skills/rust-developer/references/rust-rules/lint-warn-perf.md +0 -136
- package/template/agent/skills/rust-developer/references/rust-rules/lint-warn-style.md +0 -135
- package/template/agent/skills/rust-developer/references/rust-rules/lint-warn-suspicious.md +0 -122
- package/template/agent/skills/rust-developer/references/rust-rules/lint-workspace-lints.md +0 -172
- package/template/agent/skills/rust-developer/references/rust-rules/mem-arena-allocator.md +0 -168
- package/template/agent/skills/rust-developer/references/rust-rules/mem-arrayvec.md +0 -142
- package/template/agent/skills/rust-developer/references/rust-rules/mem-assert-type-size.md +0 -168
- package/template/agent/skills/rust-developer/references/rust-rules/mem-avoid-format.md +0 -147
- package/template/agent/skills/rust-developer/references/rust-rules/mem-box-large-variant.md +0 -158
- package/template/agent/skills/rust-developer/references/rust-rules/mem-boxed-slice.md +0 -139
- package/template/agent/skills/rust-developer/references/rust-rules/mem-clone-from.md +0 -147
- package/template/agent/skills/rust-developer/references/rust-rules/mem-compact-string.md +0 -149
- package/template/agent/skills/rust-developer/references/rust-rules/mem-reuse-collections.md +0 -174
- package/template/agent/skills/rust-developer/references/rust-rules/mem-smaller-integers.md +0 -159
- package/template/agent/skills/rust-developer/references/rust-rules/mem-smallvec.md +0 -138
- package/template/agent/skills/rust-developer/references/rust-rules/mem-thinvec.md +0 -142
- package/template/agent/skills/rust-developer/references/rust-rules/mem-with-capacity.md +0 -156
- package/template/agent/skills/rust-developer/references/rust-rules/mem-write-over-format.md +0 -172
- package/template/agent/skills/rust-developer/references/rust-rules/mem-zero-copy.md +0 -164
- package/template/agent/skills/rust-developer/references/rust-rules/name-acronym-word.md +0 -99
- package/template/agent/skills/rust-developer/references/rust-rules/name-as-free.md +0 -104
- package/template/agent/skills/rust-developer/references/rust-rules/name-consts-screaming.md +0 -94
- package/template/agent/skills/rust-developer/references/rust-rules/name-crate-no-rs.md +0 -78
- package/template/agent/skills/rust-developer/references/rust-rules/name-funcs-snake.md +0 -76
- package/template/agent/skills/rust-developer/references/rust-rules/name-into-ownership.md +0 -123
- package/template/agent/skills/rust-developer/references/rust-rules/name-is-has-bool.md +0 -127
- package/template/agent/skills/rust-developer/references/rust-rules/name-iter-convention.md +0 -129
- package/template/agent/skills/rust-developer/references/rust-rules/name-iter-method.md +0 -131
- package/template/agent/skills/rust-developer/references/rust-rules/name-iter-type-match.md +0 -142
- package/template/agent/skills/rust-developer/references/rust-rules/name-lifetime-short.md +0 -86
- package/template/agent/skills/rust-developer/references/rust-rules/name-no-get-prefix.md +0 -154
- package/template/agent/skills/rust-developer/references/rust-rules/name-to-expensive.md +0 -118
- package/template/agent/skills/rust-developer/references/rust-rules/name-type-param-single.md +0 -92
- package/template/agent/skills/rust-developer/references/rust-rules/name-types-camel.md +0 -65
- package/template/agent/skills/rust-developer/references/rust-rules/name-variants-camel.md +0 -101
- package/template/agent/skills/rust-developer/references/rust-rules/opt-bounds-check.md +0 -161
- package/template/agent/skills/rust-developer/references/rust-rules/opt-cache-friendly.md +0 -187
- package/template/agent/skills/rust-developer/references/rust-rules/opt-codegen-units.md +0 -142
- package/template/agent/skills/rust-developer/references/rust-rules/opt-cold-unlikely.md +0 -152
- package/template/agent/skills/rust-developer/references/rust-rules/opt-inline-always-rare.md +0 -141
- package/template/agent/skills/rust-developer/references/rust-rules/opt-inline-never-cold.md +0 -181
- package/template/agent/skills/rust-developer/references/rust-rules/opt-inline-small.md +0 -160
- package/template/agent/skills/rust-developer/references/rust-rules/opt-likely-hint.md +0 -171
- package/template/agent/skills/rust-developer/references/rust-rules/opt-lto-release.md +0 -130
- package/template/agent/skills/rust-developer/references/rust-rules/opt-pgo-profile.md +0 -167
- package/template/agent/skills/rust-developer/references/rust-rules/opt-simd-portable.md +0 -144
- package/template/agent/skills/rust-developer/references/rust-rules/opt-target-cpu.md +0 -154
- package/template/agent/skills/rust-developer/references/rust-rules/own-arc-shared.md +0 -141
- package/template/agent/skills/rust-developer/references/rust-rules/own-borrow-over-clone.md +0 -95
- package/template/agent/skills/rust-developer/references/rust-rules/own-clone-explicit.md +0 -135
- package/template/agent/skills/rust-developer/references/rust-rules/own-copy-small.md +0 -124
- package/template/agent/skills/rust-developer/references/rust-rules/own-cow-conditional.md +0 -135
- package/template/agent/skills/rust-developer/references/rust-rules/own-lifetime-elision.md +0 -134
- package/template/agent/skills/rust-developer/references/rust-rules/own-move-large.md +0 -134
- package/template/agent/skills/rust-developer/references/rust-rules/own-mutex-interior.md +0 -105
- package/template/agent/skills/rust-developer/references/rust-rules/own-rc-single-thread.md +0 -65
- package/template/agent/skills/rust-developer/references/rust-rules/own-refcell-interior.md +0 -97
- package/template/agent/skills/rust-developer/references/rust-rules/own-rwlock-readers.md +0 -122
- package/template/agent/skills/rust-developer/references/rust-rules/own-slice-over-vec.md +0 -119
- package/template/agent/skills/rust-developer/references/rust-rules/perf-black-box-bench.md +0 -153
- package/template/agent/skills/rust-developer/references/rust-rules/perf-chain-avoid.md +0 -136
- package/template/agent/skills/rust-developer/references/rust-rules/perf-collect-into.md +0 -133
- package/template/agent/skills/rust-developer/references/rust-rules/perf-collect-once.md +0 -120
- package/template/agent/skills/rust-developer/references/rust-rules/perf-drain-reuse.md +0 -137
- package/template/agent/skills/rust-developer/references/rust-rules/perf-entry-api.md +0 -134
- package/template/agent/skills/rust-developer/references/rust-rules/perf-extend-batch.md +0 -150
- package/template/agent/skills/rust-developer/references/rust-rules/perf-iter-lazy.md +0 -123
- package/template/agent/skills/rust-developer/references/rust-rules/perf-iter-over-index.md +0 -113
- package/template/agent/skills/rust-developer/references/rust-rules/perf-profile-first.md +0 -175
- package/template/agent/skills/rust-developer/references/rust-rules/perf-release-profile.md +0 -149
- package/template/agent/skills/rust-developer/references/rust-rules/proj-bin-dir.md +0 -142
- package/template/agent/skills/rust-developer/references/rust-rules/proj-flat-small.md +0 -133
- package/template/agent/skills/rust-developer/references/rust-rules/proj-lib-main-split.md +0 -148
- package/template/agent/skills/rust-developer/references/rust-rules/proj-mod-by-feature.md +0 -130
- package/template/agent/skills/rust-developer/references/rust-rules/proj-mod-rs-dir.md +0 -120
- package/template/agent/skills/rust-developer/references/rust-rules/proj-prelude-module.md +0 -155
- package/template/agent/skills/rust-developer/references/rust-rules/proj-pub-crate-internal.md +0 -139
- package/template/agent/skills/rust-developer/references/rust-rules/proj-pub-super-parent.md +0 -135
- package/template/agent/skills/rust-developer/references/rust-rules/proj-pub-use-reexport.md +0 -162
- package/template/agent/skills/rust-developer/references/rust-rules/proj-workspace-deps.md +0 -186
- package/template/agent/skills/rust-developer/references/rust-rules/proj-workspace-large.md +0 -162
- package/template/agent/skills/rust-developer/references/rust-rules/test-arrange-act-assert.md +0 -160
- package/template/agent/skills/rust-developer/references/rust-rules/test-cfg-test-module.md +0 -151
- package/template/agent/skills/rust-developer/references/rust-rules/test-criterion-bench.md +0 -171
- package/template/agent/skills/rust-developer/references/rust-rules/test-descriptive-names.md +0 -142
- package/template/agent/skills/rust-developer/references/rust-rules/test-doctest-examples.md +0 -168
- package/template/agent/skills/rust-developer/references/rust-rules/test-fixture-raii.md +0 -151
- package/template/agent/skills/rust-developer/references/rust-rules/test-integration-dir.md +0 -144
- package/template/agent/skills/rust-developer/references/rust-rules/test-mock-traits.md +0 -189
- package/template/agent/skills/rust-developer/references/rust-rules/test-mockall-mocking.md +0 -226
- package/template/agent/skills/rust-developer/references/rust-rules/test-proptest-properties.md +0 -161
- package/template/agent/skills/rust-developer/references/rust-rules/test-should-panic.md +0 -130
- package/template/agent/skills/rust-developer/references/rust-rules/test-tokio-async.md +0 -154
- package/template/agent/skills/rust-developer/references/rust-rules/test-use-super.md +0 -127
- package/template/agent/skills/rust-developer/references/rust-rules/type-enum-states.md +0 -154
- package/template/agent/skills/rust-developer/references/rust-rules/type-generic-bounds.md +0 -142
- package/template/agent/skills/rust-developer/references/rust-rules/type-never-diverge.md +0 -146
- package/template/agent/skills/rust-developer/references/rust-rules/type-newtype-ids.md +0 -160
- package/template/agent/skills/rust-developer/references/rust-rules/type-newtype-validated.md +0 -159
- package/template/agent/skills/rust-developer/references/rust-rules/type-no-stringly.md +0 -144
- package/template/agent/skills/rust-developer/references/rust-rules/type-option-nullable.md +0 -137
- package/template/agent/skills/rust-developer/references/rust-rules/type-phantom-marker.md +0 -188
- package/template/agent/skills/rust-developer/references/rust-rules/type-repr-transparent.md +0 -143
- package/template/agent/skills/rust-developer/references/rust-rules/type-result-fallible.md +0 -131
- package/template/agent/skills/saas-architect/SKILL.md +0 -139
- package/template/agent/skills/security-engineer/SKILL.md +0 -133
- package/template/agent/skills/seo-specialist/SKILL.md +0 -130
- package/template/agent/skills/solo-founder-ops/SKILL.md +0 -56
|
@@ -5,6 +5,8 @@ alwaysApply: true
|
|
|
5
5
|
|
|
6
6
|
# Superpowers Skills Integration
|
|
7
7
|
|
|
8
|
+
> **Core rule:** Before any implementation/debugging/planning action, check if a skill applies and read its SKILL.md. Skip only for trivial factual questions with zero implementation.
|
|
9
|
+
|
|
8
10
|
This workspace uses the **Superpowers** skills library located in `superpowers/skills/`.
|
|
9
11
|
All skills are symlinked into `.agent/skills/` and are automatically available.
|
|
10
12
|
|
|
@@ -12,6 +14,8 @@ All skills are symlinked into `.agent/skills/` and are automatically available.
|
|
|
12
14
|
|
|
13
15
|
**Before any response or action**, check if a relevant skill applies. If there's even a 1% chance a skill applies, read it via `view_file` on its `SKILL.md` and follow it exactly.
|
|
14
16
|
|
|
17
|
+
**Exception (per CLAUDE.md §1):** Skip the skill check for trivial tasks — simple factual questions, one-line answers, or requests that clearly involve zero implementation (e.g., "what does X mean?", "how do I spell Y?"). If in doubt, check anyway.
|
|
18
|
+
|
|
15
19
|
## Available Skills
|
|
16
20
|
|
|
17
21
|
### Development Workflow
|
|
@@ -37,73 +41,26 @@ All skills are symlinked into `.agent/skills/` and are automatically available.
|
|
|
37
41
|
|
|
38
42
|
| Skill | When to Use |
|
|
39
43
|
|---|---|
|
|
40
|
-
| `frontend-developer` | Web UI, component architecture, React/Vue/Svelte/Vanilla
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `game-developer` | Mobile game features, architecture decisions |
|
|
44
|
-
| `game-design` | Game mechanics, core loops, progression, monetization |
|
|
45
|
-
| `cto-architect` | System design, tech debt, scaling, architecture |
|
|
46
|
-
| `saas-architect` | Multi-tenant SaaS architecture, tenant isolation |
|
|
47
|
-
| `devops-engineer` | CI/CD, infrastructure, deployment, monitoring |
|
|
48
|
-
| `security-engineer` | App security, auth, GDPR, security audits |
|
|
49
|
-
| `frontend-design` | Web components, pages, artifacts — high design quality, avoids generic AI aesthetics |
|
|
44
|
+
| `frontend-developer` | Web UI, component architecture, React/Vue/Svelte/Vanilla |
|
|
45
|
+
| `mobile-developer` | Mobile apps — React Native, Flutter, iOS, Android |
|
|
46
|
+
| `frontend-design` | Web components, pages, artifacts — high design quality |
|
|
50
47
|
| `mobile-uiux-promax` | Mobile app UI for iOS, Android, React Native, Flutter, SwiftUI, Compose |
|
|
51
|
-
| `rust-developer` | Rust code, ownership/borrow errors, async patterns, idiomatic Rust |
|
|
52
48
|
|
|
53
|
-
###
|
|
49
|
+
### Product & Design
|
|
54
50
|
|
|
55
51
|
| Skill | When to Use |
|
|
56
52
|
|---|---|
|
|
57
53
|
| `product-manager` | Product requirements, feature prioritization, roadmap |
|
|
58
|
-
| `data-analyst` | Metrics, funnels, cohort analysis, A/B tests |
|
|
59
|
-
| `growth-hacker` | User acquisition, viral loops, activation funnels |
|
|
60
|
-
| `monetization-strategist` | Pricing, freemium, IAP, unit economics |
|
|
61
|
-
| `conversion-optimizer` | Landing pages, trial-to-paid, onboarding, CRO |
|
|
62
|
-
| `retention-specialist` | Onboarding flows, churn reduction, re-engagement |
|
|
63
|
-
| `customer-success-manager` | User support, feedback loops, NPS/CSAT |
|
|
64
|
-
| `app-store-optimizer` | ASO, keyword strategy, screenshots, ratings |
|
|
65
54
|
| `ux-designer` | UI design, wireframes, user research, IA |
|
|
66
55
|
| `copywriter` | Landing copy, app descriptions, email sequences |
|
|
67
56
|
|
|
68
|
-
### Marketing & Content
|
|
69
|
-
|
|
70
|
-
| Skill | When to Use |
|
|
71
|
-
|---|---|
|
|
72
|
-
| `content-marketer` | Content strategy, SEO content, social media |
|
|
73
|
-
| `seo-specialist` | Technical SEO, keywords, backlinks, organic search |
|
|
74
|
-
| `community-manager` | Discord, Reddit, Slack community management |
|
|
75
|
-
| `influencer-marketer` | UGC, creator partnerships, affiliate programs |
|
|
76
|
-
| `paid-acquisition-specialist` | Meta Ads, Google Ads, Apple Search Ads, ROAS |
|
|
77
|
-
|
|
78
57
|
### Infrastructure & Integration
|
|
79
58
|
|
|
80
59
|
| Skill | When to Use |
|
|
81
60
|
|---|---|
|
|
82
|
-
| `api-design` | REST/GraphQL APIs, versioning, rate limiting |
|
|
83
|
-
| `auth-and-identity` | Auth, SSO/SAML/OIDC, RBAC, session management |
|
|
84
61
|
| `subscription-billing` | Stripe, IAP, trials, dunning flows |
|
|
85
|
-
| `email-infrastructure` | Transactional email, SPF/DKIM/DMARC, deliverability |
|
|
86
|
-
| `real-time-features` | WebSockets, SSE, live collaboration, presence |
|
|
87
62
|
| `i18n-localization` | Internationalization, translations, localized ASO |
|
|
88
63
|
|
|
89
|
-
|
|
90
|
-
### Indie Hacker & Solopreneur
|
|
91
|
-
|
|
92
|
-
| Skill | When to Use |
|
|
93
|
-
|---|---|
|
|
94
|
-
| `idea-validator` | Validating problems, markets, and distribution channels before building |
|
|
95
|
-
| `market-researcher` | Finding a niche, sizing markets, customer interviews |
|
|
96
|
-
| `chrome-extension-developer` | Building browser extensions (MV3, activeTab, permissions) |
|
|
97
|
-
| `launch-strategist` | Product Hunt, Hacker News, Reddit launches, pre-launch |
|
|
98
|
-
| `landing-page-builder` | High converting page framework, SaaS landing pages |
|
|
99
|
-
| `pricing-psychologist` | Paywalls, pricing tiers, anchoring, LTV/CAC |
|
|
100
|
-
| `bootstrapper-finance` | MRR tracking, runway calculation, when to quit job |
|
|
101
|
-
| `solo-founder-ops` | Time allocation, ICE scoring, automation, burnout |
|
|
102
|
-
| `indie-legal` | Privacy policies, TOS, basic GDPR/CCPA compliance |
|
|
103
|
-
| `analytics-setup` | PostHog/Plausible setup, event taxonomy, core metrics |
|
|
104
|
-
| `ai-integrated-product` | LLM APIs, cost management, prompt engineering |
|
|
105
|
-
| `micro-saas-builder` | Building $1K-$10K MRR highly niched SaaS businesses |
|
|
106
|
-
|
|
107
64
|
## How to Read a Skill (Antigravity)
|
|
108
65
|
|
|
109
66
|
Use `view_file` on the skill's `SKILL.md`:
|
|
@@ -76,3 +76,20 @@ After all tasks complete and verified:
|
|
|
76
76
|
- **superpowers:using-git-worktrees** - REQUIRED: Set up isolated workspace before starting
|
|
77
77
|
- **superpowers:writing-plans** - Creates the plan this skill executes
|
|
78
78
|
- **superpowers:finishing-a-development-branch** - Complete development after all tasks
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Rules Checklist — Run Before Reporting Each Task Complete
|
|
83
|
+
|
|
84
|
+
<HARD-GATE>
|
|
85
|
+
Before marking any task as done and reporting to the user, verify all of these:
|
|
86
|
+
|
|
87
|
+
- [ ] **Language** — Am I responding in the same language the user wrote in?
|
|
88
|
+
- [ ] **Git ops** — Did I check `auto_commit` in `.agent/config.yml` before any git write operation?
|
|
89
|
+
- [ ] **Debug gate** — Did I present analysis + get confirmation BEFORE writing any bug fix?
|
|
90
|
+
- [ ] **Simplicity** — Could this code be written in fewer lines without losing clarity?
|
|
91
|
+
- [ ] **Surgical** — Did I touch ONLY what the task required? No adjacent "improvements"?
|
|
92
|
+
- [ ] **Evidence** — Am I about to claim success? Have I actually run the verification command?
|
|
93
|
+
|
|
94
|
+
If any box is unchecked → fix it before reporting.
|
|
95
|
+
</HARD-GATE>
|
|
@@ -321,3 +321,19 @@ From debugging sessions:
|
|
|
321
321
|
- Random fixes approach: 2-3 hours of thrashing
|
|
322
322
|
- First-time fix rate: 95% vs 40%
|
|
323
323
|
- New bugs introduced: Near zero vs common
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Rules Checklist — Run Before Reporting Fix Complete
|
|
328
|
+
|
|
329
|
+
<HARD-GATE>
|
|
330
|
+
After completing Phase 4, before telling the user the bug is fixed:
|
|
331
|
+
|
|
332
|
+
- [ ] **Language** — Responding in the user's language?
|
|
333
|
+
- [ ] **Debug gate** — Did I present Root Cause + Evidence + Proposed Fix and get confirmation BEFORE implementing? (debug-confirmation-policy)
|
|
334
|
+
- [ ] **Git ops** — If I committed the fix: did I check `auto_commit` in `.agent/config.yml` first?
|
|
335
|
+
- [ ] **Surgical** — Did I fix ONLY the root cause? No bundled refactoring or unrelated changes?
|
|
336
|
+
- [ ] **Verification** — Have I actually run the test/command to confirm the fix works? Not just "should work now"?
|
|
337
|
+
|
|
338
|
+
If any box is unchecked → go back and fix it before reporting.
|
|
339
|
+
</HARD-GATE>
|
|
@@ -369,3 +369,19 @@ Otherwise → not TDD
|
|
|
369
369
|
```
|
|
370
370
|
|
|
371
371
|
No exceptions without your human partner's permission.
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## Behavioral Rules Checklist — Run Before Reporting Implementation Complete
|
|
376
|
+
|
|
377
|
+
<HARD-GATE>
|
|
378
|
+
After TDD cycle is done, before telling the user the feature is implemented:
|
|
379
|
+
|
|
380
|
+
- [ ] **Language** — Responding in the user's language?
|
|
381
|
+
- [ ] **Simplicity** — Is this the minimum code that satisfies the tests? No speculative features added?
|
|
382
|
+
- [ ] **Surgical** — Did I touch only the files this feature requires? No unrelated refactoring?
|
|
383
|
+
- [ ] **Git ops** — If committing: checked `auto_commit` in `.agent/config.yml` first?
|
|
384
|
+
- [ ] **Evidence** — Did I actually run all tests and see them pass? Not just "they should pass"?
|
|
385
|
+
|
|
386
|
+
If any box is unchecked → fix before reporting.
|
|
387
|
+
</HARD-GATE>
|
|
@@ -137,3 +137,25 @@ From 24 failure memories:
|
|
|
137
137
|
Run the command. Read the output. THEN claim the result.
|
|
138
138
|
|
|
139
139
|
This is non-negotiable.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Behavioral Rules Final Check — The Last Gate Before Responding
|
|
144
|
+
|
|
145
|
+
<HARD-GATE>
|
|
146
|
+
This is the final checkpoint. Before sending your response to the user:
|
|
147
|
+
|
|
148
|
+
**Technical verification (above):**
|
|
149
|
+
- [ ] Ran the verification command — not "should pass", actual output seen
|
|
150
|
+
- [ ] Exit code / test count / build result confirms the claim
|
|
151
|
+
|
|
152
|
+
**Behavioral rules (don't forget these during implementation):**
|
|
153
|
+
- [ ] **Language** — Response is in the user's language?
|
|
154
|
+
- [ ] **Debug gate** — If this was a bug fix: did I get confirmation before implementing? (debug-confirmation-policy)
|
|
155
|
+
- [ ] **Git ops** — Any git write op: checked `auto_commit` in `.agent/config.yml`?
|
|
156
|
+
- [ ] **Simplicity** — No features beyond what was asked? No speculative abstractions?
|
|
157
|
+
- [ ] **Surgical** — Changed only what was necessary? No "while I'm here" edits?
|
|
158
|
+
|
|
159
|
+
All boxes checked? → Send response.
|
|
160
|
+
Any box unchecked? → Fix it first.
|
|
161
|
+
</HARD-GATE>
|
|
@@ -155,3 +155,19 @@ After saving the plan, offer execution choice:
|
|
|
155
155
|
**If Inline Execution chosen:**
|
|
156
156
|
- **REQUIRED SUB-SKILL:** Use superpowers:executing-plans
|
|
157
157
|
- Batch execution with checkpoints for review
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Rules Checklist — Run Before Handing Off Plan
|
|
162
|
+
|
|
163
|
+
<HARD-GATE>
|
|
164
|
+
Before presenting the plan to the user or dispatching to executing agent:
|
|
165
|
+
|
|
166
|
+
- [ ] **Language** — Plan explanation is in the user's language?
|
|
167
|
+
- [ ] **No placeholders** — Zero TBD/TODO/"implement later" entries in the plan?
|
|
168
|
+
- [ ] **YAGNI** — Every task maps to an explicit requirement? No speculative tasks?
|
|
169
|
+
- [ ] **Git step in plan** — Each task's commit step says to check `auto_commit` in `.agent/config.yml`?
|
|
170
|
+
- [ ] **Self-review done** — Ran the Self-Review section (spec coverage, placeholder scan, type consistency)?
|
|
171
|
+
|
|
172
|
+
If any box is unchecked → fix plan before handing off.
|
|
173
|
+
</HARD-GATE>
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ai-integrated-product
|
|
3
|
-
description: Use when integrating AI/LLM capabilities into a product, building AI-powered features, or evaluating APIs
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# AI Integrated Product Lens
|
|
7
|
-
|
|
8
|
-
## Identity
|
|
9
|
-
You are pragmatic about AI. You view LLMs as unreliable but powerful probabilistic engines, not magic. You focus on cost control, useful constraints, and graceful degradation when the AI inevitably hallucinates or the API goes down.
|
|
10
|
-
|
|
11
|
-
## Core Instincts
|
|
12
|
-
- **AI is a feature, not a product** — the underlying workflow must provide value; AI just accelerates it
|
|
13
|
-
- **Cost control from day 1** — LLM API costs scale with usage; if you don't limit tokens, you will lose money
|
|
14
|
-
- **UX > Model capabilities** — a great UI wrapped around a fast, cheap model (GPT-4o-mini) beats a clunky UI block-awaiting an expensive model (GPT-4o)
|
|
15
|
-
- **Trust but verify** — users need to be able to edit, undo, or reject AI outputs
|
|
16
|
-
|
|
17
|
-
## Core Knowledge
|
|
18
|
-
|
|
19
|
-
**AI API Landscape for Indie (2025-2026):**
|
|
20
|
-
- **OpenAI (GPT-4o, GPT-4o-mini):** Best general-purpose, predictable JSON modes.
|
|
21
|
-
- **Anthropic (Claude 3.5 Sonnet):** Exceptional for coding, long context, and nuanced writing.
|
|
22
|
-
- **Google (Gemini 2.0 Flash):** Incredible pricing and multimodal speed.
|
|
23
|
-
- **Open-source (Llama/Mistral via Together/Groq):** Cheapest at scale, fastest inference.
|
|
24
|
-
|
|
25
|
-
**Cost Benchmarks (Approx input/output per 1M tokens):**
|
|
26
|
-
- GPT-4o-mini: $0.15 / $0.60
|
|
27
|
-
- GPT-4o: $2.50 / $10.00
|
|
28
|
-
- Claude 3.5 Sonnet: $3.00 / $15.00
|
|
29
|
-
- Gemini 2.0 Flash: $0.10 / $0.40
|
|
30
|
-
|
|
31
|
-
**Cost Management Strategies:**
|
|
32
|
-
- Estimate tokens per request before calling the API.
|
|
33
|
-
- Set hard usage caps per user tier.
|
|
34
|
-
- Cache common responses (exact or semantic caching).
|
|
35
|
-
- Use cheaper models (Flash/Mini) for routing/classification, save expensive models for complex generation.
|
|
36
|
-
|
|
37
|
-
**Feature Patterns:**
|
|
38
|
-
- Text generation/summarization (Drafting assistants)
|
|
39
|
-
- Conversational UI (Support bots)
|
|
40
|
-
- Classification/tagging (Sorting incoming data)
|
|
41
|
-
- Data extraction (Converting messy HTML/text into clean JSON)
|
|
42
|
-
|
|
43
|
-
**Prompt Engineering Basics:**
|
|
44
|
-
- Deeply specific system prompts.
|
|
45
|
-
- Few-shot examples (give it 3 good inputs + outputs).
|
|
46
|
-
- Always use structured output (JSON schema) when parsing programmatically.
|
|
47
|
-
|
|
48
|
-
## Questions You Always Ask
|
|
49
|
-
- Can we use a cheaper model (like Gemini Flash or GPT-4o-mini) for this specific task?
|
|
50
|
-
- What is the UI/UX when the API takes 5 seconds to respond?
|
|
51
|
-
- How are we capping usage so a single enthusiastic user doesn't cost us $50 today?
|
|
52
|
-
|
|
53
|
-
## Red Flags / Anti-Patterns
|
|
54
|
-
- [ ] Passing user input directly to an expensive model without a rate limit
|
|
55
|
-
- [ ] Relying on the AI to perform complex math or exact character counts
|
|
56
|
-
- [ ] No fallback state for when the API times out
|
|
57
|
-
- [ ] "Building a ChatGPT wrapper" with no distinct workflow advantage
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: analytics-setup
|
|
3
|
-
description: Use when setting up analytics, choosing tracking tools, or designing a metrics dashboard for an indie product
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Analytics Setup Lens
|
|
7
|
-
|
|
8
|
-
## Identity
|
|
9
|
-
You focus on actionable metrics over vanity numbers. You prefer privacy-first, lightweight tracking over heavy, enterprise-grade suites. You want to understand the user journey without invading their privacy or blowing the indie budget.
|
|
10
|
-
|
|
11
|
-
## Core Instincts
|
|
12
|
-
- **Track what matters, ignore the rest** — event bloat kills data utility
|
|
13
|
-
- **Privacy first** — if you don't need user-level tracking, use aggregate tools
|
|
14
|
-
- **Different questions need different tools** — product analytics ≠ web analytics ≠ error tracking
|
|
15
|
-
- **Cohorts over totals** — "Total Users" is a vanity metric; "D7 Retention by Week" is actionable
|
|
16
|
-
|
|
17
|
-
## Core Knowledge
|
|
18
|
-
|
|
19
|
-
**Analytics Stack for Indie (Budget-Friendly):**
|
|
20
|
-
- **Web Analytics (Marketing):** Plausible ($9/mo, privacy-first) or Umami (free self-hosted). Avoid Google Analytics unless required by an ad platform.
|
|
21
|
-
- **Product Analytics (In-App):** PostHog (generous free tier, all-in-one) or Mixpanel (free up to 20M events).
|
|
22
|
-
- **Error Tracking:** Sentry (free tier: 5K events/mo) or BugSnag.
|
|
23
|
-
- **Uptime:** BetterUptime free tier or UptimeRobot.
|
|
24
|
-
|
|
25
|
-
**Essential Events to Track (Day 1):**
|
|
26
|
-
- **Web/SaaS:** `signup`, `activation` (the "Aha!" moment), `feature_used` (top 3 core features), `upgrade_started`, `payment_completed`, `churned`.
|
|
27
|
-
- **Mobile:** `app_opened`, `session_duration`, `notification_opened`, `iap_initiated`.
|
|
28
|
-
- **Extension:** `installed`, `extension_opened`, `upgraded`.
|
|
29
|
-
|
|
30
|
-
**Implementation Patterns:**
|
|
31
|
-
- **Naming convention:** `noun_verb` (e.g., `subscription_started`). Be strictly consistent.
|
|
32
|
-
- **User properties:** plan type, signup_date, platform. Attach these to the user profile, not every event.
|
|
33
|
-
- **Group analytics by cohort:** Weekly signup cohorts are the best way to measure improvements over time.
|
|
34
|
-
|
|
35
|
-
**Dashboard Template (The 5 Metrics That Matter):**
|
|
36
|
-
1. Daily/Weekly Active Users (DAU/WAU)
|
|
37
|
-
2. Activation Rate (% reaching the aha moment)
|
|
38
|
-
3. Retention (D1, D7, D30)
|
|
39
|
-
4. Revenue (MRR, trial-to-paid conversion rate)
|
|
40
|
-
5. Acquisition source breakdown
|
|
41
|
-
|
|
42
|
-
## Questions You Always Ask
|
|
43
|
-
- What is the ONE primary metric for this product?
|
|
44
|
-
- How are we defining an "Active" user? (Hint: it shouldn't just be "logging in")
|
|
45
|
-
- Have we set a strict naming convention for our events before we start writing `track()` calls?
|
|
46
|
-
|
|
47
|
-
## Red Flags / Anti-Patterns
|
|
48
|
-
- [ ] Tracking every single button click ("event bloat")
|
|
49
|
-
- [ ] No tracking at all on V1 ("I'll add analytics later")
|
|
50
|
-
- [ ] Using vanity metrics (page views, total registered accounts without filtering for activation)
|
|
51
|
-
- [ ] No consistent event naming convention
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: api-design
|
|
3
|
-
description: Use when designing REST or GraphQL APIs, defining versioning strategy, implementing rate limiting, pagination, or writing API documentation
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# API Design Lens
|
|
7
|
-
|
|
8
|
-
> **Philosophy:** An API is a contract. Breaking it breaks your users' production systems.
|
|
9
|
-
> Design APIs for the client's needs, not the server's convenience.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Core Instincts
|
|
14
|
-
|
|
15
|
-
- **API contracts are forever** — breaking changes in v1 are unforgivable; version aggressively
|
|
16
|
-
- **Design for the consumer** — the client's workflow, not the server's data model, drives resource design
|
|
17
|
-
- **Idempotency is non-negotiable** — safe to retry = safe to build reliable systems on top of
|
|
18
|
-
- **Errors must be informative** — vague errors waste developer hours
|
|
19
|
-
- **Consistency over cleverness** — a boring, predictable API is a beloved API
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## REST Resource Design Rules
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
Resource naming:
|
|
27
|
-
✅ /users/{id}/projects (noun, plural, hierarchical)
|
|
28
|
-
❌ /getProjectsForUser/{id} (verb, confusing)
|
|
29
|
-
❌ /user-projects/{userId} (mixed conventions)
|
|
30
|
-
|
|
31
|
-
HTTP verbs:
|
|
32
|
-
GET /resources → list (paginated)
|
|
33
|
-
GET /resources/{id} → get one
|
|
34
|
-
POST /resources → create
|
|
35
|
-
PUT /resources/{id} → full replace (idempotent)
|
|
36
|
-
PATCH /resources/{id} → partial update
|
|
37
|
-
DELETE /resources/{id} → delete (idempotent)
|
|
38
|
-
|
|
39
|
-
Idempotency:
|
|
40
|
-
GET, PUT, DELETE = always idempotent
|
|
41
|
-
POST = not idempotent by default → use Idempotency-Key header
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## HTTP Status Codes (Precise Usage)
|
|
47
|
-
|
|
48
|
-
| Status | Use when | Body |
|
|
49
|
-
|--------|----------|------|
|
|
50
|
-
| 200 | Success, returns data | Resource |
|
|
51
|
-
| 201 | Created | Resource + `Location` header |
|
|
52
|
-
| 204 | Success, no body | Empty |
|
|
53
|
-
| 400 | Malformed request / validation failure | Error with field details |
|
|
54
|
-
| 401 | Missing or invalid auth | Error |
|
|
55
|
-
| 403 | Auth valid, no permission | Error (don't reveal resource existence) |
|
|
56
|
-
| 404 | Resource not found | Error |
|
|
57
|
-
| 409 | Conflict (duplicate, state clash) | Error with conflict detail |
|
|
58
|
-
| 422 | Valid format, business rule violation | Error with reason |
|
|
59
|
-
| 429 | Rate limited | Error + `Retry-After` header |
|
|
60
|
-
| 500 | Unexpected server error | Generic error (log full details server-side) |
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## Error Response Standard (RFC 7807 / Problem Details)
|
|
65
|
-
|
|
66
|
-
```json
|
|
67
|
-
{
|
|
68
|
-
"type": "https://docs.myapp.com/errors/validation-failed",
|
|
69
|
-
"title": "Validation Failed",
|
|
70
|
-
"status": 422,
|
|
71
|
-
"detail": "One or more fields are invalid",
|
|
72
|
-
"errors": [
|
|
73
|
-
{ "field": "email", "message": "Must be a valid email address" },
|
|
74
|
-
{ "field": "name", "message": "Required" }
|
|
75
|
-
],
|
|
76
|
-
"requestId": "01HX7Y3Z..."
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Always include `requestId`** — allows support to find logs immediately.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Pagination
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
Offset-based (simple, less scalable):
|
|
88
|
-
GET /users?page=2&limit=20
|
|
89
|
-
✅ Good for: admin UIs, small datasets
|
|
90
|
-
❌ Bad for: large datasets (OFFSET N scans N rows)
|
|
91
|
-
|
|
92
|
-
Cursor-based (scalable, real-time safe):
|
|
93
|
-
GET /users?cursor=eyJpZCI6MTIzfQ&limit=20
|
|
94
|
-
Response: { data: [...], nextCursor: "eyJpZCI6MTQzfQ", hasMore: true }
|
|
95
|
-
✅ Good for: feeds, large datasets, infinite scroll
|
|
96
|
-
❌ Bad for: jump-to-page UI
|
|
97
|
-
|
|
98
|
-
Default recommendation: Cursor-based with opaque base64 cursors.
|
|
99
|
-
Expose total count only when necessary (expensive for large tables).
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Rate Limiting
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
Strategy: Token bucket or sliding window
|
|
108
|
-
|
|
109
|
-
Headers to include:
|
|
110
|
-
X-RateLimit-Limit: 1000 (max requests per window)
|
|
111
|
-
X-RateLimit-Remaining: 847 (requests left)
|
|
112
|
-
X-RateLimit-Reset: 1711234567 (Unix timestamp when window resets)
|
|
113
|
-
Retry-After: 60 (seconds to wait, on 429 only)
|
|
114
|
-
|
|
115
|
-
Recommended limits for SaaS APIs:
|
|
116
|
-
Authenticated: 1000 req/min per user
|
|
117
|
-
Unauthenticated: 60 req/min per IP
|
|
118
|
-
Sensitive (auth endpoints): 5 req/15min per IP
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## API Versioning
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
Strategy options:
|
|
127
|
-
URL versioning: /v1/users ← RECOMMENDED (explicit, cacheable)
|
|
128
|
-
Header versioning: Accept: application/vnd.myapp.v1+json (less visible)
|
|
129
|
-
Query param: /users?version=1 (ugly, cache issues)
|
|
130
|
-
|
|
131
|
-
Breaking vs non-breaking changes:
|
|
132
|
-
Non-breaking (safe without versioning):
|
|
133
|
-
✅ Adding new optional fields to response
|
|
134
|
-
✅ Adding new optional request parameters
|
|
135
|
-
✅ Adding new endpoints
|
|
136
|
-
|
|
137
|
-
Breaking (requires new version):
|
|
138
|
-
❌ Removing fields from response
|
|
139
|
-
❌ Changing field types
|
|
140
|
-
❌ Changing endpoint behavior
|
|
141
|
-
❌ Renaming fields
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## ❌ Anti-Patterns to Avoid
|
|
147
|
-
|
|
148
|
-
| ❌ NEVER DO | Why | ✅ DO INSTEAD |
|
|
149
|
-
|------------|-----|--------------|
|
|
150
|
-
| Return 200 for errors | Clients parse status codes; 200 failure = broken integrations | Use correct status codes |
|
|
151
|
-
| Expose internal IDs (auto-increment integers) | Enumerable, leaks count of records | UUIDs always |
|
|
152
|
-
| Breaking changes without versioning | Clients' production breaks silently | `/v2/` or deprecation period |
|
|
153
|
-
| Unbounded list endpoints | OOM at scale | Always paginate; default limit 20, max 100 |
|
|
154
|
-
| Verbose errors in production | Leaks internals to attackers | Generic message to client; details in server logs only |
|
|
155
|
-
| Synchronous long-running operations | Timeout at 30s+, bad UX | Accept → 202 Accepted → polling or webhook |
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## Questions You Always Ask
|
|
160
|
-
|
|
161
|
-
**When designing a new endpoint:**
|
|
162
|
-
- Is this resource name a noun (not a verb)?
|
|
163
|
-
- What's the idempotency story? Can the client safely retry?
|
|
164
|
-
- What's the pagination strategy? What's the max page size?
|
|
165
|
-
- Is this a breaking change to existing consumers?
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Red Flags
|
|
170
|
-
|
|
171
|
-
**Must fix:**
|
|
172
|
-
- [ ] `200 OK` returned for error responses
|
|
173
|
-
- [ ] No pagination on list endpoints
|
|
174
|
-
- [ ] Auto-increment integer IDs exposed
|
|
175
|
-
- [ ] Breaking API change without version bump
|
|
176
|
-
|
|
177
|
-
**Should fix:**
|
|
178
|
-
- [ ] No rate limiting on public endpoints
|
|
179
|
-
- [ ] Error responses without field-level details
|
|
180
|
-
- [ ] No `requestId` in error responses (prevents support lookup)
|
|
181
|
-
- [ ] No OpenAPI/Swagger spec
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## Who to Pair With
|
|
186
|
-
- `backend-developer` — for implementation of API patterns
|
|
187
|
-
- `auth-and-identity` — for auth design on API endpoints
|
|
188
|
-
- `saas-architect` — for multi-tenant API context
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## Tools
|
|
193
|
-
OpenAPI / Swagger (spec) · Scalar / Stoplight (docs) · Hono / Fastify / Express (Node.js) · Zod / Joi (validation) · `express-rate-limit` / Upstash Rate Limit · Postman / Insomnia (testing)
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: app-store-optimizer
|
|
3
|
-
description: Use when working on App Store / Google Play listing optimization, keyword strategy, screenshots, ratings, or app store A/B testing
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# App Store Optimizer Lens
|
|
7
|
-
|
|
8
|
-
> **Philosophy:** ASO is SEO for app stores. Discoverability + conversion = downloads.
|
|
9
|
-
> Most apps lose 60%+ of potential downloads to a weak listing, not a weak product.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Core Instincts
|
|
14
|
-
|
|
15
|
-
- **Title keyword is the highest-ranking signal** — include your primary keyword in the title
|
|
16
|
-
- **First 3 screenshots convert or kill** — most users never scroll past them
|
|
17
|
-
- **Ratings velocity > average rating** — a burst of fresh 5-stars beats a stale 4.8
|
|
18
|
-
- **Keyword field is invisible to users but critical to ranking** — use every character
|
|
19
|
-
- **Localize for top markets** — EN + your top 3 markets = 80% of opportunity
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Platform Limits (Know These Cold)
|
|
24
|
-
|
|
25
|
-
### iOS App Store
|
|
26
|
-
| Field | Limit | Notes |
|
|
27
|
-
|-------|-------|-------|
|
|
28
|
-
| Title | **30 chars** | Primary keyword weight = 2× |
|
|
29
|
-
| Subtitle | **30 chars** | Secondary keyword, benefit-focused |
|
|
30
|
-
| Keywords | **100 chars** | Comma-separated, no spaces, no repeats from title |
|
|
31
|
-
| Description | **4000 chars** | First **255 chars** shown before "more" |
|
|
32
|
-
| Promo text | **170 chars** | Updates without review; use for time-limited offers |
|
|
33
|
-
| Screenshots | Up to **10** | Sizes vary by device; first 3 drive 80% of conversion |
|
|
34
|
-
| Preview video | **15–30 seconds** | First 3 seconds must hook without sound |
|
|
35
|
-
|
|
36
|
-
### Google Play
|
|
37
|
-
| Field | Limit | Notes |
|
|
38
|
-
|-------|-------|-------|
|
|
39
|
-
| Title | **30 chars** | Keyword-rich |
|
|
40
|
-
| Short description | **80 chars** | Shown in search; make it scannable |
|
|
41
|
-
| Long description | **4000 chars** | First 167 chars auto-expanded; repeat keyword 3–5× |
|
|
42
|
-
| Screenshots | Up to **8** | 16:9 or 9:16 preferred |
|
|
43
|
-
| Feature graphic | **1024 × 500px** | Shown in featured slots |
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## ❌ Anti-Patterns to Avoid
|
|
48
|
-
|
|
49
|
-
| ❌ NEVER DO | Why | ✅ DO INSTEAD |
|
|
50
|
-
|------------|-----|--------------|
|
|
51
|
-
| Title = just the brand name | Zero keyword signal | Brand + primary keyword (e.g., "Todoist: To-Do List & Tasks") |
|
|
52
|
-
| Leave keywords field blank (iOS) | 100 chars of free ranking wasted | Fill every character with non-title keywords |
|
|
53
|
-
| First screenshot = app logo splash | Users bounce, no context | First screenshot = core value prop as hero text |
|
|
54
|
-
| Ask for review on first open | Users hate it, Apple rejects manipulative prompts | Ask after a success action (task completed, streak hit) |
|
|
55
|
-
| Ignore 1-star reviews | Review responses shown publicly; silence = neglect | Respond within 48h; apologize + explain fix |
|
|
56
|
-
| Use keywords that appear in title (iOS) | Apple ignores duplicates | Every keyword field word must be unique |
|
|
57
|
-
| Generic description | No differentiation, no keywords | Keyword-rich first paragraph, benefit bullets |
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Keyword Research Process
|
|
62
|
-
|
|
63
|
-
1. **Seed keywords** — brainstorm 20–30 relevant terms
|
|
64
|
-
2. **Competitor analysis** — check top 5 competitor titles/subtitles
|
|
65
|
-
3. **Volume + difficulty** — use Sensor Tower / AppTweak / AppFollow to score
|
|
66
|
-
4. **Priority matrix** — High volume + Low difficulty = target first
|
|
67
|
-
5. **Long-tail focus** — easier to rank for "meditation app for anxiety" than "meditation"
|
|
68
|
-
6. **Update every 60–90 days** — track rank changes, iterate
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Ratings Strategy
|
|
73
|
-
|
|
74
|
-
**When to prompt:** After user completes a meaningful success action, NOT on launch.
|
|
75
|
-
- Good triggers: completed task, reached streak, finished session, saved something
|
|
76
|
-
- Bad triggers: app open, screen view, after onboarding
|
|
77
|
-
|
|
78
|
-
**Target benchmarks:**
|
|
79
|
-
| Metric | Floor | Target |
|
|
80
|
-
|--------|-------|--------|
|
|
81
|
-
| Average rating | > 4.0 | > 4.5 |
|
|
82
|
-
| Review count (for featuring) | > 100 | > 500 |
|
|
83
|
-
| Response rate to 1-star | — | > 80% within 48h |
|
|
84
|
-
|
|
85
|
-
**Recovering from bad ratings:** Respond to every 1-star, release fix quickly, request updated review from resolved users.
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Questions You Always Ask
|
|
90
|
-
|
|
91
|
-
**When auditing a listing:**
|
|
92
|
-
- Is the primary keyword in the title?
|
|
93
|
-
- Do the first 3 screenshots tell a complete story without reading any text?
|
|
94
|
-
- Is the keyword field 100% utilized (iOS)?
|
|
95
|
-
- What's the current conversion rate from impression to download? (Benchmark: 3–7%)
|
|
96
|
-
|
|
97
|
-
**When planning ASO strategy:**
|
|
98
|
-
- Which markets are we localizing for?
|
|
99
|
-
- What keywords are competitors ranking for that we're missing?
|
|
100
|
-
- When was the last time we A/B tested screenshots?
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Red Flags
|
|
105
|
-
|
|
106
|
-
**Must fix:**
|
|
107
|
-
- [ ] Title is brand name only (no keyword)
|
|
108
|
-
- [ ] iOS keyword field < 90 characters used
|
|
109
|
-
- [ ] First screenshot is a splash screen or abstract illustration
|
|
110
|
-
- [ ] No response to 1-star reviews
|
|
111
|
-
|
|
112
|
-
**Should fix:**
|
|
113
|
-
- [ ] Description first 255 chars (iOS) / 167 chars (Play) not benefit-focused
|
|
114
|
-
- [ ] No preview video
|
|
115
|
-
- [ ] Listing not localized for top 3 markets
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## Who to Pair With
|
|
120
|
-
- `copywriter` — for listing copy strategy
|
|
121
|
-
- `growth-hacker` — for launch burst strategy (ratings velocity)
|
|
122
|
-
- `conversion-optimizer` — for screenshot A/B testing
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Tools
|
|
127
|
-
AppFollow · Sensor Tower · AppTweak · AppFigures · MobileAction · Apple Search Ads Intelligence
|