Skip to content

Releases: move-hoon/sober

v2.1.1

Choose a tag to compare

@move-hoon move-hoon released this 18 Jun 05:59

🚀 What's Changed

This release improves the robustness of hook scripts by safely handling non-object JSON responses, preventing unexpected jq execution errors during tool failure logging and post-edit
formatting.

🛡️ Hook Script Robustness

  • Safe JSON Parsing in Tool Failure Log (.sober/scripts/codex-hooks/tool-failure-log.sh): Updated jq queries to use the objects filter. This ensures that field extraction (like
    exit_code and stderr) only occurs when tool_response is a valid JSON object, preventing script failures on unexpected response shapes.
  • Safe JSON Parsing in Post-Edit Format (.sober/scripts/hooks/post-edit-format.sh): Applied the same objects filter protection when extracting filePath or file_path from
    tool_response, ensuring the formatter hook gracefully handles malformed or non-object data without crashing.

🛠️ Full Changelog

  • Prevented jq errors in tool-failure-log.sh by enforcing object type checks on tool_response.
  • Prevented jq errors in post-edit-format.sh by enforcing object type checks on tool_response.
  • Bumped package version to 2.1.1 in package.json.

v2.1.0

Choose a tag to compare

@move-hoon move-hoon released this 13 Jun 16:07

🚀 What's Changed

This release adds first-class Sober launchers for Codex and Claude Code, improves Codex hook logging under sandboxed runs, and keeps the README focused on the new agent launch flow.

🧭 Sober Agent Launchers

  • Codex Launcher Added (lib/cli.js): Added sober codex as a Sober-managed Codex entrypoint.
    • Defaults to codex --sandbox workspace-write --add-dir ~/.sober/logs
    • Respects explicit Codex sandbox flags such as --sandbox read-only
  • Claude Launcher Added (lib/cli.js): Added sober claude as a pass-through Claude Code launcher.
  • Unified YOLO UX (lib/cli.js): Added shared --yolo handling across runtimes.
    • sober codex --yolo → codex --yolo
    • sober claude --yolo → claude --permission-mode bypassPermissions

🪵 Failure Log Hook Reliability

  • Sandbox-Safe Failure Logging (.sober/scripts/hooks/tool-failure-log.sh): Made tool failure logging best-effort so hook execution no longer fails when the log path is not writable.
  • Configurable Failure Log Path: Added SOBER_TOOL_FAILURE_LOG support across:
    • .sober/scripts/hooks/tool-failure-log.sh
    • .sober/scripts/analyze-failures.sh
    • .sober/scripts/hooks/session-start.sh

🧹 CLI Cleanup

  • Cleaner Agent Command Builder (lib/cli.js): Split agent launch handling into smaller parsing/build functions for readability.
  • Hook Reference Inspection Cleanup (lib/cli.js): Consolidated duplicated hook traversal logic into a shared hook reference collector.
  • Safer Symlink Detection (lib/cli.js): Improved Sober-owned symlink detection to handle relative symlink targets correctly.

📚 Documentation

  • README Launch Flow Updated: Updated English and Korean READMEs to recommend launching agents through Sober:
    • sober codex
    • sober claude
    • sober codex --yolo
    • sober claude --yolo
  • YOLO Safety Note Added: Added a concise warning that --yolo bypasses approvals/permissions and should only be used in isolated environments.

🛠️ Full Changelog

  • Added sober codex and sober claude commands in lib/cli.js.
  • Added shared --yolo runtime mapping for Codex and Claude Code.
  • Added Codex workspace-write/log-dir preset for normal sober codex runs.
  • Preserved user-provided Codex sandbox flags instead of overriding them.
  • Made Sober failure logging tolerate unwritable log paths.
  • Added SOBER_TOOL_FAILURE_LOG override support.
  • Refactored CLI launch and hook inspection helpers for readability.
  • Updated README and README.ko launch examples.
  • Bumped package version to 2.1.0 in package.json.

v2.0.6

Choose a tag to compare

@move-hoon move-hoon released this 07 Jun 12:34

🚀 What's Changed

This release focuses on hotfixing the sober template path-resolution crash in the CLI and improving diagnostic error logging for missing package template files.

🩺 Sober Template spinePath Hotfix & Diagnostics

  • Spine Path Crash Fixed (lib/cli.js): Fixed the path lookup in sober template where the CLI expected AGENTS.md in the parent directory of installation instead of the packaged .sober/AGENTS.md folder.
  • Granular CLI Error Logging (lib/cli.js): Separated template existence checks to log explicit error messages (Sober policy spine not found vs Sober project templates not found) for easier debugging.

