@oddessentials/repo-standards 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/standards.go.azure-devops.json +534 -0
- package/dist/config/standards.go.github-actions.json +534 -0
- package/dist/config/standards.go.json +595 -0
- package/dist/config/standards.json +585 -20
- package/dist/config/standards.rust.azure-devops.json +539 -0
- package/dist/config/standards.rust.github-actions.json +539 -0
- package/dist/config/standards.rust.json +600 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
{
|
|
2
|
+
"checklist": {
|
|
3
|
+
"core": [
|
|
4
|
+
{
|
|
5
|
+
"ciHints": {
|
|
6
|
+
"azure-devops": {
|
|
7
|
+
"stage": "quality"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"description": "Maintain proper .gitignore and .dockerignore files to prevent committing secrets, build artifacts, or unnecessary files.",
|
|
11
|
+
"id": "gitignore-and-dockerignore",
|
|
12
|
+
"label": "Git and Docker Ignore Files",
|
|
13
|
+
"stack": {
|
|
14
|
+
"exampleConfigFiles": [
|
|
15
|
+
".gitignore",
|
|
16
|
+
".dockerignore"
|
|
17
|
+
],
|
|
18
|
+
"notes": "Use the official github/gitignore Go template. Exclude vendor/ (if not vendoring), *.exe, *.test, *.out, and IDE-specific files. .dockerignore must exclude .git and local build output.",
|
|
19
|
+
"optionalFiles": [
|
|
20
|
+
".dockerignore"
|
|
21
|
+
],
|
|
22
|
+
"requiredFiles": [
|
|
23
|
+
".gitignore"
|
|
24
|
+
],
|
|
25
|
+
"verification": ".gitignore must exist; .dockerignore is recommended when containerizing or using Docker workflows."
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"ciHints": {
|
|
30
|
+
"azure-devops": {
|
|
31
|
+
"stage": "quality"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"description": "Run static code linting to enforce consistency and catch common issues early.",
|
|
35
|
+
"id": "linting",
|
|
36
|
+
"label": "Linting",
|
|
37
|
+
"stack": {
|
|
38
|
+
"exampleConfigFiles": [
|
|
39
|
+
".golangci.yml",
|
|
40
|
+
".golangci.yaml"
|
|
41
|
+
],
|
|
42
|
+
"exampleTools": [
|
|
43
|
+
"golangci-lint",
|
|
44
|
+
"staticcheck"
|
|
45
|
+
],
|
|
46
|
+
"notes": "Use golangci-lint as the primary linter aggregator. Configure enabled linters in .golangci.yml for consistent team-wide enforcement.",
|
|
47
|
+
"optionalFiles": [
|
|
48
|
+
".golangci.yml",
|
|
49
|
+
".golangci.yaml"
|
|
50
|
+
],
|
|
51
|
+
"requiredFiles": [
|
|
52
|
+
"go.mod"
|
|
53
|
+
],
|
|
54
|
+
"verification": ".golangci.yml or .golangci.yaml indicates linting is configured. Run 'golangci-lint run' to verify."
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"ciHints": {
|
|
59
|
+
"azure-devops": {
|
|
60
|
+
"stage": "test"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"description": "Provide a deterministic unit test framework with a single command to run all tests.",
|
|
64
|
+
"id": "unit-test-runner",
|
|
65
|
+
"label": "Unit Test Runner",
|
|
66
|
+
"stack": {
|
|
67
|
+
"exampleConfigFiles": [
|
|
68
|
+
"go.mod"
|
|
69
|
+
],
|
|
70
|
+
"exampleTools": [
|
|
71
|
+
"go test"
|
|
72
|
+
],
|
|
73
|
+
"notes": "Use 'go test ./...' to run all tests. Place test files alongside source files with _test.go suffix. Keep unit tests fast and isolated.",
|
|
74
|
+
"optionalFiles": [],
|
|
75
|
+
"requiredFiles": [
|
|
76
|
+
"go.mod"
|
|
77
|
+
],
|
|
78
|
+
"verification": "Run 'go test ./...' to verify the test suite is configured and passing."
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"ciHints": {
|
|
83
|
+
"azure-devops": {
|
|
84
|
+
"stage": "build"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"description": "Provide a Dockerfile and, if applicable, a docker-compose file for local dev and CI parity.",
|
|
88
|
+
"id": "containerization",
|
|
89
|
+
"label": "Containerization (Docker / Docker Compose)",
|
|
90
|
+
"stack": {
|
|
91
|
+
"exampleConfigFiles": [
|
|
92
|
+
"Dockerfile",
|
|
93
|
+
"docker-compose.yml"
|
|
94
|
+
],
|
|
95
|
+
"exampleTools": [],
|
|
96
|
+
"notes": "Use multi-stage builds: builder stage with golang:alpine, then copy binary to scratch or distroless for minimal runtime. Set CGO_ENABLED=0 for static binaries.",
|
|
97
|
+
"optionalFiles": [
|
|
98
|
+
"docker-compose.yml"
|
|
99
|
+
],
|
|
100
|
+
"requiredFiles": [
|
|
101
|
+
"Dockerfile"
|
|
102
|
+
],
|
|
103
|
+
"verification": "Dockerfile must be present; docker-compose.yml is optional and indicates orchestration usage."
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"ciHints": {
|
|
108
|
+
"azure-devops": {
|
|
109
|
+
"stage": "release"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history.",
|
|
113
|
+
"id": "semantic-versioning",
|
|
114
|
+
"label": "Semantic Versioning",
|
|
115
|
+
"stack": {
|
|
116
|
+
"exampleConfigFiles": [
|
|
117
|
+
".goreleaser.yml",
|
|
118
|
+
"CHANGELOG.md"
|
|
119
|
+
],
|
|
120
|
+
"exampleTools": [
|
|
121
|
+
"goreleaser",
|
|
122
|
+
"semantic-release"
|
|
123
|
+
],
|
|
124
|
+
"notes": "Go uses git tags for versioning (v1.2.3 format). Use goreleaser for automated releases with changelog generation. Tag versions consistently.",
|
|
125
|
+
"verification": "Check that git tags follow vMAJOR.MINOR.PATCH format and goreleaser or similar tool generates releases and changelogs."
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"ciHints": {
|
|
130
|
+
"azure-devops": {
|
|
131
|
+
"stage": "quality"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"description": "Enforce structured commit messages such as Conventional Commits.",
|
|
135
|
+
"id": "commit-linting",
|
|
136
|
+
"label": "Commit Linting",
|
|
137
|
+
"stack": {
|
|
138
|
+
"exampleConfigFiles": [
|
|
139
|
+
"commitlint.config.js",
|
|
140
|
+
".cz.toml"
|
|
141
|
+
],
|
|
142
|
+
"exampleTools": [
|
|
143
|
+
"commitlint",
|
|
144
|
+
"commitizen"
|
|
145
|
+
],
|
|
146
|
+
"notes": "Use commitlint with pre-commit hooks for enforcing Conventional Commits. Consistent with goreleaser changelog generation.",
|
|
147
|
+
"verification": "Test that non-conforming commit messages are rejected by the configured hooks or CI check."
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"ciHints": {
|
|
152
|
+
"azure-devops": {
|
|
153
|
+
"stage": "test"
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"description": "Generate readable unit test and coverage reports and enforce a minimum coverage threshold (around 80%) for new or changed code.",
|
|
157
|
+
"id": "unit-test-reporter",
|
|
158
|
+
"label": "Unit Test Reporter / Coverage",
|
|
159
|
+
"stack": {
|
|
160
|
+
"exampleConfigFiles": [
|
|
161
|
+
"go.mod"
|
|
162
|
+
],
|
|
163
|
+
"exampleTools": [
|
|
164
|
+
"go test -cover",
|
|
165
|
+
"go tool cover"
|
|
166
|
+
],
|
|
167
|
+
"notes": "Use 'go test -coverprofile=coverage.out ./...' for coverage. Generate HTML or integrate with codecov/coveralls.",
|
|
168
|
+
"verification": "Run 'go test -cover ./...' and verify coverage reports are produced and thresholds monitored."
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"ciHints": {
|
|
173
|
+
"azure-devops": {
|
|
174
|
+
"stage": "ci"
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"description": "Single CI pipeline that runs linting, formatting, type checking, tests, coverage, build, and containerization.",
|
|
178
|
+
"id": "ci-quality-gates",
|
|
179
|
+
"label": "CI Quality Gates",
|
|
180
|
+
"stack": {
|
|
181
|
+
"exampleConfigFiles": [
|
|
182
|
+
".github/workflows/*",
|
|
183
|
+
"azure-pipelines.yml"
|
|
184
|
+
],
|
|
185
|
+
"exampleTools": [],
|
|
186
|
+
"notes": "Run 'golangci-lint run', 'go test ./...', 'go build' as quality gates. Use govulncheck for security scanning.",
|
|
187
|
+
"verification": "Verify CI runs golangci-lint, go test, and go build before merging to main."
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"ciHints": {
|
|
192
|
+
"azure-devops": {
|
|
193
|
+
"stage": "quality"
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"description": "Automatic code formatting to maintain a consistent style across all contributors.",
|
|
197
|
+
"id": "code-formatter",
|
|
198
|
+
"label": "Code Formatter",
|
|
199
|
+
"stack": {
|
|
200
|
+
"exampleConfigFiles": [],
|
|
201
|
+
"exampleTools": [
|
|
202
|
+
"gofmt",
|
|
203
|
+
"goimports"
|
|
204
|
+
],
|
|
205
|
+
"notes": "Use gofmt (built-in) for formatting. goimports extends gofmt with import organization. Formatting is enforced by convention.",
|
|
206
|
+
"verification": "Run 'gofmt -d .' or 'goimports -d .' and confirm no output indicates clean formatting."
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"ciHints": {
|
|
211
|
+
"azure-devops": {
|
|
212
|
+
"stage": "quality"
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"description": "Use git hooks to run linting, formatting, tests, and commit linting before changes are committed.",
|
|
216
|
+
"id": "pre-commit-hooks",
|
|
217
|
+
"label": "Pre-Commit Hooks",
|
|
218
|
+
"stack": {
|
|
219
|
+
"exampleConfigFiles": [
|
|
220
|
+
".pre-commit-config.yaml",
|
|
221
|
+
"lefthook.yml"
|
|
222
|
+
],
|
|
223
|
+
"exampleTools": [
|
|
224
|
+
"pre-commit",
|
|
225
|
+
"lefthook"
|
|
226
|
+
],
|
|
227
|
+
"notes": "Use pre-commit with go hooks for gofmt, goimports, and golangci-lint on staged files.",
|
|
228
|
+
"verification": "Inspect hooks configuration and confirm that go fmt and golangci-lint run before commits."
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"ciHints": {
|
|
233
|
+
"azure-devops": {
|
|
234
|
+
"stage": "quality"
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"description": "Use static type checking to catch errors before runtime and enforce strictness on new code.",
|
|
238
|
+
"id": "type-checking",
|
|
239
|
+
"label": "Type Checking",
|
|
240
|
+
"stack": {
|
|
241
|
+
"exampleConfigFiles": [
|
|
242
|
+
"go.mod"
|
|
243
|
+
],
|
|
244
|
+
"exampleTools": [
|
|
245
|
+
"go vet",
|
|
246
|
+
"staticcheck"
|
|
247
|
+
],
|
|
248
|
+
"notes": "Go has compile-time type checking built in. Use 'go vet' for additional static analysis. staticcheck provides enhanced type-related checks.",
|
|
249
|
+
"requiredFiles": [
|
|
250
|
+
"go.mod"
|
|
251
|
+
],
|
|
252
|
+
"verification": "Run 'go build ./...' to verify type correctness. Use 'go vet ./...' for additional static analysis."
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"ciHints": {
|
|
257
|
+
"azure-devops": {
|
|
258
|
+
"stage": "quality"
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
"description": "Lock dependencies and scan regularly for known vulnerabilities; fail CI on newly introduced high-severity issues.",
|
|
262
|
+
"id": "dependency-security",
|
|
263
|
+
"label": "Dependency Management & Vulnerability Scanning",
|
|
264
|
+
"stack": {
|
|
265
|
+
"exampleConfigFiles": [
|
|
266
|
+
"go.sum"
|
|
267
|
+
],
|
|
268
|
+
"exampleTools": [
|
|
269
|
+
"govulncheck",
|
|
270
|
+
"nancy"
|
|
271
|
+
],
|
|
272
|
+
"notes": "Use govulncheck (official Go tool) for vulnerability scanning. go.sum locks dependency checksums for reproducible builds.",
|
|
273
|
+
"requiredFiles": [
|
|
274
|
+
"go.sum"
|
|
275
|
+
],
|
|
276
|
+
"verification": "go.sum is present; run 'govulncheck ./...' to verify security scanning."
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"ciHints": {
|
|
281
|
+
"azure-devops": {
|
|
282
|
+
"stage": "quality"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
"description": "Specify required runtime/engine versions in package manifests to ensure environment stability and prevent version-related issues across development teams.",
|
|
286
|
+
"id": "runtime-version",
|
|
287
|
+
"label": "Runtime Version Specification",
|
|
288
|
+
"stack": {
|
|
289
|
+
"exampleConfigFiles": [
|
|
290
|
+
"go.mod",
|
|
291
|
+
".go-version"
|
|
292
|
+
],
|
|
293
|
+
"exampleTools": [],
|
|
294
|
+
"notes": "Specify 'go' directive in go.mod (e.g., go 1.21) to set minimum Go version. Consider .go-version for goenv users.",
|
|
295
|
+
"optionalFiles": [
|
|
296
|
+
".go-version"
|
|
297
|
+
],
|
|
298
|
+
"requiredFiles": [
|
|
299
|
+
"go.mod"
|
|
300
|
+
],
|
|
301
|
+
"verification": "go.mod must contain 'go' directive specifying minimum version; .go-version is optional for local development."
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"ciHints": {
|
|
306
|
+
"azure-devops": {
|
|
307
|
+
"stage": "docs"
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"description": "Maintain a comprehensive README and, where applicable, auto-generated API docs to support onboarding and maintainability.",
|
|
311
|
+
"id": "documentation",
|
|
312
|
+
"label": "Documentation Standards",
|
|
313
|
+
"stack": {
|
|
314
|
+
"exampleConfigFiles": [
|
|
315
|
+
"README.md",
|
|
316
|
+
"docs/"
|
|
317
|
+
],
|
|
318
|
+
"exampleTools": [
|
|
319
|
+
"godoc",
|
|
320
|
+
"pkgsite"
|
|
321
|
+
],
|
|
322
|
+
"notes": "Use godoc or pkgsite for API documentation from code comments. Follow Go documentation conventions.",
|
|
323
|
+
"optionalFiles": [
|
|
324
|
+
"docs/"
|
|
325
|
+
],
|
|
326
|
+
"requiredFiles": [
|
|
327
|
+
"README.md"
|
|
328
|
+
],
|
|
329
|
+
"verification": "README.md is present; documentation comments exist in exported functions/types."
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"ciHints": {
|
|
334
|
+
"azure-devops": {
|
|
335
|
+
"stage": "governance"
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
"description": "Include standard governance files (LICENSE, CODE_OF_CONDUCT.md, CONTRIBUTING.md), branch protection rules, and review standards to define legal, ethical, and workflow expectations.",
|
|
339
|
+
"id": "repository-governance",
|
|
340
|
+
"label": "Repository Governance",
|
|
341
|
+
"stack": {
|
|
342
|
+
"exampleConfigFiles": [
|
|
343
|
+
"LICENSE",
|
|
344
|
+
"CODE_OF_CONDUCT.md",
|
|
345
|
+
"CONTRIBUTING.md"
|
|
346
|
+
],
|
|
347
|
+
"exampleTools": [],
|
|
348
|
+
"notes": "Include license identifier in go.mod comments if needed. Document Go module conventions and testing requirements in CONTRIBUTING.md.",
|
|
349
|
+
"optionalFiles": [
|
|
350
|
+
"CODE_OF_CONDUCT.md",
|
|
351
|
+
"CONTRIBUTING.md"
|
|
352
|
+
],
|
|
353
|
+
"requiredFiles": [
|
|
354
|
+
"LICENSE"
|
|
355
|
+
],
|
|
356
|
+
"verification": "LICENSE file is present; CODE_OF_CONDUCT.md and CONTRIBUTING.md provide contribution guidance."
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
],
|
|
360
|
+
"optionalEnhancements": [
|
|
361
|
+
{
|
|
362
|
+
"ciHints": {
|
|
363
|
+
"azure-devops": {
|
|
364
|
+
"stage": "observability"
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
"description": "Standardize error handling and structured logging to make debugging and production monitoring easier.",
|
|
368
|
+
"id": "observability",
|
|
369
|
+
"label": "Observability (Logging & Error Handling)",
|
|
370
|
+
"stack": {
|
|
371
|
+
"exampleConfigFiles": [],
|
|
372
|
+
"exampleTools": [
|
|
373
|
+
"slog",
|
|
374
|
+
"zap",
|
|
375
|
+
"zerolog"
|
|
376
|
+
],
|
|
377
|
+
"notes": "Use slog (stdlib) or zap/zerolog for structured logging. Configure JSON output for production and text for development.",
|
|
378
|
+
"verification": "Confirm that a structured logging library is configured with appropriate output format and log levels."
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
],
|
|
382
|
+
"recommended": [
|
|
383
|
+
{
|
|
384
|
+
"ciHints": {
|
|
385
|
+
"azure-devops": {
|
|
386
|
+
"stage": "test"
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"description": "Test how components interact with each other and external systems, running after unit tests with more relaxed coverage thresholds.",
|
|
390
|
+
"id": "integration-testing",
|
|
391
|
+
"label": "Integration Testing",
|
|
392
|
+
"stack": {
|
|
393
|
+
"exampleConfigFiles": [
|
|
394
|
+
"*_test.go"
|
|
395
|
+
],
|
|
396
|
+
"exampleTools": [
|
|
397
|
+
"go test"
|
|
398
|
+
],
|
|
399
|
+
"notes": "Use build tags (//go:build integration) or separate test directories for integration tests. Run with 'go test -tags=integration ./...'.",
|
|
400
|
+
"verification": "Confirm integration tests exist and run 'go test -tags=integration ./...' to verify."
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"ciHints": {
|
|
405
|
+
"azure-devops": {
|
|
406
|
+
"stage": "performance"
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
"description": "Establish performance baselines and monitor for regressions using lightweight benchmarks or audits in CI.",
|
|
410
|
+
"id": "performance-baselining",
|
|
411
|
+
"label": "Performance Baselines",
|
|
412
|
+
"stack": {
|
|
413
|
+
"exampleConfigFiles": [
|
|
414
|
+
"*_test.go"
|
|
415
|
+
],
|
|
416
|
+
"exampleTools": [
|
|
417
|
+
"go test -bench",
|
|
418
|
+
"benchstat"
|
|
419
|
+
],
|
|
420
|
+
"notes": "Use 'go test -bench=. ./...' for benchmarks. Use benchstat to compare results across runs.",
|
|
421
|
+
"verification": "Run 'go test -bench=. ./...' and verify benchmark results are tracked over time."
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"ciHints": {
|
|
426
|
+
"azure-devops": {
|
|
427
|
+
"stage": "quality"
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
"description": "Measure cyclomatic complexity or similar metrics to keep code maintainable, starting as a warning-only check.",
|
|
431
|
+
"id": "complexity-analysis",
|
|
432
|
+
"label": "Complexity Analysis",
|
|
433
|
+
"stack": {
|
|
434
|
+
"exampleConfigFiles": [
|
|
435
|
+
".golangci.yml"
|
|
436
|
+
],
|
|
437
|
+
"exampleTools": [
|
|
438
|
+
"gocyclo",
|
|
439
|
+
"golangci-lint"
|
|
440
|
+
],
|
|
441
|
+
"notes": "Use gocyclo or golangci-lint's gocyclo linter to measure cyclomatic complexity. Configure threshold in .golangci.yml.",
|
|
442
|
+
"verification": "Run 'gocyclo' or 'golangci-lint run' and review complexity reports, ensuring new code doesn't exceed thresholds."
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"ciHints": {
|
|
447
|
+
"azure-devops": {
|
|
448
|
+
"stage": "quality"
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
"description": "Run accessibility checks on web-facing components to detect critical issues and improve inclusive UX.",
|
|
452
|
+
"id": "accessibility-auditing",
|
|
453
|
+
"label": "Accessibility Auditing",
|
|
454
|
+
"stack": {
|
|
455
|
+
"exampleConfigFiles": [],
|
|
456
|
+
"exampleTools": [
|
|
457
|
+
"axe-core",
|
|
458
|
+
"pa11y"
|
|
459
|
+
],
|
|
460
|
+
"notes": "For Go web apps, use headless browser-based accessibility tools to audit rendered HTML from templates.",
|
|
461
|
+
"verification": "For web-facing Go apps, run accessibility audits against key routes using axe or pa11y."
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
]
|
|
465
|
+
},
|
|
466
|
+
"ciSystems": [
|
|
467
|
+
"azure-devops"
|
|
468
|
+
],
|
|
469
|
+
"meta": {
|
|
470
|
+
"complexityChecks": {
|
|
471
|
+
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
472
|
+
"enabledByDefault": true
|
|
473
|
+
},
|
|
474
|
+
"defaultCoverageThreshold": 0.8,
|
|
475
|
+
"migrationGuide": [
|
|
476
|
+
{
|
|
477
|
+
"description": "Start by adding pre-commit hooks and core formatting/linting so developers get fast feedback without touching CI.",
|
|
478
|
+
"focusIds": [
|
|
479
|
+
"pre-commit-hooks",
|
|
480
|
+
"linting",
|
|
481
|
+
"code-formatter"
|
|
482
|
+
],
|
|
483
|
+
"notes": "Keep hooks fast and focused on changed files to avoid slowing down day-to-day work.",
|
|
484
|
+
"step": 1,
|
|
485
|
+
"title": "Establish Local Safety Nets First"
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"description": "Introduce CI quality gates that mirror local checks, but treat existing violations as warnings wherever possible.",
|
|
489
|
+
"focusIds": [
|
|
490
|
+
"ci-quality-gates",
|
|
491
|
+
"linting",
|
|
492
|
+
"code-formatter",
|
|
493
|
+
"commit-linting"
|
|
494
|
+
],
|
|
495
|
+
"notes": "Use diff-based tools or baselines so only new violations break builds; legacy issues remain visible but non-blocking.",
|
|
496
|
+
"step": 2,
|
|
497
|
+
"title": "Mirror Local Checks in CI (Soft-Fail on Legacy)"
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
"description": "Enable type-checking, coverage thresholds, and dependency/vulnerability scanning with gradual enforcement.",
|
|
501
|
+
"focusIds": [
|
|
502
|
+
"type-checking",
|
|
503
|
+
"unit-test-runner",
|
|
504
|
+
"unit-test-reporter",
|
|
505
|
+
"dependency-security"
|
|
506
|
+
],
|
|
507
|
+
"notes": "Pin tool and runtime versions in CI and containers to avoid flaky differences across environments.",
|
|
508
|
+
"step": 3,
|
|
509
|
+
"title": "Add Type Safety, Coverage, and Dependency Security"
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"description": "Add documentation standards, governance files, integration testing, performance baselines, complexity analysis, accessibility auditing, and (optionally) ML-specific practices for data-heavy Python repos.",
|
|
513
|
+
"focusIds": [
|
|
514
|
+
"documentation",
|
|
515
|
+
"repository-governance",
|
|
516
|
+
"integration-testing",
|
|
517
|
+
"performance-baselining",
|
|
518
|
+
"complexity-analysis",
|
|
519
|
+
"accessibility-auditing"
|
|
520
|
+
],
|
|
521
|
+
"notes": "Tackle recommended items in order of business value; backend-only repos can skip web-focused checks like accessibility. For AI/ML-heavy Python teams, consider extending containerization with data versioning (DVC) and unit tests with data quality checks (e.g., Great Expectations) as part of this step.",
|
|
522
|
+
"step": 4,
|
|
523
|
+
"title": "Layer in Docs, Governance, and Recommended Checks"
|
|
524
|
+
}
|
|
525
|
+
],
|
|
526
|
+
"qualityGatePolicy": {
|
|
527
|
+
"description": "New quality checks should warn on existing code and fail CI only for violations introduced in new or changed code, to reduce friction on legacy codebases.",
|
|
528
|
+
"preferSoftFailOnLegacy": true
|
|
529
|
+
}
|
|
530
|
+
},
|
|
531
|
+
"stack": "go",
|
|
532
|
+
"stackLabel": "Go",
|
|
533
|
+
"version": 1
|
|
534
|
+
}
|