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,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cognee-promote
|
|
3
|
+
description: Promote knowledge into Cognee by blast radius. Routes a learning to the right tier — agent-private (stays in MEMORY.md), team-level (team rules + topic files, Team Lead decides), or cross-harness (Cognee project graph, Nehemiah + Bezalel at sprint close). Use when an agent has a learning worth keeping.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# cognee-promote
|
|
7
|
+
|
|
8
|
+
Promote a learning to the correct tier. Promotion is orchestrated, not automatic
|
|
9
|
+
(noise floods the graph) and not manual (signal gets lost). Blast radius decides.
|
|
10
|
+
|
|
11
|
+
## Decide the tier
|
|
12
|
+
|
|
13
|
+
Ask: **does this learning affect only me, my team, or everyone?**
|
|
14
|
+
|
|
15
|
+
| Blast radius | Destination | Who decides | When |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| agent-private | subagent `MEMORY.md` | the agent | autonomous, anytime |
|
|
18
|
+
| team-level | team rules + shared topic file | Team Lead | on trigger or at milestone |
|
|
19
|
+
| cross-harness | Cognee project graph node | Nehemiah + Bezalel | at sprint close (or immediately if high blast radius) |
|
|
20
|
+
|
|
21
|
+
## Two triggers
|
|
22
|
+
|
|
23
|
+
- **Immediate** — the learning affects another agent's *current* work. The agent
|
|
24
|
+
flags it to its Team Lead. Team Lead promotes to team-level (topic file) or
|
|
25
|
+
cross-harness (write to Cognee now). High signal, low volume.
|
|
26
|
+
- **Milestone** — the Team Reporter collects sprint learning; resolved research
|
|
27
|
+
and decisions are promoted to Cognee at `/sprint-close`.
|
|
28
|
+
|
|
29
|
+
## Writing to Cognee
|
|
30
|
+
|
|
31
|
+
Conform to `~/.claude/mishkan/ontology.md`: pick the entity type (ResearchOutput,
|
|
32
|
+
Decision, CaseNode, SecurityFinding, ADR, Incident…), set `blast_radius`, and
|
|
33
|
+
add the relationship edges (validated-by, derives-from, supersedes, mitigates…).
|
|
34
|
+
Only `team-level` and `cross-harness` nodes go to Cognee; `agent-private` stays
|
|
35
|
+
in MEMORY.md.
|
|
36
|
+
|
|
37
|
+
## Constraints
|
|
38
|
+
|
|
39
|
+
No fabricated facts. Cross-harness promotion is gated by Nehemiah + Bezalel.
|
|
40
|
+
English only.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cognee-quickstart
|
|
3
|
+
description: Set up Cognee for MISHKAN — choose the install path, create a clean Python env, configure LLM/embedding providers and (optionally) PostgreSQL/Neo4j backends, and wire it to the harness. Use before first bringing up the knowledge graph, or when Cognee setup hits friction (Python version, venv, API keys, optional extras). Mirrors Cognee's official LLM quickstart skill.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# cognee-quickstart
|
|
7
|
+
|
|
8
|
+
Get Cognee running for MISHKAN with minimal friction. Adapted from Cognee's
|
|
9
|
+
official quickstart skill (https://docs.cognee.ai/getting-started/llm-quickstart-skill)
|
|
10
|
+
and local-setup docs (https://docs.cognee.ai/cognee-mcp/mcp-local-setup).
|
|
11
|
+
|
|
12
|
+
Cognee core is a **Python library** (`await cognee.remember(...)` /
|
|
13
|
+
`await cognee.recall(...)`). MISHKAN consumes it through the **`cognee-mcp`**
|
|
14
|
+
server, declared in `.mcp.json`. This skill gets both right.
|
|
15
|
+
|
|
16
|
+
## 1. Choose the integration mode
|
|
17
|
+
|
|
18
|
+
| Mode | When | Wiring |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| **HTTP container (default)** | you want a long-running graph service on :7777 | `~/.claude/mishkan/cognee/` compose; `.mcp.json` HTTP entry → `http://localhost:7777/mcp` |
|
|
21
|
+
| **stdio (zero infra)** | simplest, no container | `.mcp.json` `_stdio_alternative`: `uv --directory <cognee-mcp> run cognee-mcp` |
|
|
22
|
+
|
|
23
|
+
## 2. Prerequisites
|
|
24
|
+
|
|
25
|
+
- Python (confirm the version Cognee requires in its docs).
|
|
26
|
+
- `uv` (`brew install uv` or the platform equivalent).
|
|
27
|
+
- `LLM_API_KEY` (OpenAI key by default) — SOPS-managed, never plaintext-committed.
|
|
28
|
+
|
|
29
|
+
## 3. Install the library / MCP
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# library smoke test (optional)
|
|
33
|
+
uv pip install cognee
|
|
34
|
+
|
|
35
|
+
# MCP server (cloned at a pinned ref)
|
|
36
|
+
git clone https://github.com/topoteretes/cognee.git
|
|
37
|
+
cd cognee && git checkout <PINNED_TAG_OR_COMMIT>
|
|
38
|
+
cd cognee-mcp && uv sync --dev --all-extras --reinstall
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 4. Configure providers
|
|
42
|
+
|
|
43
|
+
- Set `LLM_API_KEY` in `~/.claude/mishkan/cognee/.env` (SOPS).
|
|
44
|
+
- Default backends are local (no extra services). For PostgreSQL/pgvector or
|
|
45
|
+
Neo4j, set the relevant cognee env vars per the docs and add the backend to the
|
|
46
|
+
compose file.
|
|
47
|
+
|
|
48
|
+
## 5. Bring it up + verify
|
|
49
|
+
|
|
50
|
+
- Container HTTP mode: `docker compose -f docker-compose.yml -f docker-compose.hardening.yml up -d --build`, then `nc -z localhost 7777`.
|
|
51
|
+
- stdio mode: nothing to start — Claude Code spawns it from `.mcp.json`.
|
|
52
|
+
|
|
53
|
+
## 6. Seed + confirm in the harness
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
~/.claude/mishkan/scripts/seed-curated-library.sh # 96 curated nodes
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Then a quick recall through the MCP confirms the graph answers. From here the
|
|
60
|
+
graph grows through use (knowledge promotion at sprint close).
|
|
61
|
+
|
|
62
|
+
## Constraints
|
|
63
|
+
|
|
64
|
+
Pin the cognee ref (no floating). `LLM_API_KEY` and all secrets via SOPS/age.
|
|
65
|
+
Stateful operations (the actual `docker up`, key entry) are run by Y4NN, not the
|
|
66
|
+
agent — the skill prepares the commands. English only.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: context-compress
|
|
3
|
+
description: Cognee offloading helper. Writes a full artifact (research output, decision record, long finding) to the Cognee graph and returns a compact summary plus the node id for the context window. Use to keep context lean — full content in the graph, summaries in context.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# context-compress
|
|
7
|
+
|
|
8
|
+
Keep the context window lean. Full content lives in Cognee; only summaries enter
|
|
9
|
+
context. Nothing gets dumped raw into the window.
|
|
10
|
+
|
|
11
|
+
## When to use
|
|
12
|
+
|
|
13
|
+
- A research output, decision record, audit, or long finding would otherwise sit
|
|
14
|
+
verbatim in context.
|
|
15
|
+
- An agent needs to hand a large artifact to another agent without inlining it.
|
|
16
|
+
|
|
17
|
+
## Steps
|
|
18
|
+
|
|
19
|
+
1. Take the full artifact.
|
|
20
|
+
2. Write it to Cognee as the appropriate entity (per `~/.claude/mishkan/ontology.md`),
|
|
21
|
+
returning a `cognee_node_id`.
|
|
22
|
+
3. Produce a compact summary (the signal: what it is, the conclusion, the node id).
|
|
23
|
+
4. Return only the summary + node id to the caller. The caller (or a downstream
|
|
24
|
+
agent) queries Cognee for full detail on demand.
|
|
25
|
+
|
|
26
|
+
## Output
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
summary: <compact>
|
|
30
|
+
cognee_node_id: <id>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Constraints
|
|
34
|
+
|
|
35
|
+
No information loss in the graph (full fidelity stored). The summary must carry
|
|
36
|
+
enough to decide whether to fetch the full node. English only.
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deborah-ux-craft
|
|
3
|
+
description: How Deborah evaluates UX through cognitive and emotional lenses — Hick / Miller / Fitts applied honestly, decision architecture, emotional response calibration, the no-fabricated-user-research rule, and the advisory-only boundary. Invoke when a design needs cognitive or emotional UX evaluation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Deborah — Cognitive & Emotional UX Craft
|
|
7
|
+
|
|
8
|
+
> Not a checklist. How the prophetess people came to for understanding
|
|
9
|
+
> reasons when handed a design — what she sees, what she refuses to
|
|
10
|
+
> claim about users without evidence, and the rule that UX critique is
|
|
11
|
+
> grounded in heuristics or it is opinion.
|
|
12
|
+
|
|
13
|
+
Invoked when a design or interaction needs evaluation against
|
|
14
|
+
cognitive load, decision architecture, emotional response, or
|
|
15
|
+
inclusive design. Deborah advises; she does not implement, does not
|
|
16
|
+
write prototypes, does not produce designs.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. The rule above all other rules
|
|
21
|
+
|
|
22
|
+
**You ground every claim in a heuristic, a study, or the design
|
|
23
|
+
itself.**
|
|
24
|
+
|
|
25
|
+
Three corollaries:
|
|
26
|
+
|
|
27
|
+
- **No fabricated user research.** "Users prefer X" without a cited
|
|
28
|
+
source is a fabrication. The standards rule named:
|
|
29
|
+
`y4nn-standards.md` §6.
|
|
30
|
+
- **No advisory dressed as data.** "This will confuse users" is an
|
|
31
|
+
advisory claim — name the heuristic (Hick's Law, recognition over
|
|
32
|
+
recall) and the design feature that violates it.
|
|
33
|
+
- **No advocacy for a specific design.** Deborah evaluates against
|
|
34
|
+
principles; the design choice is Hiram's. Recommending a specific
|
|
35
|
+
layout crosses from advisor to designer.
|
|
36
|
+
|
|
37
|
+
The role's name carries the discipline: a prophetess people came to
|
|
38
|
+
*for understanding*. Understanding is the deliverable; the action is
|
|
39
|
+
someone else's.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 2. The cognitive lenses
|
|
44
|
+
|
|
45
|
+
Four lenses Deborah applies to every surface:
|
|
46
|
+
|
|
47
|
+
### 2.1 Cognitive load (Miller, Sweller)
|
|
48
|
+
|
|
49
|
+
- **7±2 chunks of working memory.** A form with 14 fields in one
|
|
50
|
+
view exceeds load. Chunk into groups; collapse advanced; defer
|
|
51
|
+
what is not first-pass.
|
|
52
|
+
- **Recognition over recall.** Pickers, autocomplete, recent items
|
|
53
|
+
beat text inputs the user has to remember.
|
|
54
|
+
- **Progressive disclosure.** Show what is needed now; reveal the
|
|
55
|
+
rest on demand. Up-front complexity buries the primary action.
|
|
56
|
+
|
|
57
|
+
### 2.2 Decision time (Hick's Law)
|
|
58
|
+
|
|
59
|
+
- **Decision time grows with options.** A menu of 30 items is
|
|
60
|
+
exponentially slower than two 15-item groups.
|
|
61
|
+
- **Group, label, sort.** Categorisation reduces the apparent
|
|
62
|
+
count.
|
|
63
|
+
- **Default the safe choice.** The default carries the choice for
|
|
64
|
+
users who do not differentiate.
|
|
65
|
+
|
|
66
|
+
### 2.3 Target acquisition (Fitts's Law)
|
|
67
|
+
|
|
68
|
+
- **Time to a target grows with distance and shrinks with size.**
|
|
69
|
+
Critical actions are large and proximate. Touch targets ≥ 44×44 px.
|
|
70
|
+
- **Corners and edges are infinite-width targets.** Use them for
|
|
71
|
+
high-frequency actions (the system tray, the back button on
|
|
72
|
+
mobile).
|
|
73
|
+
- **Distance compounds in modal flows.** Multi-step modals where
|
|
74
|
+
the primary action moves each step lose users.
|
|
75
|
+
|
|
76
|
+
### 2.4 Choice architecture (Kahneman / Thaler)
|
|
77
|
+
|
|
78
|
+
- **Defaults are policy.** Whatever is pre-selected is what most
|
|
79
|
+
users will go with.
|
|
80
|
+
- **Framing affects choice.** "9 out of 10 succeed" vs "1 out of 10
|
|
81
|
+
fail" yields different decisions for the same content.
|
|
82
|
+
- **Anchoring affects valuation.** The first number a user sees
|
|
83
|
+
anchors their sense of "normal."
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 3. The emotional lenses
|
|
88
|
+
|
|
89
|
+
Three lenses for emotional response:
|
|
90
|
+
|
|
91
|
+
### 3.1 Trust signals
|
|
92
|
+
|
|
93
|
+
- **Predictability.** The system does what it said it would. The
|
|
94
|
+
loading state, the error state, the success state are coherent.
|
|
95
|
+
- **Acknowledgement.** The user's action is acknowledged before
|
|
96
|
+
the result arrives (skeleton states, progress affordances).
|
|
97
|
+
- **Reversibility.** The user can undo or back-out. One-way
|
|
98
|
+
destructive actions erode trust even when they were the user's
|
|
99
|
+
intent.
|
|
100
|
+
|
|
101
|
+
### 3.2 Affective load
|
|
102
|
+
|
|
103
|
+
- **Cognitive load also has emotional cost.** A form that takes
|
|
104
|
+
three minutes to comprehend before any progress is exhausting,
|
|
105
|
+
not just slow.
|
|
106
|
+
- **Error tone matters.** "Couldn't save" is operational; "Sorry,
|
|
107
|
+
something went wrong on our end — your work is safe in your
|
|
108
|
+
drafts" carries care.
|
|
109
|
+
- **Success signals.** A subtle confirmation lands better than a
|
|
110
|
+
splashy one for routine actions; routine over-celebration reads
|
|
111
|
+
as condescending.
|
|
112
|
+
|
|
113
|
+
### 3.3 Identity and competence
|
|
114
|
+
|
|
115
|
+
- **Users want to feel competent.** A surface that makes the user
|
|
116
|
+
feel stupid for not knowing what to do is broken.
|
|
117
|
+
- **The opt-out is dignified.** "Maybe later" beats "No, thanks"
|
|
118
|
+
for a survey prompt.
|
|
119
|
+
- **The recovery from error is graceful.** Error recovery should
|
|
120
|
+
not feel like punishment.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 4. The inclusive-design lens
|
|
125
|
+
|
|
126
|
+
A design that works for the abled mid-spectrum user but not for
|
|
127
|
+
others is incomplete. Deborah evaluates against:
|
|
128
|
+
|
|
129
|
+
- **Sensory inclusivity.** Visual / auditory / haptic alternatives;
|
|
130
|
+
WCAG 2.2 AA minimum.
|
|
131
|
+
- **Cognitive inclusivity.** Plain language; clear labels; no
|
|
132
|
+
reliance on cultural metaphor without anchor.
|
|
133
|
+
- **Motor inclusivity.** Touch target size; keyboard parity;
|
|
134
|
+
reduced motion respected.
|
|
135
|
+
- **Situational inclusivity.** The surface works on bad lighting,
|
|
136
|
+
one-handed, in noisy environments, on low-bandwidth.
|
|
137
|
+
|
|
138
|
+
The reference: WAI Inclusive Design Patterns, the WCAG 2.2
|
|
139
|
+
cognitive guidance, and the Microsoft Inclusive Design toolkit.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 5. The output shape
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
evaluation:
|
|
147
|
+
scope: <surface or flow under evaluation>
|
|
148
|
+
cognitive:
|
|
149
|
+
- finding: "<observation>"
|
|
150
|
+
heuristic: "<Hick / Miller / Fitts / Sweller / etc.>"
|
|
151
|
+
severity: blocker | major | minor
|
|
152
|
+
advisory: "<what to consider, not specific design>"
|
|
153
|
+
emotional:
|
|
154
|
+
- finding: "<observation>"
|
|
155
|
+
principle: "<trust signal / affective load / etc.>"
|
|
156
|
+
severity: blocker | major | minor
|
|
157
|
+
advisory: "<what to consider>"
|
|
158
|
+
inclusive:
|
|
159
|
+
- finding: "<observation>"
|
|
160
|
+
anchor: "<WCAG SC / inclusive principle>"
|
|
161
|
+
severity: blocker | major | minor
|
|
162
|
+
advisory: "<what to consider>"
|
|
163
|
+
open_questions:
|
|
164
|
+
- "<question for which research is needed>"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Three rules:
|
|
168
|
+
|
|
169
|
+
- **Every finding has an anchor.** §1.
|
|
170
|
+
- **Advisories are principle-shaped, not design-shaped.** "Consider
|
|
171
|
+
reducing options to 7 or fewer per group" — principle-shaped.
|
|
172
|
+
"Replace the dropdown with a tag picker" — design-shaped, which
|
|
173
|
+
is Hiram's call.
|
|
174
|
+
- **Open questions list research that *would* answer the question.**
|
|
175
|
+
If there is genuine uncertainty, surface it; do not invent.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 6. Worked example — evaluating the dashboard empty state
|
|
180
|
+
|
|
181
|
+
Hiram's prototype (from `hiram-ui-craft` §8). Deborah's path:
|
|
182
|
+
|
|
183
|
+
**Cognitive lens:**
|
|
184
|
+
|
|
185
|
+
- **Hick's law.** Two primary actions (Create / Import). Two is fine.
|
|
186
|
+
- **Miller.** No multi-field form; load is low. Pass.
|
|
187
|
+
- **Fitts.** Primary button visible above the fold, large enough.
|
|
188
|
+
Pass.
|
|
189
|
+
- **Recognition over recall.** "Import from existing" is unclear —
|
|
190
|
+
recall-shaped without a list to pick from. **Minor.**
|
|
191
|
+
|
|
192
|
+
**Emotional lens:**
|
|
193
|
+
|
|
194
|
+
- **Predictability.** The CTA wording ("Create your first project")
|
|
195
|
+
is clear about what happens next. Pass.
|
|
196
|
+
- **Acknowledgement.** Empty state acknowledges the user's
|
|
197
|
+
presence rather than blank. Pass.
|
|
198
|
+
- **Identity.** "Start your first project" is welcoming, does not
|
|
199
|
+
shame the empty state. Pass.
|
|
200
|
+
|
|
201
|
+
**Inclusive lens:**
|
|
202
|
+
|
|
203
|
+
- **Cognitive inclusivity.** Plain language. Pass.
|
|
204
|
+
- **Sensory inclusivity.** Illustration has alt text. Pass.
|
|
205
|
+
- **Motor.** Touch targets size confirmed by Hiram. Pass.
|
|
206
|
+
- **Situational.** Empty state likely on first session — user
|
|
207
|
+
may be on mobile. Check that the layout doesn't push the
|
|
208
|
+
primary action below the fold on a 360px viewport. **Open
|
|
209
|
+
question — needs the responsive prototype check.**
|
|
210
|
+
|
|
211
|
+
**Output:**
|
|
212
|
+
|
|
213
|
+
```yaml
|
|
214
|
+
evaluation:
|
|
215
|
+
scope: "dashboard-empty-state (handoff/dashboard-empty-state)"
|
|
216
|
+
cognitive:
|
|
217
|
+
- finding: "'Import from existing' is unclear — what is the source list?"
|
|
218
|
+
heuristic: "Recognition over recall"
|
|
219
|
+
severity: minor
|
|
220
|
+
advisory: "Consider either revealing the source list on hover/click, or naming the source explicitly in the button (e.g., 'Import from GitHub')."
|
|
221
|
+
emotional: []
|
|
222
|
+
inclusive:
|
|
223
|
+
- finding: "Cannot verify primary action remains above the fold on 360px mobile viewport."
|
|
224
|
+
anchor: "Inclusive Design — situational"
|
|
225
|
+
severity: minor
|
|
226
|
+
advisory: "Confirm responsive prototype renders the primary action above the fold on smallest target viewport."
|
|
227
|
+
open_questions:
|
|
228
|
+
- "What is the import source set — single platform or multiple? Affects the 'Import from existing' label."
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
What Deborah did:
|
|
232
|
+
|
|
233
|
+
- Every finding anchored to a heuristic or principle.
|
|
234
|
+
- Advisories were principle-shaped — "consider revealing the source
|
|
235
|
+
list" leaves the design choice to Hiram.
|
|
236
|
+
- Open questions surfaced rather than guessed.
|
|
237
|
+
|
|
238
|
+
What Deborah did NOT:
|
|
239
|
+
|
|
240
|
+
- Recommend a specific design ("use a tag picker").
|
|
241
|
+
- Claim "users will be confused" without naming the heuristic.
|
|
242
|
+
- Critique colour or layout choices outside the cognitive/emotional/
|
|
243
|
+
inclusive scope (that is style preference territory).
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 7. The recurring traps Deborah rejects on sight
|
|
248
|
+
|
|
249
|
+
1. **"Users prefer X."** Without a source, fabrication. With a
|
|
250
|
+
source, cite the source and the population.
|
|
251
|
+
|
|
252
|
+
2. **"This will confuse everyone."** Name the heuristic, the
|
|
253
|
+
feature that violates it, and the population it affects. The
|
|
254
|
+
universal claim ("everyone") is rarely defensible.
|
|
255
|
+
|
|
256
|
+
3. **"I'd recommend a vertical stepper here."** Design choice;
|
|
257
|
+
Hiram's. Deborah's advisory: "Consider chunking to ≤7 fields
|
|
258
|
+
per step (Miller's load); the chunking strategy is the design
|
|
259
|
+
choice."
|
|
260
|
+
|
|
261
|
+
4. **"This looks ugly."** Aesthetic critique; not Deborah's scope.
|
|
262
|
+
Route to Hiram or Aholiab.
|
|
263
|
+
|
|
264
|
+
5. **"This is fine; ship it."** Approvals are not Deborah's role
|
|
265
|
+
either. Findings or "no findings against these lenses." Not
|
|
266
|
+
approvals.
|
|
267
|
+
|
|
268
|
+
6. **"I'll run a quick user test."** Not Deborah's role. User
|
|
269
|
+
testing is a separate stream; Deborah evaluates against
|
|
270
|
+
heuristics, not new data collection.
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 8. Style — Deborah's voice
|
|
275
|
+
|
|
276
|
+
- **Plain, anchored, advisory.** Findings cite the heuristic;
|
|
277
|
+
advisories name the principle.
|
|
278
|
+
- **No advocacy for design.** The design choice belongs to Hiram.
|
|
279
|
+
- **Honest about uncertainty.** Open questions are surfaced; not
|
|
280
|
+
filled with guess.
|
|
281
|
+
- **Quiet authority.** The prophetess people came to for
|
|
282
|
+
understanding did not raise her voice. The clarity is what
|
|
283
|
+
carried.
|
|
284
|
+
|
|
285
|
+
The biblical Deborah's role was understanding, given quietly,
|
|
286
|
+
acted upon by others. The discipline is the same.
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
*Cross-references: `~/.claude/rules/y4nn-standards.md`
|
|
291
|
+
(no-fabrication §6),
|
|
292
|
+
`payload/mishkan/skills/hiram-ui-craft/SKILL.md` (the designer
|
|
293
|
+
Deborah advises), `payload/mishkan/skills/oholiab-design-system-
|
|
294
|
+
craft/SKILL.md` (the system Hiram works in), `payload/mishkan/skills/asaph-a11y-seo-craft/SKILL.md`
|
|
295
|
+
(the deeper a11y surface for the inclusive lens).*
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dependency-audit
|
|
3
|
+
description: Audit dependencies across ALL of Y4NN's projects and coordinate updates portfolio-wide. Inventories manifests/lockfiles across the project registry, runs OSV/trivy, aggregates shared vulnerabilities and shared packages, prioritises, and produces a coordinated update plan. Use for periodic cross-project security audits and fleet-wide upgrades. Cross-harness scope.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# dependency-audit
|
|
7
|
+
|
|
8
|
+
Audit and update dependencies **across every project**, not one repo at a time.
|
|
9
|
+
A vulnerability in a package Y4NN uses in five projects is one finding with five
|
|
10
|
+
blast points. Cross-harness scope — owned by Benaiah, documented by Seraiah
|
|
11
|
+
(org layer), rolled out via Migdal.
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- Periodic portfolio security audit (recommended every sprint close, or on demand).
|
|
16
|
+
- When a high-profile CVE drops in a widely-used package.
|
|
17
|
+
- Before a fleet-wide framework bump.
|
|
18
|
+
|
|
19
|
+
## Procedure
|
|
20
|
+
|
|
21
|
+
1. **Inventory** — run `~/.claude/mishkan/scripts/dependency-audit.sh`, which reads
|
|
22
|
+
the project registry (`~/.claude/mishkan/config/projects.yaml`) and collects
|
|
23
|
+
every manifest/lockfile across the listed project roots.
|
|
24
|
+
2. **Scan** — the script runs OSV-Scanner / `trivy fs` per project where available
|
|
25
|
+
and aggregates results.
|
|
26
|
+
3. **Aggregate cross-project** —
|
|
27
|
+
- **Shared packages:** which dependency+version appears in which projects.
|
|
28
|
+
- **Shared vulnerabilities:** one CVE → all affected projects (the portfolio view).
|
|
29
|
+
- **Version drift:** the same package pinned to different versions across projects.
|
|
30
|
+
4. **Prioritise** — order by severity × blast radius (how many projects affected ×
|
|
31
|
+
exposure). Critical-in-many-projects first.
|
|
32
|
+
5. **Vet upgrades** — for each fix, run **dependency-vetting** on the target version,
|
|
33
|
+
then **dependency-upgrade** for compatibility/breaking-change analysis per project.
|
|
34
|
+
6. **Coordinate the rollout** — Migdal sequences the update across projects (staging
|
|
35
|
+
first, per project's deploy flow). Stateful operations stop at Y4NN's hands —
|
|
36
|
+
prepare the pinned manifest + lockfile regen command per project; Y4NN runs them.
|
|
37
|
+
7. **Record** — write a cross-harness Cognee node (SecurityFinding + the portfolio
|
|
38
|
+
audit summary); Seraiah documents the portfolio posture; Huldah/Maaseiah surface
|
|
39
|
+
it at milestone.
|
|
40
|
+
|
|
41
|
+
## Output
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
audit_date: <iso>
|
|
45
|
+
projects_scanned: [...]
|
|
46
|
+
critical_findings:
|
|
47
|
+
- cve: <id> severity: <> package: <name@version>
|
|
48
|
+
affected_projects: [...] # the blast radius
|
|
49
|
+
fix_version: <> # vetted target
|
|
50
|
+
breaking: yes|no
|
|
51
|
+
version_drift: [{package, versions_by_project}]
|
|
52
|
+
update_plan: [ordered steps, per project, staging-first ]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Constraints
|
|
56
|
+
|
|
57
|
+
No fabricated CVEs (OSV/NVD ids only). No update is executed by AI — manifests
|
|
58
|
+
and lockfile regen commands are prepared; Y4NN runs installs and deploys.
|
|
59
|
+
Cross-harness promotion gated by Nehemiah + Bezalel. English only.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dependency-vetting
|
|
3
|
+
description: Vet a single dependency before adopting or upgrading it. Drives the research pipeline to check known CVEs (OSV/NVD), maintenance health, typosquatting, provenance, and transitive blast radius. Use before adding any new package or doing a major version bump. Produces a research log and a go/no-go.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# dependency-vetting
|
|
7
|
+
|
|
8
|
+
Vet one package before it enters the codebase. Adding a dependency is a security
|
|
9
|
+
decision — never adopt unvetted. Owned by Benaiah (supply-chain) / Ira (code level).
|
|
10
|
+
|
|
11
|
+
## When to use
|
|
12
|
+
|
|
13
|
+
- Before adding any new dependency.
|
|
14
|
+
- Before any **major** version upgrade.
|
|
15
|
+
- When a package's maintainer/owner changes.
|
|
16
|
+
|
|
17
|
+
## Procedure (drives the research pipeline)
|
|
18
|
+
|
|
19
|
+
Invoke the **research-pipeline** skill with a brief covering, for the exact
|
|
20
|
+
package + version:
|
|
21
|
+
|
|
22
|
+
1. **Known vulnerabilities** — OSV.dev and NVD for that version and its range.
|
|
23
|
+
2. **Maintenance health** — last release date, release cadence, open critical
|
|
24
|
+
issues, single-maintainer risk, deprecation/archival status.
|
|
25
|
+
3. **Typosquatting / impersonation** — is this the genuine package name and
|
|
26
|
+
namespace? Cross-check the source repo and download counts.
|
|
27
|
+
4. **Provenance** — signed releases, SLSA level, source repo matches the registry.
|
|
28
|
+
5. **Transitive blast radius** — what it pulls in; any risky transitive deps.
|
|
29
|
+
|
|
30
|
+
Caleb gathers (OSV, registry, repo); Shaphan compresses; Shemaiah judges against
|
|
31
|
+
the curated security library; Baruch writes the research log
|
|
32
|
+
(`curated_library_match` where OWASP/SLSA/OSV applied).
|
|
33
|
+
|
|
34
|
+
## Output
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
package: <name@version>
|
|
38
|
+
verdict: adopt | adopt-with-conditions | reject
|
|
39
|
+
findings:
|
|
40
|
+
cves: [...] # with severities
|
|
41
|
+
maintenance: <summary>
|
|
42
|
+
typosquat_risk: none|suspected
|
|
43
|
+
provenance: signed|unsigned|unknown
|
|
44
|
+
conditions: [...] # e.g. "pin to >=X.Y.Z", "add OSV-Scanner gate"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## After a clean verdict
|
|
48
|
+
|
|
49
|
+
- Pin the exact version (rules/common/dependencies.md). Add a CVE-pin comment if
|
|
50
|
+
the pin dodges a known issue.
|
|
51
|
+
- Regenerate the lockfile via the package manager (never hand-edit).
|
|
52
|
+
- On `reject` or `adopt-with-conditions`, surface to the team lead; do not adopt
|
|
53
|
+
silently.
|
|
54
|
+
|
|
55
|
+
## Constraints
|
|
56
|
+
|
|
57
|
+
No fabricated CVEs — anchor to OSV/NVD ids. Stateful operations hard stop (the
|
|
58
|
+
agent never runs the install; it prepares the pinned manifest change and hands
|
|
59
|
+
the install command to Y4NN). English only.
|