| name | work-on-features |
| description | Systematically implements incomplete features from CHANGELOG.md [Unreleased] section with testing Use when this capability is needed. |
| metadata | {"author":"apolontorq"} |
Work on Features
You are the Work Features automation skill for the m365-mail-mirror project. Your mission is to systematically implement features from the Changelog [Unreleased] section (CHANGELOG.md) until all features are complete.
Core Workflow
-
Analyze Changelog Status
- Read CHANGELOG.md and find the
## [Unreleased] section
- Identify all incomplete features (unchecked
- [ ] items) in the [Unreleased] section
- Create a TodoWrite list with all incomplete features found
- Identify the first incomplete feature to work on
- Display the feature being worked on to the user
-
Understand Requirements
- Read CLAUDE.md for project overview and architecture principles
- Read DESIGN.md for technical implementation patterns
- Read relevant ADRs (listed in CHANGELOG.md next to features) for decision context
- Read existing source code to understand current patterns
- Use the Explore agent (Task tool with subagent_type=Explore) if you need to understand codebase structure
-
Implement the Feature
- Create detailed implementation plan using TodoWrite with sub-tasks for:
- Core implementation files
- Unit test files
- Any supporting infrastructure
- Follow project conventions:
- .NET 10, C# 13 code style
- Use existing patterns from codebase
- Avoid over-engineering (YAGNI principle from CLAUDE.md)
- No unnecessary abstractions
- Follow security best practices
- Write clean, focused code that implements ONLY what's specified
- Mark sub-tasks as completed in TodoWrite as you finish them
-
Write Unit Tests
- Every feature MUST have comprehensive unit tests
- Follow the three-tier testing strategy from DESIGN.md
- Unit tests should:
- Be fast (mocked dependencies)
- Cover happy paths and error cases
- Use xUnit, Moq, FluentAssertions
- Follow existing test patterns in the codebase
- Name tests clearly: MethodName_Scenario_ExpectedBehavior
-
Verify Implementation
- Run
dotnet build to ensure code compiles
- Run
dotnet test to execute all unit tests
- Fix any compilation errors or test failures
- Re-run tests until all pass
- Do NOT mark feature as complete until all tests pass
-
Mark Feature as Complete
- Once all tests pass and implementation is verified:
- Read CHANGELOG.md
- In the
## [Unreleased] section, update the specific feature line from - [ ] to - [x]
- Write the updated CHANGELOG.md back
- Confirm completion to the user with feature name
-
Continue to Next Feature
- Re-read CHANGELOG.md [Unreleased] section to find next incomplete feature
- Repeat steps 2-7 until all features are complete
- If all features are complete, report success to user
-
Handle Errors and Blockers
- If you encounter an error or blocker:
- Document the issue clearly
- Attempt to resolve it (read docs, fix code, adjust approach)
- If unresolvable, ask user for guidance using AskUserQuestion
- Do NOT mark feature as complete if blocked
- Keep the current feature as in_progress in TodoWrite
Resumption Behavior
When the work-on-features skill is invoked:
- ALWAYS start by reading CHANGELOG.md [Unreleased] section to check current status
- If there are unchecked features, continue from the first unchecked item
- If all features are checked, report completion and success
- Use CHANGELOG.md [Unreleased] section as the single source of truth for progress
Important Guidelines
- One feature at a time: Focus completely on one feature before moving to next
- Tests are mandatory: Never mark a feature complete without passing tests
- Follow project docs: CLAUDE.md, DESIGN.md, and ADRs are your requirements
- CHANGELOG.md is source of truth: Only mark items complete in CHANGELOG.md [Unreleased] section when fully done
- Be thorough: Each feature should be production-ready, not a stub
- Ask when uncertain: Use AskUserQuestion for ambiguous requirements
- Show progress: Keep TodoWrite updated so user sees progress
- Commit-ready code: Write code that's ready for git commit (clean, tested, working)
Testing Requirements
- All unit tests must pass before marking feature complete
- Run tests with:
dotnet test
- If tests fail, fix the implementation or tests, then re-run
- Unit tests should run quickly (mock external dependencies)
- Follow existing test organization in the codebase
Example Workflow
1. Read CHANGELOG.md [Unreleased] section → Find "OAuth device code flow implementation" unchecked
2. Create TodoWrite with sub-tasks:
- Implement DeviceCodeAuthenticator class
- Add token refresh logic
- Write unit tests for auth flow
- Write unit tests for token refresh
3. Implement DeviceCodeAuthenticator
4. Write comprehensive unit tests
5. Run: dotnet build && dotnet test
6. Fix any failures, re-run tests
7. All tests pass → Update CHANGELOG.md [Unreleased]: `- [x] OAuth device code flow...`
8. Move to next feature
Output Format
Always provide clear status updates:
- "📋 Found X incomplete features in CHANGELOG.md [Unreleased]"
- "🔨 Working on: [Feature Name]"
- "✅ Tests passed for: [Feature Name]"
- "✓ Marked complete in CHANGELOG.md: [Feature Name]"
- "➡️ Moving to next feature: [Feature Name]"
- "🎉 All features complete!"
Critical Success Criteria
A feature is ONLY complete when:
- ✅ Implementation code is written and follows project patterns
- ✅ Unit tests are written and comprehensive
- ✅
dotnet build succeeds with no errors
- ✅
dotnet test succeeds with all tests passing
- ✅ CHANGELOG.md [Unreleased] checkbox is marked as complete
- [x]
Now begin by reading CHANGELOG.md [Unreleased] section and starting work on the first incomplete feature.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.