@ggailabs/cli-context 0.5.6 → 1.0.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.

Potentially problematic release.


This version of @ggailabs/cli-context might be problematic. Click here for more details.

Files changed (282) hide show
  1. package/README.md +25 -181
  2. package/dist/.context/docs/GENESIS_SYSTEM_PROMPT.md +62 -0
  3. package/dist/.context/eng/agents/architect.md +15 -0
  4. package/dist/.context/eng/agents/backend_typescript.md +1000 -0
  5. package/dist/.context/eng/agents/bug_hunter.md +49 -0
  6. package/dist/.context/eng/agents/code_reviewer.md +313 -0
  7. package/dist/.context/eng/agents/devops_specialist.md +718 -0
  8. package/dist/.context/eng/agents/frontend_specialist.md +1027 -0
  9. package/dist/.context/eng/agents/qa_specialist.md +1234 -0
  10. package/dist/.context/eng/agents/security_reviewer.md +382 -0
  11. package/dist/.context/eng/agents/ui_specialist.md +16 -0
  12. package/dist/.context/eng/docs/AGENT_HANDOFF_PROMPT.md +44 -0
  13. package/dist/.context/eng/docs/GENESIS_DESIGN_SYSTEM.md +15 -0
  14. package/dist/.context/eng/docs/GG_METHODOLOGY.md +48 -0
  15. package/dist/.context/eng/docs/OPERATIONS_LOG.md +30 -0
  16. package/dist/.context/eng/docs/PROJECT_MAP.md +35 -0
  17. package/dist/.context/eng/docs/standards/devops.md +0 -0
  18. package/dist/.context/eng/docs/standards/frontend.md +0 -0
  19. package/dist/.context/eng/docs/standards/typescript.md +12 -0
  20. package/dist/.context/eng/skills/agent_logging.md +18 -0
  21. package/dist/.context/eng/skills/brainstorming.md +227 -0
  22. package/dist/.context/eng/skills/exploring_codebase.md +1217 -0
  23. package/dist/.context/eng/skills/patterns/compliance_check.md +246 -0
  24. package/dist/.context/eng/skills/patterns/coverage_table.md +401 -0
  25. package/dist/.context/eng/skills/patterns/exit_criteria.md +31 -0
  26. package/dist/.context/eng/skills/patterns/failure_recovery.md +74 -0
  27. package/dist/.context/eng/skills/patterns/quality_gate.md +295 -0
  28. package/dist/.context/eng/skills/patterns/standards_workflow.md +391 -0
  29. package/dist/.context/eng/skills/patterns/state_tracking.md +30 -0
  30. package/dist/.context/eng/skills/patterns/task_tracking.md +38 -0
  31. package/dist/.context/eng/skills/previce.md +45 -0
  32. package/dist/.context/eng/skills/tdd.md +421 -0
  33. package/dist/.context/eng/skills/writing_plans.md +105 -0
  34. package/dist/.context/plans/.gitkeep +0 -0
  35. package/dist/.context/pt-br/agents/architect.md +69 -0
  36. package/dist/.context/pt-br/agents/backend_typescript.md +1000 -0
  37. package/dist/.context/pt-br/agents/bug_hunter.md +49 -0
  38. package/dist/.context/pt-br/agents/code_reviewer.md +313 -0
  39. package/dist/.context/pt-br/agents/devops_specialist.md +718 -0
  40. package/dist/.context/pt-br/agents/frontend_specialist.md +1027 -0
  41. package/dist/.context/pt-br/agents/qa_specialist.md +1234 -0
  42. package/dist/.context/pt-br/agents/security_reviewer.md +382 -0
  43. package/dist/.context/pt-br/agents/ui_specialist.md +55 -0
  44. package/dist/.context/pt-br/docs/AGENT_HANDOFF_PROMPT.md +44 -0
  45. package/dist/.context/pt-br/docs/GENESIS_DESIGN_SYSTEM.md +88 -0
  46. package/dist/.context/pt-br/docs/GG_METHODOLOGY.md +48 -0
  47. package/dist/.context/pt-br/docs/OPERATIONS_LOG.md +30 -0
  48. package/dist/.context/pt-br/docs/PROJECT_MAP.md +37 -0
  49. package/dist/.context/pt-br/docs/standards/devops.md +707 -0
  50. package/dist/.context/pt-br/docs/standards/frontend.md +748 -0
  51. package/dist/.context/pt-br/docs/standards/typescript.md +1150 -0
  52. package/dist/.context/pt-br/skills/agent_logging.md +36 -0
  53. package/dist/.context/pt-br/skills/brainstorming.md +227 -0
  54. package/dist/.context/pt-br/skills/exploring_codebase.md +1217 -0
  55. package/dist/.context/pt-br/skills/patterns/compliance_check.md +246 -0
  56. package/dist/.context/pt-br/skills/patterns/coverage_table.md +401 -0
  57. package/dist/.context/pt-br/skills/patterns/exit_criteria.md +31 -0
  58. package/dist/.context/pt-br/skills/patterns/failure_recovery.md +74 -0
  59. package/dist/.context/pt-br/skills/patterns/quality_gate.md +295 -0
  60. package/dist/.context/pt-br/skills/patterns/standards_workflow.md +391 -0
  61. package/dist/.context/pt-br/skills/patterns/state_tracking.md +30 -0
  62. package/dist/.context/pt-br/skills/patterns/task_tracking.md +38 -0
  63. package/dist/.context/pt-br/skills/previce.md +45 -0
  64. package/dist/.context/pt-br/skills/tdd.md +421 -0
  65. package/dist/.context/pt-br/skills/writing_plans.md +105 -0
  66. package/dist/.context/workflow/.gitkeep +0 -0
  67. package/dist/commands/init.js +140 -0
  68. package/dist/commands/monitor.js +34 -0
  69. package/dist/index.js +20 -568
  70. package/dist/services/monitor-service.js +340 -0
  71. package/dist/services/scaffolder.js +164 -0
  72. package/package.json +16 -58
  73. package/LICENSE +0 -21
  74. package/dist/generators/agents/agentConfig.d.ts +0 -4
  75. package/dist/generators/agents/agentConfig.d.ts.map +0 -1
  76. package/dist/generators/agents/agentConfig.js +0 -180
  77. package/dist/generators/agents/agentConfig.js.map +0 -1
  78. package/dist/generators/agents/agentGenerator.d.ts +0 -9
  79. package/dist/generators/agents/agentGenerator.d.ts.map +0 -1
  80. package/dist/generators/agents/agentGenerator.js +0 -97
  81. package/dist/generators/agents/agentGenerator.js.map +0 -1
  82. package/dist/generators/agents/agentTypes.d.ts +0 -4
  83. package/dist/generators/agents/agentTypes.d.ts.map +0 -1
  84. package/dist/generators/agents/agentTypes.js +0 -25
  85. package/dist/generators/agents/agentTypes.js.map +0 -1
  86. package/dist/generators/agents/index.d.ts +0 -4
  87. package/dist/generators/agents/index.d.ts.map +0 -1
  88. package/dist/generators/agents/index.js +0 -12
  89. package/dist/generators/agents/index.js.map +0 -1
  90. package/dist/generators/agents/templates/index.d.ts +0 -4
  91. package/dist/generators/agents/templates/index.d.ts.map +0 -1
  92. package/dist/generators/agents/templates/index.js +0 -8
  93. package/dist/generators/agents/templates/index.js.map +0 -1
  94. package/dist/generators/agents/templates/indexTemplate.d.ts +0 -3
  95. package/dist/generators/agents/templates/indexTemplate.d.ts.map +0 -1
  96. package/dist/generators/agents/templates/indexTemplate.js +0 -36
  97. package/dist/generators/agents/templates/indexTemplate.js.map +0 -1
  98. package/dist/generators/agents/templates/playbookTemplate.d.ts +0 -4
  99. package/dist/generators/agents/templates/playbookTemplate.d.ts.map +0 -1
  100. package/dist/generators/agents/templates/playbookTemplate.js +0 -99
  101. package/dist/generators/agents/templates/playbookTemplate.js.map +0 -1
  102. package/dist/generators/agents/templates/types.d.ts +0 -14
  103. package/dist/generators/agents/templates/types.d.ts.map +0 -1
  104. package/dist/generators/agents/templates/types.js +0 -3
  105. package/dist/generators/agents/templates/types.js.map +0 -1
  106. package/dist/generators/documentation/documentationGenerator.d.ts +0 -15
  107. package/dist/generators/documentation/documentationGenerator.d.ts.map +0 -1
  108. package/dist/generators/documentation/documentationGenerator.js +0 -188
  109. package/dist/generators/documentation/documentationGenerator.js.map +0 -1
  110. package/dist/generators/documentation/guideRegistry.d.ts +0 -6
  111. package/dist/generators/documentation/guideRegistry.d.ts.map +0 -1
  112. package/dist/generators/documentation/guideRegistry.js +0 -82
  113. package/dist/generators/documentation/guideRegistry.js.map +0 -1
  114. package/dist/generators/documentation/index.d.ts +0 -2
  115. package/dist/generators/documentation/index.d.ts.map +0 -1
  116. package/dist/generators/documentation/index.js +0 -6
  117. package/dist/generators/documentation/index.js.map +0 -1
  118. package/dist/generators/documentation/templates/apiReferenceTemplate.d.ts +0 -2
  119. package/dist/generators/documentation/templates/apiReferenceTemplate.d.ts.map +0 -1
  120. package/dist/generators/documentation/templates/apiReferenceTemplate.js +0 -490
  121. package/dist/generators/documentation/templates/apiReferenceTemplate.js.map +0 -1
  122. package/dist/generators/documentation/templates/architectureTemplate.d.ts +0 -3
  123. package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +0 -1
  124. package/dist/generators/documentation/templates/architectureTemplate.js +0 -66
  125. package/dist/generators/documentation/templates/architectureTemplate.js.map +0 -1
  126. package/dist/generators/documentation/templates/common.d.ts +0 -7
  127. package/dist/generators/documentation/templates/common.d.ts.map +0 -1
  128. package/dist/generators/documentation/templates/common.js +0 -58
  129. package/dist/generators/documentation/templates/common.js.map +0 -1
  130. package/dist/generators/documentation/templates/dataFlowTemplate.d.ts +0 -3
  131. package/dist/generators/documentation/templates/dataFlowTemplate.d.ts.map +0 -1
  132. package/dist/generators/documentation/templates/dataFlowTemplate.js +0 -40
  133. package/dist/generators/documentation/templates/dataFlowTemplate.js.map +0 -1
  134. package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts +0 -2
  135. package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts.map +0 -1
  136. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js +0 -44
  137. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js.map +0 -1
  138. package/dist/generators/documentation/templates/glossaryTemplate.d.ts +0 -3
  139. package/dist/generators/documentation/templates/glossaryTemplate.d.ts.map +0 -1
  140. package/dist/generators/documentation/templates/glossaryTemplate.js +0 -41
  141. package/dist/generators/documentation/templates/glossaryTemplate.js.map +0 -1
  142. package/dist/generators/documentation/templates/index.d.ts +0 -15
  143. package/dist/generators/documentation/templates/index.d.ts.map +0 -1
  144. package/dist/generators/documentation/templates/index.js +0 -30
  145. package/dist/generators/documentation/templates/index.js.map +0 -1
  146. package/dist/generators/documentation/templates/indexTemplate.d.ts +0 -3
  147. package/dist/generators/documentation/templates/indexTemplate.d.ts.map +0 -1
  148. package/dist/generators/documentation/templates/indexTemplate.js +0 -42
  149. package/dist/generators/documentation/templates/indexTemplate.js.map +0 -1
  150. package/dist/generators/documentation/templates/migrationTemplate.d.ts +0 -2
  151. package/dist/generators/documentation/templates/migrationTemplate.d.ts.map +0 -1
  152. package/dist/generators/documentation/templates/migrationTemplate.js +0 -422
  153. package/dist/generators/documentation/templates/migrationTemplate.js.map +0 -1
  154. package/dist/generators/documentation/templates/onboardingTemplate.d.ts +0 -2
  155. package/dist/generators/documentation/templates/onboardingTemplate.d.ts.map +0 -1
  156. package/dist/generators/documentation/templates/onboardingTemplate.js +0 -431
  157. package/dist/generators/documentation/templates/onboardingTemplate.js.map +0 -1
  158. package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts +0 -3
  159. package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts.map +0 -1
  160. package/dist/generators/documentation/templates/projectOverviewTemplate.js +0 -65
  161. package/dist/generators/documentation/templates/projectOverviewTemplate.js.map +0 -1
  162. package/dist/generators/documentation/templates/securityTemplate.d.ts +0 -2
  163. package/dist/generators/documentation/templates/securityTemplate.d.ts.map +0 -1
  164. package/dist/generators/documentation/templates/securityTemplate.js +0 -39
  165. package/dist/generators/documentation/templates/securityTemplate.js.map +0 -1
  166. package/dist/generators/documentation/templates/testingTemplate.d.ts +0 -2
  167. package/dist/generators/documentation/templates/testingTemplate.d.ts.map +0 -1
  168. package/dist/generators/documentation/templates/testingTemplate.js +0 -45
  169. package/dist/generators/documentation/templates/testingTemplate.js.map +0 -1
  170. package/dist/generators/documentation/templates/toolingTemplate.d.ts +0 -2
  171. package/dist/generators/documentation/templates/toolingTemplate.d.ts.map +0 -1
  172. package/dist/generators/documentation/templates/toolingTemplate.js +0 -42
  173. package/dist/generators/documentation/templates/toolingTemplate.js.map +0 -1
  174. package/dist/generators/documentation/templates/troubleshootingTemplate.d.ts +0 -2
  175. package/dist/generators/documentation/templates/troubleshootingTemplate.d.ts.map +0 -1
  176. package/dist/generators/documentation/templates/troubleshootingTemplate.js +0 -292
  177. package/dist/generators/documentation/templates/troubleshootingTemplate.js.map +0 -1
  178. package/dist/generators/documentation/templates/types.d.ts +0 -23
  179. package/dist/generators/documentation/templates/types.d.ts.map +0 -1
  180. package/dist/generators/documentation/templates/types.js +0 -3
  181. package/dist/generators/documentation/templates/types.js.map +0 -1
  182. package/dist/generators/plans/index.d.ts +0 -2
  183. package/dist/generators/plans/index.d.ts.map +0 -1
  184. package/dist/generators/plans/index.js +0 -6
  185. package/dist/generators/plans/index.js.map +0 -1
  186. package/dist/generators/plans/planGenerator.d.ts +0 -22
  187. package/dist/generators/plans/planGenerator.d.ts.map +0 -1
  188. package/dist/generators/plans/planGenerator.js +0 -109
  189. package/dist/generators/plans/planGenerator.js.map +0 -1
  190. package/dist/generators/plans/templates/indexTemplate.d.ts +0 -3
  191. package/dist/generators/plans/templates/indexTemplate.d.ts.map +0 -1
  192. package/dist/generators/plans/templates/indexTemplate.js +0 -37
  193. package/dist/generators/plans/templates/indexTemplate.js.map +0 -1
  194. package/dist/generators/plans/templates/planTemplate.d.ts +0 -3
  195. package/dist/generators/plans/templates/planTemplate.d.ts.map +0 -1
  196. package/dist/generators/plans/templates/planTemplate.js +0 -166
  197. package/dist/generators/plans/templates/planTemplate.js.map +0 -1
  198. package/dist/generators/plans/templates/types.d.ts +0 -19
  199. package/dist/generators/plans/templates/types.d.ts.map +0 -1
  200. package/dist/generators/plans/templates/types.js +0 -3
  201. package/dist/generators/plans/templates/types.js.map +0 -1
  202. package/dist/generators/shared/contextGenerator.d.ts +0 -7
  203. package/dist/generators/shared/contextGenerator.d.ts.map +0 -1
  204. package/dist/generators/shared/contextGenerator.js +0 -13
  205. package/dist/generators/shared/contextGenerator.js.map +0 -1
  206. package/dist/generators/shared/directoryTemplateHelpers.d.ts +0 -2
  207. package/dist/generators/shared/directoryTemplateHelpers.d.ts.map +0 -1
  208. package/dist/generators/shared/directoryTemplateHelpers.js +0 -12
  209. package/dist/generators/shared/directoryTemplateHelpers.js.map +0 -1
  210. package/dist/generators/shared/generatorUtils.d.ts +0 -16
  211. package/dist/generators/shared/generatorUtils.d.ts.map +0 -1
  212. package/dist/generators/shared/generatorUtils.js +0 -119
  213. package/dist/generators/shared/generatorUtils.js.map +0 -1
  214. package/dist/generators/shared/index.d.ts +0 -4
  215. package/dist/generators/shared/index.d.ts.map +0 -1
  216. package/dist/generators/shared/index.js +0 -10
  217. package/dist/generators/shared/index.js.map +0 -1
  218. package/dist/index.d.ts +0 -9
  219. package/dist/index.d.ts.map +0 -1
  220. package/dist/index.js.map +0 -1
  221. package/dist/prompts/defaults.d.ts +0 -3
  222. package/dist/prompts/defaults.d.ts.map +0 -1
  223. package/dist/prompts/defaults.js +0 -95
  224. package/dist/prompts/defaults.js.map +0 -1
  225. package/dist/services/baseLLMClient.d.ts +0 -12
  226. package/dist/services/baseLLMClient.d.ts.map +0 -1
  227. package/dist/services/baseLLMClient.js +0 -80
  228. package/dist/services/baseLLMClient.js.map +0 -1
  229. package/dist/services/fill/fillService.d.ts +0 -46
  230. package/dist/services/fill/fillService.d.ts.map +0 -1
  231. package/dist/services/fill/fillService.js +0 -254
  232. package/dist/services/fill/fillService.js.map +0 -1
  233. package/dist/services/init/initService.d.ts +0 -37
  234. package/dist/services/init/initService.d.ts.map +0 -1
  235. package/dist/services/init/initService.js +0 -167
  236. package/dist/services/init/initService.js.map +0 -1
  237. package/dist/services/llmClientFactory.d.ts +0 -8
  238. package/dist/services/llmClientFactory.d.ts.map +0 -1
  239. package/dist/services/llmClientFactory.js +0 -23
  240. package/dist/services/llmClientFactory.js.map +0 -1
  241. package/dist/services/openRouterClient.d.ts +0 -9
  242. package/dist/services/openRouterClient.d.ts.map +0 -1
  243. package/dist/services/openRouterClient.js +0 -49
  244. package/dist/services/openRouterClient.js.map +0 -1
  245. package/dist/services/plan/planService.d.ts +0 -57
  246. package/dist/services/plan/planService.d.ts.map +0 -1
  247. package/dist/services/plan/planService.js +0 -334
  248. package/dist/services/plan/planService.js.map +0 -1
  249. package/dist/services/shared/llmConfig.d.ts +0 -22
  250. package/dist/services/shared/llmConfig.d.ts.map +0 -1
  251. package/dist/services/shared/llmConfig.js +0 -38
  252. package/dist/services/shared/llmConfig.js.map +0 -1
  253. package/dist/types.d.ts +0 -65
  254. package/dist/types.d.ts.map +0 -1
  255. package/dist/types.js +0 -3
  256. package/dist/types.js.map +0 -1
  257. package/dist/utils/cliUI.d.ts +0 -27
  258. package/dist/utils/cliUI.d.ts.map +0 -1
  259. package/dist/utils/cliUI.js +0 -252
  260. package/dist/utils/cliUI.js.map +0 -1
  261. package/dist/utils/fileMapper.d.ts +0 -11
  262. package/dist/utils/fileMapper.d.ts.map +0 -1
  263. package/dist/utils/fileMapper.js +0 -146
  264. package/dist/utils/fileMapper.js.map +0 -1
  265. package/dist/utils/gitService.d.ts +0 -50
  266. package/dist/utils/gitService.d.ts.map +0 -1
  267. package/dist/utils/gitService.js +0 -470
  268. package/dist/utils/gitService.js.map +0 -1
  269. package/dist/utils/i18n.d.ts +0 -171
  270. package/dist/utils/i18n.d.ts.map +0 -1
  271. package/dist/utils/i18n.js +0 -381
  272. package/dist/utils/i18n.js.map +0 -1
  273. package/dist/utils/promptLoader.d.ts +0 -12
  274. package/dist/utils/promptLoader.d.ts.map +0 -1
  275. package/dist/utils/promptLoader.js +0 -81
  276. package/dist/utils/promptLoader.js.map +0 -1
  277. package/dist/utils/versionChecker.d.ts +0 -15
  278. package/dist/utils/versionChecker.d.ts.map +0 -1
  279. package/dist/utils/versionChecker.js +0 -49
  280. package/dist/utils/versionChecker.js.map +0 -1
  281. package/prompts/update_plan_prompt.md +0 -41
  282. package/prompts/update_scaffold_prompt.md +0 -47
