Releases: agent-sh/agnix
Releases · agent-sh/agnix
v0.16.1
Immutable
release. Only release title and notes can be modified.
v0.16.0
Immutable
release. Only release title and notes can be modified.
Added
- Kiro and Codex S-tier alignment (38 new rules): Added 22 Kiro rules:
KIRO-010throughKIRO-014(missing inclusion mode, steering doc length, duplicate names, conflicting inclusion modes, markdown structure issues),KR-AG-008throughKR-AG-013(agent missing name, agent missing prompt, duplicate tool entries, empty tools array,toolAliasesreferences unknown tool, secrets in agent prompt),KR-HK-007throughKR-HK-010(hook timeout out of range, duplicate event handlers, command uses absolute path, secrets in hook command),KR-MCP-003throughKR-MCP-005(missing required args, invalid MCP URL, duplicate MCP server names), andKR-PW-005throughKR-PW-008(step missing description, duplicate keywords, name invalid characters, secrets in power body). Added 16 Codex rules:CDX-AG-004throughCDX-AG-007(AGENTS.md size limit, missing file references, missing project context, contradicts config.toml),CDX-APP-002throughCDX-APP-003(invalid skills configuration, invalid profile configuration), andCDX-CFG-013throughCDX-CFG-022(sandbox_workspace_write mode, model value, model_provider value, model_reasoning_summary value, history configuration, tui configuration, file_opener value, MCP OAuth config, model_context_window value, model_auto_compact_token_limit value). Brings total rule count to 342 (#603). - OpenCode expanded coverage (18 new rules): Added
OC-DEP-001throughOC-DEP-004(deprecation warnings for themode,tools,autoshare, andCONTEXT.mdfields),OC-CFG-008throughOC-CFG-012(logLevelenum,compaction.reservedminimum,skillsURL array, MCP server timeout, MCP OAuth config),OC-AG-005throughOC-AG-008(top_prange, named color enum, redundantsteps/maxStepspair,hiddenboolean type),OC-LSP-001throughOC-LSP-002(LSP command requiresextensionsarray,extensionsmust be non-empty), andOC-TUI-001throughOC-TUI-003(unknown TUI keys,scroll_speedminimum value,diff_styleenum). Brings total OpenCode rules to 43 and total rule count to 304 (#630).
v0.15.0
Immutable
release. Only release title and notes can be modified.
Added
- OpenCode validation rules: Added validation rules for OpenCode configuration (#601).
- Kiro target support: Added
KirotoTargetTooland CLI--target kirohandling across CLI, core config, MCP, and LSP target parsing. - Kiro config validation parity:
.agnix.tomlvalidation now acceptstools = ["kiro"]and Kiro-specific disabled rule prefixes (KIRO-*,KR-SK-*). - README supported tools update: Added a Kiro row to the Supported Tools table with current rule coverage (
KIRO-*,KR-SK-*) and current file surface (.kiro/steering/**/*.mdand.kiro/skills/**/SKILL.md) (#596). - Kiro S-tier CI gate: Added an explicit
Kiro S-tier Gatestep in the main CI test job that executes dedicated Kiro gate checks for target behavior, docs/rule parity integrity, and real-world manifest coverage on every PR/push (#602). - Kiro fixture expansion: Added fixture packs for Kiro powers, agents, hooks, and MCP settings plus integration tests to keep the corpus present and CLI-runnable (#599).
- Kiro real-world repo coverage: Added/updated explicit Kiro-tagged real-world repos (
awsdataarchitect/kiro-best-practices,dereknguyen269/derek-power,cremich/promptz,Theadd/kiro-agents) and tightened CI gating to require the expanded baseline intests/real-world/repos.yaml(#598). - Kiro schema foundations: Added dedicated schema modules for
.kiro/agents/*.json,.kiro/hooks/*.kiro.hook,POWER.md, and Kiro MCP configs to support structured parsing with explicit error metadata (#595). - Kiro S-tier promotion: Moved Kiro CLI from B tier to S tier in project memory docs (
CLAUDE.md/AGENTS.md) and added Kiro CI gate coverage to prevent regression (#592). - Kiro file type detection expansion: Added dedicated
KiroPower,KiroAgent,KiroHook, andKiroMcpfile type detection with registry coverage to route these surfaces through the validation pipeline (#594).
Changed
- Kiro docs and tests: Expanded integration/contract tests for Kiro target paths and updated usage docs to clarify legacy
--targetbehavior versustools = [...]filtering. - Kiro authoring parity follow-up: Kiro agent completions now emit JSON-formatted insert text (quoted values and JSON key syntax) and fixture docs now explicitly clarify that
KiroMcpdetection currently targets.kiro/settings/mcp.jsononly (#612, #613).
v0.14.0
Immutable
release. Only release title and notes can be modified.
Added
.clinerules/*.txtfile support: agnix now detects and validates.clinerules/*.txtfiles asClineRulesFolderfile type. Rules CLN-001 through CLN-004 now apply to.txtfiles in addition to.mdfiles, matching Cline's actual behavior.- CDX-006 rule: Validates
project_doc_fallback_filenamessemantics in Codex CLI configuration (#569).
Fixed
- OC-004 config key allowlist expanded: Added 9 missing top-level keys (
autoshare,enterprise,layout,logLevel,lsp,mode,skills,snapshot,username) toKNOWN_TOP_LEVEL_KEYSin the OpenCode schema, eliminating false-positive OC-004 warnings for valid opencode.json fields. All 9 OC rules re-verified against current OpenCode source on 2026-02-27. - CUR-016 environment.json validation rewritten: Schema now matches the current Cursor Cloud Agent spec -
installis required,terminalsis optional (was previously required), andbuild(withdockerfileandcontext) andupdatefields are now validated. Snapshot-based approach replaced with field-level structural validation. Includes 12 new unit tests. - CUR-001 to CUR-016 verified_on dates updated: All 16 Cursor rules re-verified against current Cursor documentation on 2026-02-26.
- spec-baselines.json expanded: Baseline entries added for CUR-007 through CUR-016 to enable cross-version regression detection.
- Zed extension fixes: Removed mdc language definition per upstream review (#559), added license files (#560), bumped extension version (#562).
- Updated yanked wasm-bindgen and js-sys dependencies (#561).
Changed
- Unified design system: Import shared design tokens from agent-sh/design-system. Switch from Outfit to Inter font. Add font preconnect hints to Docusaurus config. Keeps teal accent and light/dark mode.
- GitHub Copilot rule revalidation (COP-001 to COP-018): Refreshed evidence links and guidance for current custom-agent docs, added strict type checks for
infer(boolean only), and aligned COP schema coverage for custom-agent keys (name,disable-model-invocation,user-invocable,metadata) with updated fixtures and generated rule docs (#567). - CI: Added shared CI workflows, Claude Code review, and git hooks (#557).
- Docs: Updated Zed extension links to marketplace (#563).
v0.13.0
v0.12.4
Security
- Fix minimatch ReDoS vulnerability: Added npm
overridesinwebsite/package.jsonto forceminimatch@^10.2.1, resolving Dependabot alert #75 (ReDoS via repeated wildcards inserve-handler's transitiveminimatch@3.1.2dependency) - Update wasm-bindgen: Bumped
wasm-bindgenfrom 0.2.109 (yanked) to 0.2.110 along with related crates (js-sys,web-sys,wasm-bindgen-test, etc.)
Performance
- WASM conversion optimization: Refactored
WasmDiagnostic::from_diagnosticto take ownership ofDiagnosticand its fields, eliminating unnecessary string cloning when converting diagnostics to the WASM-compatible representation inagnix-wasm
Added
- LSP
pub(crate)testability refactor: Made internal modules (backend,code_actions,completion_provider,diagnostic_mapper,hover_provider,position,vscode_config) andBackendstruct fields/methodspub(crate)to enable crate-internal test access. AddedBackend::new_test()constructor (gated behind#[cfg(test)]) and 18 new tests intestability_tests.rsverifying that all promotedpub(crate)items are accessible from the crate root. No public API changes. - Improved frontmatter parsing test coverage: Added exhaustive unit tests for
frontmatter_value_byte_range,frontmatter_key_offset, andfrontmatter_key_line_byte_rangeinagnix-core. Covers unquoted/quoted values, comments, CRLF endings, indented keys, and malformed input. build_lenient()onLintConfigBuilder: New builder terminal that runs security-critical glob pattern validation (syntax, path traversal, absolute paths) while skipping semantic warnings such as unknown tool names and deprecated field warnings. Intended for embedders that accept future or unknown tool names without rebuilding.ConfigError::AbsolutePathPatternvariant added for absolute-path glob patterns (#475)- Expanded autofix coverage: Added
with_fix()autofix support to 38 additional validation rules across AGM, AMP, AS, CC-AG, CC-HK, CC-PL, CC-SK, CDX, COP, CUR, GM, KIRO, MCP, OC, PE, and REF categories, bringing total fixable rules from 59 to 97 (42% of all rules) - Kiro steering file validation: 4 new validation rules (KIRO-001 through KIRO-004) for
.kiro/steering/*.mdfiles - validates inclusion modes (always,fileMatch,manual,auto), required companion fields, glob pattern syntax, and empty file detection - Cross-platform and reference validation expansion: 5 new rules - XP-007 (AGENTS.md exceeds Codex CLI 32KB byte limit), REF-003 (duplicate @import detection), REF-004 (non-markdown @import warning), PE-005 (redundant LLM instructions), PE-006 (negative instructions without positive alternatives)
- Roo Code support: 6 new validation rules (ROO-001 through ROO-006) for
.roorules,.roomodes,.rooignore,.roo/rules/*.md,.roo/rules-{slug}/*.md, and.roo/mcp.jsonconfiguration files - Cursor expanded coverage: Added 7 new validation rules (CUR-010 through CUR-016) for
.cursor/hooks.json,.cursor/agents/**/*.md, and.cursor/environment.json, including stricter field validation and case-insensitive path detection. - Windsurf support: Added 4 validation rules (WS-001 through WS-004) for
.windsurf/rules/*.mdand.windsurf/workflows/*.mddirectories, plus legacy.windsurfrulesdetection. Includes file type detection, character limit enforcement (12,000), and empty file warnings. - Gemini CLI expanded coverage: Added 6 new validation rules (GM-004 through GM-009) for .gemini/settings.json hooks configuration, gemini-extension.json manifests, and .geminiignore files. Added 3 new file type detectors and validators.
- Codex CLI expanded validation: CDX-004 (unknown config keys), CDX-005 (
project_doc_max_bytesexceeds 65536 limit); updated CDX source_urls to official docs - OpenCode expanded validation: OC-004 (unknown config keys), OC-006 (remote instruction URL timeout warning), OC-007 (invalid agent definition), OC-008 (invalid permission configuration), OC-009 (variable substitution syntax validation)
agnix-wasmcrate: New WebAssembly bindings for the validation engine, enabling browser-based validation without a servervalidate_content()API: New pure function inagnix-corefor validating content strings without filesystem I/Ofilesystemfeature flag:agnix-corenow gates filesystem-dependent code (rayon,ignore,dirs) behind afilesystemfeature (enabled by default), allowing WASM compilation withdefault-features = falseagnix-corestd requirement documentation: Added crate-level documentation inlib.rs,Cargo.toml, andREADME.mdclarifying thatagnix-corerequiresstdunconditionally and that thefilesystemfeature flag does not enableno_stdsupport. Resolves downstream confusion for WASM consumers usingdefault-features = false(#485)- Web playground UI polish: Teal gradient background, staggered animations, panel shadows, focus glow, SVG icons, active preset state, empty state with checkmark, loading spinner,
prefers-reduced-motionsupport - Inline editor diagnostics: Red/yellow/teal wavy underlines via
@codemirror/lint, gutter markers, hover tooltips with rule ID and message - Auto-fix in playground: WASM now exposes
Fixdata; per-diagnostic "Fix" buttons and "Fix all" button apply replacements directly in the editor - New playground presets: AGENTS.md,
.claude/agents/reviewer.md,plugin.json; enriched.claude/settings.jsonhooks preset - Backend revalidation regression tests: Added coverage for
did_saveproject-trigger revalidation and stale generation guard behavior inagnix-lspbackend tests - Confidence-tiered autofix engine:
Fixmetadata now supports confidence, alternative groups, and dependencies; CLI adds--fix-unsafeand--show-fixes; core exposes confidence-basedFixApplyMode/FixApplyOptions - CI crate graph parity test: New workspace-level test validates that all
Cargo.tomlworkspace members are documented in CLAUDE.md, AGENTS.md, README.md, SPEC.md, and CONTRIBUTING.md - prevents architecture-doc drift resolve_validation_rootfile-input tests: 7 integration tests covering single-file validation mode - validates file-input path behavior, unknown file type handling, project-level rule scoping, and nonexistent file edge case (#450)ImportsValidatorconcurrency and multi-file cycle tests: 11 new tests covering thread-safety under concurrent validation, multi-file import cycles (3- and 4-file chains), depth boundary conditions at and belowMAX_IMPORT_DEPTH(complementing existing above-boundary coverage), diamond dependency graphs, and mixed valid/invalid import scenarios (#456)- UTF-8 boundary
_checkedFix constructors: Added 6 newFixconstructor variants (replace_checked,replace_with_confidence_checked,insert_checked,insert_with_confidence_checked,delete_checked,delete_with_confidence_checked) that acceptcontent: &strand validate UTF-8 char boundary alignment viadebug_assert!in debug builds - no-ops in release builds (#463) - LSP concurrent revalidation stress tests: 8 new stress tests covering concurrent document open/close cycles, rapid config changes dropping stale batches, concurrent changes to the same document, config change during active validation, concurrent project and per-file validation, high document count revalidation after a single config change, concurrent hover requests during active validation, and rapid project validation generation guard behavior (#458)
MAX_REGEX_INPUT_SIZEprecise boundary tests: 27 tests covering the exact 65536-byte limit for all 12 guarded regex functions acrossmarkdown.rs,prompt.rs, andcross_platform.rs- each function gets an at-limit (processed) and one-byte-over (rejected) test; also confirmsextract_importsandextract_markdown_linksare unrestricted (byte-scan/pulldown-cmark, not regex) (#457)
Changed
- API: Removed
#[non_exhaustive]fromValidationResultstruct - all fields are public and the attribute was unnecessarily preventing struct literal construction and exhaustive destructuring outside the crate (#487) CoreResulttype alias removed (breaking):CoreResult<T>has been removed from the public API. UseLintResult<T>(i.e.,Result<T, LintError>) instead.LintErroris a public alias forCoreError; both remain exported. (#477)__internalmodule feature-gated: The__internalmodule inagnix-coreis now behind the__internalCargo feature; it was previously unconditionally public which created semver obligations for internal items (#472)normalize_line_endingspromoted to stable public API: Accessible at the crate root (agnix_core::normalize_line_endings) without requiring the__internalfeature (#472)- Project-level validation extracted to
rules/project_level.rs: Extractedrun_project_level_checks,join_paths, and associated unit tests frompipeline.rsinto a newrules/project_level.rsmodule; adds 7 new unit tests for AGM-006, XP-004/005/006, and VER-001 behaviors (#474) build_unchecked()scoped to test/internal use:LintConfigBuilder::build_unchecked()is now gated behind#[cfg(any(test, feature = "__internal_unchecked"))]and marked#[doc(hidden)]. External embedders should migrate tobuild_lenient(). The__internal_uncheckedfeature inagnix-coreis available for integration tests that construct intentionally-invalid configs (#475)- Core refactor: Replaced the
DEFAULTSconst array inregistry.rswith 8 private categoryValidatorProviderstructs. Public API (ValidatorRegistry,ValidatorRegistryBuilder,with_defaults()) is unchanged; this is an internal reorganization only. validate_file/validate_file_with_registryreturn type (breaking): Both functions now returnLintResult<ValidationOutcome>inste...
v0.12.3
Release v0.12.3