mishkan-harness 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 (186) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +205 -0
  3. package/bin/mishkan.js +221 -0
  4. package/docs/design/MISHKAN_agent_aliases.md +140 -0
  5. package/docs/design/MISHKAN_decisions.md +172 -0
  6. package/docs/design/MISHKAN_harness_design.md +820 -0
  7. package/docs/design/MISHKAN_ontology.md +87 -0
  8. package/docs/design/MISHKAN_token_optimisation.md +181 -0
  9. package/docs/engineer/README.md +37 -0
  10. package/docs/engineer/profile.example.md +79 -0
  11. package/docs/usage/01-installation.md +178 -0
  12. package/docs/usage/02-project-init.md +151 -0
  13. package/docs/usage/03-orchestration.md +218 -0
  14. package/docs/usage/04-memory-layer.md +201 -0
  15. package/docs/usage/05-selective-ingest.md +177 -0
  16. package/docs/usage/06-llm-providers.md +195 -0
  17. package/docs/usage/07-troubleshooting.md +316 -0
  18. package/docs/usage/08-glossary.md +154 -0
  19. package/docs/usage/09-workflows.md +123 -0
  20. package/docs/usage/README.md +77 -0
  21. package/package.json +43 -0
  22. package/payload/install/settings.hooks.json +47 -0
  23. package/payload/mishkan/AGENT_SPEC.md +154 -0
  24. package/payload/mishkan/agents/ahikam.md +58 -0
  25. package/payload/mishkan/agents/aholiab.md +68 -0
  26. package/payload/mishkan/agents/asaph.md +73 -0
  27. package/payload/mishkan/agents/baruch.md +88 -0
  28. package/payload/mishkan/agents/benaiah.md +76 -0
  29. package/payload/mishkan/agents/bezalel.md +83 -0
  30. package/payload/mishkan/agents/caleb.md +74 -0
  31. package/payload/mishkan/agents/deborah.md +63 -0
  32. package/payload/mishkan/agents/elasah.md +58 -0
  33. package/payload/mishkan/agents/eliashib.md +68 -0
  34. package/payload/mishkan/agents/ezra.md +69 -0
  35. package/payload/mishkan/agents/hanun.md +64 -0
  36. package/payload/mishkan/agents/hiram.md +68 -0
  37. package/payload/mishkan/agents/hizkiah.md +76 -0
  38. package/payload/mishkan/agents/huldah.md +59 -0
  39. package/payload/mishkan/agents/huram.md +66 -0
  40. package/payload/mishkan/agents/hushai.md +59 -0
  41. package/payload/mishkan/agents/igal.md +58 -0
  42. package/payload/mishkan/agents/ira.md +86 -0
  43. package/payload/mishkan/agents/jahaziel.md +71 -0
  44. package/payload/mishkan/agents/jakin.md +66 -0
  45. package/payload/mishkan/agents/jehonathan.md +62 -0
  46. package/payload/mishkan/agents/jehoshaphat.md +68 -0
  47. package/payload/mishkan/agents/joab.md +71 -0
  48. package/payload/mishkan/agents/joah.md +62 -0
  49. package/payload/mishkan/agents/maaseiah.md +61 -0
  50. package/payload/mishkan/agents/meremoth.md +65 -0
  51. package/payload/mishkan/agents/meshullam.md +67 -0
  52. package/payload/mishkan/agents/nathan.md +70 -0
  53. package/payload/mishkan/agents/nehemiah.md +93 -0
  54. package/payload/mishkan/agents/obed.md +60 -0
  55. package/payload/mishkan/agents/oholiab.md +67 -0
  56. package/payload/mishkan/agents/palal.md +63 -0
  57. package/payload/mishkan/agents/phinehas.md +73 -0
  58. package/payload/mishkan/agents/rehum.md +60 -0
  59. package/payload/mishkan/agents/salma.md +69 -0
  60. package/payload/mishkan/agents/seraiah.md +73 -0
  61. package/payload/mishkan/agents/shallum.md +66 -0
  62. package/payload/mishkan/agents/shaphan.md +64 -0
  63. package/payload/mishkan/agents/shemaiah.md +67 -0
  64. package/payload/mishkan/agents/shevna.md +58 -0
  65. package/payload/mishkan/agents/uriah.md +70 -0
  66. package/payload/mishkan/agents/zaccur.md +58 -0
  67. package/payload/mishkan/agents/zadok.md +67 -0
  68. package/payload/mishkan/agents/zerubbabel.md +69 -0
  69. package/payload/mishkan/cognee/.env.curated.example +61 -0
  70. package/payload/mishkan/cognee/.env.example +165 -0
  71. package/payload/mishkan/cognee/Dockerfile +50 -0
  72. package/payload/mishkan/cognee/README.md +129 -0
  73. package/payload/mishkan/cognee/docker-compose.curated-ui.yml +61 -0
  74. package/payload/mishkan/cognee/docker-compose.curated.yml +85 -0
  75. package/payload/mishkan/cognee/docker-compose.hardening.yml +16 -0
  76. package/payload/mishkan/cognee/docker-compose.selfhosted.yml +114 -0
  77. package/payload/mishkan/cognee/docker-compose.ui.yml +70 -0
  78. package/payload/mishkan/cognee/docker-compose.yml +71 -0
  79. package/payload/mishkan/cognee/ingest-curated.py +92 -0
  80. package/payload/mishkan/commands/dep-audit.md +24 -0
  81. package/payload/mishkan/commands/mishkan-init.md +25 -0
  82. package/payload/mishkan/commands/mishkan-resume.md +21 -0
  83. package/payload/mishkan/commands/promote.md +19 -0
  84. package/payload/mishkan/commands/sefer-pull.md +19 -0
  85. package/payload/mishkan/commands/sprint-close.md +21 -0
  86. package/payload/mishkan/config/curated-library.yaml +113 -0
  87. package/payload/mishkan/config/improvement-queries.md +29 -0
  88. package/payload/mishkan/config/model-routing.yaml +87 -0
  89. package/payload/mishkan/config/projects.yaml +38 -0
  90. package/payload/mishkan/evals/baruch/README.md +93 -0
  91. package/payload/mishkan/evals/baruch/fixtures/invalid/bad-outcome-enum.json +15 -0
  92. package/payload/mishkan/evals/baruch/fixtures/invalid/bad-sprint-pattern.json +15 -0
  93. package/payload/mishkan/evals/baruch/fixtures/invalid/bad-trigger-enum.json +15 -0
  94. package/payload/mishkan/evals/baruch/fixtures/invalid/malformed-json.json +7 -0
  95. package/payload/mishkan/evals/baruch/fixtures/invalid/missing-required-field.json +14 -0
  96. package/payload/mishkan/evals/baruch/fixtures/valid/blocked-vendor.json +15 -0
  97. package/payload/mishkan/evals/baruch/fixtures/valid/curated-shortcircuit.json +15 -0
  98. package/payload/mishkan/evals/baruch/fixtures/valid/partial-no-write.json +14 -0
  99. package/payload/mishkan/evals/baruch/fixtures/valid/resolved-cross-harness.json +15 -0
  100. package/payload/mishkan/evals/baruch/golden_case/expected.yaml +35 -0
  101. package/payload/mishkan/evals/baruch/golden_case/input.yaml +47 -0
  102. package/payload/mishkan/evals/baruch/golden_case/produced.json +15 -0
  103. package/payload/mishkan/evals/baruch/run.sh +129 -0
  104. package/payload/mishkan/hooks/model-route.py +96 -0
  105. package/payload/mishkan/hooks/post-tool-observe.sh +45 -0
  106. package/payload/mishkan/hooks/pre-tool-security.sh +150 -0
  107. package/payload/mishkan/hooks/session-start.sh +20 -0
  108. package/payload/mishkan/hooks/stop-reporter.sh +29 -0
  109. package/payload/mishkan/ontology.md +87 -0
  110. package/payload/mishkan/rules/backend/yasad.md +23 -0
  111. package/payload/mishkan/rules/common/dependencies.md +53 -0
  112. package/payload/mishkan/rules/common/quality.md +16 -0
  113. package/payload/mishkan/rules/common/security.md +20 -0
  114. package/payload/mishkan/rules/documentation/sefer.md +19 -0
  115. package/payload/mishkan/rules/frontend/panim.md +21 -0
  116. package/payload/mishkan/rules/infrastructure/migdal.md +22 -0
  117. package/payload/mishkan/scripts/dependency-audit.sh +171 -0
  118. package/payload/mishkan/scripts/ensure-curated-box.sh +66 -0
  119. package/payload/mishkan/scripts/mishkan-ingest.sh +92 -0
  120. package/payload/mishkan/scripts/observability-aggregate.sh +57 -0
  121. package/payload/mishkan/scripts/seed-curated-library.sh +62 -0
  122. package/payload/mishkan/scripts/sync-profile.sh +65 -0
  123. package/payload/mishkan/scripts/validate-research-log.sh +108 -0
  124. package/payload/mishkan/skills/asaph-a11y-seo-craft/SKILL.md +289 -0
  125. package/payload/mishkan/skills/baruch-research-reporting-craft/SKILL.md +460 -0
  126. package/payload/mishkan/skills/benaiah-devsecops-craft/SKILL.md +329 -0
  127. package/payload/mishkan/skills/bezalel-cto-craft/SKILL.md +391 -0
  128. package/payload/mishkan/skills/caleb-web-research-craft/SKILL.md +306 -0
  129. package/payload/mishkan/skills/cognee-promote/SKILL.md +40 -0
  130. package/payload/mishkan/skills/cognee-quickstart/SKILL.md +66 -0
  131. package/payload/mishkan/skills/context-compress/SKILL.md +36 -0
  132. package/payload/mishkan/skills/deborah-ux-craft/SKILL.md +295 -0
  133. package/payload/mishkan/skills/dependency-audit/SKILL.md +59 -0
  134. package/payload/mishkan/skills/dependency-vetting/SKILL.md +59 -0
  135. package/payload/mishkan/skills/documentation-craft/SKILL.md +468 -0
  136. package/payload/mishkan/skills/ezra-research-formulation-craft/SKILL.md +319 -0
  137. package/payload/mishkan/skills/hanun-observability-craft/SKILL.md +312 -0
  138. package/payload/mishkan/skills/hiram-ui-craft/SKILL.md +334 -0
  139. package/payload/mishkan/skills/hizkiah-implementation-craft/SKILL.md +701 -0
  140. package/payload/mishkan/skills/hushai-security-advisor-craft/SKILL.md +282 -0
  141. package/payload/mishkan/skills/ira-code-security-craft/SKILL.md +553 -0
  142. package/payload/mishkan/skills/jakin-intent-clarification-craft/SKILL.md +299 -0
  143. package/payload/mishkan/skills/jehonathan-publication-craft/SKILL.md +262 -0
  144. package/payload/mishkan/skills/joab-app-security-craft/SKILL.md +266 -0
  145. package/payload/mishkan/skills/meremoth-devops-craft/SKILL.md +298 -0
  146. package/payload/mishkan/skills/meshullam-infra-design-craft/SKILL.md +302 -0
  147. package/payload/mishkan/skills/mishkan-ingest/SKILL.md +65 -0
  148. package/payload/mishkan/skills/mishkan-init/SKILL.md +65 -0
  149. package/payload/mishkan/skills/nathan-architecture-craft/SKILL.md +547 -0
  150. package/payload/mishkan/skills/nehemiah-pm-craft/SKILL.md +484 -0
  151. package/payload/mishkan/skills/obed-asset-pipeline-craft/SKILL.md +286 -0
  152. package/payload/mishkan/skills/oholiab-design-system-craft/SKILL.md +334 -0
  153. package/payload/mishkan/skills/palal-systems-craft/SKILL.md +281 -0
  154. package/payload/mishkan/skills/qa-evaluation-craft/SKILL.md +406 -0
  155. package/payload/mishkan/skills/rehum-sre-advisor-craft/SKILL.md +228 -0
  156. package/payload/mishkan/skills/reporter-discipline-craft/SKILL.md +351 -0
  157. package/payload/mishkan/skills/research-pipeline/SKILL.md +55 -0
  158. package/payload/mishkan/skills/salma-frontend-implementation-craft/SKILL.md +369 -0
  159. package/payload/mishkan/skills/sefer-pull/SKILL.md +37 -0
  160. package/payload/mishkan/skills/shallum-database-craft/SKILL.md +347 -0
  161. package/payload/mishkan/skills/shaphan-summarisation-craft/SKILL.md +271 -0
  162. package/payload/mishkan/skills/shemaiah-evaluation-craft/SKILL.md +342 -0
  163. package/payload/mishkan/skills/sprint-report/SKILL.md +28 -0
  164. package/payload/mishkan/skills/team-lead-craft/SKILL.md +457 -0
  165. package/payload/mishkan/skills/zadok-contract-craft/SKILL.md +520 -0
  166. package/payload/mishkan/templates/case-node.schema.json +22 -0
  167. package/payload/mishkan/templates/mcp.json +22 -0
  168. package/payload/mishkan/templates/observability-log.schema.json +24 -0
  169. package/payload/mishkan/templates/project-CLAUDE.md +47 -0
  170. package/payload/mishkan/templates/research-log.schema.json +40 -0
  171. package/payload/mishkan/templates/settings.json +12 -0
  172. package/payload/mishkan/templates/settings.local.json +6 -0
  173. package/payload/mishkan/templates/sprint-state.schema.json +47 -0
  174. package/payload/mishkan/templates/team-report.schema.json +50 -0
  175. package/payload/mishkan/templates/user-CLAUDE.md +62 -0
  176. package/payload/mishkan/workflows/README.md +88 -0
  177. package/payload/mishkan/workflows/mishkan-architecture-panel.js +156 -0
  178. package/payload/mishkan/workflows/mishkan-codebase-audit.js +188 -0
  179. package/payload/mishkan/workflows/mishkan-deep-research.js +251 -0
  180. package/payload/mishkan/workflows/mishkan-init.js +156 -0
  181. package/payload/mishkan/workflows/mishkan-migration-wave.js +180 -0
  182. package/payload/mishkan/workflows/mishkan-release-readiness.js +163 -0
  183. package/payload/mishkan/workflows/mishkan-sprint-close.js +112 -0
  184. package/payload/user/CLAUDE.md +62 -0
  185. package/payload/user/rules/engineer-standards.md +66 -0
  186. package/payload/user/rules/y4nn-standards.md +167 -0
