HOMELAB-1609: feat(pi-skills): port used rpiv-pi skills + review/scout agent charters #36

Merged
aaron merged 4 commits from plane/HOMELAB-1609-skills-agents into main 2026-09-20 17:46:12 +00:00
Owner

Skills+agents leg of HOMELAB-1609 (uninstall @juicesharp/rpiv-* after porting the used surface).

What

1. New pi-skills/ extension — vendors the four rpiv-pi skills with real usage evidence:

Skill Helpers vendored
code-review _helpers/review-range.mjs, templates/review.md
create-handoff _shared/{now,git-context}.mjs
resume-handoff _shared/list-recent.mjs
commit _shared/git-changes.mjs
  • Stripped the rpiv-workflow-only contract: frontmatter and the inert argument-hint key; kept shell-timeout (honored by the ported skill-args). Remaining keys: name, description, allowed-tools, shell-timeout — all pi-core-parsed.
  • code-review: removed the optional advisor-adjudication path and every advisor-tool reference; the inline dimension sweep remains. Kept the ask_user_question disambiguation step. Removed dead rpiv package paths (packages/rpiv-advisor/..., skills/design/SKILL.md, .rpiv/guidance/..., agents/claim-verifier.md).
  • Registration: resources_discover event (index.ts), mirroring lab-director — chosen over a package pi.skills manifest because this repo is consumed as a bare ~/.pi/agent/extensions/ directory, where package manifests are not read. Documented in pi-skills/README.md along with how $ARGUMENTS / ${SKILL_DIR} / ```! blocks work via the ported skill-args extension.
  • MIT attribution preserved: pi-skills/LICENSE + root NOTICE.

2. 15 agent charters into pi-swarm-suite/agents/ — artifact-code-reviewer, artifact-coverage-reviewer, artifacts-analyzer, artifacts-locator, claim-verifier, codebase-analyzer, codebase-locator, codebase-pattern-finder, diff-auditor, integration-scanner, peer-comparator, precedent-locator, scope-tracer, slice-verifier, web-search-researcher. All 15 already carried model: deepseek/deepseek-flash, so no pin needed adding (the ticket brief assumed deepseek/deepseek-v4-flash via ~/.config/rpiv-pi/models.json; the on-disk charters already pin the deepseek-flash alias). pi-swarm-suite/README.md's charter-install step now documents all shipped charters.

Discrepancy vs the brief

The brief said "5 existing charters + 15 = 20"; the repo has only ever contained 4 existing charters (scout-codebase, scout-web, design-writer, team-lead — confirmed via git log --all --name-only -- pi-swarm-suite/agents/). Total is 19.

Verification

Skill registration — live pi smoke test (--no-skills disables all package/global skill discovery, so only the -e extension's contributions can appear):

$ pi --no-session --no-extensions --no-skills -e pi-skills/index.ts \
      --no-context-files --model deepseek/deepseek-flash -p "list skills"
/skill:code-review
/skill:create-handoff
/skill:resume-handoff
/skill:commit

All ${SKILL_DIR} references resolve to vendored files:

OK   ${SKILL_DIR}/../_shared/now.mjs          -> skills/_shared/now.mjs
OK   ${SKILL_DIR}/../_shared/git-context.mjs  -> skills/_shared/git-context.mjs
OK   ${SKILL_DIR}/../_shared/list-recent.mjs  -> skills/_shared/list-recent.mjs
OK   ${SKILL_DIR}/../_shared/git-changes.mjs  -> skills/_shared/git-changes.mjs
OK   ${SKILL_DIR}/_helpers/review-range.mjs   -> skills/code-review/_helpers/review-range.mjs
OK   templates/review.md

Grep gates: contract: → none; \badvisor\b → none (only "CVE/advisory", unrelated); dead rpiv package paths → none. Helper .mjs files pass node --check and run.

Agents: 19 files in pi-swarm-suite/agents/; all 15 ported charters present and pin deepseek/deepseek-flash.

Out of scope / follow-up

web-search-researcher.md references extensions: [rpiv-web-tools] and ext:rpiv-web-tools/web_search|web_fetch. @juicesharp/rpiv-web-tools is not installed today, so the charter is already non-functional; it loads (unknown ext: selectors are inert) but its web tools won't resolve. The durable fix is to point those at the pi-web-access tools (web_search, fetch_content). Left unmodified here to keep the port a verbatim copy and avoid guessing the tool namespace; flagged for the ticket.

The other 26 dormant rpiv-pi skills are archived (out of repo) at ~/repos/homelab/.rpiv/artifacts/research/homelab-1609/dormant-skills-archive/ with a reference-only README.

No skill-args/, todo/, ask-user-question/, settings, or ~/.pi/agent/agents/ changes in this PR.

Skills+agents leg of HOMELAB-1609 (uninstall `@juicesharp/rpiv-*` after porting the used surface). ## What **1. New `pi-skills/` extension** — vendors the four rpiv-pi skills with real usage evidence: | Skill | Helpers vendored | |-------|------------------| | `code-review` | `_helpers/review-range.mjs`, `templates/review.md` | | `create-handoff` | `_shared/{now,git-context}.mjs` | | `resume-handoff` | `_shared/list-recent.mjs` | | `commit` | `_shared/git-changes.mjs` | - Stripped the rpiv-workflow-only `contract:` frontmatter and the inert `argument-hint` key; kept `shell-timeout` (honored by the ported `skill-args`). Remaining keys: `name`, `description`, `allowed-tools`, `shell-timeout` — all pi-core-parsed. - `code-review`: removed the optional advisor-adjudication path and every `advisor`-tool reference; the inline dimension sweep remains. Kept the `ask_user_question` disambiguation step. Removed dead rpiv package paths (`packages/rpiv-advisor/...`, `skills/design/SKILL.md`, `.rpiv/guidance/...`, `agents/claim-verifier.md`). - Registration: `resources_discover` event (`index.ts`), mirroring `lab-director` — chosen over a package `pi.skills` manifest because this repo is consumed as a bare `~/.pi/agent/extensions/` directory, where package manifests are not read. Documented in `pi-skills/README.md` along with how `$ARGUMENTS` / `${SKILL_DIR}` / ` ```! ` blocks work via the ported `skill-args` extension. - MIT attribution preserved: `pi-skills/LICENSE` + root `NOTICE`. **2. 15 agent charters into `pi-swarm-suite/agents/`** — `artifact-code-reviewer`, `artifact-coverage-reviewer`, `artifacts-analyzer`, `artifacts-locator`, `claim-verifier`, `codebase-analyzer`, `codebase-locator`, `codebase-pattern-finder`, `diff-auditor`, `integration-scanner`, `peer-comparator`, `precedent-locator`, `scope-tracer`, `slice-verifier`, `web-search-researcher`. All 15 already carried `model: deepseek/deepseek-flash`, so **no pin needed adding** (the ticket brief assumed `deepseek/deepseek-v4-flash` via `~/.config/rpiv-pi/models.json`; the on-disk charters already pin the deepseek-flash alias). `pi-swarm-suite/README.md`'s charter-install step now documents all shipped charters. ## Discrepancy vs the brief The brief said "5 existing charters + 15 = 20"; the repo has only ever contained **4** existing charters (`scout-codebase`, `scout-web`, `design-writer`, `team-lead` — confirmed via `git log --all --name-only -- pi-swarm-suite/agents/`). Total is **19**. ## Verification **Skill registration — live pi smoke test** (`--no-skills` disables all package/global skill discovery, so only the `-e` extension's contributions can appear): ``` $ pi --no-session --no-extensions --no-skills -e pi-skills/index.ts \ --no-context-files --model deepseek/deepseek-flash -p "list skills" /skill:code-review /skill:create-handoff /skill:resume-handoff /skill:commit ``` **All `${SKILL_DIR}` references resolve to vendored files:** ``` OK ${SKILL_DIR}/../_shared/now.mjs -> skills/_shared/now.mjs OK ${SKILL_DIR}/../_shared/git-context.mjs -> skills/_shared/git-context.mjs OK ${SKILL_DIR}/../_shared/list-recent.mjs -> skills/_shared/list-recent.mjs OK ${SKILL_DIR}/../_shared/git-changes.mjs -> skills/_shared/git-changes.mjs OK ${SKILL_DIR}/_helpers/review-range.mjs -> skills/code-review/_helpers/review-range.mjs OK templates/review.md ``` **Grep gates:** `contract:` → none; `\badvisor\b` → none (only "CVE/advisory", unrelated); dead rpiv package paths → none. Helper `.mjs` files pass `node --check` and run. **Agents:** 19 files in `pi-swarm-suite/agents/`; all 15 ported charters present and pin `deepseek/deepseek-flash`. ## Out of scope / follow-up `web-search-researcher.md` references `extensions: [rpiv-web-tools]` and `ext:rpiv-web-tools/web_search|web_fetch`. `@juicesharp/rpiv-web-tools` is **not installed** today, so the charter is already non-functional; it loads (unknown `ext:` selectors are inert) but its web tools won't resolve. The durable fix is to point those at the `pi-web-access` tools (`web_search`, `fetch_content`). Left unmodified here to keep the port a verbatim copy and avoid guessing the tool namespace; flagged for the ticket. The other 26 dormant rpiv-pi skills are archived (out of repo) at `~/repos/homelab/.rpiv/artifacts/research/homelab-1609/dormant-skills-archive/` with a reference-only README. No `skill-args/`, `todo/`, `ask-user-question/`, settings, or `~/.pi/agent/agents/` changes in this PR.
Vendor the four @juicesharp/rpiv-pi skills that had real usage evidence so they
survive the planned uninstall of the rpiv-* packages.

