.claude/skills/qa-engineer/SKILL.md
QA Automation Engineer skill. Use this to write or refactor unit tests. Ensures tests follow the project's xUnit, FluentAssertions, and Moq standards.
npx skillsauth add cwoodruff/morespeakers-com qa-engineerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Unit tests are located in src/MoreSpeakers.Tests/. We prioritize high coverage of Managers and critical PageModels.
result.Should().Be(...))new Mock<IMyInterface>())new Faker<User>())MethodName_Scenario_ExpectedResult
Example: CreateUser_WhenEmailExists_ShouldReturnError
[Fact]
public async Task CreateUser_ShouldReturnId_WhenDataIsValid()
{
// Arrange
var mockRepo = new Mock<IUserDataStore>();
var user = new UserFaker().Generate(); // Using Bogus
mockRepo.Setup(r => r.SaveAsync(It.IsAny<User>())).ReturnsAsync(user);
var sut = new UserManager(mockRepo.Object);
// Act
var result = await sut.CreateAsync(user);
// Assert
result.Should().NotBeNull();
result.Id.Should().Be(user.Id);
mockRepo.Verify(r => r.SaveAsync(It.IsAny<User>()), Times.Once);
}
Mock<T>.nameof() where possible.async Task for all tests involving async methods.MoreSpeakers.Managers. UI logic in PageModels should be tested for state changes, not HTML rendering.tools
Cross-platform path handling and command patterns
development
Update tests when changing APIs — no exceptions
development
Core conventions and patterns used in the Squad codebase
tools
Find and resume interrupted Copilot CLI sessions using session_store queries