Refactor: Extract shared markdown builders for rules generation strategies #73
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The Single and Multi-file rules generation strategies contained significant code duplication:
Solution
Extracted common scaffolding into a shared
markdown-builders
module that provides reusable utilities:New Shared Builders
createProjectMarkdown
- Generates consistent project headerscreateEmptyStateMarkdown
- Returns standardized empty state messagegetProjectMetadata
- Provides standard project file metadatarenderLibrarySection
- Renders library markdown with configurable headersiterateLayersStacksLibraries
- Unified iteration logic over layer/stack/library structurecreateLibraryFileMetadata
- Generates file metadata for multi-file outputKey Benefits
✅ Single source of truth - All markdown generation logic now lives in one place
✅ Guaranteed consistency - Both strategies use the same builders, ensuring uniform formatting
✅ Easier maintenance - Changes to formatting only need to be made once
✅ Reduced complexity - Strategies are now simpler and focus on their core responsibility
✅ Better testability - Shared builders can be tested independently
✅ Future-proof - Adding new strategies is now much simpler
Changes Made
src/services/rules-builder/markdown-builders/index.ts
moduleSingleFileRulesStrategy
to use shared buildersMultiFileRulesStrategy
to use shared buildersTesting
🤖 Generated with Claude Code