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,294 @@
1
+ # E2E Test Patterns
2
+
3
+ Reference patterns used by the `/test` workflow. All patterns follow the real-over-mocked principle: create real users via the API, run against a real Docker stack, verify persistence in the DB.
4
+
5
+ ---
6
+
7
+ ## Auth Fixture
8
+
9
+ **`e2e/fixtures/api.ts`** — create test users and get tokens via real API calls:
10
+
11
+ ```typescript
12
+ import { APIRequestContext } from '@playwright/test'
13
+
14
+ export async function createTestUser(
15
+ request: APIRequestContext,
16
+ overrides?: Partial<{ email: string; password: string; name: string }>
17
+ ) {
18
+ const email = overrides?.email ?? `test-${Date.now()}@example.com`
19
+ const password = overrides?.password ?? 'TestPass123!'
20
+ const name = overrides?.name ?? 'Test User'
21
+ const res = await request.post('/api/auth/register', { data: { email, password, name } })
22
+ if (!res.ok()) throw new Error(`User creation failed: ${await res.text()}`)
23
+ return { email, password, name, id: (await res.json()).id }
24
+ }
25
+
26
+ export async function getAuthToken(
27
+ request: APIRequestContext,
28
+ email: string,
29
+ password: string
30
+ ): Promise<string> {
31
+ const res = await request.post('/api/auth/login', { data: { email, password } })
32
+ if (!res.ok()) throw new Error(`Login failed: ${await res.text()}`)
33
+ return (await res.json()).token
34
+ }
35
+ ```
36
+
37
+ **`e2e/fixtures/auth.ts`** — real auth fixture (actual login, not mocked JWT):
38
+
39
+ ```typescript
40
+ import { test as base } from '@playwright/test'
41
+ import { createTestUser, getAuthToken } from './api'
42
+
43
+ type AuthFixtures = {
44
+ authToken: string
45
+ authenticatedPage: import('@playwright/test').Page
46
+ testUser: { email: string; password: string; name: string; id: string }
47
+ }
48
+
49
+ export const test = base.extend<AuthFixtures>({
50
+ testUser: async ({ request }, use) => {
51
+ const user = await createTestUser(request)
52
+ await use(user)
53
+ },
54
+ authToken: async ({ request, testUser }, use) => {
55
+ const token = await getAuthToken(request, testUser.email, testUser.password)
56
+ await use(token)
57
+ },
58
+ authenticatedPage: async ({ page, authToken }, use) => {
59
+ await page.goto('/')
60
+ await page.evaluate((token) => localStorage.setItem('authToken', token), authToken)
61
+ await page.reload()
62
+ await use(page)
63
+ },
64
+ })
65
+
66
+ export { expect } from '@playwright/test'
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Smoke Tests
72
+
73
+ Run these first — fast gate before the full suite.
74
+
75
+ **`e2e/smoke/health.spec.ts`**:
76
+
77
+ ```typescript
78
+ import { test, expect } from '@playwright/test'
79
+
80
+ test('API /health returns 200', async ({ request }) => {
81
+ const res = await request.get('/health')
82
+ expect(res.status()).toBe(200)
83
+ expect((await res.json()).status).toBe('ok')
84
+ })
85
+
86
+ test('API /health/db confirms DB connection', async ({ request }) => {
87
+ const res = await request.get('/health/db')
88
+ expect(res.status()).toBe(200)
89
+ expect((await res.json()).database).toBe('connected')
90
+ })
91
+
92
+ test('frontend loads without JS errors', async ({ page }) => {
93
+ const errors: string[] = []
94
+ page.on('console', (msg) => { if (msg.type() === 'error') errors.push(msg.text()) })
95
+ await page.goto('/')
96
+ await expect(page).toHaveTitle(/your app name/i)
97
+ expect(errors).toHaveLength(0)
98
+ })
99
+
100
+ test('login page renders', async ({ page }) => {
101
+ await page.goto('/login')
102
+ await expect(page.getByRole('button', { name: /sign in/i })).toBeVisible()
103
+ })
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Auth Flow Tests
109
+
110
+ **`e2e/auth/login.spec.ts`**:
111
+
112
+ ```typescript
113
+ import { test, expect } from '../fixtures/auth'
114
+
115
+ test('user can register and land on dashboard', async ({ page, request }) => {
116
+ const email = `e2e-${Date.now()}@example.com`
117
+ const password = 'TestPass123!'
118
+
119
+ await page.goto('/register')
120
+ await page.getByLabel('Email').fill(email)
121
+ await page.getByLabel('Password').fill(password)
122
+ await page.getByRole('button', { name: /create account/i }).click()
123
+
124
+ await expect(page).toHaveURL(/\/dashboard/)
125
+ await expect(page.getByText(/welcome/i)).toBeVisible()
126
+
127
+ // Confirm user exists in DB
128
+ const token = await (await request.post('/api/auth/login', { data: { email, password } })).json()
129
+ expect(token.token).toBeTruthy()
130
+ })
131
+
132
+ test('user can log in with real credentials', async ({ page, testUser }) => {
133
+ await page.goto('/login')
134
+ await page.getByLabel('Email').fill(testUser.email)
135
+ await page.getByLabel('Password').fill(testUser.password)
136
+ await page.getByRole('button', { name: /sign in/i }).click()
137
+
138
+ await expect(page).toHaveURL(/\/dashboard/)
139
+ await expect(page.getByText(testUser.name)).toBeVisible()
140
+ })
141
+
142
+ test('invalid credentials show error', async ({ page }) => {
143
+ await page.goto('/login')
144
+ await page.getByLabel('Email').fill('nobody@example.com')
145
+ await page.getByLabel('Password').fill('wrongpassword')
146
+ await page.getByRole('button', { name: /sign in/i }).click()
147
+
148
+ await expect(page.getByRole('alert')).toContainText(/invalid/i)
149
+ await expect(page).toHaveURL(/\/login/)
150
+ })
151
+ ```
152
+
153
+ ---
154
+
155
+ ## CRUD Tests
156
+
157
+ Browser creates entity → API confirms it persisted. No mock return values.
158
+
159
+ **`e2e/[entity]/crud.spec.ts`** (adapt to your entity):
160
+
161
+ ```typescript
162
+ import { test, expect } from '../fixtures/auth'
163
+
164
+ test('create entity via UI and verify persistence', async ({
165
+ authenticatedPage: page, request, authToken,
166
+ }) => {
167
+ await page.goto('/dashboard/entities')
168
+ await page.getByRole('button', { name: /new/i }).click()
169
+
170
+ const name = `Test Entity ${Date.now()}`
171
+ await page.getByLabel('Name').fill(name)
172
+ await page.getByRole('button', { name: /create/i }).click()
173
+
174
+ await expect(page.getByText(name)).toBeVisible()
175
+
176
+ // Confirm it actually persisted — not just UI state
177
+ const res = await request.get('/api/entities', {
178
+ headers: { Authorization: `Bearer ${authToken}` },
179
+ })
180
+ const items = await res.json()
181
+ expect(items.find((i: { name: string }) => i.name === name)).toBeDefined()
182
+ })
183
+
184
+ test('edit entity updates DB record', async ({
185
+ authenticatedPage: page, request, authToken,
186
+ }) => {
187
+ const createRes = await request.post('/api/entities', {
188
+ headers: { Authorization: `Bearer ${authToken}` },
189
+ data: { name: 'Original Name' },
190
+ })
191
+ const item = await createRes.json()
192
+
193
+ await page.goto(`/dashboard/entities/${item.id}`)
194
+ await page.getByLabel('Name').clear()
195
+ await page.getByLabel('Name').fill('Updated Name')
196
+ await page.getByRole('button', { name: /save/i }).click()
197
+
198
+ await expect(page.getByText('Updated Name')).toBeVisible()
199
+
200
+ const fetchRes = await request.get(`/api/entities/${item.id}`, {
201
+ headers: { Authorization: `Bearer ${authToken}` },
202
+ })
203
+ expect((await fetchRes.json()).name).toBe('Updated Name')
204
+ })
205
+
206
+ test('delete entity removes from DB', async ({
207
+ authenticatedPage: page, request, authToken,
208
+ }) => {
209
+ const createRes = await request.post('/api/entities', {
210
+ headers: { Authorization: `Bearer ${authToken}` },
211
+ data: { name: 'To Be Deleted' },
212
+ })
213
+ const item = await createRes.json()
214
+
215
+ await page.goto('/dashboard/entities')
216
+ await page.getByTestId(`entity-row-${item.id}`).getByRole('button', { name: /delete/i }).click()
217
+ await page.getByRole('button', { name: /confirm/i }).click()
218
+
219
+ await expect(page.getByText('To Be Deleted')).not.toBeVisible()
220
+
221
+ const fetchRes = await request.get(`/api/entities/${item.id}`, {
222
+ headers: { Authorization: `Bearer ${authToken}` },
223
+ })
224
+ expect(fetchRes.status()).toBe(404)
225
+ })
226
+ ```
227
+
228
+ ---
229
+
230
+ ## Running E2E
231
+
232
+ **Start full stack:**
233
+
234
+ ```bash
235
+ if [ -f docker-compose.e2e.yml ] && [ -f docker-compose.yml ]; then
236
+ COMPOSE_CMD="docker compose -f docker-compose.yml -f docker-compose.e2e.yml"
237
+ elif [ -f docker-compose.test.yml ]; then
238
+ COMPOSE_CMD="docker compose -f docker-compose.test.yml"
239
+ else
240
+ COMPOSE_CMD="docker compose"
241
+ fi
242
+ $COMPOSE_CMD up -d --build --wait
243
+ ```
244
+
245
+ **Wait for app health:**
246
+
247
+ ```bash
248
+ for i in $(seq 1 12); do
249
+ curl -sf http://localhost:3000/health 2>/dev/null && break ||
250
+ curl -sf http://localhost:8000/health 2>/dev/null && break ||
251
+ { echo "Attempt $i/12 — waiting..."; sleep 5; }
252
+ done
253
+ ```
254
+
255
+ **Run smoke first, then full suite:**
256
+
257
+ ```bash
258
+ # 1. Smoke gate (fast)
259
+ npx playwright test e2e/smoke/ --config=playwright.e2e.config.ts
260
+
261
+ # 2. Full suite
262
+ npx playwright test --config=playwright.e2e.config.ts
263
+
264
+ # Against staging or prod
265
+ BASE_URL=https://staging.example.com npx playwright test --config=playwright.e2e.config.ts
266
+ ```
267
+
268
+ **Python projects:**
269
+
270
+ ```bash
271
+ BASE_URL="${E2E_BASE_URL:-http://localhost:8000}" \
272
+ ./venv/bin/pytest tests/e2e/ -v --tb=short
273
+ ```
274
+
275
+ **Teardown:**
276
+
277
+ ```bash
278
+ $COMPOSE_CMD down -v 2>/dev/null || true
279
+ ```
280
+
281
+ ---
282
+
283
+ ## What to Mock (and What Not To)
284
+
285
+ ```python
286
+ # ✅ Mock this — genuinely unreachable locally
287
+ monkeypatch.setattr("stripe.PaymentIntent.create", AsyncMock(return_value={"id": "pi_test"}))
288
+ monkeypatch.setattr("sendgrid.send", AsyncMock(return_value=None))
289
+
290
+ # ❌ Never mock this — use a real Docker DB instead
291
+ monkeypatch.setattr("db.session.add", MagicMock()) # masks constraint violations
292
+ monkeypatch.setattr("db.session.commit", MagicMock()) # masks transaction failures
293
+ monkeypatch.setattr("redis_client.get", MagicMock()) # masks TTL/serialisation bugs
294
+ ```
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: update-claude-md
3
+ description: After any correction from the user, update CLAUDE.md with a rule to prevent the same mistake from recurring. Use when the user corrects your behavior or says "don't do that again". Ruthlessly iterate CLAUDE.md until mistake rate measurably drops.
4
+ category: engineering
5
+ tier: core
6
+ slash_command: /update-claude
7
+ allowed-tools: Read Edit Write
8
+ model: haiku
9
+ ---
10
+
11
+ # Update-Claude — CLAUDE.md Rule Writer
12
+
13
+ After any correction, update CLAUDE.md with a rule to prevent the same mistake recurring.
14
+
15
+ ## How to use
16
+ - `/update-claude` — after a correction, write a rule to CLAUDE.md
17
+
18
+ ---
19
+
20
+ ## Phase 1 — Identify the pattern
21
+
22
+ What went wrong? What should have been done instead? Be specific — one clear pattern, not a vague note.
23
+
24
+ ---
25
+
26
+ ## Phase 2 — Write a rule
27
+
28
+ Formulate as a clear, actionable rule:
29
+ ```
30
+ - [Rule]: [What to do / not to do]. Why: [brief context].
31
+ ```
32
+
33
+ Short rules stick. Long paragraphs get ignored.
34
+
35
+ ---
36
+
37
+ ## Phase 3 — Update CLAUDE.md
38
+
39
+ ```bash
40
+ PROJECT_ROOT=$(git rev-parse --show-toplevel)
41
+ INSTRUCTION_FILE=$(for f in CLAUDE.md AGENTS.md .cursorrules .windsurfrules .github/copilot-instructions.md GEMINI.md; do [ -f "$PROJECT_ROOT/$f" ] && echo "$PROJECT_ROOT/$f" && break; done)
42
+ ```
43
+
44
+ Append the rule under a `## Rules` or `## Corrections` section in the project's instruction file. If no instruction file exists, create `CLAUDE.md` in the project root.
45
+
46
+ ---
47
+
48
+ ## Phase 4 — Confirm
49
+
50
+ Tell the user: "Updated [file] with: [rule summary]"
51
+
52
+ If the rule isn't reducing mistakes after 2–3 sessions: rewrite it — be more specific or more prominent.
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: visual-system-architect
3
+ description: Act as a Global Design Director to produce a complete design system — color palette, typography scale, 8px grid, 30+ components, responsive patterns, animations, and WCAG AA accessibility. Exports design tokens (JSON), CSS variables, and Figma-ready docs. Use when building a brand's visual foundation for Figma Make or a design handoff.
4
+ category: design
5
+ tier: on-demand
6
+ allowed-tools: Read Write
7
+ ---
8
+
9
+ You are a Global Design Director tasked with building a scalable design system for the described brand.
10
+
11
+ ## Required Input
12
+
13
+ Provide the following before invoking:
14
+ - **Brand name**: [BRAND]
15
+ - **Brand personality**: MINIMAL / BOLD / LUXURY / PLAYFUL / MODERN / TECHNICAL (pick or describe)
16
+
17
+ ## Deliverables
18
+
19
+ Produce a complete, production-ready design system including:
20
+
21
+ ### 1. Color System
22
+ - Primary, secondary, semantic, and neutral palettes
23
+ - Dark mode equivalents for every color
24
+
25
+ ### 2. Typography Framework
26
+ - 9-step type scale with font pairing rationale
27
+
28
+ ### 3. Spatial System
29
+ - 8px grid foundation with spacing tokens
30
+
31
+ ### 4. Component Library
32
+ - 30+ components with interaction states and usage rules
33
+
34
+ ### 5. Responsive Layout Patterns
35
+ - Breakpoints and adaptive behavior logic for all components
36
+
37
+ ### 6. Animation Principles
38
+ - Transition curves, durations, and micro-interaction animation philosophy
39
+
40
+ ### 7. Accessibility Standards
41
+ - WCAG AA compliance guidance and contrast ratios throughout
42
+
43
+ ## Export Formats
44
+
45
+ Deliver in three formats:
46
+
47
+ 1. **Design tokens** — JSON structure
48
+ 2. **CSS variable declarations**
49
+ 3. **Figma-ready component documentation**
50
+
51
+ ## Output Goal
52
+
53
+ This output will power the visual foundation inside Figma Make. Format all specs for direct handoff — no further interpretation required.
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "100xprism",
3
+ "version": "2.3.1",
4
+ "description": "66 cross-tool modules (workflows + skills). Quality gates on every commit. Works with Claude Code, Cursor, Codex, Windsurf, Antigravity, Copilot, Gemini.",
5
+ "scripts": {
6
+ "test": "node --test",
7
+ "check": "node --test && python3 scripts/meta-check.py && HOME=$(mktemp -d) ./adapters/claude-code.sh"
8
+ },
9
+ "bin": {
10
+ "100xprism": "bin/100xprism.js",
11
+ "100x-dev": "bin/100xprism.js"
12
+ },
13
+ "files": [
14
+ "bin/",
15
+ "lib/",
16
+ "modules/",
17
+ "plugins/",
18
+ "templates/",
19
+ "shell/",
20
+ "adapters/",
21
+ "get.sh",
22
+ "install.sh",
23
+ "install-project.sh",
24
+ "update.sh",
25
+ "VERSION"
26
+ ],
27
+ "engines": {
28
+ "node": ">=18.0.0"
29
+ },
30
+ "keywords": [
31
+ "claude-code",
32
+ "cursor",
33
+ "codex",
34
+ "ai-coding",
35
+ "developer-workflow",
36
+ "slash-commands"
37
+ ],
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/rajitsaha/100xprism.git"
42
+ },
43
+ "homepage": "https://github.com/rajitsaha/100xprism"
44
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "plugins": [
3
+ "frontend-design@claude-plugins-official",
4
+ "superpowers@claude-plugins-official",
5
+ "playwright@claude-plugins-official",
6
+ "github@claude-plugins-official",
7
+ "security-guidance@claude-code-plugins",
8
+ "skill-creator@claude-plugins-official",
9
+ "code-simplifier@claude-plugins-official",
10
+ "pr-review-toolkit@claude-plugins-official",
11
+ "hookify@claude-plugins-official",
12
+ "claude-mem@thedotmack",
13
+ "understand-anything@understand-anything",
14
+ "ui-ux-pro-max@ui-ux-pro-max-skill",
15
+ "chrome-devtools-mcp@claude-plugins-official"
16
+ ],
17
+ "extraKnownMarketplaces": {
18
+ "claude-code-plugins": {
19
+ "source": {
20
+ "source": "github",
21
+ "repo": "anthropics/claude-code"
22
+ }
23
+ },
24
+ "thedotmack": {
25
+ "source": {
26
+ "source": "github",
27
+ "repo": "thedotmack/claude-mem"
28
+ }
29
+ },
30
+ "understand-anything": {
31
+ "source": {
32
+ "source": "github",
33
+ "repo": "Lum1104/Understand-Anything"
34
+ }
35
+ },
36
+ "ui-ux-pro-max-skill": {
37
+ "source": {
38
+ "source": "github",
39
+ "repo": "nextlevelbuilder/ui-ux-pro-max-skill"
40
+ }
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,24 @@
1
+ # shellcheck shell=bash
2
+ # 100x Dev shortcuts
3
+ # Source this file from ~/.zshrc or ~/.bashrc:
4
+ # source ~/100xprism/shell/aliases.sh
5
+
6
+ # Launch Claude
7
+ alias cc='claude'
8
+ alias ccc='claude --continue'
9
+
10
+ # Setup management
11
+ # shellcheck disable=SC2139
12
+ alias 100xprism="node $HOME/100xprism/bin/100xprism.js"
13
+ # shellcheck disable=SC2139
14
+ alias 100x-update="$HOME/100xprism/update.sh"
15
+ # shellcheck disable=SC2139
16
+ alias 100x-check="$HOME/100xprism/update.sh --check-only"
17
+
18
+ # ── Version check ─────────────────────────────────────────────────────────────
19
+ # On shell startup: read cached update status (no network) + prompt if available.
20
+ # Then kick off a background cache refresh for next session.
21
+ if [[ -x "$HOME/100xprism/shell/check-update.sh" ]]; then
22
+ bash "$HOME/100xprism/shell/check-update.sh" --notify
23
+ ("$HOME/100xprism/shell/check-update.sh" --silent &) 2>/dev/null
24
+ fi