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,189 @@
1
+ # Threat Modeling Guide
2
+
3
+ Systematic methodology for identifying and prioritizing security threats in Go applications.
4
+
5
+ ## STRIDE Methodology
6
+
7
+ Apply STRIDE to every element in your system's data flow diagram. Each element type is susceptible to specific threat categories:
8
+
9
+ ### STRIDE per Element Matrix
10
+
11
+ | DFD Element | S | T | R | I | D | E |
12
+ | ------------------------------------- | --- | --- | --- | --- | --- | --- |
13
+ | External Entity (user, API client) | X | | X | | | |
14
+ | Process (HTTP handler, gRPC service) | X | X | X | X | X | X |
15
+ | Data Store (database, cache, file) | | X | X | X | X | |
16
+ | Data Flow (HTTP, gRPC, message queue) | | X | | X | X | |
17
+
18
+ ### Go-Specific STRIDE Analysis
19
+
20
+ **Spoofing** — Can an attacker impersonate a user or service?
21
+
22
+ ```go
23
+ // Check: Is every endpoint behind authentication?
24
+ // Check: Are JWT tokens validated (algorithm, issuer, expiry)?
25
+ // Check: Is mTLS configured for service-to-service calls?
26
+ r.Use(authMiddleware) // every route group must have auth
27
+ ```
28
+
29
+ **Tampering** — Can data be modified in transit or at rest?
30
+
31
+ ```go
32
+ // Check: Are all external inputs validated?
33
+ // Check: Is HMAC used for webhook/callback verification?
34
+ mac := hmac.New(sha256.New, key)
35
+ mac.Write(payload)
36
+ expected := mac.Sum(nil)
37
+ if !hmac.Equal(signature, expected) {
38
+ return errors.New("tampered payload")
39
+ }
40
+ ```
41
+
42
+ **Repudiation** — Can a user deny performing an action?
43
+
44
+ ```go
45
+ // Check: Are all security-relevant actions logged with structured data?
46
+ logger.Info("action_performed",
47
+ "user_id", userID,
48
+ "action", "delete_account",
49
+ "ip", r.RemoteAddr,
50
+ "timestamp", time.Now().UTC(),
51
+ )
52
+ ```
53
+
54
+ **Information Disclosure** — Can sensitive data leak?
55
+
56
+ ```go
57
+ // Check: Are error messages generic to clients?
58
+ // Check: Are logs free of PII?
59
+ // Check: Is TLS configured (no InsecureSkipVerify)?
60
+ // Check: Are debug endpoints (pprof) disabled in production?
61
+ ```
62
+
63
+ **Denial of Service** — Can the service be overwhelmed?
64
+
65
+ ```go
66
+ // Check: Are timeouts set on the HTTP server?
67
+ // Check: Are request body sizes limited?
68
+ // Check: Is rate limiting in place?
69
+ server := &http.Server{
70
+ ReadTimeout: 5 * time.Second,
71
+ WriteTimeout: 10 * time.Second,
72
+ MaxHeaderBytes: 1 << 20, // 1MB
73
+ }
74
+ ```
75
+
76
+ **Elevation of Privilege** — Can a user gain unauthorized access?
77
+
78
+ ```go
79
+ // Check: Is authorization checked server-side on every request?
80
+ // Check: Are object references validated (no IDOR)?
81
+ // Check: Are admin routes properly protected?
82
+ if !user.HasPermission("admin:write") {
83
+ http.Error(w, "Forbidden", http.StatusForbidden)
84
+ return
85
+ }
86
+ ```
87
+
88
+ ---
89
+
90
+ ## DREAD Risk Scoring
91
+
92
+ Score each identified threat to prioritize remediation:
93
+
94
+ | Factor | 1-3 (Low) | 4-6 (Medium) | 7-10 (High) |
95
+ | --- | --- | --- | --- |
96
+ | **D**amage | Minor info disclosure | Partial data breach | Full system compromise, data destruction |
97
+ | **R**eproducibility | Timing-dependent, hard to reproduce | Reproducible with some effort | Always reproducible, automated tools exist |
98
+ | **E**xploitability | Custom exploit, advanced skills needed | Basic tools available | No skills required, public exploit exists |
99
+ | **A**ffected users | Individual user | Subset of users | All users |
100
+ | **D**iscoverability | Requires insider knowledge | Found via scanning | Publicly documented, obvious |
101
+
102
+ **Score** = (D + R + E + A + D) / 5. Risk levels: **8-10 Critical**, **6-7.9 High**, **4-5.9 Medium**, **1-3.9 Low**.
103
+
104
+ ### Example: SQL Injection in Login Handler
105
+
106
+ | Factor | Score | Justification |
107
+ | --------------- | ----- | ------------------------------------------ |
108
+ | Damage | 9 | Full database access, credential theft |
109
+ | Reproducibility | 9 | Consistent, automated tools exist (sqlmap) |
110
+ | Exploitability | 8 | Well-documented attack, easy tooling |
111
+ | Affected Users | 10 | All users with accounts |
112
+ | Discoverability | 7 | Automated scanners detect easily |
113
+
114
+ **DREAD Score: 8.6 — Critical. Immediate remediation required.**
115
+
116
+ ---
117
+
118
+ ## Trust Boundary Analysis
119
+
120
+ Map where untrusted data enters your Go application:
121
+
122
+ ```
123
+ ┌─────────────────────────────────────┐
124
+ │ TRUST BOUNDARY │
125
+ │ │
126
+ Internet ──→ [LB/WAF] ──→ [Go HTTP Server] │
127
+ │ │ │
128
+ │ [Middleware] │
129
+ │ - Auth (JWT/session) │
130
+ │ - Rate limiting │
131
+ │ - Input validation │
132
+ │ - Security headers │
133
+ │ │ │
134
+ │ [Service Layer] ──→ [Cache] │
135
+ │ │ │
136
+ │ [Database] (parameterized queries) │
137
+ │ │
138
+ └──────────┬──────────────────────────┘
139
+
140
+ External APIs (mTLS)
141
+ ```
142
+
143
+ Every arrow crossing the trust boundary needs:
144
+
145
+ 1. **Authentication** — who is making this request?
146
+ 2. **Input validation** — is the data well-formed and within bounds?
147
+ 3. **Authorization** — is this caller allowed to perform this action on this resource?
148
+
149
+ ---
150
+
151
+ ## OWASP Top 10 Mapping for Go
152
+
153
+ | Rank | Vulnerability | STRIDE | Go Defense |
154
+ | --- | --- | --- | --- |
155
+ | A01 | Broken Access Control | E | Server-side authz middleware, RBAC, IDOR checks |
156
+ | A02 | Cryptographic Failures | I | `crypto/aes` GCM, `crypto/rand`, TLS 1.2+ |
157
+ | A03 | Injection | T, E | `database/sql` placeholders, `exec.Command` separate args, `html/template` |
158
+ | A04 | Insecure Design | All | Threat modeling with STRIDE, defense-in-depth |
159
+ | A05 | Security Misconfiguration | I, E | Server timeouts, TLS config, no `InsecureSkipVerify`, no exposed pprof |
160
+ | A06 | Vulnerable Components | All | `govulncheck`, Dependabot/Renovate, `go.sum` verification |
161
+ | A07 | Authentication Failures | S, E | Argon2id/bcrypt, JWT validation (algorithm pinning), MFA |
162
+ | A08 | Software/Data Integrity | T | Module checksums (`go.sum`), signed releases, CI verification |
163
+ | A09 | Logging Failures | R | Structured logging (`log/slog`), audit trails, no PII |
164
+ | A10 | SSRF | I, T | URL allowlists, block internal IPs and metadata endpoints |
165
+
166
+ ---
167
+
168
+ ## Conducting a Threat Model
169
+
170
+ 1. **Scope** — identify system boundaries, assets to protect, and threat actors
171
+ 2. **Diagram** — draw a data flow diagram with trust boundaries (external entities, processes, data stores, data flows)
172
+ 3. **STRIDE** — apply STRIDE to each DFD element using the matrix above
173
+ 4. **Score** — rate each threat with DREAD
174
+ 5. **Prioritize** — fix Critical/High first; document accepted risks with explicit justification
175
+ 6. **Verify** — run `gosec ./...`, `govulncheck ./...`, `go test -race ./...` to validate mitigations
176
+ 7. **Iterate** — update the model when the system changes (new endpoints, new data flows, new integrations)
177
+
178
+ ---
179
+
180
+ ## Vulnerability Severity Matrix
181
+
182
+ Use when no DREAD data is available — cross-reference impact with exploitability:
183
+
184
+ | Impact \ Exploitability | Easy | Moderate | Difficult |
185
+ | ----------------------- | -------- | -------- | --------- |
186
+ | Critical | Critical | Critical | High |
187
+ | High | Critical | High | Medium |
188
+ | Medium | High | Medium | Low |
189
+ | Low | Medium | Low | Low |