@chorus-aidlc/chorus-pi 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chorus-aidlc/chorus-pi",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "Chorus AI-DLC collaboration platform extension for the Pi coding agent. Provides skills for every stage of the AI-DLC lifecycle, read-only reviewer subagents, and session-aware extension hooks. The Chorus MCP server is auto-discovered from the repo's .mcp.json by pi-mcp-adapter — no installer required.",
5
5
  "author": {
6
6
  "name": "Chorus-AIDLC"
@@ -15,6 +15,12 @@ Chorus is a work collaboration platform for AI Agents, enabling multiple Agents
15
15
 
16
16
  This is the **core skill** — it covers the platform overview, shared tools, and setup. For stage-specific workflows, use the dedicated skills listed in [Skill Routing](#skill-routing) below.
17
17
 
18
+ > **⚠️ Tool names under Pi — read this first.** Pi reaches the Chorus MCP server through `pi-mcp-adapter`, which **prefixes every tool with the server key `chorus`**. Throughout these skills tools are written with their bare name (`chorus_checkin`, `chorus_pm_create_idea`, …), but Pi does **not** register those bare names — a bare `chorus_checkin` call returns *"tool not found"*. Address each tool by its adapter name instead:
19
+ > - **Namespaced form (preferred):** `mcp__chorus__<tool>` — e.g. `mcp__chorus__chorus_checkin`, `mcp__chorus__chorus_pm_create_idea`.
20
+ > - **Flattened alias:** `chorus_<tool>` → the server prefix produces a **doubled** `chorus_chorus_*` (e.g. `chorus_chorus_pm_create_idea`). The double `chorus_` is expected, not a typo.
21
+ >
22
+ > So: wherever a skill names a tool `chorus_…`, call it as `mcp__chorus__chorus_…`. If a tool ever reads as *"not found"*, you almost certainly dropped the `mcp__chorus__` prefix. This is Pi-specific — Claude Code / Codex resolve the bare names directly.
23
+
18
24
  ---
19
25
 
20
26
  ## Overview
@@ -151,7 +157,7 @@ Projects can be organized into **Project Groups** — a single-level grouping th
151
157
 
152
158
  ### Reports
153
159
 
154
- A **report** is a short idea-completion summary persisted as a `type="report"` Document at end-of-Idea, authored via `chorus_create_report` (gated on `document:write`). The `content` parameter's description carries the three-section template (`## Summary` / `## Decisions` / `## Follow-ups`) — read it there. `/skill:yolo` writes one mandatorily; `/skill:develop` offers it advisorily on last-task verify; the extension nudges if neither fired.
160
+ A **report** is a short idea-completion summary persisted as a `type="report"` Document at end-of-Idea, authored via `chorus_create_report` (gated on `document:write`). The call requires `title` (a short report title) plus `content`; `content`'s parameter description carries the three-section template (`## Summary` / `## Decisions` / `## Follow-ups`) — read it there. `/skill:yolo` writes one mandatorily; `/skill:develop` offers it advisorily on last-task verify; the extension nudges if neither fired.
155
161
 
156
162
  ### References
157
163
 
@@ -259,7 +259,7 @@ Once Admin verifies (status: `done`), move to the next available task (back to S
259
259
 
260
260
  ### Step 11: Idea Completion Report (advisory)
261
261
 
262
- If the task you just self-verified was the LAST one of its Idea (every Task across every approved Proposal is now `done`/`closed`) and you have `document:write`, offer to call `chorus_create_report` via `AskUserQuestion`. The `content` parameter's description carries the section template. Skip on decline — the extension will remind on the next run.
262
+ If the task you just self-verified was the LAST one of its Idea (every Task across every approved Proposal is now `done`/`closed`) and you have `document:write`, offer to call `chorus_create_report` via `AskUserQuestion`. The call requires `title` (a short report title) plus `content`; `content`'s parameter description carries the three-section template (`## Summary` / `## Decisions` / `## Follow-ups`). Skip on decline — the extension will remind on the next run.
263
263
 
264
264
  ---
265
265
 
@@ -376,11 +376,18 @@ The hook is read-only; you (the agent) perform the archive:
376
376
 
377
377
  3. **Halt on any error** from `openspec archive` or `chorus_pm_update_document`. Print stderr verbatim, post a comment on the proposal recording the failure (`chorus_add_comment` with `targetType: "proposal"`, `targetUuid: <proposalUuid>`), then stop. No retry. Matches §6 "no silent errors." (Comment on the proposal, not the idea: the failure is in archiving proposal-derived specs, and proposals can be `inputType: "document"` with no idea attached.)
378
378
 
379
- 4. **Confirm success.** Resolve each matching Document UUID and run
380
- `verify-document-roundtrip.sh <local-spec-path> <document-uuid>`. This
381
- performs exact-byte comparison and metadata-only mismatch diagnostics. Do
382
- not replace it with recursive `jq`, `head`, command substitution, or newline
383
- normalization.
379
+ 4. **Confirm success.** For each capability, verify that
380
+ `openspec/specs/<capability>/spec.md` round-trips **byte-equal (modulo a
381
+ single trailing `\n`)** with its Chorus Document. The `--arg-file` mirror path
382
+ already guarantees this, so a spot check is enough: fetch the Document
383
+ `content` and `cmp` it against the local file. **Do NOT use `jq -r`** to
384
+ extract the content — it appends a trailing newline and manufactures a phantom
385
+ 1-byte drift (a spec that mirrored correctly will read as 1 byte longer on the
386
+ server). Use `jq -j` (no trailing newline) or `cmp` directly, and never rely
387
+ on recursive `jq`, `head`, command substitution, or newline normalization.
388
+ (Unlike the Claude Code / Kiro / Codex plugins, the `chorus-pi` package ships
389
+ no `verify-document-roundtrip.sh` — the `--arg-file` byte-equality guarantee
390
+ makes it unnecessary.)
384
391
 
385
392
  **Strict opt-in:** if the verified task is not the last of its idea, OR the proposal description carries no `OpenSpec change slug: <slug>` line, OR the local shell has no `openspec` CLI, the hook exits 0 silently and no archive reminder is injected. Existing free-form behavior is preserved.
386
393
 
@@ -159,7 +159,7 @@ In /yolo mode, the agent generates elaboration questions and answers them itself
159
159
  { id: "b", label: "<option B>" }
160
160
  ]
161
161
  }
162
- // ... 5-8 questions covering functional, technical, scope aspects
162
+ // ... 5-8 questions covering functional, technical_context, scope aspects
163
163
  ]
164
164
  })
165
165
  ```
@@ -514,7 +514,7 @@ After all waves complete, output a markdown summary:
514
514
 
515
515
  ### Phase 5b: Idea Completion Report (mandatory)
516
516
 
517
- A successful `/yolo` run always finishes the Idea — call `chorus_create_report` once with `proposalUuid` set to the last verified proposal. The `content` parameter's description carries the section template; follow it. Surface the returned `documentUuid` in the Phase 5 summary. Skipping is a protocol violation.
517
+ A successful `/yolo` run always finishes the Idea — call `chorus_create_report` once with `proposalUuid` set to the last verified proposal. The call requires `title` (a short report title) plus `content`; `content`'s parameter description carries the three-section template (`## Summary` / `## Decisions` / `## Follow-ups`); follow it. Surface the returned `documentUuid` in the Phase 5 summary. Skipping is a protocol violation.
518
518
 
519
519
  > **Order:** the completion report is written only **after** the Phase 4.5 code-review gateway returns PASS / PASS WITH NOTES. Never write it while a code-review FAIL is outstanding — the report is a ship-time summary, and the gateway is what clears the feature to ship.
520
520