@kensaurus/skills 0.0.0-stage → 2.0.0

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 (423) hide show
  1. package/.claude-plugin/marketplace.json +53 -0
  2. package/.claude-plugin/plugin.json +40 -0
  3. package/.cursor-plugin/plugin.json +38 -0
  4. package/.mcp.json +28 -0
  5. package/CHANGELOG.md +1761 -0
  6. package/LICENSE +21 -0
  7. package/NOTICE +13 -0
  8. package/README.md +820 -2
  9. package/SECURITY.md +55 -0
  10. package/agents/code-reviewer.md +60 -0
  11. package/agents/completion-judge.md +89 -0
  12. package/agents/db-migrator.md +125 -0
  13. package/agents/debugger.md +47 -0
  14. package/agents/deploy-checker.md +100 -0
  15. package/agents/perf-monitor.md +74 -0
  16. package/assets/favicon.png +0 -0
  17. package/assets/logo-light.png +0 -0
  18. package/assets/logo.png +0 -0
  19. package/assets/logo.svg +6 -0
  20. package/assets/og.png +0 -0
  21. package/bin/install.mjs +1127 -0
  22. package/bin/kenji.js +2 -0
  23. package/commands/adr.md +17 -0
  24. package/commands/aeo-plan.md +18 -0
  25. package/commands/arch-boundaries.md +17 -0
  26. package/commands/aso-plan.md +18 -0
  27. package/commands/auth-flows.md +19 -0
  28. package/commands/backup-plan.md +17 -0
  29. package/commands/burndown-full.md +25 -0
  30. package/commands/capacitor-plan.md +18 -0
  31. package/commands/codemod-safety.md +22 -0
  32. package/commands/commit.md +18 -0
  33. package/commands/complete-everything.md +40 -0
  34. package/commands/cost-plan.md +19 -0
  35. package/commands/deadcode-plan.md +26 -0
  36. package/commands/deadcode.md +32 -0
  37. package/commands/debug-issue.md +17 -0
  38. package/commands/deps-plan.md +18 -0
  39. package/commands/docs-plan.md +17 -0
  40. package/commands/doctrine.md +19 -0
  41. package/commands/error-plan.md +19 -0
  42. package/commands/feedback-to-closure.md +36 -0
  43. package/commands/fix-issue.md +76 -0
  44. package/commands/gate-logic.md +26 -0
  45. package/commands/green-repo.md +36 -0
  46. package/commands/grill-me.md +19 -0
  47. package/commands/gtm-plan.md +21 -0
  48. package/commands/gtm-weekly.md +17 -0
  49. package/commands/gtm.md +22 -0
  50. package/commands/handoff.md +15 -0
  51. package/commands/housekeep-backlog.md +18 -0
  52. package/commands/housekeep-files.md +22 -0
  53. package/commands/housekeep-gates.md +18 -0
  54. package/commands/instant-nav.md +11 -0
  55. package/commands/integrity-plan.md +19 -0
  56. package/commands/launch-kit.md +16 -0
  57. package/commands/mcp-guide.md +40 -0
  58. package/commands/mobile-plan.md +19 -0
  59. package/commands/native-rn-monorepo/README.md +78 -0
  60. package/commands/native-rn-monorepo/android-build.md +26 -0
  61. package/commands/native-rn-monorepo/android-install.md +32 -0
  62. package/commands/native-rn-monorepo/android-logcat.md +37 -0
  63. package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
  64. package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
  65. package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
  66. package/commands/native-rn-monorepo/rn-reset.md +50 -0
  67. package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
  68. package/commands/native-rn-monorepo/rn-verify.md +53 -0
  69. package/commands/perf-plan.md +18 -0
  70. package/commands/plan-mode.md +74 -0
  71. package/commands/pr.md +16 -0
  72. package/commands/pricing-plan.md +20 -0
  73. package/commands/privacy-plan.md +18 -0
  74. package/commands/readability.md +12 -0
  75. package/commands/readme.md +15 -0
  76. package/commands/refactor.md +15 -0
  77. package/commands/release-prep.md +17 -0
  78. package/commands/research.md +25 -0
  79. package/commands/responsive-audit.md +21 -0
  80. package/commands/review-code.md +18 -0
  81. package/commands/rls-plan.md +18 -0
  82. package/commands/secrets-plan.md +18 -0
  83. package/commands/security-plan.md +19 -0
  84. package/commands/ship-and-observe.md +36 -0
  85. package/commands/skill-conflicts.md +19 -0
  86. package/commands/slop-plan.md +18 -0
  87. package/commands/stub-plan.md +18 -0
  88. package/commands/test-mutation.md +16 -0
  89. package/commands/test-plan.md +17 -0
  90. package/commands/test.md +29 -0
  91. package/commands/thirdparty-web-interface-guidelines.md +185 -0
  92. package/commands/uiux-plan.md +18 -0
  93. package/commands/uiux.md +45 -0
  94. package/commands/update-deps.md +21 -0
  95. package/commands/validation-plan.md +19 -0
  96. package/commands-portable/fix-issue.md +72 -0
  97. package/commands-portable/plan-mode.md +92 -0
  98. package/commands-portable/research.md +91 -0
  99. package/docs/screenshots/README.md +5 -0
  100. package/docs/screenshots/audit-dark.png +0 -0
  101. package/docs/screenshots/build-dark.png +0 -0
  102. package/docs/screenshots/grill-dark.png +0 -0
  103. package/docs/screenshots/hero-dark.png +0 -0
  104. package/docs/screenshots/hero-light.png +0 -0
  105. package/docs/screenshots/ship-dark.png +0 -0
  106. package/docs/screenshots/src/showcase.html +320 -0
  107. package/hooks/completion-gate.mjs +258 -0
  108. package/hooks/cursor-hooks.json +13 -0
  109. package/hooks/hooks.json +15 -0
  110. package/install.sh +21 -0
  111. package/llms.txt +40 -0
  112. package/mcp/README.md +266 -0
  113. package/mcp/VERSIONS.md +41 -0
  114. package/mcp/mcp-full.json.template +124 -0
  115. package/mcp/mcp.json.template +29 -0
  116. package/mcp/pinned-versions.json +27 -0
  117. package/package.json +93 -4
  118. package/rules/approved-plan-execution.mdc +65 -0
  119. package/rules/full-stack-ship-discipline.mdc +37 -0
  120. package/rules/native-rn-monorepo/README.md +63 -0
  121. package/rules/native-rn-monorepo/_project.mdc +69 -0
  122. package/rules/native-rn-monorepo/native-android.mdc +72 -0
  123. package/rules/native-rn-monorepo/native-ios.mdc +61 -0
  124. package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
  125. package/rules/native-rn-monorepo/web.mdc +60 -0
  126. package/rules/project-starter/components.mdc +54 -0
  127. package/rules/project-starter/data-fetching.mdc +77 -0
  128. package/rules/project-starter/git.mdc +41 -0
  129. package/rules/project-starter/supabase.mdc +37 -0
  130. package/rules/project-starter/tailwind.mdc +48 -0
  131. package/rules/project-starter/typescript.mdc +36 -0
  132. package/rules/project-starter/web-performance.mdc +42 -0
  133. package/rules/senior-engineer.mdc +30 -0
  134. package/rules/shell-first-search.mdc +19 -0
  135. package/rules/skill-workflows.mdc +35 -0
  136. package/rules/verification-before-completion.mdc +57 -0
  137. package/skills/audit-accessibility/SKILL.md +441 -0
  138. package/skills/audit-agent-speed/SKILL.md +181 -0
  139. package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
  140. package/skills/audit-analytics/SKILL.md +138 -0
  141. package/skills/audit-auth-flows/SKILL.md +267 -0
  142. package/skills/audit-backend-architecture/SKILL.md +266 -0
  143. package/skills/audit-backend-architecture/references/patterns.md +386 -0
  144. package/skills/audit-bundle-size/SKILL.md +296 -0
  145. package/skills/audit-cicd/SKILL.md +218 -0
  146. package/skills/audit-code-quality/SKILL.md +314 -0
  147. package/skills/audit-code-review/SKILL.md +289 -0
  148. package/skills/audit-codemod-safety/SKILL.md +159 -0
  149. package/skills/audit-db-schema/SKILL.md +465 -0
  150. package/skills/audit-db-schema/references/details.md +110 -0
  151. package/skills/audit-doctrine/SKILL.md +189 -0
  152. package/skills/audit-env-parity/SKILL.md +133 -0
  153. package/skills/audit-fe-api/SKILL.md +458 -0
  154. package/skills/audit-gate-logic/SKILL.md +219 -0
  155. package/skills/audit-i18n/SKILL.md +339 -0
  156. package/skills/audit-infra-cost/SKILL.md +142 -0
  157. package/skills/audit-langfuse-llm/SKILL.md +468 -0
  158. package/skills/audit-langfuse-llm/references/details.md +226 -0
  159. package/skills/audit-llm-security/SKILL.md +147 -0
  160. package/skills/audit-monetization-iap/SKILL.md +137 -0
  161. package/skills/audit-payment-system/SKILL.md +268 -0
  162. package/skills/audit-payment-system/references/checklist.md +283 -0
  163. package/skills/audit-performance/SKILL.md +383 -0
  164. package/skills/audit-performance/references/loading-priority-2026.md +81 -0
  165. package/skills/audit-realworld/SKILL.md +287 -0
  166. package/skills/audit-registry-listing/SKILL.md +122 -0
  167. package/skills/audit-resilience/SKILL.md +154 -0
  168. package/skills/audit-responsive/SKILL.md +221 -0
  169. package/skills/audit-responsive/references/checklist.md +166 -0
  170. package/skills/audit-security/SKILL.md +289 -0
  171. package/skills/audit-skill-conflicts/SKILL.md +178 -0
  172. package/skills/audit-ui-states/SKILL.md +146 -0
  173. package/skills/audit-uiux-design-system/SKILL.md +475 -0
  174. package/skills/audit-uiux-design-system/references/details.md +71 -0
  175. package/skills/audit-ux/SKILL.md +379 -0
  176. package/skills/audit-ux/references/details.md +245 -0
  177. package/skills/audit-ux-journeys/SKILL.md +215 -0
  178. package/skills/audit-ux-journeys/references/checklist.md +179 -0
  179. package/skills/backend-db-performance/SKILL.md +441 -0
  180. package/skills/backend-error-handling/SKILL.md +489 -0
  181. package/skills/backend-error-handling/references/details.md +58 -0
  182. package/skills/backend-observability/SKILL.md +88 -0
  183. package/skills/backend-patterns/SKILL.md +499 -0
  184. package/skills/backend-patterns/references/architecture-patterns.md +298 -0
  185. package/skills/backend-realtime/SKILL.md +403 -0
  186. package/skills/backend-realtime/references/patterns.md +74 -0
  187. package/skills/burndown-full/SKILL.md +174 -0
  188. package/skills/complete-everything/SKILL.md +295 -0
  189. package/skills/data-pipeline/SKILL.md +109 -0
  190. package/skills/data-visualization/SKILL.md +488 -0
  191. package/skills/debug-error/SKILL.md +322 -0
  192. package/skills/debug-fe-be-integration/SKILL.md +459 -0
  193. package/skills/debug-sentry-monitor/SKILL.md +497 -0
  194. package/skills/debug-sentry-monitor/references/details.md +165 -0
  195. package/skills/deploy-npm/SKILL.md +394 -0
  196. package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
  197. package/skills/deploy-verify/SKILL.md +489 -0
  198. package/skills/design-api/SKILL.md +379 -0
  199. package/skills/design-canvas/SKILL.md +155 -0
  200. package/skills/design-email/SKILL.md +370 -0
  201. package/skills/design-frontend/SKILL.md +143 -0
  202. package/skills/design-generative-art/SKILL.md +474 -0
  203. package/skills/design-mobile-first/SKILL.md +506 -0
  204. package/skills/design-motion/SKILL.md +333 -0
  205. package/skills/design-motion/references/delight-interactions.md +191 -0
  206. package/skills/design-prd/SKILL.md +443 -0
  207. package/skills/design-system/SKILL.md +457 -0
  208. package/skills/design-theme/SKILL.md +226 -0
  209. package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
  210. package/skills/docs-adr/SKILL.md +168 -0
  211. package/skills/docs-coauthor/SKILL.md +368 -0
  212. package/skills/docs-comparison-pages/SKILL.md +117 -0
  213. package/skills/docs-domain-modeling/SKILL.md +97 -0
  214. package/skills/docs-launch-kit/SKILL.md +139 -0
  215. package/skills/docs-writer/SKILL.md +469 -0
  216. package/skills/enhance-agent-guardrails/SKILL.md +164 -0
  217. package/skills/enhance-arch-boundaries/SKILL.md +154 -0
  218. package/skills/enhance-capacitor-ui/SKILL.md +463 -0
  219. package/skills/enhance-capacitor-ui/references/details.md +750 -0
  220. package/skills/enhance-email-deliverability/SKILL.md +143 -0
  221. package/skills/enhance-growth-loops/SKILL.md +122 -0
  222. package/skills/enhance-lifecycle-email/SKILL.md +130 -0
  223. package/skills/enhance-motion/SKILL.md +193 -0
  224. package/skills/enhance-onboarding/SKILL.md +148 -0
  225. package/skills/enhance-pwa/SKILL.md +304 -0
  226. package/skills/enhance-readability/SKILL.md +146 -0
  227. package/skills/enhance-readme/SKILL.md +496 -0
  228. package/skills/enhance-readme/package-lock.json +187 -0
  229. package/skills/enhance-readme/package.json +17 -0
  230. package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
  231. package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
  232. package/skills/enhance-skill-prompts/SKILL.md +167 -0
  233. package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
  234. package/skills/enhance-web-conversion/SKILL.md +155 -0
  235. package/skills/enhance-web-forms/SKILL.md +154 -0
  236. package/skills/enhance-web-instant-nav/SKILL.md +138 -0
  237. package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
  238. package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
  239. package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
  240. package/skills/enhance-web-landing/SKILL.md +459 -0
  241. package/skills/enhance-web-landing/references/details.md +773 -0
  242. package/skills/enhance-web-redesign/SKILL.md +228 -0
  243. package/skills/enhance-web-seo/SKILL.md +276 -0
  244. package/skills/enhance-web-ui/SKILL.md +473 -0
  245. package/skills/enhance-web-ui/references/details.md +674 -0
  246. package/skills/enhance-web-ux/HEURISTICS.md +242 -0
  247. package/skills/enhance-web-ux/PATTERNS.md +375 -0
  248. package/skills/enhance-web-ux/SKILL.md +464 -0
  249. package/skills/enhance-web-ux/examples.md +222 -0
  250. package/skills/enhance-web-ux/references/details.md +406 -0
  251. package/skills/enhance-web-web3d/SKILL.md +397 -0
  252. package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
  253. package/skills/handoff/SKILL.md +66 -0
  254. package/skills/housekeep-backlog/SKILL.md +149 -0
  255. package/skills/housekeep-dead-code/SKILL.md +387 -0
  256. package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
  257. package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
  258. package/skills/housekeep-design/SKILL.md +207 -0
  259. package/skills/housekeep-files/SKILL.md +220 -0
  260. package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
  261. package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
  262. package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
  263. package/skills/housekeep-gates/SKILL.md +174 -0
  264. package/skills/iterate-agent-harness/SKILL.md +137 -0
  265. package/skills/iterate-gtm-weekly/SKILL.md +103 -0
  266. package/skills/iterate-post-launch/SKILL.md +292 -0
  267. package/skills/meta-mcp-builder/SKILL.md +313 -0
  268. package/skills/meta-skill-creator/SKILL.md +304 -0
  269. package/skills/mobile-capacitor-platform/SKILL.md +104 -0
  270. package/skills/mobile-emulator-start/SKILL.md +296 -0
  271. package/skills/mobile-emulator-test/SKILL.md +491 -0
  272. package/skills/mobile-emulator-test/references/details.md +478 -0
  273. package/skills/mobile-rn-performance/SKILL.md +107 -0
  274. package/skills/mobile-rn-screen/SKILL.md +476 -0
  275. package/skills/mobile-rn-screen/references/details.md +785 -0
  276. package/skills/mushi-health/SKILL.md +206 -0
  277. package/skills/mushi-integration/SKILL.md +257 -0
  278. package/skills/plan-aeo-readiness/SKILL.md +166 -0
  279. package/skills/plan-antislop/SKILL.md +281 -0
  280. package/skills/plan-aso/SKILL.md +149 -0
  281. package/skills/plan-backup-dr/SKILL.md +131 -0
  282. package/skills/plan-capacitor-hardening/SKILL.md +217 -0
  283. package/skills/plan-data-integrity/SKILL.md +187 -0
  284. package/skills/plan-dead-code/SKILL.md +386 -0
  285. package/skills/plan-dead-code/references/knip-config.md +214 -0
  286. package/skills/plan-dead-code/references/output-templates.md +133 -0
  287. package/skills/plan-dead-code/references/preservation-contract.md +50 -0
  288. package/skills/plan-dead-code/references/residue-greps.md +84 -0
  289. package/skills/plan-dependency-provenance/SKILL.md +200 -0
  290. package/skills/plan-docs-sync/SKILL.md +143 -0
  291. package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
  292. package/skills/plan-docs-sync/references/output-templates.md +33 -0
  293. package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
  294. package/skills/plan-error-handling/SKILL.md +205 -0
  295. package/skills/plan-gtm/SKILL.md +276 -0
  296. package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
  297. package/skills/plan-input-validation/SKILL.md +179 -0
  298. package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
  299. package/skills/plan-mobile-readiness/SKILL.md +171 -0
  300. package/skills/plan-perf-audit/SKILL.md +145 -0
  301. package/skills/plan-perf-audit/references/audit-scope.md +51 -0
  302. package/skills/plan-perf-audit/references/output-templates.md +33 -0
  303. package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
  304. package/skills/plan-pricing/SKILL.md +173 -0
  305. package/skills/plan-privacy-compliance/SKILL.md +148 -0
  306. package/skills/plan-rls-audit/SKILL.md +231 -0
  307. package/skills/plan-secrets-audit/SKILL.md +181 -0
  308. package/skills/plan-security-audit/SKILL.md +168 -0
  309. package/skills/plan-security-audit/references/output-templates.md +36 -0
  310. package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
  311. package/skills/plan-security-audit/references/preservation-contract.md +18 -0
  312. package/skills/plan-stub-checker/SKILL.md +216 -0
  313. package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
  314. package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
  315. package/skills/plan-stub-checker/references/output-templates.md +63 -0
  316. package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
  317. package/skills/plan-test-coverage/SKILL.md +170 -0
  318. package/skills/plan-test-coverage/references/methodology.md +54 -0
  319. package/skills/plan-test-coverage/references/output-templates.md +34 -0
  320. package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
  321. package/skills/plan-uiux-unification/SKILL.md +230 -0
  322. package/skills/plan-uiux-unification/references/output-templates.md +67 -0
  323. package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
  324. package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
  325. package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
  326. package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
  327. package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
  328. package/skills/research/SKILL.md +422 -0
  329. package/skills/test-exploratory/SKILL.md +165 -0
  330. package/skills/test-exploratory/references/charter-template.md +29 -0
  331. package/skills/test-load/SKILL.md +126 -0
  332. package/skills/test-mutation/SKILL.md +160 -0
  333. package/skills/test-playwright/SKILL.md +354 -0
  334. package/skills/test-qa/SKILL.md +364 -0
  335. package/skills/test-qa/references/details.md +268 -0
  336. package/skills/test-red-team/SKILL.md +387 -0
  337. package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
  338. package/skills/test-unit/SKILL.md +259 -0
  339. package/skills/test-unit/references/details.md +267 -0
  340. package/skills/test-visual-regression/SKILL.md +132 -0
  341. package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
  342. package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
  343. package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
  344. package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
  345. package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
  346. package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
  347. package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
  348. package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
  349. package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
  350. package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
  351. package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
  352. package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
  353. package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  354. package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  355. package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  356. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  357. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  358. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  359. package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  360. package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
  361. package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  362. package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  363. package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  364. package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
  365. package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
  366. package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
  367. package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  368. package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  369. package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
  370. package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
  371. package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
  372. package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
  373. package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
  374. package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
  375. package/skills/workflow-build-feature/SKILL.md +118 -0
  376. package/skills/workflow-coding-discipline/SKILL.md +140 -0
  377. package/skills/workflow-environment-ready/SKILL.md +128 -0
  378. package/skills/workflow-feature-flag/SKILL.md +262 -0
  379. package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
  380. package/skills/workflow-fix-and-ship/SKILL.md +136 -0
  381. package/skills/workflow-git-commit/SKILL.md +200 -0
  382. package/skills/workflow-green-repo/SKILL.md +166 -0
  383. package/skills/workflow-grilling/SKILL.md +73 -0
  384. package/skills/workflow-gtm/SKILL.md +153 -0
  385. package/skills/workflow-housekeep/SKILL.md +453 -0
  386. package/skills/workflow-housekeep/references/templates.md +109 -0
  387. package/skills/workflow-launch-ready/SKILL.md +145 -0
  388. package/skills/workflow-merge-conflicts/SKILL.md +62 -0
  389. package/skills/workflow-onboard/SKILL.md +99 -0
  390. package/skills/workflow-parallel-agents/SKILL.md +164 -0
  391. package/skills/workflow-pr/SKILL.md +197 -0
  392. package/skills/workflow-quality-gate/SKILL.md +147 -0
  393. package/skills/workflow-refactor/SKILL.md +274 -0
  394. package/skills/workflow-release-prep/SKILL.md +207 -0
  395. package/skills/workflow-ship-and-observe/SKILL.md +164 -0
  396. package/skills/workflow-spec-tdd/SKILL.md +141 -0
  397. package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
  398. package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
  399. package/skills-cursor/babysit/SKILL.md +17 -0
  400. package/skills-cursor/canvas/SKILL.md +142 -0
  401. package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
  402. package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
  403. package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
  404. package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
  405. package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
  406. package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
  407. package/skills-cursor/canvas/sdk/index.d.ts +47 -0
  408. package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
  409. package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
  410. package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
  411. package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
  412. package/skills-cursor/create-hook/SKILL.md +238 -0
  413. package/skills-cursor/create-rule/SKILL.md +185 -0
  414. package/skills-cursor/create-skill/SKILL.md +269 -0
  415. package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
  416. package/skills-cursor/create-subagent/SKILL.md +228 -0
  417. package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
  418. package/skills-cursor/shell/SKILL.md +22 -0
  419. package/skills-cursor/split-to-prs/SKILL.md +47 -0
  420. package/skills-cursor/statusline/SKILL.md +193 -0
  421. package/skills-cursor/update-cli-config/SKILL.md +85 -0
  422. package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
  423. package/skills.sh.json +296 -0
