@hybridlabor-api/aos 4.8.0 → 4.10.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 (186) hide show
  1. package/.agents/{agents.md → AGENTS.md} +3 -1
  2. package/.agents/nodes.json +3 -1
  3. package/.agents/vendor-manifest.json +23 -1
  4. package/.claude/agents/godmode-media-eventtech.md +1 -1
  5. package/.claude/hooks/conventional-commits.mjs +125 -0
  6. package/.claude/hooks/env-file-protection.mjs +105 -0
  7. package/.claude/hooks/go-gate.mjs +101 -81
  8. package/.claude/hooks/memb-inject.mjs +29 -1
  9. package/.claude/settings.json +13 -0
  10. package/.claude/workflows/startcycle-dispatch.mjs +23 -1
  11. package/.opencode/agents/godmode-media-eventtech.md +1 -1
  12. package/.opencode/plugins/bdb-aos.js +31 -4
  13. package/CLAUDE.md +0 -571
  14. package/README.de.md +1 -1
  15. package/README.md +1 -1
  16. package/README.pt.md +1 -1
  17. package/THIRD_PARTY_NOTICES.md +126 -0
  18. package/bin/aos-doctor.mjs +1 -1
  19. package/docs/skills_table.md +1 -1
  20. package/installer.js +187 -55
  21. package/package.json +7 -3
  22. package/packages/aos-cli/README.md +80 -0
  23. package/packages/aos-cli/bin/aos-cli.mjs +134 -0
  24. package/packages/aos-cli/core-skills.json +12 -0
  25. package/packages/aos-cli/extensions/aos.ts +321 -0
  26. package/packages/aos-cli/package-lock.json +1923 -0
  27. package/packages/aos-cli/package.json +29 -0
  28. package/packages/aos-cli/scripts/check-theme.mjs +63 -0
  29. package/packages/aos-cli/themes/aos.json +97 -0
  30. package/scripts/build-plugin-manifest.mjs +131 -0
  31. package/scripts/validate-skills.mjs +81 -6
  32. package/skills/basic/ao-orchestrator/SKILL.md +116 -0
  33. package/skills/basic/bdb-eventagency-skill/SKILL.md +252 -0
  34. package/skills/basic/bdb-shipping-skill/SKILL.md +161 -0
  35. package/skills/basic/godmode-eventtech/SKILL.md +4 -1
  36. package/skills/global_config/agenttrail/SKILL.md +6 -1
  37. package/skills/global_config/aos-project-init/SKILL.md +2 -0
  38. package/skills/global_config/aos-project-init/assets/AGENTS.template.md +1 -1
  39. package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +1 -1
  40. package/skills/global_config/aos-setup/SKILL.md +1 -1
  41. package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +1 -1
  42. package/skills/global_config/ask-tim/SKILL.md +7 -7
  43. package/skills/global_config/bash-script-generator/SKILL.md +201 -0
  44. package/skills/global_config/bash-script-generator/assets/templates/standard-template.sh +96 -0
  45. package/skills/global_config/bash-script-generator/docs/bash-scripting-guide.md +729 -0
  46. package/skills/global_config/bash-script-generator/docs/generation-best-practices.md +193 -0
  47. package/skills/global_config/bash-script-generator/docs/script-patterns.md +566 -0
  48. package/skills/global_config/bash-script-generator/docs/text-processing-guide.md +437 -0
  49. package/skills/global_config/bash-script-generator/examples/log-analyzer.sh +92 -0
  50. package/skills/global_config/bash-script-generator/scripts/generate_script_template.sh +123 -0
  51. package/skills/global_config/bash-script-generator/scripts/run_ci_checks.sh +172 -0
  52. package/skills/global_config/bash-script-generator/scripts/test_generator.sh +413 -0
  53. package/skills/global_config/bash-script-validator/SKILL.md +249 -0
  54. package/skills/global_config/bash-script-validator/docs/awk-reference.md +449 -0
  55. package/skills/global_config/bash-script-validator/docs/bash-reference.md +468 -0
  56. package/skills/global_config/bash-script-validator/docs/common-mistakes.md +623 -0
  57. package/skills/global_config/bash-script-validator/docs/grep-reference.md +395 -0
  58. package/skills/global_config/bash-script-validator/docs/regex-reference.md +391 -0
  59. package/skills/global_config/bash-script-validator/docs/sed-reference.md +454 -0
  60. package/skills/global_config/bash-script-validator/docs/shell-reference.md +463 -0
  61. package/skills/global_config/bash-script-validator/docs/shellcheck-reference.md +399 -0
  62. package/skills/global_config/bash-script-validator/examples/bad-bash.sh +55 -0
  63. package/skills/global_config/bash-script-validator/examples/bad-shell.sh +54 -0
  64. package/skills/global_config/bash-script-validator/examples/good-bash.sh +71 -0
  65. package/skills/global_config/bash-script-validator/examples/good-shell.sh +69 -0
  66. package/skills/global_config/bash-script-validator/scripts/run_ci_checks.sh +23 -0
  67. package/skills/global_config/bash-script-validator/scripts/shellcheck_wrapper.sh +174 -0
  68. package/skills/global_config/bash-script-validator/scripts/test_validate.sh +446 -0
  69. package/skills/global_config/bash-script-validator/scripts/validate.sh +512 -0
  70. package/skills/global_config/ci-pipeline/SKILL.md +135 -0
  71. package/skills/global_config/deja-memory/SKILL.md +3 -1
  72. package/skills/global_config/dispatching-parallel-agents/SKILL.md +170 -0
  73. package/skills/global_config/dockerfile-generator/SKILL.md +1038 -0
  74. package/skills/global_config/dockerfile-generator/examples/example.dockerignore +95 -0
  75. package/skills/global_config/dockerfile-generator/examples/golang-distroless.Dockerfile +34 -0
  76. package/skills/global_config/dockerfile-generator/examples/java-springboot.Dockerfile +45 -0
  77. package/skills/global_config/dockerfile-generator/examples/nextjs-production.Dockerfile +49 -0
  78. package/skills/global_config/dockerfile-generator/examples/nodejs-multistage.Dockerfile +55 -0
  79. package/skills/global_config/dockerfile-generator/examples/python-fastapi.Dockerfile +48 -0
  80. package/skills/global_config/dockerfile-generator/references/language_specific_guides.md +510 -0
  81. package/skills/global_config/dockerfile-generator/references/multistage_builds.md +570 -0
  82. package/skills/global_config/dockerfile-generator/references/optimization_patterns.md +492 -0
  83. package/skills/global_config/dockerfile-generator/references/security_best_practices.md +375 -0
  84. package/skills/global_config/dockerfile-generator/scripts/generate_dockerignore.sh +199 -0
  85. package/skills/global_config/dockerfile-generator/scripts/generate_golang.sh +172 -0
  86. package/skills/global_config/dockerfile-generator/scripts/generate_java.sh +185 -0
  87. package/skills/global_config/dockerfile-generator/scripts/generate_nodejs.sh +279 -0
  88. package/skills/global_config/dockerfile-generator/scripts/generate_python.sh +218 -0
  89. package/skills/global_config/dockerfile-generator/scripts/test_generator.sh +210 -0
  90. package/skills/global_config/dockerfile-validator/SKILL.md +300 -0
  91. package/skills/global_config/dockerfile-validator/examples/.dockerignore.example +34 -0
  92. package/skills/global_config/dockerfile-validator/examples/bad-example.Dockerfile +37 -0
  93. package/skills/global_config/dockerfile-validator/examples/golang-distroless.Dockerfile +50 -0
  94. package/skills/global_config/dockerfile-validator/examples/good-example.Dockerfile +52 -0
  95. package/skills/global_config/dockerfile-validator/examples/python-optimized.Dockerfile +53 -0
  96. package/skills/global_config/dockerfile-validator/examples/security-issues.Dockerfile +42 -0
  97. package/skills/global_config/dockerfile-validator/references/docker_best_practices.md +348 -0
  98. package/skills/global_config/dockerfile-validator/references/optimization_guide.md +473 -0
  99. package/skills/global_config/dockerfile-validator/references/security_checklist.md +208 -0
  100. package/skills/global_config/dockerfile-validator/scripts/dockerfile-validate.sh +699 -0
  101. package/skills/global_config/dockerfile-validator/scripts/test_validate.sh +35 -0
  102. package/skills/global_config/dockerfile-validator/tests/fixtures/copy-before-yarn-lock-read.Dockerfile +6 -0
  103. package/skills/global_config/dockerfile-validator/tests/fixtures/copy-before-yarn.Dockerfile +6 -0
  104. package/skills/global_config/dockerfile-validator/tests/fixtures/from-platform-nonroot.Dockerfile +7 -0
  105. package/skills/global_config/dockerfile-validator/tests/test_regression.sh +164 -0
  106. package/skills/global_config/finishing-a-development-branch/SKILL.md +228 -0
  107. package/skills/global_config/github-actions-generator/SKILL.md +353 -0
  108. package/skills/global_config/github-actions-generator/assets/templates/action/composite/action.yml +82 -0
  109. package/skills/global_config/github-actions-generator/assets/templates/action/docker/Dockerfile +25 -0
  110. package/skills/global_config/github-actions-generator/assets/templates/action/docker/action.yml +42 -0
  111. package/skills/global_config/github-actions-generator/assets/templates/action/docker/entrypoint.sh +27 -0
  112. package/skills/global_config/github-actions-generator/assets/templates/action/javascript/action.yml +33 -0
  113. package/skills/global_config/github-actions-generator/assets/templates/action/javascript/index.js +50 -0
  114. package/skills/global_config/github-actions-generator/assets/templates/action/javascript/package.json +27 -0
  115. package/skills/global_config/github-actions-generator/assets/templates/workflow/basic_workflow.yml +242 -0
  116. package/skills/global_config/github-actions-generator/assets/templates/workflow/reusable_workflow.yml +106 -0
  117. package/skills/global_config/github-actions-generator/examples/README.md +147 -0
  118. package/skills/global_config/github-actions-generator/examples/actions/setup-node-cached/action.yml +93 -0
  119. package/skills/global_config/github-actions-generator/examples/caching/docker-buildkit.yml +256 -0
  120. package/skills/global_config/github-actions-generator/examples/security/dependency-review.yml +62 -0
  121. package/skills/global_config/github-actions-generator/examples/security/sbom-attestation.yml +119 -0
  122. package/skills/global_config/github-actions-generator/examples/triggers/chatops-commands.yml +475 -0
  123. package/skills/global_config/github-actions-generator/examples/triggers/repository-dispatch.yml +418 -0
  124. package/skills/global_config/github-actions-generator/examples/triggers/workflow-orchestration.yml +404 -0
  125. package/skills/global_config/github-actions-generator/examples/workflows/docker-build-push.yml +68 -0
  126. package/skills/global_config/github-actions-generator/examples/workflows/go-ci.yml +161 -0
  127. package/skills/global_config/github-actions-generator/examples/workflows/monorepo-ci.yml +340 -0
  128. package/skills/global_config/github-actions-generator/examples/workflows/multi-environment-deploy.yml +406 -0
  129. package/skills/global_config/github-actions-generator/examples/workflows/nodejs-ci.yml +122 -0
  130. package/skills/global_config/github-actions-generator/examples/workflows/python-ci.yml +157 -0
  131. package/skills/global_config/github-actions-generator/examples/workflows/scheduled-tasks.yml +376 -0
  132. package/skills/global_config/github-actions-generator/references/advanced-triggers.md +917 -0
  133. package/skills/global_config/github-actions-generator/references/best-practices.md +755 -0
  134. package/skills/global_config/github-actions-generator/references/common-actions.md +715 -0
  135. package/skills/global_config/github-actions-generator/references/custom-actions.md +320 -0
  136. package/skills/global_config/github-actions-generator/references/expressions-and-contexts.md +688 -0
  137. package/skills/global_config/github-actions-generator/references/modern-features.md +421 -0
  138. package/skills/global_config/github-actions-generator/scripts/test_generator.sh +344 -0
  139. package/skills/global_config/github-actions-templates/SKILL.md +7 -0
  140. package/skills/global_config/github-actions-validator/SKILL.md +576 -0
  141. package/skills/global_config/github-actions-validator/examples/README.md +88 -0
  142. package/skills/global_config/github-actions-validator/examples/outdated-versions.yml +76 -0
  143. package/skills/global_config/github-actions-validator/examples/valid-ci.yml +79 -0
  144. package/skills/global_config/github-actions-validator/examples/with-errors.yml +47 -0
  145. package/skills/global_config/github-actions-validator/references/act_usage.md +233 -0
  146. package/skills/global_config/github-actions-validator/references/action_versions.md +122 -0
  147. package/skills/global_config/github-actions-validator/references/actionlint_usage.md +343 -0
  148. package/skills/global_config/github-actions-validator/references/common_errors.md +512 -0
  149. package/skills/global_config/github-actions-validator/references/modern_features.md +384 -0
  150. package/skills/global_config/github-actions-validator/references/runners.md +317 -0
  151. package/skills/global_config/github-actions-validator/scripts/install_tools.sh +113 -0
  152. package/skills/global_config/github-actions-validator/scripts/validate_workflow.sh +910 -0
  153. package/skills/global_config/github-actions-validator/tests/test_validate_workflow.sh +237 -0
  154. package/skills/global_config/makefile-generator/SKILL.md +614 -0
  155. package/skills/global_config/makefile-generator/assets/templates/.gitkeep +1 -0
  156. package/skills/global_config/makefile-generator/docs/makefile-structure.md +530 -0
  157. package/skills/global_config/makefile-generator/docs/optimization-guide.md +784 -0
  158. package/skills/global_config/makefile-generator/docs/patterns-guide.md +642 -0
  159. package/skills/global_config/makefile-generator/docs/security-guide.md +361 -0
  160. package/skills/global_config/makefile-generator/docs/targets-guide.md +642 -0
  161. package/skills/global_config/makefile-generator/docs/variables-guide.md +596 -0
  162. package/skills/global_config/makefile-generator/scripts/add_standard_targets.sh +539 -0
  163. package/skills/global_config/makefile-generator/scripts/generate_makefile_template.sh +690 -0
  164. package/skills/global_config/makefile-generator/test/test_helper_scripts.sh +190 -0
  165. package/skills/global_config/makefile-validator/SKILL.md +244 -0
  166. package/skills/global_config/makefile-validator/docs/bake-tool.md +1000 -0
  167. package/skills/global_config/makefile-validator/docs/best-practices.md +858 -0
  168. package/skills/global_config/makefile-validator/docs/common-mistakes.md +944 -0
  169. package/skills/global_config/makefile-validator/examples/bad-makefile.mk +77 -0
  170. package/skills/global_config/makefile-validator/examples/good-makefile.mk +103 -0
  171. package/skills/global_config/makefile-validator/scripts/test_validate.sh +382 -0
  172. package/skills/global_config/makefile-validator/scripts/validate_makefile.sh +712 -0
  173. package/skills/global_config/{MCP_Manage → mcp-manage}/SKILL.md +3 -3
  174. package/skills/global_config/plan-canvas/SKILL.md +9 -2
  175. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/ui.js +10 -2
  176. package/skills/global_config/plan-canvas/scripts/plan-canvas.js +1 -1
  177. package/skills/global_config/read-the-damn-docs/SKILL.md +175 -0
  178. package/skills/global_config/requesting-code-review/SKILL.md +98 -0
  179. package/skills/global_config/requesting-code-review/code-reviewer.md +198 -0
  180. package/skills/global_config/using-git-worktrees/SKILL.md +170 -0
  181. package/skills/global_config/verification-before-completion/SKILL.md +123 -0
  182. package/skills/global_config/writing-plans/SKILL.md +126 -46
  183. package/skills/global_config/writing-plans-legacy/SKILL.md +152 -0
  184. package/.claude/CLAUDE.md +0 -12
  185. package/mcps/RhinoMCP/docs/content/docs/getting-started/gemini.md +0 -61
  186. /package/{GEMINI.md → RULES.md} +0 -0
