* test: add regression tests for review blockers
- backup-clean --json actually deletes old backups
- flatten copies motion Sound assets
- save_model uses atomic write (tempfile + os.replace)
- auto_backup deduplicates on content, not wall-clock time
- save_model cleans up temp files on error
* test: use CliRunner in backup-clean regression test
The previous test deleted files manually, which would pass even if the
CLI regressed. Now it invokes 'backup-clean --keep 2 --json' through
CliRunner and asserts both disk state and JSON output.
---------
Co-authored-by: zyzly0705 <zyzly0705@users.noreply.github.com>
Replace docs/hub/index.html with the finalized "Gallery / R2 Flip" main page
(Steel Sky palette default, Newsreader serif hero title, liquid-glass flip
cards, JS masonry catalog, and the unified Matrices layer with bidirectional
stitching). Production-indexable robots meta retained.
Stop tracking docs/cli-matrix/* — the CLI-Matrix working docs stay local and
confidential; add an explicit /docs/cli-matrix/ ignore rule.
- matrix install renders to ~/.cli-hub/matrix/<name>/SKILL.md and copies
references/ and scripts/ beside it (pycache excluded, idempotent
reinstall purges stale files); legacy flat <name>.SKILL.md still read
- content lookup chain: repo checkout -> bundled cli_hub/_matrix_data
(vendored into sdist/wheel by setup.py build hooks + MANIFEST.in) ->
published Pages URL -> stub
- new 'matrix install --skill-only' renders skill + assets without
installing CLIs
- deploy-pages.yml: copy cli-hub-matrix/ into the site after the Jekyll
build (served verbatim at /matrix/<name>/); triggers remain main-only
- 12 new tests in tests/test_matrix_skill_dist.py (142 total pass)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
_package_available() now tries find_spec as-is, dash->underscore
normalized, then importlib.metadata dist lookup (PEP 503), so registry
entries like edge-tts are detected when installed. All lookup failures
degrade to unavailable instead of crashing preflight. Adds 6 tests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add the preview bundle protocol plan, record video matrix review evidence, and make one-shot Audacity project mutations persist to disk with E2E coverage.
- Add docs/cli-matrix/matrix_registry.schema.md describing v2 capability-based
registry shape (capabilities[], providers with kind/requires/cost/quality/
offline, recipes[], known_gaps[], decision rubric, suggest-to-user template).
- Rewrite cli-hub-matrix/video-creation/SKILL.md and matrix_registry.json (S1)
around capabilities + providers + recipes instead of linear stages.
- Rename Vn -> Sn across cli-matrix-plan.md and test fixtures.
- Reorder scenarios by current completeness; rewrite S2 knowledge-research,
S3 3d-cad, S4 game-development, S5 image-design in v2 capability form with
full SKILL.md files.
- Add docs/cli-matrix/test-plans/video-creation.md with 13 long realistic
end-to-end tasks as checkable todo lists, each exercising 5-9 capabilities.
- Move cli-matrix-plan.md and matrix_registry.schema.md under docs/cli-matrix/.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Introduce CLI-Matrix — curated multi-CLI workflow matrices that agents can
install in one command. The video-creation matrix bundles 11 CLIs across 8
production stages (AI video gen, capture, audio, voice/TTS, music, NLE
editing, captions, thumbnails).
Each stage now exposes a goal, alternative approaches (Python libs, cloud
APIs, native commands), and skill_search_hints that encourage agents to
dynamically discover relevant skills via `npx skills search` rather than
relying on hard-coded tool lists.
Key changes:
- matrix_registry.json: extended stage schema with goal, alternatives,
skill_search_hints fields
- cli-hub matrix list/search/info/install commands
- matrix_skill.py: renders dynamic SKILL.md with stage tooling overview,
install status, and aggregated discovery commands
- Fixed brittle parents[2] repo root detection with git-based lookup
- 85 tests passing (10 new)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reasonix does not recognize a `max-iters` frontmatter field — the
subagent step budget is derived from the parent's `agent.max_steps`
config in `reasonix.toml` (default 0 = unlimited; finite values yield
parent/2 with min 5). Since a CLI-Anything build typically needs 25–40
tool-call rounds, add a Step Budget section to SKILL.md and a
Configuration Note to README.md advising users to keep `max_steps = 0`
or set it to 64+ to avoid truncation.
- Replace `mcp__codegraph__codegraph_search` / `mcp__codegraph__codegraph_context`
with `mcp__codegraph__search` / `mcp__codegraph__context` to match Reasonix's
StripRawPrefix("codegraph_") naming (SKILL.md, README.md, root README)
- Remove "spawns an isolated Reasonix sub-agent" claim from README.md;
slash command invocation always inlines per Reasonix's RunSkill doc,
isolation is only via run_skill tool invocation
- Keep `runAs: subagent` in SKILL.md frontmatter (correct declaration
for run_skill path) but no longer promise isolation for /<name> path
When installed via the bundled shell scripts, Reasonix reads SKILL.md
directly from ~/.reasonix/skills/cli-anything/SKILL.md. Without runAs:
subagent in the frontmatter, the skill defaults to inline mode, which
runs the entire CLI-Anything workflow in the parent session instead of
in an isolated sub-agent as documented in README.md.
The install_skill API path already included this field (passed as a
parameter), but the source SKILL.md file was missing it, causing
inconsistent behavior between the two installation methods.
Add a new agent adapter for the Reasonix coding agent, following the
same pattern as the existing Codex and Hermes skill adapters.
New files:
- reasonix-skill/SKILL.md — full CLI-Anything methodology mapped to
Reasonix's tool ecosystem (bash, write_file, edit_file, multi_edit,
grep, glob, mcp__codegraph__*, task, web_fetch)
- reasonix-skill/agents/reasonix.yaml — agent interface metadata
- reasonix-skill/scripts/install.sh — macOS/Linux installer
- reasonix-skill/scripts/install.ps1 — Windows PowerShell installer
- reasonix-skill/README.md — installation and usage documentation
- reasonix-skill/REASONIX_SKILL_INSTALL.md — install_skill API reference
Modified files:
- .gitignore — allow reasonix-skill/ directory
- README.md — add Reasonix to supported agent list, project structure,
quick-start prerequisites, and Works with line
Codex P2 + Copilot review of 5790651. One real correctness bug
(error visibility in non-JSON CLI), three defensive cleanups
(thread-safety, log traceback, doc drift). Pre-existing items
already tracked as #327, #328; two more filed as new follow-ups.
1. browser_cli.py fs_ls + fs_grep non-JSON branches now check
"error" in result before falling into the empty-collection
"No elements"/"No matches" path. Mirrors fs_cd. Without this,
`fs ls /nonexistent` displayed "No elements at /nonexistent"
instead of DOMShell's "No such directory" error. (Codex P2)
2. domshell_backend.py _daemon_lane_id capture wrapped in a
threading.Lock; the test-and-set race on the `is None` check
moved inside the lock. Cheap defensive measure for any future
concurrent caller of _call_execute. (Copilot ×3)
3. domshell_backend.py daemon-failure log.warning now carries
exc_info=True so the traceback shows up in diagnosability
output. (Copilot)
4. HARNESS.md dropped the stale `group_id="shared"` reference
(removed in 5790651's R3 fix) and replaced with accurate
_daemon_lane_id-based wording for daemon-no-session callers.
The split-and-check table accuracy (separate pre-existing item)
stays scoped to #328. (Copilot)
Tests: 193 passing locally (was 191 + 2 new for ls/grep error
visibility).
Cc @yuh-yang
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>