Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,38 @@
"version": "0.2",
"language": "en",
"words": [
"Anson",
"Blockquotes",
"buildmark",
"BuildMark",
"buildnotes",
"camelcase",
"Checkmarx",
"codeql",
"CodeQL",
"copilot",
"creatordate",
"cspell",
"csproj",
"dbproj",
"dcterms",
"Dema",
"demaconsulting",
"DEMACONSULTINGNUGETKEY",
"Dependabot",
"dependabot",
"doctitle",
"dotnet",
"editorconfig",
"filepart",
"fsproj",
"Gidget",
"gitattributes",
"ibiqlik",
"LINQ",
"maintainer",
"markdownlint",
"mermaid",
"mstest",
"myterm",
"ncipollo",
Expand All @@ -28,14 +42,29 @@
"oneline",
"opencover",
"pandoc",
"pagetitle",
"Pylint",
"Qube",
"reqstream",
"SarifMark",
"SBOM",
"sbom",
"Semgrep",
"semver",
"slnx",
"snupkg",
"sonarmark",
"SonarMark",
"SonarQube",
"spdx",
"streetsidesoftware",
"TMPL",
"tracematrix",
"triaging",
"Trivy",
"trx",
"vbproj",
"vcxproj",
"versionmark",
"Weasyprint",
"yamllint"
Expand Down
3 changes: 3 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ Before submitting this pull request, ensure you have completed the following:

- [ ] Code builds successfully: `dotnet build --configuration Release`
- [ ] All tests pass: `dotnet test --configuration Release`
- [ ] Self-validation tests pass:
`dotnet run --project src/DemaConsulting.BuildMark --configuration Release --framework net10.0`
`--no-build -- --validate`
- [ ] Code produces zero warnings

### Code Quality
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,7 @@ jobs:
contents: read

steps:
# === CHECKOUT AND INSTALL DEPENDENCIES ===
- name: Checkout
uses: actions/checkout@v6

Expand Down Expand Up @@ -379,6 +380,7 @@ jobs:
pattern: 'version-capture-*'
continue-on-error: true

# === GENERATE MARKDOWN REPORTS ===
- name: Generate Requirements Report and Trace Matrix
run: >
dotnet reqstream
Expand Down Expand Up @@ -462,6 +464,7 @@ jobs:
echo "=== Build Notes Report ==="
cat docs/buildnotes.md

# === GENERATE HTML AND PDF DOCUMENTS ===
- name: Generate Build Notes HTML with Pandoc
shell: bash
run: >
Expand All @@ -475,6 +478,7 @@ jobs:
- name: Convert Build Notes HTML to PDF with Weasyprint
run: >
dotnet weasyprint
--pdf-variant pdf/a-3u
docs/buildnotes/buildnotes.html
"docs/BuildMark Build Notes.pdf"

Expand All @@ -491,6 +495,7 @@ jobs:
- name: Convert User Guide HTML to PDF with Weasyprint
run: >
dotnet weasyprint
--pdf-variant pdf/a-3u
docs/guide/guide.html
"docs/BuildMark User Guide.pdf"

Expand All @@ -507,6 +512,7 @@ jobs:
- name: Generate Requirements PDF with Weasyprint
run: >
dotnet weasyprint
--pdf-variant pdf/a-3u
docs/requirements/requirements.html
"docs/BuildMark Requirements.pdf"

Expand All @@ -523,6 +529,7 @@ jobs:
- name: Generate Trace Matrix PDF with Weasyprint
run: >
dotnet weasyprint
--pdf-variant pdf/a-3u
docs/tracematrix/tracematrix.html
"docs/BuildMark Trace Matrix.pdf"

Expand All @@ -539,6 +546,7 @@ jobs:
- name: Convert Requirements Justifications HTML to PDF with Weasyprint
run: >
dotnet weasyprint
--pdf-variant pdf/a-3u
docs/justifications/justifications.html
"docs/BuildMark Requirements Justifications.pdf"

Expand All @@ -555,9 +563,11 @@ jobs:
- name: Convert Code Quality HTML to PDF with Weasyprint
run: >
dotnet weasyprint
--pdf-variant pdf/a-3u
docs/quality/quality.html
"docs/BuildMark Code Quality.pdf"

# === UPLOAD ARTIFACTS ===
- name: Upload Document Artifacts
uses: actions/upload-artifact@v7
with:
Expand Down
45 changes: 37 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,37 @@
.vs
*.bak
*.user
*.suo
*.userosscache
*.sln.docstates
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Xx]64/
[Xx]86/
[Ww]in32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
bin/
obj/
TestResults/

