Skip to main content

powerforge-library-builder

Build, version, pack, sign, and publish multi-project .NET libraries using Invoke-ProjectBuild and project.build.json. Use for ExpectedVersionMap/X-pattern resolution, NuGet publishing, GitHub release mode/tag strategy, and release troubleshooting.

Quellinformationen

Repository
EvotecIT/PSPublishModule
Letzte Quellaktivität
11. Juli 2026 um 06:33
Erkannte Sprache von SKILL.md
Englisch
Sterne
48
Forks
16

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
3 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
powerforge-library-builder
description
Build, version, pack, sign, and publish multi-project .NET libraries using Invoke-ProjectBuild and project.build.json. Use for ExpectedVersionMap/X-pattern resolution, NuGet publishing, GitHub release mode/tag strategy, and release troubleshooting.
# PowerForge Library Builder Use this skill for repository/package pipelines (`Invoke-ProjectBuild`), including NuGet + GitHub release workflows. Prefer one entrypoint script: `Build/Build-Project.ps1`. ## Golden Path (Do This In Order) 1. Confirm repository scope and branch hygiene. - Prefer feature branch/worktree. 2. Validate `project.build.json`. - Discovery filters (`IncludeProjects`, `ExcludeProjects`, expected map include mode). - Version expectations and version sources. 3. Generate plan before publishing. - Use `PlanOnly` or cmdlet `-Plan` first. 4. Execute build/pack/sign path. - Ensure staging/output paths are deterministic. - Treat `CleanStaging` as artifact cleanup only; release compilation freshness is enforced by PowerForge. - Require primary managed package assemblies to match the fresh release build before signing or publishing; do not treat native runtime assets or metadata-only packages as managed assembly payloads. - Keep `Build-Project.ps1` minimal (param pass-through + `Invoke-ProjectBuild` call). - Do not keep legacy wrapper scripts (`Build-AllPackages.ps1`, `Publish-*.ps1`, `Update-Version.ps1`) unless explicitly required. 5. Publish NuGet with explicit fail-fast and duplicate policy. 6. Publish GitHub release with explicit tag policy. - Choose `Single` or `PerProject` intentionally. - Set `GitHubPrimaryProject` for single-mode version source. 7. Handle tag conflicts intentionally. - Prefer configurable conflict policy instead of ad-hoc retries. 8. Verify final release state. - Confirm release/tag and attached asset set match plan. - Inspect the published package content when the release adds or changes public APIs; version visibility and a valid signature alone do not prove the payload is current. - If an immutable feed already contains a stale package, publish a corrected higher version and keep consumers off the bad version. 9. Update docs/schema/help for any new config fields. 10. Keep engine boundaries explicit. - Use `Invoke-ProjectBuild` for package/release pipelines. - Use DotNet publish engine (`Invoke-DotNetPublish`, `New-ConfigurationDotNet*`) for service/app publish packaging. ## High-Value Commands ```powershell # Plan-only Invoke-ProjectBuild -ConfigFilePath .\Build\project.build.json -Plan # Full run Invoke-ProjectBuild -ConfigFilePath .\Build\project.build.json # Validate core tests after engine changes dotnet test .\PowerForge.Tests\PowerForge.Tests.csproj -c Release ``` ## Decision Rules - Standard script surface for repos: - Keep `Build/Build-Project.ps1` and `Build/project.build.json`. - Remove obsolete wrapper scripts once migration is complete. - Keep `Build-Project.ps1` simple: - avoid custom coercion/helper blocks when normal nullable bool parameters and splatting are enough. - If projects have mixed versions in `Single` release mode: - set `GitHubPrimaryProject` or use date/timestamp tags by template. - Prefer template-based tags over hardcoded tags: - tokens include `{Project}`, `{Version}`, `{PrimaryProject}`, `{PrimaryVersion}`, `{Repo}`, `{Date}`, `{UtcDate}`, `{DateTime}`, `{UtcDateTime}`, `{Timestamp}`, `{UtcTimestamp}`. - Use explicit conflict policy for existing tags: - `Reuse`, `Fail`, or `AppendUtcTimestamp`. - In plan/what-if mode, avoid hard failures that require produced artefacts on disk. - Never use `CleanStaging` as evidence that project `bin`/`obj` outputs were rebuilt. - Do not publish when PowerForge reports a package payload provenance mismatch. ## Reference Files (Read As Needed) - `references/checklist.md` for quick release-mode and tag-policy decisions. - `Docs/PSPublishModule.ProjectBuild.md` for JSON behavior. - `Docs/PSPublishModule.DotNetPublish.Quickstart.md` when release work also needs app/service publish flows. - `schemas/project.build.schema.json` for allowed fields and enums. - `Module/Docs/Invoke-ProjectBuild.md` for cmdlet behavior.
Auf GitHub ansehen