peaks-loop 3.0.0 → 3.0.1
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/.claude-plugin/marketplace.json +3 -3
- package/CHANGELOG.md +57 -57
- package/README-en.md +2 -2
- package/README.md +2 -2
- package/agents/karpathy-reviewer.md +2 -2
- package/dist/src/cli/commands/agent-commands.js +3 -3
- package/dist/src/cli/commands/audit-commands.d.ts +1 -1
- package/dist/src/cli/commands/audit-commands.js +6 -6
- package/dist/src/cli/commands/classify-classify-commands.js +1 -1
- package/dist/src/cli/commands/code-review-commands.d.ts +3 -3
- package/dist/src/cli/commands/code-review-commands.js +5 -5
- package/dist/src/cli/commands/compact-command.d.ts +21 -0
- package/dist/src/cli/commands/compact-command.js +252 -0
- package/dist/src/cli/commands/context-commands.d.ts +1 -1
- package/dist/src/cli/commands/context-commands.js +1 -1
- package/dist/src/cli/commands/contract-commands.d.ts +1 -1
- package/dist/src/cli/commands/core/session-command.js +17 -7
- package/dist/src/cli/commands/core/skill-command.js +1 -1
- package/dist/src/cli/commands/feedback-commands.js +1 -1
- package/dist/src/cli/commands/hook-handle.d.ts +1 -1
- package/dist/src/cli/commands/hook-handle.js +1 -1
- package/dist/src/cli/commands/legacy-commands.d.ts +1 -1
- package/dist/src/cli/commands/legacy-commands.js +2 -2
- package/dist/src/cli/commands/log-commands.js +2 -2
- package/dist/src/cli/commands/loop-commands.d.ts +1 -1
- package/dist/src/cli/commands/loop-commands.js +1 -1
- package/dist/src/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/src/cli/commands/loop-eval-commands.js +1 -1
- package/dist/src/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/src/cli/commands/playwright-commands.js +2 -2
- package/dist/src/cli/commands/request-commands.js +40 -1
- package/dist/src/cli/commands/role-commands.js +1 -1
- package/dist/src/cli/commands/slice-commands.js +5 -5
- package/dist/src/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/src/cli/commands/upgrade-commands.js +6 -6
- package/dist/src/cli/commands/workspace/init-command.js +2 -2
- package/dist/src/cli/program.js +10 -1
- package/dist/src/services/agent/ecc-agent-service.js +5 -5
- package/dist/src/services/audit/artifact-writer.d.ts +1 -1
- package/dist/src/services/audit/artifact-writer.js +1 -1
- package/dist/src/services/audit/decision-writer.d.ts +1 -1
- package/dist/src/services/audit/decision-writer.js +1 -1
- package/dist/src/services/audit/enforcers/lint-output-style.js +5 -5
- package/dist/src/services/audit/enforcers/mock-placement.d.ts +1 -1
- package/dist/src/services/audit/enforcers/mock-placement.js +1 -1
- package/dist/src/services/audit/enforcers/no-root-pollution.js +1 -1
- package/dist/src/services/audit/red-line-catalog-p2-a.js +2 -2
- package/dist/src/services/audit/red-line-catalog-p2-b.js +2 -2
- package/dist/src/services/audit/static-service.d.ts +1 -1
- package/dist/src/services/audit/static-service.js +5 -5
- package/dist/src/services/audit/types.d.ts +1 -1
- package/dist/src/services/audit/types.js +1 -1
- package/dist/src/services/audit-independent/perf-audit-service.js +1 -1
- package/dist/src/services/audit-independent/security-audit-service.js +1 -1
- package/dist/src/services/classify/classify-service.d.ts +1 -1
- package/dist/src/services/classify/classify-service.js +1 -1
- package/dist/src/services/classify/classify-types.d.ts +1 -1
- package/dist/src/services/classify/classify-types.js +1 -1
- package/dist/src/services/code-review/ecc-bridge.d.ts +2 -2
- package/dist/src/services/code-review/ecc-bridge.js +2 -2
- package/dist/src/services/code-review/ocr-service.d.ts +9 -9
- package/dist/src/services/code-review/ocr-service.js +16 -16
- package/dist/src/services/compact/decision-tables.d.ts +66 -0
- package/dist/src/services/compact/decision-tables.js +127 -0
- package/dist/src/services/compact/request-transition-hook.d.ts +20 -0
- package/dist/src/services/compact/request-transition-hook.js +110 -0
- package/dist/src/services/compact/suggest-service.d.ts +74 -0
- package/dist/src/services/compact/suggest-service.js +203 -0
- package/dist/src/services/config/config-migration.js +1 -1
- package/dist/src/services/config/config-safety.d.ts +1 -1
- package/dist/src/services/config/config-safety.js +1 -1
- package/dist/src/services/config/config-service.d.ts +1 -1
- package/dist/src/services/config/config-service.js +1 -1
- package/dist/src/services/context/auto-compact-dispatcher.js +4 -4
- package/dist/src/services/context/auto-compact-types.d.ts +6 -6
- package/dist/src/services/context/auto-compact-types.js +5 -5
- package/dist/src/services/dispatch/sub-agent-dispatcher.js +1 -1
- package/dist/src/services/dispatch/test-tool-detection.d.ts +1 -1
- package/dist/src/services/dispatch/test-tool-detection.js +1 -1
- package/dist/src/services/doctor/doctor-service.d.ts +1 -1
- package/dist/src/services/doctor/doctor-service.js +5 -5
- package/dist/src/services/hooks/presence-marker-detector.js +5 -5
- package/dist/src/services/ide/adapters/claude-code-adapter.d.ts +1 -1
- package/dist/src/services/ide/adapters/claude-code-adapter.js +2 -2
- package/dist/src/services/ide/adapters/codex-adapter.d.ts +2 -2
- package/dist/src/services/ide/adapters/codex-adapter.js +2 -2
- package/dist/src/services/ide/adapters/cursor-adapter.d.ts +2 -2
- package/dist/src/services/ide/adapters/cursor-adapter.js +2 -2
- package/dist/src/services/ide/adapters/hermes-adapter.d.ts +1 -1
- package/dist/src/services/ide/adapters/hermes-adapter.js +1 -1
- package/dist/src/services/ide/adapters/openclaw-adapter.d.ts +1 -1
- package/dist/src/services/ide/adapters/openclaw-adapter.js +1 -1
- package/dist/src/services/ide/adapters/trae-adapter.d.ts +1 -1
- package/dist/src/services/ide/adapters/trae-adapter.js +1 -1
- package/dist/src/services/ide/ide-types.d.ts +9 -9
- package/dist/src/services/legacy/legacy-detector.d.ts +1 -1
- package/dist/src/services/legacy/legacy-detector.js +1 -1
- package/dist/src/services/log/log-commands-service.d.ts +1 -1
- package/dist/src/services/log/log-commands-service.js +1 -1
- package/dist/src/services/log/logger.d.ts +3 -3
- package/dist/src/services/log/logger.js +3 -3
- package/dist/src/services/log/redact.d.ts +1 -1
- package/dist/src/services/log/redact.js +1 -1
- package/dist/src/services/loop/evaluator-dispatcher.d.ts +1 -1
- package/dist/src/services/loop/evaluator-dispatcher.js +16 -15
- package/dist/src/services/loop/monotonic-guard.js +35 -18
- package/dist/src/services/loop/monotonic-runner.d.ts +3 -0
- package/dist/src/services/loop/monotonic-runner.js +62 -28
- package/dist/src/services/loop/run-driver.js +45 -24
- package/dist/src/services/memory/llm-reranker.d.ts +1 -1
- package/dist/src/services/memory/llm-reranker.js +1 -1
- package/dist/src/services/mut/production-stryker.d.ts +0 -5
- package/dist/src/services/mut/production-stryker.js +19 -10
- package/dist/src/services/openspec/openspec-propose-from-doctor-service.d.ts +1 -1
- package/dist/src/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/src/services/perf/perf-baseline-service.d.ts +2 -2
- package/dist/src/services/perf/perf-baseline-service.js +2 -2
- package/dist/src/services/prd/handoff-auto-regen.js +1 -1
- package/dist/src/services/prd/project-scan-sediment.js +3 -3
- package/dist/src/services/prd/project-scan-types.d.ts +1 -1
- package/dist/src/services/preferences/preferences-types.d.ts +3 -3
- package/dist/src/services/preferences/preferences-types.js +2 -2
- package/dist/src/services/role/role-registry.d.ts +1 -1
- package/dist/src/services/role/role-registry.js +1 -1
- package/dist/src/services/sc/sc-service.js +3 -3
- package/dist/src/services/skill/resume-detector.js +2 -2
- package/dist/src/services/skills/sync-service.d.ts +3 -3
- package/dist/src/services/skills/sync-service.js +9 -9
- package/dist/src/services/slice/calibration-store.d.ts +1 -1
- package/dist/src/services/slice/calibration-store.js +1 -1
- package/dist/src/services/solo/auto-compact-orchestrator.d.ts +1 -1
- package/dist/src/services/solo/auto-compact-orchestrator.js +7 -7
- package/dist/src/services/solo/dag-orchestrator.js +1 -1
- package/dist/src/services/solo/mode-gate.d.ts +1 -1
- package/dist/src/services/solo/mode-gate.js +4 -4
- package/dist/src/services/solo/user-touchpoint-classifier.js +1 -1
- package/dist/src/services/standards/migrate-claude-rules-service.js +5 -5
- package/dist/src/services/standards/migrate-service.d.ts +3 -3
- package/dist/src/services/standards/migrate-service.js +5 -5
- package/dist/src/services/standards/project-standards-service.js +1 -1
- package/dist/src/services/upgrade/gitignore-migrate-service.d.ts +3 -3
- package/dist/src/services/upgrade/gitignore-migrate-service.js +4 -4
- package/dist/src/services/upgrade/upgrade-service.d.ts +1 -1
- package/dist/src/services/upgrade/upgrade-service.js +5 -5
- package/dist/src/services/verdict/envelopes.d.ts +1 -1
- package/dist/src/services/verdict/envelopes.js +1 -1
- package/dist/src/services/workflow/workflow-loader.js +1 -1
- package/dist/src/services/workspace/migrate-1-4-1-service.d.ts +1 -1
- package/dist/src/services/workspace/migrate-1-4-1-service.js +1 -1
- package/dist/src/services/workspace/migrate-types.d.ts +1 -1
- package/dist/src/services/workspace/migrate-types.js +1 -1
- package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +2 -2
- package/dist/src/services/workspace/workspace-claude-settings-materializer.js +9 -9
- package/dist/src/services/workspace/workspace-service.d.ts +1 -1
- package/dist/src/services/workspace/workspace-service.js +1 -1
- package/dist/src/shared/path-safety.d.ts +1 -1
- package/dist/src/shared/path-safety.js +1 -1
- package/dist/src/shared/version.d.ts +1 -1
- package/dist/src/shared/version.js +1 -1
- package/output-styles/peaks-skill-swarm.md +33 -33
- package/package.json +5 -4
- package/schemas/decomposition-v1.json +1 -1
- package/schemas/decomposition-v2.json +1 -1
- package/schemas/replay-fixture.schema.json +1 -1
- package/schemas/reviewer-envelope.schema.json +1 -1
- package/scripts/install-skills.mjs +11 -11
- package/skills/peaks-audit/SKILL.md +2 -2
- package/skills/peaks-doctor/SKILL.md +4 -4
- package/skills/peaks-final-review/SKILL.md +2 -2
- package/skills/peaks-ide/SKILL.md +3 -3
- package/skills/peaks-perf-audit/SKILL.md +1 -1
- package/skills/peaks-prd/SKILL.md +14 -14
- package/skills/peaks-prd/references/workflow.md +1 -1
- package/skills/peaks-qa/SKILL.md +17 -17
- package/skills/peaks-qa/references/artifact-per-request.md +1 -1
- package/skills/peaks-qa/references/browser-validation-contracts.md +2 -2
- package/skills/peaks-qa/references/codegraph-regression-focus.md +1 -1
- package/skills/peaks-qa/references/external-capability-guidance.md +2 -2
- package/skills/peaks-qa/references/qa-fanout-contract.md +1 -1
- package/skills/peaks-qa/references/qa-gstack-integration.md +3 -3
- package/skills/peaks-qa/references/qa-local-artifacts.md +1 -1
- package/skills/peaks-qa/references/qa-matt-pocock-integration.md +1 -1
- package/skills/peaks-qa/references/qa-runbook.md +3 -3
- package/skills/peaks-qa/references/qa-skill-presence.md +1 -1
- package/skills/peaks-qa/references/qa-standards-preflight.md +2 -2
- package/skills/peaks-qa/references/qa-transition-gates.md +9 -9
- package/skills/peaks-qa/references/regression-gates.md +1 -1
- package/skills/peaks-rd/SKILL.md +13 -13
- package/skills/peaks-rd/references/artifact-and-standards-output.md +1 -1
- package/skills/peaks-rd/references/codegraph-project-analysis.md +1 -1
- package/skills/peaks-rd/references/external-references.md +3 -3
- package/skills/peaks-rd/references/karpathy-reviewer-prompt.md +1 -1
- package/skills/peaks-rd/references/mandatory-perf-baseline.md +1 -1
- package/skills/peaks-rd/references/matt-pocock-integration.md +2 -2
- package/skills/peaks-rd/references/ocr-integration.md +19 -19
- package/skills/peaks-rd/references/openspec-cli.md +2 -2
- package/skills/peaks-rd/references/rd-gstack-integration.md +5 -5
- package/skills/peaks-rd/references/rd-runbook.md +9 -9
- package/skills/peaks-rd/references/rd-standards-preflight.md +1 -1
- package/skills/peaks-rd/references/rd-transition-gates.md +13 -13
- package/skills/peaks-rd/references/skill-presence-and-title.md +1 -1
- package/skills/peaks-reviewer/SKILL.md +2 -2
- package/skills/peaks-sc/SKILL.md +9 -9
- package/skills/peaks-security-audit/SKILL.md +1 -1
- package/skills/peaks-slice-decompose/SKILL.md +2 -2
- package/skills/peaks-solo/SKILL.md +49 -49
- package/skills/peaks-solo/references/a2a-artifact-mapping.md +8 -8
- package/skills/peaks-solo/references/anchoring-and-session-info.md +3 -3
- package/skills/peaks-solo/references/boundaries.md +4 -4
- package/skills/peaks-solo/references/browser-workflow.md +2 -2
- package/skills/peaks-solo/references/codegraph-orchestration.md +1 -1
- package/skills/peaks-solo/references/completion-handoff.md +2 -2
- package/skills/peaks-solo/references/external-references.md +3 -3
- package/skills/peaks-solo/references/external-skill-invocation.md +2 -2
- package/skills/peaks-solo/references/frontend-only-mode.md +1 -1
- package/skills/peaks-solo/references/gstack-integration.md +4 -4
- package/skills/peaks-solo/references/local-artifact-workspace.md +2 -2
- package/skills/peaks-solo/references/micro-cycle.md +4 -4
- package/skills/peaks-solo/references/mode-selection.md +5 -5
- package/skills/peaks-solo/references/openspec-workflow.md +2 -2
- package/skills/peaks-solo/references/playwright-mcp-multi-terminal.md +1 -1
- package/skills/peaks-solo/references/project-memory-loading.md +1 -1
- package/skills/peaks-solo/references/project-scan-checklist.md +1 -1
- package/skills/peaks-solo/references/quality-gate-cheatsheet.md +1 -1
- package/skills/peaks-solo/references/resume-detection.md +1 -1
- package/skills/peaks-solo/references/runbook.md +20 -20
- package/skills/peaks-solo/references/skill-presence-and-title.md +2 -2
- package/skills/peaks-solo/references/standards-preflight.md +2 -2
- package/skills/peaks-solo/references/step-0-55-1x-detection.md +3 -3
- package/skills/peaks-solo/references/sub-agent-dispatch.md +3 -3
- package/skills/peaks-solo/references/swarm-dispatch-contract.md +3 -3
- package/skills/peaks-solo/references/workflow-gates-and-types.md +34 -34
- package/skills/peaks-solo-resume/SKILL.md +2 -2
- package/skills/peaks-solo-status/SKILL.md +4 -4
- package/skills/peaks-solo-test/SKILL.md +4 -4
- package/skills/peaks-sop/SKILL.md +5 -5
- package/skills/peaks-txt/SKILL.md +17 -17
- package/skills/peaks-ui/SKILL.md +17 -17
- package/skills/peaks-ui/references/workflow.md +1 -1
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
> Body of `## Codegraph project analysis`. RD may use `peaks codegraph affected --project <path> <changed-files...> --json` as local project-analysis evidence to inform red-line scope boundaries before writing tech-doc or starting implementation. Treat the output as untrusted supporting evidence — verify against the actual code before relying on it.
|
|
4
4
|
|
|
5
|
-
Do not run upstream installer flows, mutate agent settings, or commit `.codegraph/` artifacts. Peaks-
|
|
5
|
+
Do not run upstream installer flows, mutate agent settings, or commit `.codegraph/` artifacts. Peaks-Loop RD gates remain authoritative for handoff and acceptance.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# External references (RD)
|
|
2
2
|
|
|
3
|
-
> Body of `## External references`. **Matt Pocock skills** (`diagnose`, `triage`, `tdd`, `improve-codebase-architecture`, `prototype`): Engineering references only. Inspect before applying; Peaks-
|
|
3
|
+
> Body of `## External references`. **Matt Pocock skills** (`diagnose`, `triage`, `tdd`, `improve-codebase-architecture`, `prototype`): Engineering references only. Inspect before applying; Peaks-Loop RD gates remain authoritative.
|
|
4
4
|
|
|
5
5
|
**Understand Anything**: Consume via `peaks understand status/show --json`. Fall back to `peaks codegraph context` or local project scan when absent.
|
|
6
6
|
|
|
7
7
|
**Codegraph**: Optional local analysis via `peaks codegraph context/affected`. Output as untrusted supporting evidence; never commit `.codegraph/` artifacts.
|
|
8
8
|
|
|
9
|
-
**Other external resources** (Context7, SearchCode, everything-claude-code, GitNexus, etc.): Use `peaks capabilities --source access-repo/mcp-server --json` for capability discovery before recommending. References only — do not execute upstream installers, do not install upstream resources, do not persist sensitive examples. Peaks-
|
|
9
|
+
**Other external resources** (Context7, SearchCode, everything-claude-code, GitNexus, etc.): Use `peaks capabilities --source access-repo/mcp-server --json` for capability discovery before recommending. References only — do not execute upstream installers, do not install upstream resources, do not persist sensitive examples. Peaks-Loop RD gates remain authoritative.
|
|
10
10
|
|
|
11
|
-
**OpenSpec CLI**: Route through Peaks-
|
|
11
|
+
**OpenSpec CLI**: Route through Peaks-Loop CLI (`peaks openspec show/to-rd/render`). Do not hand-edit `openspec/changes/**`. Recipes: `references/openspec-cli.md`.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# Canonical karpathy-reviewer prompt lives at: agents/karpathy-reviewer.md
|
|
2
|
-
# This file is a 2-line pointer. Edit the canonical file instead. (peaks-
|
|
2
|
+
# This file is a 2-line pointer. Edit the canonical file instead. (peaks-loop 2.0 rules convention)
|
|
@@ -39,4 +39,4 @@ peaks perf baseline --project <repo> --apply --reason "capturing baseline for Ga
|
|
|
39
39
|
|
|
40
40
|
**Idempotency:** re-running `peaks perf baseline --apply` on a session where the file already exists is a no-op (the CLI does not overwrite hand-edited content). This is the normal RD retry pattern (re-measurement, threshold adjustment, etc.). If the RD really does want to overwrite, delete the file first and re-run.
|
|
41
41
|
|
|
42
|
-
**The role of the CLI vs. the actual measurement:** the CLI is the *scaffolding*. It writes the file, exposes the path, and keeps the file's structure stable so QA can rely on it. The CLI does NOT call lighthouse / k6 / autocannon — those are project-shape dependent and the right tool is a project-local concern, not a peaks-
|
|
42
|
+
**The role of the CLI vs. the actual measurement:** the CLI is the *scaffolding*. It writes the file, exposes the path, and keeps the file's structure stable so QA can rely on it. The CLI does NOT call lighthouse / k6 / autocannon — those are project-shape dependent and the right tool is a project-local concern, not a peaks-loop concern. The CLI is justified (4-grounds check): it gates the QA-side decision on a stable artefact, it requires --apply for a destructive write, and it is invokable from a hook on session init. It is *not* a machine-enforced gate that prose cannot enforce — the measurement is the RD's responsibility.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Matt Pocock skills integration (RD)
|
|
2
2
|
|
|
3
|
-
> Body of `## Matt Pocock skills integration`. Engineering methods from `mattpocock/skills` can inform RD work but never replace Peaks-
|
|
3
|
+
> Body of `## Matt Pocock skills integration`. Engineering methods from `mattpocock/skills` can inform RD work but never replace Peaks-Loop gates. Inspect upstream skill content before applying any method.
|
|
4
4
|
|
|
5
5
|
- `diagnose` — root-cause investigation before fixing
|
|
6
6
|
- `triage` — prioritize bug surface area
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
- `improve-codebase-architecture` — opportunistic refactor framing
|
|
9
9
|
- `prototype` — throwaway exploration before committing to a slice
|
|
10
10
|
|
|
11
|
-
These are references only; Peaks-
|
|
11
|
+
These are references only; Peaks-Loop RD gates remain authoritative for handoff, acceptance, and slice closure.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# OCR (Open Code Review) integration
|
|
2
2
|
|
|
3
3
|
> Soft-optional second-opinion code review for peaks-rd Gate B3.
|
|
4
|
-
> Mirrors the ECC 64-agents pattern (spec §7.2): peaks-
|
|
4
|
+
> Mirrors the ECC 64-agents pattern (spec §7.2): peaks-loop ships
|
|
5
5
|
> `@alibaba-group/open-code-review` as an **`optionalDependency`**
|
|
6
6
|
> (was promoted to `dependencies` in 2.0.1 and reverted in 2.0.3
|
|
7
7
|
> because its postinstall downloads a Go binary via HTTPS and would
|
|
8
|
-
> otherwise abort `npm i -g peaks-
|
|
8
|
+
> otherwise abort `npm i -g peaks-loop` in restricted/proxied
|
|
9
9
|
> environments). The LLM endpoint config still lives under
|
|
10
10
|
> `peaksConfig.ocr.llm` in the user's `~/.peaks/config.json` (single
|
|
11
11
|
> source of truth, user-managed). When the user installs + configures
|
|
@@ -40,10 +40,10 @@ ships without the second opinion.
|
|
|
40
40
|
## Install
|
|
41
41
|
|
|
42
42
|
`@alibaba-group/open-code-review` is an **`optionalDependency`** of
|
|
43
|
-
peaks-
|
|
43
|
+
peaks-loop 2.0.3+ (was a required `dependency` in 2.0.1/2.0.2; reverted
|
|
44
44
|
because the postinstall downloads a Go binary via HTTPS, which fails in
|
|
45
45
|
restricted/proxied environments and would otherwise abort
|
|
46
|
-
`npm i -g peaks-
|
|
46
|
+
`npm i -g peaks-loop`). peaks-loop does NOT auto-install it. To enable
|
|
47
47
|
the second-opinion review:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
@@ -61,17 +61,17 @@ Five possible states:
|
|
|
61
61
|
|
|
62
62
|
| state | Meaning | Recovery |
|
|
63
63
|
|---|---|---|
|
|
64
|
-
| `ready` | Installed + binary downloaded + peaks-
|
|
65
|
-
| `package-missing` | npm dep not installed (peaks-
|
|
64
|
+
| `ready` | Installed + binary downloaded + peaks-loop's `peaksConfig.ocr.llm` valid | Nothing — `run-ocr` will work. |
|
|
65
|
+
| `package-missing` | npm dep not installed (peaks-loop 2.0.3+ ships with ocr as an `optionalDependency`, so the common cause is the user has not installed it yet, or it was removed from node_modules) | `npm i -g @alibaba-group/open-code-review` (peaks-loop no longer auto-installs it; under pnpm also run `pnpm approve-builds @alibaba-group/open-code-review`) |
|
|
66
66
|
| `binary-missing` | npm dep present but Go binary did not download | `pnpm approve-builds @alibaba-group/open-code-review`, OR run `node node_modules/@alibaba-group/open-code-review/scripts/install.js`, OR manually fetch from https://github.com/alibaba/open-code-review/releases and place the binary at the path shown in `nextActions[2]`. |
|
|
67
67
|
| `config-missing` | binary present but `peaksConfig.ocr.llm` is empty or partial | See "Configure" below. |
|
|
68
68
|
| `detection-failed` | Unexpected error during detection | Inspect stderr; re-run probe. |
|
|
69
69
|
|
|
70
|
-
## Configure (one-time, per user) — peaks-
|
|
70
|
+
## Configure (one-time, per user) — peaks-loop does NOT auto-configure
|
|
71
71
|
|
|
72
|
-
The LLM endpoint config is **user-maintained inside peaks-
|
|
72
|
+
The LLM endpoint config is **user-maintained inside peaks-loop's own
|
|
73
73
|
config** at `~/.peaks/config.json` under the `ocr.llm` key. The user
|
|
74
|
-
is the only party that touches their LLM token / URL / model. peaks-
|
|
74
|
+
is the only party that touches their LLM token / URL / model. peaks-loop
|
|
75
75
|
never auto-writes the config and never writes `~/.opencodereview/config.json`.
|
|
76
76
|
|
|
77
77
|
```bash
|
|
@@ -105,7 +105,7 @@ env vars** (ocr's highest-priority config path). The mapping is:
|
|
|
105
105
|
| `authHeader` | `OCR_LLM_AUTH_HEADER` | One of `authorization` (default Bearer), `x-api-key` (for `sk-ant-*` keys), or `bearer` |
|
|
106
106
|
|
|
107
107
|
The `~/.opencodereview/config.json` file the user might have set up
|
|
108
|
-
for 2.0.0 is no longer consulted by peaks-
|
|
108
|
+
for 2.0.0 is no longer consulted by peaks-loop. The user may delete it
|
|
109
109
|
at their discretion — the ocr subprocess ignores the file when peaks-
|
|
110
110
|
cli's env vars are present (and the env-var surface is highest priority).
|
|
111
111
|
|
|
@@ -171,7 +171,7 @@ even when ocr is not ready or the subprocess fails. The envelope
|
|
|
171
171
|
`ok` field carries the success signal; the caller (peaks-rd) is
|
|
172
172
|
expected to pattern-match on `data.state` and proceed without the
|
|
173
173
|
second opinion if needed. This matches the ECC 64-agents
|
|
174
|
-
soft-fail policy and the peaks-
|
|
174
|
+
soft-fail policy and the peaks-loop "minimal user operation"
|
|
175
175
|
tenet — missing ocr should never block a slice.
|
|
176
176
|
|
|
177
177
|
## Security
|
|
@@ -181,12 +181,12 @@ tenet — missing ocr should never block a slice.
|
|
|
181
181
|
tool you opt into: don't point it at a free public endpoint
|
|
182
182
|
for proprietary code; use a vendor / self-hosted endpoint with
|
|
183
183
|
appropriate data controls.
|
|
184
|
-
- peaks-
|
|
184
|
+
- peaks-loop does NOT auto-configure ocr. Your `ocr.llm.authToken`
|
|
185
185
|
is yours. Rotate as needed. The token is stored only in the
|
|
186
186
|
user-layer `~/.peaks/config.json` (project layer rejects writes
|
|
187
187
|
to any key matching `isSensitiveConfigPath`), and
|
|
188
188
|
`peaks config get` redacts it as `***`.
|
|
189
|
-
- peaks-
|
|
189
|
+
- peaks-loop's wrapper records ocr's `stdout` verbatim in the
|
|
190
190
|
envelope (and in `code-review.md` when peaks-rd merges
|
|
191
191
|
findings). Don't put secrets in your code being reviewed.
|
|
192
192
|
- The `peaks code-review config-template` snippet embeds the
|
|
@@ -199,10 +199,10 @@ These are the actual failure modes the wrapper has been
|
|
|
199
199
|
dogfooded against:
|
|
200
200
|
|
|
201
201
|
1. **Network blocked from GitHub Releases** during postinstall →
|
|
202
|
-
`binary-missing`. peaks-
|
|
202
|
+
`binary-missing`. peaks-loop still runs cleanly because ocr
|
|
203
203
|
is detected as not-ready; user manually fetches the binary
|
|
204
204
|
and places it at `nextActions[2]`'s path.
|
|
205
|
-
2. **pnpm-installed peaks-
|
|
205
|
+
2. **pnpm-installed peaks-loop** → ocr postinstall blocked by
|
|
206
206
|
pnpm's safe-by-default policy → `binary-missing`. Recover
|
|
207
207
|
with `pnpm approve-builds @alibaba-group/open-code-review`.
|
|
208
208
|
3. **No / partial LLM config** → `config-missing` with
|
|
@@ -213,17 +213,17 @@ dogfooded against:
|
|
|
213
213
|
wrapper soft-fails (`ok: false`, `warnings[0]` includes the
|
|
214
214
|
exit code, `stderr` carries ocr's own error message).
|
|
215
215
|
5. **User 2.0.0 → 2.0.1 migration** — they configured
|
|
216
|
-
`~/.opencodereview/config.json` for 2.0.0; peaks-
|
|
216
|
+
`~/.opencodereview/config.json` for 2.0.0; peaks-loop 2.0.1
|
|
217
217
|
no longer reads that file. They paste the same values into
|
|
218
|
-
`~/.peaks/config.json` under `ocr.llm` (peaks-
|
|
218
|
+
`~/.peaks/config.json` under `ocr.llm` (peaks-loop handles the
|
|
219
219
|
camelCase conversion in the template).
|
|
220
220
|
|
|
221
221
|
## See also
|
|
222
222
|
|
|
223
223
|
- ocr upstream: https://github.com/alibaba/open-code-review
|
|
224
|
-
- peaks-
|
|
224
|
+
- peaks-loop source: `src/services/code-review/ocr-service.ts`,
|
|
225
225
|
`src/cli/commands/code-review-commands.ts`
|
|
226
|
-
- peaks-
|
|
226
|
+
- peaks-loop config schema: `src/services/config/config-types.ts`
|
|
227
227
|
(`OcrLlmConfig`, `OcrConfig`, `PeaksConfig.ocr?`)
|
|
228
228
|
- ECC 64-agents soft-optional pattern (mirrored):
|
|
229
229
|
`src/services/agent/ecc-agent-service.ts`
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Peaks RD reads OpenSpec change packs through the Peaks CLI rather than re-parsing markdown or spawning subprocesses by hand. The CLI returns the same stable envelope shape (`{ ok, command, data, warnings, nextActions }`) so RD can capture it as artifact JSON.
|
|
4
4
|
|
|
5
|
-
> **Slice #016 (2026-06-09)**: this document used to live at `openspec-mcp-cli.md` and contained a section on the now-retired peaks-
|
|
5
|
+
> **Slice #016 (2026-06-09)**: this document used to live at `openspec-mcp-cli.md` and contained a section on the now-retired peaks-loop MCP install / call verbs. The MCP subsystem was retired in slice #016; the LLM's own tool list is now the source of truth for installed MCPs. The OpenSpec CLI recipes below are unchanged.
|
|
6
6
|
|
|
7
7
|
## Loading an existing OpenSpec change as RD input
|
|
8
8
|
|
|
@@ -55,7 +55,7 @@ claude mcp add context7 -- npx @upstash/context7-mcp
|
|
|
55
55
|
# Restart the IDE after install; the runtime picks up the new server only after a fresh process.
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
peaks-
|
|
58
|
+
peaks-loop does not install MCPs on the user's behalf as of slice #016; the LLM is the executor and the IDE is the dispatcher. Evidence of the lookup (sanitized query + response summary) goes into the RD artifact, not full network bodies or secrets.
|
|
59
59
|
|
|
60
60
|
## Boundary
|
|
61
61
|
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
> Body of `## GStack integration and code dry-runs`. Use gstack as a concrete engineering workflow reference for `Think → Plan → Build → Review → Test → Ship → Reflect`:
|
|
4
4
|
|
|
5
|
-
- map plan engineering review to Peaks-
|
|
5
|
+
- map plan engineering review to Peaks-Loop RD risk matrices, task graphs, and slice contracts;
|
|
6
6
|
- map build/review discipline to strict spec-first implementation and code-review gates;
|
|
7
7
|
- map investigate/careful/guard concepts to root-cause analysis, risky-action confirmation, and scoped edit boundaries;
|
|
8
|
-
- adapt gstack concepts into Peaks-
|
|
8
|
+
- adapt gstack concepts into Peaks-Loop artifacts rather than invoking gstack commands as runtime dependencies.
|
|
9
9
|
|
|
10
|
-
When Peaks-
|
|
10
|
+
When Peaks-Loop RD produces or changes code, dry-run repeatedly instead of only during preflight:
|
|
11
11
|
|
|
12
12
|
1. run standards dry-runs before planning or implementation;
|
|
13
|
-
2. run the relevant Peaks-
|
|
13
|
+
2. run the relevant Peaks-Loop dry-run again after each meaningful implementation slice or standards-affecting decision;
|
|
14
14
|
3. after implementation, run required unit tests, code review, and security review before any completion claim;
|
|
15
|
-
4. only after those checks pass, run the relevant Peaks-
|
|
15
|
+
4. only after those checks pass, run the relevant Peaks-Loop dry-run before handoff, review, or retention-boundary work;
|
|
16
16
|
5. record commands, results, coverage evidence, reviewer/security findings, dry-run result, and remaining action in the RD handoff capsule.
|
|
@@ -90,7 +90,7 @@ peaks codegraph affected --project <repo> <changed-files...> --json
|
|
|
90
90
|
|
|
91
91
|
# 6. record red-line scope, slice contract, coverage status into the RD artifact, then implement
|
|
92
92
|
|
|
93
|
-
# 6.5 BEFORE tech-doc: verify EVERY path in the tech-doc against actual project structure (Peaks-
|
|
93
|
+
# 6.5 BEFORE tech-doc: verify EVERY path in the tech-doc against actual project structure (Peaks-Loop Gate A2)
|
|
94
94
|
# ls every directory path in the tech-doc — zero "No such file" allowed
|
|
95
95
|
# This is the most common RD failure mode. Do not skip it.
|
|
96
96
|
|
|
@@ -159,21 +159,21 @@ peaks codegraph affected --project <repo> <changed-files...> --json
|
|
|
159
159
|
# → `peaks request transition --state qa-handoff` returns `code: PREREQUISITES_MISSING`.
|
|
160
160
|
# Escape hatch (assisted mode): `--allow-incomplete --confirm`.
|
|
161
161
|
|
|
162
|
-
# 6.6 BEFORE implementation: verify CLAUDE.md + .claude/rules/ exist (Peaks-
|
|
162
|
+
# 6.6 BEFORE implementation: verify CLAUDE.md + .claude/rules/ exist (Peaks-Loop Gate A3)
|
|
163
163
|
# Missing standards files → run `peaks standards init --project .` first
|
|
164
164
|
# Without project rules, security review and code review triggers won't fire.
|
|
165
165
|
|
|
166
166
|
# 7. AFTER implementation, BEFORE QA handoff — RUN THESE GATES:
|
|
167
|
-
# Peaks-
|
|
168
|
-
# Peaks-
|
|
169
|
-
# Peaks-
|
|
170
|
-
# Peaks-
|
|
167
|
+
# Peaks-Loop Gate B2: unit tests exist and pass for the changed surface → npx vitest run --changed (or project equivalent; the changed-only mode is the peaks slice check default as of run 017; use --run-tests for the full suite, or invoke /peaks-solo-test to run the full suite standalone)
|
|
168
|
+
# Peaks-Loop Gate B3: code review evidence → .peaks/_runtime/<sessionId>/rd/code-review.md
|
|
169
|
+
# Peaks-Loop Gate B4: security review evidence → .peaks/_runtime/<sessionId>/rd/security-review.md
|
|
170
|
+
# Peaks-Loop Gate B5 (NEW): RD artifact body has no unfilled placeholders.
|
|
171
171
|
peaks request lint <rid> --role rd --project <repo> --session-id <session-id> --json
|
|
172
|
-
# Peaks-
|
|
172
|
+
# Peaks-Loop Gate B6 (NEW): declared --type still matches the actual diff after implementation.
|
|
173
173
|
peaks scan request-type-sanity --project <repo> --type <type> --json
|
|
174
|
-
# Peaks-
|
|
174
|
+
# Peaks-Loop Gate B7 (NEW, repair cycles only): we have not exceeded the 3-cycle cap.
|
|
175
175
|
peaks request repair-status <rid> --project <repo> --session-id <session-id> --json
|
|
176
|
-
# Peaks-
|
|
176
|
+
# Peaks-Loop Gate B8 (NEW): every changed file matches the RD red-line scope (no out-of-bounds writes).
|
|
177
177
|
peaks scan diff-vs-scope --rid <rid> --project <repo> --session-id <session-id> --json
|
|
178
178
|
# All six non-zero → BLOCKED. Fix and re-check before attempting the qa-handoff transition.
|
|
179
179
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Project standards preflight (RD)
|
|
2
2
|
|
|
3
|
-
> Body of `## Project standards preflight`. Before RD planning or implementation work in a code repository, call the Peaks-
|
|
3
|
+
> Body of `## Project standards preflight`. Before RD planning or implementation work in a code repository, call the Peaks-Loop CLI:
|
|
4
4
|
|
|
5
5
|
- `peaks standards init --project <path> --dry-run`
|
|
6
6
|
- `peaks standards update --project <path> --dry-run`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Peaks-
|
|
1
|
+
# Peaks-Loop RD transition verification gates
|
|
2
2
|
|
|
3
3
|
> Extracted from `skills/peaks-rd/SKILL.md` on 2026-06-09 (slice 019 — slim skill files to references) to keep SKILL.md under the 800-line cap from `common/coding-style.md`. The content below is the verbatim "Transition verification gates" section that was previously inline; nothing was paraphrased, just relocated.
|
|
4
4
|
|
|
@@ -17,14 +17,14 @@ You cannot declare a phase complete from memory. Each gate below is a `ls` or `g
|
|
|
17
17
|
>
|
|
18
18
|
> The escape hatch `--allow-incomplete --reason "<text>"` still exists for one-off exceptions; the bypass is recorded in the artifact transition note.
|
|
19
19
|
|
|
20
|
-
**Peaks-
|
|
20
|
+
**Peaks-Loop Gate A — After project-scan read (before any implementation):**
|
|
21
21
|
```bash
|
|
22
22
|
ls .peaks/_runtime/<sessionId>/rd/project-scan.md
|
|
23
23
|
# Expected output: .peaks/_runtime/<sessionId>/rd/project-scan.md
|
|
24
24
|
# "No such file" → STOP, create the project-scan first. Do not write code.
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
**Peaks-
|
|
27
|
+
**Peaks-Loop Gate A2 — Before tech-doc write: project structure verified (PATH CORRECTNESS — CRITICAL):**
|
|
28
28
|
```bash
|
|
29
29
|
# Verify EVERY file path and directory in the tech-doc exists in the actual project.
|
|
30
30
|
# Do not assume paths. Do not guess directory structures. Open the files and verify.
|
|
@@ -36,7 +36,7 @@ ls <every-single-directory-path-in-tech-doc> 2>&1 | grep -c "No such file"
|
|
|
36
36
|
# breaks the implementation, and forces the user to correct the engineer.
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
**Peaks-
|
|
39
|
+
**Peaks-Loop Gate A3 — Before implementation: project standards files exist (CLAUDE.md + .claude/rules/):**
|
|
40
40
|
```bash
|
|
41
41
|
ls CLAUDE.md .claude/rules/common/coding-style.md .claude/rules/common/code-review.md .claude/rules/common/security.md 2>&1 | grep -c "No such file"
|
|
42
42
|
# Expected: 0 (all four files exist)
|
|
@@ -45,14 +45,14 @@ ls CLAUDE.md .claude/rules/common/coding-style.md .claude/rules/common/code-revi
|
|
|
45
45
|
# Without CLAUDE.md and .claude/rules/, code review and security review triggers won't fire.
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
**Peaks-
|
|
48
|
+
**Peaks-Loop Gate B — Before QA handoff:**
|
|
49
49
|
```bash
|
|
50
50
|
ls .peaks/_runtime/<sessionId>/rd/requests/<rid>.md \
|
|
51
51
|
.peaks/_runtime/<sessionId>/rd/tech-doc.md
|
|
52
52
|
# Both must exist. Missing either → BLOCKED, do not hand off to QA
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
**Peaks-
|
|
55
|
+
**Peaks-Loop Gate B2 — Before QA handoff: unit tests exist and pass for the changed surface:**
|
|
56
56
|
```bash
|
|
57
57
|
# Run the project's test command against changed files. Record the output.
|
|
58
58
|
# Example (adapt to project test runner):
|
|
@@ -66,7 +66,7 @@ npx vitest run --changed --reporter=verbose 2>&1 | tail -20
|
|
|
66
66
|
# `--run-tests` flag is the CLI opt-in.
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
**Peaks-
|
|
69
|
+
**Peaks-Loop Gate B3 — Before QA handoff: code review evidence exists:**
|
|
70
70
|
```bash
|
|
71
71
|
ls .peaks/_runtime/<sessionId>/rd/code-review.md 2>&1
|
|
72
72
|
# Expected: .peaks/_runtime/<sessionId>/rd/code-review.md
|
|
@@ -74,7 +74,7 @@ ls .peaks/_runtime/<sessionId>/rd/code-review.md 2>&1
|
|
|
74
74
|
# record findings, fix CRITICAL/HIGH issues, then re-check.
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
**Peaks-
|
|
77
|
+
**Peaks-Loop Gate B4 — Before QA handoff: security review evidence exists:**
|
|
78
78
|
```bash
|
|
79
79
|
ls .peaks/_runtime/<sessionId>/rd/security-review.md 2>&1
|
|
80
80
|
# Expected: .peaks/_runtime/<sessionId>/rd/security-review.md
|
|
@@ -82,7 +82,7 @@ ls .peaks/_runtime/<sessionId>/rd/security-review.md 2>&1
|
|
|
82
82
|
# fix CRITICAL/HIGH issues, record findings, then re-check.
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
**Peaks-
|
|
85
|
+
**Peaks-Loop Gate B5 — RD artifact body has no unfilled placeholders:**
|
|
86
86
|
```bash
|
|
87
87
|
peaks request lint <rid> --role rd --project <repo> --session-id <session-id> --json
|
|
88
88
|
# Expected: ok=true. exit 0.
|
|
@@ -90,7 +90,7 @@ peaks request lint <rid> --role rd --project <repo> --session-id <session-id> --
|
|
|
90
90
|
# and TBD/TODO marker with line numbers. Fill them in before attempting handoff.
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
**Peaks-
|
|
93
|
+
**Peaks-Loop Gate B6 — Declared --type matches the actual diff:**
|
|
94
94
|
```bash
|
|
95
95
|
peaks scan request-type-sanity --project <repo> --type <type> --json
|
|
96
96
|
# Expected: consistent=true. exit 0.
|
|
@@ -99,7 +99,7 @@ peaks scan request-type-sanity --project <repo> --type <type> --json
|
|
|
99
99
|
# (`peaks request init` with the corrected --type) or trim the scope.
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
**Peaks-
|
|
102
|
+
**Peaks-Loop Gate B7 — Repair cycle cap (only relevant during RD↔QA repair loop):**
|
|
103
103
|
```bash
|
|
104
104
|
peaks request repair-status <rid> --project <repo> --session-id <session-id> --json
|
|
105
105
|
# Expected: atCap=false. exit 0.
|
|
@@ -107,7 +107,7 @@ peaks request repair-status <rid> --project <repo> --session-id <session-id> --j
|
|
|
107
107
|
# handoff via Solo rather than entering a fourth cycle.
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
**Peaks-
|
|
110
|
+
**Peaks-Loop Gate B8 — Diff stays inside the declared red-line scope:**
|
|
111
111
|
```bash
|
|
112
112
|
peaks scan diff-vs-scope --rid <rid> --project <repo> --session-id <session-id> --json
|
|
113
113
|
# Expected: ok=true. exit 0.
|
|
@@ -121,7 +121,7 @@ peaks scan diff-vs-scope --rid <rid> --project <repo> --session-id <session-id>
|
|
|
121
121
|
# before re-running. Auto-allowed paths (test files, .peaks/, __mocks__/) never need a pattern.
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
**Peaks-
|
|
124
|
+
**Peaks-Loop Gate B9 — RD-side perf-baseline output present (when slice has a user-perceivable perf surface):**
|
|
125
125
|
```bash
|
|
126
126
|
ls .peaks/_runtime/<sessionId>/rd/perf-baseline.md 2>&1
|
|
127
127
|
# Expected: .peaks/_runtime/<sessionId>/rd/perf-baseline.md
|
|
@@ -19,4 +19,4 @@ peaks project memories --project <repo> --json
|
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
This returns durable memories from `.peaks/memory` — decisions, conventions, modules, and rules captured in past sessions. Filter with `--kind <decision|convention|module|rule|reference|project>`. (`.peaks/PROJECT.md` is a human-readable session timeline only.)
|
|
22
|
-
Then display: `Peaks-
|
|
22
|
+
Then display: `Peaks-Loop Skill: peaks-rd | Peaks-Loop Gate: startup | Next: <one short action>`. Update with `peaks skill presence:set peaks-rd --project <repo> --mode <mode> --gate <gate>` when gates change. When the role's work ends, run `peaks skill presence:clear --project <repo>`.
|
|
@@ -7,13 +7,13 @@ description: Third-party independent code-review skill for Peaks. Use as a paral
|
|
|
7
7
|
|
|
8
8
|
> **Read once at the top of this file; the rest of the skill is written against it.**
|
|
9
9
|
|
|
10
|
-
The `.peaks/` workspace is partitioned by a **single scope axis** (session-id, at `.peaks/_runtime/<sessionId>/...`) with a nested **sub-agent axis** under `.peaks/_sub_agents/<sessionId>/...`. Use `<sessionId>` placeholders (NEVER bare `<sid>`). The peaks-
|
|
10
|
+
The `.peaks/` workspace is partitioned by a **single scope axis** (session-id, at `.peaks/_runtime/<sessionId>/...`) with a nested **sub-agent axis** under `.peaks/_sub_agents/<sessionId>/...`. Use `<sessionId>` placeholders (NEVER bare `<sid>`). The peaks-loop change-id axis was removed in slice `2026-06-29-change-id-root-removal`; reviewable artifacts now live under `.peaks/_runtime/<sessionId>/<role>/...` only. OpenSpec's independent `openspec/changes/<change-id>/` vocabulary (L4) is preserved untouched. CLI mapping: session-id → `peaks session *`; sub-agent → `peaks sub-agent *`. Regression test `tests/unit/skills/skills-skill-md-naming.test.ts` enforces (a) zero bare `<sid>`, (b) every `.peaks/_runtime/<X>/` has an axis label, (c) this callout is present.
|
|
11
11
|
|
|
12
12
|
## peaks-context auto-build (v3.0)
|
|
13
13
|
|
|
14
14
|
The peaks-reviewer workflow automatically runs `peaks context build --audience peaks-reviewer` before the LLM is invoked. No manual setup needed.
|
|
15
15
|
|
|
16
|
-
# Peaks-
|
|
16
|
+
# Peaks-Loop Third-Party Reviewer (v2.14.0 G4)
|
|
17
17
|
|
|
18
18
|
`peaks-reviewer` is a **parallel** reviewer to `karpathy-reviewer`. It is intentionally **not** a replacement: karpathy-reviewer keeps enforcing the 4 guidelines; peaks-reviewer adds an out-of-band perspective from a different model family to mitigate single-LLM self-dogfood blind spots.
|
|
19
19
|
|
package/skills/peaks-sc/SKILL.md
CHANGED
|
@@ -3,9 +3,9 @@ name: peaks-sc
|
|
|
3
3
|
description: Source control, sync, and change-control skill for Peaks. Use when a workflow needs change impact, artifact retention, commit boundaries, GitHub artifact repository pointers, sync state, or rollback evidence.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Peaks-
|
|
6
|
+
# Peaks-Loop SC
|
|
7
7
|
|
|
8
|
-
Peaks-
|
|
8
|
+
Peaks-Loop SC records how product, RD, QA, code, and artifacts move together.
|
|
9
9
|
|
|
10
10
|
## Slice planning first step
|
|
11
11
|
|
|
@@ -36,7 +36,7 @@ peaks project memories --project <repo> --json
|
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
This returns durable memories from `.peaks/memory` — decisions, conventions, modules, and rules captured in past sessions. Filter with `--kind <decision|convention|module|rule|reference|project>`. (`.peaks/PROJECT.md` is a human-readable session timeline only.)
|
|
39
|
-
Then display: `Peaks-
|
|
39
|
+
Then display: `Peaks-Loop Skill: peaks-sc | Peaks-Loop Gate: startup | Next: <one short action>`. Update with `peaks skill presence:set peaks-sc --project <repo> --mode <mode> --gate <gate>` when gates change. When the role's work ends, run `peaks skill presence:clear --project <repo>`.
|
|
40
40
|
|
|
41
41
|
## Responsibilities
|
|
42
42
|
|
|
@@ -65,9 +65,9 @@ Each refactor slice must leave a traceable local artifact boundary in `.peaks/_r
|
|
|
65
65
|
|
|
66
66
|
Use gstack as a concrete source-control and release workflow reference for the `Ship → Reflect` stages:
|
|
67
67
|
|
|
68
|
-
- map `/ship` and `/land-and-deploy` concepts to Peaks-
|
|
68
|
+
- map `/ship` and `/land-and-deploy` concepts to Peaks-Loop commit boundaries, sync state, rollback points, and artifact retention;
|
|
69
69
|
- map checkpoint discipline to traceable code-plus-artifact slices;
|
|
70
|
-
- do not create PRs, merge, deploy, or mutate shared state unless the active Peaks-
|
|
70
|
+
- do not create PRs, merge, deploy, or mutate shared state unless the active Peaks-Loop workflow and user confirmation explicitly allow it.
|
|
71
71
|
|
|
72
72
|
## Project memory backup
|
|
73
73
|
|
|
@@ -91,7 +91,7 @@ Concrete rules: `references/openspec-commit-boundaries.md`.
|
|
|
91
91
|
|
|
92
92
|
## Default runbook
|
|
93
93
|
|
|
94
|
-
Use this sequence when SC owns the change-control pass for a refactor or release slice. SC never edits code or tests; it only records boundary evidence through the Peaks-
|
|
94
|
+
Use this sequence when SC owns the change-control pass for a refactor or release slice. SC never edits code or tests; it only records boundary evidence through the Peaks-Loop CLI.
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
97
|
# 0. Confirm SC's own runbook integrity before recording boundary evidence
|
|
@@ -145,14 +145,14 @@ The final two `--apply` calls require explicit authorization. Without it, defaul
|
|
|
145
145
|
|
|
146
146
|
You cannot declare SC complete from memory. Each gate below is a `ls` command you **MUST run** and whose output you **MUST see** before proceeding.
|
|
147
147
|
|
|
148
|
-
**Peaks-
|
|
148
|
+
**Peaks-Loop Gate A — After impact + retention + validate + boundary:**
|
|
149
149
|
```bash
|
|
150
150
|
ls .peaks/_runtime/<sessionId>/sc/change-control/<rid>.md
|
|
151
151
|
# Expected output: .peaks/_runtime/<sessionId>/sc/change-control/<rid>.md
|
|
152
152
|
# "No such file" → STOP, write the change-control record first.
|
|
153
153
|
```
|
|
154
154
|
|
|
155
|
-
**Peaks-
|
|
155
|
+
**Peaks-Loop Gate B — Before declaring SC complete (verify commit boundary is recorded):**
|
|
156
156
|
```bash
|
|
157
157
|
git log --oneline -5
|
|
158
158
|
# Expected: at least one recent commit whose message references the change-id or slice-id.
|
|
@@ -161,6 +161,6 @@ git log --oneline -5
|
|
|
161
161
|
|
|
162
162
|
## Boundaries
|
|
163
163
|
|
|
164
|
-
Do not implement code or test logic. Do not create GitHub repositories directly from the skill body. Use the Peaks-
|
|
164
|
+
Do not implement code or test logic. Do not create GitHub repositories directly from the skill body. Use the Peaks-Loop CLI artifact commands.
|
|
165
165
|
|
|
166
166
|
Reference: `references/artifact-retention.md`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: peaks-security-audit
|
|
3
3
|
description: Independent security audit skill. Reads the immutable peaks-prd handoff + the project-level security-template.md, performs an OWASP Top-10 + 8-dimension threat model audit, and writes a structured envelope to `.peaks/_runtime/<sessionId>/audit/security-<rid>.md`. Decoupled from peaks-rd 5-way fan-out per slice v2.12.0 (Group A, Tier 2). Use when the slice introduces authn/authz, secrets, input validation, path/filesystem trust, SQL/NoSQL injection, XSS/content injection, dependency supply chain, or external API surface changes.
|
|
4
4
|
metadata:
|
|
5
|
-
appliesTo: peaks-
|
|
5
|
+
appliesTo: peaks-loop v2.12.0+
|
|
6
6
|
replaces: peaks-rd 5-way fan-out security-reviewer slot (per AC-2.x)
|
|
7
7
|
sources:
|
|
8
8
|
- handoff: .peaks/_runtime/<sessionId>/prd/handoff.md (sha256-locked, schemaVersion: 2)
|
|
@@ -7,7 +7,7 @@ description: Run multi-pass slice decomposition on a PRD-ready request and emit
|
|
|
7
7
|
|
|
8
8
|
> **Read once at the top of this file; the rest of the skill is written against it.**
|
|
9
9
|
|
|
10
|
-
The `.peaks/` workspace is partitioned by a **single scope axis** (session-id, at `.peaks/_runtime/<sessionId>/...`) with a nested **sub-agent axis** under `.peaks/_sub_agents/<sessionId>/...`. Use `<sessionId>` placeholders (NEVER bare `<sid>`). The peaks-
|
|
10
|
+
The `.peaks/` workspace is partitioned by a **single scope axis** (session-id, at `.peaks/_runtime/<sessionId>/...`) with a nested **sub-agent axis** under `.peaks/_sub_agents/<sessionId>/...`. Use `<sessionId>` placeholders (NEVER bare `<sid>`). The peaks-loop change-id axis was removed in slice `2026-06-29-change-id-root-removal`; reviewable artifacts now live under `.peaks/_runtime/<sessionId>/<role>/...` only. OpenSpec's independent `openspec/changes/<change-id>/` vocabulary (L4) is preserved untouched. CLI mapping: session-id → `peaks session *`; sub-agent → `peaks sub-agent *`. Regression test `tests/unit/skills/skills-skill-md-naming.test.ts` enforces (a) zero bare `<sid>`, (b) every `.peaks/_runtime/<X>/` has an axis label, (c) this callout is present.
|
|
11
11
|
|
|
12
12
|
## Read via `SchemaRouter.readResult()` — never parse the file directly
|
|
13
13
|
|
|
@@ -28,7 +28,7 @@ if (parsed.schemaVersion === 'v2') {
|
|
|
28
28
|
|
|
29
29
|
Do NOT call `JSON.parse(readFileSync(...))` directly. Unknown `schemaVersion` values throw `UnknownSchemaVersionError` with code `UNKNOWN_SCHEMA_VERSION` — surface that to the CLI as exit-code-mapped failure, do not silently fall back to v1.
|
|
30
30
|
|
|
31
|
-
# Peaks-
|
|
31
|
+
# Peaks-Loop slice-decompose
|
|
32
32
|
|
|
33
33
|
`peaks-slice-decompose` wraps the v2 multi-pass orchestrator (`MultiPassOrchestrator.decompose`) and the v1/v2 dual-read SchemaRouter. It owns the artifact shape emitted by `peaks slice decompose` when a non-default `--granularity` is passed.
|
|
34
34
|
|