- Full skill trees + referenced helpers (_shared/{now,git-context,list-recent,git-changes}.mjs,
  code-review/_helpers/review-range.mjs, code-review/templates/review.md).
- Strip the rpiv-workflow-only 'contract:' frontmatter and the inert
  'argument-hint' key; keep shell-timeout (honored by the ported skill-args).
- code-review: drop the optional advisor-adjudication path and all advisor-tool
  references; keep the ask_user_question disambiguation step.
- Register via the resources_discover event (lab-director pattern), because this
  repo is consumed as a bare ~/.pi/agent/extensions directory where a package
  'pi.skills' manifest is never read. Documented in pi-skills/README.md.
- MIT attribution preserved (pi-skills/LICENSE + NOTICE).
HOMELAB-1609: chore(pi-swarm-suite): vendor 15 rpiv review/scout agent charters
Some checks failed
CI / pr-title (pull_request) Failing after 0s
CI / pi-swarm-suite (pull_request) Has been cancelled
CI / pi-otel-telemetry (pull_request) Has been cancelled
2400d176df
Copy the 15 rpiv-managed agent charters from ~/.pi/agent/agents into
pi-swarm-suite/agents/ so they survive the rpiv-pi uninstall. All 15 already
carry the 'model: deepseek/deepseek-flash' frontmatter pin (the pin that
replaces the now-orphaned ~/.config/rpiv-pi/models.json), so no file needed a
pin added.

