Skip to content

0.6.5 - #49

Merged
cleverhoods merged 31 commits into
mainfrom
0.6.5
Oct 26, 2026
Merged

cleverhoods merged 31 commits into
mainfrom
0.6.5

Conversation

@cleverhoods

Copy link
Copy Markdown
Contributor

0.6.5 — a pinned npx version runs that version, folder exclusions leave out what they name, and a list of the files Claude Code loads

On 0.6.4, npx @reporails/cli@X.Y.Z ran the latest release instead of X.Y.Z, so a CI job could not pin the version it checks with (#47). A folder value with a / in exclude_dirs or --exclude-dirs, such as /docs, docs/* or an absolute path, showed on the Excluded line but left nothing out, and ./docs left out every docs folder at any depth (#46). A first run through npx on a machine without uv stopped and asked you to restart your shell. There was also no way to ask which instruction files Claude Code should load in a project, or why it skips an AGENTS.md (#48). In 0.6.5 a pinned version runs that version, a folder value leaves out the folder it names or stops the run with an error, a first npx run finishes your command, and ails expected-loads lists the files Claude Code loads.

npm and npx

  • A pinned npx @reporails/cli@X.Y.Z or npm install -g @reporails/cli@X.Y.Z runs that version. A bare npx @reporails/cli runs the latest release unless a copy is installed globally or in the project.
  • A global npm install stays on its version until you update it. ails version shows npm for an install from the npm package (npx included), and ails update prints the command that updates it. A run through the npm package no longer checks the package index for a newer release every time it starts.
  • A first run through npx on a machine without uv installs uv and finishes your command. The install messages go to stderr, so the command's own output, such as -f json, stays clean.
  • ails install run through npx, pnpm dlx or bunx, or from a project's own dependency, puts ails on your PATH instead of reporting that copy as already installed.

Leaving folders out

  • A folder value with a / is a folder path from the project root: /docs, ./docs, docs/. and an absolute path inside the project leave out the root's docs folder. The Excluded line lists it as ./docs. A value without a / is still a folder name at any depth. Folder names holding [ and ], such as [slug], can be left out.
  • A folder value holding *, ?, a backslash or a .. step stops the run with an error that names the flag or the config file it came from and points to --exclude-files / exclude_files for file patterns. ails config set exclude_dirs refuses such a value before writing, and the MCP tools answer config_unreadable.
  • A folder you leave out is skipped during the scan, by name or by path, so a large left-out folder costs no scan time. The scan does not enter it through a symlink, or on Windows a junction, either, and an agent whose files sit only in a left-out folder is not detected.
  • The skill entry-point check no longer reports a skill folder you left out, and ails check --agent <name> no longer checks another agent's file that you named inside a left-out folder.
  • On a run that names a file and also checks a folder or a capability listing, the Excluded line keeps a folder or pattern the named file sits in.

Which files Claude Code loads

  • ails expected-loads prints, as one JSON object, the instruction files Claude Code should load for a session in a project, and for each AGENTS.md it skips, the CLAUDE.md, .claude/CLAUDE.md or CLAUDE.local.md that made it skip the file. An AGENTS.md that links to a CLAUDE.md, or is a copy of one with exactly the same text, is reported as that file. Your own ~/.claude/CLAUDE.md and ~/.claude/rules/ files are listed, managed-only leaves out exactly the files Claude Code leaves out at launch, and an empty file, or one holding only frontmatter, is not expected to load.
  • ails check honours Claude Code's Project instructions setting saved under the plugin ID Claude Code has used since 2.1.285 (cc-plugin-agents-md@builtin), as well as the older agents-md@builtin.
  • A rules file in a subdirectory's .claude/rules/ folder is checked as loading on demand, as Claude Code loads it, rather than at session start.
  • A project's CLAUDE.md that a subfolder's CLAUDE.md links to is listed and checked as the project's main file, not as that subfolder's file.

MCP

  • A new prepare tool maps a project's instruction files without checking them, so the next validate returns sooner. It sees files added or removed since its last call.
  • validate tells the agent which messages are announcements from reporails, so it shows them as announcements rather than as account messages.

Other changes

  • Event logs in ~/.reporails/xray/ are private to you, removed after 30 days (sooner if Claude Code is set to keep sessions for less), and the folder stays under 100 MB.
  • On Windows, ails install no longer counts an ails in the current folder or in uv's cache as installed, and an empty PATHEXT no longer hides an installed ails.
  • ails update reports a uv run that cannot start or times out, instead of crashing.
  • A space before the address in AILS_SERVER_URL no longer stops ails check from reaching that server.
  • With generic_scanning: true, a failure while reading the files your instruction files import or link is logged as a warning instead of silently checking none of them.
  • A run with no findings no longer says the score covers the rest of the project, since it shows no score.
  • The over-cap message never suggests leaving out a folder that --exclude-dirs would refuse.

Breaking changes

  • An exclude_dirs or --exclude-dirs value holding *, ?, a backslash or .. now stops the run instead of being listed while leaving nothing out. Move file patterns to exclude_files / --exclude-files.
  • ./docs now leaves out only the root's docs folder. To leave out every docs folder, write docs.
  • A global npm install no longer moves to the latest release on its own. Run the command ails update prints.

Closes #46
Closes #47
Closes #48

…files Claude Code loads in a folder and why an AGENTS.md is skipped; a user-level rule reads as loaded at session start
…ads is reported as that file, not as skipped
…identity and each listed by name, config excludes and managed-only are honoured, a bad path is refused
… is not expected; managed-only and the plugin ID follow the Claude Code docs; a subdirectory's .claude/rules/ loads on demand
…lding only a byte-order mark or frontmatter is not expected, and one directory listing serves the whole lookup
…ts from reporails, and the getting-started docs say the notices list carries them
…LAUDE.md or CLAUDE.local.md that made Claude Code skip it
…ls update prints the npm command for it, and npx install puts ails on PATH; a build check refuses enum values spelled as plain text
…and not passed on, ails install looks past project and one-shot copies on PATH, and the npx smoke check verifies the version it ran
…ter 30 days (sooner under Claude Code's cleanupPeriodDays) and kept under 100 MB
…e reads is reported as that file, whatever the Project instructions setting, and every alias says whether it is a link or a copy
…y when that file loads wherever the AGENTS.md would
… in the current folder no longer stands in for an install on Windows, and uv's cache is looked up only when needed
…y only when that file loads wherever it would, and a CLAUDE.md a subfolder links to stays the main file
…ne place, and a space before the address in AILS_SERVER_URL no longer stops ails check from reaching the server
…read in one folder, with floors; ails update stops when uv cannot run; on Windows an ails in uv's cache no longer counts as installed and an empty PATHEXT no longer hides one
…process starts, and the env floor counts an in-place os.environ edit or method write as a read
…command, running uvx from the installer's folder instead of exiting until the shell restarts
…utput to stderr, accepts only an executable uvx and also looks in the legacy installer folders
…root, matched like file patterns and skipped in every walk and through symlinks; a value holding *, ?, a backslash or .. stops the run naming where it came from; the skill entry check, the Excluded line on mixed runs and an --agent run follow the run's exclusions; qa and CI check test markers
…ecking them, so the next validate returns sooner
…le added or removed since the last call is mapped as validate finds it
@cleverhoods
cleverhoods merged commit e9110a7 into main Oct 26, 2026
36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expected instruction file lookup for the context x-ray npx @reporails/cli version pinning ails check folder exclusion value handling

1 participant