100xprism 2.3.1

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.
Files changed (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/VERSION +1 -0
  4. package/adapters/antigravity.sh +14 -0
  5. package/adapters/claude-code.sh +160 -0
  6. package/adapters/codex.sh +13 -0
  7. package/adapters/copilot.sh +13 -0
  8. package/adapters/cursor.sh +13 -0
  9. package/adapters/gemini.sh +13 -0
  10. package/adapters/lib/__pycache__/modules.cpython-312.pyc +0 -0
  11. package/adapters/lib/modules.py +592 -0
  12. package/adapters/lib/shared.sh +83 -0
  13. package/adapters/lib/sync_plugins.py +113 -0
  14. package/adapters/windsurf.sh +15 -0
  15. package/bin/100xprism.js +29 -0
  16. package/get.sh +24 -0
  17. package/install-project.sh +82 -0
  18. package/install.sh +281 -0
  19. package/lib/adapters/windows.js +429 -0
  20. package/lib/bootstrap.js +33 -0
  21. package/lib/init.js +19 -0
  22. package/lib/install.js +18 -0
  23. package/lib/migrate.js +52 -0
  24. package/lib/platform.js +22 -0
  25. package/lib/update.js +29 -0
  26. package/modules/_lib/reference.md +77 -0
  27. package/modules/a11y-auditor/SKILL.md +151 -0
  28. package/modules/ab-test-setup/SKILL.md +266 -0
  29. package/modules/ab-test-setup/evals/evals.json +105 -0
  30. package/modules/ab-test-setup/references/sample-size-guide.md +263 -0
  31. package/modules/ab-test-setup/references/test-templates.md +277 -0
  32. package/modules/ad-creative/SKILL.md +362 -0
  33. package/modules/ad-creative/evals/evals.json +90 -0
  34. package/modules/ad-creative/references/generative-tools.md +637 -0
  35. package/modules/ad-creative/references/platform-specs.md +213 -0
  36. package/modules/ai-seo/SKILL.md +398 -0
  37. package/modules/ai-seo/evals/evals.json +90 -0
  38. package/modules/ai-seo/references/content-patterns.md +285 -0
  39. package/modules/ai-seo/references/platform-ranking-factors.md +152 -0
  40. package/modules/analytics-tracking/SKILL.md +309 -0
  41. package/modules/analytics-tracking/evals/evals.json +90 -0
  42. package/modules/analytics-tracking/references/event-library.md +260 -0
  43. package/modules/analytics-tracking/references/ga4-implementation.md +300 -0
  44. package/modules/analytics-tracking/references/gtm-implementation.md +390 -0
  45. package/modules/architect/SKILL.md +282 -0
  46. package/modules/branch/SKILL.md +105 -0
  47. package/modules/churn-prevention/SKILL.md +424 -0
  48. package/modules/churn-prevention/evals/evals.json +93 -0
  49. package/modules/churn-prevention/references/cancel-flow-patterns.md +316 -0
  50. package/modules/churn-prevention/references/dunning-playbook.md +408 -0
  51. package/modules/cloud-security/SKILL.md +240 -0
  52. package/modules/cold-email/SKILL.md +178 -0
  53. package/modules/cold-email/evals/evals.json +94 -0
  54. package/modules/cold-email/references/benchmarks.md +83 -0
  55. package/modules/cold-email/references/follow-up-sequences.md +81 -0
  56. package/modules/cold-email/references/frameworks.md +90 -0
  57. package/modules/cold-email/references/personalization.md +79 -0
  58. package/modules/cold-email/references/subject-lines.md +53 -0
  59. package/modules/commit/SKILL.md +195 -0
  60. package/modules/competitor-alternatives/SKILL.md +256 -0
  61. package/modules/competitor-alternatives/evals/evals.json +93 -0
  62. package/modules/competitor-alternatives/references/content-architecture.md +271 -0
  63. package/modules/competitor-alternatives/references/templates.md +223 -0
  64. package/modules/connect/SKILL.md +894 -0
  65. package/modules/content-strategy/SKILL.md +359 -0
  66. package/modules/content-strategy/evals/evals.json +90 -0
  67. package/modules/context-dump/SKILL.md +67 -0
  68. package/modules/copy-editing/SKILL.md +447 -0
  69. package/modules/copy-editing/evals/evals.json +89 -0
  70. package/modules/copy-editing/references/plain-english-alternatives.md +394 -0
  71. package/modules/copywriting/SKILL.md +271 -0
  72. package/modules/copywriting/evals/evals.json +111 -0
  73. package/modules/copywriting/references/cold-email-benchmarks.md +83 -0
  74. package/modules/copywriting/references/cold-email-follow-ups.md +81 -0
  75. package/modules/copywriting/references/cold-email-frameworks.md +90 -0
  76. package/modules/copywriting/references/cold-email-personalization.md +79 -0
  77. package/modules/copywriting/references/cold-email-subject-lines.md +53 -0
  78. package/modules/copywriting/references/copy-frameworks.md +344 -0
  79. package/modules/copywriting/references/email-copy-guidelines.md +113 -0
  80. package/modules/copywriting/references/email-types.md +515 -0
  81. package/modules/copywriting/references/natural-transitions.md +272 -0
  82. package/modules/copywriting/references/sequence-templates.md +168 -0
  83. package/modules/data-query/SKILL.md +58 -0
  84. package/modules/data-viz/SKILL.md +225 -0
  85. package/modules/db/SKILL.md +205 -0
  86. package/modules/db/db-engines/_router.md +24 -0
  87. package/modules/db/db-engines/athena.md +16 -0
  88. package/modules/db/db-engines/cloud-sql.md +16 -0
  89. package/modules/db/db-engines/databricks.md +14 -0
  90. package/modules/db/db-engines/oracle.md +14 -0
  91. package/modules/db/db-engines/postgres.md +15 -0
  92. package/modules/db/db-engines/presto.md +14 -0
  93. package/modules/db/db-engines/snowflake.md +14 -0
  94. package/modules/docs/SKILL.md +100 -0
  95. package/modules/email-sequence/SKILL.md +309 -0
  96. package/modules/email-sequence/evals/evals.json +93 -0
  97. package/modules/email-sequence/references/copy-guidelines.md +113 -0
  98. package/modules/email-sequence/references/email-types.md +515 -0
  99. package/modules/email-sequence/references/sequence-templates.md +168 -0
  100. package/modules/enterprise-design/SKILL.md +75 -0
  101. package/modules/eval/SKILL.md +105 -0
  102. package/modules/figma-translator/SKILL.md +49 -0
  103. package/modules/fix-bugs/SKILL.md +104 -0
  104. package/modules/form-cro/SKILL.md +429 -0
  105. package/modules/form-cro/evals/evals.json +90 -0
  106. package/modules/free-tool-strategy/SKILL.md +178 -0
  107. package/modules/free-tool-strategy/evals/evals.json +90 -0
  108. package/modules/free-tool-strategy/references/tool-types.md +217 -0
  109. package/modules/gate/SKILL.md +232 -0
  110. package/modules/grill-me/SKILL.md +59 -0
  111. package/modules/interaction-engineer/SKILL.md +49 -0
  112. package/modules/issue/SKILL.md +272 -0
  113. package/modules/launch/SKILL.md +345 -0
  114. package/modules/launch-strategy/SKILL.md +353 -0
  115. package/modules/launch-strategy/evals/evals.json +91 -0
  116. package/modules/lint/SKILL.md +126 -0
  117. package/modules/marketing-ideas/SKILL.md +167 -0
  118. package/modules/marketing-ideas/evals/evals.json +90 -0
  119. package/modules/marketing-ideas/references/ideas-by-category.md +366 -0
  120. package/modules/marketing-psychology/SKILL.md +455 -0
  121. package/modules/marketing-psychology/evals/evals.json +88 -0
  122. package/modules/motion-designer/SKILL.md +214 -0
  123. package/modules/onboarding-cro/SKILL.md +220 -0
  124. package/modules/onboarding-cro/evals/evals.json +92 -0
  125. package/modules/onboarding-cro/references/experiments.md +258 -0
  126. package/modules/orchestrate/SKILL.md +77 -0
  127. package/modules/page-cro/SKILL.md +182 -0
  128. package/modules/page-cro/evals/evals.json +111 -0
  129. package/modules/page-cro/references/experiments.md +248 -0
  130. package/modules/page-cro/references/paywall-experiments.md +164 -0
  131. package/modules/paid-ads/SKILL.md +315 -0
  132. package/modules/paid-ads/evals/evals.json +90 -0
  133. package/modules/paid-ads/references/ad-copy-templates.md +207 -0
  134. package/modules/paid-ads/references/audience-targeting.md +243 -0
  135. package/modules/paid-ads/references/platform-setup-checklists.md +277 -0
  136. package/modules/paywall-upgrade-cro/SKILL.md +227 -0
  137. package/modules/paywall-upgrade-cro/evals/evals.json +93 -0
  138. package/modules/paywall-upgrade-cro/references/experiments.md +164 -0
  139. package/modules/popup-cro/SKILL.md +453 -0
  140. package/modules/popup-cro/evals/evals.json +94 -0
  141. package/modules/pr/SKILL.md +203 -0
  142. package/modules/pricing-strategy/SKILL.md +231 -0
  143. package/modules/pricing-strategy/evals/evals.json +90 -0
  144. package/modules/pricing-strategy/references/research-methods.md +152 -0
  145. package/modules/pricing-strategy/references/tier-structure.md +232 -0
  146. package/modules/product-marketing-context/SKILL.md +241 -0
  147. package/modules/product-marketing-context/evals/evals.json +85 -0
  148. package/modules/programmatic-seo/SKILL.md +238 -0
  149. package/modules/programmatic-seo/evals/evals.json +94 -0
  150. package/modules/programmatic-seo/references/playbooks.md +308 -0
  151. package/modules/push/SKILL.md +202 -0
  152. package/modules/referral-program/SKILL.md +255 -0
  153. package/modules/referral-program/evals/evals.json +89 -0
  154. package/modules/referral-program/references/affiliate-programs.md +164 -0
  155. package/modules/referral-program/references/program-examples.md +143 -0
  156. package/modules/release/SKILL.md +293 -0
  157. package/modules/revops/SKILL.md +343 -0
  158. package/modules/revops/evals/evals.json +91 -0
  159. package/modules/revops/references/automation-playbooks.md +290 -0
  160. package/modules/revops/references/lifecycle-definitions.md +278 -0
  161. package/modules/revops/references/routing-rules.md +203 -0
  162. package/modules/revops/references/scoring-models.md +247 -0
  163. package/modules/sales-enablement/SKILL.md +349 -0
  164. package/modules/sales-enablement/evals/evals.json +91 -0
  165. package/modules/sales-enablement/references/deck-frameworks.md +263 -0
  166. package/modules/sales-enablement/references/demo-scripts.md +355 -0
  167. package/modules/sales-enablement/references/objection-library.md +270 -0
  168. package/modules/sales-enablement/references/one-pager-templates.md +208 -0
  169. package/modules/schema-markup/SKILL.md +179 -0
  170. package/modules/schema-markup/evals/evals.json +87 -0
  171. package/modules/schema-markup/references/schema-examples.md +398 -0
  172. package/modules/security/SKILL.md +138 -0
  173. package/modules/seo-audit/SKILL.md +412 -0
  174. package/modules/seo-audit/evals/evals.json +136 -0
  175. package/modules/seo-audit/references/ai-writing-detection.md +200 -0
  176. package/modules/seo-audit/references/content-patterns.md +285 -0
  177. package/modules/seo-audit/references/platform-ranking-factors.md +152 -0
  178. package/modules/signup-flow-cro/SKILL.md +359 -0
  179. package/modules/signup-flow-cro/evals/evals.json +88 -0
  180. package/modules/site-architecture/SKILL.md +357 -0
  181. package/modules/site-architecture/evals/evals.json +88 -0
  182. package/modules/site-architecture/references/mermaid-templates.md +216 -0
  183. package/modules/site-architecture/references/navigation-patterns.md +305 -0
  184. package/modules/site-architecture/references/site-type-templates.md +293 -0
  185. package/modules/social-content/SKILL.md +278 -0
  186. package/modules/social-content/evals/evals.json +92 -0
  187. package/modules/social-content/references/platforms.md +170 -0
  188. package/modules/social-content/references/post-templates.md +177 -0
  189. package/modules/social-content/references/reverse-engineering.md +195 -0
  190. package/modules/spec/SKILL.md +81 -0
  191. package/modules/subagents/SKILL.md +123 -0
  192. package/modules/techdebt/SKILL.md +71 -0
  193. package/modules/terminal-setup/SKILL.md +49 -0
  194. package/modules/test/SKILL.md +493 -0
  195. package/modules/test/references/e2e-patterns.md +294 -0
  196. package/modules/update-claude-md/SKILL.md +52 -0
  197. package/modules/visual-system-architect/SKILL.md +53 -0
  198. package/package.json +44 -0
  199. package/plugins/plugins.json +43 -0
  200. package/shell/aliases.sh +24 -0
  201. package/shell/check-update.sh +212 -0
  202. package/templates/.env.example +199 -0
  203. package/templates/docker-compose.md +46 -0
  204. package/templates/node-frontend.md +56 -0
  205. package/templates/node-fullstack.md +59 -0
  206. package/templates/python-api.md +57 -0
  207. package/update.sh +231 -0
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/env bash
2
+ # check-update.sh — daily version check + cache for 100xprism
3
+ #
4
+ # Usage:
5
+ # check-update.sh --silent Refresh cache only. No output.
6
+ # check-update.sh --notify Show banner + prompt if update available.
7
+ # check-update.sh --claude-hook Inject session notice if update available.
8
+
9
+ set -euo pipefail
10
+
11
+ REPO_DIR="${HUNDRED_X_REPO_OVERRIDE:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
12
+ STATE_DIR="$HOME/.100xprism"
13
+ CACHE_FILE="$STATE_DIR/update-cache"
14
+ FLAG="${1:-}"
15
+
16
+ YELLOW='\033[1;33m'
17
+ CYAN='\033[0;36m'
18
+ NC='\033[0m'
19
+
20
+ mkdir -p "$STATE_DIR"
21
+
22
+ # ── Cache helpers ─────────────────────────────────────────────────────────────
23
+
24
+ _cache_get() {
25
+ local key="$1"
26
+ if [[ ! -f "$CACHE_FILE" ]]; then
27
+ echo ""
28
+ return
29
+ fi
30
+ grep "^${key}=" "$CACHE_FILE" 2>/dev/null | cut -d= -f2- || true
31
+ }
32
+
33
+ _cache_set() {
34
+ local key="$1" value="$2"
35
+ touch "$CACHE_FILE"
36
+ local tmp
37
+ tmp="$(mktemp)"
38
+ grep -v "^${key}=" "$CACHE_FILE" > "$tmp" 2>/dev/null || true
39
+ echo "${key}=${value}" >> "$tmp"
40
+ mv "$tmp" "$CACHE_FILE"
41
+ }
42
+
43
+ # ── Version check ─────────────────────────────────────────────────────────────
44
+
45
+ _refresh_cache() {
46
+ local now
47
+ now="$(date +%s)"
48
+ local last_check
49
+ last_check="$(_cache_get last_check)"
50
+ last_check="${last_check:-0}"
51
+
52
+ local age=$(( now - last_check ))
53
+ if (( age < 86400 )); then
54
+ return # Cache is fresh — skip network call
55
+ fi
56
+
57
+ cd "$REPO_DIR"
58
+
59
+ # Fetch with timeout; on failure, update timestamp only to avoid retry storm
60
+ if ! git fetch origin main --quiet 2>/dev/null; then
61
+ _cache_set last_check "$now"
62
+ return
63
+ fi
64
+
65
+ local local_sha remote_sha
66
+ local_sha="$(git rev-parse HEAD 2>/dev/null || echo "unknown")"
67
+ remote_sha="$(git rev-parse origin/main 2>/dev/null || echo "unknown")"
68
+
69
+ local has_update="false"
70
+ local changelog=""
71
+
72
+ if [[ "$local_sha" != "$remote_sha" && "$local_sha" != "unknown" ]]; then
73
+ has_update="true"
74
+ changelog="$(git log --oneline "${local_sha}..origin/main" 2>/dev/null | head -5 | tr '\n' '|' | sed 's/|$//')"
75
+ fi
76
+
77
+ _cache_set last_check "$now"
78
+ _cache_set has_update "$has_update"
79
+ _cache_set local_sha "$local_sha"
80
+ _cache_set remote_sha "$remote_sha"
81
+ _cache_set changelog "$changelog"
82
+
83
+ # Clear snooze when no update
84
+ if [[ "$has_update" == "false" ]]; then
85
+ _cache_set snoozed_until "0"
86
+ fi
87
+ }
88
+
89
+ _fetch_release_notes() {
90
+ # Try GitHub Releases API first (requires gh CLI)
91
+ if command -v gh >/dev/null 2>&1; then
92
+ local notes
93
+ notes=$(gh release view --repo rajitsaha/100xprism --json body -q .body 2>/dev/null | head -20 || true)
94
+ if [[ -n "$notes" ]]; then
95
+ echo "$notes"
96
+ return
97
+ fi
98
+ fi
99
+ # Fallback: format cached commit messages
100
+ local changelog
101
+ changelog="$(_cache_get changelog)"
102
+ IFS='|' read -ra _lines <<< "$changelog"
103
+ for _line in "${_lines[@]}"; do
104
+ [[ -z "$_line" ]] && continue
105
+ echo "• ${_line#* }"
106
+ done
107
+ }
108
+
109
+ # ── Snooze helpers ────────────────────────────────────────────────────────────
110
+
111
+ _is_snoozed() {
112
+ local snoozed_until
113
+ snoozed_until="$(_cache_get snoozed_until)"
114
+ snoozed_until="${snoozed_until:-0}"
115
+ local now
116
+ now="$(date +%s)"
117
+ (( now < snoozed_until )) && return 0 || return 1
118
+ }
119
+
120
+ _snooze() {
121
+ local until=$(( $(date +%s) + 86400 ))
122
+ _cache_set snoozed_until "$until"
123
+ }
124
+
125
+ # ── Output modes ──────────────────────────────────────────────────────────────
126
+
127
+ _do_silent() {
128
+ _refresh_cache
129
+ }
130
+
131
+ _do_notify() {
132
+ # Read from cache only — no network call (that's _do_silent's job)
133
+ local has_update
134
+ has_update="$(_cache_get has_update)"
135
+ [[ "$has_update" == "true" ]] || return 0
136
+ _is_snoozed && return 0
137
+
138
+ # Only show prompt if stdin is a terminal
139
+ [[ -t 0 ]] || return 0
140
+
141
+ local local_sha remote_sha changelog
142
+ local_sha="$(_cache_get local_sha)"
143
+ remote_sha="$(_cache_get remote_sha)"
144
+ changelog="$(_cache_get changelog)"
145
+
146
+ local short_local="${local_sha:0:7}"
147
+ local short_remote="${remote_sha:0:7}"
148
+
149
+ echo ""
150
+ # shellcheck disable=SC2059
151
+ printf "${YELLOW}╔══════════════════════════════════════════════════════╗${NC}\n"
152
+ # shellcheck disable=SC2059
153
+ printf "${YELLOW}║${NC} %-52s${YELLOW}║${NC}\n" "100x Dev update available: $short_local → $short_remote"
154
+
155
+ local _notes
156
+ _notes="$(_fetch_release_notes)"
157
+ while IFS= read -r _note; do
158
+ [[ -z "$_note" ]] && continue
159
+ _note="${_note:0:50}"
160
+ # shellcheck disable=SC2059
161
+ printf "${YELLOW}║${NC} %-52s${YELLOW}║${NC}\n" "$_note"
162
+ done <<< "$_notes"
163
+
164
+ # shellcheck disable=SC2059
165
+ printf "${YELLOW}╚══════════════════════════════════════════════════════╝${NC}\n"
166
+ echo ""
167
+
168
+ read -rp "Update now? (Y/n): " _confirm
169
+ _confirm="${_confirm:-Y}"
170
+ if [[ "$_confirm" =~ ^[Yy]$ ]]; then
171
+ bash "$REPO_DIR/update.sh"
172
+ else
173
+ _snooze
174
+ echo -e "${CYAN}Reminder snoozed for 24h. Run \`100x-update\` when ready.${NC}"
175
+ fi
176
+ }
177
+
178
+ _do_claude_hook() {
179
+ local has_update
180
+ has_update="$(_cache_get has_update)"
181
+ [[ "$has_update" == "true" ]] || return 0
182
+ _is_snoozed && return 0
183
+
184
+ local local_sha remote_sha changelog
185
+ local_sha="$(_cache_get local_sha)"
186
+ remote_sha="$(_cache_get remote_sha)"
187
+ changelog="$(_cache_get changelog)"
188
+
189
+ local short_local="${local_sha:0:7}"
190
+ local short_remote="${remote_sha:0:7}"
191
+
192
+ echo "> 100x Dev update available ($short_local → $short_remote)"
193
+ local _notes
194
+ _notes="$(_fetch_release_notes)"
195
+ while IFS= read -r _note; do
196
+ [[ -z "$_note" ]] && continue
197
+ echo " ${_note:0:60}"
198
+ done <<< "$_notes"
199
+ echo "> Run \`100x-update\` in your terminal to upgrade."
200
+ }
201
+
202
+ # ── Dispatch ──────────────────────────────────────────────────────────────────
203
+
204
+ case "$FLAG" in
205
+ --silent) _do_silent ;;
206
+ --notify) _do_notify ;;
207
+ --claude-hook) _do_claude_hook ;;
208
+ *)
209
+ echo "Usage: check-update.sh [--silent|--notify|--claude-hook]" >&2
210
+ exit 1
211
+ ;;
212
+ esac
@@ -0,0 +1,199 @@
1
+ # =============================================================================
2
+ # .env.example — SaaS CLI Credential Template
3
+ # Generated by 100xprism | https://github.com/rajitatudemy/100xprism
4
+ #
5
+ # INSTRUCTIONS:
6
+ # 1. Copy this file: cp .env.example .env
7
+ # 2. Fill in only the services you use
8
+ # 3. NEVER commit .env to git — it is in .gitignore
9
+ # 4. Run `/connect` in Claude Code to authenticate all services
10
+ # =============================================================================
11
+
12
+ # =============================================================================
13
+ # VERSION CONTROL & ISSUE TRACKING
14
+ # =============================================================================
15
+
16
+ # GitHub — https://github.com/settings/tokens
17
+ # Scopes: repo, workflow, packages, admin:org (as needed)
18
+ GITHUB_TOKEN=
19
+
20
+ # Jira / Atlassian — https://id.atlassian.com/manage-profile/security/api-tokens
21
+ JIRA_URL=https://your-org.atlassian.net
22
+ JIRA_USER_EMAIL=
23
+ JIRA_API_TOKEN=
24
+ JIRA_PROJECT_KEY=
25
+
26
+ # Linear — https://linear.app/settings/api
27
+ LINEAR_API_KEY=
28
+
29
+ # =============================================================================
30
+ # CLOUD PLATFORMS
31
+ # =============================================================================
32
+
33
+ # AWS — https://console.aws.amazon.com/iam/home#/security_credentials
34
+ AWS_ACCESS_KEY_ID=
35
+ AWS_SECRET_ACCESS_KEY=
36
+ AWS_DEFAULT_REGION=us-east-1
37
+ # Optional: assume-role or named profile
38
+ # AWS_PROFILE=
39
+
40
+ # Google Cloud Platform — https://console.cloud.google.com/iam-admin/serviceaccounts
41
+ GCP_PROJECT_ID=
42
+ GCP_REGION=us-central1
43
+ # Path to your service account JSON key file
44
+ GOOGLE_APPLICATION_CREDENTIALS=
45
+
46
+ # Azure — https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps
47
+ AZURE_CLIENT_ID=
48
+ AZURE_CLIENT_SECRET=
49
+ AZURE_TENANT_ID=
50
+ AZURE_SUBSCRIPTION_ID=
51
+
52
+ # DigitalOcean — https://cloud.digitalocean.com/account/api/tokens
53
+ DIGITALOCEAN_ACCESS_TOKEN=
54
+
55
+ # =============================================================================
56
+ # DEPLOYMENT & HOSTING
57
+ # =============================================================================
58
+
59
+ # Vercel — https://vercel.com/account/tokens
60
+ VERCEL_TOKEN=
61
+ VERCEL_ORG_ID=
62
+ VERCEL_PROJECT_ID=
63
+
64
+ # Netlify — https://app.netlify.com/user/applications#personal-access-tokens
65
+ NETLIFY_AUTH_TOKEN=
66
+ NETLIFY_SITE_ID=
67
+
68
+ # Railway — https://railway.app/account/tokens
69
+ RAILWAY_TOKEN=
70
+
71
+ # Heroku — https://dashboard.heroku.com/account (API Key section)
72
+ HEROKU_API_KEY=
73
+
74
+ # Fly.io — https://fly.io/user/personal_access_tokens
75
+ FLY_API_TOKEN=
76
+
77
+ # Render — https://dashboard.render.com/u/settings#api-keys
78
+ RENDER_API_KEY=
79
+
80
+ # =============================================================================
81
+ # DATABASE / BACKEND-AS-A-SERVICE
82
+ # =============================================================================
83
+
84
+ # Supabase — https://supabase.com/dashboard/account/tokens
85
+ SUPABASE_ACCESS_TOKEN=
86
+ SUPABASE_PROJECT_REF=
87
+ SUPABASE_URL=https://your-project.supabase.co
88
+ SUPABASE_ANON_KEY=
89
+ SUPABASE_SERVICE_ROLE_KEY=
90
+ SUPABASE_DB_PASSWORD=
91
+
92
+ # PlanetScale — https://app.planetscale.com/[org]/settings/service-tokens
93
+ PLANETSCALE_SERVICE_TOKEN=
94
+ PLANETSCALE_SERVICE_TOKEN_ID=
95
+ PLANETSCALE_ORG=
96
+ PLANETSCALE_DB=
97
+
98
+ # Firebase (Google) — run: firebase login:ci
99
+ FIREBASE_TOKEN=
100
+ FIREBASE_PROJECT_ID=
101
+ FIREBASE_API_KEY=
102
+
103
+ # MongoDB Atlas — https://cloud.mongodb.com programmatic API keys
104
+ MONGODB_ATLAS_PUBLIC_KEY=
105
+ MONGODB_ATLAS_PRIVATE_KEY=
106
+ MONGODB_ATLAS_ORG_ID=
107
+ MONGODB_ATLAS_PROJECT_ID=
108
+ MONGODB_URI=
109
+
110
+ # =============================================================================
111
+ # PAYMENTS
112
+ # =============================================================================
113
+
114
+ # Stripe — https://dashboard.stripe.com/apikeys
115
+ # Use sk_test_... for development, sk_live_... for production
116
+ STRIPE_SECRET_KEY=
117
+ STRIPE_PUBLISHABLE_KEY=
118
+ STRIPE_WEBHOOK_SECRET=
119
+ # Optional: Stripe restricted key for specific operations
120
+ # STRIPE_RESTRICTED_KEY=
121
+
122
+ # =============================================================================
123
+ # CDN / EDGE / DNS
124
+ # =============================================================================
125
+
126
+ # Cloudflare — https://dash.cloudflare.com/profile/api-tokens
127
+ CLOUDFLARE_API_TOKEN=
128
+ CLOUDFLARE_ACCOUNT_ID=
129
+ CLOUDFLARE_ZONE_ID=
130
+
131
+ # =============================================================================
132
+ # DEVOPS & INFRASTRUCTURE
133
+ # =============================================================================
134
+
135
+ # Docker Hub — https://hub.docker.com/settings/security (use Access Token, not password)
136
+ DOCKER_USERNAME=
137
+ DOCKER_TOKEN=
138
+ # Optional: private registry URL (leave blank for Docker Hub)
139
+ # DOCKER_REGISTRY=
140
+
141
+ # Terraform Cloud — https://app.terraform.io/app/settings/tokens
142
+ TF_TOKEN_app_terraform_io=
143
+ TF_WORKSPACE=
144
+ TF_ORGANIZATION=
145
+
146
+ # Sentry — https://sentry.io/settings/account/api/auth-tokens/
147
+ SENTRY_AUTH_TOKEN=
148
+ SENTRY_ORG=
149
+ SENTRY_PROJECT=
150
+ # Optional: self-hosted Sentry URL (leave blank for sentry.io)
151
+ # SENTRY_URL=
152
+
153
+ # Datadog — https://app.datadoghq.com/organization-settings/api-keys
154
+ DD_API_KEY=
155
+ DD_APP_KEY=
156
+ DD_SITE=datadoghq.com
157
+
158
+ # =============================================================================
159
+ # COMMUNICATION & PRODUCTIVITY
160
+ # =============================================================================
161
+
162
+ # Slack — https://api.slack.com/apps → your app → OAuth & Permissions
163
+ SLACK_BOT_TOKEN=
164
+ SLACK_SIGNING_SECRET=
165
+ SLACK_TEAM_ID=
166
+ # Optional: specific channel ID for notifications
167
+ # SLACK_CHANNEL_ID=
168
+
169
+ # Notion — https://www.notion.so/my-integrations
170
+ NOTION_TOKEN=
171
+ NOTION_DATABASE_ID=
172
+
173
+ # =============================================================================
174
+ # PACKAGE REGISTRIES
175
+ # =============================================================================
176
+
177
+ # npm — https://www.npmjs.com/settings/[username]/tokens
178
+ NPM_TOKEN=
179
+
180
+ # PyPI — https://pypi.org/manage/account/token/
181
+ PYPI_TOKEN=
182
+ # Defaults to __token__ when using PYPI_TOKEN
183
+ # PYPI_USERNAME=__token__
184
+
185
+ # GitHub Packages (uses GITHUB_TOKEN above, already set)
186
+
187
+ # Homebrew — increases API rate limits for `brew` commands
188
+ HOMEBREW_GITHUB_API_TOKEN=
189
+
190
+ # =============================================================================
191
+ # APP / ENVIRONMENT CONFIG (project-specific — add your own below)
192
+ # =============================================================================
193
+
194
+ NODE_ENV=development
195
+ PORT=3000
196
+ # DATABASE_URL=
197
+ # REDIS_URL=
198
+ # JWT_SECRET=
199
+ # SESSION_SECRET=
@@ -0,0 +1,46 @@
1
+ # [Project Name] — Project Instructions
2
+ Last updated: YYYY-MM-DD
3
+
4
+ ## Project Overview
5
+ [One paragraph describing what this project does]
6
+
7
+ ## Tech Stack
8
+ - Services: [api, dashboard, postgres, redis, etc]
9
+ - Orchestration: Docker Compose
10
+ - Testing: [per-service test stacks]
11
+
12
+ ## Key Commands
13
+ ```bash
14
+ # Build
15
+ docker build -t [project]-api:local .
16
+ docker build -t [project]-dashboard:local ./dashboard
17
+
18
+ # Run
19
+ docker compose up -d
20
+ docker compose ps
21
+ docker compose logs -f [service]
22
+
23
+ # Migrations
24
+ docker compose run --rm migrate
25
+
26
+ # Stop
27
+ docker compose down
28
+ ```
29
+
30
+ ## Health Endpoints
31
+ - API: http://localhost:8000/health
32
+ - Dashboard: http://localhost:3001
33
+
34
+ ## Smoke Test
35
+ ```bash
36
+ curl -s http://localhost:8000/health # Should return {"status":"healthy"}
37
+ curl -s -o /dev/null -w "%{http_code}" http://localhost:3001/ # Should return 200
38
+ ```
39
+
40
+ ## Security — Known Exceptions
41
+ <!-- List any accepted audit exceptions here -->
42
+
43
+ ## Conventions
44
+ - Migrations in alembic/ or migrations/
45
+ - Each service has its own Dockerfile
46
+ - Compose file at docker-compose.yml or deploy/docker-compose.yml
@@ -0,0 +1,56 @@
1
+ # [Project Name] — Project Instructions
2
+ Last updated: YYYY-MM-DD
3
+
4
+ ## Project Overview
5
+ [One paragraph describing what this project does]
6
+
7
+ ## Tech Stack
8
+ - Framework: React + Vite
9
+ - Language: TypeScript
10
+ - Styling: [Tailwind / shadcn / etc]
11
+ - Testing: Vitest + Testing Library
12
+ - E2E: Playwright (optional)
13
+
14
+ ## Key Commands
15
+ ```bash
16
+ npm run dev # Start dev server
17
+ npm run build # Production build
18
+ npm run test:unit # Unit tests
19
+ npm run test:coverage # Coverage report
20
+ npm run lint # ESLint
21
+ ```
22
+
23
+ ## Health Endpoints
24
+ - Local: http://localhost:5173
25
+
26
+ ## Security — Known Exceptions
27
+ <!-- List any accepted audit exceptions here, e.g.: -->
28
+ <!-- - undici via Firebase SDK — requires --force to fix, known safe -->
29
+
30
+ ## Conventions
31
+ - Components in src/components/
32
+ - Pages in src/pages/
33
+ - Utilities in src/lib/
34
+ - Tests mirror src/ structure in src/__tests__/
35
+
36
+ ## Common CI Traps
37
+
38
+ **`opacity-0` breaks Playwright** — `useState(false)` + `useEffect(() => setState(true), [])` to trigger a CSS fade-in is a common pattern, but Playwright's `toBeVisible()` fails on `opacity-0` elements. In a client-only SPA there is no SSR reason to defer visibility — initialize to `true` directly.
39
+
40
+ ```tsx
41
+ // Wrong — form is invisible on first render; Playwright times out
42
+ const [mounted, setMounted] = useState(false);
43
+ useEffect(() => { setMounted(true); }, []);
44
+
45
+ // Right — immediately visible, no effect needed
46
+ const mounted = true;
47
+ ```
48
+
49
+ **ESLint plugin version skew** — if CI uses a newer eslint plugin version than is pinned locally, errors appear in CI but not on your machine. Pin exact plugin versions in `package.json` to keep CI and local in sync.
50
+
51
+ ```json
52
+ // Pin exact versions, not ranges, for lint plugins
53
+ "eslint-plugin-react-hooks": "5.2.0"
54
+ ```
55
+
56
+ **npm packages not yet published** — never add a package to `dependencies` that doesn't exist on the npm registry yet. Docker builds will fail with a 404 at `npm install` time. Use `file:` paths or vendor the source instead.
@@ -0,0 +1,59 @@
1
+ # [Project Name] — Project Instructions
2
+ Last updated: YYYY-MM-DD
3
+
4
+ ## Project Overview
5
+ [One paragraph describing what this project does]
6
+
7
+ ## Tech Stack
8
+ - Frontend: React + Vite + TypeScript
9
+ - Backend: Node.js + Express/Fastify + TypeScript
10
+ - Database: PostgreSQL
11
+ - Auth: [Firebase / JWT / etc]
12
+ - Testing: Vitest (frontend) + Jest + supertest (backend)
13
+ - E2E: Playwright
14
+
15
+ ## Key Commands
16
+ ```bash
17
+ # Frontend (root)
18
+ npm run dev # Start frontend dev server
19
+ npm run build # Frontend production build
20
+ npm run test:coverage # Frontend coverage
21
+
22
+ # Backend (api/)
23
+ cd api && npm run dev # Start API server
24
+ cd api && npm run build # Backend build
25
+ cd api && npm run test:coverage # Backend coverage
26
+ ```
27
+
28
+ ## Health Endpoints
29
+ - Local API: http://localhost:3001/health
30
+ - Local Frontend: http://localhost:5173
31
+ - Production API: https://[your-api-url]/health
32
+ - Production Frontend: https://[your-frontend-url]
33
+
34
+ ## Security — Known Exceptions
35
+ <!-- List any accepted audit exceptions here -->
36
+
37
+ ## Conventions
38
+ - API routes in api/src/routes/
39
+ - Frontend components in src/components/
40
+ - Shared types in src/types/ or api/src/types/
41
+ - All routes require auth middleware except /health and /webhooks
42
+
43
+ ## Common CI Traps
44
+
45
+ **npm packages not yet published** — if a package is listed in `dependencies` but not on the npm registry, Docker builds fail with a 404 at `npm install`. Use `file:` paths for local packages or vendor the source directly into the build context.
46
+
47
+ ```json
48
+ // Wrong — 404 in Docker if package isn't published
49
+ "dependencies": { "@yourorg/internal-pkg": "^0.1.0" }
50
+
51
+ // Right — reference local source
52
+ "dependencies": { "@yourorg/internal-pkg": "file:./internal-pkg" }
53
+ ```
54
+
55
+ **`opacity-0` breaks Playwright** — `useState(false)` + `useEffect(() => setState(true), [])` for CSS enter-animations makes elements invisible on first render. Playwright's `toBeVisible()` fails. In SPAs initialize to `true` and use CSS `@keyframes` for animations instead.
56
+
57
+ **ESLint plugin version skew** — CI may use a newer plugin version than is installed locally, causing errors in CI that don't reproduce. Pin exact versions for lint plugins in `package.json`.
58
+
59
+ **Integration tests silently excluded from gate** — always run both `tests/unit/` and `tests/integration/` in CI. Omitting integration tests means Docker-build failures and DB regressions only surface after merge.
@@ -0,0 +1,57 @@
1
+ # [Project Name] — Project Instructions
2
+ Last updated: YYYY-MM-DD
3
+
4
+ ## Project Overview
5
+ [One paragraph describing what this project does]
6
+
7
+ ## Tech Stack
8
+ - Language: Python 3.11+
9
+ - Framework: FastAPI / Flask
10
+ - Database: PostgreSQL / SQLite
11
+ - Testing: pytest + pytest-cov
12
+ - Linting: ruff
13
+
14
+ ## Key Commands
15
+ ```bash
16
+ source venv/bin/activate # Activate virtualenv
17
+ ./venv/bin/python -m uvicorn main:app --reload # Start dev server
18
+ ./venv/bin/python -m pytest tests/ -v # Run tests
19
+ ./venv/bin/python -m pytest --cov=. --cov-report=term-missing # Coverage
20
+ ./venv/bin/ruff check . --fix # Lint + fix
21
+ ./venv/bin/ruff format . # Format
22
+ ```
23
+
24
+ ## Health Endpoints
25
+ - Local: http://localhost:8000/health
26
+ - Production: https://[your-api-url]/health
27
+
28
+ ## Security — Known Exceptions
29
+ <!-- List any accepted pip-audit exceptions here -->
30
+
31
+ ## Conventions
32
+ - Routes in routes/ or api/routes/
33
+ - Models in models/
34
+ - Tests in tests/unit/ and tests/integration/
35
+ - All routes require auth except /health
36
+
37
+ ## Common CI Traps
38
+
39
+ **Integration tests not in the gate** — `pytest tests/unit/` is the default but `tests/integration/` must be added explicitly. If integration tests only run locally, regressions ship silently.
40
+
41
+ ```bash
42
+ # Wrong — misses integration tests
43
+ pytest tests/unit/
44
+
45
+ # Right — gate both
46
+ pytest tests/unit/ tests/integration/
47
+ ```
48
+
49
+ **Docker builds referencing local packages** — if a package is injected as a dependency but not yet published to a registry, `npm install` / `pip install` will fail in CI with a 404. Fix: vendor the source directly into the build context or use a `file:` path.
50
+
51
+ ```python
52
+ # Wrong — package not on PyPI yet
53
+ deps = {"my-internal-pkg": "^0.1.0"}
54
+
55
+ # Right — vendor source into container
56
+ shutil.copy(LOCAL_SRC, build_dir / "my_internal_pkg.py")
57
+ ```