These dotfiles support macOS only. Linux, containers, and GitHub Codespaces are unsupported.
curl -fsSL \
https://raw.githubusercontent.com/SebastienElet/dotfiles/main/install.sh | bashIf Git is unavailable, the installer exits without starting the Command Line
Tools installation. Run xcode-select --install, complete the macOS system
dialog, then rerun the command above after the installation finishes.
cd && \
git clone --depth 1 https://github.com/SebastienElet/dotfiles.git .dotfiles && \
cd .dotfiles && \
make moon && \
"$HOME/.moon/bin/moon" exec --quiet installInstall the separately maintained optional profile with make optional.
Anarlog belongs to the optional profile, alongside Handy. Install it independently
with moon exec repository:anarlog (macOS 15 or newer).
Minutes is also optional. Install the desktop app with
moon exec repository:minutes (Apple Silicon, macOS 14 or newer), using the publisher's
silverstein/tap Homebrew cask. Native call capture requires macOS 15 or newer.
First launch downloads a local speech model;
transcription does not require an API key. Summarization is optional and configured
separately. The Minutes CLI is not installed by this task.
Moon installs the complete minimal profile. With Moon available:
moon exec --quiet install
moon action-graph repository:installInstall the Node development toolchain independently with moon exec repository:pnpm;
its dependencies install Homebrew, Volta, and the exact Node version from package.json.
The make volta, make node, and make pnpm entry points delegate to Moon.
With Moon available, run the shared checks and behavior tests:
moon run check
moon run testChecks include TypeScript, Prettier, Lua, Fish, shell scripts, workflows, CSpell and Rust.
Their tools are prerequisites in the Moon graph. Run Lua lint independently with
moon run neovim-lint or moon run wezterm-lint.
The full workstation smoke is moon exec tooling:smoke-minimal on a dedicated macOS runner.
Docker integrations remain explicit tasks with their own prerequisites.
Deployment families run through tooling:deployment-test, tooling:hunspell-test,
agent-memory:deployment-test, and agent-handoff:deployment-test.
Their CI workflows use moon ci --downstream none to select consumers of changed inputs
on macOS and Linux. The general repository:typescript-test excludes tests owned by
these families; moon run test still includes their local tests.
Typechecking stays shared in Static gates.
Structural choices — installer, shell, editor, container runtime, agent
instructions — are recorded as ADRs in docs/adr/, one
file per decision, reconstructed from the git history. Only decisions still in
force are recorded; superseded ones survive as the "Alternatives écartées"
section of whichever decision replaced them.
Read the relevant ADR before changing one of these choices, and add a new ADR when making one.
See docs/ARCHITECTURE.md for the complete project map,
deployment flow, and placement rules.
home/mirrors the destination-relative paths of files deployed under$HOME.harness/contains instructions and capabilities shared across agent harnesses.tooling/contains maintained local applications and extensionless kebab-case executables.- Tool-mandated integration paths and repository entry points remain at the root.
See the Doctor reference for its diagnostic scope, resource coverage, defaults, examples, exit codes, and observation limits for Claude Code, Cursor, and Codex.
Generate the portable user-harness Markdown snapshot used by ChatGPT Projects, Claude Projects, Gemini, or notebook tools:
arnes export
arnes export --checkUpload every Markdown file from .harness-export/, including 00-MANIFEST.md. The directory is a
temporary ignored build artifact: never edit or commit it. The check command performs no writes and
fails when local sources, bundles, or the manifest drift, or when an obsolete artifact remains.
The export contains every non-ignored source under harness/, except the generated skills index and
operating-system metadata, plus the canonical hook declarations in home/.arnes.yaml. Source
categories are defined once in tooling/arnes/src/export/sources.rs; extend that selector
and its tests to add a category, then regenerate the snapshot.