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)
- •Confirm repository scope and branch hygiene.
- •Prefer feature branch/worktree.
- •Validate
project.build.json.- •Discovery filters (
IncludeProjects,ExcludeProjects, expected map include mode). - •Version expectations and version sources.
- •Discovery filters (
- •Generate plan before publishing.
- •Use
PlanOnlyor cmdlet-Planfirst.
- •Use
- •Execute build/pack/sign path.
- •Ensure staging/output paths are deterministic.
- •Keep
Build-Project.ps1minimal (param pass-through +Invoke-ProjectBuildcall). - •Do not keep legacy wrapper scripts (
Build-AllPackages.ps1,Publish-*.ps1,Update-Version.ps1) unless explicitly required.
- •Publish NuGet with explicit fail-fast and duplicate policy.
- •Publish GitHub release with explicit tag policy.
- •Choose
SingleorPerProjectintentionally. - •Set
GitHubPrimaryProjectfor single-mode version source.
- •Choose
- •Handle tag conflicts intentionally.
- •Prefer configurable conflict policy instead of ad-hoc retries.
- •Verify final release state.
- •Confirm release/tag and attached asset set match plan.
- •Update docs/schema/help for any new config fields.
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.ps1andBuild/project.build.json. - •Remove obsolete wrapper scripts once migration is complete.
- •Keep
- •
Keep
Build-Project.ps1simple:- •avoid custom coercion/helper blocks when normal nullable bool parameters and splatting are enough.
- •
If projects have mixed versions in
Singlerelease mode:- •set
GitHubPrimaryProjector use date/timestamp tags by template.
- •set
- •
Prefer template-based tags over hardcoded tags:
- •tokens include
{Project},{Version},{PrimaryProject},{PrimaryVersion},{Repo},{Date},{UtcDate},{DateTime},{UtcDateTime},{Timestamp},{UtcTimestamp}.
- •tokens include
- •
Use explicit conflict policy for existing tags:
- •
Reuse,Fail, orAppendUtcTimestamp.
- •
- •
In plan/what-if mode, avoid hard failures that require produced artefacts on disk.
Reference Files (Read As Needed)
- •
references/checklist.mdfor quick release-mode and tag-policy decisions. - •
Docs/PSPublishModule.ProjectBuild.mdfor JSON behavior. - •
schemas/project.build.schema.jsonfor allowed fields and enums. - •
Module/Docs/Invoke-ProjectBuild.mdfor cmdlet behavior.