@@ -0,0 +1,707 @@
1
+ # DevOps Standards
2
+
3
+ > **⚠️ MAINTENANCE:** This file is indexed in `dev-team/skills/shared-patterns/standards-coverage-table.md`.
4
+ > When adding/removing `## ` sections, follow FOUR-FILE UPDATE RULE in CLAUDE.md: (1) edit standards file, (2) update TOC, (3) update standards-coverage-table.md, (4) update agent file.
5
+
6
+ This file defines the specific standards for DevOps, SRE, and infrastructure.
7
+
8
+ > **Reference**: Always consult `docs/PROJECT_RULES.md` for common project standards.
9
+
10
+ ---
11
+
12
+ ## Table of Contents
13
+
14
+ | # | Section | Description |
15
+ |---|---------|-------------|
16
+ | 1 | [Cloud Provider](#cloud-provider) | AWS, GCP, Azure services |
17
+ | 2 | [Infrastructure as Code](#infrastructure-as-code) | Terraform patterns and best practices |
18
+ | 3 | [Containers](#containers) | Dockerfile, Docker Compose, .env |
19
+ | 4 | [Helm](#helm) | Chart structure and configuration |
20
+ | 5 | [Observability](#observability) | Logging and tracing standards |
21
+ | 6 | [Security](#security) | Secrets management, network policies |
22
+ | 7 | [Makefile Standards](#makefile-standards) | Required commands and patterns |
23
+
24
+ **Meta-sections (not checked by agents):**
25
+ - [Checklist](#checklist) - Self-verification before deploying
26
+
27
+ ---
28
+
29
+ ## Cloud Provider
30
+
31
+ | Provider | Primary Services |
32
+ |----------|-----------------|
33
+ | AWS | EKS, RDS, S3, Lambda, SQS |
34
+ | GCP | GKE, Cloud SQL, Cloud Storage |
35
+ | Azure | AKS, Azure SQL, Blob Storage |
36
+
37
+ ---
38
+
39
+ ## Infrastructure as Code
40
+
41
+ ### Terraform (Preferred)
42
+
43
+ #### Project Structure
44
+
45
+ ```
46
+ /terraform
47
+ /modules
48
+ /vpc
49
+ main.tf
50
+ variables.tf
51
+ outputs.tf
52
+ /eks
53
+ /rds
54
+ /environments
55
+ /dev
56
+ main.tf
57
+ terraform.tfvars
58
+ /staging
59
+ /prod
60
+ backend.tf
61
+ providers.tf
62
+ versions.tf
63
+ ```
64
+
65
+ #### State Management
66
+
67
+ ```hcl
68
+ # backend.tf
69
+ terraform {
70
+ backend "s3" {
71
+ bucket = "company-terraform-state"
72
+ key = "env/prod/terraform.tfstate"
73
+ region = "us-east-1"
74
+ encrypt = true
75
+ dynamodb_table = "terraform-locks"
76
+ }
77
+ }
78
+ ```
79
+
80
+ #### Module Pattern
81
+
82
+ ```hcl
83
+ # modules/eks/main.tf
84
+ module "eks" {
85
+ source = "terraform-aws-modules/eks/aws"
86
+ version = "~> 19.0"
87
+
88
+ cluster_name = var.cluster_name
89
+ cluster_version = var.kubernetes_version
90
+
91
+ vpc_id = var.vpc_id
92
+ subnet_ids = var.subnet_ids
93
+
94
+ eks_managed_node_groups = {
95
+ default = {
96
+ min_size = var.min_nodes
97
+ max_size = var.max_nodes
98
+ desired_size = var.desired_nodes
99
+
100
+ instance_types = var.instance_types
101
+ capacity_type = "ON_DEMAND"
102
+ }
103
+ }
104
+
105
+ tags = var.tags
106
+ }
107
+
108
+ # modules/eks/variables.tf
109
+ variable "cluster_name" {
110
+ type = string
111
+ description = "Name of the EKS cluster"
112
+ }
113
+
114
+ variable "kubernetes_version" {
115
+ type = string
116
+ default = "1.28"
117
+ description = "Kubernetes version"
118
+ }
119
+
120
+ # modules/eks/outputs.tf
121
+ output "cluster_endpoint" {
122
+ value = module.eks.cluster_endpoint
123
+ }
124
+
125
+ output "cluster_name" {
126
+ value = module.eks.cluster_name
127
+ }
128
+ ```
129
+
130
+ #### Best Practices
131
+
132
+ ```hcl
133
+ # Always use version constraints
134
+ terraform {
135
+ required_version = ">= 1.5.0"
136
+
137
+ required_providers {
138
+ aws = {
139
+ source = "hashicorp/aws"
140
+ version = "~> 5.0"
141
+ }
142
+ }
143
+ }
144
+
145
+ # Use data sources for existing resources
146
+ data "aws_caller_identity" "current" {}
147
+ data "aws_region" "current" {}
148
+
149
+ # Use locals for computed values
150
+ locals {
151
+ account_id = data.aws_caller_identity.current.account_id
152
+ region = data.aws_region.current.name
153
+ name_prefix = "${var.project}-${var.environment}"
154
+ }
155
+
156
+ # Always tag resources
157
+ resource "aws_instance" "example" {
158
+ # ...
159
+
160
+ tags = merge(var.common_tags, {
161
+ Name = "${local.name_prefix}-instance"
162
+ Environment = var.environment
163
+ ManagedBy = "terraform"
164
+ })
165
+ }
166
+ ```
167
+
168
+ ---
169
+
170
+ ## Containers
171
+
172
+ ### Dockerfile Best Practices
173
+
174
+ ```dockerfile
175
+ # Multi-stage build for minimal images
176
+ FROM golang:1.22-alpine AS builder
177
+
178
+ WORKDIR /app
179
+
180
+ # Cache dependencies
181
+ COPY go.mod go.sum ./
182
+ RUN go mod download
183
+
184
+ # Build
185
+ COPY . .
186
+ RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /app/server ./cmd/api
187
+
188
+ # Production image
189
+ FROM gcr.io/distroless/static-debian12:nonroot
190
+
191
+ COPY --from=builder /app/server /server
192
+
193
+ USER nonroot:nonroot
194
+
195
+ EXPOSE 8080
196
+
197
+ ENTRYPOINT ["/server"]
198
+ ```
199
+
200
+ ### Image Guidelines
201
+
202
+ | Guideline | Reason |
203
+ |-----------|--------|
204
+ | Use multi-stage builds | Smaller images |
205
+ | Use distroless/alpine | Minimal attack surface |
206
+ | Run as non-root | Security |
207
+ | Pin versions | Reproducibility |
208
+ | Use .dockerignore | Smaller context |
209
+
210
+ ### Docker Compose (Local Dev)
211
+
212
+ **MANDATORY:** Use `.env` file for environment variables instead of inline definitions.
213
+
214
+ ```yaml
215
+ # docker-compose.yml
216
+ services:
217
+ api:
218
+ build:
219
+ context: .
220
+ dockerfile: Dockerfile
221
+ ports:
222
+ - "8080:8080"
223
+ env_file:
224
+ - .env
225
+ depends_on:
226
+ db:
227
+ condition: service_healthy
228
+ redis:
229
+ condition: service_started
230
+
231
+ db:
232
+ image: postgres:15-alpine
233
+ env_file:
234
+ - .env
235
+ volumes:
236
+ - postgres_data:/var/lib/postgresql/data
237
+ healthcheck:
238
+ test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
239
+ interval: 5s
240
+ timeout: 5s
241
+ retries: 5
242
+
243
+ redis:
244
+ image: redis:7-alpine
245
+ volumes:
246
+ - redis_data:/data
247
+
248
+ volumes:
249
+ postgres_data:
250
+ redis_data:
251
+ ```
252
+
253
+ #### .env File Structure
254
+
255
+ ```bash
256
+ # .env (add to .gitignore)
257
+
258
+ # Application
259
+ ENV_NAME=local
260
+ LOG_LEVEL=debug
261
+ SERVER_ADDRESS=:8080
262
+
263
+ # PostgreSQL
264
+ POSTGRES_USER=user
265
+ POSTGRES_PASSWORD=pass
266
+ POSTGRES_DB=app
267
+ DB_HOST=db
268
+ DB_PORT=5432
269
+
270
+ # Redis
271
+ REDIS_HOST=redis
272
+ REDIS_PORT=6379
273
+
274
+ # Telemetry
275
+ ENABLE_TELEMETRY=false
276
+ ```
277
+
278
+ | Guideline | Reason |
279
+ |-----------|--------|
280
+ | Use `env_file` directive | Centralized configuration |
281
+ | Add `.env` to `.gitignore` | Prevent secrets in version control |
282
+ | Provide `.env.example` | Document required variables |
283
+ | Use consistent naming | Match application config struct |
284
+
285
+ ---
286
+
287
+ ## Helm
288
+
289
+ ### Chart Structure
290
+
291
+ ```
292
+ /charts/api
293
+ Chart.yaml
294
+ values.yaml
295
+ values-dev.yaml
296
+ values-prod.yaml
297
+ /templates
298
+ deployment.yaml
299
+ service.yaml
300
+ ingress.yaml
301
+ configmap.yaml
302
+ secret.yaml
303
+ hpa.yaml
304
+ _helpers.tpl
305
+ ```
306
+
307
+ ### Chart.yaml
308
+
309
+ ```yaml
310
+ apiVersion: v2
311
+ name: api
312
+ description: API service Helm chart
313
+ type: application
314
+ version: 1.0.0
315
+ appVersion: "1.0.0"
316
+ dependencies:
317
+ - name: postgresql
318
+ version: "12.x.x"
319
+ repository: "https://charts.bitnami.com/bitnami"
320
+ condition: postgresql.enabled
321
+ ```
322
+
323
+ ### values.yaml
324
+
325
+ ```yaml
326
+ # values.yaml
327
+ replicaCount: 3
328
+
329
+ image:
330
+ repository: company/api
331
+ tag: latest
332
+ pullPolicy: IfNotPresent
333
+
334
+ service:
335
+ type: ClusterIP
336
+ port: 80
337
+
338
+ ingress:
339
+ enabled: true
340
+ className: nginx
341
+ hosts:
342
+ - host: api.example.com
343
+ paths:
344
+ - path: /
345
+ pathType: Prefix
346
+ tls:
347
+ - secretName: api-tls
348
+ hosts:
349
+ - api.example.com
350
+
351
+ resources:
352
+ requests:
353
+ cpu: 100m
354
+ memory: 128Mi
355
+ limits:
356
+ cpu: 500m
357
+ memory: 512Mi
358
+
359
+ autoscaling:
360
+ enabled: true
361
+ minReplicas: 3
362
+ maxReplicas: 10
363
+ targetCPUUtilizationPercentage: 70
364
+
365
+ postgresql:
366
+ enabled: false # Use external database
367
+ ```
368
+
369
+ ---
370
+
371
+ ## Observability
372
+
373
+ ### Logging (Structured JSON)
374
+
375
+ ```json
376
+ {
377
+ "timestamp": "2024-01-15T10:30:00Z",
378
+ "level": "info",
379
+ "message": "Request completed",
380
+ "request_id": "abc-123",
381
+ "user_id": "usr_456",
382
+ "method": "POST",
383
+ "path": "/api/v1/users",
384
+ "status": 201,
385
+ "duration_ms": 45,
386
+ "trace_id": "def-789"
387
+ }
388
+ ```
389
+
390
+ ### Tracing (OpenTelemetry)
391
+
392
+ ```yaml
393
+ # otel-collector-config.yaml
394
+ receivers:
395
+ otlp:
396
+ protocols:
397
+ grpc:
398
+ endpoint: 0.0.0.0:4317
399
+ http:
400
+ endpoint: 0.0.0.0:4318
401
+
402
+ processors:
403
+ batch:
404
+ timeout: 1s
405
+ send_batch_size: 1024
406
+
407
+ exporters:
408
+ jaeger:
409
+ endpoint: jaeger:14250
410
+ tls:
411
+ insecure: true
412
+
413
+ service:
414
+ pipelines:
415
+ traces:
416
+ receivers: [otlp]
417
+ processors: [batch]
418
+ exporters: [jaeger]
419
+ ```
420
+
421
+ ---
422
+
423
+ ## Security
424
+
425
+ ### Secrets Management
426
+
427
+ ```yaml
428
+ # Use External Secrets Operator
429
+ apiVersion: external-secrets.io/v1beta1
430
+ kind: ExternalSecret
431
+ metadata:
432
+ name: api-secrets
433
+ spec:
434
+ refreshInterval: 1h
435
+ secretStoreRef:
436
+ name: aws-secrets-manager
437
+ kind: ClusterSecretStore
438
+ target:
439
+ name: api-secrets
440
+ data:
441
+ - secretKey: database-url
442
+ remoteRef:
443
+ key: prod/api/database
444
+ property: url
445
+ ```
446
+
447
+ ### Network Policies
448
+
449
+ ```yaml
450
+ apiVersion: networking.k8s.io/v1
451
+ kind: NetworkPolicy
452
+ metadata:
453
+ name: api-network-policy
454
+ spec:
455
+ podSelector:
456
+ matchLabels:
457
+ app: api
458
+ policyTypes:
459
+ - Ingress
460
+ - Egress
461
+ ingress:
462
+ - from:
463
+ - namespaceSelector:
464
+ matchLabels:
465
+ name: ingress-nginx
466
+ ports:
467
+ - protocol: TCP
468
+ port: 8080
469
+ egress:
470
+ - to:
471
+ - namespaceSelector:
472
+ matchLabels:
473
+ name: database
474
+ ports:
475
+ - protocol: TCP
476
+ port: 5432
477
+ ```
478
+
479
+ ---
480
+
481
+ ## Makefile Standards
482
+
483
+ All projects **MUST** include a Makefile with standardized commands for consistent developer experience.
484
+
485
+ ### Required Commands
486
+
487
+ | Command | Purpose | Category |
488
+ |---------|---------|----------|
489
+ | `make build` | Build all components | Core |
490
+ | `make lint` | Run linters (golangci-lint) | Code Quality |
491
+ | `make test` | Run all tests | Testing |
492
+ | `make cover` | Generate test coverage report | Testing |
493
+ | `make test-unit` | Run unit tests only | Testing |
494
+ | `make up` | Start all services with Docker Compose | Docker |
495
+ | `make down` | Stop all services | Docker |
496
+ | `make start` | Start existing containers | Docker |
497
+ | `make stop` | Stop running containers | Docker |
498
+ | `make restart` | Restart all containers | Docker |
499
+ | `make rebuild-up` | Rebuild and restart services | Docker |
500
+ | `make set-env` | Copy .env.example to .env | Setup |
501
+ | `make generate-docs` | Generate API documentation (Swagger) | Documentation |
502
+
503
+ ### Component Delegation Pattern (Monorepo)
504
+
505
+ For monorepo projects with multiple components:
506
+
507
+ | Command | Purpose |
508
+ |---------|---------|
509
+ | `make infra COMMAND=<cmd>` | Run command in infra component |
510
+ | `make onboarding COMMAND=<cmd>` | Run command in onboarding component |
511
+ | `make all-components COMMAND=<cmd>` | Run command across all components |
512
+
513
+ ### Root Makefile Example
514
+
515
+ ```makefile
516
+ # Project Root Makefile
517
+
518
+ # Component directories
519
+ INFRA_DIR := ./components/infra
520
+ ONBOARDING_DIR := ./components/onboarding
521
+ TRANSACTION_DIR := ./components/transaction
522
+
523
+ COMPONENTS := $(INFRA_DIR) $(ONBOARDING_DIR) $(TRANSACTION_DIR)
524
+
525
+ # Docker command detection
526
+ DOCKER_CMD := $(shell if docker compose version >/dev/null 2>&1; then echo "docker compose"; else echo "docker-compose"; fi)
527
+
528
+ #-------------------------------------------------------
529
+ # Core Commands
530
+ #-------------------------------------------------------
531
+
532
+ .PHONY: build
533
+ build:
534
+ @for dir in $(COMPONENTS); do \
535
+ echo "Building in $$dir..."; \
536
+ (cd $$dir && $(MAKE) build) || exit 1; \
537
+ done
538
+ @echo "[ok] All components built successfully"
539
+
540
+ .PHONY: test
541
+ test:
542
+ @for dir in $(COMPONENTS); do \
543
+ (cd $$dir && $(MAKE) test) || exit 1; \
544
+ done
545
+
546
+ .PHONY: test-unit
547
+ test-unit:
548
+ @for dir in $(COMPONENTS); do \
549
+ (cd $$dir && go test -v -short ./...) || exit 1; \
550
+ done
551
+
552
+ .PHONY: cover
553
+ cover:
554
+ @sh ./scripts/coverage.sh
555
+ @go tool cover -html=coverage.out -o coverage.html
556
+ @echo "Coverage report generated at coverage.html"
557
+
558
+ #-------------------------------------------------------
559
+ # Code Quality Commands
560
+ #-------------------------------------------------------
561
+
562
+ .PHONY: lint
563
+ lint:
564
+ @for dir in $(COMPONENTS); do \
565
+ if find "$$dir" -name "*.go" -type f | grep -q .; then \
566
+ (cd $$dir && golangci-lint run --fix ./...) || exit 1; \
567
+ fi; \
568
+ done
569
+ @echo "[ok] Linting completed successfully"
570
+
571
+ #-------------------------------------------------------
572
+ # Docker Commands
573
+ #-------------------------------------------------------
574
+
575
+ .PHONY: up
576
+ up:
577
+ @for dir in $(COMPONENTS); do \
578
+ if [ -f "$$dir/docker-compose.yml" ]; then \
579
+ (cd $$dir && $(DOCKER_CMD) -f docker-compose.yml up -d) || exit 1; \
580
+ fi; \
581
+ done
582
+ @echo "[ok] All services started successfully"
583
+
584
+ .PHONY: down
585
+ down:
586
+ @for dir in $(COMPONENTS); do \
587
+ if [ -f "$$dir/docker-compose.yml" ]; then \
588
+ (cd $$dir && $(DOCKER_CMD) -f docker-compose.yml down) || exit 1; \
589
+ fi; \
590
+ done
591
+
592
+ .PHONY: start
593
+ start:
594
+ @for dir in $(COMPONENTS); do \
595
+ if [ -f "$$dir/docker-compose.yml" ]; then \
596
+ (cd $$dir && $(DOCKER_CMD) -f docker-compose.yml start) || exit 1; \
597
+ fi; \
598
+ done
599
+
600
+ .PHONY: stop
601
+ stop:
602
+ @for dir in $(COMPONENTS); do \
603
+ if [ -f "$$dir/docker-compose.yml" ]; then \
604
+ (cd $$dir && $(DOCKER_CMD) -f docker-compose.yml stop) || exit 1; \
605
+ fi; \
606
+ done
607
+
608
+ .PHONY: restart
609
+ restart:
610
+ @make stop && make start
611
+
612
+ .PHONY: rebuild-up
613
+ rebuild-up:
614
+ @for dir in $(COMPONENTS); do \
615
+ if [ -f "$$dir/docker-compose.yml" ]; then \
616
+ (cd $$dir && $(DOCKER_CMD) -f docker-compose.yml down && \
617
+ $(DOCKER_CMD) -f docker-compose.yml build && \
618
+ $(DOCKER_CMD) -f docker-compose.yml up -d) || exit 1; \
619
+ fi; \
620
+ done
621
+
622
+ #-------------------------------------------------------
623
+ # Setup Commands
624
+ #-------------------------------------------------------
625
+
626
+ .PHONY: set-env
627
+ set-env:
628
+ @for dir in $(COMPONENTS); do \
629
+ if [ -f "$$dir/.env.example" ] && [ ! -f "$$dir/.env" ]; then \
630
+ cp "$$dir/.env.example" "$$dir/.env"; \
631
+ echo "Created .env in $$dir"; \
632
+ fi; \
633
+ done
634
+
635
+ #-------------------------------------------------------
636
+ # Documentation Commands
637
+ #-------------------------------------------------------
638
+
639
+ .PHONY: generate-docs
640
+ generate-docs:
641
+ @./scripts/generate-docs.sh
642
+
643
+ #-------------------------------------------------------
644
+ # Component Delegation
645
+ #-------------------------------------------------------
646
+
647
+ .PHONY: infra
648
+ infra:
649
+ @if [ -z "$(COMMAND)" ]; then \
650
+ echo "Error: Use COMMAND=<cmd>"; exit 1; \
651
+ fi
652
+ @cd $(INFRA_DIR) && $(MAKE) $(COMMAND)
653
+
654
+ .PHONY: onboarding
655
+ onboarding:
656
+ @if [ -z "$(COMMAND)" ]; then \
657
+ echo "Error: Use COMMAND=<cmd>"; exit 1; \
658
+ fi
659
+ @cd $(ONBOARDING_DIR) && $(MAKE) $(COMMAND)
660
+
661
+ .PHONY: all-components
662
+ all-components:
663
+ @if [ -z "$(COMMAND)" ]; then \
664
+ echo "Error: Use COMMAND=<cmd>"; exit 1; \
665
+ fi
666
+ @for dir in $(COMPONENTS); do \
667
+ (cd $$dir && $(MAKE) $(COMMAND)) || exit 1; \
668
+ done
669
+ ```
670
+
671
+ ### Component Makefile Example
672
+
673
+ ```makefile
674
+ # Component Makefile (e.g., components/onboarding/Makefile)
675
+
676
+ SERVICE_NAME := onboarding-service
677
+ ARTIFACTS_DIR := ./artifacts
678
+
679
+ .PHONY: build test lint up down
680
+
681
+ build:
682
+ @go build -o $(ARTIFACTS_DIR)/$(SERVICE_NAME) ./cmd/app
683
+
684
+ test:
685
+ @go test -v ./...
686
+
687
+ lint:
688
+ @golangci-lint run --fix ./...
689
+
690
+ up:
691
+ @docker compose -f docker-compose.yml up -d
692
+
693
+ down:
694
+ @docker compose -f docker-compose.yml down
695
+ ```
696
+
697
+ ---
698
+
699
+ ## Checklist
700
+
701
+ Before deploying infrastructure, verify:
702
+
703
+ - [ ] Terraform state stored remotely with locking
704
+ - [ ] All resources tagged appropriately
705
+ - [ ] Docker images use multi-stage builds
706
+ - [ ] Secrets managed via External Secrets or similar
707
+ - [ ] Monitoring dashboards and alerts configured