Resolves issue #1778 — the docs still described the pre-pivot product (in-app LLM chat, journal, weather, web-research, push, model management) plus the just-removed calendar/entities. - features.md: full rewrite to the actual surfaces — notes, tasks & issues, projects/milestones (kanban), systems, rules & rulebooks, stored processes, search + knowledge-injection, graph, MCP + the Claude Code plugin, sharing, export/backup (v4), OIDC. Dropped chat/journal/weather/web-research/calendar/ push/workspace/model-management; fixed the shortcuts + settings tables. - api-reference.md: rewrite to the real endpoint surface (verified from the route decorators) — added Knowledge/Rulebooks/Systems/Plugin/Trash/Dashboard and the milestone/system sub-routes; removed Chat/Journal/Push/Quick-Capture/ Images/assist/models. - README.md: Quick Start no longer tells users to pull an Ollama model or size RAM/GPU "for LLM inference" — points at the API key + plugin instead. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BPtbSzA4JLMAKgFZ8VTg7Q
7.4 KiB
Features
Scribe is a self-hosted work system-of-record for software projects, built to be driven by Claude Code. There is no in-app LLM — Claude is the sole assistant, reaching Scribe through a built-in MCP endpoint and a bundled Claude Code plugin. The web UI is a clean surface for humans to read and edit the same data.
Notes
Write in Markdown with a live-preview editor (Tiptap/ProseMirror). Headings, bold,
italic, lists, code blocks, and task checklists render inline. A slash-command menu
(/) inserts common blocks.
- Wikilinks — Link notes with
[[Title]]or[[Title|Display Text]]. Clicking navigates to (or auto-creates) the referenced note; the editor suggests existing titles while you type[[. Backlinks appear in the note viewer sidebar. - Tags — First-class
ARRAY[text]column with autocomplete. Hierarchical tags (area/backend) supported — filtering byareamatches allarea/*children. - Version history — Every body edit snapshots a version (up to 20 per note). Browse, diff, and restore from the editor's History panel.
- Draft recovery — In-progress edits persist across page loads and are restored when you reopen a note.
- Convert freely — Turn a note into a task (sets
status=todo) or back again.
Tasks and Issues
Tasks carry status (todo → in_progress → done/cancelled), priority
(none/low/medium/high), due date, milestone assignment, and a parent task
(sub-tasks). Notes and tasks share one model — a task is a note with a status.
- Work logs — Append timestamped progress entries (with optional duration) to a task without rewriting its body; shown chronologically in the task view.
- Issues — A task whose
kindis corrective: a problem you fixed or are fixing, with symptom → root cause → fix in the body. An issue can link the task it arose from and the System(s) it touches. - Recurring tasks — An interval or calendar recurrence rule spawns the next occurrence when a task is completed (a background job drains due spawns).
- Sub-tasks — Any task can have children via
parent_id; the viewer shows them inline.
Projects and Milestones
- Projects — Group related notes and tasks. Title, description, goal, status
(
active/paused/completed/archived), and a colour. - Milestones — Ordered stages within a project. A milestone is also the home of a plan — its body holds the design (Goal/Approach/Verification) and its child tasks are the steps. Completion percentage is shown on the project page.
- Kanban view —
/projects/:idgroups tasks by milestone in a column layout with status-advance buttons on the cards.
Systems
A System is a per-project, reusable, self-describing subsystem or area (e.g. "auth", "billing"). Associate any note, task, or issue with a System so research, build-work, and fixes for the same area line up and recurring problem-spots surface.
Rules and Rulebooks
Scribe stores the operator's engineering and workflow rules so Claude follows them across sessions.
- Rulebooks → topics → rules — Rules are grouped by topic inside a rulebook.
- Always-on rules — A rulebook can be flagged always-on; its rules load at the start of every session through the plugin's push channel.
- Per-project scope — A project subscribes to rulebooks, and can add project-scoped rules or suppress individual inherited rules/topics.
Stored Processes
Reusable saved prompts (a note with note_type=process) — e.g. a drift-audit or a
DRY pass. The bundled plugin syncs each Process into a local Claude Code skill stub
(/scribe:sync) that auto-surfaces by relevance and fetches the live procedure on
demand.
Search and Knowledge Injection
- Semantic search — pgvector-backed similarity search over notes and tasks
(in-process
fastembedembeddings; no external model). - Proactive knowledge-injection — the plugin's
UserPromptSubmithook surfaces a short, high-confidence menu of maybe-relevant note titles into Claude's context each turn; Claude pulls a full body only when it judges it relevant. Gated so it stays quiet on most turns and never repeats within a session.
Knowledge Graph
/graph renders notes, tasks, and tags as a D3 force-directed graph. Tag nodes
cluster notes that share tags; invisible project hubs attract project members. Physics
controls (repulsion, link distance/strength, hub pull, gravity); click a node to peek,
click a tag to filter.
Claude via MCP and the plugin
The whole store is reachable by Claude through a built-in MCP endpoint at /mcp
(Bearer-auth with an API key). The Scribe Claude Code plugin (shipped in this
repo) wires it up:
- a
SessionStarthook that injects the operator's always-on rules + active-project context so Scribe surfaces without being asked (fail-open if Scribe is unreachable); - universal process-skills — writing-plans, systematic-debugging, verification, brainstorming — that route their output into Scribe;
- your saved Processes auto-surfaced as skills.
See API Keys & MCP.
Sharing and Collaboration
- Share — Share any project, note, or task with users or groups at
viewer/editor/adminlevels from the viewer/project toolbar. - Groups — Admins create platform-wide groups and assign
member/ownerroles; share a resource with a group in one action. - Shared with me —
/sharedlists incoming shares with permission badges. - Notifications — An in-app bell (unread count, polled) fires when a project or note is shared with you or you're added to a group.
Every read and mutation is scoped by owner + direct shares + group shares.
Data Export and Backup
- Personal export — download all your notes/tasks as a Markdown ZIP (YAML frontmatter) or a JSON array.
- Admin backup — full application backup/restore (format v4) with ID remapping on restore for cross-instance migration.
Progressive Web App
Installable as a desktop or mobile app; a service worker caches the shell.
Authentication
Native email + password, plus optional OIDC sign-in (Authentik, Keycloak, etc.) that links to a matching local account. Invite links, a registration toggle, password reset, and session invalidation are included. See SSO / OAuth.
Settings
| Tab | Contents |
|---|---|
| General | Instance preferences (key/value) |
| Account | Email change, password change, session invalidation |
| Profile | Per-user profile fields |
| Integrations | SearXNG status |
| Data | Personal export; backup / restore (admin) |
| API Keys | Create/revoke fmcp_ keys for the MCP endpoint |
| Config (admin) | Base URL, SMTP, DB-maintenance schedule |
| Users (admin) | User list, invite links, registration toggle |
| Logs (admin) | Error, audit, and usage logs with search |
| Groups (admin) | Create/manage groups and membership |
Keyboard Shortcuts
| Key | Action |
|---|---|
g + h |
Home (dashboard) |
g + n |
Notes |
g + t |
Knowledge (tasks) |
g + p |
Projects |
g + r |
Rulebooks |
g (bare) |
Graph |
g + x |
Trash |
n |
New note |
t |
New task |
/ |
Focus search |
? |
Show shortcuts panel |
j / k |
Navigate list items |
Enter |
Open selected item |
e |
Edit current item |
Esc |
Close panel / blur / go home (progressive) |
Ctrl+S |
Save in editor |