docs(plugin): find the existing plan before making one, and file related work into it (#4080)
CI & Build / Python lint (push) Successful in 2s
CI & Build / Plugin hooks (push) Successful in 11s
CI & Build / integration (push) Successful in 57s
CI & Build / TypeScript typecheck (push) Successful in 1m15s
CI & Build / Python tests (push) Successful in 1m46s
CI & Build / Build & push image (push) Successful in 35s
CI & Build / Python lint (push) Successful in 2s
CI & Build / Plugin hooks (push) Successful in 11s
CI & Build / integration (push) Successful in 57s
CI & Build / TypeScript typecheck (push) Successful in 1m15s
CI & Build / Python tests (push) Successful in 1m46s
CI & Build / Build & push image (push) Successful in 35s
Step 5 of milestone 415 "An existing plan is found before a new one is made". Sessions opened a second milestone beside the roadmap milestone that already covered the work, and filed related tasks loose, because no surface told them to look first. - writing-plans: a section on finding the plan that exists (enter_project's unplanned_milestones, search(content_type="milestone"), list_milestones); when an active milestone covers the work, add steps to it; a second milestone only for a separate arc; the gate's existing_milestone reply. - using-scribe: "when you plan" gains the same check and milestone_id on related tasks. - _INSTRUCTIONS PLAN line points at the milestone search (1,689 of 2,000). - test_guidance_ownership pins the topic on writing-plans. - Plugin version minted: 2026.09.15.1744. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01821k5B3Ysecp9fNYs92Kuy
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "scribe",
|
||||
"description": "Scribe for Claude Code: connects the scribe MCP server, adds the hooks that deliver live project state and relevant records at the right moment, ships the shared client-neutral Scribe skills (using-scribe, writing-plans, reporting-back, systematic-debugging, verification, brainstorming, reusing-code, shape-accounting), and syncs your saved Scribe Processes as skills (/scribe:sync).",
|
||||
"version": "2026.09.15.1626",
|
||||
"version": "2026.09.15.1744",
|
||||
"author": {
|
||||
"name": "Bryan Van Deusen"
|
||||
},
|
||||
|
||||
@@ -111,6 +111,12 @@ Two constraints on *how* that's achieved:
|
||||
is just a task — don't wrap it in a milestone. Either way, do not write
|
||||
plans/specs to local `.md` files. See the **writing-plans** skill.
|
||||
|
||||
**Find the plan before you make one.** A project's existing milestones are
|
||||
often its roadmap, and a milestone with no steps yet is still open work.
|
||||
`search(content_type="milestone", project_id=...)` finds one by purpose. When
|
||||
an active milestone covers the work, add steps to it rather than opening
|
||||
another, and give any task you record for that work its `milestone_id`.
|
||||
|
||||
5. **Keep state honest.** Set a task `in_progress` when you start it, `done` the
|
||||
moment it's complete; log progress as you go. Always log when you
|
||||
**complete** a task and when you **hit or discover a problem**, so a change
|
||||
|
||||
@@ -26,6 +26,34 @@ a complete, honest record of work that didn't need a plan.
|
||||
Some projects are milestone-shaped and some are a flat task list. Read the
|
||||
project you are in rather than imposing a shape on it.
|
||||
|
||||
## Then look for the plan that already exists
|
||||
|
||||
Before you start a plan, find out whether the project already has one for this
|
||||
work. A roadmap is often written ahead of the work as milestones with a goal
|
||||
and no steps yet, and those are exactly the plans a session misses: they have
|
||||
nothing in them to show up as open tasks.
|
||||
|
||||
- `enter_project` lists the recent milestones and, under `unplanned_milestones`,
|
||||
the active ones with no steps.
|
||||
- `search(content_type="milestone", project_id=...)` finds a plan by what it is
|
||||
for. `list_milestones` reads the whole roadmap.
|
||||
|
||||
**When an active milestone already covers the work, the plan is that milestone.**
|
||||
Read it with `get_milestone`, add your steps with
|
||||
`create_records(milestone_id=<its id>, records=[…])`, and revise its body with
|
||||
`update_milestone` if what you know now changes the design. Opening a new
|
||||
milestone beside it splits one piece of work across two plans, and neither
|
||||
shows the whole. A second milestone is right only when the work is a separate
|
||||
arc: a different goal that would still make sense if the first plan were done.
|
||||
|
||||
The same holds for single tasks. Work that belongs to an existing plan is
|
||||
created with that milestone's `milestone_id`, not left loose beside it.
|
||||
|
||||
`start_planning` and `create_milestone` check too. When an active milestone in
|
||||
the project has the same title or reads as the same plan, they return it as
|
||||
`existing_milestone` and create nothing. Add to that plan, or pass `force=true`
|
||||
only when you have read it and this really is separate work.
|
||||
|
||||
## When it does: start the plan in Scribe, not a file
|
||||
|
||||
Call **`start_planning(project_id, title)`** before designing or implementing —
|
||||
@@ -59,7 +87,7 @@ record, not a file on disk. (The old `kind=plan` task is retired; `start_plannin
|
||||
no longer creates one.)
|
||||
|
||||
Before designing from scratch, **recall**: `search` Scribe for a related prior
|
||||
plan or decision. Often the thinking (or half of it) already exists.
|
||||
decision or note. Often the thinking (or half of it) already exists.
|
||||
|
||||
## What a good plan contains
|
||||
|
||||
|
||||
Reference in New Issue
Block a user