From e9ab299b834c4176240b190d7acfa759ac0131fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabor=20K=C3=B6rber?= Date: Wed, 16 Sep 2026 18:09:42 +0200 Subject: [PATCH] =?UTF-8?q?goal:=20Igor=20project=20adoption=20flow=20?= =?UTF-8?q?=E2=80=94=20per-project=20config=20override=20+=20spire:init?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Igor's references/project.md ships read-only in the plugin cache with no mechanism for per-project override. Projects can't fill in the template, so Igor rediscovers basics each session. This goal captures the fix: project-local resolution, an init skill, and /assistant alias docs. --- docs/workpad/goals/igor-project-adoption.md | 31 +++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 docs/workpad/goals/igor-project-adoption.md diff --git a/docs/workpad/goals/igor-project-adoption.md b/docs/workpad/goals/igor-project-adoption.md new file mode 100644 index 0000000..69e351e --- /dev/null +++ b/docs/workpad/goals/igor-project-adoption.md @@ -0,0 +1,31 @@ +# Goal: Igor project adoption flow + +## Problem + +Igor's `references/project.md` is a per-project configuration template ("swap this file when adopting Igor"), but it ships read-only in the plugin cache (`~/.claude/plugins/cache/reliquary/spire/*/skills/igor/references/project.md`). There is no mechanism to actually swap it — every project gets the blank template, and Igor has to rediscover workpad location, verification commands, pinned agents, and conventions from scratch each session. + +The `@references/project.md` directive in the Igor skill loads the bundled file. Consuming projects cannot override it. + +## Acceptance criteria + +1. **Project-local override**: Igor's skill resolves `@references/project.md` from a project-local path first (e.g. `.claude/spire/project.md`), falling back to the bundled template if none exists. + +2. **`spire:init` skill**: A new skill (or extending an existing one) that: + - Copies the template to the project-local path + - Auto-fills what it can discover (workpad location via the workpad skill's resolution logic, agents from `.claude/agents/`, verification commands from Justfile/Makefile/package.json, conventions from CLAUDE.md) + - Leaves placeholders for what it can't discover (tome skill, domain skills, adept roster) + - Commits the result + +3. **`/assistant` as project alias**: Projects should be able to create a thin `.claude/skills/assistant.md` that invokes `spire:igor` with the project context pre-loaded. Document how to do this — or make it part of `spire:init`. + +4. **Backward compatible**: Projects without a local override continue to work (Igor orients from CLAUDE.md and codebase reads, as today). + +## Why + +Every Igor session currently spends its first minutes rediscovering project basics (workpad path, build commands, existing agents). This is wasted work that compounds across sessions. The template exists but can't be filled in, which is worse than not having one — it signals "configure me" with no way to do so. + +## Context + +Discovered while using Igor in the dirigent project. The workpad was at `docs/workpad/`, verification is `just check-all`, there are pinned agents in `.claude/agents/`, and conventions are in `CLAUDE.md` — but Igor had to figure all of this out from scratch because `project.md` was the blank template. + +The `@references/` mechanism may need a resolution chain: project-local → plugin-bundled. If `@` directives don't support this, the skill text itself could use a conditional read pattern.