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.

Informações da origem

Repositório
EvotecIT/PSPublishModule
Última atividade na origem
11 de julho de 2026 às 06:33
Idioma detectado do SKILL.md
inglês
Estrelas
48
Forks
16

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
3 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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.
Ver no GitHub