This document provides comprehensive guidelines for LLM agents working on this project, covering GitHub issues management, GitFlow branching strategy, changelog documentation, and semantic versioning.
- GitHub Issues Management
- GitFlow Branching Strategy
- Changelog Documentation
- Semantic Versioning (SemVer)
- Development Workflow
- Code Quality Standards
- Release Process
When creating GitHub issues, follow these structured approaches:
-
Bug Reports - Use label:
bug- Include reproduction steps
- Specify expected vs actual behavior
- Add environment details (browser, Node version, etc.)
- Include relevant code snippets or error messages
-
Feature Requests - Use label:
enhancement- Clearly describe the feature and its benefits
- Include acceptance criteria
- Provide mockups or examples if applicable
- Estimate effort and priority
-
Documentation - Use label:
documentation- Specify what documentation needs updating
- Include current vs desired state
- Reference specific files or sections
-
Technical Debt - Use labels:
refactor,technical-debt- Explain current limitations
- Propose solutions and benefits
- Include impact assessment
**Type**: [Bug/Enhancement/Documentation/Technical Debt]
**Priority**: [High/Medium/Low]
**Effort**: [Small/Medium/Large] (~X hours/days)
## Description
Brief description of the issue or feature
## Current State
What exists today (for bugs, what's broken)
## Desired State
What should happen or what we want to achieve
## Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
- [ ] Criterion 3
## Technical Notes
Implementation details, constraints, or considerations
## Related Issues
Link to related issues using #issue-numberUse consistent labeling:
- Type:
bug,enhancement,documentation,question - Priority:
priority:high,priority:medium,priority:low - Status:
status:ready,status:in-progress,status:blocked,status:review - Component:
component:ui,component:api,component:docs - Effort:
effort:small,effort:medium,effort:large
- Triage - Label new issues appropriately
- Planning - Add to milestones and projects
- Assignment - Assign to appropriate team member
- Progress Tracking - Update status labels
- Review - Link pull requests to issues
- Closure - Verify completion and close with summary
main- Production-ready code, always deployabledevelop- Integration branch for features, latest development state
feature/*- New features or enhancementsrelease/*- Prepare for production releaseshotfix/*- Critical fixes for productionbugfix/*- Non-critical bug fixes
# Feature branches
feature/issue-123-add-markdown-editor
feature/migrate-to-ladle
# Release branches
release/v6.17.0
release/v7.0.0-beta.1
# Hotfix branches
hotfix/v6.16.1-critical-bug-fix
hotfix/security-vulnerability
# Bugfix branches
bugfix/issue-456-editor-alignment-
Feature Development
# Start from develop git checkout develop git pull origin develop git checkout -b feature/issue-123-feature-name # Make changes and commit git add . git commit -m "feat: add new feature (closes #123)" # Push and create PR to develop git push origin feature/issue-123-feature-name
-
Release Preparation
# Create release branch from develop git checkout develop git checkout -b release/v6.17.0 # Update version numbers, changelog # Make final bug fixes # Merge to main and develop git checkout main git merge release/v6.17.0 git tag v6.17.0 git checkout develop git merge release/v6.17.0
-
Hotfix Process
# Create hotfix from main git checkout main git checkout -b hotfix/v6.16.1-critical-fix # Make fix and update version # Merge to both main and develop
- Title Format:
type(scope): description (#issue-number) - Description: Link to issue, describe changes, include breaking changes
- Reviews: Require at least one reviewer for production code
- Tests: Ensure all tests pass and coverage is maintained
- Documentation: Update relevant documentation
Follow Keep a Changelog format:
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- New features that have been added
### Changed
- Changes in existing functionality
### Deprecated
- Soon-to-be removed features
### Removed
- Features that have been removed
### Fixed
- Bug fixes
### Security
- Security vulnerability fixes
## [6.16.0] - 2024-06-06
### Added
- Enhanced markdown editor with syntax highlighting
- New USFM editor component
### Changed
- Improved performance of text rendering
- Updated React peer dependencies
### Fixed
- Fixed text selection issues in Safari
- Resolved memory leak in editor cleanup
## [6.15.0] - 2024-05-15
...- Added - New features
- Changed - Changes in existing functionality
- Deprecated - Soon-to-be removed features
- Removed - Now removed features
- Fixed - Bug fixes
- Security - Vulnerability fixes
- During Development - Add entries to
[Unreleased]section - Before Release - Move unreleased items to new version section
- Version Links - Add comparison links at bottom of file
- Breaking Changes - Clearly mark breaking changes in descriptions
- MAJOR (X.0.0) - Incompatible API changes
- MINOR (0.X.0) - New functionality, backward compatible
- PATCH (0.0.X) - Bug fixes, backward compatible
- Alpha:
1.0.0-alpha.1- Early development - Beta:
1.0.0-beta.1- Feature complete, testing - RC:
1.0.0-rc.1- Release candidate
// Example: Removing or changing public API
// OLD: component.setText(text)
// NEW: component.updateContent({text, format})// Example: Adding new optional props
// NEW: <MarkdownEditor enableSyntaxHighlight={true} />// Example: Fixing existing functionality
// FIX: Cursor position after undo operation- Determine Version Type - Analyze changes for breaking changes
- Update package.json - Bump version number
- Update CHANGELOG.md - Move unreleased items to new version
- Create Git Tag - Tag the release commit
- Publish - Deploy to npm registry if applicable
-
Issue Analysis
- Read issue thoroughly
- Understand requirements and acceptance criteria
- Ask clarifying questions if needed
- Estimate effort and complexity
-
Branch Creation
git checkout develop git pull origin develop git checkout -b feature/issue-123-feature-name
-
Development
- Write code following project conventions
- Add unit tests for new functionality
- Update documentation as needed
- Follow existing code patterns
-
Testing
npm test # Run test suite npm run lint # Check code style npm run build # Verify build works
-
Documentation
- Update component documentation
- Add examples if needed
- Update README if applicable
-
Commit and Push
git add . git commit -m "feat: add new feature (closes #123)" git push origin feature/issue-123-feature-name
-
Pull Request
- Create PR from feature branch to develop
- Link to original issue
- Request appropriate reviewers
- Address feedback and make changes
-
Merge and Cleanup
- Merge PR when approved
- Delete feature branch
- Update issue status
- Code follows project style guidelines
- All tests pass
- Documentation is updated
- No breaking changes (or properly documented)
- Performance impact considered
- Security implications reviewed
- Accessibility requirements met
-
Component Structure
// Use functional components with hooks const MyComponent = ({ prop1, prop2, ...props }) => { // State and effects first const [state, setState] = useState(initial); // Event handlers const handleEvent = useCallback(() => { // handler logic }, [dependencies]); // Render return <div {...props}>{/* component content */}</div>; };
-
PropTypes and Documentation
MyComponent.propTypes = { prop1: PropTypes.string.isRequired, prop2: PropTypes.func, }; MyComponent.defaultProps = { prop2: () => {}, };
-
Testing Standards
import { render, screen, fireEvent } from "@testing-library/react"; import MyComponent from "./MyComponent"; describe("MyComponent", () => { it("should render correctly", () => { render(<MyComponent prop1='test' />); expect(screen.getByText("test")).toBeInTheDocument(); }); });
- Component Documentation - Use
.mdfiles for each component - API Documentation - Document all props, methods, and events
- Examples - Provide practical usage examples
- Migration Guides - Document breaking changes and migration paths
- All planned features implemented
- All tests passing
- Documentation updated
- CHANGELOG.md updated
- Version number bumped in package.json
- Breaking changes documented
- Migration guide created (if needed)
-
Create Release Branch
git checkout develop git checkout -b release/v6.17.0
-
Final Preparations
- Update version in package.json
- Update CHANGELOG.md
- Run full test suite
- Build and verify artifacts
-
Create Release PR
- PR from release branch to main
- Include changelog in PR description
- Get final review and approval
-
Tag and Deploy
git checkout main git merge release/v6.17.0 git tag v6.17.0 git push origin main --tags
-
Merge Back to Develop
git checkout develop git merge release/v6.17.0 git push origin develop
-
Publish Package (if applicable)
npm publish
-
Create GitHub Release
- Go to GitHub releases
- Create new release from tag
- Include changelog content
- Attach any release artifacts
- Verify deployment successful
- Update documentation site
- Announce release (if significant)
- Monitor for issues
- Plan next iteration
- Check Node.js version compatibility
- Clear node_modules and reinstall
- Verify all dependencies are compatible
- Run tests individually to isolate issues
- Check for environment-specific problems
- Update snapshots if UI changed intentionally
- Use
git rebase developto replay changes - Resolve conflicts manually
- Test thoroughly after resolution
- Always review documentation when making code changes
- Use the AGENTS.md file for guidance on handling discrepancies
- Raise issues when documentation is out of sync with codebase
- GitHub Flow Documentation
- Semantic Versioning Specification
- Keep a Changelog
- Conventional Commits
- React Component Best Practices
This document should be updated as workflows evolve. When making changes to development processes, update this guide accordingly and ensure all team members are informed.