ndomo 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 (247) hide show
  1. package/.bun-version +1 -0
  2. package/.dockerignore +79 -0
  3. package/.editorconfig +18 -0
  4. package/.env.example +19 -0
  5. package/.github/CODEOWNERS +8 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.yml +62 -0
  7. package/.github/ISSUE_TEMPLATE/config.yml +2 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.yml +34 -0
  9. package/.github/dependabot.yml +36 -0
  10. package/.github/pull_request_template.md +24 -0
  11. package/.github/release.yml +30 -0
  12. package/.github/workflows/gitleaks.yml +28 -0
  13. package/.github/workflows/release-please.yml +27 -0
  14. package/.github/workflows/smoke.yml +29 -0
  15. package/.husky/commit-msg +1 -0
  16. package/CHANGELOG.md +114 -0
  17. package/Dockerfile +32 -0
  18. package/README.es.md +174 -0
  19. package/README.md +187 -0
  20. package/agents/chronicler.md +98 -0
  21. package/agents/ci-smith.md +136 -0
  22. package/agents/craftsman.md +341 -0
  23. package/agents/deploy-smith.md +138 -0
  24. package/agents/foreman.md +377 -0
  25. package/agents/go-smith.md +164 -0
  26. package/agents/guild.md +188 -0
  27. package/agents/inspector.md +83 -0
  28. package/agents/js-smith.md +127 -0
  29. package/agents/ops-scout.md +173 -0
  30. package/agents/painter.md +200 -0
  31. package/agents/python-smith.md +120 -0
  32. package/agents/ranger.md +307 -0
  33. package/agents/release-smith.md +165 -0
  34. package/agents/rust-smith.md +159 -0
  35. package/agents/sage.md +178 -0
  36. package/agents/scout.md +144 -0
  37. package/agents/scribe.md +156 -0
  38. package/agents/smith.md +201 -0
  39. package/agents/vue-smith.md +155 -0
  40. package/agents/warden.md +216 -0
  41. package/agents/zig-smith.md +156 -0
  42. package/bin/ndomo-analyses.ts +4 -0
  43. package/bin/ndomo-status.ts +4 -0
  44. package/biome.json +57 -0
  45. package/bun.lock +514 -0
  46. package/commitlint.config.js +3 -0
  47. package/config/ndomo.config.json +258 -0
  48. package/config/ndomo.schema.json +166 -0
  49. package/docs/agents.md +375 -0
  50. package/docs/bugs/plan-create-orphan-fk.md +131 -0
  51. package/docs/bugs/task_create_batch-order-index-collision.md +158 -0
  52. package/docs/configuration.md +276 -0
  53. package/docs/database.md +364 -0
  54. package/docs/features/feature-flexible-builder-v1.md +724 -0
  55. package/docs/features/feature-flexible-builder-v2.md +882 -0
  56. package/docs/features/feature-flexible-builder.md +974 -0
  57. package/docs/http-server.md +244 -0
  58. package/docs/installation.md +259 -0
  59. package/docs/integrations.md +129 -0
  60. package/docs/operations/anti-pattern-sub-agent-verify-2026-06-21.md +32 -0
  61. package/docs/operations/audit-v1.md +417 -0
  62. package/docs/operations/audit-v2.md +197 -0
  63. package/docs/operations/audit-v3.md +306 -0
  64. package/docs/operations/db-optimize-foundations.md +123 -0
  65. package/docs/operations/verify-gate-architecture.md +82 -0
  66. package/docs/workflows.md +448 -0
  67. package/opencode.json +5 -0
  68. package/package.json +65 -0
  69. package/release-please-config.json +11 -0
  70. package/scripts/dev-bust-cache.sh +164 -0
  71. package/scripts/install.sh +688 -0
  72. package/scripts/smoke-e2e.ts +704 -0
  73. package/scripts/smoke-hot.ts +417 -0
  74. package/scripts/smoke-http.sh +228 -0
  75. package/scripts/smoke-v4.ts +256 -0
  76. package/scripts/smoke-v5.ts +397 -0
  77. package/scripts/smoke.sh +9 -0
  78. package/scripts/uninstall.sh +224 -0
  79. package/skills/api-security-best-practices/SKILL.md +915 -0
  80. package/skills/bash-scripting/SKILL.md +201 -0
  81. package/skills/bun/SKILL.md +313 -0
  82. package/skills/cavecrew/SKILL.md +82 -0
  83. package/skills/caveman/SKILL.md +74 -0
  84. package/skills/caveman-review/README.md +33 -0
  85. package/skills/caveman-review/SKILL.md +55 -0
  86. package/skills/find-skills/SKILL.md +142 -0
  87. package/skills/frontend-design/LICENSE.txt +177 -0
  88. package/skills/frontend-design/SKILL.md +55 -0
  89. package/skills/golang-patterns/SKILL.md +674 -0
  90. package/skills/golang-security/SKILL.md +185 -0
  91. package/skills/golang-security/evals/evals.json +595 -0
  92. package/skills/golang-security/references/architecture.md +268 -0
  93. package/skills/golang-security/references/checklist.md +80 -0
  94. package/skills/golang-security/references/cookies.md +200 -0
  95. package/skills/golang-security/references/cryptography.md +424 -0
  96. package/skills/golang-security/references/filesystem.md +285 -0
  97. package/skills/golang-security/references/injection.md +315 -0
  98. package/skills/golang-security/references/logging.md +163 -0
  99. package/skills/golang-security/references/memory-safety.md +241 -0
  100. package/skills/golang-security/references/network.md +253 -0
  101. package/skills/golang-security/references/secrets.md +189 -0
  102. package/skills/golang-security/references/third-party.md +159 -0
  103. package/skills/golang-security/references/threat-modeling.md +189 -0
  104. package/skills/golang-testing/SKILL.md +720 -0
  105. package/skills/grill-me/SKILL.md +7 -0
  106. package/skills/javascript-testing-patterns/SKILL.md +537 -0
  107. package/skills/javascript-testing-patterns/references/advanced-testing-patterns.md +513 -0
  108. package/skills/modern-javascript-patterns/SKILL.md +43 -0
  109. package/skills/modern-javascript-patterns/references/advanced-patterns.md +487 -0
  110. package/skills/modern-javascript-patterns/references/details.md +457 -0
  111. package/skills/python-anti-patterns/SKILL.md +349 -0
  112. package/skills/python-design-patterns/SKILL.md +85 -0
  113. package/skills/python-design-patterns/references/details.md +353 -0
  114. package/skills/python-error-handling/SKILL.md +193 -0
  115. package/skills/python-error-handling/references/details.md +171 -0
  116. package/skills/python-testing-patterns/SKILL.md +278 -0
  117. package/skills/python-testing-patterns/references/advanced-patterns.md +411 -0
  118. package/skills/python-testing-patterns/references/details.md +349 -0
  119. package/skills/rust-patterns/SKILL.md +500 -0
  120. package/skills/rust-testing/SKILL.md +501 -0
  121. package/skills/security-review/SKILL.md +504 -0
  122. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  123. package/skills/vue-best-practices/SKILL.md +154 -0
  124. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  125. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  126. package/skills/vue-best-practices/references/component-async.md +97 -0
  127. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  128. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  129. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  130. package/skills/vue-best-practices/references/component-slots.md +216 -0
  131. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  132. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  133. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  134. package/skills/vue-best-practices/references/component-transition.md +125 -0
  135. package/skills/vue-best-practices/references/composables.md +290 -0
  136. package/skills/vue-best-practices/references/directives.md +162 -0
  137. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  138. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  139. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  140. package/skills/vue-best-practices/references/plugins.md +166 -0
  141. package/skills/vue-best-practices/references/reactivity.md +344 -0
  142. package/skills/vue-best-practices/references/render-functions.md +201 -0
  143. package/skills/vue-best-practices/references/sfc.md +310 -0
  144. package/skills/vue-best-practices/references/state-management.md +135 -0
  145. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  146. package/skills/vue-pinia-best-practices/SKILL.md +21 -0
  147. package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
  148. package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
  149. package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
  150. package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
  151. package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
  152. package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
  153. package/skills/zig-0.16/SKILL.md +840 -0
  154. package/skills/zig-0.16/scripts/check-zig-version.sh +21 -0
  155. package/src/cli/analyses.ts +280 -0
  156. package/src/cli/index.ts +108 -0
  157. package/src/cli/serve.ts +192 -0
  158. package/src/cli/smoke.ts +131 -0
  159. package/src/cli/status.test.ts +204 -0
  160. package/src/cli/status.ts +263 -0
  161. package/src/cli/vacuum.test.ts +82 -0
  162. package/src/cli/vacuum.ts +96 -0
  163. package/src/config/schema.test.ts +88 -0
  164. package/src/config/schema.ts +64 -0
  165. package/src/db/analyses-migration.test.ts +210 -0
  166. package/src/db/analyses.test.ts +466 -0
  167. package/src/db/analyses.ts +375 -0
  168. package/src/db/auto-checkpoint.ts +131 -0
  169. package/src/db/client.test.ts +129 -0
  170. package/src/db/client.ts +55 -0
  171. package/src/db/fts-escape.ts +20 -0
  172. package/src/db/incidents.test.ts +201 -0
  173. package/src/db/incidents.ts +93 -0
  174. package/src/db/index.ts +86 -0
  175. package/src/db/migrations-v13.test.ts +141 -0
  176. package/src/db/migrations-v8.test.ts +301 -0
  177. package/src/db/migrations.ts +147 -0
  178. package/src/db/plan-archive.test.ts +180 -0
  179. package/src/db/plan-archive.ts +274 -0
  180. package/src/db/plan-create.test.ts +276 -0
  181. package/src/db/plan-create.ts +78 -0
  182. package/src/db/plan-files.test.ts +289 -0
  183. package/src/db/plan-update-status.ts +287 -0
  184. package/src/db/plans.test.ts +490 -0
  185. package/src/db/plans.ts +534 -0
  186. package/src/db/resolve-project-dir.test.ts +143 -0
  187. package/src/db/resolve-project-dir.ts +75 -0
  188. package/src/db/rollbacks.test.ts +150 -0
  189. package/src/db/rollbacks.ts +67 -0
  190. package/src/db/schema.ts +907 -0
  191. package/src/db/sessions.test.ts +80 -0
  192. package/src/db/sessions.ts +135 -0
  193. package/src/db/shutdown.test.ts +147 -0
  194. package/src/db/shutdown.ts +45 -0
  195. package/src/db/tasks.test.ts +921 -0
  196. package/src/db/tasks.ts +747 -0
  197. package/src/db/types.ts +619 -0
  198. package/src/http/__tests__/auth.test.ts +196 -0
  199. package/src/http/__tests__/routes.test.ts +465 -0
  200. package/src/http/__tests__/sse.test.ts +317 -0
  201. package/src/http/auth.ts +72 -0
  202. package/src/http/middleware/cors.ts +53 -0
  203. package/src/http/middleware/security-headers.ts +21 -0
  204. package/src/http/routes/events.ts +112 -0
  205. package/src/http/routes/health.ts +51 -0
  206. package/src/http/routes/plans.ts +66 -0
  207. package/src/http/routes/sessions.ts +50 -0
  208. package/src/http/routes/tasks.ts +60 -0
  209. package/src/http/server.ts +95 -0
  210. package/src/http/sse.ts +116 -0
  211. package/src/index.ts +37 -0
  212. package/src/lib.ts +65 -0
  213. package/src/mem/scoped.ts +65 -0
  214. package/src/orchestrator/background.test.ts +268 -0
  215. package/src/orchestrator/background.ts +293 -0
  216. package/src/orchestrator/memory-hook.ts +182 -0
  217. package/src/orchestrator/reconciler.ts +123 -0
  218. package/src/orchestrator/scheduler.test.ts +300 -0
  219. package/src/orchestrator/scheduler.ts +243 -0
  220. package/src/plugin.test.ts +2574 -0
  221. package/src/plugin.ts +1690 -0
  222. package/src/sdk/client.ts +66 -0
  223. package/src/worktrees/manager.ts +236 -0
  224. package/src/worktrees/state.ts +87 -0
  225. package/tests/integration/ranger-flow.test.ts +257 -0
  226. package/tools/analysis_archive.ts +28 -0
  227. package/tools/analysis_create.ts +55 -0
  228. package/tools/analysis_get.ts +33 -0
  229. package/tools/analysis_link_plan.ts +44 -0
  230. package/tools/analysis_list.ts +48 -0
  231. package/tools/analysis_search.ts +36 -0
  232. package/tools/analysis_update.ts +44 -0
  233. package/tools/plan_approve.ts +31 -0
  234. package/tools/plan_create.ts +58 -0
  235. package/tools/plan_get.ts +40 -0
  236. package/tools/plan_list.ts +37 -0
  237. package/tools/plan_search.ts +34 -0
  238. package/tools/plan_update_status.ts +71 -0
  239. package/tools/session_checkpoint.ts +31 -0
  240. package/tools/session_end.ts +26 -0
  241. package/tools/session_start.ts +43 -0
  242. package/tools/task_create_batch.ts +70 -0
  243. package/tools/task_list.ts +35 -0
  244. package/tools/task_next_for_agent.ts +30 -0
  245. package/tools/task_search.ts +34 -0
  246. package/tools/task_update_status.ts +37 -0
  247. package/tsconfig.json +31 -0
