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.
- package/LICENSE +21 -0
- package/README.md +205 -0
- package/bin/mishkan.js +221 -0
- package/docs/design/MISHKAN_agent_aliases.md +140 -0
- package/docs/design/MISHKAN_decisions.md +172 -0
- package/docs/design/MISHKAN_harness_design.md +820 -0
- package/docs/design/MISHKAN_ontology.md +87 -0
- package/docs/design/MISHKAN_token_optimisation.md +181 -0
- package/docs/engineer/README.md +37 -0
- package/docs/engineer/profile.example.md +79 -0
- package/docs/usage/01-installation.md +178 -0
- package/docs/usage/02-project-init.md +151 -0
- package/docs/usage/03-orchestration.md +218 -0
- package/docs/usage/04-memory-layer.md +201 -0
- package/docs/usage/05-selective-ingest.md +177 -0
- package/docs/usage/06-llm-providers.md +195 -0
- package/docs/usage/07-troubleshooting.md +316 -0
- package/docs/usage/08-glossary.md +154 -0
- package/docs/usage/09-workflows.md +123 -0
- package/docs/usage/README.md +77 -0
- package/package.json +43 -0
- package/payload/install/settings.hooks.json +47 -0
- package/payload/mishkan/AGENT_SPEC.md +154 -0
- package/payload/mishkan/agents/ahikam.md +58 -0
- package/payload/mishkan/agents/aholiab.md +68 -0
- package/payload/mishkan/agents/asaph.md +73 -0
- package/payload/mishkan/agents/baruch.md +88 -0
- package/payload/mishkan/agents/benaiah.md +76 -0
- package/payload/mishkan/agents/bezalel.md +83 -0
- package/payload/mishkan/agents/caleb.md +74 -0
- package/payload/mishkan/agents/deborah.md +63 -0
- package/payload/mishkan/agents/elasah.md +58 -0
- package/payload/mishkan/agents/eliashib.md +68 -0
- package/payload/mishkan/agents/ezra.md +69 -0
- package/payload/mishkan/agents/hanun.md +64 -0
- package/payload/mishkan/agents/hiram.md +68 -0
- package/payload/mishkan/agents/hizkiah.md +76 -0
- package/payload/mishkan/agents/huldah.md +59 -0
- package/payload/mishkan/agents/huram.md +66 -0
- package/payload/mishkan/agents/hushai.md +59 -0
- package/payload/mishkan/agents/igal.md +58 -0
- package/payload/mishkan/agents/ira.md +86 -0
- package/payload/mishkan/agents/jahaziel.md +71 -0
- package/payload/mishkan/agents/jakin.md +66 -0
- package/payload/mishkan/agents/jehonathan.md +62 -0
- package/payload/mishkan/agents/jehoshaphat.md +68 -0
- package/payload/mishkan/agents/joab.md +71 -0
- package/payload/mishkan/agents/joah.md +62 -0
- package/payload/mishkan/agents/maaseiah.md +61 -0
- package/payload/mishkan/agents/meremoth.md +65 -0
- package/payload/mishkan/agents/meshullam.md +67 -0
- package/payload/mishkan/agents/nathan.md +70 -0
- package/payload/mishkan/agents/nehemiah.md +93 -0
- package/payload/mishkan/agents/obed.md +60 -0
- package/payload/mishkan/agents/oholiab.md +67 -0
- package/payload/mishkan/agents/palal.md +63 -0
- package/payload/mishkan/agents/phinehas.md +73 -0
- package/payload/mishkan/agents/rehum.md +60 -0
- package/payload/mishkan/agents/salma.md +69 -0
- package/payload/mishkan/agents/seraiah.md +73 -0
- package/payload/mishkan/agents/shallum.md +66 -0
- package/payload/mishkan/agents/shaphan.md +64 -0
- package/payload/mishkan/agents/shemaiah.md +67 -0
- package/payload/mishkan/agents/shevna.md +58 -0
- package/payload/mishkan/agents/uriah.md +70 -0
- package/payload/mishkan/agents/zaccur.md +58 -0
- package/payload/mishkan/agents/zadok.md +67 -0
- package/payload/mishkan/agents/zerubbabel.md +69 -0
- package/payload/mishkan/cognee/.env.curated.example +61 -0
- package/payload/mishkan/cognee/.env.example +165 -0
- package/payload/mishkan/cognee/Dockerfile +50 -0
- package/payload/mishkan/cognee/README.md +129 -0
- package/payload/mishkan/cognee/docker-compose.curated-ui.yml +61 -0
- package/payload/mishkan/cognee/docker-compose.curated.yml +85 -0
- package/payload/mishkan/cognee/docker-compose.hardening.yml +16 -0
- package/payload/mishkan/cognee/docker-compose.selfhosted.yml +114 -0
- package/payload/mishkan/cognee/docker-compose.ui.yml +70 -0
- package/payload/mishkan/cognee/docker-compose.yml +71 -0
- package/payload/mishkan/cognee/ingest-curated.py +92 -0
- package/payload/mishkan/commands/dep-audit.md +24 -0
- package/payload/mishkan/commands/mishkan-init.md +25 -0
- package/payload/mishkan/commands/mishkan-resume.md +21 -0
- package/payload/mishkan/commands/promote.md +19 -0
- package/payload/mishkan/commands/sefer-pull.md +19 -0
- package/payload/mishkan/commands/sprint-close.md +21 -0
- package/payload/mishkan/config/curated-library.yaml +113 -0
- package/payload/mishkan/config/improvement-queries.md +29 -0
- package/payload/mishkan/config/model-routing.yaml +87 -0
- package/payload/mishkan/config/projects.yaml +38 -0
- package/payload/mishkan/evals/baruch/README.md +93 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/bad-outcome-enum.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/bad-sprint-pattern.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/bad-trigger-enum.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/malformed-json.json +7 -0
- package/payload/mishkan/evals/baruch/fixtures/invalid/missing-required-field.json +14 -0
- package/payload/mishkan/evals/baruch/fixtures/valid/blocked-vendor.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/valid/curated-shortcircuit.json +15 -0
- package/payload/mishkan/evals/baruch/fixtures/valid/partial-no-write.json +14 -0
- package/payload/mishkan/evals/baruch/fixtures/valid/resolved-cross-harness.json +15 -0
- package/payload/mishkan/evals/baruch/golden_case/expected.yaml +35 -0
- package/payload/mishkan/evals/baruch/golden_case/input.yaml +47 -0
- package/payload/mishkan/evals/baruch/golden_case/produced.json +15 -0
- package/payload/mishkan/evals/baruch/run.sh +129 -0
- package/payload/mishkan/hooks/model-route.py +96 -0
- package/payload/mishkan/hooks/post-tool-observe.sh +45 -0
- package/payload/mishkan/hooks/pre-tool-security.sh +150 -0
- package/payload/mishkan/hooks/session-start.sh +20 -0
- package/payload/mishkan/hooks/stop-reporter.sh +29 -0
- package/payload/mishkan/ontology.md +87 -0
- package/payload/mishkan/rules/backend/yasad.md +23 -0
- package/payload/mishkan/rules/common/dependencies.md +53 -0
- package/payload/mishkan/rules/common/quality.md +16 -0
- package/payload/mishkan/rules/common/security.md +20 -0
- package/payload/mishkan/rules/documentation/sefer.md +19 -0
- package/payload/mishkan/rules/frontend/panim.md +21 -0
- package/payload/mishkan/rules/infrastructure/migdal.md +22 -0
- package/payload/mishkan/scripts/dependency-audit.sh +171 -0
- package/payload/mishkan/scripts/ensure-curated-box.sh +66 -0
- package/payload/mishkan/scripts/mishkan-ingest.sh +92 -0
- package/payload/mishkan/scripts/observability-aggregate.sh +57 -0
- package/payload/mishkan/scripts/seed-curated-library.sh +62 -0
- package/payload/mishkan/scripts/sync-profile.sh +65 -0
- package/payload/mishkan/scripts/validate-research-log.sh +108 -0
- package/payload/mishkan/skills/asaph-a11y-seo-craft/SKILL.md +289 -0
- package/payload/mishkan/skills/baruch-research-reporting-craft/SKILL.md +460 -0
- package/payload/mishkan/skills/benaiah-devsecops-craft/SKILL.md +329 -0
- package/payload/mishkan/skills/bezalel-cto-craft/SKILL.md +391 -0
- package/payload/mishkan/skills/caleb-web-research-craft/SKILL.md +306 -0
- package/payload/mishkan/skills/cognee-promote/SKILL.md +40 -0
- package/payload/mishkan/skills/cognee-quickstart/SKILL.md +66 -0
- package/payload/mishkan/skills/context-compress/SKILL.md +36 -0
- package/payload/mishkan/skills/deborah-ux-craft/SKILL.md +295 -0
- package/payload/mishkan/skills/dependency-audit/SKILL.md +59 -0
- package/payload/mishkan/skills/dependency-vetting/SKILL.md +59 -0
- package/payload/mishkan/skills/documentation-craft/SKILL.md +468 -0
- package/payload/mishkan/skills/ezra-research-formulation-craft/SKILL.md +319 -0
- package/payload/mishkan/skills/hanun-observability-craft/SKILL.md +312 -0
- package/payload/mishkan/skills/hiram-ui-craft/SKILL.md +334 -0
- package/payload/mishkan/skills/hizkiah-implementation-craft/SKILL.md +701 -0
- package/payload/mishkan/skills/hushai-security-advisor-craft/SKILL.md +282 -0
- package/payload/mishkan/skills/ira-code-security-craft/SKILL.md +553 -0
- package/payload/mishkan/skills/jakin-intent-clarification-craft/SKILL.md +299 -0
- package/payload/mishkan/skills/jehonathan-publication-craft/SKILL.md +262 -0
- package/payload/mishkan/skills/joab-app-security-craft/SKILL.md +266 -0
- package/payload/mishkan/skills/meremoth-devops-craft/SKILL.md +298 -0
- package/payload/mishkan/skills/meshullam-infra-design-craft/SKILL.md +302 -0
- package/payload/mishkan/skills/mishkan-ingest/SKILL.md +65 -0
- package/payload/mishkan/skills/mishkan-init/SKILL.md +65 -0
- package/payload/mishkan/skills/nathan-architecture-craft/SKILL.md +547 -0
- package/payload/mishkan/skills/nehemiah-pm-craft/SKILL.md +484 -0
- package/payload/mishkan/skills/obed-asset-pipeline-craft/SKILL.md +286 -0
- package/payload/mishkan/skills/oholiab-design-system-craft/SKILL.md +334 -0
- package/payload/mishkan/skills/palal-systems-craft/SKILL.md +281 -0
- package/payload/mishkan/skills/qa-evaluation-craft/SKILL.md +406 -0
- package/payload/mishkan/skills/rehum-sre-advisor-craft/SKILL.md +228 -0
- package/payload/mishkan/skills/reporter-discipline-craft/SKILL.md +351 -0
- package/payload/mishkan/skills/research-pipeline/SKILL.md +55 -0
- package/payload/mishkan/skills/salma-frontend-implementation-craft/SKILL.md +369 -0
- package/payload/mishkan/skills/sefer-pull/SKILL.md +37 -0
- package/payload/mishkan/skills/shallum-database-craft/SKILL.md +347 -0
- package/payload/mishkan/skills/shaphan-summarisation-craft/SKILL.md +271 -0
- package/payload/mishkan/skills/shemaiah-evaluation-craft/SKILL.md +342 -0
- package/payload/mishkan/skills/sprint-report/SKILL.md +28 -0
- package/payload/mishkan/skills/team-lead-craft/SKILL.md +457 -0
- package/payload/mishkan/skills/zadok-contract-craft/SKILL.md +520 -0
- package/payload/mishkan/templates/case-node.schema.json +22 -0
- package/payload/mishkan/templates/mcp.json +22 -0
- package/payload/mishkan/templates/observability-log.schema.json +24 -0
- package/payload/mishkan/templates/project-CLAUDE.md +47 -0
- package/payload/mishkan/templates/research-log.schema.json +40 -0
- package/payload/mishkan/templates/settings.json +12 -0
- package/payload/mishkan/templates/settings.local.json +6 -0
- package/payload/mishkan/templates/sprint-state.schema.json +47 -0
- package/payload/mishkan/templates/team-report.schema.json +50 -0
- package/payload/mishkan/templates/user-CLAUDE.md +62 -0
- package/payload/mishkan/workflows/README.md +88 -0
- package/payload/mishkan/workflows/mishkan-architecture-panel.js +156 -0
- package/payload/mishkan/workflows/mishkan-codebase-audit.js +188 -0
- package/payload/mishkan/workflows/mishkan-deep-research.js +251 -0
- package/payload/mishkan/workflows/mishkan-init.js +156 -0
- package/payload/mishkan/workflows/mishkan-migration-wave.js +180 -0
- package/payload/mishkan/workflows/mishkan-release-readiness.js +163 -0
- package/payload/mishkan/workflows/mishkan-sprint-close.js +112 -0
- package/payload/user/CLAUDE.md +62 -0
- package/payload/user/rules/engineer-standards.md +66 -0
- package/payload/user/rules/y4nn-standards.md +167 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# MISHKAN — Cognee Graph Explorer UI overlay (OPTIONAL · profile: ui).
|
|
2
|
+
# Adds the Cognee web UI (backend API + Next.js frontend) so you can visualise the
|
|
3
|
+
# graph your agents build. Run TOGETHER with the self-hosted overlay, which
|
|
4
|
+
# provides the shared backends (Neo4j + Postgres/pgvector) and Ollama:
|
|
5
|
+
#
|
|
6
|
+
# docker compose -f docker-compose.yml -f docker-compose.hardening.yml \
|
|
7
|
+
# -f docker-compose.selfhosted.yml -f docker-compose.ui.yml \
|
|
8
|
+
# --profile ui up -d --build
|
|
9
|
+
#
|
|
10
|
+
# The UI backend uses the SAME .env as cognee-mcp (same Neo4j + Postgres + Ollama),
|
|
11
|
+
# so the UI and the agents share one graph. The backend + frontend build from a
|
|
12
|
+
# CLONED cognee repo — set COGNEE_SRC in .env. The Cognee UI is "work in progress"
|
|
13
|
+
# upstream; confirm the frontend Dockerfile path + backend entrypoint against the
|
|
14
|
+
# repo. Ports are 127.0.0.1-bound and configurable.
|
|
15
|
+
|
|
16
|
+
services:
|
|
17
|
+
cognee-backend:
|
|
18
|
+
build:
|
|
19
|
+
context: ${COGNEE_SRC:?set COGNEE_SRC in .env to a cloned cognee repo}
|
|
20
|
+
image: mishkan/cognee-backend:${COGNEE_MCP_REF:?}
|
|
21
|
+
container_name: mishkan-cognee-backend
|
|
22
|
+
restart: unless-stopped
|
|
23
|
+
profiles: ["ui"]
|
|
24
|
+
depends_on:
|
|
25
|
+
neo4j:
|
|
26
|
+
condition: service_healthy
|
|
27
|
+
postgres:
|
|
28
|
+
condition: service_healthy
|
|
29
|
+
ollama:
|
|
30
|
+
condition: service_healthy
|
|
31
|
+
env_file:
|
|
32
|
+
- .env # same cognee config as cognee-mcp → shared graph
|
|
33
|
+
environment:
|
|
34
|
+
HOST: 0.0.0.0
|
|
35
|
+
ENVIRONMENT: local
|
|
36
|
+
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-http://localhost:${COGNEE_UI_PORT:-7724}}
|
|
37
|
+
ports:
|
|
38
|
+
- "127.0.0.1:${COGNEE_BACKEND_PORT:-7737}:8000"
|
|
39
|
+
networks:
|
|
40
|
+
- cognee_net
|
|
41
|
+
security_opt:
|
|
42
|
+
- no-new-privileges:true
|
|
43
|
+
deploy:
|
|
44
|
+
resources:
|
|
45
|
+
limits:
|
|
46
|
+
cpus: "2.0"
|
|
47
|
+
memory: 3g
|
|
48
|
+
|
|
49
|
+
cognee-frontend:
|
|
50
|
+
build:
|
|
51
|
+
context: ${COGNEE_SRC:?set COGNEE_SRC in .env to a cloned cognee repo}/cognee-frontend
|
|
52
|
+
image: mishkan/cognee-frontend:${COGNEE_MCP_REF:?}
|
|
53
|
+
container_name: mishkan-cognee-frontend
|
|
54
|
+
restart: unless-stopped
|
|
55
|
+
profiles: ["ui"]
|
|
56
|
+
depends_on:
|
|
57
|
+
- cognee-backend
|
|
58
|
+
environment:
|
|
59
|
+
NEXT_PUBLIC_LOCAL_API_URL: ${NEXT_PUBLIC_LOCAL_API_URL:-http://localhost:${COGNEE_BACKEND_PORT:-7737}}
|
|
60
|
+
ports:
|
|
61
|
+
- "127.0.0.1:${COGNEE_UI_PORT:-7724}:3000"
|
|
62
|
+
networks:
|
|
63
|
+
- cognee_net
|
|
64
|
+
security_opt:
|
|
65
|
+
- no-new-privileges:true
|
|
66
|
+
deploy:
|
|
67
|
+
resources:
|
|
68
|
+
limits:
|
|
69
|
+
cpus: "1.0"
|
|
70
|
+
memory: 1g
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# MISHKAN — cognee-mcp knowledge-graph server (local Docker · decision D-001).
|
|
2
|
+
# Runs the official cognee-mcp in HTTP transport on port 7777 (endpoint /mcp).
|
|
3
|
+
# Cognee core is a library; this container exposes it over MCP for Claude Code.
|
|
4
|
+
#
|
|
5
|
+
# Compliant with Migdal rules: built locally from a pinned Dockerfile (no blind
|
|
6
|
+
# pulls, no :latest), SOPS-managed secrets, resource limits, healthcheck, isolated
|
|
7
|
+
# network, 127.0.0.1-bound. Apply the hardening overlay on EVERY recreate:
|
|
8
|
+
# docker compose -f docker-compose.yml -f docker-compose.hardening.yml up -d
|
|
9
|
+
#
|
|
10
|
+
# Port: cognee-mcp listens on 7777 inside the container; COGNEE_PORT (default
|
|
11
|
+
# 7777) sets the host port. (A TCP port must be <= 65535.)
|
|
12
|
+
#
|
|
13
|
+
# Backend stores: cognee uses local backends by default (no extra services).
|
|
14
|
+
# To use PostgreSQL/pgvector or Neo4j instead, set the relevant cognee env vars
|
|
15
|
+
# in .env per https://docs.cognee.ai and add the backend service here.
|
|
16
|
+
|
|
17
|
+
name: mishkan-cognee
|
|
18
|
+
|
|
19
|
+
services:
|
|
20
|
+
cognee-mcp:
|
|
21
|
+
build:
|
|
22
|
+
context: .
|
|
23
|
+
dockerfile: Dockerfile
|
|
24
|
+
args:
|
|
25
|
+
COGNEE_MCP_REF: ${COGNEE_MCP_REF:?set COGNEE_MCP_REF in .env to a pinned cognee git tag/commit}
|
|
26
|
+
PYTHON_VERSION: 3.12-slim
|
|
27
|
+
image: mishkan/cognee-mcp:${COGNEE_MCP_REF:?set COGNEE_MCP_REF in .env to a pinned cognee git tag/commit}
|
|
28
|
+
container_name: mishkan-cognee-mcp
|
|
29
|
+
restart: unless-stopped
|
|
30
|
+
env_file:
|
|
31
|
+
- .env
|
|
32
|
+
environment:
|
|
33
|
+
# LLM_API_KEY (and any backend provider vars) come from .env (SOPS-managed).
|
|
34
|
+
COGNEE_PORT: "7777"
|
|
35
|
+
ports:
|
|
36
|
+
# host COGNEE_PORT (default 7777) → container 7777. Bound to localhost only.
|
|
37
|
+
- "127.0.0.1:${COGNEE_PORT:-7777}:7777"
|
|
38
|
+
volumes:
|
|
39
|
+
# Cognee's local data (graph/vector/sqlite) when using default backends.
|
|
40
|
+
- cognee_data:/app/cognee-mcp/.cognee_system
|
|
41
|
+
healthcheck:
|
|
42
|
+
test: ["CMD", "python", "-c", "import socket; s=socket.create_connection(('127.0.0.1',7777),2); s.close()"]
|
|
43
|
+
interval: 15s
|
|
44
|
+
timeout: 5s
|
|
45
|
+
retries: 5
|
|
46
|
+
start_period: 40s
|
|
47
|
+
networks:
|
|
48
|
+
- cognee_net
|
|
49
|
+
deploy:
|
|
50
|
+
resources:
|
|
51
|
+
limits:
|
|
52
|
+
cpus: "2.0"
|
|
53
|
+
memory: 3g
|
|
54
|
+
|
|
55
|
+
volumes:
|
|
56
|
+
cognee_data:
|
|
57
|
+
|
|
58
|
+
networks:
|
|
59
|
+
cognee_net:
|
|
60
|
+
driver: bridge
|
|
61
|
+
# Subnet pinned away from Docker's default 172.18-172.31 auto-allocation pool.
|
|
62
|
+
# On some hosts the daemon's BoltDB carries orphaned anti-spoofing iptables
|
|
63
|
+
# rules (nat PREROUTING DROP) for a dead bridge that previously owned a
|
|
64
|
+
# 172.x subnet; a new bridge auto-allocated into that subnet then has all
|
|
65
|
+
# inter-container TCP silently dropped (timeout, not refused). Pinning to an
|
|
66
|
+
# unused subnet sidesteps it durably (survives reboot/firewall reload).
|
|
67
|
+
ipam:
|
|
68
|
+
driver: default
|
|
69
|
+
config:
|
|
70
|
+
- subnet: 172.51.0.0/16
|
|
71
|
+
gateway: 172.51.0.1
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# MISHKAN — structured ingest of the curated library into Cognee.
|
|
2
|
+
# Runs INSIDE the cognee-mcp container (it needs the cognee package + the live
|
|
3
|
+
# .env config: graph=Neo4j, vector=pgvector, embeddings=Ollama). Reads a JSONL
|
|
4
|
+
# of CuratedResource entries and writes typed Team + CuratedResource nodes via
|
|
5
|
+
# Cognee's low-level DataPoint API — NO LLM extraction (cognify), so it costs
|
|
6
|
+
# only embedding calls. Use local Ollama embeddings to avoid cloud rate walls
|
|
7
|
+
# on bulk ingest (Gemini free-tier embeddings 429 on ~100 nodes).
|
|
8
|
+
#
|
|
9
|
+
# Invoked by seed-curated-library.sh; not meant to be run standalone on the host.
|
|
10
|
+
#
|
|
11
|
+
# JSONL path via COGNEE_CURATED_JSONL (default /home/cognee/curated-resources.jsonl)
|
|
12
|
+
#
|
|
13
|
+
# WARNING: prunes the graph first (clean, reproducible seed). Run before real
|
|
14
|
+
# session knowledge accumulates, or it wipes that too.
|
|
15
|
+
import asyncio
|
|
16
|
+
import json
|
|
17
|
+
import os
|
|
18
|
+
from typing import List
|
|
19
|
+
|
|
20
|
+
from cognee.low_level import setup, DataPoint
|
|
21
|
+
from cognee.pipelines import run_tasks, Task
|
|
22
|
+
from cognee.tasks.storage import add_data_points
|
|
23
|
+
from cognee.tasks.storage.index_graph_edges import index_graph_edges
|
|
24
|
+
from cognee.modules.users.methods import get_default_user
|
|
25
|
+
from cognee.modules.data.methods import load_or_create_datasets
|
|
26
|
+
from cognee import prune
|
|
27
|
+
|
|
28
|
+
JSONL = os.environ.get("COGNEE_CURATED_JSONL", "/home/cognee/curated-resources.jsonl")
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class CuratedResource(DataPoint):
|
|
32
|
+
name: str
|
|
33
|
+
team: str
|
|
34
|
+
url: str
|
|
35
|
+
problem_class: str
|
|
36
|
+
source_tier: str
|
|
37
|
+
metadata: dict = {"index_fields": ["name", "problem_class"]}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class Team(DataPoint):
|
|
41
|
+
name: str
|
|
42
|
+
resources: List[CuratedResource]
|
|
43
|
+
metadata: dict = {"index_fields": ["name"]}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def build_nodes(_data=None):
|
|
47
|
+
teams: dict[str, list] = {}
|
|
48
|
+
with open(JSONL) as fh:
|
|
49
|
+
for line in fh:
|
|
50
|
+
line = line.strip()
|
|
51
|
+
if not line:
|
|
52
|
+
continue
|
|
53
|
+
d = json.loads(line)
|
|
54
|
+
teams.setdefault(d["team"], []).append(
|
|
55
|
+
CuratedResource(
|
|
56
|
+
name=d["name"],
|
|
57
|
+
team=d["team"],
|
|
58
|
+
url=d["url"],
|
|
59
|
+
problem_class=d.get("problem_class", ""),
|
|
60
|
+
source_tier=d.get("source_tier", "curated"),
|
|
61
|
+
)
|
|
62
|
+
)
|
|
63
|
+
nodes = [Team(name=t, resources=rs) for t, rs in teams.items()]
|
|
64
|
+
print(
|
|
65
|
+
f">> built {len(nodes)} Team nodes, "
|
|
66
|
+
f"{sum(len(t.resources) for t in nodes)} CuratedResource nodes",
|
|
67
|
+
flush=True,
|
|
68
|
+
)
|
|
69
|
+
return nodes
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
async def main():
|
|
73
|
+
await prune.prune_data()
|
|
74
|
+
await prune.prune_system(metadata=True)
|
|
75
|
+
print(">> pruned", flush=True)
|
|
76
|
+
await setup()
|
|
77
|
+
user = await get_default_user()
|
|
78
|
+
datasets = await load_or_create_datasets(["curated_library"], [], user)
|
|
79
|
+
tasks = [Task(build_nodes), Task(add_data_points)]
|
|
80
|
+
async for status in run_tasks(tasks, datasets[0].id, None, user, "curated_seed"):
|
|
81
|
+
print(">> status:", getattr(status, "status", status), flush=True)
|
|
82
|
+
await index_graph_edges()
|
|
83
|
+
print(">> SEEDED", flush=True)
|
|
84
|
+
# Enrichment always follows the build: memify embeds the relationship/triplet
|
|
85
|
+
# layer into the vector store (default tasks; embeddings-only, no LLM/quota).
|
|
86
|
+
import cognee
|
|
87
|
+
await cognee.memify(dataset="curated_library")
|
|
88
|
+
print(">> MEMIFIED", flush=True)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if __name__ == "__main__":
|
|
92
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Audit dependencies across all registered projects and produce a coordinated, vetted update plan.
|
|
3
|
+
argument-hint: "[optional: package name or CVE id to focus on]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Run a cross-project dependency audit using the **dependency-audit** skill.
|
|
7
|
+
|
|
8
|
+
Focus (if provided): $ARGUMENTS
|
|
9
|
+
|
|
10
|
+
Steps:
|
|
11
|
+
|
|
12
|
+
1. Run `~/.claude/mishkan/scripts/dependency-audit.sh` — inventories every project
|
|
13
|
+
in `~/.claude/mishkan/config/projects.yaml`, runs OSV-Scanner/trivy where
|
|
14
|
+
installed, aggregates shared packages, shared CVEs, and version drift.
|
|
15
|
+
2. As **Benaiah** (supply-chain, Mishmar), prioritise findings by
|
|
16
|
+
severity × blast radius (how many projects each affects).
|
|
17
|
+
3. For each fix, run **dependency-vetting** on the target version, then
|
|
18
|
+
**dependency-upgrade** for per-project breaking-change analysis.
|
|
19
|
+
4. As **Migdal**, sequence a staging-first rollout per project. Prepare the pinned
|
|
20
|
+
manifest changes + lockfile-regen commands — **Y4NN runs the installs/deploys**.
|
|
21
|
+
5. **Seraiah** documents the portfolio posture; promote a cross-harness Cognee node
|
|
22
|
+
(gated by Nehemiah + Bezalel).
|
|
23
|
+
|
|
24
|
+
No fabricated CVEs. No installs or deploys executed by AI. English only.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Initialise the current project under MISHKAN (PRD→SRS→CONTRACT→ARCHITECTURE→THREAT_MODEL→C4→docs→Cognee→Sprint S0).
|
|
3
|
+
argument-hint: "[optional one-line project intent]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Initialise this project under MISHKAN by running the **mishkan-init** skill.
|
|
7
|
+
|
|
8
|
+
Project intent (if provided): $ARGUMENTS
|
|
9
|
+
|
|
10
|
+
Before writing the first document, **produce a `/plan`** and surface it to Y4NN
|
|
11
|
+
for approval — the plan is the scope contract for initialisation. Then run the
|
|
12
|
+
sequence exactly:
|
|
13
|
+
|
|
14
|
+
Nehemiah → `docs/PRD.md`
|
|
15
|
+
→ Nathan → `docs/SRS.md`
|
|
16
|
+
→ Zadok → `docs/CONTRACT.md` (plan first)
|
|
17
|
+
→ Bezalel + Nathan → `docs/ARCHITECTURE.md` (plan first)
|
|
18
|
+
→ Benaiah → `docs/THREAT_MODEL.md` (plan first)
|
|
19
|
+
→ Meshullam → `docs/diagrams/C4/` (plan first)
|
|
20
|
+
→ Jehoshaphat → `docs/README.md`, `docs/adr/`, `docs/runbooks/` (plan first)
|
|
21
|
+
→ seed Cognee from all docs
|
|
22
|
+
→ write `./CLAUDE.md` (Sprint S0), copy settings + team rules into `.claude/`
|
|
23
|
+
|
|
24
|
+
Sequence before implementation: no code is written during init. Stateful
|
|
25
|
+
operations stop at Y4NN's hands. Every doc is dated. English only.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Resume a MISHKAN project — load sprint state and open blockers, Nehemiah greets with current context.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Resume work on this MISHKAN project. This is the replacement for the deferred
|
|
6
|
+
SessionStart hook.
|
|
7
|
+
|
|
8
|
+
Do the following:
|
|
9
|
+
|
|
10
|
+
1. Read `./CLAUDE.md` for the current sprint, milestone, mode, tasks, and blockers.
|
|
11
|
+
2. Query Cognee (project namespace) for active blockers, open Mishmar flags, and
|
|
12
|
+
pending decisions.
|
|
13
|
+
3. As **Nehemiah**, greet Y4NN with a tight context summary:
|
|
14
|
+
- current sprint + milestone + mode
|
|
15
|
+
- open tasks (id, description, status, owner)
|
|
16
|
+
- blockers — Mishmar flags first, with severity
|
|
17
|
+
- pending decisions awaiting Y4NN
|
|
18
|
+
4. Ask where Y4NN wants to start.
|
|
19
|
+
|
|
20
|
+
Keep it lean — surface state, do not dump raw logs. No code is written by this
|
|
21
|
+
command. English only.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Manually promote a learning into Cognee at an explicit blast-radius tier.
|
|
3
|
+
argument-hint: "<agent-private|team-level|cross-harness> <what to promote>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Manually promote a learning using the **cognee-promote** skill.
|
|
7
|
+
|
|
8
|
+
Requested promotion: $ARGUMENTS
|
|
9
|
+
|
|
10
|
+
Parse the first token as the blast-radius tier and the rest as the learning.
|
|
11
|
+
|
|
12
|
+
- `agent-private` → record in the agent's `MEMORY.md`; do **not** write Cognee.
|
|
13
|
+
- `team-level` → Team Lead decision; update team rules / shared topic file, and
|
|
14
|
+
write a `team-level` Cognee node.
|
|
15
|
+
- `cross-harness` → requires Nehemiah + Bezalel sign-off; write a `cross-harness`
|
|
16
|
+
Cognee node per `~/.claude/mishkan/ontology.md` with the correct entity type and edges.
|
|
17
|
+
|
|
18
|
+
If the tier is ambiguous, ask: does this affect only the agent, the team, or
|
|
19
|
+
everyone? No fabricated facts. English only.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Trigger a Sefer documentation pull outside the milestone (event-driven).
|
|
3
|
+
argument-hint: "<event: architecture-decision|security-finding-closed|schema-change> [detail]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Trigger a Sefer documentation pull using the **sefer-pull** skill, Mode B
|
|
7
|
+
(triggered pull).
|
|
8
|
+
|
|
9
|
+
Event: $ARGUMENTS
|
|
10
|
+
|
|
11
|
+
Jehoshaphat coordinates. Pull only from the team that triggered the event and
|
|
12
|
+
update only the affected docs:
|
|
13
|
+
|
|
14
|
+
- `architecture-decision` → ARCHITECTURE.md + new ADR (Joah, MADR).
|
|
15
|
+
- `security-finding-closed` → THREAT_MODEL.md + security posture (Shevna).
|
|
16
|
+
- `schema-change` → data docs + migration runbook (Joah).
|
|
17
|
+
|
|
18
|
+
Sefer writes to `docs/` only — never code. Every doc dated, Diátaxis quadrant
|
|
19
|
+
declared, sourced from Cognee/reporters. English only.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Close the current sprint — reporters surface, Nehemiah aggregates, Bezalel reviews, Sefer pulls, Cognee promotes, next sprint begins.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Close the current sprint milestone. First **produce a `/plan`** of what will be
|
|
6
|
+
promoted to Cognee and what will be closed, and surface it to Y4NN for approval.
|
|
7
|
+
Then run:
|
|
8
|
+
|
|
9
|
+
1. Each **Team Reporter** surfaces its `team-report.json` (Maaseiah, Igal,
|
|
10
|
+
Elasah, Ahikam, Zaccur, Huldah) — via the **sprint-report** skill.
|
|
11
|
+
2. **Nehemiah** aggregates all six team reports.
|
|
12
|
+
3. **Bezalel** reviews architectural and security flags.
|
|
13
|
+
4. **Sefer** runs a sequential pull (**sefer-pull** skill, Mode A) — changelogs,
|
|
14
|
+
ADRs, API docs, runbooks, team docs updated in `docs/`.
|
|
15
|
+
5. Resolved research + decisions promoted to the Cognee project graph
|
|
16
|
+
(**cognee-promote** skill) — gated by Nehemiah + Bezalel.
|
|
17
|
+
6. Observability aggregation runs; improvement-layer queries refresh.
|
|
18
|
+
7. Update `./CLAUDE.md` to the next sprint (S+1) and reset milestone.
|
|
19
|
+
|
|
20
|
+
Stateful operations stop at Y4NN's hands. Reporters surface structured summaries
|
|
21
|
+
only. English only.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# MISHKAN curated library — per-team vetted references, ingested into Cognee as
|
|
2
|
+
# CuratedResource nodes (ontology: type=CuratedResource). Specific to Y4NN's
|
|
3
|
+
# actual stack. Distinct from the research pipeline: the pipeline finds new
|
|
4
|
+
# things; this library holds proven things agents load without searching.
|
|
5
|
+
# Seeded by scripts/seed-curated-library.sh once Cognee is running.
|
|
6
|
+
|
|
7
|
+
chosheb: # Design
|
|
8
|
+
- { name: "NN/g — 10 Usability Heuristics", url: "https://www.nngroup.com/articles/ten-usability-heuristics/", problem_class: "heuristic-evaluation" }
|
|
9
|
+
- { name: "Laws of UX", url: "https://lawsofux.com/", problem_class: "cognitive-load-decision-architecture" }
|
|
10
|
+
- { name: "Refactoring UI", url: "https://www.refactoringui.com/", problem_class: "visual-design-heuristics" }
|
|
11
|
+
- { name: "Material Design 3", url: "https://m3.material.io/", problem_class: "design-system-reference" }
|
|
12
|
+
- { name: "Apple HIG", url: "https://developer.apple.com/design/human-interface-guidelines/", problem_class: "platform-native-design" }
|
|
13
|
+
- { name: "WCAG 2.2 Quick Reference", url: "https://www.w3.org/WAI/WCAG22/quickref/", problem_class: "accessibility-checklist" }
|
|
14
|
+
- { name: "Inclusive Components", url: "https://inclusive-components.design/", problem_class: "accessible-component-patterns" }
|
|
15
|
+
- { name: "IBM Carbon Design System", url: "https://carbondesignsystem.com/", problem_class: "design-system-architecture" }
|
|
16
|
+
|
|
17
|
+
panim: # Frontend
|
|
18
|
+
- { name: "MDN Web Docs", url: "https://developer.mozilla.org/", problem_class: "web-platform-reference" }
|
|
19
|
+
- { name: "React docs", url: "https://react.dev/", problem_class: "react-patterns" }
|
|
20
|
+
- { name: "TanStack docs hub", url: "https://tanstack.com/", problem_class: "data-fetching-routing" }
|
|
21
|
+
- { name: "TanStack Router v1", url: "https://tanstack.com/router/latest", problem_class: "routing" }
|
|
22
|
+
- { name: "Vite docs", url: "https://vitejs.dev/", problem_class: "build-tooling" }
|
|
23
|
+
- { name: "pnpm docs", url: "https://pnpm.io/", problem_class: "package-management" }
|
|
24
|
+
- { name: "Vercel docs", url: "https://vercel.com/docs", problem_class: "frontend-deployment" }
|
|
25
|
+
- { name: "TailwindCSS docs", url: "https://tailwindcss.com/docs", problem_class: "styling-system" }
|
|
26
|
+
- { name: "Nuxt 3 docs", url: "https://nuxt.com/docs", problem_class: "vue-ssr" }
|
|
27
|
+
- { name: "Storybook docs", url: "https://storybook.js.org/docs", problem_class: "component-isolation" }
|
|
28
|
+
- { name: "web.dev Core Web Vitals", url: "https://web.dev/articles/vitals", problem_class: "performance-budgets" }
|
|
29
|
+
- { name: "WAI-ARIA APG", url: "https://www.w3.org/WAI/ARIA/apg/", problem_class: "accessible-js-components" }
|
|
30
|
+
- { name: "Can I Use", url: "https://caniuse.com/", problem_class: "browser-compatibility" }
|
|
31
|
+
- { name: "Patterns.dev", url: "https://www.patterns.dev/", problem_class: "frontend-patterns" }
|
|
32
|
+
|
|
33
|
+
yasad: # Backend
|
|
34
|
+
- { name: "FastAPI docs", url: "https://fastapi.tiangolo.com/", problem_class: "python-api-framework" }
|
|
35
|
+
- { name: "Pydantic v2 docs", url: "https://docs.pydantic.dev/latest/", problem_class: "data-validation" }
|
|
36
|
+
- { name: "asyncpg docs", url: "https://magicstack.github.io/asyncpg/current/", problem_class: "async-postgres-driver" }
|
|
37
|
+
- { name: "Alembic docs", url: "https://alembic.sqlalchemy.org/en/latest/", problem_class: "schema-migrations" }
|
|
38
|
+
- { name: "SQLAlchemy 2.0 async", url: "https://docs.sqlalchemy.org/en/20/orm/extensions/asyncio.html", problem_class: "async-orm" }
|
|
39
|
+
- { name: "Hono docs", url: "https://hono.dev/", problem_class: "ts-edge-api" }
|
|
40
|
+
- { name: "NestJS docs", url: "https://docs.nestjs.com/", problem_class: "ts-enterprise-api" }
|
|
41
|
+
- { name: "Fastify docs", url: "https://fastify.dev/docs/latest/", problem_class: "ts-api-framework" }
|
|
42
|
+
- { name: "PostgreSQL docs", url: "https://www.postgresql.org/docs/current/", problem_class: "relational-db" }
|
|
43
|
+
- { name: "Use the Index, Luke", url: "https://use-the-index-luke.com/", problem_class: "sql-indexing" }
|
|
44
|
+
- { name: "MongoDB docs", url: "https://www.mongodb.com/docs/", problem_class: "document-db" }
|
|
45
|
+
- { name: "DynamoDB developer guide", url: "https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/", problem_class: "key-value-db" }
|
|
46
|
+
- { name: "LangChain Python docs", url: "https://python.langchain.com/docs/introduction/", problem_class: "llm-orchestration" }
|
|
47
|
+
- { name: "LangGraph docs", url: "https://langchain-ai.github.io/langgraph/", problem_class: "stateful-ai-workflows" }
|
|
48
|
+
- { name: "HuggingFace Hub docs", url: "https://huggingface.co/docs/hub/", problem_class: "model-hub" }
|
|
49
|
+
- { name: "OpenRouter docs", url: "https://openrouter.ai/docs", problem_class: "model-routing" }
|
|
50
|
+
- { name: "Docker Model Runner docs", url: "https://docs.docker.com/ai/model-runner/", problem_class: "local-inference" }
|
|
51
|
+
- { name: "ChromaDB docs", url: "https://docs.trychroma.com/", problem_class: "vector-db" }
|
|
52
|
+
- { name: "Google AIP", url: "https://google.aip.dev/", problem_class: "api-design-standard" }
|
|
53
|
+
- { name: "OpenAPI 3.1 spec", url: "https://spec.openapis.org/oas/v3.1.0", problem_class: "api-contract" }
|
|
54
|
+
- { name: "AsyncAPI spec", url: "https://www.asyncapi.com/docs/reference/specification/latest", problem_class: "event-contract" }
|
|
55
|
+
- { name: "Twelve-Factor App", url: "https://12factor.net/", problem_class: "saas-app-design" }
|
|
56
|
+
- { name: "Martin Fowler", url: "https://martinfowler.com/", problem_class: "enterprise-patterns" }
|
|
57
|
+
- { name: "Designing Data-Intensive Applications", url: "https://dataintensive.net/", problem_class: "distributed-data" }
|
|
58
|
+
|
|
59
|
+
mishmar: # Security
|
|
60
|
+
- { name: "OWASP Top 10", url: "https://owasp.org/Top10/", problem_class: "web-app-risk" }
|
|
61
|
+
- { name: "OWASP API Security Top 10 2023", url: "https://owasp.org/API-Security/editions/2023/en/0x00-header/", problem_class: "api-risk" }
|
|
62
|
+
- { name: "OWASP ASVS", url: "https://owasp.org/www-project-application-security-verification-standard/", problem_class: "verification-standard" }
|
|
63
|
+
- { name: "OWASP Cheat Sheet Series", url: "https://cheatsheetseries.owasp.org/", problem_class: "secure-coding-lookup" }
|
|
64
|
+
- { name: "MITRE ATT&CK", url: "https://attack.mitre.org/", problem_class: "adversary-tactics" }
|
|
65
|
+
- { name: "MITRE CWE Top 25", url: "https://cwe.mitre.org/top25/", problem_class: "code-weakness-patterns" }
|
|
66
|
+
- { name: "NVD / CVE", url: "https://nvd.nist.gov/", problem_class: "vulnerability-data" }
|
|
67
|
+
- { name: "OSV.dev", url: "https://osv.dev/", problem_class: "dependency-vulnerabilities" }
|
|
68
|
+
- { name: "SLSA Framework", url: "https://slsa.dev/", problem_class: "supply-chain-security" }
|
|
69
|
+
- { name: "Keycloak documentation", url: "https://www.keycloak.org/documentation", problem_class: "identity-provider" }
|
|
70
|
+
- { name: "Keycloak hardening guide", url: "https://www.keycloak.org/server/hardening", problem_class: "identity-hardening" }
|
|
71
|
+
- { name: "SOPS documentation", url: "https://getsops.io/docs/", problem_class: "secret-management" }
|
|
72
|
+
- { name: "age encryption", url: "https://age-encryption.org/", problem_class: "encryption" }
|
|
73
|
+
- { name: "STRIDE threat modeling", url: "https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats", problem_class: "threat-modelling" }
|
|
74
|
+
- { name: "NIST SSDF SP 800-218", url: "https://csrc.nist.gov/Projects/ssdf", problem_class: "secure-sdlc" }
|
|
75
|
+
- { name: "CIS Benchmarks", url: "https://www.cisecurity.org/cis-benchmarks", problem_class: "hardening-baselines" }
|
|
76
|
+
- { name: "Traefik security docs", url: "https://doc.traefik.io/traefik/https/tls/", problem_class: "tls-ingress-security" }
|
|
77
|
+
|
|
78
|
+
migdal: # Infrastructure
|
|
79
|
+
- { name: "Docker Compose docs", url: "https://docs.docker.com/compose/", problem_class: "container-orchestration" }
|
|
80
|
+
- { name: "Docker networking docs", url: "https://docs.docker.com/network/", problem_class: "container-networking" }
|
|
81
|
+
- { name: "Docker security docs", url: "https://docs.docker.com/engine/security/", problem_class: "container-security" }
|
|
82
|
+
- { name: "Traefik v3 docs", url: "https://doc.traefik.io/traefik/", problem_class: "reverse-proxy" }
|
|
83
|
+
- { name: "GitLab CI/CD docs", url: "https://docs.gitlab.com/ee/ci/", problem_class: "ci-cd-pipeline" }
|
|
84
|
+
- { name: "GitLab CI variables", url: "https://docs.gitlab.com/ee/ci/variables/", problem_class: "ci-secrets" }
|
|
85
|
+
- { name: "GitLab protected branches", url: "https://docs.gitlab.com/ee/user/project/protected_branches.html", problem_class: "deploy-gating" }
|
|
86
|
+
- { name: "Ansible docs", url: "https://docs.ansible.com/", problem_class: "config-management" }
|
|
87
|
+
- { name: "Kubernetes docs", url: "https://kubernetes.io/docs/home/", problem_class: "k8s-orchestration" }
|
|
88
|
+
- { name: "Terraform best practices", url: "https://www.terraform-best-practices.com/", problem_class: "iac-patterns" }
|
|
89
|
+
- { name: "CIS Kubernetes Benchmark", url: "https://www.cisecurity.org/benchmark/kubernetes", problem_class: "k8s-hardening" }
|
|
90
|
+
- { name: "AWS Well-Architected", url: "https://aws.amazon.com/architecture/well-architected/", problem_class: "cloud-architecture-review" }
|
|
91
|
+
- { name: "GCP Architecture Framework", url: "https://cloud.google.com/architecture/framework", problem_class: "cloud-architecture-review" }
|
|
92
|
+
- { name: "CNCF Landscape", url: "https://landscape.cncf.io/", problem_class: "cloud-native-tooling" }
|
|
93
|
+
- { name: "OpenTelemetry docs", url: "https://opentelemetry.io/docs/", problem_class: "observability-instrumentation" }
|
|
94
|
+
- { name: "Prometheus docs", url: "https://prometheus.io/docs/", problem_class: "metrics" }
|
|
95
|
+
- { name: "Grafana docs", url: "https://grafana.com/docs/", problem_class: "dashboards" }
|
|
96
|
+
- { name: "Loki docs", url: "https://grafana.com/docs/loki/latest/", problem_class: "log-aggregation" }
|
|
97
|
+
- { name: "Sentry docs", url: "https://docs.sentry.io/", problem_class: "error-tracking" }
|
|
98
|
+
- { name: "Google SRE Book", url: "https://sre.google/sre-book/table-of-contents/", problem_class: "sre-foundation" }
|
|
99
|
+
- { name: "Google SRE Workbook", url: "https://sre.google/workbook/table-of-contents/", problem_class: "sre-practice" }
|
|
100
|
+
- { name: "NIST CSF 2.0", url: "https://www.nist.gov/cyberframework", problem_class: "security-posture" }
|
|
101
|
+
|
|
102
|
+
sefer: # Documentation
|
|
103
|
+
- { name: "Diátaxis Framework", url: "https://diataxis.fr/", problem_class: "doc-architecture" }
|
|
104
|
+
- { name: "Google Dev Documentation Style Guide", url: "https://developers.google.com/style", problem_class: "technical-writing-style" }
|
|
105
|
+
- { name: "MADR ADR template", url: "https://adr.github.io/madr/", problem_class: "adr-format" }
|
|
106
|
+
- { name: "C4 Model", url: "https://c4model.com/", problem_class: "architecture-diagrams" }
|
|
107
|
+
- { name: "Keep a Changelog", url: "https://keepachangelog.com/en/1.1.0/", problem_class: "changelog-convention" }
|
|
108
|
+
- { name: "Semantic Versioning 2.0", url: "https://semver.org/", problem_class: "versioning" }
|
|
109
|
+
- { name: "Conventional Commits", url: "https://www.conventionalcommits.org/en/v1.0.0/", problem_class: "commit-convention" }
|
|
110
|
+
- { name: "OpenAPI → API docs", url: "https://spec.openapis.org/oas/v3.1.0", problem_class: "api-documentation" }
|
|
111
|
+
- { name: "Stripe API docs (quality benchmark)", url: "https://docs.stripe.com/api", problem_class: "api-doc-quality-bar" }
|
|
112
|
+
- { name: "Docusaurus", url: "https://docusaurus.io/", problem_class: "docs-site-generator" }
|
|
113
|
+
- { name: "Write the Docs", url: "https://www.writethedocs.org/guide/", problem_class: "docs-workflow" }
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# MISHKAN — Improvement Layer Queries
|
|
2
|
+
|
|
3
|
+
Saved queries the improvement layer runs against Cognee (and the observability
|
|
4
|
+
aggregate) to make MISHKAN better over time. Run after `/sprint-close`, once two
|
|
5
|
+
or three sprints of data exist.
|
|
6
|
+
|
|
7
|
+
These are intent specifications; the concrete query syntax binds to the deployed
|
|
8
|
+
Cognee API (D-001). Each maps to an action.
|
|
9
|
+
|
|
10
|
+
| # | Query intent | Reads | Action it drives |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| 1 | **Most expensive agents per sprint** | observability aggregate (cost, tokens) + `Agent` nodes | Prompt-optimisation targets; retier a costly Sonnet→Haiku where quality allows |
|
|
13
|
+
| 2 | **Tools called most per team** | observability aggregate (tool_calls) grouped by team | MCP access refinement; prune unused tool grants, keep the <10 MCP / <80 tool budget |
|
|
14
|
+
| 3 | **Blocker hot spots** | `Task` nodes with `blocks` edges, clustered | Workflow bottleneck detection; resequence or split tasks |
|
|
15
|
+
| 4 | **Components accumulating findings** | `SecurityFinding` nodes grouped by `location` | Structural risk surfacing; flag a component for refactor/threat-review |
|
|
16
|
+
| 5 | **Curated library hit rate per problem class** | `CuratedLibraryHit` joined to `CuratedResource` | Identify under-used resources (prune) and high-value ones (promote); detect gaps where the web pipeline is used because the library lacks coverage |
|
|
17
|
+
| 6 | **Cache hit rate per agent** | observability aggregate (tokens_cached / tokens_input) | Validate the token-optimisation layer; fix agents whose static prefix is not caching |
|
|
18
|
+
| 7 | **Research outcome ratio** | `ResearchOutput` nodes (resolved/partial/blocked) | Detect problem classes the pipeline repeatedly fails; seed the curated library |
|
|
19
|
+
|
|
20
|
+
## Cadence
|
|
21
|
+
|
|
22
|
+
- Per sprint close: run queries 1–3, 6 (cost + flow health).
|
|
23
|
+
- Every ~3 sprints: run queries 4, 5, 7 (structural + library health).
|
|
24
|
+
|
|
25
|
+
## Owner
|
|
26
|
+
|
|
27
|
+
Nehemiah + Bezalel review the outputs at sprint close and decide actions
|
|
28
|
+
(retiering, MCP pruning, library updates, refactor flags). The improvement layer
|
|
29
|
+
surfaces; the orchestrators act.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# MISHKAN model routing — Claude tiers only (decision D-002, no local models).
|
|
2
|
+
# AUTHORITATIVE: the PreToolUse hook hooks/model-route.py reads this file on
|
|
3
|
+
# every Task/Agent call and injects `model` for any agent LISTED below, which
|
|
4
|
+
# overrides that agent's frontmatter `model:`. So this file is the single source
|
|
5
|
+
# of truth for the 45 MISHKAN agents. Agents NOT listed here (e.g. aiobi-ops,
|
|
6
|
+
# Explore) are left untouched and keep their own frontmatter model. Three tiers:
|
|
7
|
+
# opus, sonnet, haiku. (Edit here, not frontmatter — frontmatter is the fallback
|
|
8
|
+
# used only if the hook is removed.)
|
|
9
|
+
#
|
|
10
|
+
# Rationale per tier:
|
|
11
|
+
# opus — orchestration, team leadership, knowledge publication (judgement-heavy)
|
|
12
|
+
# sonnet — anything that WRITES code/config into the codebase (precision matters
|
|
13
|
+
# on Y4NN's code) + senior specialists + research clarify/formulate/research
|
|
14
|
+
# haiku — agents that do NOT write code: QA (evaluate-only), Reporters
|
|
15
|
+
# (collect-only), pure advisors (Deborah, Rehum), research
|
|
16
|
+
# summarise/evaluate/report. Cost-sensitive, no precision risk to code.
|
|
17
|
+
|
|
18
|
+
defaults:
|
|
19
|
+
unlisted_agent: sonnet # documented default tier for a NEW mishkan agent not
|
|
20
|
+
# yet added below. NOT hook-enforced on foreign agents
|
|
21
|
+
# (they keep their own model). Add new agents to the map.
|
|
22
|
+
|
|
23
|
+
agents:
|
|
24
|
+
# Orchestration
|
|
25
|
+
nehemiah: opus
|
|
26
|
+
bezalel: opus
|
|
27
|
+
|
|
28
|
+
# Research pipeline
|
|
29
|
+
jakin: sonnet
|
|
30
|
+
ezra: sonnet
|
|
31
|
+
caleb: sonnet
|
|
32
|
+
shaphan: haiku
|
|
33
|
+
shemaiah: haiku
|
|
34
|
+
baruch: haiku
|
|
35
|
+
|
|
36
|
+
# Mishmar (Security)
|
|
37
|
+
phinehas: opus # lead
|
|
38
|
+
ira: sonnet
|
|
39
|
+
benaiah: sonnet
|
|
40
|
+
joab: sonnet
|
|
41
|
+
hushai: sonnet
|
|
42
|
+
maaseiah: haiku # reporter
|
|
43
|
+
|
|
44
|
+
# Yasad (Backend)
|
|
45
|
+
zerubbabel: opus # lead
|
|
46
|
+
nathan: sonnet # architecture
|
|
47
|
+
zadok: sonnet # contracts / design system
|
|
48
|
+
hizkiah: sonnet # implementation — writes backend code
|
|
49
|
+
shallum: sonnet # databases
|
|
50
|
+
uriah: haiku # QA
|
|
51
|
+
igal: haiku # reporter
|
|
52
|
+
|
|
53
|
+
# Chosheb (Design)
|
|
54
|
+
aholiab: opus # lead
|
|
55
|
+
hiram: sonnet # writes prototype code
|
|
56
|
+
deborah: haiku # advisory only, no code
|
|
57
|
+
elasah: haiku # reporter
|
|
58
|
+
|
|
59
|
+
# Panim (Frontend)
|
|
60
|
+
huram: opus # lead
|
|
61
|
+
oholiab: sonnet # design system expert
|
|
62
|
+
salma: sonnet # writes frontend code
|
|
63
|
+
obed: sonnet # writes asset-pipeline config
|
|
64
|
+
asaph: sonnet # remediates markup
|
|
65
|
+
jahaziel: haiku # QA — evaluate only
|
|
66
|
+
ahikam: haiku # reporter
|
|
67
|
+
|
|
68
|
+
# Migdal (Infrastructure)
|
|
69
|
+
eliashib: opus # lead
|
|
70
|
+
meshullam: sonnet # infra design
|
|
71
|
+
palal: sonnet # writes system configs/scripts
|
|
72
|
+
meremoth: sonnet # writes CI/pipeline code
|
|
73
|
+
hanun: sonnet # writes hardening/observability config
|
|
74
|
+
rehum: haiku # advisor — no code
|
|
75
|
+
zaccur: haiku # reporter
|
|
76
|
+
|
|
77
|
+
# Sefer (Documentation)
|
|
78
|
+
jehoshaphat: opus # lead
|
|
79
|
+
seraiah: sonnet
|
|
80
|
+
joah: sonnet
|
|
81
|
+
shevna: haiku
|
|
82
|
+
jehonathan: opus # knowledge publication
|
|
83
|
+
huldah: haiku # reporter
|
|
84
|
+
|
|
85
|
+
# Tier totals: opus=9, sonnet=22, haiku=14 (45 agents)
|
|
86
|
+
# Principle: any agent that writes code/config into the codebase runs on Sonnet
|
|
87
|
+
# (precision on Y4NN's code). Haiku only for evaluate/collect/advise roles.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# MISHKAN project registry — portable, NOT machine-bound.
|
|
2
|
+
# The cross-project dependency audit discovers projects rather than hardcoding
|
|
3
|
+
# paths. Resolution order:
|
|
4
|
+
# 1. $MISHKAN_WORKSPACE env var, if set
|
|
5
|
+
# 2. workspace_root below, if set (supports ~ and $HOME)
|
|
6
|
+
# 3. the current working directory's parent
|
|
7
|
+
# Under the resolved workspace root, every git repository is treated as a project
|
|
8
|
+
# (excluding the dirs below). Set explicit `project_roots` only to override
|
|
9
|
+
# discovery. Ship with discovery on and no hardcoded paths.
|
|
10
|
+
|
|
11
|
+
workspace_root: "" # e.g. "~/Projects" — empty = auto (env or cwd parent)
|
|
12
|
+
|
|
13
|
+
project_roots: [] # explicit override; empty = discover git repos under workspace_root
|
|
14
|
+
|
|
15
|
+
# Manifest/lockfile filenames the audit looks for in each project (recursively,
|
|
16
|
+
# excluding the dirs below).
|
|
17
|
+
manifest_globs:
|
|
18
|
+
- package.json
|
|
19
|
+
- pnpm-lock.yaml
|
|
20
|
+
- requirements*.txt
|
|
21
|
+
- pyproject.toml
|
|
22
|
+
- poetry.lock
|
|
23
|
+
- uv.lock
|
|
24
|
+
- go.mod
|
|
25
|
+
- Cargo.toml
|
|
26
|
+
- composer.json
|
|
27
|
+
- composer.lock
|
|
28
|
+
- pom.xml
|
|
29
|
+
- build.gradle
|
|
30
|
+
|
|
31
|
+
exclude_dirs:
|
|
32
|
+
- node_modules
|
|
33
|
+
- vendor
|
|
34
|
+
- .git
|
|
35
|
+
- dist
|
|
36
|
+
- build
|
|
37
|
+
- .venv
|
|
38
|
+
- target
|