🛠️ Full Changelog

  • Fixed spinePath in lib/cli.js to resolve sober template crashes.
  • Separated CLI template existence diagnostic logs in lib/cli.js.
  • Bumped package version to 2.0.6 in package.json.

v2.0.5

Choose a tag to compare

@move-hoon move-hoon released this 07 Jun 08:04

🚀 What's Changed

This release focuses on restructuring Sober's documentation for better readability, softening enforcement-heavy language to accurately match the advisory guardrail implementation, standardizing telemetry references, and adding diagnostic coverage for ripgrep.

🧭 Documentation Architecture Restructured & Unified

  • Consolidated "How Sober Works" Section: Merged the Sober Loop (flowchart), The 5 Invariants (design pillars), and the Sober Contract (P0-P8 rules) into a single unified flow near the top of both README.md and README.ko.md.
  • Sleek Mermaid Flowcharts: Replaced the legacy ASCII boxes in both languages with premium, highly readable vertical Mermaid diagrams (flowchart TD) featuring professional custom HSL styling (Indigo, Slate, Emerald, Rose).
  • Structural Contract Tables: Converted the numbered P0-P8 rules list into clean markdown tables mapping Policy, Core Rule, and Details for better visual scanning.
  • Tool-to-Policy Mapping: Exposed the hook-and-skill tool mapping table directly under the contract (removing the old HTML <details> tags) to visually link policy codes (e.g. P0, P1) to their supporting components under ~/.sober/.

⚖️ Advisory Guardrail Terminology Softened

  • Realistic Guardrail Descriptions: Replaced strict, overly-enforcing verbs (like "enforces", "forbids", "금지", "강제", "항상") with advisory and guidance-oriented language ("nudges", "suggests", "안내", "유도") to accurately reflect the advisory nature of the underlying hook implementations (e.g. verify-gate and compact-suggest).
  • Practical Isolation Examples: Added concrete examples (like worktrees) and (worktree 등) to the Verification Gate & Isolation design invariant to ground the abstract "reversible git boundaries" concept in practical developer workflows.
  • Typographic Refinement: Replaced generic emoji arrows (➡️) in process lists with standard typographic arrows (→).

🩺 Cli Diagnostics & Telemetry Standardized

  • Ripgrep Diagnostic Verification: Added ripgrep (rg) metadata to the optional substrate tool inspection in lib/cli.js, allowing sober doctor to verify its path for fast exact text search matching (P1).
  • Consistent Telemetry References: Cleaned up references from legacy "L6" layers to strictly "P7 Observe" across .gitignore, .sober/commands/measure.md, and .sober/skills/observe/SKILL.md.

🛠️ Full Changelog

  • Restructured README.md and README.ko.md.
  • Added ripgrep to OPTIONAL_TOOLS metadata in lib/cli.js.
  • Standardized L6/P7 observe references in .gitignore, .sober/skills/observe/SKILL.md, and .sober/commands/measure.md.
  • Bumped package metadata and dependencies version to 2.0.5 in package.json.

v2.0.4

Choose a tag to compare

@move-hoon move-hoon released this 06 Jun 13:21

🚀 What's Changed

This release finalizes Sober's structure-graph and MCP posture: GitNexus is now the default structure graph provider, but only through the CLI by default.

🧭 GitNexus CLI Structure Graph

  • GitNexus as Conditional Structure Provider: Added GitNexus as Sober's default structure graph provider for large or unfamiliar repositories.
  • CLI-first Usage: GitNexus is used through the CLI by default, not as an always-on MCP provider.
  • Large-repo Only: GitNexus is reserved for cross-module flow, unclear entry points, or blast-radius analysis — not routine navigation.

✅ Verify Before Deep Reading

  • Earlier Verification Gate: Graph-derived candidates must now be verified with rg/Probe before deep reading or editing.
  • Hints, Not Evidence: GitNexus output is treated as a candidate list, not ground truth.
  • Runtime Confirmation Required: Runtime behavior still requires tests or framework-aware evidence, especially for Spring DI, AOP, events, @Conditional beans, reflection, and config-driven behavior.

🔌 Minimal MCP Policy

  • MCP Default-off: ADR-011 now makes MCP default-off, not forbidden.
  • Serena as the Practical Exception: Serena remains the MCP-style exception for LSP-based type-aware refactoring.
  • GitNexus MCP Opt-in Only: GitNexus is treated primarily as a CLI-based structure candidate generator, and GitNexus MCP remains opt-in only.

