specweave 0.1.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 (288) hide show
  1. package/INSTALL.md +848 -0
  2. package/LICENSE +21 -0
  3. package/README.md +675 -0
  4. package/SPECWEAVE.md +665 -0
  5. package/bin/install-agents.sh +57 -0
  6. package/bin/install-all.sh +49 -0
  7. package/bin/install-commands.sh +56 -0
  8. package/bin/install-skills.sh +57 -0
  9. package/bin/specweave.js +81 -0
  10. package/dist/adapters/adapter-base.d.ts +50 -0
  11. package/dist/adapters/adapter-base.d.ts.map +1 -0
  12. package/dist/adapters/adapter-base.js +146 -0
  13. package/dist/adapters/adapter-base.js.map +1 -0
  14. package/dist/adapters/adapter-interface.d.ts +108 -0
  15. package/dist/adapters/adapter-interface.d.ts.map +1 -0
  16. package/dist/adapters/adapter-interface.js +9 -0
  17. package/dist/adapters/adapter-interface.js.map +1 -0
  18. package/dist/adapters/claude/adapter.d.ts +54 -0
  19. package/dist/adapters/claude/adapter.d.ts.map +1 -0
  20. package/dist/adapters/claude/adapter.js +184 -0
  21. package/dist/adapters/claude/adapter.js.map +1 -0
  22. package/dist/adapters/copilot/adapter.d.ts +42 -0
  23. package/dist/adapters/copilot/adapter.d.ts.map +1 -0
  24. package/dist/adapters/copilot/adapter.js +239 -0
  25. package/dist/adapters/copilot/adapter.js.map +1 -0
  26. package/dist/adapters/cursor/adapter.d.ts +42 -0
  27. package/dist/adapters/cursor/adapter.d.ts.map +1 -0
  28. package/dist/adapters/cursor/adapter.js +297 -0
  29. package/dist/adapters/cursor/adapter.js.map +1 -0
  30. package/dist/adapters/generic/adapter.d.ts +40 -0
  31. package/dist/adapters/generic/adapter.d.ts.map +1 -0
  32. package/dist/adapters/generic/adapter.js +155 -0
  33. package/dist/adapters/generic/adapter.js.map +1 -0
  34. package/dist/cli/commands/init.d.ts +6 -0
  35. package/dist/cli/commands/init.d.ts.map +1 -0
  36. package/dist/cli/commands/init.js +247 -0
  37. package/dist/cli/commands/init.js.map +1 -0
  38. package/dist/cli/commands/install.d.ts +7 -0
  39. package/dist/cli/commands/install.d.ts.map +1 -0
  40. package/dist/cli/commands/install.js +160 -0
  41. package/dist/cli/commands/install.js.map +1 -0
  42. package/dist/cli/commands/list.d.ts +6 -0
  43. package/dist/cli/commands/list.d.ts.map +1 -0
  44. package/dist/cli/commands/list.js +154 -0
  45. package/dist/cli/commands/list.js.map +1 -0
  46. package/package.json +90 -0
  47. package/src/adapters/README.md +312 -0
  48. package/src/adapters/adapter-base.ts +146 -0
  49. package/src/adapters/adapter-interface.ts +120 -0
  50. package/src/adapters/claude/README.md +241 -0
  51. package/src/adapters/claude/adapter.ts +157 -0
  52. package/src/adapters/copilot/.github/copilot/instructions.md +376 -0
  53. package/src/adapters/copilot/README.md +200 -0
  54. package/src/adapters/copilot/adapter.ts +210 -0
  55. package/src/adapters/cursor/.cursor/context/docs-context.md +62 -0
  56. package/src/adapters/cursor/.cursor/context/increments-context.md +71 -0
  57. package/src/adapters/cursor/.cursor/context/strategy-context.md +73 -0
  58. package/src/adapters/cursor/.cursor/context/tests-context.md +89 -0
  59. package/src/adapters/cursor/.cursorrules +325 -0
  60. package/src/adapters/cursor/README.md +243 -0
  61. package/src/adapters/cursor/adapter.ts +268 -0
  62. package/src/adapters/generic/README.md +277 -0
  63. package/src/adapters/generic/SPECWEAVE-MANUAL.md +676 -0
  64. package/src/adapters/generic/adapter.ts +159 -0
  65. package/src/adapters/registry.yaml +126 -0
  66. package/src/agents/architect/AGENT.md +416 -0
  67. package/src/agents/devops/AGENT.md +1738 -0
  68. package/src/agents/docs-writer/AGENT.md +239 -0
  69. package/src/agents/performance/AGENT.md +228 -0
  70. package/src/agents/pm/AGENT.md +751 -0
  71. package/src/agents/qa-lead/AGENT.md +150 -0
  72. package/src/agents/security/AGENT.md +179 -0
  73. package/src/agents/sre/AGENT.md +582 -0
  74. package/src/agents/sre/modules/backend-diagnostics.md +481 -0
  75. package/src/agents/sre/modules/database-diagnostics.md +509 -0
  76. package/src/agents/sre/modules/infrastructure.md +561 -0
  77. package/src/agents/sre/modules/monitoring.md +439 -0
  78. package/src/agents/sre/modules/security-incidents.md +421 -0
  79. package/src/agents/sre/modules/ui-diagnostics.md +302 -0
  80. package/src/agents/sre/playbooks/01-high-cpu-usage.md +204 -0
  81. package/src/agents/sre/playbooks/02-database-deadlock.md +241 -0
  82. package/src/agents/sre/playbooks/03-memory-leak.md +252 -0
  83. package/src/agents/sre/playbooks/04-slow-api-response.md +269 -0
  84. package/src/agents/sre/playbooks/05-ddos-attack.md +293 -0
  85. package/src/agents/sre/playbooks/06-disk-full.md +314 -0
  86. package/src/agents/sre/playbooks/07-service-down.md +333 -0
  87. package/src/agents/sre/playbooks/08-data-corruption.md +337 -0
  88. package/src/agents/sre/playbooks/09-cascade-failure.md +430 -0
  89. package/src/agents/sre/playbooks/10-rate-limit-exceeded.md +464 -0
  90. package/src/agents/sre/scripts/health-check.sh +230 -0
  91. package/src/agents/sre/scripts/log-analyzer.py +213 -0
  92. package/src/agents/sre/scripts/metrics-collector.sh +294 -0
  93. package/src/agents/sre/scripts/trace-analyzer.js +257 -0
  94. package/src/agents/sre/templates/incident-report.md +249 -0
  95. package/src/agents/sre/templates/mitigation-plan.md +375 -0
  96. package/src/agents/sre/templates/post-mortem.md +418 -0
  97. package/src/agents/sre/templates/runbook-template.md +412 -0
  98. package/src/agents/tech-lead/AGENT.md +263 -0
  99. package/src/commands/add-tasks.md +176 -0
  100. package/src/commands/close-increment.md +347 -0
  101. package/src/commands/create-increment.md +223 -0
  102. package/src/commands/create-project.md +528 -0
  103. package/src/commands/generate-docs.md +623 -0
  104. package/src/commands/list-increments.md +180 -0
  105. package/src/commands/review-docs.md +331 -0
  106. package/src/commands/start-increment.md +139 -0
  107. package/src/commands/sync-github.md +115 -0
  108. package/src/commands/validate-increment.md +800 -0
  109. package/src/hooks/README.md +252 -0
  110. package/src/hooks/docs-changed.sh +59 -0
  111. package/src/hooks/human-input-required.sh +55 -0
  112. package/src/hooks/post-task-completion.sh +57 -0
  113. package/src/hooks/pre-implementation.sh +47 -0
  114. package/src/skills/ado-sync/README.md +449 -0
  115. package/src/skills/ado-sync/SKILL.md +245 -0
  116. package/src/skills/ado-sync/test-cases/test-1.yaml +9 -0
  117. package/src/skills/ado-sync/test-cases/test-2.yaml +8 -0
  118. package/src/skills/ado-sync/test-cases/test-3.yaml +9 -0
  119. package/src/skills/bmad-method-expert/SKILL.md +628 -0
  120. package/src/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
  121. package/src/skills/bmad-method-expert/scripts/check-setup.js +208 -0
  122. package/src/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
  123. package/src/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
  124. package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +12 -0
  125. package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +12 -0
  126. package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +12 -0
  127. package/src/skills/brownfield-analyzer/SKILL.md +523 -0
  128. package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +48 -0
  129. package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +12 -0
  130. package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +12 -0
  131. package/src/skills/brownfield-onboarder/SKILL.md +625 -0
  132. package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +12 -0
  133. package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +12 -0
  134. package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +12 -0
  135. package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +12 -0
  136. package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +12 -0
  137. package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +12 -0
  138. package/src/skills/context-loader/SKILL.md +734 -0
  139. package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +39 -0
  140. package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +44 -0
  141. package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +45 -0
  142. package/src/skills/context-optimizer/SKILL.md +618 -0
  143. package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +97 -0
  144. package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +109 -0
  145. package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +98 -0
  146. package/src/skills/cost-optimizer/SKILL.md +190 -0
  147. package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +75 -0
  148. package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +52 -0
  149. package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +63 -0
  150. package/src/skills/cost-optimizer/test-results/README.md +46 -0
  151. package/src/skills/design-system-architect/SKILL.md +107 -0
  152. package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +23 -0
  153. package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +24 -0
  154. package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +23 -0
  155. package/src/skills/diagrams-architect/SKILL.md +763 -0
  156. package/src/skills/diagrams-generator/SKILL.md +25 -0
  157. package/src/skills/diagrams-generator/test-cases/test-1.yaml +9 -0
  158. package/src/skills/diagrams-generator/test-cases/test-2.yaml +9 -0
  159. package/src/skills/diagrams-generator/test-cases/test-3.yaml +8 -0
  160. package/src/skills/docs-updater/README.md +48 -0
  161. package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +12 -0
  162. package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +12 -0
  163. package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +12 -0
  164. package/src/skills/dotnet-backend/SKILL.md +250 -0
  165. package/src/skills/e2e-playwright/README.md +506 -0
  166. package/src/skills/e2e-playwright/SKILL.md +457 -0
  167. package/src/skills/e2e-playwright/execute.js +373 -0
  168. package/src/skills/e2e-playwright/lib/utils.js +514 -0
  169. package/src/skills/e2e-playwright/package.json +33 -0
  170. package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +54 -0
  171. package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +64 -0
  172. package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +74 -0
  173. package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +98 -0
  174. package/src/skills/figma-designer/SKILL.md +149 -0
  175. package/src/skills/figma-implementer/SKILL.md +148 -0
  176. package/src/skills/figma-mcp-connector/SKILL.md +136 -0
  177. package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +22 -0
  178. package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +21 -0
  179. package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +18 -0
  180. package/src/skills/figma-to-code/SKILL.md +128 -0
  181. package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +29 -0
  182. package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +27 -0
  183. package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +28 -0
  184. package/src/skills/frontend/SKILL.md +177 -0
  185. package/src/skills/github-sync/SKILL.md +252 -0
  186. package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +12 -0
  187. package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +12 -0
  188. package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +12 -0
  189. package/src/skills/hetzner-provisioner/README.md +308 -0
  190. package/src/skills/hetzner-provisioner/SKILL.md +251 -0
  191. package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +71 -0
  192. package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +85 -0
  193. package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +126 -0
  194. package/src/skills/hetzner-provisioner/test-results/README.md +259 -0
  195. package/src/skills/increment-planner/SKILL.md +889 -0
  196. package/src/skills/increment-planner/scripts/feature-utils.js +250 -0
  197. package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +27 -0
  198. package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +30 -0
  199. package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +24 -0
  200. package/src/skills/increment-quality-judge/SKILL.md +566 -0
  201. package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +95 -0
  202. package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +108 -0
  203. package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +87 -0
  204. package/src/skills/jira-sync/README.md +328 -0
  205. package/src/skills/jira-sync/SKILL.md +209 -0
  206. package/src/skills/jira-sync/test-cases/test-1.yaml +9 -0
  207. package/src/skills/jira-sync/test-cases/test-2.yaml +9 -0
  208. package/src/skills/jira-sync/test-cases/test-3.yaml +10 -0
  209. package/src/skills/nextjs/SKILL.md +176 -0
  210. package/src/skills/nodejs-backend/SKILL.md +181 -0
  211. package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +12 -0
  212. package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +12 -0
  213. package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +12 -0
  214. package/src/skills/python-backend/SKILL.md +226 -0
  215. package/src/skills/role-orchestrator/README.md +197 -0
  216. package/src/skills/role-orchestrator/SKILL.md +1184 -0
  217. package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +98 -0
  218. package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +73 -0
  219. package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +121 -0
  220. package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +145 -0
  221. package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +149 -0
  222. package/src/skills/skill-creator/LICENSE.txt +202 -0
  223. package/src/skills/skill-creator/SKILL.md +209 -0
  224. package/src/skills/skill-creator/scripts/init_skill.py +303 -0
  225. package/src/skills/skill-creator/scripts/package_skill.py +110 -0
  226. package/src/skills/skill-creator/scripts/quick_validate.py +65 -0
  227. package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +12 -0
  228. package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +12 -0
  229. package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +12 -0
  230. package/src/skills/skill-router/SKILL.md +497 -0
  231. package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +33 -0
  232. package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +42 -0
  233. package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +50 -0
  234. package/src/skills/spec-driven-brainstorming/README.md +264 -0
  235. package/src/skills/spec-driven-brainstorming/SKILL.md +439 -0
  236. package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +148 -0
  237. package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +190 -0
  238. package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +233 -0
  239. package/src/skills/spec-driven-debugging/README.md +479 -0
  240. package/src/skills/spec-driven-debugging/SKILL.md +652 -0
  241. package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +212 -0
  242. package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +461 -0
  243. package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +366 -0
  244. package/src/skills/spec-kit-expert/SKILL.md +1012 -0
  245. package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +12 -0
  246. package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +12 -0
  247. package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +12 -0
  248. package/src/skills/specweave-ado-mapper/SKILL.md +501 -0
  249. package/src/skills/specweave-detector/SKILL.md +420 -0
  250. package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +37 -0
  251. package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +37 -0
  252. package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +34 -0
  253. package/src/skills/specweave-jira-mapper/SKILL.md +500 -0
  254. package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +12 -0
  255. package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +12 -0
  256. package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +12 -0
  257. package/src/skills/task-builder/README.md +90 -0
  258. package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +12 -0
  259. package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +12 -0
  260. package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +12 -0
  261. package/src/templates/.env.example +144 -0
  262. package/src/templates/.gitignore.template +81 -0
  263. package/src/templates/CLAUDE.md.template +383 -0
  264. package/src/templates/README.md.template +240 -0
  265. package/src/templates/config.yaml +333 -0
  266. package/src/templates/docs/README.md +124 -0
  267. package/src/templates/docs/adr-template.md +118 -0
  268. package/src/templates/docs/hld-template.md +220 -0
  269. package/src/templates/docs/lld-template.md +580 -0
  270. package/src/templates/docs/prd-template.md +132 -0
  271. package/src/templates/docs/rfc-template.md +229 -0
  272. package/src/templates/docs/runbook-template.md +298 -0
  273. package/src/templates/environments/minimal/.env.production +16 -0
  274. package/src/templates/environments/minimal/README.md +54 -0
  275. package/src/templates/environments/minimal/deploy-production.yml +52 -0
  276. package/src/templates/environments/progressive/.env.qa +28 -0
  277. package/src/templates/environments/progressive/README.md +129 -0
  278. package/src/templates/environments/progressive/deploy-production.yml +93 -0
  279. package/src/templates/environments/progressive/deploy-qa.yml +62 -0
  280. package/src/templates/environments/progressive/deploy-staging.yml +67 -0
  281. package/src/templates/environments/standard/.env.development +20 -0
  282. package/src/templates/environments/standard/.env.production +30 -0
  283. package/src/templates/environments/standard/.env.staging +23 -0
  284. package/src/templates/environments/standard/README.md +97 -0
  285. package/src/templates/environments/standard/deploy-production.yml +68 -0
  286. package/src/templates/environments/standard/deploy-staging.yml +61 -0
  287. package/src/templates/environments/standard/docker-compose.yml +43 -0
  288. package/src/templates/increment-metadata-template.yaml +138 -0
