d2f08d6113
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
169 lines
7.4 KiB
Markdown
169 lines
7.4 KiB
Markdown
# 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 by `area` matches all `area/*` 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 `kind` is 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/:id` groups 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 `fastembed` embeddings; no external model).
|
|
- **Proactive knowledge-injection** — the plugin's `UserPromptSubmit` hook 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 `SessionStart` hook 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](api-keys-and-mcp.md).
|
|
|
|
## Sharing and Collaboration
|
|
|
|
- **Share** — Share any project, note, or task with users or groups at
|
|
`viewer`/`editor`/`admin` levels from the viewer/project toolbar.
|
|
- **Groups** — Admins create platform-wide groups and assign `member`/`owner` roles;
|
|
share a resource with a group in one action.
|
|
- **Shared with me** — `/shared` lists 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](sso-oauth.md).
|
|
|
|
## 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 |
|