diff --git a/.agents/skills/dotnet-inspect/SKILL.md b/.agents/skills/dotnet-inspect/SKILL.md index 308f796..85c8009 100644 --- a/.agents/skills/dotnet-inspect/SKILL.md +++ b/.agents/skills/dotnet-inspect/SKILL.md @@ -1,6 +1,6 @@ --- name: dotnet-inspect -version: 0.10.1 +version: 0.10.2 description: Find evidence instead of guessing for .NET packages, platform libraries, local assemblies, APIs, dependencies, SourceLink/symbol provenance, and version-to-version API changes. --- @@ -14,7 +14,24 @@ Invoke with `dnx`: dnx dotnet-inspect -y -- ``` -Default output is Markdown. Use Markdown for readable evidence and narrative with headings, section boundaries, table headers, and code fences that are easy to quote. Use `--table` for compact human scanning, `--tsv` for normalized tab-separated rows when agents or scripts need stable field splitting, `--jsonl` for one JSON object per table row, and `--json` for structured object graphs. Verbosity controls document breadth: default type views stay compact with `Method Groups`, narrowed member-name views show overload rows, bare `-S` gives a curated high-density view, and `-v:n`/`-v:d` expand fuller section detail such as docs. For selected overload implementation bodies, use `-S "Decompiled Source"`, `-S "Original Source"`, `-S IL`, or `-S "IL (Annotated)"`. Markdown and JSON can represent multi-section documents. Table, TSV, and JSONL are single-table formats; when a query matches multiple sections, select one with `-S` or use Markdown/JSON. +## Start with a command + +| Goal | Start with | Drill in | +| ---- | ---------- | -------- | +| Find the right API | `find Pattern` | `type Type --package Foo`, then `member Type --package Foo`. | +| Inspect a package | `package Foo` | Add `-S Signals`, `-S Manifest`, or `-S "Library Files"`. | +| Inspect a library or assembly | `library Foo` or `library path/to.dll` | Add `--platform`, `--package`, or `-S Signals` when source matters. | +| Inspect a type | `type Type --package Foo` | Add `--all` for non-public, hidden, and extra members. | +| Inspect members and overloads | `member Type --package Foo -m Name --show-index` | Use `Name:N` selectors for a specific overload. | +| Compare API versions | `diff --package Foo@old..new --breaking` | Use `--additive` for new APIs or `-t Type` to narrow. | +| Locate source or implementation | `source Type --package Foo` | For a selected overload use `member Type Member:1 -S "Original Source"` or `-S IL`. | +| Explore relationships | `depends Type`, `extensions Type`, `implements Interface` | Add package, platform, or project scope as needed. | + +## Output modes + +Default output is Markdown. Use Markdown for readable evidence with headings, section boundaries, tables, and code fences. Use `--table` for compact human scanning, `--tsv` for stable field splitting, `--jsonl` for one JSON object per table row, `--json` for structured object graphs, and `--mermaid` for graph-shaped output such as `depends`. + +Markdown and JSON can represent multi-section documents. Table, TSV, and JSONL are single-table formats for commands or projections that produce one table. Mermaid is diagram output for commands that produce graph-shaped results. Format promises: @@ -23,53 +40,50 @@ Format promises: - `--jsonl` emits one compact JSON object per table row with stable snake_case property names. - `--table` renders the same projection as `--tsv` and `--jsonl`, with each column starting at a uniform position across rows. -Start with the default Markdown view for readable evidence, or bare `-S` for the curated high-density view. Use the query system when you need to drill into specific detail that those views do not expose: `-D` discovers sections/columns; `-S Section` selects sections by name or wildcard, such as `-S "Async*"`; `--columns` and `--fields` project values. This query system serves a similar role to Go templates, but you discover the available shape first instead of guessing field names. +## Limits -Use built-in limiters before shell pipes. `-n N` and numeric shorthand like `-6` work like `head`; `--tail N` works like `tail`; add `--rows` to make head counts cap Markdown table data rows instead of output lines, for example `--rows -n 10` or `--rows -10`. Use `--count` to count rows in one selected table section. Command-specific limiters also matter: `-t N` limits type/find results, `-m N` limits member results, and `--versions N` limits package version lists. +Prefer built-in limiters to shell pipes. `-n N` and numeric shorthand like `-6` work like `head`; `--tail N` works like `tail`; add `--rows` to make head counts cap Markdown table data rows instead of output lines. Use `--count` to count rows in one selected table section. Use command-specific limiters for command-specific result sets: `-t N` limits type/find results, `-m N` limits member results, and `--versions N` limits package version lists. -The query system, output modes, and limiters compose as independent axes: first choose a shape with `-D`, `-S`, `--columns`, or `--fields`; then choose a renderer with Markdown, `--table`, `--tsv`, `--jsonl`, or `--json`; then bound the result with `-n`, `--tail`, `--rows`, or `--count`. Markdown and JSON can carry multiple sections; `--table`, `--tsv`, and `--jsonl` are single-table renderers, so pair them with one selected section. For example, `-D Section --tsv` returns the section schema as stable tab-separated rows, while `-S Section --columns Name,Signature --jsonl` returns projected rows as JSON Lines. +## Query system -## Workflow map +Use the query system when default views do not expose the detail you need. `-D` discovers available sections/columns; `-S Section` selects sections by name or wildcard; `--columns` and `--fields` project values. Discover first instead of guessing field names. -| Goal | Start with | Drill in | -| ---- | ---------- | -------- | -| Find the right API | `find Pattern --table` | `type Type --package Foo`, then `member Type --package Foo`. | -| Fix upgrade breaks | `diff --package Foo@old..new --breaking` | Inspect replacement members with `member`. | -| Learn what changed | `diff --package Foo@old..new --additive` or `diff --platform Lib@old..new` | Use `-t Type` to narrow. | -| Locate source | `source Type --package Foo` | Add `-m Member`; for a selected overload use `member Type Member:1 -S "Original Source"` when you need SourceLink-backed source text. | -| Inspect package/library signals | `library Foo -S Signals` or `package Foo -S Signals` | `Signals` resolves SourceLink for libraries; add `-S "SourceLink Availability"` for source reachability or `-S "SourceLink Integrity"` for slow content verification. | -| Inventory package library files | `package Foo -S "Library Files"` | Lists all files under `lib/` across TFMs; use paths from this section with `library --package Foo` for specific assemblies. | -| Explore relationships | `depends Type`, `extensions Type`, `implements Interface` | Add package/platform scope as needed. | -| Keep output small | `--table`, `--tsv`, `--jsonl`, `--json`, `-S Section`, `--count`, `-n N`, `--tail N`, `--rows -n N` or `--rows -6` | Prefer built-in limits over shell pipes. `--rows` requires a head count and cannot combine with `--tail`. | - -## Modern .NET and preview workflow +```bash +dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -D --tsv +dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -D "Method Groups" --tsv +dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -m Serialize -D Methods --tsv +dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -m Serialize -S Methods --columns "Name;Signature" +dnx dotnet-inspect -y -- library System.Text.Json -S "Async*" --count +dnx dotnet-inspect -y -- library System.Text.Json -S "Async*" --rows -n 10 +``` -LLM training may miss .NET 10+ runtime/library features. Prefer metadata inspection over web search. +Bare `-S` renders a curated high-density view; `-S All` renders an exhaustive document. Sections marked opt-in must be selected explicitly with `-S`. Focused library/member `-S Section` output keeps a compact context row before the selected section. -| Feature | Description | Use | Watch for | -| ------- | ----------- | --- | --------- | -| Runtime async | .NET 11+ libraries may use runtime async instead of compiler-generated state machines. | `library --platform Lib --version -S "Async*"` | `Kind` distinguishes runtime async from state-machine async; use `--count` only for totals. | -| Runtime-pack assemblies | Many BCL libraries ship only as installed platform/runtime-pack assemblies, not standalone packages. | `library --platform Lib --version ` or direct DLL path | Prefer platform/direct DLL inspection when package lookup is misleading. | -| Memory-safety metadata | Newer compilers may stamp updated memory-safety rules and caller-unsafe members in metadata. | `library Lib --version -S Signals` | Compare `MemorySafetyRules` v2+ with the `RequiresUnsafe` member count; unsafe signatures and P/Invoke remain separate signals. | -| Extension properties | C# extension blocks can expose properties in addition to extension methods. | `extensions Type --reachable` | Results include extension methods and C# extension properties. | -| Implementation detail | Compiler/runtime implementation can differ from API signatures. | `member Type Member:1 -S "Decompiled Source"` | `Decompiled Source` is lowered C# and works broadly; `Original Source` is SourceLink-backed source when available; IL/annotated IL show exact instructions. | +## General tips -For preview sweeps, resolve the version once, prove one library end-to-end, then fan out to the rest. Unpinned packages use the latest stable by default; add `--preview` to include prerelease versions in latest resolution, including `package Foo --latest-version --preview` and `library --package Foo --preview`. +- Built-in aliases and common BCL types such as `string`, `int`, and `List` resolve without `--package`, `--platform`, or `--library`; start with `type string` or `type 'List'`. +- After `find`, reuse the package/library it reports in follow-up commands. Use explicit `--platform`, `--package`, or `--library` when the source matters; for multi-library packages, include the `--library` value shown by `find`. +- Always quote generic type names in shell commands: `type 'List'`, `member 'Dictionary'`, or `type 'INumber'`. Use `` rather than `<>` for generic type queries. +- Wildcards are supported for type names and section/schema selection; quote shell patterns, such as `type 'Json*' --package System.Text.Json`, `-S "Async*"`, or `-D "SourceLink*"`. +- `type` uses `-t` for type filters; `member` uses `-m` for member filters. Dotted member syntax works: `-m JsonSerializer.Deserialize`. +- Member `Signature` values are single-line C# declarations and may include high-signal attributes such as `[Obsolete]`. +- Diff ranges use `..`: `--package Foo@1.0.0..2.0.0`. Obsolete members are shown by default; use `--all` for non-public, hidden, and extra members. +- Unpinned packages use the latest stable by default; add `--preview` when prerelease APIs matter. ## API lookup workflow Use `find` when you do not know the package, library, or exact namespace. ```bash -dnx dotnet-inspect -y -- find JsonSerializer --table -dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json +dnx dotnet-inspect -y -- find JsonSerializer +dnx dotnet-inspect -y -- type JsonSerializer --package System.Text.Json +dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -m Serialize --show-index +dnx dotnet-inspect -y -- depends Stream +dnx dotnet-inspect -y -- extensions HttpClient --reachable +dnx dotnet-inspect -y -- implements IJsonTypeInfoResolver --package System.Text.Json ``` -Carry resolved context forward. Bare names use the router: platform-looking names are tried as installed platform libraries first, then fall back to NuGet packages if platform resolution fails. Use explicit `--platform`, `--package`, or `--library` when the source matters; for multi-library packages, include the `--library` value shown by `find`. - -For common CoreLib APIs, aliases and simple type names work without a source flag: use `type string --shape`, `member string`, or `member string -m Normalize`. - -Use `type Type --package Foo --shape` for a compact type overview and overload counts. For a specific overload inventory, use `member Type --package Foo -m Name --show-index`; this renders the `Methods` overload rows with full signatures and stable `Name:N` selectors. A selected overload defaults to `Signature`; use bare `-S` for `Signature` plus `Decompiled Source`, or select `Original Source`, `IL`, or `IL (Annotated)` when you need that specific implementation evidence. +Default type output is a compact type shape with inheritance, interfaces, logical member groups, and overload counts. Narrow member-name views render overload rows with full signatures and stable `Name:N` selectors. Relationship scopes include installed platform libraries by default, `--package Foo`, curated `--aspnetcore`/`--extensions`, and `--project ./App.csproj`. The `extensions` command reports extension methods and C# extension properties. Add `--mermaid` to `depends` when a diagram is more useful than a table. ## Upgrade and compatibility workflow @@ -77,12 +91,11 @@ Start with `diff`, then inspect the affected API. ```bash dnx dotnet-inspect -y -- diff --package System.Text.Json@9.0.0..10.0.0 --breaking +dnx dotnet-inspect -y -- diff --package System.Text.Json@9.0.0..10.0.0 --additive dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json@10.0.0 ``` -Use `--breaking` for migration work, `--additive` for release-note work, and `-t TypeName` to narrow noisy diffs. Obsolete members are shown by default with an obsolete marker/message when available. - -For .NET platform APIs, compare individual framework libraries: +Use `--breaking` for migration work, `--additive` for release-note work, and `-t TypeName` to narrow noisy diffs. For .NET platform APIs, compare individual framework libraries: ```bash dnx dotnet-inspect -y -- diff --platform System.Runtime@9.0.0..10.0.0 --additive @@ -93,65 +106,28 @@ dnx dotnet-inspect -y -- diff --platform System.Runtime@9.0.0..10.0.0 --additive Use `source` for SourceLink URLs, source text, or token/IL-offset mapping. Use `member Type Member:N -S "Decompiled Source"` when you need a selected member's lowered C# body, `-S "Original Source"` for SourceLink-backed source text, or `-S IL` / `-S "IL (Annotated)"` for IL. ```bash -dnx dotnet-inspect -y -- source JsonSerializer --package System.Text.Json --table +dnx dotnet-inspect -y -- source JsonSerializer --package System.Text.Json dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json Serialize:1 -S "Decompiled Source" ``` -For crash/stack diagnostics that include a MethodDef token plus IL offset, `source --il-offset 0x06000001+0x5` can map the offset to source. This is a niche deep-debugging path; do not start there for normal API lookup. +A selected overload defaults to `Signature`; use bare `-S` for `Signature` plus `Decompiled Source`, or select `Original Source`, `IL`, or `IL (Annotated)` when you need specific implementation evidence. Fidelity expectations: `Original Source` is the SourceLink-backed original source when available. `Decompiled Source` is lowered C#, a best-effort readable reconstruction from IL that helps explain intent; it uses PDB debug information such as local names when available, but is not guaranteed to match original syntax or compiler transformations. Raw IL and annotated IL are the highest-fidelity displays for exact opcodes, offsets, branches, tokens, and member calls; use them to confirm behavior when precision matters. -## Package and library Signals workflow - -Use `Signals` for metadata and provenance observations. It reports observations, not a safety or trust verdict. Cost follows verbosity and explicit selection: `library X -S Signals` reports metadata plus the shared Signals section (acquiring a missing library PDB to resolve SourceLink); add `SourceLink Availability` and `SourceLink Missing Files` for the per-source-file reachability pass. The exhaustive content check is the opt-in `SourceLink Integrity` section. - -```bash -dnx dotnet-inspect -y -- library System.Text.Json -S Signals -dnx dotnet-inspect -y -- library System.Text.Json -S "Signals,SourceLink Availability,SourceLink Missing Files" -dnx dotnet-inspect -y -- library System.Text.Json -S "SourceLink Integrity" -dnx dotnet-inspect -y -- package System.Text.Json -S Signals -``` - -For .NET tool packages, inspect the tool DLL through the package context, for example `library dotnet-inspect.dll --package dotnet-inspect@ -S "SourceLink Integrity"`. Tool v2 pointer/RID packages resolve to their inspectable framework-dependent payload. - -Library Signals include assembly metadata such as SourceLink presence, SourceLink availability, determinism, trim/AOT markers, async kind (`Runtime`, `State machine`, `Mixed`, or `None`), updated memory-safety model, `RequiresUnsafe` member count, unsafe signatures, P/Invoke, and direct references. Package Signals use the same shape for package metadata/assets, dependencies, signature provenance, and NuGet registry observations. `library X -S Signals` resolves SourceLink by acquiring a missing PDB. The per-source-file reachability pass — SourceLink Availability and SourceLink Missing Files, which issue one HTTP HEAD per tracked source URL — is opt-in: select it explicitly with `-S "SourceLink Availability"`. It does not run in a plain `library X -v:d` flow because its cost scales with source-file count. To verify source *content*, select `library X -S "SourceLink Integrity"`: it downloads each tracked source file and compares its hash to the PDB checksum, exits non-zero on true content mismatch, and reports `CR/LF Mismatch` when checksums match after line-ending normalization. - -Package Signals include TFMs, manifest, readme/license, direct dependencies, package signature, local provenance, and registry-backed signals such as vulnerabilities, package age, dependency vulnerability/deprecation counts, and dependency age. Symbol/SourceLink package evidence names the PDB source (`embedded`, `in-package`, `.snupkg`, `msdl.microsoft.com`). Custom feeds (`--nuget-source`, `--add-source`, `--nugetconfig`) and local `.nupkg` files are supported. - -For package structure, use `package X -S Manifest` to see manifest version/package/tool rows, `package X -S "Library Files"` to list all files under `lib/` across TFMs, and `package X -S All` to include opt-in sections such as Signals. - -## Output and query workflow - -Discover sections, then select or project fields. Use `--tsv` for discovery when another tool or agent will consume the schema; the output is small, but the delimiter and stable keys prevent ambiguity. - -```bash -dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -D --tsv -dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -D "Method Groups" --tsv -dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -m Serialize -D Methods --tsv -dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -m Serialize -S Methods --columns "Name;Signature;Obsolete" -dnx dotnet-inspect -y -- library System.Text.Json -S "Async*" --count -dnx dotnet-inspect -y -- library System.Text.Json -S "Async*" --rows -n 10 -``` - -For target-based queries, `-D` reports the effective schema by default: only sections and columns that can render for that query. Add `--schema` for the static schema. Bare `-S` renders a curated high-density view (`Package Info`/`Library Files`, `Library Info` with counts, compact type/member summaries, narrowed member-name `Methods`, or selected-overload `Signature`/`Decompiled Source`). Minimal/default type views favor summaries, counts, and one row per logical item under `Method Groups`; narrowed member-name views use `Methods` overload rows. `-S`, `--columns`, and `--fields` accept comma-separated or semicolon-separated lists. In section output, `section (opt-in)` means the section never runs from normal verbosity or `-v:d`; select it explicitly with `-S` when needed. Focused library/member `-S Section` output keeps a compact context row before the selected section. `-S All` produces an exhaustive document: default section first, remaining sections alphabetically, no compact context row. +For crash/stack diagnostics that include a MethodDef token plus IL offset, `source --il-offset 0x06000001+0x5` can map the offset to source. This is a niche deep-debugging path; do not start there for normal API lookup. -`-n N` and shorthand values like `-6` normally limit output lines. Add `--rows` to reinterpret that head count as data rows per rendered Markdown table; this preserves headings/table headers and applies independently to each table. `--rows` requires `-n/--head` or numeric shorthand and cannot be combined with `--tail`. Prefer `--rows` over shell `head` when you need parseable Markdown tables. +## Package, library, and Signals workflow -## Relationship workflow +Use `package` for NuGet package structure and registry-backed signals. Use `library` for assembly metadata, APIs, PDB/SourceLink evidence, and direct references. ```bash -dnx dotnet-inspect -y -- depends Stream -dnx dotnet-inspect -y -- extensions HttpClient --reachable -dnx dotnet-inspect -y -- implements IJsonTypeInfoResolver --package System.Text.Json +dnx dotnet-inspect -y -- package System.Text.Json -S Signals +dnx dotnet-inspect -y -- package System.Text.Json -S "Library Files" +dnx dotnet-inspect -y -- library System.Text.Json -S Signals ``` -Scopes include installed platform libraries by default, `--package Foo`, curated `--aspnetcore`/`--extensions`, and `--project ./App.csproj`. Add `--mermaid` to `depends` when a diagram is more useful than a table. +`Signals` reports observations, not a safety or trust verdict. Library Signals include SourceLink presence, SourceLink availability, determinism, trim/AOT markers, async kind (`Runtime`, `State machine`, `Mixed`, or `None`), memory-safety metadata, unsafe/PInvoke observations, and direct references. Package Signals include TFMs, manifest, readme/license, dependencies, package signature, local provenance, vulnerabilities, package age, dependency vulnerability/deprecation counts, and dependency age. -## Syntax guardrails +`library X -S Signals` resolves SourceLink by acquiring a missing PDB. Per-source-file reachability is opt-in: add `-S "SourceLink Availability"` and `-S "SourceLink Missing Files"` for HTTP HEAD checks, or `-S "SourceLink Integrity"` to download source files and compare checksums. For .NET tool packages, inspect the tool DLL through the package context, for example `library dotnet-inspect.dll --package dotnet-inspect@ -S "SourceLink Integrity"`. Tool v2 pointer/RID packages resolve to their inspectable framework-dependent payload. -- Quote generic type names: `'Option'`, `'INumber'`. -- Use `` rather than `<>` for generic type queries. -- `type` uses `-t` for type filters; `member` uses `-m` for member filters. -- Dotted member syntax works: `-m JsonSerializer.Deserialize`. -- Diff ranges use `..`: `--package Foo@1.0.0..2.0.0`. -- In API/member queries, use `--all` for non-public, hidden, and extra members; obsolete members are already shown by default. +For BCL/runtime-pack assemblies that are misleading as standalone packages, prefer `library --platform Lib --version ` or a direct DLL path. diff --git a/.agents/skills/repo-conventions/references/cli-reference.md b/.agents/skills/repo-conventions/references/cli-reference.md index 4a62e65..639cda6 100644 --- a/.agents/skills/repo-conventions/references/cli-reference.md +++ b/.agents/skills/repo-conventions/references/cli-reference.md @@ -24,7 +24,7 @@ dnx repo-conventions validate [options] | `--draft` / `--no-draft` | Override configured draft behavior. These options cannot be used together. | | `--auto-merge` / `--no-auto-merge` | Override configured auto-merge behavior. These options cannot be used together. | | `--merge-method ` | Preferred auto-merge method. Must be `merge`, `squash`, or `rebase`. | -| `--git-no-verify` | Pass `--no-verify` to git commit and git push commands run by RepoConventions. | +| `--git-no-verify` | Pass `--no-verify` to git commit and git push commands run by RepoConventions, and expose `git.noVerify` in the JSON input to convention scripts so they can bypass the same hooks when they create their own commits. | ## `add` diff --git a/.agents/skills/repo-conventions/references/convention-authoring.md b/.agents/skills/repo-conventions/references/convention-authoring.md index 857aaeb..f0d57bc 100644 --- a/.agents/skills/repo-conventions/references/convention-authoring.md +++ b/.agents/skills/repo-conventions/references/convention-authoring.md @@ -152,7 +152,8 @@ Execution contract: - The current working directory is the target Git repository root, not the convention directory. - The first argument is the path to a JSON input file. - Use `$args[0]` to access the input path so future arguments do not break the script. -- The JSON input file contains a single `settings` property. +- The JSON input file contains a `settings` property and a `git` property. +- `git.noVerify` is a boolean that reflects the `--git-no-verify` option. When it is `true`, scripts that create their own commits or pushes must pass `--no-verify` so they bypass the same hooks RepoConventions bypasses. - RepoConventions captures stdout and stderr as UTF-8. Set `[Console]::OutputEncoding` before invoking native tools so their output is emitted as UTF-8 too. Standard header for `convention.ps1`: @@ -175,6 +176,17 @@ $conventionInput = Get-Content -Raw $args[0] | ConvertFrom-Json $settings = $conventionInput.settings ``` +When the script creates its own commits, honor `git.noVerify` so it matches the rest of the run: + +```pwsh +$conventionInput = Get-Content -Raw $args[0] | ConvertFrom-Json +$commitArguments = @('commit', '-m', 'Use LF') +if ($conventionInput.git.noVerify) { + $commitArguments += '--no-verify' +} +git @commitArguments +``` + Authoring expectations: - Read the JSON input only when settings are needed. @@ -185,7 +197,7 @@ Authoring expectations: - Prefer deterministic file writes, stable ordering, and stable line endings. - When the script has nothing to do, usually emit no output; already-compliant repositories are the most common case. - Emit focused output that explains what changed or why the convention cannot continue. -- If the convention naturally consists of multiple meaningful steps, the script may create its own commits with informative messages. +- If the convention naturally consists of multiple meaningful steps, the script may create its own commits with informative messages. When it does, pass `--no-verify` to those commits whenever `git.noVerify` is `true`. ## Commit and Failure Behavior @@ -215,6 +227,7 @@ Keep repository-level consumer docs focused on using RepoConventions. - Test both an already-compliant repository and a non-compliant repository. - Re-run after the first successful application to confirm idempotency. - If the convention has settings, exercise at least one non-default settings case. +- If the convention executes any git commits or pushes, test compliance with `git.noVerify` input against failing git hooks. - Test failure paths when settings are required or external tools may be unavailable. ## Agent Workflow diff --git a/apm.lock.yaml b/apm.lock.yaml index 8fb265c..a84f2d1 100644 --- a/apm.lock.yaml +++ b/apm.lock.yaml @@ -1,22 +1,22 @@ lockfile_version: '1' -generated_at: '2026-06-09T15:59:59.419943+00:00' +generated_at: '2026-06-10T16:37:19.151326+00:00' apm_version: 0.14.0 dependencies: - repo_url: Faithlife/RepoConventions host: github.com - resolved_commit: 25ed7c7afe10554ee98877af4c7c9ee05678430a + resolved_commit: 7f58c0678f9efefb2453908032e0ee28a42d7097 virtual_path: skills/repo-conventions is_virtual: true package_type: claude_skill deployed_files: - .agents/skills/repo-conventions - content_hash: sha256:b4c71ea6793ab8bbc481cf7fa25cf86c7f5c36caefcfbe68053860082191af57 + content_hash: sha256:6e4dc45d96d7adc8f1d3e3300d9ee90eef9c2d0231ea83ad86fed64fca105034 - repo_url: richlander/dotnet-inspect host: github.com - resolved_commit: 789eb356c9a5193690ce9c4a3e579f62e18582f6 + resolved_commit: 4e5803dcb12c98f45f1818115406bf911aa23006 virtual_path: skills/dotnet-inspect is_virtual: true package_type: claude_skill deployed_files: - .agents/skills/dotnet-inspect - content_hash: sha256:7322e50a7c1da37d8a8cb98281a35c9336d1cf29ab95bc4f9cbbf3893bc69509 + content_hash: sha256:b3710897b28dce3bb6bbb1bb153bd64e9ff1ee67ee946feeabfdb9e59a77f77a diff --git a/dotnet-tools.json b/dotnet-tools.json index fa22cd7..27e59e3 100644 --- a/dotnet-tools.json +++ b/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "facilityconformance": { - "version": "2.38.0", + "version": "2.38.2", "commands": [ "FacilityConformance" ],