@@ -0,0 +1,421 @@
1
+ # Security Incidents
2
+
3
+ **Purpose**: Respond to security breaches, DDoS attacks, and unauthorized access attempts.
4
+
5
+ **IMPORTANT**: For security incidents, SRE Agent collaborates with `security-agent` skill.
6
+
7
+ ## Incident Response Protocol
8
+
9
+ ### SEV1 Security Incidents (CRITICAL)
10
+
11
+ **Immediate Actions** (First 5 minutes):
12
+ 1. **Isolate** affected systems
13
+ 2. **Preserve** evidence (logs, snapshots)
14
+ 3. **Notify** security team and management
15
+ 4. **Assess** scope of breach
16
+ 5. **Document** timeline
17
+
18
+ **DO NOT**:
19
+ - Delete logs (preserve evidence)
20
+ - Reboot systems (unless absolutely necessary)
21
+ - Make changes without documenting
22
+
23
+ ---
24
+
25
+ ## Common Security Incidents
26
+
27
+ ### 1. DDoS Attack
28
+
29
+ **Symptoms**:
30
+ - Sudden traffic spike (10x-100x normal)
31
+ - Legitimate users can't access service
32
+ - High bandwidth usage
33
+ - Server overload
34
+
35
+ **Diagnosis**:
36
+
37
+ #### Check Traffic Patterns
38
+ ```bash
39
+ # Check connections by IP
40
+ netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
41
+
42
+ # Check HTTP requests by IP (nginx)
43
+ awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
44
+
45
+ # Check requests per second
46
+ tail -f /var/log/nginx/access.log | awk '{print $4}' | uniq -c
47
+ ```
48
+
49
+ **Red flags**:
50
+ - Single IP making thousands of requests
51
+ - Requests from suspicious IPs (botnets)
52
+ - High rate of 4xx errors (probing)
53
+ - Unusual traffic patterns
54
+
55
+ ---
56
+
57
+ #### Immediate Mitigation
58
+ ```bash
59
+ # 1. Rate limiting (nginx)
60
+ # Add to nginx.conf:
61
+ limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
62
+ limit_req zone=one burst=20 nodelay;
63
+
64
+ # 2. Block suspicious IPs (iptables)
65
+ iptables -A INPUT -s <ATTACKER_IP> -j DROP
66
+
67
+ # 3. Enable DDoS protection (CloudFlare, AWS Shield)
68
+ # CloudFlare: Enable "I'm Under Attack" mode
69
+ # AWS: Enable AWS Shield Standard/Advanced
70
+
71
+ # 4. Increase capacity (auto-scaling)
72
+ # Scale up to handle traffic (if legitimate)
73
+ ```
74
+
75
+ ---
76
+
77
+ ### 2. Unauthorized Access / Data Breach
78
+
79
+ **Symptoms**:
80
+ - Alerts for failed login attempts
81
+ - Successful login from unusual location
82
+ - Unusual data access patterns
83
+ - Data exfiltration detected
84
+
85
+ **Diagnosis**:
86
+
87
+ #### Check Access Logs
88
+ ```bash
89
+ # Check authentication logs (Linux)
90
+ grep "Failed password" /var/log/auth.log | tail -50
91
+
92
+ # Check successful logins
93
+ grep "Accepted password" /var/log/auth.log | tail -50
94
+
95
+ # Check login attempts by IP
96
+ awk '/Failed password/ {print $(NF-3)}' /var/log/auth.log | sort | uniq -c | sort -nr
97
+ ```
98
+
99
+ **Red flags**:
100
+ - Hundreds of failed login attempts (brute force)
101
+ - Successful login from suspicious IP/location
102
+ - Login at unusual time (3am)
103
+ - Multiple accounts accessed from same IP
104
+
105
+ ---
106
+
107
+ #### Immediate Response (SEV1)
108
+ ```bash
109
+ # 1. ISOLATE: Disable compromised account
110
+ # Application-level:
111
+ UPDATE users SET disabled = true WHERE id = <COMPROMISED_USER_ID>;
112
+
113
+ # System-level:
114
+ passwd -l <username> # Lock account
115
+
116
+ # 2. PRESERVE: Copy logs for forensics
117
+ cp /var/log/auth.log /forensics/auth.log.$(date +%Y%m%d)
118
+ cp /var/log/nginx/access.log /forensics/access.log.$(date +%Y%m%d)
119
+
120
+ # 3. ASSESS: Check what was accessed
121
+ # Database audit logs
122
+ # Application logs
123
+ # File access logs
124
+
125
+ # 4. NOTIFY: Alert security team
126
+ # Email, Slack, PagerDuty
127
+
128
+ # 5. DOCUMENT: Create incident timeline
129
+ ```
130
+
131
+ ---
132
+
133
+ #### Long-term Mitigation
134
+ - Force password reset for all users
135
+ - Enable 2FA/MFA
136
+ - Review access controls
137
+ - Conduct security audit
138
+ - Update security policies
139
+ - Train users on security
140
+
141
+ ---
142
+
143
+ ### 3. SQL Injection Attempt
144
+
145
+ **Symptoms**:
146
+ - Unusual SQL queries in logs
147
+ - 500 errors with SQL syntax messages
148
+ - Alerts from WAF (Web Application Firewall)
149
+
150
+ **Diagnosis**:
151
+
152
+ #### Check Application Logs
153
+ ```bash
154
+ # Look for SQL injection patterns
155
+ grep -E "(SELECT|INSERT|UPDATE|DELETE).*FROM.*WHERE" /var/log/application.log
156
+
157
+ # Look for SQL errors
158
+ grep "SQLException\|SQL syntax" /var/log/application.log
159
+
160
+ # Check for malicious patterns
161
+ grep -E "(\'\s*OR\s*\'|\-\-|UNION\s+SELECT)" /var/log/nginx/access.log
162
+ ```
163
+
164
+ **Example Malicious Request**:
165
+ ```
166
+ GET /api/users?id=1' OR '1'='1
167
+ GET /api/users?id=1; DROP TABLE users;--
168
+ ```
169
+
170
+ ---
171
+
172
+ #### Immediate Response
173
+ ```bash
174
+ # 1. Block attacker IP
175
+ iptables -A INPUT -s <ATTACKER_IP> -j DROP
176
+
177
+ # 2. Enable WAF rule (ModSecurity, AWS WAF)
178
+ # Block requests with SQL keywords
179
+
180
+ # 3. Check database for unauthorized changes
181
+ # Compare current schema with backup
182
+ # Check audit logs for suspicious queries
183
+
184
+ # 4. Review application code
185
+ # Use parameterized queries, not string concatenation
186
+ ```
187
+
188
+ **Long-term Fix**:
189
+ ```javascript
190
+ // BAD: SQL injection vulnerable
191
+ const query = `SELECT * FROM users WHERE id = ${req.query.id}`;
192
+
193
+ // GOOD: Parameterized query
194
+ const query = 'SELECT * FROM users WHERE id = ?';
195
+ db.query(query, [req.query.id]);
196
+ ```
197
+
198
+ ---
199
+
200
+ ### 4. Malware / Crypto Mining
201
+
202
+ **Symptoms**:
203
+ - High CPU usage (100%)
204
+ - Unusual network traffic (to crypto pool)
205
+ - Unknown processes running
206
+ - Server slow
207
+
208
+ **Diagnosis**:
209
+
210
+ #### Check Running Processes
211
+ ```bash
212
+ # Check CPU usage by process
213
+ top -bn1 | head -20
214
+
215
+ # Check all processes
216
+ ps aux | sort -nrk 3,3 | head -20
217
+
218
+ # Check for suspicious processes
219
+ ps aux | grep -v -E "^(root|www-data|mysql|postgres)"
220
+
221
+ # Check network connections
222
+ netstat -tunap | grep ESTABLISHED
223
+ ```
224
+
225
+ **Red flags**:
226
+ - Unknown process using 100% CPU
227
+ - Connections to crypto mining pools
228
+ - Processes running as unexpected user
229
+ - Processes with random names (xmrig, minerd)
230
+
231
+ ---
232
+
233
+ #### Immediate Response
234
+ ```bash
235
+ # 1. Kill malicious process
236
+ kill -9 <PID>
237
+
238
+ # 2. Find and remove malware
239
+ find / -name "<PROCESS_NAME>" -delete
240
+
241
+ # 3. Check for persistence mechanisms
242
+ crontab -l # Cron jobs
243
+ cat /etc/rc.local # Startup scripts
244
+ systemctl list-unit-files # Systemd services
245
+
246
+ # 4. Change all credentials
247
+ # Root password
248
+ # SSH keys
249
+ # Database passwords
250
+ # API keys
251
+
252
+ # 5. Restore from clean backup (if available)
253
+ ```
254
+
255
+ ---
256
+
257
+ ### 5. Insider Threat / Data Exfiltration
258
+
259
+ **Symptoms**:
260
+ - Large data downloads
261
+ - Database dump exports
262
+ - Unusual file transfers
263
+ - After-hours access
264
+
265
+ **Diagnosis**:
266
+
267
+ #### Check Data Access Logs
268
+ ```bash
269
+ # Check database queries (large exports)
270
+ grep "SELECT.*FROM" /var/log/postgresql/postgresql.log | grep -E "LIMIT\s+[0-9]{5,}"
271
+
272
+ # Check file downloads (nginx)
273
+ awk '$10 > 10000000 {print $1, $7, $10}' /var/log/nginx/access.log
274
+
275
+ # Check SSH file transfers
276
+ grep "sftp\|scp" /var/log/auth.log
277
+ ```
278
+
279
+ **Red flags**:
280
+ - SELECT with no LIMIT (full table export)
281
+ - Large file downloads (>10MB)
282
+ - Multiple consecutive downloads
283
+ - Access from unusual location
284
+
285
+ ---
286
+
287
+ #### Immediate Response
288
+ ```bash
289
+ # 1. Disable account
290
+ UPDATE users SET disabled = true WHERE id = <USER_ID>;
291
+
292
+ # 2. Preserve evidence
293
+ cp /var/log/* /forensics/
294
+
295
+ # 3. Assess damage
296
+ # What data was accessed?
297
+ # What data was exported?
298
+ # What systems were compromised?
299
+
300
+ # 4. Legal/compliance notification
301
+ # GDPR: Notify within 72 hours
302
+ # HIPAA: Notify within 60 days
303
+ # PCI-DSS: Immediate notification
304
+
305
+ # 5. Incident report
306
+ ```
307
+
308
+ ---
309
+
310
+ ## Security Incident Checklist
311
+
312
+ **When security incident detected**:
313
+
314
+ ### Phase 1: Immediate Response (0-5 min)
315
+ - [ ] Classify severity (SEV1/SEV2/SEV3)
316
+ - [ ] Isolate affected systems
317
+ - [ ] Preserve evidence (logs, snapshots)
318
+ - [ ] Notify security team
319
+ - [ ] Document timeline (start timestamp)
320
+
321
+ ### Phase 2: Assessment (5-30 min)
322
+ - [ ] Identify attack vector
323
+ - [ ] Assess scope (what was compromised?)
324
+ - [ ] Check for data exfiltration
325
+ - [ ] Identify attacker (IP, location, identity)
326
+ - [ ] Determine if ongoing or stopped
327
+
328
+ ### Phase 3: Containment (30 min - 2 hours)
329
+ - [ ] Block attacker access
330
+ - [ ] Close vulnerability
331
+ - [ ] Revoke compromised credentials
332
+ - [ ] Remove malware/backdoors
333
+ - [ ] Restore from clean backup (if needed)
334
+
335
+ ### Phase 4: Recovery (2 hours - days)
336
+ - [ ] Restore normal operations
337
+ - [ ] Verify no persistence mechanisms
338
+ - [ ] Monitor for re-infection
339
+ - [ ] Change all credentials
340
+ - [ ] Apply security patches
341
+
342
+ ### Phase 5: Post-Incident (1 week)
343
+ - [ ] Complete post-mortem
344
+ - [ ] Legal/compliance notifications
345
+ - [ ] Security audit
346
+ - [ ] Update security policies
347
+ - [ ] Train team on lessons learned
348
+
349
+ ---
350
+
351
+ ## Collaboration with Security Agent
352
+
353
+ **SRE Agent Role**:
354
+ - Initial detection and triage
355
+ - Immediate containment
356
+ - Preserve evidence
357
+ - Restore service
358
+
359
+ **Security Agent Role** (handoff):
360
+ - Forensic analysis
361
+ - Legal compliance
362
+ - Security audit
363
+ - Policy updates
364
+
365
+ **Handoff Protocol**:
366
+ ```
367
+ SRE: Detects security incident → Immediate containment
368
+ SRE: Preserves evidence → Creates incident report
369
+ SRE: Hands off to Security Agent
370
+ Security Agent: Forensic analysis → Legal compliance → Long-term fixes
371
+ SRE: Implements security fixes → Updates runbook
372
+ ```
373
+
374
+ ---
375
+
376
+ ## Security Metrics
377
+
378
+ **Detection Time**:
379
+ - SEV1: <5 minutes from first indicator
380
+ - SEV2: <30 minutes
381
+ - SEV3: <24 hours
382
+
383
+ **Response Time**:
384
+ - SEV1: Containment within 30 minutes
385
+ - SEV2: Containment within 2 hours
386
+ - SEV3: Containment within 24 hours
387
+
388
+ **False Positives**:
389
+ - Target: <5% of security alerts
390
+
391
+ ---
392
+
393
+ ## Related Documentation
394
+
395
+ - [SKILL.md](../SKILL.md) - Main SRE agent
396
+ - [infrastructure.md](infrastructure.md) - Server security hardening
397
+ - [monitoring.md](monitoring.md) - Security monitoring setup
398
+ - `security-agent` skill - Full security expertise (handoff for forensics)
399
+
400
+ ---
401
+
402
+ ## Important Notes
403
+
404
+ **For SRE Agent**:
405
+ - Focus on IMMEDIATE containment and service restoration
406
+ - Preserve evidence (don't delete logs!)
407
+ - Hand off to `security-agent` for forensic analysis
408
+ - Document everything with timestamps
409
+ - Blameless post-mortem (focus on systems, not people)
410
+
411
+ **Legal Compliance**:
412
+ - GDPR: Notify within 72 hours of breach
413
+ - HIPAA: Notify within 60 days
414
+ - PCI-DSS: Immediate notification to card brands
415
+ - SOC 2: Document in audit trail
416
+
417
+ **Evidence Preservation**:
418
+ - Copy logs before any changes
419
+ - Take disk/memory snapshots
420
+ - Document all actions taken
421
+ - Preserve chain of custody
@@ -0,0 +1,302 @@
1
+ # UI/Frontend Diagnostics
2
+
3
+ **Purpose**: Troubleshoot frontend performance, rendering, and user experience issues.
4
+
5
+ ## Common UI Issues
6
+
7
+ ### 1. Slow Page Load
8
+
9
+ **Symptoms**:
10
+ - Users report long loading times
11
+ - Lighthouse score <50
12
+ - Time to Interactive (TTI) >5 seconds
13
+
14
+ **Diagnosis**:
15
+
16
+ #### Check Bundle Size
17
+ ```bash
18
+ # Check JavaScript bundle size
19
+ ls -lh dist/*.js
20
+
21
+ # Analyze bundle composition
22
+ npx webpack-bundle-analyzer dist/stats.json
23
+
24
+ # Check for large dependencies
25
+ npm ls --depth=0
26
+ ```
27
+
28
+ **Red flags**:
29
+ - Main bundle >500KB
30
+ - Unused dependencies in bundle
31
+ - Multiple copies of same library
32
+
33
+ **Mitigation**:
34
+ - Code splitting: `import()` for dynamic imports
35
+ - Tree shaking: Remove unused code
36
+ - Lazy loading: Load components on demand
37
+
38
+ ---
39
+
40
+ #### Check Network Requests
41
+ ```bash
42
+ # Chrome DevTools → Network tab
43
+ # Look for:
44
+ # - Number of requests (>100 = too many)
45
+ # - Large assets (images >200KB)
46
+ # - Slow API calls (>1s)
47
+ ```
48
+
49
+ **Red flags**:
50
+ - Waterfall pattern (sequential loading)
51
+ - Large uncompressed images
52
+ - Blocking requests
53
+
54
+ **Mitigation**:
55
+ - Image optimization: WebP, lazy loading
56
+ - HTTP/2: Multiplexing
57
+ - CDN: Cache static assets
58
+
59
+ ---
60
+
61
+ #### Check Render Performance
62
+ ```bash
63
+ # Chrome DevTools → Performance tab
64
+ # Record page load, check:
65
+ # - Long tasks (>50ms)
66
+ # - Layout thrashing
67
+ # - JavaScript execution time
68
+ ```
69
+
70
+ **Red flags**:
71
+ - Long tasks blocking main thread
72
+ - Multiple layout recalculations
73
+ - Heavy JavaScript computation
74
+
75
+ **Mitigation**:
76
+ - Web Workers: Move heavy computation off main thread
77
+ - requestIdleCallback: Defer non-critical work
78
+ - Virtual scrolling: Render only visible items
79
+
80
+ ---
81
+
82
+ ### 2. Memory Leak (UI)
83
+
84
+ **Symptoms**:
85
+ - Browser tab becomes slow over time
86
+ - Memory usage increases continuously
87
+ - Browser eventually crashes
88
+
89
+ **Diagnosis**:
90
+
91
+ #### Chrome DevTools → Memory
92
+ ```bash
93
+ # Take heap snapshot before/after user interaction
94
+ # Compare snapshots
95
+ # Look for:
96
+ # - Detached DOM nodes
97
+ # - Event listeners not removed
98
+ # - Growing arrays/objects
99
+ ```
100
+
101
+ **Red flags**:
102
+ - Detached DOM elements increasing
103
+ - Event listeners not garbage collected
104
+ - Timers/intervals not cleared
105
+
106
+ **Mitigation**:
107
+ ```javascript
108
+ // Clean up event listeners
109
+ componentWillUnmount() {
110
+ element.removeEventListener('click', handler);
111
+ clearInterval(this.intervalId);
112
+ clearTimeout(this.timeoutId);
113
+ }
114
+
115
+ // Use WeakMap for DOM references
116
+ const cache = new WeakMap();
117
+ ```
118
+
119
+ ---
120
+
121
+ ### 3. Unresponsive UI
122
+
123
+ **Symptoms**:
124
+ - Clicks don't register
125
+ - Input lag
126
+ - Frozen UI
127
+
128
+ **Diagnosis**:
129
+
130
+ #### Check Main Thread
131
+ ```bash
132
+ # Chrome DevTools → Performance
133
+ # Look for:
134
+ # - Long tasks (>50ms)
135
+ # - Blocking JavaScript
136
+ # - Forced synchronous layout
137
+ ```
138
+
139
+ **Red flags**:
140
+ - JavaScript blocking >100ms
141
+ - Synchronous XHR requests
142
+ - Layout thrashing (read → write → read)
143
+
144
+ **Mitigation**:
145
+ ```javascript
146
+ // Break up long tasks
147
+ async function processLargeArray(items) {
148
+ for (let i = 0; i < items.length; i++) {
149
+ await processItem(items[i]);
150
+
151
+ // Yield to main thread every 100 items
152
+ if (i % 100 === 0) {
153
+ await new Promise(resolve => setTimeout(resolve, 0));
154
+ }
155
+ }
156
+ }
157
+
158
+ // Use requestIdleCallback
159
+ requestIdleCallback(() => {
160
+ // Non-critical work
161
+ });
162
+ ```
163
+
164
+ ---
165
+
166
+ ### 4. White Screen / Failed Render
167
+
168
+ **Symptoms**:
169
+ - Blank page
170
+ - Error boundary triggered
171
+ - Console errors
172
+
173
+ **Diagnosis**:
174
+
175
+ #### Check Console Errors
176
+ ```bash
177
+ # Chrome DevTools → Console
178
+ # Look for:
179
+ # - Uncaught exceptions
180
+ # - Network errors (failed chunks)
181
+ # - CORS errors
182
+ ```
183
+
184
+ **Common causes**:
185
+ - JavaScript error in render
186
+ - Failed to load chunk (code splitting)
187
+ - CORS blocking API calls
188
+ - Missing dependencies
189
+
190
+ **Mitigation**:
191
+ ```javascript
192
+ // Error boundary
193
+ class ErrorBoundary extends React.Component {
194
+ componentDidCatch(error, errorInfo) {
195
+ logErrorToService(error, errorInfo);
196
+ }
197
+
198
+ render() {
199
+ if (this.state.hasError) {
200
+ return <ErrorFallback />;
201
+ }
202
+ return this.props.children;
203
+ }
204
+ }
205
+
206
+ // Retry failed chunk loads
207
+ const retryImport = (fn, retriesLeft = 3) => {
208
+ return new Promise((resolve, reject) => {
209
+ fn()
210
+ .then(resolve)
211
+ .catch(error => {
212
+ if (retriesLeft === 0) {
213
+ reject(error);
214
+ } else {
215
+ setTimeout(() => {
216
+ retryImport(fn, retriesLeft - 1).then(resolve, reject);
217
+ }, 1000);
218
+ }
219
+ });
220
+ });
221
+ };
222
+ ```
223
+
224
+ ---
225
+
226
+ ## UI Performance Metrics
227
+
228
+ **Core Web Vitals**:
229
+ - **LCP** (Largest Contentful Paint): <2.5s (good), <4s (needs improvement), >4s (poor)
230
+ - **FID** (First Input Delay): <100ms (good), <300ms (needs improvement), >300ms (poor)
231
+ - **CLS** (Cumulative Layout Shift): <0.1 (good), <0.25 (needs improvement), >0.25 (poor)
232
+
233
+ **Other Metrics**:
234
+ - **TTFB** (Time to First Byte): <200ms
235
+ - **FCP** (First Contentful Paint): <1.8s
236
+ - **TTI** (Time to Interactive): <3.8s
237
+
238
+ **Measurement**:
239
+ ```javascript
240
+ // Web Vitals library
241
+ import {getLCP, getFID, getCLS} from 'web-vitals';
242
+
243
+ getLCP(console.log);
244
+ getFID(console.log);
245
+ getCLS(console.log);
246
+ ```
247
+
248
+ ---
249
+
250
+ ## Common UI Anti-Patterns
251
+
252
+ ### 1. Render Everything Upfront
253
+ **Problem**: Rendering 10,000 items at once
254
+ **Solution**: Virtual scrolling, pagination, infinite scroll
255
+
256
+ ### 2. No Code Splitting
257
+ **Problem**: 5MB JavaScript bundle loaded upfront
258
+ **Solution**: Route-based code splitting, lazy loading
259
+
260
+ ### 3. Large Images
261
+ **Problem**: 5MB PNG images
262
+ **Solution**: WebP, compression, lazy loading, responsive images
263
+
264
+ ### 4. Blocking JavaScript
265
+ **Problem**: Heavy computation on main thread
266
+ **Solution**: Web Workers, requestIdleCallback, async/await
267
+
268
+ ### 5. Memory Leaks
269
+ **Problem**: Event listeners not removed, timers not cleared
270
+ **Solution**: Cleanup in componentWillUnmount, WeakMap
271
+
272
+ ---
273
+
274
+ ## UI Diagnostic Checklist
275
+
276
+ **When diagnosing slow UI**:
277
+
278
+ - [ ] Check bundle size (target: <500KB gzipped)
279
+ - [ ] Check number of network requests (target: <50)
280
+ - [ ] Check Core Web Vitals (LCP <2.5s, FID <100ms, CLS <0.1)
281
+ - [ ] Check for JavaScript errors in console
282
+ - [ ] Check render performance (no long tasks >50ms)
283
+ - [ ] Check memory usage (no continuous growth)
284
+ - [ ] Check for CORS errors
285
+ - [ ] Check for failed chunk loads
286
+ - [ ] Check image sizes (target: <200KB per image)
287
+ - [ ] Check for blocking resources
288
+
289
+ **Tools**:
290
+ - Chrome DevTools (Network, Performance, Memory, Console)
291
+ - Lighthouse
292
+ - Web Vitals library
293
+ - webpack-bundle-analyzer
294
+ - React DevTools Profiler
295
+
296
+ ---
297
+
298
+ ## Related Documentation
299
+
300
+ - [SKILL.md](../SKILL.md) - Main SRE agent
301
+ - [backend-diagnostics.md](backend-diagnostics.md) - Backend troubleshooting
302
+ - [monitoring.md](monitoring.md) - Observability tools