🧱 Structure Graph Skill Rewritten

  • Conditional Accelerator Model: Reworked structure-graph from a "last resort" graph tool into a "conditional accelerator."

  • Clear Tool Division: Defined ripgrep/Probe as source verification, GitNexus as code structure candidate generation, Graphify as non-code/multimodal context only, and tests/framework evidence as runtime confirmation.

  • Safe Analyze Guidance: Documented the recommended command:

    gitnexus analyze --skip-agents-md --skip-skills --skip-embeddings
  • Config Example Only: Added a .gitnexusrc example inside the skill documentation; no .gitnexusrc file was added to the repository root.

📚 README, ADR & CLI Alignment

  • README Updated: README.md and README.ko.md now document GitNexus CLI as the L3.5 structure layer, with MCP disabled by default.
  • ADR-006 Rewritten: Updated the structure graph provider decision around GitNexus CLI, candidate verification, and runtime confirmation.
  • ADR-011 Rewritten: Updated the minimal MCP policy around CLI-first operation and MCP opt-in behavior.
  • Doctor Metadata Added: Added GitNexus to sober doctor optional tool inspection as a P1 conditional CLI structure graph tool.
  • Serena Wording Updated: Updated Serena's optional tool role wording to reflect LSP navigation and type-aware edits.

🛠️ Full Changelog

  • Updated .sober/AGENTS.md.
  • Rewrote .sober/skills/structure-graph/SKILL.md.
  • Updated README.md and README.ko.md.
  • Rewrote docs/adr/006-structure-graph.md.
  • Rewrote docs/adr/011-minimal-mcp.md.
  • Added GitNexus optional tool metadata in lib/cli.js.
  • Updated Serena optional tool wording in lib/cli.js.
  • Adjusted optional tool output padding in lib/cli.js.
  • Bumped package metadata for v2.0.4.

v2.0.3

Choose a tag to compare

@move-hoon move-hoon released this 06 Jun 13:19

🚀 What's Changed

This release tightens Sober's search, handoff, and hook behavior to make the agent loop more deterministic and recoverable.

🔎 Search Ladder Clarified

  • Probe as Structural Search: Updated the policy spine so the default search path is now ripgrep → Probe → mgrep.
  • ast-grep Reserved for Rewrites: Removed ast-grep from the default search ladder and clarified its role as the deterministic rewrite/edit tool.
  • Semantic Search Kept Last: Kept mgrep as a semantic/concept-query fallback only, not a replacement for exact or structural search.

📝 Project-root HANDOFF.md

  • Moved Handoff to Project Root: Session continuity now uses project-root HANDOFF.md instead of .claude/HANDOFF.md.
  • Runtime-neutral Memory: Updated commands, hooks, and templates so verified findings and next steps live in the project itself rather than in Claude-specific runtime files.
  • Removed Stale Runtime File: Deleted the tracked .claude/HANDOFF.md.

🛡️ Hook Hardening

  • Defensive Hook Input Handling: Hardened Sober hooks against empty input, invalid JSON, and missing jq.
  • Safer JSON Parsing: Updated hook parsing paths to avoid noisy runtime failures when host CLIs send malformed or incomplete hook payloads.
  • More Recoverable Agent Loop: Hook failures now degrade more safely instead of breaking the workflow unexpectedly.

📚 README, Skills & ADR Alignment

  • Layered Architecture Docs: Updated README.md and README.ko.md to present Sober's 5 invariants, L0-L6 architecture, and core loop.
  • Skill Documentation Updates: Updated observe, search-ladder, and structure-graph skills to match the revised policy model.
  • Search ADR Updated: Updated docs/adr/003-search-ladder.md to reflect the new search ladder decision.
  • Template Alignment: Updated project templates to match the revised spine and project-root handoff model.

🛠️ Full Changelog

  • Deleted tracked .claude/HANDOFF.md.
  • Updated .sober/AGENTS.md.
  • Updated .sober/commands/analyze-failures.md and .sober/commands/measure.md.
  • Updated .sober/scripts/analyze-failures.sh.
  • Hardened hook scripts under .sober/scripts/hooks/.
  • Hardened Codex tool failure hook under .sober/scripts/codex-hooks/.
  • Updated .sober/skills/README.md and .sober/skills/README.ko.md.
  • Updated .sober/skills/observe/SKILL.md.
  • Updated .sober/skills/search-ladder/SKILL.md and its references/ladder.md.
  • Updated .sober/skills/structure-graph/SKILL.md.
  • Updated README.md and README.ko.md.
  • Updated docs/adr/003-search-ladder.md.
  • Updated project-template/AGENTS.md.tmpl and project-template/sgconfig.yml.tmpl.
  • Bumped package metadata for v2.0.3.