# ReSharper
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JetBrains Rider
.idea/
*.sln.iml

# NuGet packages
*.nupkg
*.snupkg
**/packages/*

# Code coverage reports
coverage/
Expand All @@ -13,6 +40,8 @@ coverage/
*.opencover.xml

# Test results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
*.trx
test-results/
*.log
Expand All @@ -25,21 +54,21 @@ test-results/
node_modules/
package-lock.json

# Python
__pycache__/
*.py[cod]

# Generated documentation
docs/*.pdf
docs/guide/*.html
docs/**/*.html
docs/**/*.pdf
!docs/template/**
docs/requirements/requirements.md
docs/requirements/*.html
docs/tracematrix/tracematrix.md
docs/tracematrix/*.html
docs/justifications/justifications.md
docs/justifications/*.html
docs/quality/sonar-quality.md
docs/quality/codeql-quality.md
docs/quality/*.html
docs/buildnotes.md
docs/buildnotes/versions.md
docs/buildnotes/*.html

# VersionMark captures (generated during CI/CD)
versionmark-*.json
Expand Down
102 changes: 102 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "dotnet build --configuration Release",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "shared"
},
"problemMatcher": "$msCompile"
},
{
"label": "validate",
"type": "shell",
"command": "dotnet run --project src/DemaConsulting.BuildMark --configuration Release --framework net10.0 --no-build -- --validate",
"group": {
"kind": "test",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "build and validate",
"dependsOn": ["build", "validate"],
"dependsOrder": "sequence",
"group": "build",
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "format",
"type": "shell",
"command": "dotnet format",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "lint markdown",
"type": "shell",
"command": "npx markdownlint-cli2 \"**/*.md\"",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "spell check",
"type": "shell",
"command": "npx cspell \"**/*.{md,cs}\"",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "lint yaml",
"type": "shell",
"command": "yamllint .",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "lint all",
"dependsOn": ["format", "lint markdown", "spell check", "lint yaml"],
"dependsOrder": "parallel",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "verify requirements",
"type": "shell",
"command": "dotnet reqstream --requirements requirements.yaml --tests \"test-results/**/*.trx\" --enforce",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "shared"
}
}
]
}
16 changes: 13 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ Project-specific guidance for agents working on BuildMark - a .NET CLI tool for

## Tech Stack

- C# 12, .NET 8.0/9.0/10.0, MSTest, dotnet CLI, NuGet
- C# (latest), .NET 8.0/9.0/10.0, MSTest, dotnet CLI, NuGet

## Key Files

- **`requirements.yaml`** - All requirements with test linkage (enforced via `dotnet reqstream --enforce`)
- **`.editorconfig`** - Code style (file-scoped namespaces, 4-space indent, UTF-8+BOM, LF endings)
- **`.cspell.json`, `.markdownlint.json`, `.yamllint.yaml`** - Linting configs
- **`.editorconfig`** - Code style (file-scoped namespaces, 4-space indent, UTF-8, LF endings)
- **`.cspell.json`, `.markdownlint-cli2.jsonc`, `.yamllint.yaml`** - Linting configs

## Requirements

Expand Down Expand Up @@ -107,3 +107,13 @@ When agents need to write report files to communicate with each other or the use
- Excluded from git (via .gitignore)
- Excluded from markdown linting
- Excluded from spell checking

## Markdown Link Style

- **AI agent markdown files** (`.github/agents/*.md`): Use inline links `[text](url)` so URLs are visible in agent context
- **README.md**: Use absolute URLs (shipped in NuGet package)
- **All other markdown files**: Use reference-style links `[text][ref]` with `[ref]: url` at document end

## Notable Absent Files

- **CHANGELOG.md**: Not present - changes are captured in the auto-generated build notes
Loading
Loading