@@ -0,0 +1,441 @@
1
+ ---
2
+ name: audit-accessibility
3
+ description: >
4
+ WCAG 2.2 audit via playwright-cli: crawl every page, inject axe-core, test
5
+ keyboard nav, contrast, ARIA labels, heading order. Use when "audit
6
+ accessibility", "check a11y", "WCAG audit", "check keyboard nav", or "test
7
+ screen reader".
8
+ license: MIT
9
+ effort: high
10
+ ---
11
+
12
+ # Accessibility Audit
13
+
14
+ **Degree of freedom: MIXED** — Phases 0–1, 5 `[HIGH freedom]`; Phases 2–3
15
+ playwright/axe/Tab sequences `[LOW freedom — run exactly]`. Read
16
+ `protocol-browser-anti-stall` before any browser step.
17
+
18
+ ## How to reason
19
+
20
+ 1. **Observe** — quote axe rule+selector, heading list, or Tab snapshot
21
+ 2. **Interpret** — can a keyboard or AT user complete the task?
22
+ 3. **Classify** — WCAG fail / axe-false-positive / manual-only / correct-as-is
23
+ 4. **Severity** — Level A = P0; Level AA = P1; best-practice = P2
24
+
25
+ ## Worked example
26
+
27
+ > **Observe:** axe `label` on `/signup`; `<input name="email">` has no `id`/`aria-label`.
28
+ > **Interpret:** AT users cannot tell what to type (1.3.1 / 4.1.2).
29
+ > **Classify:** WCAG fail (not an axe false positive).
30
+ > **Severity:** P0 — Level A, blocks signup.
31
+ > **Finding:** `/signup` | 1.3.1+4.1.2 | P0 | unlabeled email | `<label for>`.
32
+
33
+ ## Self-critique before reporting [LOW freedom — do not skip]
34
+
35
+ 1. **WCAG SC + numbers** — not "contrast is bad"; quote ratio or selector
36
+ 2. **Keyboard, not axe-only** — 2.1.1 fails even if axe is clean
37
+ 3. **Every reachable page** — obscure routes still count
38
+ 4. **Severity justified** — Level A = P0
39
+ 5. **Axe is ~30–40%** — heading/focus/link-text/reading-order always manual
40
+
41
+ ---
42
+
43
+ ## Phase 0: Auto-Detect Pages and Components
44
+
45
+ ### 0a. Discover Route Structure
46
+
47
+ ```
48
+ Glob("**/app/**/page.{tsx,jsx,ts,js}")
49
+ Glob("**/pages/**/*.{tsx,jsx,ts,js}")
50
+ Glob("**/src/routes/**/*.{tsx,jsx,svelte,vue}")
51
+ ```
52
+
53
+ ### 0b. Find the App URL
54
+
55
+ ```
56
+ Grep(pattern: "NEXT_PUBLIC_APP_URL|NEXT_PUBLIC_BASE_URL|VITE_APP_URL|APP_URL|localhost", glob: ".env*")
57
+ ```
58
+
59
+ If no production URL, default to `http://localhost:3000` (or detected dev server port).
60
+
61
+ ### 0c. Detect CSS Framework and Component Library
62
+
63
+ ```
64
+ Grep(pattern: "tailwindcss|@chakra-ui|@mui|@radix-ui|shadcn|bootstrap|bulma", glob: "package.json")
65
+ ```
66
+
67
+ ### 0d. Detect Existing a11y Tooling
68
+
69
+ ```
70
+ Grep(pattern: "axe-core|@axe-core|eslint-plugin-jsx-a11y|pa11y|lighthouse|@testing-library", glob: "package.json")
71
+ Grep(pattern: "aria-|role=|tabIndex|sr-only|visually-hidden", glob: "*.{tsx,jsx,vue,svelte}", output_mode: "count")
72
+ ```
73
+
74
+ Record: `APP_URL`, `PAGES`, `CSS_FRAMEWORK`, `COMPONENT_LIB`, `EXISTING_A11Y_TOOLS`, `ARIA_USAGE_COUNT`.
75
+
76
+ ---
77
+
78
+ ## Phase 1: Research Current WCAG Guidelines
79
+
80
+ ### 1a. Firecrawl Research
81
+
82
+ ```json
83
+ firecrawl:firecrawl_search
84
+ {
85
+ "query": "WCAG 2.2 success criteria checklist web accessibility [current year]",
86
+ "limit": 5
87
+ }
88
+ ```
89
+
90
+ ```json
91
+ firecrawl:firecrawl_search
92
+ {
93
+ "query": "axe-core automated accessibility testing best practices common false positives",
94
+ "limit": 5
95
+ }
96
+ ```
97
+
98
+ ```json
99
+ firecrawl:firecrawl_search
100
+ {
101
+ "query": "<CSS_FRAMEWORK> <COMPONENT_LIB> accessibility best practices common issues",
102
+ "limit": 5
103
+ }
104
+ ```
105
+
106
+ Scrape 2–3 authoritative results:
107
+
108
+ ```json
109
+ firecrawl:firecrawl_scrape
110
+ {
111
+ "url": "<BEST_RESULT_URL>",
112
+ "formats": ["markdown"],
113
+ "onlyMainContent": true
114
+ }
115
+ ```
116
+
117
+ ### 1b. Framework-Specific a11y Docs (Context7)
118
+
119
+ ```json
120
+ context7:resolve-library-id
121
+ {
122
+ "libraryName": "<COMPONENT_LIB e.g. radix-ui or chakra-ui>"
123
+ }
124
+ ```
125
+
126
+ ```json
127
+ context7:query-docs
128
+ {
129
+ "libraryId": "<RESOLVED_ID>",
130
+ "query": "accessibility ARIA keyboard navigation focus management"
131
+ }
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Phase 2: Automated Scanning (axe-core via Playwright)
137
+
138
+ ### 2a. Navigate to Each Page
139
+
140
+ For each page discovered in Phase 0a:
141
+
142
+ ```bash
143
+ PW="npx --yes @playwright/cli@latest"
144
+ $PW -s=a11y open --headed "<APP_URL><ROUTE>" # first page; use `goto` for subsequent ones
145
+ ```
146
+
147
+ Apply the `protocol-browser-anti-stall` protocol: wait 2s, snapshot, verify page loaded.
148
+
149
+ ### 2b. Inject and Run axe-core
150
+
151
+ Use `run-code` to inject axe-core from CDN and run a full scan. The URL pins
152
+ a version so results are reproducible; if the CDN returns 404, look up the
153
+ current axe-core 4.x on cdnjs and substitute it — do not skip the scan:
154
+
155
+ ```bash
156
+ $PW -s=a11y run-code 'async (page) => { await page.addScriptTag({ url: "https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.10.2/axe.min.js" }); return await page.evaluate(async () => { const r = await axe.run(); return { violations: r.violations.map(v => ({ id: v.id, impact: v.impact, description: v.description, help: v.help, helpUrl: v.helpUrl, nodes: v.nodes.length, targets: v.nodes.slice(0, 3).map(n => n.target[0]) })), passes: r.passes.length, incomplete: r.incomplete.length, inapplicable: r.inapplicable.length }; }); }'
157
+ ```
158
+
159
+ For each violation returned, record:
160
+ - **Rule ID** (e.g., `color-contrast`, `image-alt`, `label`)
161
+ - **Impact** (critical, serious, moderate, minor)
162
+ - **WCAG criteria** mapped from the rule
163
+ - **Affected elements** (CSS selectors)
164
+ - **Count** of affected nodes
165
+
166
+ ### 2c. Check Specific WCAG Categories Manually
167
+
168
+ **Heading Hierarchy (WCAG 1.3.1):**
169
+
170
+ ```bash
171
+ $PW -s=a11y eval '() => Array.from(document.querySelectorAll("h1,h2,h3,h4,h5,h6")).map(h => ({ tag: h.tagName, text: h.textContent.trim().substring(0, 50) }))'
172
+ ```
173
+
174
+ Verify: only one `h1`, headings don't skip levels (h1 -> h3 without h2).
175
+
176
+ **Image Alt Text (WCAG 1.1.1):**
177
+
178
+ ```bash
179
+ $PW -s=a11y eval '() => Array.from(document.querySelectorAll("img")).map(img => ({ src: img.src.split("/").pop(), alt: img.alt, hasAlt: img.hasAttribute("alt"), decorative: img.getAttribute("role") === "presentation" || img.alt === "" }))'
180
+ ```
181
+
182
+ Verify: all informative images have descriptive alt text, decorative images have `alt=""` or `role="presentation"`.
183
+
184
+ **Link Text (WCAG 2.4.4):**
185
+
186
+ ```bash
187
+ $PW -s=a11y eval '() => Array.from(document.querySelectorAll("a")).filter(a => ["click here", "here", "read more", "learn more", "", "link"].includes((a.textContent || "").trim().toLowerCase())).map(a => ({ href: a.href, text: (a.textContent || "").trim(), ariaLabel: a.getAttribute("aria-label") }))'
188
+ ```
189
+
190
+ Flag generic link text ("click here", "read more", empty links without aria-label).
191
+
192
+ **Form Labels (WCAG 1.3.1, 4.1.2):**
193
+
194
+ ```bash
195
+ $PW -s=a11y eval '() => Array.from(document.querySelectorAll("input,select,textarea")).map(el => ({ type: el.type, name: el.name, id: el.id, hasLabel: !!el.id && !!document.querySelector(`label[for="${el.id}"]`), ariaLabel: el.getAttribute("aria-label"), ariaLabelledBy: el.getAttribute("aria-labelledby"), placeholder: el.placeholder }))'
196
+ ```
197
+
198
+ Verify: every form control has an associated `<label>`, `aria-label`, or `aria-labelledby`.
199
+
200
+ **Language Attribute (WCAG 3.1.1):**
201
+
202
+ ```bash
203
+ $PW -s=a11y eval '() => ({ htmlLang: document.documentElement.lang, htmlDir: document.documentElement.dir })'
204
+ ```
205
+
206
+ Verify: `<html>` has a valid `lang` attribute.
207
+
208
+ ### 2d. Take Evidence Screenshots
209
+
210
+ For each page, capture a screenshot as visual evidence:
211
+
212
+ ```bash
213
+ $PW -s=a11y screenshot --filename ".playwright-mcp/a11y-<route>.png"
214
+ ```
215
+
216
+ ---
217
+
218
+ ## Phase 3: Keyboard Navigation Testing
219
+
220
+ ### 3a. Tab Order Test
221
+
222
+ For each page, test that all interactive elements are reachable via Tab key:
223
+
224
+ ```bash
225
+ PW="npx --yes @playwright/cli@latest"
226
+ $PW -s=a11y open --headed "<APP_URL><ROUTE>" # first page; use `goto` for subsequent ones
227
+ ```
228
+
229
+ Press Tab repeatedly and snapshot after each press to track focus movement:
230
+
231
+ ```bash
232
+ $PW -s=a11y press Tab
233
+ $PW -s=a11y snapshot
234
+ ```
235
+
236
+ After each Tab, check:
237
+ - [ ] Focus is visible (there is a focus indicator on the active element)
238
+ - [ ] Focus order is logical (follows visual reading order)
239
+ - [ ] No focus trap (Tab eventually cycles back to the beginning or reaches the end)
240
+ - [ ] Skip links exist (if there is a large navigation area)
241
+
242
+ Keep pressing Tab until focus has visited every interactive element on the page or cycled back to the first one; stop early only when a focus trap is found, and record it.
243
+
244
+ ### 3b. Interactive Element Testing
245
+
246
+ For each interactive component (dropdowns, modals, tabs, accordions):
247
+
248
+ **Enter/Space activation (WCAG 2.1.1):**
249
+ - Tab to the element
250
+ - Press Enter or Space
251
+ - Verify the action fires (snapshot to confirm state change)
252
+
253
+ **Escape to close (WCAG 2.1.1 for modals/dialogs):**
254
+
255
+ ```bash
256
+ $PW -s=a11y press Escape
257
+ ```
258
+
259
+ Verify: modals/dropdowns close, focus returns to the trigger element.
260
+
261
+ **Arrow key navigation (for tab panels, menus, listboxes):**
262
+
263
+ ```bash
264
+ $PW -s=a11y press ArrowDown
265
+ ```
266
+
267
+ ### 3c. Focus Management After State Changes
268
+
269
+ Test that focus is managed correctly after dynamic updates:
270
+ - After opening a modal: focus should move into the modal
271
+ - After closing a modal: focus should return to the trigger
272
+ - After deleting an item from a list: focus should move to the next item or a logical location
273
+ - After form submission: focus should move to a success/error message
274
+
275
+ ---
276
+
277
+ ## Phase 4: Cross-Check with Sentry
278
+
279
+ ### 4a. Search for Assistive Technology Errors
280
+
281
+ ```json
282
+ sentry:search_issues
283
+ {
284
+ "organizationSlug": "<ORG_SLUG>",
285
+ "projectSlugOrId": "<PROJECT_SLUG>",
286
+ "query": "is:unresolved aria OR screenreader OR voiceover OR talkback OR nvda OR jaws OR focus OR tabindex OR keyboard"
287
+ }
288
+ ```
289
+
290
+ ### 4b. Check for JavaScript Errors on Keyboard Interaction
291
+
292
+ ```json
293
+ sentry:search_issues
294
+ {
295
+ "organizationSlug": "<ORG_SLUG>",
296
+ "projectSlugOrId": "<PROJECT_SLUG>",
297
+ "query": "is:unresolved keydown OR keyup OR keypress OR focusin OR focusout"
298
+ }
299
+ ```
300
+
301
+ ### 4c. Browser/Device Breakdown
302
+
303
+ If errors cluster on AT-favored browsers, pull the browser distribution for the issue. `get_issue_tag_values` is a catalog tool, not a direct one, so call it through `execute_sentry_tool`. If the call is rejected, run `search_sentry_tools` with `"issue tag values"` to get the current name and schema.
304
+
305
+ ```json
306
+ sentry:execute_sentry_tool
307
+ {
308
+ "name": "get_issue_tag_values",
309
+ "arguments": {
310
+ "organizationSlug": "<ORG_SLUG>",
311
+ "issueId": "<ISSUE_ID>",
312
+ "tagKey": "browser"
313
+ }
314
+ }
315
+ ```
316
+
317
+ ---
318
+
319
+ ## Phase 5: Static Code Analysis
320
+
321
+ ### 5a. Missing ARIA Attributes
322
+
323
+ ```
324
+ Grep(pattern: "onClick(?!.*role=)(?!.*tabIndex)", glob: "*.{tsx,jsx}")
325
+ ```
326
+
327
+ Flag `div` or `span` elements with click handlers but no `role` or `tabIndex` — these are invisible to keyboard and screen reader users.
328
+
329
+ ### 5b. Inaccessible Custom Components
330
+
331
+ ```
332
+ SemanticSearch(query: "Where are custom interactive components defined (dropdowns, modals, tabs, accordions) that don't use a component library?", target_directories: [])
333
+ ```
334
+
335
+ Check each custom interactive for:
336
+ - Proper ARIA roles (`role="dialog"`, `role="tabpanel"`, etc.)
337
+ - Keyboard event handlers (`onKeyDown`)
338
+ - Focus management (`useRef` + `.focus()`)
339
+ - ARIA states (`aria-expanded`, `aria-selected`, `aria-hidden`)
340
+
341
+ ### 5c. Color Contrast in CSS/Tailwind
342
+
343
+ ```
344
+ Grep(pattern: "text-gray-[345]|text-slate-[345]|text-zinc-[345]|text-neutral-[345]|color:\\s*#[789abc]", glob: "*.{tsx,jsx,css,scss}")
345
+ ```
346
+
347
+ Light gray text on white background is the most common contrast failure. Flag files using light gray text colors for manual contrast checking.
348
+
349
+ ---
350
+
351
+ ## Phase 6: Report
352
+
353
+ ```
354
+ ═══════════════════════════════════════════════════════
355
+ WCAG 2.2 ACCESSIBILITY AUDIT REPORT
356
+ Project: <PROJECT_NAME>
357
+ Date: <DATE>
358
+ Standard: WCAG 2.2 Level AA
359
+ Pages Tested: <COUNT>
360
+ ═══════════════════════════════════════════════════════
361
+
362
+ ## 1. EXECUTIVE SUMMARY
363
+
364
+ | Metric | Result |
365
+ |---------------------------|-----------------|
366
+ | Pages tested | X |
367
+ | Total violations | N |
368
+ | Critical violations | N |
369
+ | Serious violations | N |
370
+ | Level A criteria failed / checked | N / M |
371
+ | Level AA criteria failed / checked | N / M |
372
+ | axe-core rules passed | N |
373
+ | Keyboard navigable pages | X/Y |
374
+
375
+ ## 2. AXE-CORE SCAN RESULTS (per page)
376
+
377
+ | Page | Critical | Serious | Moderate | Minor | Pass | Worst level failed (A / AA / none) |
378
+ |------|----------|---------|----------|-------|------|------|
379
+ | / | ... | ... | ... | ... | ... | A / AA / none |
380
+ | /about | ... | ... | ... | ... | ... | A / AA / none |
381
+
382
+ ## 3. VIOLATIONS BY WCAG CRITERION
383
+
384
+ | WCAG SC | Name | Level | Pages Affected | Elements | Impact | Status |
385
+ |---------|------|-------|----------------|----------|--------|--------|
386
+ | 1.1.1 | Non-text Content | A | ... | ... | ... | PASS/FAIL |
387
+ | 1.3.1 | Info and Relationships | A | ... | ... | ... | PASS/FAIL |
388
+ | 1.4.3 | Contrast (Minimum) | AA | ... | ... | ... | PASS/FAIL |
389
+ | 2.1.1 | Keyboard | A | ... | ... | ... | PASS/FAIL |
390
+ | 2.4.3 | Focus Order | A | ... | ... | ... | PASS/FAIL |
391
+ | 2.4.4 | Link Purpose | A | ... | ... | ... | PASS/FAIL |
392
+ | 2.4.7 | Focus Visible | AA | ... | ... | ... | PASS/FAIL |
393
+ | 3.1.1 | Language of Page | A | ... | ... | ... | PASS/FAIL |
394
+ | 4.1.2 | Name, Role, Value | A | ... | ... | ... | PASS/FAIL |
395
+
396
+ ## 4. KEYBOARD NAVIGATION
397
+
398
+ | Page | Tab Order Logical | Focus Visible | No Focus Trap | Skip Link | Worst level failed |
399
+ |------|-------------------|---------------|---------------|-----------|-------|
400
+ | / | ... | ... | ... | ... | A / AA / none |
401
+
402
+ ## 5. INTERACTIVE COMPONENTS
403
+
404
+ | Component | Location | ARIA Roles | Keyboard Operable | Focus Managed | Worst level failed |
405
+ |-----------|----------|------------|-------------------|---------------|-------|
406
+ | Modal | ... | ... | ... | ... | A / AA / none |
407
+ | Dropdown | ... | ... | ... | ... | A / AA / none |
408
+
409
+ ## 6. SENTRY ASSISTIVE TECHNOLOGY ERRORS
410
+
411
+ | Issue | Error Type | Events | Browser/AT | Fix Needed |
412
+ |-------|------------|--------|------------|------------|
413
+ | ... | ... | ... | ... | ... |
414
+
415
+ ## 7. STATIC CODE FINDINGS
416
+
417
+ | Pattern | Files | Count | Risk |
418
+ |---------|-------|-------|------|
419
+ | onClick without role/tabIndex | ... | N | High |
420
+ | Custom interactive without ARIA | ... | N | High |
421
+ | Low-contrast text classes | ... | N | Medium |
422
+
423
+ ## 8. CRITICAL FINDINGS (Action Required)
424
+
425
+ P0 — Level A violations (legal risk):
426
+ 1. [finding with WCAG SC, element, page, evidence]
427
+
428
+ P1 — Level AA violations (compliance gap):
429
+ 1. [finding with WCAG SC, element, page, evidence]
430
+
431
+ P2 — Best practice improvements:
432
+ 1. [finding with rationale]
433
+
434
+ ## 9. RECOMMENDATIONS
435
+
436
+ | # | WCAG SC | Current | Recommended | Effort | Files to Change |
437
+ |---|---------|---------|-------------|--------|-----------------|
438
+ | 1 | ... | ... | ... | S/M/L | ... |
439
+
440
+ ═══════════════════════════════════════════════════════
441
+ ```
@@ -0,0 +1,181 @@
1
+ ---
2
+ name: audit-agent-speed
3
+ description: >
4
+ Measure and fix a slow coding-agent setup: status line, hooks, instruction
5
+ bloat, effort, worktree pile-up, antivirus and indexer scans. Use when
6
+ "Claude is slow" or "CPU is pinned". App speed → audit-performance.
7
+ license: MIT
8
+ effort: high
9
+ ---
10
+
11
+ # audit-agent-speed — Make the agent setup fast again
12
+
13
+ **Degree of freedom: MIXED** — measurement commands `[LOW freedom — run
14
+ exactly]`; which fixes to recommend `[HIGH freedom]`.
15
+
16
+ > **Audit-and-fix exception.** Report first, then fix. Apply local, reversible
17
+ > fixes right away. Ask before anything that needs admin rights, touches
18
+ > committed config, deletes data, or changes a user preference (effort, model).
19
+
20
+ Most of an agent's turn is model time on the provider's servers, and no local
21
+ tuning changes that. This skill wins back the **local** part: hooks, tools,
22
+ builds, git, terminal rendering, and a CPU that other processes keep pinned.
23
+
24
+ ## This skill vs neighbors
25
+
26
+ | Skill | Owns |
27
+ |---|---|
28
+ | **audit-agent-speed** (this) | The agent host: Claude Code/Cursor config, hooks, status line, worktrees, OS scanners |
29
+ | `audit-performance` | The product's runtime speed (Core Web Vitals, bundles, queries) |
30
+ | `workflow-environment-ready` | Proving tools and verify commands work before a long run |
31
+ | `iterate-agent-harness` | Turning an agent failure into a guard with a regression test |
32
+
33
+ ## How to reason
34
+
35
+ 1. **Observe**: measure CPU per process before blaming anything. Quote the numbers.
36
+ 2. **Interpret**: per-call cost × call rate × concurrent sessions. A 100 ms hook
37
+ on every tool call across 3 agents matters; a 2 s Stop hook that runs once doesn't.
38
+ 3. **Classify**: fix now (local, reversible) / ask (admin, committed, preference) / leave.
39
+ 4. **Verify**: re-measure after each fix and report each change's effect separately.
40
+
41
+ ## Worked example
42
+
43
+ > **Observe:** total CPU 100% with 3 sessions. Per-process sampling: `ccusage`
44
+ > ×5 at 49%, `wmiprvse` 8%, `MsMpEng` 3%.
45
+ > **Interpret:** the status line runs `ccusage statusline` every 10 s per
46
+ > session; each run re-reads ~10 GB of transcripts, and slow runs pile up.
47
+ > **Classify:** fix now. Remove the widget (back up the config first).
48
+ > **Verify:** no `ccusage` spawned in 2 min; total 53–72% → later ~30% as agent
49
+ > jobs finished (report the workload change separately from the fix).
50
+
51
+ ---
52
+
53
+ ## Phase 0 — Measure (run exactly)
54
+
55
+ Windows (includes protected processes such as Defender):
56
+
57
+ ```powershell
58
+ $c = Get-Counter '\Process(*)\% Processor Time' -SampleInterval 5 -MaxSamples 1 -ErrorAction SilentlyContinue
59
+ $cores = (Get-CimInstance Win32_ComputerSystem).NumberOfLogicalProcessors
60
+ $c.CounterSamples | Where-Object { $_.InstanceName -notin '_total','idle' -and $_.Status -eq 0 } |
61
+ Group-Object { $_.InstanceName -replace '#\d+$','' } |
62
+ ForEach-Object { [pscustomobject]@{ Name=$_.Name; Count=$_.Count; Cpu=[math]::Round((($_.Group | Measure-Object CookedValue -Sum).Sum)/$cores,1) } } |
63
+ Sort-Object Cpu -Descending | Select-Object -First 15
64
+ ```
65
+
66
+ macOS / Linux: `ps -eo pcpu,comm --sort=-pcpu | head -20` (macOS: `ps -Ao pcpu,comm -r | head -20`).
67
+
68
+ Take 3–4 samples over ~30 s. Avoid heavy `Get-CimInstance Win32_Process`
69
+ loops while measuring; they inflate `wmiprvse` themselves.
70
+
71
+ ## Phase 1 — Status line
72
+
73
+ - A status line runs on every assistant message (debounced at 300 ms).
74
+ `statusLine.refreshInterval` **adds** timed runs on top; leave it unset
75
+ unless a widget needs a clock.
76
+ - Widgets that re-read transcripts on every render (`ccusage statusline`,
77
+ transcript-parsing HUDs) scale with transcript volume × sessions. Prefer
78
+ widgets that only read the JSON Claude Code passes on stdin (cost,
79
+ context window, rate limits). Keep `ccusage` as an on-demand CLI.
80
+ - Cache slow git calls (ccstatusline: `gitCacheTtlSeconds` ≥ 30).
81
+ - Source: https://code.claude.com/docs/en/statusline
82
+
83
+ ## Phase 2 — Hooks
84
+
85
+ Inventory every hook in `~/.claude/settings.json` and each repo's
86
+ `.claude/settings.json`, then time each one (`echo '{}' | <command>`).
87
+
88
+ - **Per-tool-call hooks** (`PreToolUse` with matcher `*`, `PostToolUse` on
89
+ `Edit|Write`) spawn a process per call. Narrow with `matcher` or the `if`
90
+ field (permission-rule syntax) so non-matching calls never spawn.
91
+ - **Per-edit lint/format** that blocks for seconds duplicates `lint-staged` at
92
+ commit and rewrites files under the agent (forcing re-reads). Remove it when
93
+ pre-commit already runs `eslint --fix`.
94
+ - **Synchronous Stop typecheck is invisible cost.** For most events, including
95
+ Stop, plain stdout goes to the debug log only, so the agent never sees the
96
+ errors while every turn waits. Replace it with
97
+ [scripts/stop-typecheck.mjs](scripts/stop-typecheck.mjs) registered with
98
+ `asyncRewake: true`: background, skip-if-unchanged, wakes the agent only on a
99
+ new error set. Copy it to `<repo>/.claude/hooks/` and pass the repo's
100
+ typecheck script name.
101
+ - Source: https://code.claude.com/docs/en/hooks (Exit code 0, `async`, `asyncRewake`, `if`)
102
+
103
+ ## Phase 3 — Instruction files and search scope
104
+
105
+ - **AGENTS.md is skipped when any CLAUDE.md exists in the working directory or
106
+ above it**, which includes a parent folder holding all your repos. Load both
107
+ with user settings
108
+ `"pluginConfigs": { "agents-md@builtin": { "options": { "instructionFiles": "claude-md-and-agents-md" } } }`
109
+ (ignored in project settings). Source: https://code.claude.com/docs/en/memory
110
+ - Keep each CLAUDE.md under ~200 lines; `@imports` load at launch and don't
111
+ save context. Run `/doctor prompt-audit` to find bloat.
112
+ - **Worktree folders inside the repo that are not gitignored** (`.worktrees/`)
113
+ make every Grep/Glob walk each copy and return duplicate hits. Add them to
114
+ `.git/info/exclude` (local, no commit) or `.gitignore`. Check:
115
+ `git check-ignore -v .worktrees/x` and compare `rg --files | wc -l` before and after.
116
+
117
+ ## Phase 4 — Effort and models
118
+
119
+ - Lower effort is faster and cheaper; Opus 5.5 defaults to `medium`. A global
120
+ `xhigh` slows every routine turn. Suggest `high` (or the default) with
121
+ `/effort xhigh` for hard tasks. On Opus 5.5, changing effort keeps the prompt cache.
122
+ - The built-in Explore agent inherits the main model. A user agent named
123
+ `Explore` with `model: haiku` overrides it for fast, cheap searches.
124
+ - Fast mode (`/fast`): up to 2.5× faster output at a higher per-token price,
125
+ billed from usage credits on subscriptions; enable at session start.
126
+ - These are preferences: recommend, then ask. Sources:
127
+ https://code.claude.com/docs/en/model-config, https://code.claude.com/docs/en/sub-agents, https://code.claude.com/docs/en/fast-mode
128
+
129
+ ## Phase 5 — Worktree pile-up
130
+
131
+ Agents create worktrees faster than anyone removes them. Inventory with
132
+ `git worktree list --porcelain` per repo and classify:
133
+
134
+ - **KEEP**: uncommitted changes, locked, path in a running process's command
135
+ line, or activity in the last 24 h. Measure activity from `HEAD` and
136
+ `logs/HEAD` mtimes in the worktree's git dir, **not** `index`: `git status`
137
+ rewrites the index and makes every worktree look fresh.
138
+ - **SAFE**: clean, idle, and either merged into the default branch or its PR
139
+ branch is `[gone]` on the remote (squash merges).
140
+ - **REVIEW**: clean, but holds commits not on the default branch.
141
+
142
+ Report the counts and list; remove SAFE ones only on approval, with
143
+ `git worktree remove` (never `--force`).
144
+
145
+ ## Phase 6 — Operating system (Windows examples)
146
+
147
+ - **Antivirus:** prefer a Dev Drive with Defender performance mode over
148
+ exclusions. Process exclusions (`node.exe`, `git.exe`) skip scanning of
149
+ everything those processes write, so flag them as risk, not as a speed fix.
150
+ Source: https://learn.microsoft.com/en-us/windows/dev-drive/
151
+ - **Search indexer:** exclude the repos folder via Settings → Privacy &
152
+ security → Searching Windows → Add an excluded folder. The
153
+ `PreventIndexingCertainPaths` policy key was observed to be ignored on
154
+ Windows 11 Home; verify any exclusion with a probe file.
155
+ - **Vendor utilities that query WMI on every process start** (observed:
156
+ Alienware Command Center's `AWCC.SCSubAgent`, ~8% CPU) scale with agent
157
+ process churn. Attribute `wmiprvse` load by enabling the
158
+ `Microsoft-Windows-WMI-Activity/Trace` channel for ~20 s (admin) and
159
+ grouping `ClientProcessId`. Killing the sub-agent doesn't stick if a
160
+ service respawns it; the fix is uninstalling the utility, which is the owner's call.
161
+ - Power plan on AC and Best performance; background terminals are throttled
162
+ harder on battery.
163
+
164
+ ## Self-critique
165
+
166
+ Before reporting, fail the run if any of these are true:
167
+
168
+ - A cause was named without a per-process measurement behind it
169
+ - A fix was credited with a drop that a workload change explains
170
+ - A hook or setting was changed without timing it before and after
171
+ - A worktree, exclusion, or user preference was changed without approval
172
+ - An exclusion or policy was reported as working without a probe that proves it
173
+
174
+ ## Report
175
+
176
+ ```
177
+ | # | Finding | Measured | Fix | Status (fixed / ask / leave) |
178
+ ```
179
+
180
+ Then a before/after CPU table, the list of changed files with backups, and
181
+ what's left for the owner (admin prompts, committed config, preferences).