v2.0.2

Choose a tag to compare

@move-hoon move-hoon released this 05 Jun 16:38

🚀 What's Changed

This release introduces a major documentation refactor to lower the barrier to entry for beginners, alongside expanded support for external document retrieval integrations (Context7).

📖 Re-architected README & USER-MANUAL Integration

  • Removed Separate User Manuals: Deleted docs/USER-MANUAL.md and docs/USER-MANUAL.ko.md to avoid splitting crucial documentation.
  • Beginner-Friendly Flow: Reordered the README structure into a logical path: What is it? -> Why use it? -> Installation -> Usage Guide -> Reference/Troubleshooting.
  • Consolidated Key Insights: Core operational tips (writing prompt rules, breaking AI agent loops, session handoffs, and summaries) are now embedded directly in the README's "Usage Guide".
  • Decluttered Layout: Advanced tech specs (such as runtime hook details and low-level architecture) have been moved into HTML <details> toggle blocks at the bottom of the document to keep the main guide clean.

📚 Expanded Context7 & Universal Skills Integration

  • Universal Skill Support: Added support for Context7's --universal CLI setup, automatically linking the context documentation skill into the standard ~/.agents/skills/ path.
  • Codex MCP Reference: Added configuration guidelines for enabling Context7 MCP in Codex mode to read package documentations on the fly.
  • Diagnostic Tool Enhancements: Upgraded sober doctor and sober setup checks to verify both Claude-specific and Universal skills for Context7.

🛠️ Full Changelog

  • Deleted obsolete docs/USER-MANUAL.md / docs/USER-MANUAL.ko.md and updated package.json distribution files.
  • Redesigned README.md and README.ko.md to focus on beginner onboarding.
  • Enhanced install.sh and lib/cli.js to support Context7 universal skills setup.
  • Updated unit test suites to align with the revised documentation structure.

v2.0.1

Choose a tag to compare

@move-hoon move-hoon released this 05 Jun 16:38

🚀 What's Changed

This release reorganizes the internal file layout to reduce project complexity and optimize npm package distribution size.

📂 Unified Internal Assets under .sober/

  • Consolidated separate directories (codex/, scripts/, .claude/agents/, .claude/commands/, etc.) that were scattered across the root directory into a single unified .sober/ directory.
  • Re-aligned npm packaging files in package.json to publish only the .sober/ directory instead of exporting multiple paths, reducing package bundle noise.

📝 Configuration & Guidance Templates

  • Re-added dedicated configuration READMEs and templates within the .claude/, .codex/, and .agents/ directories.
  • Updated path references inside install.sh and the CLI helpers to correctly reflect the unified .sober/ directory layout.

🛠️ Full Changelog

  • Hotfixes in install.sh and lib/cli.js for the restructured internal paths.
  • Cleaned up the files array in package.json to keep npm bundles lightweight.

v2.0.0

Choose a tag to compare

@move-hoon move-hoon released this 05 Jun 13:43

Sober v2.0.0

Sober preview

Sober v2.0.0 is the clean v2 release of the project formerly developed as claude-pro-minmax.

This release redefines the project as a local behavior harness for Claude Code and Codex CLI: one shared policy spine, one source of truth, runtime-specific links, and lightweight safety hooks.

Install

npm install -g getsober@latest
sober install
sober doctor

The npm package name is getsober, but the CLI command remains sober.

Highlights

  • Rebranded the npm package to getsober
  • Kept the product name as Sober
  • Kept the CLI command as sober
  • Introduced .sober/ as the shared source of truth
  • Added first-class visibility folders for Claude, Codex, and Codex skills
  • Added shared support for Claude Code and Codex CLI
  • Cleaned up old v1/CPMM naming and compatibility cruft
  • Preserved additive install behavior: user configs are merged, not overwritten

New Repository Structure

.sober/          # canonical shared source: AGENTS, commands, rules, skills, scripts
.claude/         # Claude templates and visibility
.codex/          # Codex docs/examples; active hooks stay in .sober/codex
.agents/         # Codex skills visibility; source stays in .sober/skills
AGENTS.md        # symlink to .sober/AGENTS.md
CLAUDE.md        # symlink to AGENTS.md

Installed User Layout