Also document all 19 shipped charters (4 workflow + 15 specialists) in the
README's charter-install step. (The ticket brief said 5 existing charters; the
repo has only ever contained 4 — scout-codebase, scout-web, design-writer,
team-lead.)
aaron changed title from HOMELAB-1609: port used rpiv-pi skills + review/scout agent charters to HOMELAB-1609: feat(pi-skills): port used rpiv-pi skills + review/scout agent charters 2026-09-20 17:27:02 +00:00
HOMELAB-1609: chore(ci): re-trigger PR checks after PR-title format fix
Some checks are pending
CI / pr-title (pull_request) Waiting to run
CI / pi-swarm-suite (pull_request) Waiting to run
CI / pi-otel-telemetry (pull_request) Waiting to run
05f9601b56
The first PR title omitted the Conventional-Commit type, so the pr-title gate
failed. The title is fixed via the API; this empty commit re-fires the
pull_request synchronize event so the gate re-evaluates.
HOMELAB-1609: docs(pi-skills): document the --no-skills registration smoke test
All checks were successful
CI / pr-title (pull_request) Successful in 0s
CI / pi-swarm-suite (pull_request) Successful in 2m45s
CI / pi-otel-telemetry (pull_request) Successful in 54s
f9716ad886
Author
Owner

CI green on head f9716ad — pr-title ✅, pi-swarm-suite ✅, pi-otel-telemetry ✅.

