Admins
Admins
Describes Xaden v0.2.3, released 2026-10-13.
Prerequisites
| Needed | Why |
|---|---|
| Linux or macOS (Windows: WSL or Git Bash, untested) | Scripts are bash + POSIX tools |
| git, bash, awk, sed, tar, grep, cksum | Preinstalled on Linux/macOS |
| An AI coding tool | Claude Code recommended; Aider, Cline, Continue, Cursor, Codex, Copilot, ChatGPT or a local model (Ollama, LM Studio) also work — see Using the scaffold with other LLMs |
| Recommended: shellcheck, gitleaks, semgrep | Static analysis and secret scanning. Locally a missing tool is skipped and the run reported INCOMPLETE; CI and releases use --strict, where it fails. Once a stack exists, its tools are required too: ruff, mypy, bandit, pip-audit, pytest (Python) or npm with lint/typecheck/test scripts (Node) |
| Optional: Obsidian | Comfortable reading and editing of the prompt library |
| Optional: extra checks and plugins | xaden check suggests the ones that fit your project (TIP: lines); list in Optional tools |
| Optional: Ponytail | Third-party rule set (MIT) that pushes assistants towards less new code; see the add-ons note below |
| Optional: Caveman | Third-party rule set (Apache-2.0) that makes assistant replies shorter; see the add-ons note below |
| Optional: Token Optimizer | Third-party plugin (PolyForm Noncommercial, not open source) that compresses context and tool output; see the add-ons note below |
| Optional: claude-mem | Third-party plugin (Apache-2.0) that carries memory of past sessions into new ones; see the add-ons note below |
| Optional: obsidian-skills | Third-party plugin (MIT) that teaches assistants Obsidian’s Markdown, Bases and Canvas formats; see the add-ons note below |
| Optional: impeccable | Third-party plugin (Apache-2.0) for projects with a web UI: design guidance and 59 deterministic checks for generated frontend design; see the add-ons note below |
Optional: assistant add-ons
The add-ons in the table above are third-party; the scaffold installs none of them, and your
project’s AGENTS.md takes precedence over each. Install commands, sources, licenses and
the risks to know before installing are in the Optional tools section “Assistant plugins”.
Install
Xaden runs from one folder on your machine and gives you one command, xaden. Install it once; every
other command in these docs uses it. First get the files (clone or zip), then run the installer.
Get the files
Clone with git (recommended, because git pull updates Xaden later):
git clone https://github.com/flo1o1/xaden.git ~/.xaden
git clone ...: downloads Xaden into the hidden folder.xadenin your home directory.
Or download the release as a zip (no git history; you update by downloading a newer release):
curl -fsSL -o xaden.zip https://github.com/flo1o1/xaden/archive/refs/tags/v0.2.3.zip
unzip -q xaden.zip -d ~/tools
curl ...: downloads the archive of release v0.2.3 into the current folder and stops with an error if the download fails.unzip ...: extracts it into~/tools/xaden-0.2.3. Ifunzipis missing, install it with your package manager.
Xaden publishes no checksums or signatures. Download only from the address above over HTTPS and read the scripts you are about to run: they are plain shell.
Install the command
~/.xaden/scripts/install.sh
~/.xaden/scripts/install.sh: creates one link,~/.local/bin/xaden, that points into the Xaden folder. It changes nothing else and never replaces a different file of that name. Keep the folder where it is, because the link points into it.
If you downloaded the zip, run the installer from that folder instead: ~/tools/xaden-0.2.3/scripts/install.sh.
If ~/.local/bin is not on your PATH, the installer says so. Add this line to your shell profile
(~/.bashrc for bash, ~/.zshrc for zsh) and open a new terminal:
export PATH="$HOME/.local/bin:$PATH"
export PATH=...: puts~/.local/binin front of the folders your shell searches for commands, so it findsxaden.
Check the result:
xaden version
xaden version: prints the installed Xaden version, 0.2.3 for this release.
Update Xaden
If you cloned it:
git -C ~/.xaden pull
git -C ~/.xaden pull: fetches the newest Xaden into the folder. Thexadencommand keeps working. To stay on a fixed release instead of the newest code, rungit -C ~/.xaden tag -lto list the releases andgit -C ~/.xaden checkout v0.2.3(use the release you want) to switch; switch back withgit -C ~/.xaden checkout mainbefore the next pull.
If you downloaded the zip, get the new release and extract it next to the old one. Then move the command over:
~/tools/xaden-OLD/scripts/install.sh --uninstall
~/tools/xaden-NEW/scripts/install.sh
rm -r ~/tools/xaden-OLD
~/tools/xaden-OLD/scripts/install.sh --uninstall: removes thexadenlink, but only if it points into the old folder. ReplaceOLDwith the old version, for example0.2.2.~/tools/xaden-NEW/scripts/install.sh: linksxadento the new folder. ReplaceNEWwith the new version.rm -r ~/tools/xaden-OLD: deletes the old folder once the new link works.
Linux
git, bash, awk, sed, tar, grep and cksum are normally preinstalled. Install a missing one with your distribution’s package manager.
macOS
bash 3.2, the version macOS ships, is supported. If git is missing, running it once offers to install
Apple’s command line tools. The default shell is zsh, so the PATH line goes into ~/.zshrc.
Windows
Untested: nobody has run these steps on Windows yet, so expect to adapt them. WSL is recommended: open a
WSL shell and follow the Linux steps, keeping Xaden and your projects in the Linux file system (your
WSL home directory) rather than under /mnt/c. Git Bash is also possible but untested. Native
PowerShell is not supported, because the scripts are bash.
The xaden command
scripts/install.sh links xaden into ~/.local/bin (or the directory you pass) so you can
use Xaden from any directory. It writes nothing else; git pull in the checkout updates
the command, and scripts/install.sh --uninstall removes the link. If the directory is not on
your PATH, the script prints the line to add to your shell profile. Keep the checkout where it
is: the link points into it. Every command in these docs assumes the command is installed.
| Command | Does |
|---|---|
xaden new my-app [dir] | creates ./my-app (or dir) with its own git repository and hooks |
xaden update [--apply] | brings the project you are in to this Xaden version; a dry run without --apply |
xaden setup, check, req, pack, release | activate the git hooks, run the checks, manage requirements, build a context pack, cut a release; from anywhere inside the project |
xaden version, xaden help | scaffold version, command list |
Project commands run that project’s scripts, just as typing them would: use them only in projects you trust.
Optional tools
Extra checks that make code more robust where they fit. None is required. xaden check
(full run) prints a TIP: line for each one that fits this project and is not adopted yet; tips
never change the result. Once adopted, the check runs it and its findings fail the run like any
other check. Ask the user before installing anything.
Quality checks
| Tool | Fits when | Catches | Adopt | xaden check then |
|---|---|---|---|---|
| actionlint | .github/workflows/ exists | Workflow syntax and expression errors before CI runs them | Install the binary | Lints workflow files (also before each commit) |
| zizmor | .github/workflows/ exists | Workflow security problems: template injection, leaked credentials, cache poisoning | Install the binary | Audits workflow files offline (also before each commit) |
| jscpd | Source code exists | Copy-pasted code | Install jscpd (global or dev dependency) and add .jscpd.json | Fails when duplication exceeds threshold |
| vulture | Python | Unused functions, classes, variables, imports | Add to requirements-dev.txt; add [tool.vulture] to pyproject.toml | Runs vulture with that configuration |
| knip | Node | Unused files, exports and dependencies | npm install --save-dev knip; npm pkg set scripts.deadcode=knip | Runs npm run deadcode |
| Hypothesis | Python | Edge cases example tests miss (property-based tests) | Add to requirements-dev.txt; write property tests | Runs them with the other tests |
| fast-check | Node | Same, for JavaScript and TypeScript | npm install --save-dev fast-check | Runs them with the other tests |
| mutmut | Python | Tests that run code but check too little (mutation testing) | Add to requirements-dev.txt | Nothing (slow): run mutmut run before releases |
| StrykerJS | Node | Same, for JavaScript and TypeScript | npm init stryker | Nothing (slow): run npx stryker run before releases |
Starting configurations (adjust paths to the project):
# pyproject.toml
[tool.vulture]
paths = ["src", "tests"]
min_confidence = 80
{ "threshold": 5, "ignore": ["**/node_modules/**", "**/.venv/**"] }
The second block is .jscpd.json: the run fails when more than 5 % of the code is duplicated.
Lower the threshold as duplication goes down; raising it needs the user’s approval.
False positives of vulture go into a whitelist file (vulture --make-whitelist) listed in paths.
When to use which test technique: docs/clean-code.md → Tests.
Assistant plugins (Claude Code)
Public plugins that add depth to reviews. They are optional, and this project’s AGENTS.md
takes precedence over them. Install from the named sources only.
| Plugin | Adds | Install |
|---|---|---|
Anthropic code-review, security-guidance, pr-review-toolkit | Parallel review agents for logic and edge cases; security review of diffs | /plugin install code-review@claude-plugins-official (same for the others) |
| Trail of Bits | Security analysis by an audit firm: CodeQL and semgrep workflows, SARIF parsing, GitHub Actions auditing | /plugin marketplace add trailofbits/skills, then pick plugins in /plugin |
| Ponytail | Smallest complete change: reuse before writing, one test for risky logic | /plugin marketplace add DietrichGebert/ponytail, then /plugin install ponytail@ponytail |
| Caveman | Shorter replies, fewer output tokens; code, commits and project files stay in normal prose | /plugin marketplace add JuliusBrussee/caveman, then /plugin install caveman@caveman |
| Token Optimizer | Smaller context: compresses command, search and tool output; context audits. License: PolyForm Noncommercial (small-business permission), not open source | /plugin marketplace add alexgreensh/token-optimizer, then /plugin install token-optimizer@alexgreensh-token-optimizer |
| claude-mem | Memory of past sessions: records sessions, compresses them with a model and adds relevant memories to new ones. License: Apache-2.0 | /plugin marketplace add thedotmack/claude-mem, then /plugin install claude-mem |
| impeccable | For a web UI: design guidance, critique and 59 deterministic checks for AI-generated frontend design (npx impeccable detect runs them without a model). License: Apache-2.0 | /plugin marketplace add pbakaus/impeccable, then /plugin install impeccable@impeccable |
| obsidian-skills | Obsidian Flavored Markdown, Bases, JSON Canvas and the Obsidian CLI, for editing the prompt library in prompts/ (an Obsidian vault). License: MIT | /plugin marketplace add kepano/obsidian-skills, then /plugin install obsidian@obsidian-skills |
Before installing one, read its notes:
- Ponytail: its hooks need
nodeon your PATH. Other tools (Codex, Copilot CLI, Cursor): follow the project’sINSTALL.md; tools that only read a rules file can use itsAGENTS.md. Do not replace this project’sAGENTS.mdwith it. Sources:DietrichGebert/ponytailon GitHub,@dietrichgebert/ponytailon npm. - Caveman: its hooks need
nodeon your PATH; other tools follow itsINSTALL.md. It switches back to full sentences for security warnings and irreversible actions. Keep project files in normal prose: do not run its/caveman-compressonAGENTS.md,CLAUDE.md, requirements or guides, and do not commit the always-on rule files/caveman-initwrites. - Token Optimizer: run
/token-optimizeronce after installing to set up its hooks. License: PolyForm Noncommercial 1.0.0 plus a written small-business permission (fewer than 5 people and under $20k monthly revenue, counted for the whole company); other commercial use needs a paid license, so check that your use qualifies. It keeps full tool output on disk in your home directory (private file permissions; credentials removed by pattern only), so never print secrets in a session. - Output compression (Caveman, Token Optimizer): compressed output is a summary. A completion report must quote failing lines from the full output (rerun the check or expand the archived result). Use one output-compression plugin at a time.
- claude-mem: other tools install with
npx claude-mem install --ide <tool>. It installs Bun and uv if missing, runs a local worker service and stores sessions in~/.claude-mem, so never print secrets in a session (use its<private>tags for sensitive text). Its installer offers a hosted memory service (the claude-mem observer, sign-in required) that receives session content: choose your Anthropic plan or your own model key when code must not leave your assistant’s provider, or setCLAUDE_MEM_ONLINE_OPTIN=false. Its memories are context: requirements and rules are still looked up in the files. - obsidian-skills: Codex, OpenCode and others follow its README. Use Obsidian syntax in
prompts/only;AGENTS.md, requirements and guides stay plain Markdown, because other assistants and the check scripts read them. Web pages itsdefuddlepart extracts are untrusted content. - impeccable: other tools install with
npx impeccable install. It runs a binary engine that is downloaded once to~/.impeccable/bin/. Both routes add an assistant hook that checks UI files after each edit; the project install writes it into the project’s tool folders (.claude/and others), so committing them gives it to every contributor. Skip it withnpx impeccable install --no-hooks. Starting a new design always asks impeccable.style for design options and by default records which one was chosen (anonymous; no project files or code). Opt out per machine withDO_NOT_TRACK=1, or for everyone with"telemetry": falsein.impeccable/config.json. Its findings are suggestions; this project’s checks decide.
Not recommended: frameworks that bring their own complete workflow (for example Superpowers,
with its own brainstorm, plan, TDD and review phases). They duplicate the workflow in
AGENTS.md and prompts/, and two workflows give the assistant conflicting instructions.
Update a project
Pull the newest Xaden (git pull in its folder), then run this inside your project:
xaden update
xaden update --apply
xaden update: dry run, lists what would changexaden update --apply: stages the changes; review them withgit diff --cached
Only scaffold-managed files (scripts, prompts, presets, rules, commands, Claude Code
permissions in .claude/settings.json) are updated; code,
requirements, guides, README and changelog are never touched. Merge any *.scaffold-new files
it reports (your local edits are never overwritten), then commit
chore(scaffold): update to vX.Y.Z. Each project records its scaffold version in .scaffold/.
Projects that still keep requirements in one docs/requirements/REQUIREMENTS.md table run
scripts/migrate-requirements.sh after updating: it converts every row into a requirement
file (job stories left as TODO to rewrite) and the checks then accept the new format.