@@ -0,0 +1,340 @@
1
+ # Monorepo CI Pipeline Example
2
+ # Demonstrates: Path filtering, affected package detection, conditional builds, matrix for packages
3
+
4
+ name: Monorepo CI
5
+
6
+ on:
7
+ push:
8
+ branches: [main, develop]
9
+ pull_request:
10
+ branches: [main]
11
+ workflow_dispatch:
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ concurrency:
17
+ group: ${{ github.workflow }}-${{ github.ref }}
18
+ cancel-in-progress: true
19
+
20
+ env:
21
+ NODE_VERSION: '24'
22
+
23
+ jobs:
24
+ # Detect which packages have changed
25
+ detect-changes:
26
+ name: Detect Changed Packages
27
+ runs-on: ubuntu-latest
28
+ timeout-minutes: 5
29
+
30
+ outputs:
31
+ packages: ${{ steps.filter.outputs.changes }}
32
+ any-changed: ${{ steps.filter.outputs.any-changed }}
33
+
34
+ steps:
35
+ - name: Checkout code
36
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
37
+ with:
38
+ fetch-depth: 0 # Need full history for path detection
39
+
40
+ - name: Detect changed paths
41
+ uses: dorny/paths-filter@de90cc6551a0c30ca4af50ac82dafbf57eb22fab # v3.0.2
42
+ id: filter
43
+ with:
44
+ filters: |
45
+ frontend:
46
+ - 'packages/frontend/**'
47
+ backend:
48
+ - 'packages/backend/**'
49
+ shared:
50
+ - 'packages/shared/**'
51
+ infrastructure:
52
+ - 'packages/infrastructure/**'
53
+
54
+ - name: Set any-changed flag
55
+ id: any-changed
56
+ run: |
57
+ if [[ "${{ steps.filter.outputs.frontend }}" == "true" ]] || \
58
+ [[ "${{ steps.filter.outputs.backend }}" == "true" ]] || \
59
+ [[ "${{ steps.filter.outputs.shared }}" == "true" ]] || \
60
+ [[ "${{ steps.filter.outputs.infrastructure }}" == "true" ]]; then
61
+ echo "any-changed=true" >> $GITHUB_OUTPUT
62
+ else
63
+ echo "any-changed=false" >> $GITHUB_OUTPUT
64
+ fi
65
+
66
+ # Lint root configuration files
67
+ lint-root:
68
+ name: Lint Root Configuration
69
+ runs-on: ubuntu-latest
70
+ timeout-minutes: 10
71
+
72
+ steps:
73
+ - name: Checkout code
74
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
75
+
76
+ - name: Setup Node.js
77
+ uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
78
+ with:
79
+ node-version: ${{ env.NODE_VERSION }}
80
+ cache: 'npm'
81
+
82
+ - name: Install root dependencies
83
+ run: npm ci
84
+
85
+ - name: Lint root files
86
+ run: npm run lint:root
87
+
88
+ # Build and test shared package (dependency for others)
89
+ shared:
90
+ name: Build Shared Package
91
+ runs-on: ubuntu-latest
92
+ needs: [detect-changes]
93
+ if: needs.detect-changes.outputs.packages contains 'shared' || needs.detect-changes.outputs.any-changed == 'true'
94
+ timeout-minutes: 15
95
+
96
+ steps:
97
+ - name: Checkout code
98
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
99
+
100
+ - name: Setup Node.js
101
+ uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
102
+ with:
103
+ node-version: ${{ env.NODE_VERSION }}
104
+ cache: 'npm'
105
+
106
+ - name: Install dependencies
107
+ run: npm ci
108
+ working-directory: packages/shared
109
+
110
+ - name: Run linter
111
+ run: npm run lint
112
+ working-directory: packages/shared
113
+
114
+ - name: Run tests
115
+ run: npm test
116
+ working-directory: packages/shared
117
+
118
+ - name: Build package
119
+ run: npm run build
120
+ working-directory: packages/shared
121
+
122
+ - name: Upload build artifacts
123
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
124
+ with:
125
+ name: shared-dist
126
+ path: packages/shared/dist/
127
+ retention-days: 1
128
+
129
+ # Build and test frontend package
130
+ frontend:
131
+ name: Build Frontend Package
132
+ runs-on: ubuntu-latest
133
+ needs: [detect-changes, shared]
134
+ if: needs.detect-changes.outputs.packages contains 'frontend' || needs.detect-changes.outputs.packages contains 'shared'
135
+ timeout-minutes: 20
136
+
137
+ steps:
138
+ - name: Checkout code
139
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
140
+
141
+ - name: Setup Node.js
142
+ uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
143
+ with:
144
+ node-version: ${{ env.NODE_VERSION }}
145
+ cache: 'npm'
146
+
147
+ - name: Download shared package
148
+ uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
149
+ with:
150
+ name: shared-dist
151
+ path: packages/shared/dist/
152
+
153
+ - name: Install dependencies
154
+ run: npm ci
155
+ working-directory: packages/frontend
156
+
157
+ - name: Run linter
158
+ run: npm run lint
159
+ working-directory: packages/frontend
160
+
161
+ - name: Run tests
162
+ run: npm test
163
+ working-directory: packages/frontend
164
+
165
+ - name: Build frontend
166
+ run: npm run build
167
+ working-directory: packages/frontend
168
+ env:
169
+ NODE_ENV: production
170
+
171
+ - name: Upload build artifacts
172
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
173
+ with:
174
+ name: frontend-dist
175
+ path: packages/frontend/dist/
176
+ retention-days: 7
177
+
178
+ # Build and test backend package
179
+ backend:
180
+ name: Build Backend Package
181
+ runs-on: ubuntu-latest
182
+ needs: [detect-changes, shared]
183
+ if: needs.detect-changes.outputs.packages contains 'backend' || needs.detect-changes.outputs.packages contains 'shared'
184
+ timeout-minutes: 20
185
+
186
+ strategy:
187
+ matrix:
188
+ node-version: [20, 24]
189
+ fail-fast: false
190
+
191
+ steps:
192
+ - name: Checkout code
193
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
194
+
195
+ - name: Setup Node.js ${{ matrix.node-version }}
196
+ uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
197
+ with:
198
+ node-version: ${{ matrix.node-version }}
199
+ cache: 'npm'
200
+
201
+ - name: Download shared package
202
+ uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
203
+ with:
204
+ name: shared-dist
205
+ path: packages/shared/dist/
206
+
207
+ - name: Install dependencies
208
+ run: npm ci
209
+ working-directory: packages/backend
210
+
211
+ - name: Run linter
212
+ run: npm run lint
213
+ working-directory: packages/backend
214
+
215
+ - name: Run unit tests
216
+ run: npm run test:unit
217
+ working-directory: packages/backend
218
+
219
+ - name: Run integration tests
220
+ run: npm run test:integration
221
+ working-directory: packages/backend
222
+ env:
223
+ DATABASE_URL: postgresql://postgres:postgres@localhost:5432/test
224
+
225
+ - name: Build backend
226
+ run: npm run build
227
+ working-directory: packages/backend
228
+
229
+ - name: Upload build artifacts
230
+ if: matrix.node-version == 24
231
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
232
+ with:
233
+ name: backend-dist
234
+ path: packages/backend/dist/
235
+ retention-days: 7
236
+
237
+ # Validate infrastructure code
238
+ infrastructure:
239
+ name: Validate Infrastructure
240
+ runs-on: ubuntu-latest
241
+ needs: [detect-changes]
242
+ if: needs.detect-changes.outputs.packages contains 'infrastructure'
243
+ timeout-minutes: 15
244
+
245
+ steps:
246
+ - name: Checkout code
247
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
248
+
249
+ - name: Setup Terraform
250
+ uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
251
+ with:
252
+ terraform_version: 1.6.0
253
+
254
+ - name: Terraform Format Check
255
+ run: terraform fmt -check -recursive
256
+ working-directory: packages/infrastructure
257
+
258
+ - name: Terraform Init
259
+ run: terraform init -backend=false
260
+ working-directory: packages/infrastructure
261
+
262
+ - name: Terraform Validate
263
+ run: terraform validate
264
+ working-directory: packages/infrastructure
265
+
266
+ # Integration test across packages
267
+ integration:
268
+ name: Integration Tests
269
+ runs-on: ubuntu-latest
270
+ needs: [frontend, backend]
271
+ if: |
272
+ always() &&
273
+ (needs.frontend.result == 'success' || needs.frontend.result == 'skipped') &&
274
+ (needs.backend.result == 'success' || needs.backend.result == 'skipped')
275
+ timeout-minutes: 20
276
+
277
+ steps:
278
+ - name: Checkout code
279
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
280
+
281
+ - name: Setup Node.js
282
+ uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
283
+ with:
284
+ node-version: ${{ env.NODE_VERSION }}
285
+
286
+ - name: Download all artifacts
287
+ uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
288
+
289
+ - name: Install test dependencies
290
+ run: npm ci
291
+ working-directory: tests/integration
292
+
293
+ - name: Run integration tests
294
+ run: npm test
295
+ working-directory: tests/integration
296
+
297
+ # Summary job - gates deployment
298
+ check-status:
299
+ name: CI Status Check
300
+ runs-on: ubuntu-latest
301
+ needs: [lint-root, shared, frontend, backend, infrastructure, integration]
302
+ if: always()
303
+ timeout-minutes: 5
304
+
305
+ steps:
306
+ - name: Check all job statuses
307
+ run: |
308
+ echo "Lint Root: ${{ needs.lint-root.result }}"
309
+ echo "Shared: ${{ needs.shared.result }}"
310
+ echo "Frontend: ${{ needs.frontend.result }}"
311
+ echo "Backend: ${{ needs.backend.result }}"
312
+ echo "Infrastructure: ${{ needs.infrastructure.result }}"
313
+ echo "Integration: ${{ needs.integration.result }}"
314
+
315
+ # Fail if any job failed (skipped is ok)
316
+ if [[ "${{ needs.lint-root.result }}" == "failure" ]] || \
317
+ [[ "${{ needs.shared.result }}" == "failure" ]] || \
318
+ [[ "${{ needs.frontend.result }}" == "failure" ]] || \
319
+ [[ "${{ needs.backend.result }}" == "failure" ]] || \
320
+ [[ "${{ needs.infrastructure.result }}" == "failure" ]] || \
321
+ [[ "${{ needs.integration.result }}" == "failure" ]]; then
322
+ echo "❌ One or more jobs failed"
323
+ exit 1
324
+ fi
325
+
326
+ echo "✅ All jobs passed or were skipped"
327
+
328
+ - name: Generate summary
329
+ run: |
330
+ echo "## Monorepo CI Summary" >> $GITHUB_STEP_SUMMARY
331
+ echo "" >> $GITHUB_STEP_SUMMARY
332
+ echo "**Status:** ✅ All checks passed" >> $GITHUB_STEP_SUMMARY
333
+ echo "" >> $GITHUB_STEP_SUMMARY
334
+ echo "### Job Results" >> $GITHUB_STEP_SUMMARY
335
+ echo "- Lint Root: ${{ needs.lint-root.result }}" >> $GITHUB_STEP_SUMMARY
336
+ echo "- Shared Package: ${{ needs.shared.result }}" >> $GITHUB_STEP_SUMMARY
337
+ echo "- Frontend Package: ${{ needs.frontend.result }}" >> $GITHUB_STEP_SUMMARY
338
+ echo "- Backend Package: ${{ needs.backend.result }}" >> $GITHUB_STEP_SUMMARY
339
+ echo "- Infrastructure: ${{ needs.infrastructure.result }}" >> $GITHUB_STEP_SUMMARY
340
+ echo "- Integration Tests: ${{ needs.integration.result }}" >> $GITHUB_STEP_SUMMARY