diff --git a/README.md b/README.md index df29bc6..efa1621 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A self-hosted work system-of-record for software projects, built to be driven by ## Features -Notes and tasks with a Markdown editor, sub-tasks, milestones, issues, and kanban project workspaces. Stored processes, an engineering rulebook system, and semantic search with proactive knowledge-injection into Claude's context. A knowledge graph, per-user/group sharing, and a built-in MCP server (`/mcp`) plus a bundled Claude Code plugin so Claude can record and recall your work directly. +Notes and tasks with a Markdown editor, sub-tasks, milestones, issues, and kanban project workspaces. Stored processes, an engineering rulebook system (with an inception step that decides what each project inherits), and semantic search with proactive knowledge-injection into Claude's context. A knowledge graph, per-user/group sharing, and a built-in MCP server (`/mcp`) plus a bundled Claude Code plugin so Claude can record and recall your work directly. ## Quick Start diff --git a/docs/api-reference.md b/docs/api-reference.md index 8fe527b..bc79aae 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -76,7 +76,9 @@ endpoint at `/mcp`, not these REST routes. | Method | Path | Description | |--------|------|-------------| | GET / POST | `/api/projects` | List (owned + shared) / create | -| GET / PATCH / DELETE | `/api/projects/:id` | Read (with `milestone_summary`) / update / delete | +| GET / PATCH / DELETE | `/api/projects/:id` | Read (with `milestone_summary`, `inception`) / update / delete | +| POST | `/api/projects/:id/inception` | Record what the project inherits `{choices: {exclude_always_on_rulebooks, subscribe_rulebooks, design_system_id, seed_systems}}` (owner-only; `POST /api/projects` accepts the same under `inception`) | +| GET | `/api/projects/:id/inception/defaults` | What binds if nobody decides — the inception card's payload | | GET | `/api/projects/:id/notes` | Notes + tasks in this project | | GET / POST | `/api/projects/:id/milestones` | List / create milestones | | GET / PATCH / DELETE | `/api/projects/:id/milestones/:mid` | Read / update / delete | @@ -118,6 +120,7 @@ endpoint at `/mcp`, not these REST routes. | POST | `/api/projects/:id/rules` | Create a project-scoped rule | | POST / DELETE | `/api/projects/:id/suppressions/rules/:rid` | Suppress / unsuppress a rule | | POST / DELETE | `/api/projects/:id/suppressions/topics/:tid` | Suppress / unsuppress a topic | +| POST / DELETE | `/api/projects/:id/exclusions/rulebooks/:rid` | Exclude / include an always-on rulebook for this project (inception) | ## Sharing diff --git a/plugin/.claude-plugin/plugin.json b/plugin/.claude-plugin/plugin.json index 1c468de..060cd99 100644 --- a/plugin/.claude-plugin/plugin.json +++ b/plugin/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "scribe", "description": "Scribe system-of-record for Claude Code: MCP tools over your notes/tasks/projects/rules, a session-start push channel that surfaces your always-on rules + active-project context, process-skills (writing-plans, systematic-debugging, verification, brainstorming, reusing-code), and your saved Scribe Processes auto-surfaced as skills (/scribe:sync). Replaces superpowers + file-memory with one app-backed plugin.", - "version": "0.1.37", + "version": "0.1.38", "author": { "name": "Bryan Van Deusen" }, "mcpServers": { "scribe": { diff --git a/plugin/skills/using-scribe/SKILL.md b/plugin/skills/using-scribe/SKILL.md index 29f17a3..9d1faa5 100644 --- a/plugin/skills/using-scribe/SKILL.md +++ b/plugin/skills/using-scribe/SKILL.md @@ -120,6 +120,28 @@ bound — confine the session to it: - If something clearly belongs to a *different* project, say so and **ask before switching** — never silently operate cross-project. +## Starting a project: decide what it inherits + +A project's inheritance is a **decision, not a default**. Before +`create_project`, ask the operator the four inception questions and pass the +answers — never create a project bare by default: + +- which **always-on rulebooks** it should NOT inherit (`list_rulebooks` shows + which are always_on; default: inherit them all) → + `exclude_always_on_rulebooks=[...]` +- which other rulebooks to **subscribe** → `subscribe_rulebooks=[...]` +- which **design system** its UI is built from (`list_design_systems`; or + none) → `design_system_id=` +- whether to **seed the standard starter Systems** so records can be tagged + from day one → `seed_systems=true|false` + +If `enter_project` returns an `inception` key, the project was never decided +(it inherits its defaults silently): raise that ask once, with the defaults it +carries, then `decide_project_inception(project_id, …)`. Existing projects +were stamped "legacy" (inherit-all) and do not ask; any project can be +re-decided. The rules/design-system/Systems tools still work one at a time — +inception is the moment they are decided together, and the record of why. + ## Where a new rule goes When codifying a rule, pick its home by **who it should bind** — and keep