@fro.bot/systematic 3.4.0 → 3.5.0

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/HARNESSES.md CHANGED
@@ -10,7 +10,7 @@ The four capability rows use the vocabulary in the [OpenCode profile](skills/usi
10
10
 
11
11
  | Capability | OpenCode (Tier 1) | Pi (Tier 1) | Claude Code (Tier 1) | Codex CLI (Tier 2) | Gemini CLI (Tier 2) | GitHub Copilot (Tier 2) |
12
12
  |---|---|---|---|---|---|---|
13
- | Subagent delegation | `task`, including `subagent_type`, resume, and background execution [OC-1] | `systematic_delegate({agent, task})`; sequential, capped at 20 turns [PI-1] | Name-based subagent dispatch (invoke a subagent by name in the prompt text); `context: fork` for skill-scoped forks; plugin agents ship in `agents/` [CC-1][CC-9] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | Built-in/custom agents [GH-1][GH-2] |
13
+ | Subagent delegation | `task`, including `subagent_type`, resume, and background execution [OC-1] | Bounded built-in delegate: `systematic_delegate({agent, task})`; sequential, capped at 20 turns, depth-1, `noExtensions` [PI-1]. Optional mature delegation via pi-subagents (opt-in export; outside Systematic's bounded-delegate guarantees) [PI-7] | Name-based subagent dispatch (invoke a subagent by name in the prompt text); `context: fork` for skill-scoped forks; plugin agents ship in `agents/` [CC-1][CC-9] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | Built-in/custom agents [GH-1][GH-2] |
14
14
  | Blocking user interaction | `question` [OC-2] | No native blocking tool; numbered-chat fallback [PI-2] | `AskUserQuestion` [CC-2] | `request_user_input`; blocking and root-thread-only [CX-1][CX-2] | `ask_user`; pauses until answers [GE-1][GE-2] | No dedicated tool name verified; plan-mode clarification and `--no-ask-user` are documented [GH-3][GH-4] |
15
15
  | Task tracking | `todowrite` [OC-3] | No native mechanism; visible list fallback [PI-2] | `TodoWrite` is deprecated/disabled by default; `TaskCreate`/`TaskGet`/`TaskList`/`TaskUpdate` replace it [CC-3][CC-4] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | No `TodoWrite` equivalent verified; cloud-agent tasks/sessions API is documented [GH-5] |
16
16
  | Skill loading | Skills become commands and `systematic_skill` is registered [OC-4][OC-5] | `systematic_skill` adapter and Pi-native activation [PI-3][PI-4] | Native Skill tool with `SKILL.md` discovery (`~/.claude/skills/`, `.claude/skills/`, plugin `skills/`); Systematic ships no `systematic_skill` tool on Claude Code [CC-5][CC-6][CC-9] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | `SKILL.md` skills [GH-6] |
@@ -26,7 +26,13 @@ Compatibility is direct: OpenCode consumes the concrete invocation language in t
26
26
 
27
27
  ## Pi — Tier 1 shipped adapter
28
28
 
29
- Pi's profile records degraded or unavailable native capabilities and explicit fallbacks [PI-P]. The adapter registers `systematic_skill` in `src/pi.ts:85-103` and `systematic_delegate` in `src/pi.ts:106-113` [PI-3]. Delegation is explicitly sequential (`executionMode: 'sequential'`), capped at `MAX_DELEGATE_TURNS = 20`, and guarded against re-entry in `src/lib/pi-delegate-tool.ts:14-18,245-249` [PI-1].
29
+ Pi's profile records degraded or unavailable native capabilities and explicit fallbacks [PI-P]. The adapter registers `systematic_skill` in `src/pi.ts:85-103` and `systematic_delegate` in `src/pi.ts:106-113` [PI-3]. Delegation is explicitly sequential (`executionMode: 'sequential'`), capped at `MAX_DELEGATE_TURNS = 20`, and guarded against re-entry in `src/lib/pi-delegate-tool.ts:14-18,245-249` [PI-1]. The child is spawned with `noExtensions: true`, bounding `systematic_delegate`'s own recursion; this does not bound end-to-end depth across a combined pi-subagents + Systematic path.
30
+
31
+ Optional mature delegation is available via [pi-subagents](https://github.com/tintinweb/pi-subagents) through an opt-in persona export: `systematic pi-subagents <preview|export|refresh|cleanup> --scope project|global`. This path is outside Systematic's bounded-delegate guarantees and governed by pi-subagents' own configuration. Tested against pi-subagents v0.14.3; versions outside the tested range are unsupported but nonfatal. Export writes are governed by a manifest (`.systematic-personas.json`) and an exclusive per-root mutation lock (`.systematic-personas.lock`) held for the duration of `export`/`refresh`/`cleanup`; a pre-existing lock is never auto-deleted — a reported lock requires manual verification that no operation is actually running before removal. No files are written without an explicit command [PI-7].
32
+
33
+ Systematic's own config (`systematic.json`/`.jsonc`) is the durable source of truth for exported personas; the generated persona files and manifest are a disposable projection. `export` computes and prints its per-file preflight actions (create/update/skip/refuse/remove) and target directory before any mutation, the same way `preview` does. `refresh` intentionally overwrites current manifest-owned generated files that have drifted from source — run `preview` first to see what would change. Project-scoped export (default) loads `user → project → custom` config for the current working directory; global-scoped export loads `user → custom` only and never absorbs cwd project overlays. Project-sourced `model` on the `categories`/`agents` overlay is rejected outright by config validation; project-sourced `thinking`, `tools`, and `skills` on the `pi_subagents` overlay are silently stripped before merge; `max_turns` is trust-any. pi-subagents v0.14.3 has no equivalent frontmatter fields for `temperature`, `top_p`, or `variant` — Systematic never emits them.
34
+
35
+ Every export/refresh/cleanup operation walks every path component from a scope-anchored root down to the target agents directory and fails closed if any intermediate component is a symlink or a non-directory: the project anchor is the current working directory, the default global anchor is the user's home directory, and when `PI_CODING_AGENT_DIR` is set the anchor is that variable's parent directory. Manifest entries must name files matching `systematic-*.md`; cleanup and stale-file removal delete a manifest-owned file only when its on-disk content hash still matches the manifest's recorded hash — if a generated file has drifted from what the manifest recorded, deletion refuses before any mutation and leaves both the file and the manifest untouched. Manifest content hashes are ownership/drift evidence only — they are not a cryptographic integrity or authenticity guarantee.
30
36
 
31
37
  The package manifest exposes the extension and skills at `package.json:17-23`, with tests verifying both manifest entries and their packaged paths `tests/unit/package-exports.test.ts:42-66,241-267` [PI-4]. Pi's RPC/JSONL test fixture isolates its environment (`tests/integration/pi.test.ts:349-388`), and the installed runtime exposes environment-specific agent/session directories `node_modules/@earendil-works/pi-coding-agent/dist/config.js:396-398` [PI-5].
32
38
 
@@ -90,6 +96,7 @@ Migrated-skill discipline is enforced by the [content-integrity gate](scripts/co
90
96
  - **PI-4** — `package.json:17-23`; `tests/unit/package-exports.test.ts:42-66,241-267`.
91
97
  - **PI-5** — `tests/integration/pi.test.ts:349-388`; installed Pi source `node_modules/@earendil-works/pi-coding-agent/dist/config.js:396-398`.
92
98
  - **PI-6** — `src/pi.ts:59-60` (hardcoded empty disabled-skills list); OpenCode's contrasting permission gate at `src/lib/skill-tool.ts:86-87`.
99
+ - **PI-7** — `src/lib/pi-subagents-export.ts` (export lifecycle, manifest, rollback); `src/lib/pi-subagents-personas.ts` (curated persona list, compatibility screening); `src/cli.ts:48-68` (CLI surface: `pi-subagents preview|export|refresh|cleanup`). Tested interop contract: pi-subagents v0.14.3 (July 29, 2026).
93
100
  - **CC-P** — [Claude Code profile](skills/using-systematic/references/claude-code-profile.md#L5-L10).
94
101
  - **CC-1** — [Claude Code skills](https://code.claude.com/docs/en/skills) (`context: fork`); name-based subagent dispatch verified via `claude-code/agents/` and the plugin's invocation convention [CC-9].
95
102
  - **CC-2** — [Claude Code tools reference](https://code.claude.com/docs/en/tools-reference).
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <picture>
4
4
  <source media="(prefers-color-scheme: dark)" srcset="./assets/banner.svg">
5
5
  <source media="(prefers-color-scheme: light)" srcset="./assets/banner.svg">
6
- <img alt="Systematic — Compound-Engineering Workflows for OpenCode, Pi, and Claude Code" src="./assets/banner.svg" width="100%">
6
+ <img alt="Systematic — Compound-Engineering Loops for OpenCode, Pi, and Claude Code" src="./assets/banner.svg" width="100%">
7
7
  </picture>
8
8
 
9
9
  <br><br>
@@ -29,7 +29,7 @@ You want AI that follows your process, not just your prompts. You want repeatabl
29
29
 
30
30
  ## What You Get
31
31
 
32
- Systematic is a compound-engineering workflow: brainstorm, plan, work, review — each phase a structured skill that guides the AI through requirements exploration, implementation planning, execution, and code review, capturing what was learned along the way. It ships 31 bundled skills and 37 specialized agents for architecture, security, performance, design, and code review.
32
+ Systematic is a compound-engineering loop: brainstorm, plan, work, review — each phase a structured skill that guides the AI through requirements exploration, implementation planning, execution, and code review, capturing what was learned along the way. It ships 31 bundled skills and 37 specialized agents for architecture, security, performance, design, and code review.
33
33
 
34
34
  The workflow runs on three harnesses from one source: [OpenCode](https://opencode.ai/), [Pi](https://github.com/earendil-works/pi-coding-agent), and Claude Code. Each gets a native install path; skill and agent content is identical across all three.
35
35
 
@@ -12,7 +12,7 @@ When reviewing code, you will:
12
12
 
13
13
  1. **Analyze Every Line**: Question the necessity of each line of code. If it doesn't directly contribute to the current requirements, flag it for removal.
14
14
 
15
- 2. **Simplify Complex Logic**:
15
+ 2. **Simplify Complex Logic**:
16
16
  - Break down complex conditionals into simpler forms
17
17
  - Replace clever code with obvious code
18
18
  - Eliminate nested structures where possible