(The first attempt's pr-title job failed because the PR title omitted the Conventional-Commit type; the title was corrected and CI re-ran green.)

Verification highlights (full detail in the PR body):

  • Live pi smoke test proves registration through resources_discover: with --no-skills disabling all package/global skill discovery, pi -e pi-skills/index.ts … reports exactly /skill:code-review, /skill:create-handoff, /skill:resume-handoff, /skill:commit.
  • All five ${SKILL_DIR} references resolve to vendored files; node --check passes on every helper; the three runnable helpers exit 0.
  • Grep gates: no contract:, no advisor-tool references, no dead rpiv package paths.
  • 15/15 ported charters present in pi-swarm-suite/agents/, all already pinned model: deepseek/deepseek-flash → 0 pins needed adding.

Two things a reviewer/landing worker should note:

  1. The brief said "5 existing charters"; the repo has only ever contained 4 (scout-codebase, scout-web, design-writer, team-lead — per git log --all --name-only -- pi-swarm-suite/agents/). Total shipped = 19.
  2. web-search-researcher.md references ext:rpiv-web-tools/web_search|web_fetch, but @juicesharp/rpiv-web-tools is not installed anywhere — the charter loads but its web tools will not resolve. Flagged as a follow-up rather than edited here (verbatim port; the tool-namespace decision is not this leg's to make).
**CI green on head `f9716ad`** — `pr-title` ✅, `pi-swarm-suite` ✅, `pi-otel-telemetry` ✅. (The first attempt's `pr-title` job failed because the PR title omitted the Conventional-Commit type; the title was corrected and CI re-ran green.) **Verification highlights** (full detail in the PR body): - Live pi smoke test proves registration through `resources_discover`: with `--no-skills` disabling all package/global skill discovery, `pi -e pi-skills/index.ts …` reports exactly `/skill:code-review`, `/skill:create-handoff`, `/skill:resume-handoff`, `/skill:commit`. - All five `${SKILL_DIR}` references resolve to vendored files; `node --check` passes on every helper; the three runnable helpers exit 0. - Grep gates: no `contract:`, no `advisor`-tool references, no dead rpiv package paths. - 15/15 ported charters present in `pi-swarm-suite/agents/`, all already pinned `model: deepseek/deepseek-flash` → **0 pins needed adding**. **Two things a reviewer/landing worker should note:** 1. The brief said "5 existing charters"; the repo has only ever contained **4** (`scout-codebase`, `scout-web`, `design-writer`, `team-lead` — per `git log --all --name-only -- pi-swarm-suite/agents/`). Total shipped = **19**. 2. `web-search-researcher.md` references `ext:rpiv-web-tools/web_search|web_fetch`, but `@juicesharp/rpiv-web-tools` is not installed anywhere — the charter loads but its web tools will not resolve. Flagged as a follow-up rather than edited here (verbatim port; the tool-namespace decision is not this leg's to make).
Author
Owner

Landing worker — independent review verdict: APPROVE_WITH_CONCERNS (no blockers)

Reviewed in a fresh context from primary sources only (PR diff, the ticket brief, the frozen contracts) — never the implementer's report. Reviewer was an independent pi -p --no-session subprocess; I then re-verified the load-bearing claims myself.

Acceptance checks (all PASS)

# criterion result evidence
1 Exactly 4 skills vendored; 26 dormant absent PASS pi-skills/skills/ holds exactly code-review, create-handoff, resume-handoff, commit (+ _shared/). Upstream rpiv-pi/skills/ has 31 entries (30 skills + _shared); every non-ported name is absent locally.
2 Every ${SKILL_DIR} helper present PASS All 5 refs resolve: _shared/{now,git-context,git-changes,list-recent}.mjs, code-review/_helpers/review-range.mjs. templates/review.md (referenced as a relative runtime read at code-review/SKILL.md:479) exists.
3 contract: / argument-hint stripped; only pi-core keys + shell-timeout PASS grep -rnE '^(contract|argument-hint):' pi-skills/ → none. Frontmatter = name, description, allowed-tools, shell-timeout. diff vs installed upstream v2.10.1 shows exactly those two key blocks removed.
4 code-review: no advisor refs, ask_user_question kept PASS No \badvisor\b (only "CVE / advisory"). Advisor step removed and the inline dimension sweep renumbered; ask_user_question present at code-review/SKILL.md:37,43,58,517.
5 Registration lists exactly 4; paths resolve PASS Reproduced the PR's live smoke test myself (see below).
6 15 charters + model: deepseek/deepseek-flash + README PASS pi-swarm-suite/agents/ = 19 files (15 added, 4 pre-existing untouched). grep -l '^model: deepseek/deepseek-flash$' → 15/15. README charter list matches the shipped set exactly (bidirectional set diff empty).
7 @juicesharp only as attribution PASS grep -rnE "(from|require\()\s*[\"']@juicesharp" → NONE. All 12 hits in the diff are docs/comments or one illustrative example row inside the vendored artifact-code-reviewer.md. index.ts imports only @earendil-works/pi-coding-agent (type-only) + node builtins.
8 Scope hygiene PASS git diff --name-status origin/main...HEAD → NOTICE, README.md, pi-skills/*, pi-swarm-suite/README.md, pi-swarm-suite/agents/* (15). No CI files here (those ride PR #37). NOTICE/root README edits are legitimate attribution + index updates.
9 Vendored .mjs valid PASS node --check OK on all 5 helpers.

Verification I reproduced myself (not taken from the author's report)

$ pi --no-session --no-extensions --no-skills -e pi-skills/index.ts \
     --no-context-files --model deepseek/deepseek-flash -p "List the /skill:<name> names..."
/skill:code-review
/skill:create-handoff
/skill:resume-handoff
/skill:commit

--no-skills disables all package/global skill discovery, so these four can only come from this extension's resources_discover handler. CI on head f9716ad: pr-title ✅, pi-swarm-suite ✅, pi-otel-telemetry ✅.

Concerns (non-blocking — follow-ups, not merge gates)

  1. Factually incorrect sentence — pi-swarm-suite/README.md:802-803: "The four workflow charters carry no pin and inherit the machine defaultModel". pi-swarm-suite/agents/team-lead.md:4 carries model: kimi-coding/k3, so only 3 of the 4 inherit it. (File is untouched by this PR; the doc sentence is new.)
  2. Incomplete dependency note — pi-skills/README.md names only skill-args as the non-core dependency, but three of the four vendored skills call ask_user_question (code-review/SKILL.md:37,43,58,517; commit/SKILL.md:60; resume-handoff/SKILL.md:42-43), which lives in the same @juicesharp/* uninstall set. It only survives because the sibling extension leg ports it — worth naming, since surviving that uninstall is the point of the port.
  3. Transition-window shadowing — while @juicesharp/rpiv-pi is still installed, its identically-named skills win the name collision (first-found-wins; package paths precede resources_discover paths), so the vendored copies are not the ones actually /skill:-loaded until the uninstall lands. Expected and handled by the --no-skills smoke test; noted so nobody is surprised pre-uninstall.
  4. web-search-researcher.md:4-5 keeps extensions: [rpiv-web-tools] / ext:rpiv-web-tools/web_search|web_fetch; that package is not installed anywhere. Known non-blocker (identical behavior before/after), but code-review's CVE/advisory lens (SKILL.md:118,284-290,534) therefore runs with read/grep/find/ls only. A live web_search/fetch_content exists in-session and could be re-pointed on the follow-up.
  5. Inherited-upstream cosmetics (byte-identical to v2.10.1, no port defect): code-review/SKILL.md:479 references stripping a leading <!-- --> comment while templates/review.md:1 starts with ---; and the vendored allowed-tools values (Bash(git *), Read, Glob, …) are Claude-style and inert in pi core.

Merging on green CI + no blockers.

## Landing worker — independent review verdict: **APPROVE_WITH_CONCERNS** (no blockers) Reviewed in a fresh context from primary sources only (PR diff, the ticket brief, the frozen contracts) — never the implementer's report. Reviewer was an independent `pi -p --no-session` subprocess; I then re-verified the load-bearing claims myself. ### Acceptance checks (all PASS) | # | criterion | result | evidence | |---|---|---|---| | 1 | Exactly 4 skills vendored; 26 dormant absent | PASS | `pi-skills/skills/` holds exactly `code-review`, `create-handoff`, `resume-handoff`, `commit` (+ `_shared/`). Upstream `rpiv-pi/skills/` has 31 entries (30 skills + `_shared`); every non-ported name is absent locally. | | 2 | Every `${SKILL_DIR}` helper present | PASS | All 5 refs resolve: `_shared/{now,git-context,git-changes,list-recent}.mjs`, `code-review/_helpers/review-range.mjs`. `templates/review.md` (referenced as a relative runtime read at `code-review/SKILL.md:479`) exists. | | 3 | `contract:` / `argument-hint` stripped; only pi-core keys + `shell-timeout` | PASS | `grep -rnE '^(contract\|argument-hint):' pi-skills/` → none. Frontmatter = `name`, `description`, `allowed-tools`, `shell-timeout`. `diff` vs installed upstream v2.10.1 shows exactly those two key blocks removed. | | 4 | code-review: no advisor refs, `ask_user_question` kept | PASS | No `\badvisor\b` (only "CVE / advisory"). Advisor step removed and the inline dimension sweep renumbered; `ask_user_question` present at `code-review/SKILL.md:37,43,58,517`. | | 5 | Registration lists exactly 4; paths resolve | PASS | **Reproduced the PR's live smoke test myself** (see below). | | 6 | 15 charters + `model: deepseek/deepseek-flash` + README | PASS | `pi-swarm-suite/agents/` = 19 files (15 added, 4 pre-existing untouched). `grep -l '^model: deepseek/deepseek-flash$'` → 15/15. README charter list matches the shipped set exactly (bidirectional set diff empty). | | 7 | `@juicesharp` only as attribution | PASS | `grep -rnE "(from\|require\()\s*[\"']@juicesharp"` → NONE. All 12 hits in the diff are docs/comments or one illustrative example row inside the vendored `artifact-code-reviewer.md`. `index.ts` imports only `@earendil-works/pi-coding-agent` (type-only) + node builtins. | | 8 | Scope hygiene | PASS | `git diff --name-status origin/main...HEAD` → `NOTICE`, `README.md`, `pi-skills/*`, `pi-swarm-suite/README.md`, `pi-swarm-suite/agents/*` (15). No CI files here (those ride PR #37). NOTICE/root README edits are legitimate attribution + index updates. | | 9 | Vendored `.mjs` valid | PASS | `node --check` OK on all 5 helpers. | ### Verification I reproduced myself (not taken from the author's report) ``` $ pi --no-session --no-extensions --no-skills -e pi-skills/index.ts \ --no-context-files --model deepseek/deepseek-flash -p "List the /skill:<name> names..." /skill:code-review /skill:create-handoff /skill:resume-handoff /skill:commit ``` `--no-skills` disables all package/global skill discovery, so these four can only come from this extension's `resources_discover` handler. CI on head `f9716ad`: `pr-title` ✅, `pi-swarm-suite` ✅, `pi-otel-telemetry` ✅. ### Concerns (non-blocking — follow-ups, not merge gates) 1. **Factually incorrect sentence** — `pi-swarm-suite/README.md:802-803`: *"The four workflow charters carry no pin and inherit the machine `defaultModel`"*. `pi-swarm-suite/agents/team-lead.md:4` carries `model: kimi-coding/k3`, so only 3 of the 4 inherit it. (File is untouched by this PR; the doc sentence is new.) 2. **Incomplete dependency note** — `pi-skills/README.md` names only `skill-args` as the non-core dependency, but three of the four vendored skills call `ask_user_question` (`code-review/SKILL.md:37,43,58,517`; `commit/SKILL.md:60`; `resume-handoff/SKILL.md:42-43`), which lives in the same `@juicesharp/*` uninstall set. It only survives because the sibling extension leg ports it — worth naming, since surviving that uninstall is the point of the port. 3. **Transition-window shadowing** — while `@juicesharp/rpiv-pi` is still installed, its identically-named skills win the name collision (first-found-wins; package paths precede `resources_discover` paths), so the vendored copies are not the ones actually `/skill:`-loaded until the uninstall lands. Expected and handled by the `--no-skills` smoke test; noted so nobody is surprised pre-uninstall. 4. `web-search-researcher.md:4-5` keeps `extensions: [rpiv-web-tools]` / `ext:rpiv-web-tools/web_search|web_fetch`; that package is not installed anywhere. Known non-blocker (identical behavior before/after), but code-review's CVE/advisory lens (`SKILL.md:118,284-290,534`) therefore runs with `read/grep/find/ls` only. A live `web_search`/`fetch_content` exists in-session and could be re-pointed on the follow-up. 5. Inherited-upstream cosmetics (byte-identical to v2.10.1, no port defect): `code-review/SKILL.md:479` references stripping a leading `<!-- -->` comment while `templates/review.md:1` starts with `---`; and the vendored `allowed-tools` values (`Bash(git *)`, `Read`, `Glob`, …) are Claude-style and inert in pi core. Merging on green CI + no blockers.
aaron merged commit 901fe7a9c4 into main 2026-09-20 17:46:12 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Homelab/pi-extensions!36
No description provided.