| name | code-completion |
| description | Quality gates checklist for completing code work before finishing implementation cycles |
Code completion checklist
Execute these quality gates before finishing any code work cycle to ensure the codebase is production-ready.
When to use this skill
Use this skill when:
- Implementing new features
- Fixing bugs
- Refactoring code
- Modifying existing functionality
- Making any changes to C# source code
- Adding or updating indicators
- A human reminds you to run the "code completion checklist"
Required tools
- #tool:runCommands - Execute shell commands for linting, building, testing
- #tool:read - Read error output and configuration files
Workflow
Step 0: Remove dead code
Before running quality gates:
- Delete obsolete or commented-out code
- Remove unused imports, variables, helper methods
- Strip debugging aids (
Console.WriteLine, breakpoints) - Remove scratch files (
.bak,.new,.debug.*)
Step 1: Run linters
Execute linting for all code (markdown + .NET):
dotnet format --severity info --no-restore
npx markdownlint-cli2 --fix
Success criteria: Zero linting errors and zero warnings. All warnings must be fixed before completing work.
CRITICAL: Suppressing warnings is not an appropriate way to resolve lint or build warnings.
Individual checks (if needed):
# Roslynator only (fast)
roslynator fix --properties TargetFramework=net10.0 --severity-level info --verbosity normal
# .NET format only
dotnet format --severity info --no-restore
# Markdown only
npx markdownlint-cli2 --fix
VS Code tasks: Lint: All (fix) or Lint: .NET code & markdown files (fix) (faster)
Handle failures:
- Review reported issues
- Fix manually or re-run fix commands
- For unfixable issues, document justification and seek approval
- Re-run lint to verify
Step 2: Build solution
Verify compilation and build artifacts:
dotnet build "Stock.Indicators.sln" -v minimal --nologo
Success criteria: All projects compile without errors. No build warnings.
VS Code task: Build: .NET Solution (incremental)
Handle failures:
- Review compilation errors and warnings
- Fix code issues, type errors, or configuration problems
- Ensure all packages are restored (
dotnet restore) - Re-run build to verify
Step 3: Run test suites
Execute all unit tests (integration tests run in CI only):
dotnet test "Stock.Indicators.sln" --no-restore --nologo
Success criteria: All tests pass. No test failures. Coverage ≥ 98% (validated in CI/CD via Codacy).
VS Code task: Test: Unit tests
Handle failures:
- Review test output and failure messages
- Fix code or update tests as appropriate
- Re-run test suite to verify
Step 4: Update documentation
When changing indicators or public APIs:
- Update XML documentation for changed public APIs
- Update
docs/_indicators/{IndicatorName}.mdfor indicator changes - Update
src/MigrationGuide.V3.mdfor breaking changes - Update obsolete bridge files (
src/Obsolete.V3.*.cs) for deprecated APIs
Step 5: Verify and commit
After all gates pass:
dotnet format --verify-no-changes --severity info --no-restore
dotnet build "Stock.Indicators.sln" -v minimal --nologo
dotnet test "Stock.Indicators.sln" --no-build --nologo
npx markdownlint-cli2
- Review changes for completeness
- Address any remaining warnings
- Document intentional deviations
- Commit changes if working in unattended mode
Quality standards
Before marking work complete:
- Zero linting errors and zero warnings - all warnings must be fixed
- Zero build warnings and zero errors - all compilation warnings must be addressed
- All projects build successfully
- All tests pass with no warnings
- Coverage threshold maintained (≥ 98% validated in CI/CD)
- Documentation updated for public API changes
- Migration bridges updated for breaking changes
Critical: Treat all warnings as errors. Do not ignore, defer, suppress, or accept warnings regardless of scope, type, or reason. Warnings indicate issues that must be resolved.
Abbreviated verification command:
dotnet format --no-restore && dotnet build && dotnet test --no-restore && npx markdownlint-cli2
Required indicator components
For new or updated indicators, MUST include:
- Series implementation (
*.StaticSeries.cs) - Catalog entry and registration (
*.Catalog.cs) - Unit tests with full coverage (
*.Tests.cs) - Documentation (
docs/_indicators/{Name}.md) - Regression test baseline (if algorithm changed)
- Performance benchmark (for complex indicators)
Required migration bridge
When changing public APIs, MUST:
- Add
[Obsolete]attribute with migration message - Update
src/MigrationGuide.V3.md - Update bridge files:
src/Obsolete.V3.Indicators.cssrc/Obsolete.V3.Other.cs
Best practices
- Run linters frequently during development, not just at the end
- Address linting errors as they appear
- Use VS Code tasks for quick access to quality gates
- Run specific tests during active development
- Document exceptions when disabling analyzer rules
Quick reference
| Gate | Command | VS Code task |
|---|---|---|
| Lint .NET (fix) | roslynator fix --properties TargetFramework=net10.0 --severity-level info |
Lint: .NET Roslynator (fix) |
| Lint all (fix) | dotnet format --severity info --no-restore && npx markdownlint-cli2 --fix |
Lint: All (fix) |
| Lint markdown (fix) | npx markdownlint-cli2 --fix |
Lint: Markdown (fix) |
| Build | dotnet build -v minimal --nologo |
Build: .NET Solution (incremental) |
| Test | dotnet test --no-restore --nologo |
Test: Unit tests |
| Full check | dotnet format --no-restore && dotnet build && dotnet test --no-restore && npx markdownlint-cli2 |
Run sequentially |
Configuration files
Linting:
- Analyzers: #file:../../../src/Directory.Build.props
- .NET format: #file:../../../.editorconfig
- Roslynator: Global configuration
- Markdown: #file:../../../.markdownlint-cli2.jsonc
Build:
- Solution: #file:../../../Stock.Indicators.sln
- Project: #file:../../../src/Indicators.csproj
- Dependencies: #file:../../../src/Directory.Packages.props
Test:
- Unit tests: #file:../../../tests/tests.unit.runsettings
- Regression: #file:../../../tests/tests.regression.runsettings
- Integration: #file:../../../tests/tests.integration.runsettings
About maintenance of this file
When lint/build/test commands change or new quality gates are added, update this skill file to reflect current workflow
Last updated: January 2, 2026