diff --git a/.agents/agents/sdk-consumer-setup.md b/.agents/agents/sdk-consumer-setup.md deleted file mode 100644 index c3cc84f..0000000 --- a/.agents/agents/sdk-consumer-setup.md +++ /dev/null @@ -1,38 +0,0 @@ -# sdk-consumer-setup (generic agent spec) - -## Goal - -Help a consuming repository adopt or troubleshoot `Purview.BuildSdk` correctly, without breaking existing build behaviour. - -## Workflow - -1. Confirm the SDK is imported in `Directory.Build.props`/`Directory.Build.targets` via - `` and the matching `Sdk.targets` import. -2. Check pre-import bootstrap properties are set **before** the `Sdk.props` import when they must affect - evaluation: `NamespacePrefix`, `UsePackageJsonVersion`, `RootPackageJson`. -3. If version resolution looks wrong, verify `package.json` discovery: explicit `RootPackageJson`, then CI - variables, `.git` root, or a nearby `package.json`. `UsePackageJsonVersion=Strict` fails fast instead of - silently skipping resolution. -4. If the bundled `.agents/**` content isn't appearing in the repo root, check `EnableAgentFolderInPackage` - (default `true`) and `AgentPackDestinationFolder` (default `.agents`) - the copy runs before build via - `EnsureAgentFolderInPackageTarget`. -5. For test-framework or project-shape questions, confirm the project follows repo naming and placement - conventions the SDK expects, rather than introducing bespoke structure. -6. For naming, layout, and test readability questions, start from the engineering principles: naming and - placement are configuration, short project names are preferred, the detected test type becomes the baseline - category, and subject-based tests should be named for the subject they own. -7. Re-run `dotnet build` (or the repo's canonical build command) after each configuration change to confirm - the fix. - -## Constraints - -- Prefer minimal, targeted property changes over broad `Directory.Build.props` rewrites. -- Do not disable `PurviewAutoSdkPack` or `EnableAgentFolderInPackage` unless the consumer explicitly asks to - opt out. -- Do not duplicate SDK-managed properties in individual project files unless the scenario is intentionally - project-specific. - -## Related skill - -See `../skills/sdk-configuration-reference/SKILL.md` for the full property reference. -See `../skills/sdk-engineering-principles/SKILL.md` for the higher-level repository conventions. diff --git a/.agents/agents/sdk-repository-rationaliser.md b/.agents/agents/sdk-repository-rationaliser.md deleted file mode 100644 index d41060b..0000000 --- a/.agents/agents/sdk-repository-rationaliser.md +++ /dev/null @@ -1,38 +0,0 @@ -# sdk-repository-rationaliser (generic agent spec) - -## Goal - -Help a repository move toward `Purview.BuildSdk` conventions without unnecessary churn. - -## Workflow - -1. Start by reading the repo's `Directory.Build.props`, `Directory.Build.targets`, solution entry point, - and current project layout. -2. Identify the current `NamespacePrefix`, project naming scheme, and test project suffixes in use. -3. Compare the repo's structure against the engineering principles: - - short project names - - source/test split where practical - - exact shared/shared-testing names when SDK behavior is expected - - readable, scalable test naming -4. Separate findings into three groups: - - already aligned - - misaligned but harmless - - misaligned and blocking SDK automatic behavior -5. Prefer the smallest sequence of changes that improves predictability without forcing broad renames. -6. When recommending test changes, preserve readable behavior-oriented suites while tightening subject-based - suites toward `{SubjectName}Tests` and `{SubjectOrMemberUnderTest}_{Scenario}_{Expectation}`. -7. Confirm whether specialized dependencies such as `TUnit.Aspire` or `Testcontainers` are genuinely needed - rather than treating them as universal defaults. - -## Constraints - -- Do not assume every older repo should be renamed wholesale. -- Preserve meaningful established structure unless it interferes with SDK inference. -- Prefer explaining the effect on `RootNamespace`, `AssemblyName`, `PackageId`, `TestingType`, and - `TargetProjectName` instead of arguing from taste. - -## Related skills - -- `../skills/sdk-engineering-principles/SKILL.md` -- `../skills/project-placement-defaults/SKILL.md` -- `../skills/sdk-project-behavior-and-detection/SKILL.md` diff --git a/.agents/prompts/sdk-diagnose-agent-folder-copy.md b/.agents/prompts/sdk-diagnose-agent-folder-copy.md deleted file mode 100644 index e234df9..0000000 --- a/.agents/prompts/sdk-diagnose-agent-folder-copy.md +++ /dev/null @@ -1,37 +0,0 @@ -# sdk-diagnose-agent-folder-copy (generic prompt spec) - -Diagnose why the bundled `.agents/**` folder from `Purview.BuildSdk` did not appear at the expected -destination in a consuming repository. - -## Required behaviour - -1. Confirm the NuGet package actually contains `.agents/**` content (inspect the `.nupkg` if available). -2. Confirm the consuming project is packable/buildable and imports the SDK via - `Sdk.props`/`Sdk.targets`, since the copy runs in `EnsureAgentFolderInPackageTarget` before build. -3. Check `EnableAgentFolderInPackage` is not set to `false` anywhere in the build (project file, - `Directory.Build.props`, or command-line `-p:` overrides). -4. Confirm the destination folder: default is `.agents` at the repo root, overridable per-build with - `-p:AgentPackDestinationFolder=`, and the source defaults to the package-level `.agents` - folder (override with `PurviewAgentFolderSourcePath`). -5. Verify repo-root discovery succeeded: explicit `RepoRoot`, then a nearby `AGENTS.md`, then source-control - root metadata. -6. If the destination looks stale or incomplete, inspect the change-detection manifest - (`/.purview/agent-sync.cache`). It lists the files the SDK believes it already mirrored; a - matching entry with a present destination file means the sync was skipped as up to date. Delete the - manifest (or the affected destination file) to force a fresh copy. -7. Retry notices are demoted to low-importance messages, so a healthy build shows no `MSB3026` warnings. - A copy that still fails after every retry is reported as an error naming the source, destination and - OS error - search the build log for `The Purview SDK could not copy`. Temporarily set - `PurviewAgentFolderCopyRetries` / `PurviewAgentFolderCopyRetryDelayMilliseconds` to retry longer, and - `PurviewSuppressCopyRetryWarnings=false` to see every retry attempt. -8. Re-run the build and confirm the destination folder now contains the copied files (including the - generated `.gitignore` for skill/prompt/agent subfolders). - -## Suggested output - -- A short root-cause explanation (missing import, disabled flag, wrong destination override, repo-root - discovery miss, or a destination held open by another process). -- The exact command used to reproduce/verify the fix (for example - `dotnet build -p:AgentPackDestinationFolder=`). -- Confirmation that the expected files exist at the resolved destination path, plus whether the - manifest skipped the sync (in which case the content was already up to date). diff --git a/.agents/prompts/sdk-review-repository-shape.md b/.agents/prompts/sdk-review-repository-shape.md deleted file mode 100644 index eb089c9..0000000 --- a/.agents/prompts/sdk-review-repository-shape.md +++ /dev/null @@ -1,33 +0,0 @@ -# sdk-review-repository-shape (generic prompt spec) - -Review a repository that uses `Purview.BuildSdk` for naming, placement, and test-structure alignment. - -## Required behaviour - -1. Inspect the repository's `Directory.Build.props`, `Directory.Build.targets`, solution entry point, and - project layout before making assumptions. -2. Identify whether the repository follows the SDK-friendly structure: - - source projects under `src/` - - test projects under `tests/` - - `.csproj` filenames matching directory names - - short project names with `NamespacePrefix` carrying the repo identity -3. Check whether test project names use recognised `*Tests` suffixes and whether shared/shared-testing - projects use exact SDK-recognised names. -4. Explain the consequences of deviations in terms of automatic `RootNamespace`, `AssemblyName`, - `PackageId`, `TargetProjectName`, and automatic project references. -5. Review test readability conventions: - - subject-based `{SubjectName}Tests` - - subject-based `{SubjectOrMemberUnderTest}_{Scenario}_{Expectation}` method names - - non-subject-based suites named clearly for their broader role - - appropriate use of TUnit categories and display names -6. Distinguish between: - - acceptable existing variance worth preserving - - structural debt that blocks the SDK's automatic behavior - - incremental rationalisation opportunities - -## Suggested output - -- A concise summary of whether the repo broadly fits the SDK conventions. -- A list of concrete mismatches, ordered by impact. -- A list of low-risk rationalisation steps for naming, placement, identity, or test readability. -- Explicit note of which behaviors are already automatic defaults and which require manual configuration. diff --git a/.agents/skills/project-placement-defaults/.gitignore b/.agents/skills/project-placement-defaults/.gitignore deleted file mode 100644 index fcb69e3..0000000 --- a/.agents/skills/project-placement-defaults/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Ignore all files -* - -# Don't ignore directories, so Git can traverse them -!*/ - -# This file is mirrored from a NuGet package, so ignore it too -/.gitignore \ No newline at end of file diff --git a/.agents/skills/sdk-configuration-reference/.gitignore b/.agents/skills/sdk-configuration-reference/.gitignore deleted file mode 100644 index fcb69e3..0000000 --- a/.agents/skills/sdk-configuration-reference/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Ignore all files -* - -# Don't ignore directories, so Git can traverse them -!*/ - -# This file is mirrored from a NuGet package, so ignore it too -/.gitignore \ No newline at end of file diff --git a/.agents/skills/sdk-engineering-principles/.gitignore b/.agents/skills/sdk-engineering-principles/.gitignore deleted file mode 100644 index fcb69e3..0000000 --- a/.agents/skills/sdk-engineering-principles/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Ignore all files -* - -# Don't ignore directories, so Git can traverse them -!*/ - -# This file is mirrored from a NuGet package, so ignore it too -/.gitignore \ No newline at end of file diff --git a/.agents/skills/sdk-project-behavior-and-detection/.gitignore b/.agents/skills/sdk-project-behavior-and-detection/.gitignore deleted file mode 100644 index fcb69e3..0000000 --- a/.agents/skills/sdk-project-behavior-and-detection/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Ignore all files -* - -# Don't ignore directories, so Git can traverse them -!*/ - -# This file is mirrored from a NuGet package, so ignore it too -/.gitignore \ No newline at end of file diff --git a/.agents/skills/telemetry-sourcegenerator-design/.gitignore b/.agents/skills/telemetry-sourcegenerator-design/.gitignore deleted file mode 100644 index fcb69e3..0000000 --- a/.agents/skills/telemetry-sourcegenerator-design/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Ignore all files -* - -# Don't ignore directories, so Git can traverse them -!*/ - -# This file is mirrored from a NuGet package, so ignore it too -/.gitignore \ No newline at end of file diff --git a/.agents/skills/telemetry-sourcegenerator-migration/.gitignore b/.agents/skills/telemetry-sourcegenerator-migration/.gitignore deleted file mode 100644 index fcb69e3..0000000 --- a/.agents/skills/telemetry-sourcegenerator-migration/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Ignore all files -* - -# Don't ignore directories, so Git can traverse them -!*/ - -# This file is mirrored from a NuGet package, so ignore it too -/.gitignore \ No newline at end of file diff --git a/.agents/skills/telemetry-sourcegenerator-quickstart/.gitignore b/.agents/skills/telemetry-sourcegenerator-quickstart/.gitignore deleted file mode 100644 index fcb69e3..0000000 --- a/.agents/skills/telemetry-sourcegenerator-quickstart/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Ignore all files -* - -# Don't ignore directories, so Git can traverse them -!*/ - -# This file is mirrored from a NuGet package, so ignore it too -/.gitignore \ No newline at end of file diff --git a/global.json b/global.json index 79f389d..10d45ff 100644 --- a/global.json +++ b/global.json @@ -4,7 +4,7 @@ "allowPrerelease": true }, "msbuild-sdks": { - "Purview.BuildSdk": "1.0.3" + "Purview.BuildSdk": "1.0.4" }, "test": { "runner": "Microsoft.Testing.Platform"