-
Notifications
You must be signed in to change notification settings - Fork 0
Releases: brettdavies/agentnative-cli
Releases · brettdavies/agentnative-cli
v0.5.0
@github-actions
github-actions
v0.5.0
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
eba2145
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.5.0] - 2026年06月01日
Added
- Add
p2-raw-flag,p2-more-formats,p3-examples-subcommand,p6-color-flag,p7-verbose,p7-limit, andp7-cursor-paginationbehavioral checks. The two list-style checks (p7-limit,p7-cursor-pagination) vacuously skip when the target CLI has no list-style subcommand; the other five always run and produce Pass / Warn on flag presence in top-level--help. by @brettdavies in #55 VersionChecknow probes the short-alias family (-V,-v,-version) alongside--version. Pass when both work, Warn when only--versionworks (MUST satisfied, SHOULD missed), Fail when neither works.AgentsMdChecknow declares it coversp8-should-bundle-exists. The check already verified a subset of what P8 demands; this exposes the link to the coverage matrix.- Add
p1-defaults-in-helpbehavioral check. Scans--helpfor[default: ...]/(default: ...)/default:annotations. SHOULD-tier, universal. by @brettdavies in #56 - Add
p1-rich-tuibehavioral check. Detects rich-TUI surface area via--tui/--interactive/--uiflags or spinner/progress/tui/ncurses/indicatif mentions in help text. MAY-tier, universal. - Add
p3-about-long-aboutbehavioral check. Probes both-hand--helpdirectly and Warns when the two outputs are byte-identical (nolong_aboutdefined). SHOULD-tier, universal. - Add
p6-stdin-inputbehavioral check. Gated on input-accepting subcommand verbs (process/parse/convert/transform/analyze/validate/format/lint/check); Warns when help text does not mention stdin or-as a path placeholder. SHOULD-tier, conditional. - Add
p6-consistent-namingbehavioral check. Classifies subcommands against a common-verb list; Warns when verb-first and noun-first patterns mix. SHOULD-tier, conditional on 2+ user-defined subcommands. - Add
p7-timeout-behavioralbehavioral check. Gated on long-running subcommand verbs (serve/daemon/watch/tail/monitor/follow/run/start/stream); Warns when no--timeout/--deadline/--max-timeflag advertised. SHOULD-tier, conditional. Distinct from the source-layerp6-must-timeout-networkwhich gates on network-library usage. - 11 behavioral checks closing the remaining behavioral orphan coverage: structured exit codes, JSON error envelopes, consistent envelope shape, actionable error messages, JSON error output, subcommand examples, paired text+JSON examples, subcommand-shaped operations, force/yes on destructive subcommands, read/write surface distinction, and TTY-aware verbosity. by @brettdavies in #57
- Top-level
--verbose/-vflag (envAGENTNATIVE_VERBOSE) for diagnostic escalation, mutually exclusive with--quiet. by @brettdavies in #58 - Top-level
--examplesflag prints a curated invocation block and exits. Pairs with--output json(or--json) so structured-output consumers can fetch the block without parsing full--help. - Top-level
--color auto|always|never(envAGENTNATIVE_COLOR) wraps text-mode status prefixes in ANSI styling, honoring NO_COLOR and TTY detection. - Top-level
--rawemits oneid<TAB>statusline per check with no headers, summary, or badge hint. Pipe-friendly forgrep/awkworkflows. - Per-subcommand
Examples:blocks in--helpforaudit,emit,skill. anc skill install --allandanc skill update [host|--all]iterate every known host in one invocation. Update guards against operating on non-bundle directories via aSKILL.mdmarker file.auditaccepted as a community-standard verb in the p6-standard-names check (alongsidenpm audit,cargo audit, etc.).scripts/sync-spec.shnow accepts--ref <git-ref>(orSPEC_REFenv var) to vendoragentnative-specfrom an explicit branch, tag, or commit SHA. Default behavior unchanged: resolves the latestv*tag. by @brettdavies in #59- The resolved short SHA prints every run regardless of ref type, so consumer PRs can record the exact pin in their body.
scripts/hooks/pre-pushnow runsshellcheck --severity=warningagainst every tracked*.shplus everything underscripts/hooks/(so the hook itself is linted). Usesgit ls-filesso vendored /.gitignored scripts are excluded. Skips with a one-line note ifshellcheckis not installed, matching the existingcargo denypattern. by @brettdavies in #60- New
opt_outandn_ascorecard statuses surface inanc audit --output json(statusfield on each row and matching counters insummary).opt_outmarks deliberate non-adoption (tool ships no--outputflag, noAGENTS.mdbundle);n_amarks a conditional requirement whose antecedent is unmet. Pre-0.6 consumers treat both as unknown and feature-detect. by @brettdavies in #62 - Each entry in
results[]now carries atierfield (must/should/may, ornullfor rows not in the registry) and acheck_idfield naming the probe that produced the row. anc emit schemareturns the schema 0.6 contract ($id: https://anc.dev/scorecard-v0.6.schema.json) with the new status enum values, summary counters, and per-row fields.RELEASES.mdgains a### Dev-direct exceptionsubsection under Daily development, mirroring the spec's same insertion point and content. Names the two path categories (engineering docs and prose-check stack) that may be committed directly todevwithout a feature branch. by @brettdavies in #69RELEASES-PREFLIGHT.mdgains a "Release mechanics sanity" item that runs the same guarded-path leak checkRELEASES.mdstep 4 runs, so operators catch leaks before the release PR opens. Points at the newRELEASES.md§ Cherry-pick conflicts on guarded paths subsection for resolution.
Changed
- Vendored spec bump:
src/principles/spec/principles/p3-progressive-help-discovery.mdcarries the two newp3-must-versionandp3-should-version-shortrequirements (universal applicability).REQUIREMENTS.len()57 -> 59; MUST count 27 -> 28; SHOULD count 20 -> 21; MAY count unchanged at 10. by @brettdavies in #55 - Coverage matrix regenerated:
docs/coverage-matrix.mdandcoverage/matrix.jsonreflect 59 requirement rows and the new verifier links. - Coverage matrix regenerated:
docs/coverage-matrix.mdandcoverage/matrix.jsonreflect 6 new verifier links across P1, P3, P6, and P7 requirement rows. by @brettdavies in #56 - BREAKING:
anc checkrenamed toanc audit;anc generaterenamed toanc emit;anc schemaremoved and folded underanc emit schema. The implicit-default-subcommand injection now writesaudit. Update scripts and CI invocations. by @brettdavies in #58 - Top-level
--helpnow renders an extended description (long_about) with paired text + JSON example invocations;-hstill shows the concise summary. STANDARD_VERBSin p6-standard-names is now alphabetized within and across subgroups for review-friendliness; doc-comment notes the invariant.src/project.rsstderr warnings now referenceanc audit src/instead ofanc check src/when the file-walk hits depth or count limits.scripts/sync-spec.shtransport refactored fromgit clonetogh api. Reduces the shallow-vs-full clone distinction, makes ref resolution uniform across tag / branch / SHA, and removes the need for a local clone except as an offline fallback. by @brettdavies in #59scripts/SYNCS.mddocuments the new flag, thegh apitransport, the local-checkout fallback, and the convention of recording the resolved SHA in any consumer PR body.anc audit --output jsonemits one result entry per requirement-row instead of one percheck_id. A probe likep3-version(coversp3-must-versionandp3-should-version-short) now produces two distinct entries, each tier-stamped, so downstream scoring layers no longer need a coverage-matrix join to attribute a probe's outcome to a specific RFC 2119 level. by @brettdavies in #62- Conditional requirement rows whose antecedent collapses to
opt_outorn_aare propagated ton_ainresults[]; rows whose antecedent isskiporerrorinherit the indeterminacy. The propagated evidence string names the antecedent check id so the chain is legible from the JSON alone. - The badge denominator excludes
opt_out(transitional) and excludesn_afrom both sides, matching the plan's posture that no formula is provably fair until the input shape is disambiguated. anc audittext mode rendersOPTandN/Astatus badges alongside the existing five, and the summary line reports all seven counters.p8-bundle-existsemitsopt_outwhen no top-levelAGENTS.mdorSKILL.mdis found (a malformed bundle still emitswarn);p2-json-outputemitsopt_outwhen no--outputor--formatflag is detected at top level or in any subcommand.- The vendored
agentnative-spectree updates todevcommitb4f4d02(PR brettdavies/agentnative#34). Five rows inp2andp8migrate to the newapplicability.kind: conditional/antecedent.check_idshape; the remaining 18 legacyapplicability.if: <prose>rows stay as-is until each prerequisite grows a machine-readable check id. anc audit(text mode) now reports the same requirement rows as--output json: requirement-row ids (p2-must-schema-print) instead of probe ids, with the req...
Assets 13
- sha256:9947cf04aa24d04c92e222d059fa0919a7004ad204ccc77f039a33983189e92f945 KB
2026年06月01日T07:23:27Z - sha256:2ab6a1e2f5101d9c0c34c253abb445ff7094b294167301efdbe88f2c827ee87a947 KB
2026年06月01日T07:23:27Z - sha256:6b5708a36c4372caa7dd9716b9b81cbb18cfc3150125b1b32f488da54b0460711.03 MB
2026年06月01日T07:23:28Z - sha256:646153c65431e4d5be0e25bf41c2eb7b9129b334df1f2ef7c5458f970658dc3d936 KB
2026年06月01日T05:21:10Z - sha256:e766ea4c0f063bd28b0462083ce93a6fabc182012d11c86ff896591fa548f0fe965 KB
2026年06月01日T05:21:10Z - sha256:5ad20863ffaa4f4b8abc22f276a84b6df18b7454161658f0b9172445dbc034591010 KB
2026年06月01日T05:21:10Z - sha256:e9dc123ee937fd3931ca473cd53772257b3f06912c93cbe09d51e61ad5a44c711020 KB
2026年06月01日T05:21:10Z - sha256:4ee8ed535ee0f933864a7a7e2a0d9ff3bbcbe3d401cf65f42d30470af79aa759917 KB
2026年06月01日T05:21:10Z - sha256:6c157fedc2616b2090c5369b116324c6e3e84baaa293d3506f55b8dad8e58c6b1.01 MB
2026年06月01日T05:21:10Z - sha256:3f072517add1282b016b8d3f563f5dd6ed00183004b2981e97ed2ee767a6a0341.06 MB
2026年06月01日T05:21:10Z -
2026年06月01日T05:13:54Z -
2026年06月01日T05:13:54Z - Loading
v0.4.0
@github-actions
github-actions
v0.4.0
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
ae426bc
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.4.0] - 2026年05月21日
Added
- Add P1 secret-handling check (
p1-must-secret-non-leaky-path): scans target CLIs'--helpfor secret-bearing flag
families (--token,--password,--api-key,--secret,--auth,--credential) and verifies each has either a
--*-filecompanion or stdin path advertised. Vacuous Pass when no secret-bearing flag is detected. by @brettdavies
in #50 - Add P2 schema trio (
p2-must-schema-print,p2-should-schema-file,p2-should-json-aliases): runtime-discoverable
output schema viaschemasubcommand or--schemaflag, file-export of schemas (schema/*.json,*.schema.jsonat
repo root), and--json/--jsonlshort aliases for--output. - Add P4 closed-set rejection check (
p4-should-enumerate-valid-set, Rust + Python): detects clapValueEnum,
PossibleValuesParser,value_parser!, and Pythonargparse.choices=/click.Choice(). - Add P6 lifecycle and naming checks (
p6-must-sigterm, Rust + Python;p6-may-standard-names): SIGTERM-handler
detection acrosssignal_hook,tokio::signal::unix,signal.signal, andloop.add_signal_handler;
community-standard-verb allow-list applied to top-level subcommands. - Add P8 skill-bundle suite (
p8-should-bundle-exists,p8-must-bundle-install,p8-may-install-all,
p8-may-bundle-update): repo-root detection ofAGENTS.md/SKILL.mdwith YAML frontmatter, plus help-surface
probes forskill install,skill install --all, andskill update/skill upgrade. Brand-new principle in the
registry. - New
PRODUCT.mdat repo root codifies linter-channel voice: second-person imperative register, three-part error shape
(what failed, why, what to do), no marketing voice in CLI surface. Inherits universal rules from vendoredBRAND.md.
by @brettdavies in #52 - New
CONTRIBUTING.mddocuments the three-tier intake (signal / proposal / code), routes principle-level discussion to
the spec repo, and names the dev-setup gates. - New
add-tool-to-registryissue template for proposing CLI tools to the anc100 registry. - Add
anc schematop-level subcommand. Prints the embedded JSON Schema (draft 2020-12) describing the shape ofanc check --output jsonscorecards. Closes thep2-must-schema-printFAIL surfaced by self-check. by @brettdavies in
#54 - Add
schema/scorecard.schema.jsoncommitted at the repo root and embedded into the binary viainclude_str!.
Hand-written coverage of the 0.5 shape (Scorecard plus ToolInfo, AncInfo, RunInfo, PlatformInfo, TargetInfo,
BadgeInfo, LevelCounts, CoverageSummary, Summary, CheckResultView). Closes thep2-should-schema-fileWARN. - Add YAML frontmatter to
AGENTS.mdnaming the tool, binary, description, homepage, and repository so agent runtimes
can index the bundle. Closes thep8-should-bundle-existsWARN.
Changed
- Bump CLI from 0.3.1 to 0.4.0 (MINOR; meaningful coverage growth across five principles, including a brand-new
principle). by @brettdavies in #50 - Binary discovery in
src/project.rs::discover_rust_binariesnow picks the newer oftarget/release/<bin>and
target/debug/<bin>by mtime when both exist. Ties and metadata failures fall back to debug (matches cargo's dev-flow
default). CI scenarios where only one profile is built are unchanged. by @brettdavies in
#51 RELEASES.mdslims to operational runbook (95 lines); rationale moves to companionRELEASES-RATIONALE.md(243
lines). Each runbook section ends with a section-pointer at the rationale. by @brettdavies in
#52- Issue-template config adds
agentnative-skillas a fourth cross-repo destination; renames "CLI grading" to "grading
findings" to match spec-repo terminology. derive_tool_namenow follows the four-tier fallback chaincommand_name -> binary basename -> manifest package name -> directory basename. The old shape returned the project directory basename, producing 404-bound badge URLs for any
tool whose registry slug differed from its directory name.anc check .now emitsbadge_url: https://anc.dev/badge/anc.svg(HTTP 200, matches the site'sregistry.yaml). by @brettdavies in
#54matches_principlegains the(CheckGroup::P8, 8)arm. Pre-fix,--principle 8silently filtered out every P8 check
because the match table predated the new principle.- README refreshed for v0.4.0: principle count 7 -> 8 with a P8 row, "Example Output" rewritten against the current
44-check self-check (P2 schema, P6 standard-names + SIGTERM, P8 bundle results), "Three Check Layers" lists Python
alongside Rust under Source, JSON sample dropped the staleanc.commitfield. README em-dash density scrubbed from
20.5/1000 to 0/1000. - README "Reporting issues" section folded into "Contributing" as a three-tier intake (signal / proposal / code) that
points at the shippedCONTRIBUTING.mdfor the full breakdown. Cross-repo routing preserved.
Documentation
- Document prose-scrubbing runbook in
RELEASES.mdfor release-flow artifacts (PR bodies,CHANGELOG.md, release-PR
bodies) using Vale + LanguageTool + unslop. by @brettdavies in
#50 - Add
## PR bodysection toRELEASES.mdcodifying what belongs in PR bodies (NEW user-facing substance, six required
template sections) and what does not (workflow recap, triple-diff output, pre-push gate results, CI status, AI
attribution). - Add Dogfooding Safety rule 3 to
CLAUDE.mddescribing the mtime-based selection, with aNEVERdirective against
reverting to the always-prefer-release shape. by @brettdavies in
#51 AGENTS.mdgains a "Voice and prose rules" section pointing atPRODUCT.mdfor the linter-channel register and
scripts/prose-check.shfor the local gate. by @brettdavies in
#52scripts/SYNCS.mddocuments the newsync-prose-tooling.shrow and the consumer-owned status of
scripts/prose-check.sh.- Update
--principle <PRINCIPLE>doc from(1-7)to(1-8)in both README andsrc/cli.rs. by @brettdavies in
#54
Full Changelog: v0.3.1...v0.4.0
Assets 13
v0.3.1
@github-actions
github-actions
v0.3.1
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
40273e0
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.3.1] - 2026年05月04日
Added
- Ship
x86_64-andaarch64-unknown-linux-muslstatic binaries on every release. Statically linked against musl libc, so they run on Alpine and other musl-libc-host distros without glibc, and on every glibc distro too. by @brettdavies in #48
Documentation
- Document the
cliff.tomlchore-skip footgun and the "CHANGELOG is generated, never hand-written" rule inRELEASES.mdunderReleasing dev to main. Adds a new review step (renumbered to 9) and tightens the existing "PRs and changelog generation" section. by @brettdavies in #48
Full Changelog: v0.3.0...v0.3.1
Assets 13
v0.3.0
@github-actions
github-actions
v0.3.0
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
8789d09
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.3.0] - 2026年05月01日
Added
- Add four scorecard metadata blocks (
tool,anc,run,target) to--output json— identifies the scored tool/version, theancbuild that produced the scorecard, the user-typed invocation with timestamp and duration, and the resolved target (project / binary / command). by @brettdavies in #34 - Add
time = "=0.3.47"dependency for RFC 3339 timestamps inrun.started_at. - Add
anc skill install <host>subcommand to install theagentnative-skillbundle into a host's canonical skills directory. Six hosts:claude_code,codex,cursor,factory,kiro,opencode. by @brettdavies in #35 - Add
--dry-runflag (P5): prints the resolvedgit clonecommand without spawning. Captures cleanly viaeval $(anc skill install --dry-run <host>). - Add
--output {text,json}flag (P2): JSON envelope is uniform across success and error and across dry-run / live install. Typedreasonon error (destination-not-empty,destination-is-file,home-not-set,git-not-found,git-clone-failed). --output textnow appends an agent-native badge embed hint after the summary line when the tool clears the 80% eligibility floor. Below the floor, nothing badge-related is printed (the convention's "do not nag" rule). by @brettdavies in #36--output jsonscorecard now includes abadgeblock (eligible,score_pct,embed_markdown,scorecard_url,badge_url,convention_url).embed_markdownisnullbelow the floor;scorecard_url/badge_urlare populated whenever a tool slug exists, since the site renders an SVG for every scored tool.scripts/sync-dev-after-release.sh— backportsCargo.toml[package].version,Cargo.lock, andCHANGELOG.mdfrommaintodevafter a release tag publishes. Surgical (preserves dev's other Cargo.toml lines), idempotent (re-runs are a no-op when dev is already in sync), and signed via the operator's normal commit signing — satisfiesprotect-dev'srequired_signaturesruleset without needing a CI bot identity. by @brettdavies in #37
Changed
- Vendoring now always tracks the latest published spec tag —
SPEC_REFenv override removed. Runbash scripts/sync-spec.shto refresh; no environment configuration required. by @brettdavies in #33 - Bump scorecard
schema_versionfrom"0.3"to"0.4"(additive within the documented0.xpolicy — older consumers feature-detect). by @brettdavies in #34 - Bump
rust-versionfrom1.87to1.88(let-chain stabilization). - Bumped scorecard
schema_versionfrom"0.4"to"0.5". Pre-0.5consumers feature-detect the newbadgekey and continue to work. by @brettdavies in #36 p7-naked-printlnsource check now exemptsbuild.rsat any crate root. Cargo build scripts useprintln!("cargo:...")directives by protocol; flagging them produces noise without an alternative API. Misnamedsrc/build.rsortests/build.rsfiles stay flagged. by @brettdavies in #38- README refreshed for current state: schema 0.5 with
badgeblock,--audit-profile <CATEGORY>documented under CLI Reference,target.pathdocumented as basename-only (PII-safe), refreshed Example Output to match the live 33-check dogfood and the post-summary badge embed hint. by @brettdavies in #40 --output jsonscorecardancblock no longer includes acommitfield.anc.version(the crate version pin) remains as the build identity. Removed because the per-build Git SHA capture made cached builds fragile (stale SHAs across local commits) without solving any consumer-facing problem —anc.versionalready identifies the released binary unambiguously, and pre-launch no public consumer ofanc.commitexists. by @brettdavies in #47
Fixed
- Eliminated four
.unwrap()calls on infallible operations acrosssrc/skill_install.rsandbuild.rs. Replaced with.expect("...")naming the upstream contract that guaranteesSome/Ok. No behavior change — these were already infallible; theexpectmessages document why. by @brettdavies in #38 target.pathinanc check --output jsonnow emits the basename of the resolved target instead of the canonicalized absolute path, eliminating a home-directory / username PII leak that flowed into committed scorecards, badge URLs, and agent-posted artifacts. Project mode emits the directory name (e.g."agentnative-cli"); binary mode emits the file name (e.g."anc"); command mode unchanged atnull. No schema bump — value semantics changed, schema shape did not. by @brettdavies in #39- Corrected cross-repo URLs in
.github/ISSUE_TEMPLATE/so contact links and agent-filing instructions point at the right repos. Spec repo references switched fromagentnative-clitoagentnative; site repo references switched fromagentnative-cli-sitetoagentnative-site; theagentnative-cli-clidouble-suffix typo in agent gh-search guidance was corrected toagentnative-cli. Affectsconfig.yml,false-positive.yml,feature-request.yml,scoring-bug.yml. by @brettdavies in #42
Documentation
AGENTS.mdandsrc/principles/spec/README.mdupdated to reflect the simpler vendor flow. by @brettdavies in #33- Document the four new top-level objects in README.md, AGENTS.md, and CLAUDE.md, including the publishing-PII review reminder for
run.invocationandtarget.path. by @brettdavies in #34 - Add
## Install the skillsection to README with one-line examples per host and the manualgit clonefallback for hosts not yet in the binary's map. by @brettdavies in #35 RELEASES.md§ "After publish — syncdevwith the release" documents the backport step, supersedes the prior "never back-merged" rule for these three specific files, and points operators at the script. by @brettdavies in #37- Add the
[](https://anc.dev/score/anc)badge plus crates.io and license shields at the top ofREADME.md. by @brettdavies in #40 - Trim
.github/ISSUE_TEMPLATE/tofalse-positive,feature-request,scoring-bug, plus a new00-blank.ymlthat lets a Blank issue option sit first in the chooser ahead of the structured forms. Spec-side templates (pressure-test,grade-a-cli,spec-question) were duplicates of the spec repo's set from before the rename — they belong onbrettdavies/agentnativeonly, andconfig.ymlalready redirects there. - Add
scripts/SYNCS.md— cross-repo sync map covering every spec/skill/coverage/release data flow with mechanism, payload, trigger, and drift check per edge. Includes a flowchart of inbound/outbound edges, a release-pipeline sequence diagram, and a cadence summary table reducing the system to "automatic vs manual" per sync point. by @brettdavies in #41 RELEASES.md§ "Releasing dev to main" step 4 replaced with a triple-diff verification block (A: main→release, B: release→dev, C: dev→main) plus agit cherry HEAD origin/devpatch-id check. The new flow catches both directions of drift before the release tag goes out — guarded paths leaking IN (the original concern) and missed cherry-picks that should have shipped (the new concern). Discovered during v0.3.0 prep when an ad-hoc triple-diff caught 4.github/ISSUE_TEMPLATE/*.ymlfiles that had drifted onmainsince the v0.1.1 squash. by @brettdavies in #45RELEASES.md§ "Releasing dev to main" step 4 — expanded thegit cherrypatch-id check comment with squash-merge triage guidance (three expected noise sources, what a real miss looks like, and a two-command triage recipe). Discovered during v0.3.0 prep when the check produced 55 noisy+lines that all turned out to be expected; the original comment didn't explain that this is normal in a squash-merge workflow. by @brettdavies in #46
Full Changelog: v0.2.0...v0.3.0
Assets 11
v0.2.0
@github-actions
github-actions
v0.2.0
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
2c1cf38
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.2.0] - 2026年04月29日
Added
- Vendored
agentnative-specsnapshot undersrc/principles/spec/withscripts/sync-spec.shfor pinned-tag resync
(extracts viagit show <ref>so the spec checkout's working tree is not perturbed). by @brettdavies in
#29 spec_versionfield inanc check --output jsonscorecard, sourced at build time from vendored
src/principles/spec/VERSION. Pin against this to know which spec contract a scorecard's requirement IDs reference.
Changed
REQUIREMENTSis now generated at build time from vendored frontmatter; no hand-maintained duplicate. No scoring
behavior change — pre/post diff verified byte-identical across all 33 check results, summaries, and coverage totals.
by @brettdavies in #29- Scorecard
schema_versionreset1.2→0.3. Pre-launch correction; the schema is at0.xwhileancis
pre-launch and will lock at1.0on first public release. No public consumers exist today. - All 7 principles flipped from
status: drafttostatus: activevia re-vendor againstagentnative-specv0.3.0.
Scorecardspec_versionnow reports"0.3.0". Three SHOULD/MUST requirement summaries reworded for clarity
(p4-should-gating-before-network,p6-must-sigpipe,p6-must-global-flags); no requirement-ID changes, no count
changes.
Documentation
- AGENTS.md "Spec source" section rewritten to describe build-time vendoring and resync cadence (
SPEC_REFenv var
bumps the vendored tag). by @brettdavies in #29
Full Changelog: v0.1.3...v0.2.0
Assets 11
v0.1.3
@github-actions
github-actions
v0.1.3
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
bfa2d80
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.1.3] - 2026年04月23日
Added
audiencefield on scorecard JSON now emits a kebab-case label (agent-optimized/mixed/human-primary) when all four signal behavioral checks ran, ornullwhen any are missing. by @brettdavies in #26--audit-profile <category>flag onanc checkacceptshuman-tui,file-traversal,posix-utility, ordiagnostic-only. The applied value echoes as the top-levelaudit_profilefield on scorecard JSON, and suppressed checks drop out ofcoverage_summary.{must,should,may}.verifiedso site leaderboards don't overstate per-tool coverage under audit profiles.audience_reasonfield on scorecard JSON — populated only whenaudienceisnull, with"suppressed"(signal check masked by--audit-profile) or"insufficient_signal"(signal check never produced) so consumers can see why the classifier withheld a label. by @brettdavies in #27audit_profilesarray incoverage/matrix.json— each entry carries{name, description, suppresses[]}, letting agents and site renderers enumerate the four--audit-profilecategories and what each one suppresses without scraping--help.
Changed
p1-env-hintsnow recognizes bash-style env-var references ($FOO/TOOL_FOO) near flag definitions in addition to clap[env: FOO]annotations. Tools likeripgrepandaiderthat document env bindings in free prose now Pass instead of Warn.$PAGERand uppercase section headers likeDOCKER_CONFIG:are excluded so tools likegit/gh/manand pages with structured help output don't produce false positives. by @brettdavies in #26- Suppressed and errored
results[].labelvalues now show the check's human-readable label (e.g., "Respects NO_COLOR") instead of falling back to the check id. by @brettdavies in #27
Documentation
- README.md, AGENTS.md, and CLAUDE.md updated to describe the shipped v0.1.3 scorecard surface:
audience+audience_reason+audit_profilefield semantics, the--audit-profileflag with examples, and theaudit_profilessection ofcoverage/matrix.jsonas the programmatic source for category enumeration. by @brettdavies in #27
Full Changelog: v0.1.2...v0.1.3
Assets 11
v0.1.2
@github-actions
github-actions
v0.1.2
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
888a8d8
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.1.2] - 2026年04月21日
Added
- Add
p1-flag-existencebehavioral check — passes when--helpadvertises a non-interactive gate flag (--no-interactive,--batch,--headless,-y,--yes,-p,--print,--no-input,--assume-yes). Skips when the target already satisfies P1 via help-on-bare-invocation or stdin-primary. by @brettdavies in #24 - Add
p1-env-hintsbehavioral check — passes when--helpexposes clap-style[env: FOO]bindings for flags. Emits medium confidence; the heuristic covers the canonical but not the only env-binding format. - Add
p6-no-pager-behavioralbehavioral check — passes when--no-pageris advertised in--help. Skips when no pager signal (less/more/$PAGER/--pager) appears. Emits medium confidence. - Add
confidencefield to every scorecard result (high/medium/low). Additive; v1.1 consumers feature-detect. - Add
dual_layercount to the coverage matrix summary so the headline prose surfaces how many covered requirements have verifiers in two layers.
Changed
- Raise required approving review count on
mainbranch from 0 to 1. by @brettdavies in #24
Documentation
- Document the `covers()` trait method and the coverage-matrix regeneration step in the "Adding a New Check" guide. by @brettdavies in #23
- Refresh README sample output to match v0.1.1 dogfood behaviour.
- Regenerate
docs/coverage-matrix.md+coverage/matrix.jsonto pick up the three new behavioral verifiers. by @brettdavies in #24
Full Changelog: v0.1.1...v0.1.2
Assets 11
v0.1.1
@github-actions
github-actions
v0.1.1
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
5400c43
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.1.1] - 2026年04月20日
Added
anc generate coverage-matrixsubcommand (--out,--json-out,--checkdrift guard). Emitsdocs/coverage-matrix.md+coverage/matrix.jsonfrom the spec registry + each check's declaredcovers(). by @brettdavies in #21- Scorecard JSON v1.1 fields:
schema_version: "1.1",coverage_summary(must/should/may×ばつtotal/verified),audience(reserved, null until v0.1.3),audit_profile(reserved, null until v0.1.3). - GitHub issue templates for structured reporting: false-positive, scoring-bug, feature-request, grade-a-cli, pressure-test, spec-question (+ chooser
config.yml).
Changed
- Renamed
p6-tty-detection→p1-tty-detection-source(verifies the P1 SHOULD for TTY detection, not a P6 concern). by @brettdavies in #21 - Renamed
p6-env-flags→p1-env-flags-source(verifies the P1 MUST that every flag be settable via env var — lives in P1, not P6). - Repo URL references swept to
brettdavies/agentnative-cli(renamed frombrettdavies/agentnative).Cargo.tomlhomepagenow points athttps://anc.dev.
Fixed
- P1 applicability gate (
src/checks/behavioral/non_interactive.rs) now passes when any of help-on-bare-invocation, agentic-flag-present, or stdin-as-primary-input is observed. Previouslyancrisked warning itself oncep1-flag-existencelands in v0.1.2. by @brettdavies in #21
Full Changelog: v0.1.0...v0.1.1
Assets 11
v0.1.0
@github-actions
github-actions
v0.1.0
This tag was signed with the committer’s verified signature.
brettdavies
Brett
SSH Key Fingerprint: n4UpR9oDUpPZ/Z5WFDr34cpp7qHiZzoSk2GIuEr9Cc4
Verified
Learn about vigilant mode.
93a0b36
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.1.0] - 2026年04月16日
Added
- Add Check trait, Project struct with automatic language detection, and BinaryRunner with timeout and caching by @brettdavies in #1
- Add 8 behavioral checks: help text, version flag, JSON output, bad-args handling, quiet mode, SIGPIPE, non-interactive mode, no-color
- Add 3 Rust source checks via ast-grep: unwrap usage, no-color support, global flags
- Add CLI with
checkandcompletionssubcommands, text and JSON scorecard output - Add 30-check agent-readiness scorecard across behavioral, source, and project layers by @brettdavies in #2
- Add 13 Rust source checks and 6 project checks
- Add complete README with principles table, examples, and CLI reference
--command <name>flag oncheckresolves a binary from PATH and runs behavioral checks against it. Mutually exclusive with the positional path. by @brettdavies in #12value_hint = ValueHint::CommandNameon--commandso zsh, fish, and elvish completions suggest PATH commands instead of file paths. Bash is patched post-generation inscripts/generate-completions.sh. by @brettdavies in #13after_helptext onClidocumenting the implicit default subcommand and the bare-invocation contract directly inanc --helpoutput.- Mutual exclusion:
--commandand--sourcenow error at parse time instead of silently producing an empty result. - Add
code-bare-exceptPython source check — detects bareexcept:clauses without exception types by @brettdavies in #15 - Add
p4-sys-exitPython source check — detectssys.exit()calls outsideif __name__ == "__main__":guards and__main__.pyfiles - Add
p6-no-colorPython source check — detects NO_COLOR env var handling (Warn, not Fail — behavioral check is the primary gate) - Add language-parameterized source helpers
has_pattern_in(),find_pattern_matches_in(), andhas_string_literal_in()supporting Python and Rust
Changed
- Change
--quiet/-qto a global flag so it appears in top-level--helpfor agent discoverability by @brettdavies in #6 - The installed binary is now
anc. The crate is stillagentnative. Homebrew users will get bothancand anagentnativesymlink (formula lands in Plan 002). by @brettdavies in #11 checkis now the default subcommand:anc .,anc -q ., andanc --command ripgrepall work without typingcheckexplicitly. Bareanc(no arguments) still prints help and exits 2. by @brettdavies in #12anc -q/anc --quiet(top-level flag without subcommand) now prints help and exits 2 instead of panicking viaunreachable!()(pre-existing bug). by @brettdavies in #13anc helpandanc help checknow work — clap's auto-generatedhelpsubcommand was missing from our known-subcommand set and got misclassified as a path.anc --command <NAME>where NAME collides with a subcommand name (e.g.anc --command check) now resolves NAME as a binary on PATH instead of producing a confusing clap error.anc --command rgandanc --output json --source(no positional argument) now work — the pre-parser detects subcommand-scoped flags and injectscheckaccordingly.anc -- .(POSIX double-dash separator) now runs check against.instead of producing undefined behavior.
Fixed
- Fix recursive fork bomb when dogfooding
agentnative check .against itself by @brettdavies in #7 - Fix false positive:
sys.exit()in__main__.py(Python entry point) no longer flagged by @brettdavies in #15 - Fix
is_main_guard: now handles inline comments, parenthesized guards, no-space operators, and reversed operand order (e.g.if "__main__" == __name__:) - Fix
is_bare_except: restrict parsing to first line of node text (prevents false negatives on error-recovery nodes) - Fix
__main__.pyskip to check filename component, not path suffix (prevents false skips on files likemy__main__.py) - Fix TOCTOU gap in
parsed_fileslazy initialization (replacedRefCellwithOnceLock) - Remove dead
except*branch from bare-except detection (PEP 654 makes bareexcept*:a syntax error)
Documentation
- Add
RELEASES.mddocumenting the dev/main/release/* workflow and the Rust release pipeline (crates.io, GitHub Releases, Homebrew dispatch). by @brettdavies in #11 - README install section now lists all five distribution channels (Homebrew, cargo install, cargo binstall, GitHub Releases, from source) and all five shell completions with canonical auto-loaded paths.
- README and AGENTS.md updated to lead with the new ergonomics and document the
[PATH]/--commandmutual exclusion. by @brettdavies in #12 - README and AGENTS.md exit-code tables clarify that exit 2 is overloaded (failures, errors, and usage errors all share it). Suggest parsing stderr (
Usage:text) to distinguish. by @brettdavies in #13