~/.sober/AGENTS.md                    # shared policy source
~/.sober/commands/*.md                # Sober-owned Claude slash commands
~/.sober/rules/*.md                   # Sober-owned Claude rules
~/.sober/skills/<skill>/SKILL.md      # one copy of each skill
~/.sober/scripts/                     # local hook and verification scripts
~/.sober/codex-rules/*.rules          # installed Codex rule source

~/.claude/CLAUDE.md                   # symlink or import to ~/.sober/AGENTS.md
~/.claude/AGENTS.md                   # symlink or import to ~/.sober/AGENTS.md
~/.claude/commands/<command>.md       # Sober-owned command links
~/.claude/rules/<rule>.md             # Sober-owned rule links
~/.claude/skills/<skill>              # links to ~/.sober/skills/<skill>
~/.claude/settings.json               # Sober hooks merged additively

~/.codex/AGENTS.md                    # symlink or inline Sober block
~/.codex/hooks.json                   # Sober hooks merged additively
~/.codex/rules/sober-critical-actions.rules
~/.agents/skills/<skill>              # links to ~/.sober/skills/<skill>

Breaking Changes

  • The npm package is now getsober
  • Old package names and v1 identities are removed from the public install path
  • No cpmm compatibility shim is shipped
  • Sober-managed assets now live under .sober/
  • Claude/Codex runtime folders are visibility and integration layers, not duplicate sources of truth

Migration From CPMM

npm uninstall -g claude-pro-minmax
npm install -g getsober@latest
sober install
sober doctor

Verification

This release was checked with:

npm pkg get name version bin
npm test
npm pack --dry-run

Package Identity

npm package: getsober
product name: Sober
CLI command: sober
version: 2.0.0

Full Changelog: v1.4.0...v2.0.0

v1.4.0

Choose a tag to compare

@move-hoon move-hoon released this 05 Apr 15:39

🚀 CPMM v1.4.0 (Minor)

A Context7-focused release that aligns CPMM with the official Context7 Claude Code flow, removes conflicting repo-local Context7 behavior, and makes setup, verification, and current-doc lookup much clearer for users who opt in.

What Changed

CPMM now follows the official Context7 path:

  • CPMM no longer ships a parallel repo-local Context7 docs layer.
  • cpmm setup can now offer the full recommended official flow:
    • npm install -g ctx7
    • ctx7 setup --cli --claude
  • This gives users both:
    • a shell-visible ctx7 CLI
    • the official Context7 Claude Code integration

Context7 verification is now clearer:

  • cpmm doctor now checks Context7 in two parts:
    • ctx7 CLI binary presence
    • official Claude integration artifacts
  • It reports:
    • ctx7 binary
    • Context7 skill (find-docs)
    • Context7 rule (context7.md)
  • Partial installs now get explicit recovery guidance instead of ambiguous status:
    • re-run cpmm setup
    • or run the official commands directly

Legacy Context7 cleanup improved:

  • If CPMM detects the old managed Context7 MCP entry in ~/.claude.json, setup now removes it.
  • This prevents old repo-managed Context7 configuration from conflicting with the new official path.

Current-doc behavior is cleaner:

  • After official setup, current library docs flow through Context7’s official Claude integration.
  • /llms-txt remains available as the explicit raw-doc fallback when you want raw /llms.txt content or URL-based raw-doc lookup.

Documentation and built-in CPMM guidance were updated (EN/KO):

  • README.md
  • README.ko.md
  • docs/USER-MANUAL.md
  • docs/USER-MANUAL.ko.md

Claude command / skill guidance was also updated to reflect:

  • official Context7 ownership
  • the new verification model
  • /llms-txt as the explicit fallback path

Why This Matters

Users now get a much cleaner Context7 experience:

  • no more mismatch where official setup succeeds but ctx7 is missing from the shell
  • no more split mental model between CPMM-managed docs behavior and official Context7 behavior
  • cpmm setup, cpmm doctor, shell verification, and Claude-side behavior now point to the same installation model

CPMM keeps its original product boundary intact:

  • Context7 remains optional
  • CPMM does not make Context7 a default dependency
  • users who do not opt into Context7 keep the same default CPMM behavior

Upgrade

npm i -g claude-pro-minmax@latest
cpmm setup
cpmm doctor

Optional Context7 Enablement

npm install -g ctx7
ctx7 setup --cli --claude
cpmm doctor

Recommended Verification

command -v ctx7
ctx7 --version
cpmm doctor

Compatibility Note

Users upgrading from v1.3.1 without Context7 enabled:

  • default CPMM behavior remains unchanged

Users enabling Context7 on v1.4.0:

  • cpmm setup now installs the ctx7 CLI and then runs the official Claude Code setup
  • cpmm doctor now verifies both the CLI and the official integration separately
  • current-doc lookup now follows the official Context7 path, with /llms-txt kept as the explicit raw fallback