@@ -0,0 +1,361 @@
1
+ | name | description |
2
+ |------|-------------|
3
+ | cloud-infrastructure-security | Use this skill when deploying to cloud platforms, configuring infrastructure, managing IAM policies, setting up logging/monitoring, or implementing CI/CD pipelines. Provides cloud security checklist aligned with best practices. |
4
+
5
+ # Cloud & Infrastructure Security Skill
6
+
7
+ This skill ensures cloud infrastructure, CI/CD pipelines, and deployment configurations follow security best practices and comply with industry standards.
8
+
9
+ ## When to Activate
10
+
11
+ - Deploying applications to cloud platforms (AWS, Vercel, Railway, Cloudflare)
12
+ - Configuring IAM roles and permissions
13
+ - Setting up CI/CD pipelines
14
+ - Implementing infrastructure as code (Terraform, CloudFormation)
15
+ - Configuring logging and monitoring
16
+ - Managing secrets in cloud environments
17
+ - Setting up CDN and edge security
18
+ - Implementing disaster recovery and backup strategies
19
+
20
+ ## Cloud Security Checklist
21
+
22
+ ### 1. IAM & Access Control
23
+
24
+ #### Principle of Least Privilege
25
+
26
+ ```yaml
27
+ # PASS: CORRECT: Minimal permissions
28
+ iam_role:
29
+ permissions:
30
+ - s3:GetObject # Only read access
31
+ - s3:ListBucket
32
+ resources:
33
+ - arn:aws:s3:::my-bucket/* # Specific bucket only
34
+
35
+ # FAIL: WRONG: Overly broad permissions
36
+ iam_role:
37
+ permissions:
38
+ - s3:* # All S3 actions
39
+ resources:
40
+ - "*" # All resources
41
+ ```
42
+
43
+ #### Multi-Factor Authentication (MFA)
44
+
45
+ ```bash
46
+ # ALWAYS enable MFA for root/admin accounts
47
+ aws iam enable-mfa-device \
48
+ --user-name admin \
49
+ --serial-number arn:aws:iam::123456789:mfa/admin \
50
+ --authentication-code1 123456 \
51
+ --authentication-code2 789012
52
+ ```
53
+
54
+ #### Verification Steps
55
+
56
+ - [ ] No root account usage in production
57
+ - [ ] MFA enabled for all privileged accounts
58
+ - [ ] Service accounts use roles, not long-lived credentials
59
+ - [ ] IAM policies follow least privilege
60
+ - [ ] Regular access reviews conducted
61
+ - [ ] Unused credentials rotated or removed
62
+
63
+ ### 2. Secrets Management
64
+
65
+ #### Cloud Secrets Managers
66
+
67
+ ```typescript
68
+ // PASS: CORRECT: Use cloud secrets manager
69
+ import { SecretsManager } from '@aws-sdk/client-secrets-manager';
70
+
71
+ const client = new SecretsManager({ region: 'us-east-1' });
72
+ const secret = await client.getSecretValue({ SecretId: 'prod/api-key' });
73
+ const apiKey = JSON.parse(secret.SecretString).key;
74
+
75
+ // FAIL: WRONG: Hardcoded or in environment variables only
76
+ const apiKey = process.env.API_KEY; // Not rotated, not audited
77
+ ```
78
+
79
+ #### Secrets Rotation
80
+
81
+ ```bash
82
+ # Set up automatic rotation for database credentials
83
+ aws secretsmanager rotate-secret \
84
+ --secret-id prod/db-password \
85
+ --rotation-lambda-arn arn:aws:lambda:region:account:function:rotate \
86
+ --rotation-rules AutomaticallyAfterDays=30
87
+ ```
88
+
89
+ #### Verification Steps
90
+
91
+ - [ ] All secrets stored in cloud secrets manager (AWS Secrets Manager, Vercel Secrets)
92
+ - [ ] Automatic rotation enabled for database credentials
93
+ - [ ] API keys rotated at least quarterly
94
+ - [ ] No secrets in code, logs, or error messages
95
+ - [ ] Audit logging enabled for secret access
96
+
97
+ ### 3. Network Security
98
+
99
+ #### VPC and Firewall Configuration
100
+
101
+ ```terraform
102
+ # PASS: CORRECT: Restricted security group
103
+ resource "aws_security_group" "app" {
104
+ name = "app-sg"
105
+
106
+ ingress {
107
+ from_port = 443
108
+ to_port = 443
109
+ protocol = "tcp"
110
+ cidr_blocks = ["10.0.0.0/16"] # Internal VPC only
111
+ }
112
+
113
+ egress {
114
+ from_port = 443
115
+ to_port = 443
116
+ protocol = "tcp"
117
+ cidr_blocks = ["0.0.0.0/0"] # Only HTTPS outbound
118
+ }
119
+ }
120
+
121
+ # FAIL: WRONG: Open to the internet
122
+ resource "aws_security_group" "bad" {
123
+ ingress {
124
+ from_port = 0
125
+ to_port = 65535
126
+ protocol = "tcp"
127
+ cidr_blocks = ["0.0.0.0/0"] # All ports, all IPs!
128
+ }
129
+ }
130
+ ```
131
+
132
+ #### Verification Steps
133
+
134
+ - [ ] Database not publicly accessible
135
+ - [ ] SSH/RDP ports restricted to VPN/bastion only
136
+ - [ ] Security groups follow least privilege
137
+ - [ ] Network ACLs configured
138
+ - [ ] VPC flow logs enabled
139
+
140
+ ### 4. Logging & Monitoring
141
+
142
+ #### CloudWatch/Logging Configuration
143
+
144
+ ```typescript
145
+ // PASS: CORRECT: Comprehensive logging
146
+ import { CloudWatchLogsClient, CreateLogStreamCommand } from '@aws-sdk/client-cloudwatch-logs';
147
+
148
+ const logSecurityEvent = async (event: SecurityEvent) => {
149
+ await cloudwatch.putLogEvents({
150
+ logGroupName: '/aws/security/events',
151
+ logStreamName: 'authentication',
152
+ logEvents: [{
153
+ timestamp: Date.now(),
154
+ message: JSON.stringify({
155
+ type: event.type,
156
+ userId: event.userId,
157
+ ip: event.ip,
158
+ result: event.result,
159
+ // Never log sensitive data
160
+ })
161
+ }]
162
+ });
163
+ };
164
+ ```
165
+
166
+ #### Verification Steps
167
+
168
+ - [ ] CloudWatch/logging enabled for all services
169
+ - [ ] Failed authentication attempts logged
170
+ - [ ] Admin actions audited
171
+ - [ ] Log retention configured (90+ days for compliance)
172
+ - [ ] Alerts configured for suspicious activity
173
+ - [ ] Logs centralized and tamper-proof
174
+
175
+ ### 5. CI/CD Pipeline Security
176
+
177
+ #### Secure Pipeline Configuration
178
+
179
+ ```yaml
180
+ # PASS: CORRECT: Secure GitHub Actions workflow
181
+ name: Deploy
182
+
183
+ on:
184
+ push:
185
+ branches: [main]
186
+
187
+ jobs:
188
+ deploy:
189
+ runs-on: ubuntu-latest
190
+ permissions:
191
+ contents: read # Minimal permissions
192
+
193
+ steps:
194
+ - uses: actions/checkout@v4
195
+
196
+ # Scan for secrets
197
+ - name: Secret scanning
198
+ uses: trufflesecurity/trufflehog@main
199
+
200
+ # Dependency audit
201
+ - name: Audit dependencies
202
+ run: npm audit --audit-level=high
203
+
204
+ # Use OIDC, not long-lived tokens
205
+ - name: Configure AWS credentials
206
+ uses: aws-actions/configure-aws-credentials@v4
207
+ with:
208
+ role-to-assume: arn:aws:iam::123456789:role/GitHubActionsRole
209
+ aws-region: us-east-1
210
+ ```
211
+
212
+ #### Supply Chain Security
213
+
214
+ ```json
215
+ // package.json - Use lock files and integrity checks
216
+ {
217
+ "scripts": {
218
+ "install": "npm ci", // Use ci for reproducible builds
219
+ "audit": "npm audit --audit-level=moderate",
220
+ "check": "npm outdated"
221
+ }
222
+ }
223
+ ```
224
+
225
+ #### Verification Steps
226
+
227
+ - [ ] OIDC used instead of long-lived credentials
228
+ - [ ] Secrets scanning in pipeline
229
+ - [ ] Dependency vulnerability scanning
230
+ - [ ] Container image scanning (if applicable)
231
+ - [ ] Branch protection rules enforced
232
+ - [ ] Code review required before merge
233
+ - [ ] Signed commits enforced
234
+
235
+ ### 6. Cloudflare & CDN Security
236
+
237
+ #### Cloudflare Security Configuration
238
+
239
+ ```typescript
240
+ // PASS: CORRECT: Cloudflare Workers with security headers
241
+ export default {
242
+ async fetch(request: Request): Promise<Response> {
243
+ const response = await fetch(request);
244
+
245
+ // Add security headers
246
+ const headers = new Headers(response.headers);
247
+ headers.set('X-Frame-Options', 'DENY');
248
+ headers.set('X-Content-Type-Options', 'nosniff');
249
+ headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
250
+ headers.set('Permissions-Policy', 'geolocation=(), microphone=()');
251
+
252
+ return new Response(response.body, {
253
+ status: response.status,
254
+ headers
255
+ });
256
+ }
257
+ };
258
+ ```
259
+
260
+ #### WAF Rules
261
+
262
+ ```bash
263
+ # Enable Cloudflare WAF managed rules
264
+ # - OWASP Core Ruleset
265
+ # - Cloudflare Managed Ruleset
266
+ # - Rate limiting rules
267
+ # - Bot protection
268
+ ```
269
+
270
+ #### Verification Steps
271
+
272
+ - [ ] WAF enabled with OWASP rules
273
+ - [ ] Rate limiting configured
274
+ - [ ] Bot protection active
275
+ - [ ] DDoS protection enabled
276
+ - [ ] Security headers configured
277
+ - [ ] SSL/TLS strict mode enabled
278
+
279
+ ### 7. Backup & Disaster Recovery
280
+
281
+ #### Automated Backups
282
+
283
+ ```terraform
284
+ # PASS: CORRECT: Automated RDS backups
285
+ resource "aws_db_instance" "main" {
286
+ allocated_storage = 20
287
+ engine = "postgres"
288
+
289
+ backup_retention_period = 30 # 30 days retention
290
+ backup_window = "03:00-04:00"
291
+ maintenance_window = "mon:04:00-mon:05:00"
292
+
293
+ enabled_cloudwatch_logs_exports = ["postgresql"]
294
+
295
+ deletion_protection = true # Prevent accidental deletion
296
+ }
297
+ ```
298
+
299
+ #### Verification Steps
300
+
301
+ - [ ] Automated daily backups configured
302
+ - [ ] Backup retention meets compliance requirements
303
+ - [ ] Point-in-time recovery enabled
304
+ - [ ] Backup testing performed quarterly
305
+ - [ ] Disaster recovery plan documented
306
+ - [ ] RPO and RTO defined and tested
307
+
308
+ ## Pre-Deployment Cloud Security Checklist
309
+
310
+ Before ANY production cloud deployment:
311
+
312
+ - [ ] **IAM**: Root account not used, MFA enabled, least privilege policies
313
+ - [ ] **Secrets**: All secrets in cloud secrets manager with rotation
314
+ - [ ] **Network**: Security groups restricted, no public databases
315
+ - [ ] **Logging**: CloudWatch/logging enabled with retention
316
+ - [ ] **Monitoring**: Alerts configured for anomalies
317
+ - [ ] **CI/CD**: OIDC auth, secrets scanning, dependency audits
318
+ - [ ] **CDN/WAF**: Cloudflare WAF enabled with OWASP rules
319
+ - [ ] **Encryption**: Data encrypted at rest and in transit
320
+ - [ ] **Backups**: Automated backups with tested recovery
321
+ - [ ] **Compliance**: GDPR/HIPAA requirements met (if applicable)
322
+ - [ ] **Documentation**: Infrastructure documented, runbooks created
323
+ - [ ] **Incident Response**: Security incident plan in place
324
+
325
+ ## Common Cloud Security Misconfigurations
326
+
327
+ ### S3 Bucket Exposure
328
+
329
+ ```bash
330
+ # FAIL: WRONG: Public bucket
331
+ aws s3api put-bucket-acl --bucket my-bucket --acl public-read
332
+
333
+ # PASS: CORRECT: Private bucket with specific access
334
+ aws s3api put-bucket-acl --bucket my-bucket --acl private
335
+ aws s3api put-bucket-policy --bucket my-bucket --policy file://policy.json
336
+ ```
337
+
338
+ ### RDS Public Access
339
+
340
+ ```terraform
341
+ # FAIL: WRONG
342
+ resource "aws_db_instance" "bad" {
343
+ publicly_accessible = true # NEVER do this!
344
+ }
345
+
346
+ # PASS: CORRECT
347
+ resource "aws_db_instance" "good" {
348
+ publicly_accessible = false
349
+ vpc_security_group_ids = [aws_security_group.db.id]
350
+ }
351
+ ```
352
+
353
+ ## Resources
354
+
355
+ - [AWS Security Best Practices](https://aws.amazon.com/security/best-practices/)
356
+ - [CIS AWS Foundations Benchmark](https://www.cisecurity.org/benchmark/amazon_web_services)
357
+ - [Cloudflare Security Documentation](https://developers.cloudflare.com/security/)
358
+ - [OWASP Cloud Security](https://owasp.org/www-project-cloud-security/)
359
+ - [Terraform Security Best Practices](https://www.terraform.io/docs/cloud/guides/recommended-practices/)
360
+
361
+ **Remember**: Cloud misconfigurations are the leading cause of data breaches. A single exposed S3 bucket or overly permissive IAM policy can compromise your entire infrastructure. Always follow the principle of least privilege and defense in depth.
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: vue-best-practices
3
+ description: MUST be used for Vue.js tasks. Strongly recommends Composition API with `<script setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.
4
+ license: MIT
5
+ metadata:
6
+ author: github.com/vuejs-ai
7
+ version: "18.0.0"
8
+ ---
9
+
10
+ # Vue Best Practices Workflow
11
+
12
+ Use this skill as an instruction set. Follow the workflow in order unless the user explicitly asks for a different order.
13
+
14
+ ## Core Principles
15
+ - **Keep state predictable:** one source of truth, derive everything else.
16
+ - **Make data flow explicit:** Props down, Events up for most cases.
17
+ - **Favor small, focused components:** easier to test, reuse, and maintain.
18
+ - **Avoid unnecessary re-renders:** use computed properties and watchers wisely.
19
+ - **Readability counts:** write clear, self-documenting code.
20
+
21
+ ## 1) Confirm architecture before coding (required)
22
+
23
+ - Default stack: Vue 3 + Composition API + `<script setup lang="ts">`.
24
+ - If the project explicitly uses Options API, load `vue-options-api-best-practices` skill if available.
25
+ - If the project explicitly uses JSX, load `vue-jsx-best-practices` skill if available.
26
+
27
+ ### 1.1 Must-read core references (required)
28
+
29
+ - Before implementing any Vue task, make sure to read and apply these core references:
30
+ - `references/reactivity.md`
31
+ - `references/sfc.md`
32
+ - `references/component-data-flow.md`
33
+ - `references/composables.md`
34
+ - Keep these references in active working context for the entire task, not only when a specific issue appears.
35
+
36
+ ### 1.2 Plan component boundaries before coding (required)
37
+
38
+ Create a brief component map before implementation for any non-trivial feature.
39
+
40
+ - Define each component's single responsibility in one sentence.
41
+ - Keep entry/root and route-level view components as composition surfaces by default.
42
+ - Move feature UI and feature logic out of entry/root/view components unless the task is intentionally a tiny single-file demo.
43
+ - Define props/emits contracts for each child component in the map.
44
+ - Prefer a feature folder layout (`components/<feature>/...`, `composables/use<Feature>.ts`) when adding more than one component.
45
+
46
+ ## 2) Apply essential Vue foundations (required)
47
+
48
+ These are essential, must-know foundations. Apply all of them in every Vue task using the core references already loaded in section `1.1`.
49
+
50
+ ### Reactivity
51
+
52
+ - Must-read reference from `1.1`: [reactivity](references/reactivity.md)
53
+ - Keep source state minimal (`ref`/`reactive`), derive everything possible with `computed`.
54
+ - Use watchers for side effects if needed.
55
+ - Avoid recomputing expensive logic in templates.
56
+
57
+ ### SFC structure and template safety
58
+
59
+ - Must-read reference from `1.1`: [sfc](references/sfc.md)
60
+ - Keep SFC sections in this order: `<script>` → `<template>` → `<style>`.
61
+ - Keep SFC responsibilities focused; split large components.
62
+ - Keep templates declarative; move branching/derivation to script.
63
+ - Apply Vue template safety rules (`v-html`, list rendering, conditional rendering choices).
64
+
65
+ ### Keep components focused
66
+
67
+ Split a component when it has **more than one clear responsibility** (e.g. data orchestration + UI, or multiple independent UI sections).
68
+
69
+ - Prefer **smaller components + composables** over one “mega component”
70
+ - Move **UI sections** into child components (props in, events out).
71
+ - Move **state/side effects** into composables (`useXxx()`).
72
+
73
+ Apply objective split triggers. Split the component if **any** condition is true:
74
+
75
+ - It owns both orchestration/state and substantial presentational markup for multiple sections.
76
+ - It has 3+ distinct UI sections (for example: form, filters, list, footer/status).
77
+ - A template block is repeated or could become reusable (item rows, cards, list entries).
78
+
79
+ Entry/root and route view rule:
80
+
81
+ - Keep entry/root and route view components thin: app shell/layout, provider wiring, and feature composition.
82
+ - Do not place full feature implementations in entry/root/view components when those features contain independent parts.
83
+ - For CRUD/list features (todo, table, catalog, inbox), split at least into:
84
+ - feature container component
85
+ - input/form component
86
+ - list (and/or item) component
87
+ - footer/actions or filter/status component
88
+ - Allow a single-file implementation only for very small throwaway demos; if chosen, explicitly justify why splitting is unnecessary.
89
+
90
+ ### Component data flow
91
+
92
+ - Must-read reference from `1.1`: [component-data-flow](references/component-data-flow.md)
93
+ - Use props down, events up as the primary model.
94
+ - Use `v-model` only for true two-way component contracts.
95
+ - Use provide/inject only for deep-tree dependencies or shared context.
96
+ - Keep contracts explicit and typed with `defineProps`, `defineEmits`, and `InjectionKey` as needed.
97
+
98
+ ### Composables
99
+
100
+ - Must-read reference from `1.1`: [composables](references/composables.md)
101
+ - Extract logic into composables when it is reused, stateful, or side-effect heavy.
102
+ - Keep composable APIs small, typed, and predictable.
103
+ - Separate feature logic from presentational components.
104
+
105
+ ## 3) Consider optional features only when requirements call for them
106
+
107
+ ### 3.1 Standard optional features
108
+
109
+ Do not add these by default. Load the matching reference only when the requirement exists.
110
+
111
+ - Slots: parent needs to control child content/layout -> [component-slots](references/component-slots.md)
112
+ - Fallthrough attributes: wrapper/base components must forward attrs/events safely -> [component-fallthrough-attrs](references/component-fallthrough-attrs.md)
113
+ - Built-in component `<KeepAlive>` for stateful view caching -> [component-keep-alive](references/component-keep-alive.md)
114
+ - Built-in component `<Teleport>` for overlays/portals -> [component-teleport](references/component-teleport.md)
115
+ - Built-in component `<Suspense>` for async subtree fallback boundaries -> [component-suspense](references/component-suspense.md)
116
+ - Animation-related features: pick the simplest approach that matches the required motion behavior.
117
+ - Built-in component `<Transition>` for enter/leave effects -> [transition](references/component-transition.md)
118
+ - Built-in component `<TransitionGroup>` for animated list mutations -> [transition-group](references/component-transition-group.md)
119
+ - Class-based animation for non-enter/leave effects -> [animation-class-based-technique](references/animation-class-based-technique.md)
120
+ - State-driven animation for user-input-driven animation -> [animation-state-driven-technique](references/animation-state-driven-technique.md)
121
+
122
+ ### 3.2 Less-common optional features
123
+
124
+ Use these only when there is explicit product or technical need.
125
+
126
+ - Directives: behavior is DOM-specific and not a good composable/component fit -> [directives](references/directives.md)
127
+ - Async components: heavy/rarely-used UI should be lazy loaded -> [component-async](references/component-async.md)
128
+ - Render functions only when templates cannot express the requirement -> [render-functions](references/render-functions.md)
129
+ - Plugins when behavior must be installed app-wide -> [plugins](references/plugins.md)
130
+ - State management patterns: app-wide shared state crosses feature boundaries -> [state-management](references/state-management.md)
131
+
132
+ ## 4) Run performance optimization after behavior is correct
133
+
134
+ Performance work is a post-functionality pass. Do not optimize before core behavior is implemented and verified.
135
+
136
+ - Large list rendering bottlenecks -> [perf-virtualize-large-lists](references/perf-virtualize-large-lists.md)
137
+ - Static subtrees re-rendering unnecessarily -> [perf-v-once-v-memo-directives](references/perf-v-once-v-memo-directives.md)
138
+ - Over-abstraction in hot list paths -> [perf-avoid-component-abstraction-in-lists](references/perf-avoid-component-abstraction-in-lists.md)
139
+ - Expensive updates triggered too often -> [updated-hook-performance](references/updated-hook-performance.md)
140
+
141
+ ## 5) Final self-check before finishing
142
+
143
+ - Core behavior works and matches requirements.
144
+ - All must-read references were read and applied.
145
+ - Reactivity model is minimal and predictable.
146
+ - SFC structure and template rules are followed.
147
+ - Components are focused and well-factored, splitting when needed.
148
+ - Entry/root and route view components remain composition surfaces unless there is an explicit small-demo exception.
149
+ - Component split decisions are explicit and defensible (responsibility boundaries are clear).
150
+ - Data flow contracts are explicit and typed.
151
+ - Composables are used where reuse/complexity justifies them.
152
+ - Moved state/side effects into composables if applicable
153
+ - Optional features are used only when requirements demand them.
154
+ - Performance changes were applied only after functionality was complete.