## Summary
- Add `.claude/CLAUDE.md` with project guide, C++ coding style,
correction patterns from past AI interactions, and pre-commit/pre-PR
workflows
- Add `.claude/commands/` with `/build`, `/test`, `/format` slash
commands for Claude Code
- Add `.clang-tidy` configuration
- Add `scripts/run_clang_tidy.py` for parallel clang-tidy with progress
reporting (reads CDB, filters to `src/` and `tests/` only)
- Add pixi tasks: `clang-tidy`, `lint-cpp`, `lint-python`, `lint`
- Add `clang-tools` dependency for clang-tidy
- Update `.gitignore` to track `.claude/CLAUDE.md` and
`.claude/commands/`
## Test plan
- [x] `pixi run format` passes
- [x] `pixi run lint-python` passes (ruff check)
- [x] `scripts/run_clang_tidy.py` correctly filters to project files
only
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
## Summary
- **Remove xmake build system**: delete `xmake.lua`, `test-xmake.yml`
workflow, and all xmake-related pixi tasks
- **Migrate packaging to CMake**: `publish-clice.yml` now uses `cmake
-DCLICE_RELEASE=ON` instead of xmake pack
- **Clean up**: remove unused `tests/uv.lock`, `.xmake/` from
`.gitignore`, xmake references from docs
- **Benchmark CI**: change trigger from `pull_request` to
`workflow_dispatch` (manual only)
- **Simplify CLI parsing**: use `DecoKV(style =
KVStyle::JoinedOrSeparate)` in `clice.cc` and `unit_tests.cc`, replacing
verbose `DecoKVStyled` with manual `static_cast` bitmask; use comma
separators; explicit `names` only for underscore fields
## Test plan
- [x] `pixi run cmake-build RelWithDebInfo` compiles successfully
- [x] Verify `pixi run test` passes
- [x] Verify `pixi run package` produces correct archives via CMake
release build
- [x] Verify benchmark workflow can be triggered manually via `gh
workflow run benchmark`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Chores**
* Consolidated CI workflows; some automated triggers converted to manual
invocation
* Standardized shell for workflow steps and removed legacy build
workflow
* Switched packaging/build tasks to a CMake/Ninja flow and updated
artifact paths
* Adjusted ignore rules to include previously-ignored build metadata
* **Documentation**
* Removed XMake-specific build and test instructions; docs now reflect
the CMake-based workflow
* **Style**
* Updated CLI option declaration style (no user-facing flag name
changes)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
## What changed
This PR moves the shared VS Code development workflow to the repository
root.
It adds repo-level `.vscode/launch.json` and `.vscode/tasks.json` so
contributors can debug `clice` and the VS Code extension from the root
workspace with relative paths.
The checked-in tasks are intentionally limited to extension-side `pnpm`
workflows such as installing dependencies and running the extension
watcher. They do not build the `clice` executable or unit tests.
It also updates `.gitignore` to allow only those two shared VS Code
config files to be committed, while continuing to ignore other local
`.vscode` files.
Finally, it removes the duplicate `editors/vscode/.vscode` folder so
there is a single supported VS Code setup in the repo.
## Why
The previous setup split VS Code configs between local-only root files
and tracked configs under `editors/vscode/.vscode`, which made the
development/debug flow less consistent.
Keeping only extension-side tasks avoids baking a specific native build
workflow into committed editor config while still making extension
development usable out of the box.
## Developer impact
Contributors can now open the repository root in VS Code and use the
checked-in launch/tasks configs directly.
The extension debug configs only disable competing C/C++ language
extensions (`clangd` and `cpptools`) instead of disabling every
extension.
All committed paths remain relative to `${workspaceFolder}`.
## Validation
- Ran `python3 -m json.tool .vscode/launch.json`
- Ran `python3 -m json.tool .vscode/tasks.json`