@@ -0,0 +1,302 @@
1
+ ---
2
+ name: meshullam-infra-design-craft
3
+ description: How Meshullam designs infrastructure topology — C4 diagrams, Docker Compose / Terraform / Helm structure, network layout, service connections, the no-:latest rule and resource-tagging discipline, the explicit-trade-off requirement on every topology decision. Invoke when an IaC change or topology decision is in scope.
4
+ ---
5
+
6
+ # Meshullam — Infrastructure Design Craft
7
+
8
+ > Not a checklist. How the one who repaired multiple sections of the
9
+ > wall reasons when handed a topology decision — what he designs, what
10
+ > he refuses to leave implicit, and the rule that every connection is
11
+ > deliberate.
12
+
13
+ Invoked when infrastructure topology, IaC structure, network layout,
14
+ or service-connection decisions are in scope.
15
+
16
+ ---
17
+
18
+ ## 1. The rule above all other rules
19
+
20
+ **Every connection in the topology is deliberate and named.**
21
+
22
+ Three corollaries:
23
+
24
+ - **No implicit connections.** A service that can reach another
25
+ service does so because the topology allows it, not because
26
+ nothing blocks it. Default-deny network.
27
+ - **No undocumented IaC drift.** Whatever lives in Terraform /
28
+ Compose / Helm is the source of truth; manual changes outside it
29
+ are debt.
30
+ - **No prod execution.** IaC is *applied* by Y4NN; Meshullam
31
+ produces the plan and the diff.
32
+
33
+ ---
34
+
35
+ ## 2. C4 diagrams — the four levels
36
+
37
+ C4 by Simon Brown. Every infrastructure design ships diagrams at
38
+ the relevant levels:
39
+
40
+ | Level | Audience | What it shows |
41
+ |---|---|---|
42
+ | **L1 Context** | everyone | the system, its users, its external integrations |
43
+ | **L2 Containers** | engineers + ops | the deployable units (services, databases, queues) |
44
+ | **L3 Components** | engineers in the team | inside one container, the major components |
45
+ | **L4 Code** | rare | class-level; usually not maintained |
46
+
47
+ Three rules:
48
+
49
+ - **L1 always.** Without context, no other level lands.
50
+ - **L2 for any project shipping more than one container.** The
51
+ containers and their arrows are the deploy topology.
52
+ - **L3 for the complex services only.** A simple FastAPI service
53
+ does not need L3.
54
+
55
+ Diagrams live in `docs/diagrams/C4/` with the source (PlantUML,
56
+ Structurizr, or Mermaid) committed alongside the rendered output.
57
+
58
+ ---
59
+
60
+ ## 3. Docker Compose — production-shaped from day one
61
+
62
+ Three rules:
63
+
64
+ - **Pinned images.** Every service `image: registry/...:1.2.3@sha256:...`.
65
+ Never `:latest`.
66
+ - **Health checks.** Every long-running service has `healthcheck:`;
67
+ orchestration waits for healthy before considering ready.
68
+ - **Networks named and scoped.** No service is on the default network
69
+ by accident; networks are declared and services join them
70
+ explicitly.
71
+
72
+ ```yaml
73
+ services:
74
+ api:
75
+ image: registry.example.com/api:1.2.3@sha256:...
76
+ networks: [backend, ingress]
77
+ healthcheck:
78
+ test: ["CMD", "curl", "-f", "http://localhost:8000/healthz"]
79
+ interval: 10s
80
+ timeout: 3s
81
+ retries: 3
82
+ start_period: 30s
83
+ deploy:
84
+ resources:
85
+ limits: { cpus: "1.0", memory: 512M }
86
+ reservations: { cpus: "0.25", memory: 128M }
87
+ db:
88
+ image: postgres:16.3-alpine@sha256:...
89
+ networks: [backend]
90
+ # ... persistent volume, env via SOPS, etc.
91
+
92
+ networks:
93
+ backend:
94
+ driver: bridge
95
+ internal: true # no internet egress
96
+ ingress:
97
+ driver: bridge
98
+ ```
99
+
100
+ ---
101
+
102
+ ## 4. Terraform — module discipline
103
+
104
+ Three rules:
105
+
106
+ - **One module per concept.** A module for `vpc`, a module for
107
+ `eks_cluster`, a module for `rds_postgres`. Not one mega-module.
108
+ - **State backends are remote.** Local state is debt; remote
109
+ backend (S3 / GCS / Azure Blob) with locking.
110
+ - **Plan before apply.** `terraform plan -out=plan.bin` reviewed
111
+ before `terraform apply plan.bin`. Y4NN runs apply.
112
+
113
+ Module structure:
114
+
115
+ ```
116
+ modules/
117
+ vpc/
118
+ main.tf
119
+ variables.tf
120
+ outputs.tf
121
+ README.md
122
+ eks_cluster/
123
+ ...
124
+ rds_postgres/
125
+ ...
126
+ environments/
127
+ staging/
128
+ main.tf # composes modules with staging values
129
+ backend.tf
130
+ production/
131
+ main.tf
132
+ backend.tf
133
+ ```
134
+
135
+ ---
136
+
137
+ ## 5. Helm — chart hygiene
138
+
139
+ Three rules:
140
+
141
+ - **Values are typed via JSON Schema** (`values.schema.json`).
142
+ Untyped values mean drift and silent breakage on upgrade.
143
+ - **Resource limits everywhere.** Every container in every chart
144
+ has `resources:` with both requests and limits.
145
+ - **NetworkPolicy by default.** Every chart ships a NetworkPolicy
146
+ that defaults to deny; opens connections only where needed.
147
+
148
+ ---
149
+
150
+ ## 6. Network design — default deny
151
+
152
+ The default for every network in every environment is **deny**.
153
+ Connections are opened deliberately, named, and documented.
154
+
155
+ Three rules:
156
+
157
+ - **Service mesh or NetworkPolicy enforces the deny.** Calico,
158
+ Cilium, Istio, Linkerd — pick one and enforce.
159
+ - **Egress filtered.** A service that does not call out should
160
+ not have internet egress.
161
+ - **No "temporary" rules.** A rule labelled temporary becomes
162
+ permanent. If the rule is conditional, the condition is named
163
+ and a re-review is scheduled.
164
+
165
+ ---
166
+
167
+ ## 7. The /plan trigger
168
+
169
+ `/plan` is mandatory before any IaC change or topology decision.
170
+ The plan surfaces:
171
+
172
+ - The change (Terraform diff, Compose diff, Helm values diff).
173
+ - The blast radius (which services affected, which environments).
174
+ - The rollback path (always; no rollback = no apply).
175
+ - The Mishmar review status (Phinehas/Benaiah have seen this).
176
+
177
+ ---
178
+
179
+ ## 8. Worked example — designing the topology for a new service
180
+
181
+ A new `notifications` service is being added. Meshullam's path:
182
+
183
+ **L1 Context update.** Add `notifications` to the system context;
184
+ external integration with email-provider SaaS.
185
+
186
+ **L2 Containers update.**
187
+
188
+ ```
189
+ notifications/ ← new container
190
+ ├─ ingress? no (internal-only service)
191
+ ├─ network backend
192
+ ├─ talks to queue (Redis), event-bus (NATS), email-provider SaaS
193
+ ├─ talked to by api, scheduler
194
+ └─ persistence none (stateless; queue is the durability)
195
+ ```
196
+
197
+ **Compose addition:**
198
+
199
+ ```yaml
200
+ notifications:
201
+ image: registry.example.com/notifications:1.0.0@sha256:...
202
+ networks: [backend, egress_email_only]
203
+ healthcheck: { test: [CMD, /app/healthz], interval: 10s }
204
+ depends_on:
205
+ redis: { condition: service_healthy }
206
+ nats: { condition: service_healthy }
207
+ deploy:
208
+ resources:
209
+ limits: { cpus: "0.5", memory: 256M }
210
+ reservations: { cpus: "0.1", memory: 64M }
211
+
212
+ networks:
213
+ egress_email_only:
214
+ driver: bridge
215
+ # firewalld rule scopes egress to email-provider domain
216
+ ```
217
+
218
+ **NetworkPolicy (K8s, for the prod environment):**
219
+
220
+ ```yaml
221
+ apiVersion: networking.k8s.io/v1
222
+ kind: NetworkPolicy
223
+ metadata: { name: notifications-default-deny }
224
+ spec:
225
+ podSelector: { matchLabels: { app: notifications } }
226
+ policyTypes: [Ingress, Egress]
227
+ ingress:
228
+ - from:
229
+ - podSelector: { matchLabels: { app: api } }
230
+ - podSelector: { matchLabels: { app: scheduler } }
231
+ ports: [{ port: 8000 }]
232
+ egress:
233
+ - to: [{ podSelector: { matchLabels: { app: redis } }}]
234
+ ports: [{ port: 6379 }]
235
+ - to: [{ podSelector: { matchLabels: { app: nats } }}]
236
+ ports: [{ port: 4222 }]
237
+ - to: [{ namespaceSelector: { matchLabels: { name: egress-email } }}]
238
+ ports: [{ port: 587 }]
239
+ ```
240
+
241
+ **Mishmar review:** Benaiah reviews the new external integration
242
+ (SaaS email provider) for the trust-boundary section of THREAT_MODEL.md.
243
+
244
+ What Meshullam did:
245
+
246
+ - Updated the C4 diagrams.
247
+ - Named every connection.
248
+ - Scoped egress.
249
+ - Wrote the NetworkPolicy.
250
+ - Routed to Benaiah for threat-model review.
251
+
252
+ What Meshullam did NOT:
253
+
254
+ - Apply the Terraform.
255
+ - Skip the NetworkPolicy as "we'll add later."
256
+ - Use a default-allow network.
257
+
258
+ ---
259
+
260
+ ## 9. The recurring traps Meshullam rejects on sight
261
+
262
+ 1. **"`:latest` is fine for staging."** §3. No.
263
+
264
+ 2. **"We'll add the healthcheck later."** §3. Healthcheck is part
265
+ of the service definition, not a follow-up.
266
+
267
+ 3. **"The default network is fine; everything talks to everything."**
268
+ §6. No. Default deny.
269
+
270
+ 4. **"Terraform local state is fine for now."** §4. Remote backend
271
+ from day one; migrating later is painful.
272
+
273
+ 5. **"This is a one-off; no module needed."** Maybe. The first
274
+ one-off becomes the second one-off. Modularise on the second
275
+ instance.
276
+
277
+ 6. **"I'll just apply the Terraform; the diff is small."** §1. No.
278
+ Plan → review → Y4NN applies.
279
+
280
+ ---
281
+
282
+ ## 10. Style — Meshullam's voice
283
+
284
+ - **Designed, not assembled.** The topology is a deliberate
285
+ structure.
286
+ - **Every connection annotated.** "Service A → Service B over port
287
+ X for purpose Y."
288
+ - **Diagrams + IaC together.** The diagram is the picture; the IaC
289
+ is the truth; they agree.
290
+ - **One who designs connections.** The biblical Meshullam repaired
291
+ many sections; the connections between were his work.
292
+
293
+ ---
294
+
295
+ *Cross-references: `~/.claude/rules/y4nn-standards.md`
296
+ (asymmetric-delegation §5, sequence §1, durable §3),
297
+ `payload/mishkan/skills/team-lead-craft/SKILL.md` (Eliashib routes),
298
+ `payload/mishkan/skills/benaiah-devsecops-craft/SKILL.md` (Mishmar
299
+ review on new surfaces), `payload/mishkan/skills/palal-systems-
300
+ craft/SKILL.md` (OS / network / firewall implementation),
301
+ `payload/mishkan/skills/meremoth-devops-craft/SKILL.md` (delivery
302
+ pipelines that ship the IaC).*
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: mishkan-ingest
3
+ description: Selectively ingest specific documents into the project's cognee work store. Use to deliberately add docs to memory instead of bulk-ingesting a whole tree — the default is "nothing enters memory unless tagged or invoked", which prevents PII bleed (e.g. real addresses in incident reports) and oversized-doc embedding failures. Walks ./docs/ filtered by a `mishkan: ingest` YAML frontmatter tag, or accepts explicit paths. Always runs cognify → memify after adding.
4
+ ---
5
+
6
+ # mishkan-ingest
7
+
8
+ Deliberate, selective entry into the project's **work** cognee store (`cognee`,
9
+ :7777). Pairs with the cross-project **curated** store (`cognee-curated`, :7730,
10
+ read-only) — this skill only touches work.
11
+
12
+ ## When to use
13
+
14
+ - Adding a freshly tagged doc to project memory.
15
+ - Refreshing memory after a doc materially changed.
16
+ - One-off pulls from outside the standard `docs/` tree.
17
+
18
+ ## Usage
19
+
20
+ ```bash
21
+ # Default: walk ./docs/ for docs tagged `mishkan: ingest`
22
+ bash ~/.claude/mishkan/scripts/mishkan-ingest.sh --tagged-only
23
+
24
+ # Explicit files (no tag check)
25
+ bash ~/.claude/mishkan/scripts/mishkan-ingest.sh docs/SECURITY.md docs/ROADMAP.md
26
+
27
+ # Different dataset (default: basename of cwd)
28
+ bash ~/.claude/mishkan/scripts/mishkan-ingest.sh --dataset=research docs/research.md
29
+ ```
30
+
31
+ ## Tagging a doc as memory-eligible
32
+
33
+ Put a YAML frontmatter block at the top of the file:
34
+
35
+ ```yaml
36
+ ---
37
+ mishkan: ingest
38
+ ---
39
+
40
+ # Doc title
41
+
42
+ ```
43
+
44
+ That single tag is enough. Optional: any other frontmatter (author, date, etc.)
45
+ stays as-is.
46
+
47
+ ## What the skill runs
48
+
49
+ 1. Selects files — tagged-only filter, or the explicit list you passed.
50
+ 2. Stages them into the work cognee-mcp container.
51
+ 3. Runs `cognee.add(files, dataset_name=<project>)` → `cognify` → `memify` —
52
+ extraction *then* enrichment, always paired (decision per the harness flow).
53
+ 4. Respects the work box's LLM rate-limit throttle and persistent storage.
54
+
55
+ ## Constraints
56
+
57
+ - Never writes to `cognee-curated` (that's the cross-project reference, read-only).
58
+ - Skips non-`.md` files in directory walks (extend the script if you need others).
59
+ - One doc per `--dataset` per run is fine; rerun for additional datasets.
60
+ - Does NOT delete existing data — additive. Use `cognee.prune` if you need a reset.
61
+
62
+ ## Default behaviour (zero args)
63
+
64
+ Walks `./docs/` looking for `mishkan: ingest` tags. If none, exits cleanly with
65
+ "no docs selected" — the deliberate default: **memory is opt-in, not bulk**.
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: mishkan-init
3
+ description: Initialise a project under MISHKAN. Runs the SWE-BASICS-BEFORE-CODE sequence through the right specialists (PRD → SRS → CONTRACT → ARCHITECTURE → THREAT_MODEL → C4 → docs scaffold), seeds Cognee, writes the project CLAUDE.md, and begins Sprint S0. Use once per project, triggered by /mishkan-init.
4
+ ---
5
+
6
+ # mishkan-init
7
+
8
+ Initialise a new project under MISHKAN. Run once per project. Surface a `/plan`
9
+ to Y4NN before the first doc is written — the plan is the scope contract for init.
10
+
11
+ ## Preconditions
12
+
13
+ - Y4NN has converged on intent in exploration mode (Nehemiah + Bezalel).
14
+ - Working directory is the project root.
15
+
16
+ ## Sequence (each phase feeds the next — do not skip, do not reorder)
17
+
18
+ 1. **Nehemiah** — from the intent conversation, write `docs/PRD.md` (product
19
+ requirements: problem, users, use cases).
20
+ 2. **Nathan** (Yasad) — `docs/SRS.md` (software requirements from the PRD).
21
+ 3. **Zadok** (Yasad) — `docs/CONTRACT.md` (invariants + guarantees). `/plan` first.
22
+ 4. **Bezalel + Nathan** — `docs/ARCHITECTURE.md`. `/plan` first.
23
+ 5. **Benaiah** (Mishmar) — `docs/THREAT_MODEL.md` via STRIDE. `/plan` first.
24
+ 6. **Meshullam** (Migdal) — `docs/diagrams/C4/` (Context, Container, Component).
25
+ `/plan` first.
26
+ 7. **Jehoshaphat** (Sefer) — scaffold `docs/README.md`, `docs/adr/`,
27
+ `docs/runbooks/` (stub runbooks per team). `/plan` first.
28
+ 8. **Automated** — Cognee setup (two physically-separate stores, decision D-007):
29
+ - **Curated box (global singleton):** run
30
+ `bash ~/.claude/mishkan/scripts/ensure-curated-box.sh`. It is idempotent —
31
+ creates `curated_db`, brings up the curated box (`mishkan-curated-*` on :7730),
32
+ and seeds the reference library only if empty. Never reseeds a populated box.
33
+ - **Work store (per-project):** **never bulk-ingest** the `docs/` tree —
34
+ memory is opt-in. Use `mishkan-ingest` (the skill) which selects docs
35
+ either (a) by `mishkan: ingest` YAML frontmatter tag, or (b) explicit
36
+ paths. The skill runs `add → cognify → memify` in one shot, throttled
37
+ and on persistent storage. Tag docs you want in project memory; everything
38
+ else stays out of the graph (no PII bleed, no oversized-doc embedding
39
+ failures). At init, run `mishkan-ingest.sh --tagged-only` so anything
40
+ already tagged enters memory; the rest is added per-doc as you go.
41
+ If the work stack is not running (`~/.claude/mishkan/cognee/`), skip both
42
+ gracefully and note it — agents still work; persistence resumes when it's up.
43
+ 9. **Automated** — write `./CLAUDE.md` from
44
+ `~/.claude/mishkan/templates/project-CLAUDE.md`, fill placeholders, set Sprint
45
+ S0. Copy `~/.claude/mishkan/templates/settings.json` → `.claude/settings.json`,
46
+ the team rules from `~/.claude/mishkan/rules/*` → `.claude/rules/*` for
47
+ path-scoped loading, and `~/.claude/mishkan/templates/mcp.json` → `./.mcp.json`
48
+ so agents can reach the Cognee knowledge-graph MCP.
49
+
50
+ ## Outputs
51
+
52
+ ```
53
+ docs/{PRD,SRS,CONTRACT,ARCHITECTURE,THREAT_MODEL,README}.md
54
+ docs/adr/ docs/runbooks/ docs/diagrams/C4/
55
+ ./CLAUDE.md (sprint S0)
56
+ .claude/settings.json .claude/rules/{common,frontend,backend,infrastructure,documentation}/
57
+ .mcp.json (cognee = work store, cognee-curated = reference)
58
+ Cognee: curated box ensured (:7730) + this project's dataset seeded in work (:7777)
59
+ ```
60
+
61
+ ## Constraints
62
+
63
+ Sequence before implementation — no code is written during init. Stateful
64
+ operations hard stop. Every doc is dated and conforms to the Sefer rules.
65
+ English only.