Browse Source
- Remove legacy rule files (documentation.mdc, general_development.mdc, etc.) - Implement new meta-rule system with core, app, and feature categories - Add meta-rule files for different workflows (bug diagnosis, feature planning, etc.) - Create organized directory structure: core/, app/, features/, database/, etc. - Add comprehensive README.md for rules documentation - Establish new rule architecture with always-on and workflow-specific rules This restructuring improves rule organization, enables better workflow management, and provides clearer separation of concerns for different development tasks.research/notification-plugin-enhancement
61 changed files with 10221 additions and 307 deletions
@ -0,0 +1,306 @@ |
|||||
|
# .cursor Rules Organization |
||||
|
|
||||
|
This directory contains all the rules and guidelines for AI assistants working |
||||
|
with the TimeSafari project. |
||||
|
|
||||
|
## Directory Structure |
||||
|
|
||||
|
### **`core/`** - Core Principles and Context |
||||
|
|
||||
|
Core rules that apply to all AI interactions and provide fundamental context. |
||||
|
|
||||
|
- **`base_context.mdc`** - Human competence first principles and interaction guidelines |
||||
|
- **`harbor_pilot_universal.mdc`** - Technical guide creation and investigation rules |
||||
|
- **`less_complex.mdc`** - Minimalist solution principle and complexity guidelines |
||||
|
|
||||
|
### **`development/`** - Development Practices and Standards |
||||
|
|
||||
|
Rules for software development, coding standards, and development workflows. |
||||
|
|
||||
|
- **`software_development.mdc`** - Core development principles and evidence requirements |
||||
|
- **`type_safety_guide.mdc`** - TypeScript type safety guidelines and best practices |
||||
|
- **`development_guide.mdc`** - Development environment setup and standards |
||||
|
- **`logging_standards.mdc`** - Logging implementation standards and rules |
||||
|
- **`logging_migration.mdc`** - Migration from console.* to structured logging |
||||
|
- **`time.mdc`** - Time handling principles and UTC standards |
||||
|
- **`time_examples.mdc`** - Practical time implementation examples |
||||
|
- **`time_implementation.mdc`** - Detailed time implementation guidelines |
||||
|
- **`realistic_time_estimation.mdc`** - Time estimation framework and principles |
||||
|
- **`planning_examples.mdc`** - Planning examples and best practices |
||||
|
- **`complexity_assessment.mdc`** - Complexity evaluation and assessment |
||||
|
- **`dependency_management.mdc`** - Dependency management and version control |
||||
|
- **`asset_configuration.mdc`** - Asset configuration and build integration |
||||
|
- **`research_diagnostic.mdc`** - Research and investigation workflows |
||||
|
- **`investigation_report_example.mdc`** - Investigation report templates and examples |
||||
|
- **`historical_comment_management.mdc`** - Historical comment transformation rules |
||||
|
- **`historical_comment_patterns.mdc`** - Comment transformation patterns and examples |
||||
|
|
||||
|
### **`architecture/`** - Architecture and Design Patterns |
||||
|
|
||||
|
Rules for architectural decisions, patterns, and system design. |
||||
|
|
||||
|
- **`build_architecture_guard.mdc`** - Build system protection and change levels |
||||
|
- **`build_validation.mdc`** - Build validation procedures and testing |
||||
|
- **`build_testing.mdc`** - Build testing requirements and feedback collection |
||||
|
|
||||
|
### **`app/`** - Application-Specific Rules |
||||
|
|
||||
|
Rules specific to the TimeSafari application and its architecture. |
||||
|
|
||||
|
- **`timesafari.mdc`** - Core application context and principles |
||||
|
- **`timesafari_platforms.mdc`** - Platform-specific implementation guidelines |
||||
|
- **`timesafari_development.mdc`** - TimeSafari development workflow |
||||
|
- **`architectural_decision_record.mdc`** - ADR creation and management |
||||
|
- **`architectural_implementation.mdc`** - Architecture implementation guidelines |
||||
|
- **`architectural_patterns.mdc`** - Architectural patterns and examples |
||||
|
- **`architectural_examples.mdc`** - Architecture examples and testing |
||||
|
|
||||
|
### **`database/`** - Database and Data Management |
||||
|
|
||||
|
Rules for database operations, migrations, and data handling. |
||||
|
|
||||
|
- **`absurd-sql.mdc`** - Absurd SQL implementation and worker thread setup |
||||
|
- **`legacy_dexie.mdc`** - Legacy Dexie migration guidelines |
||||
|
|
||||
|
### **`workflow/`** - Process and Workflow Management |
||||
|
|
||||
|
Rules for development workflows, version control, and process management. |
||||
|
|
||||
|
- **`version_control.mdc`** - Version control principles and commit guidelines |
||||
|
- **`version_sync.mdc`** - Version synchronization and changelog management |
||||
|
- **`commit_messages.mdc`** - Commit message format and conventions |
||||
|
|
||||
|
### **`features/** - Feature-Specific Implementations |
||||
|
|
||||
|
Rules for implementing specific features across platforms. |
||||
|
|
||||
|
- **`camera-implementation.mdc`** - Camera feature implementation overview |
||||
|
- **`camera_technical.mdc`** - Technical camera implementation details |
||||
|
- **`camera_platforms.mdc`** - Platform-specific camera implementation |
||||
|
|
||||
|
### **`docs/`** - Documentation Standards |
||||
|
|
||||
|
Rules for creating and maintaining documentation. |
||||
|
|
||||
|
- **`markdown_core.mdc`** - Core markdown formatting standards |
||||
|
- **`markdown_templates.mdc`** - Document templates and examples |
||||
|
- **`markdown_workflow.mdc`** - Markdown validation and workflow |
||||
|
- **`documentation.mdc`** - Documentation generation principles |
||||
|
- **`meta_rule_usage_guide.md`** - How to use meta-rules in practice |
||||
|
|
||||
|
### **`templates/`** - Templates and Examples |
||||
|
|
||||
|
Template files and examples for various documentation types. |
||||
|
|
||||
|
- **`adr_template.mdc`** - Architectural Decision Record template |
||||
|
|
||||
|
### **Meta-Rules** - Workflow Bundling |
||||
|
|
||||
|
High-level meta-rules that bundle related sub-rules for specific workflows. |
||||
|
|
||||
|
- **`meta_core_always_on.mdc`** - Core rules that apply to every single prompt |
||||
|
- **`meta_documentation.mdc`** - Documentation writing and education workflow |
||||
|
- **`meta_feature_planning.mdc`** - Feature planning workflow bundling |
||||
|
- **`meta_bug_diagnosis.mdc`** - Bug investigation workflow bundling |
||||
|
- **`meta_bug_fixing.mdc`** - Bug fix implementation workflow bundling |
||||
|
- **`meta_feature_implementation.mdc`** - Feature implementation workflow bundling |
||||
|
- **`meta_research.mdc`** - Investigation and research workflow bundling |
||||
|
|
||||
|
### **Workflow State Management** |
||||
|
|
||||
|
The project uses a sophisticated workflow state management system to ensure systematic development processes and maintain code quality across all phases of development. |
||||
|
|
||||
|
#### **Workflow State System** |
||||
|
|
||||
|
The workflow state is managed through `.cursor/rules/.workflow_state.json` and enforces different modes with specific constraints. The system automatically tracks workflow progression and maintains a complete history of mode transitions. |
||||
|
|
||||
|
**Available Modes**: |
||||
|
- **`diagnosis`** - Investigation and analysis phase (read-only) |
||||
|
- **`fixing`** - Implementation and bug fixing phase (full access) |
||||
|
- **`planning`** - Design and architecture phase (design only) |
||||
|
- **`research`** - Investigation and research phase (investigation only) |
||||
|
- **`documentation`** - Documentation writing phase (writing only) |
||||
|
|
||||
|
**Mode Constraints**: |
||||
|
```json |
||||
|
{ |
||||
|
"diagnosis": { |
||||
|
"mode": "read_only", |
||||
|
"forbidden": ["modify", "create", "build", "commit"], |
||||
|
"allowed": ["read", "search", "analyze", "document"] |
||||
|
}, |
||||
|
"fixing": { |
||||
|
"mode": "implementation", |
||||
|
"forbidden": [], |
||||
|
"allowed": ["modify", "create", "build", "commit", "test"] |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**Workflow History Tracking**: |
||||
|
|
||||
|
The system automatically maintains a `workflowHistory` array that records all mode transitions and meta-rule invocations: |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowHistory": [ |
||||
|
{ |
||||
|
"mode": "research", |
||||
|
"invoked": "meta_core_always_on.mdc", |
||||
|
"timestamp": "2025-08-25T02:14:37Z" |
||||
|
}, |
||||
|
{ |
||||
|
"mode": "diagnosis", |
||||
|
"invoked": "meta_bug_diagnosis.mdc", |
||||
|
"timestamp": "2025-08-25T02:14:37Z" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**History Entry Format**: |
||||
|
- **`mode`**: The workflow mode that was activated |
||||
|
- **`invoked`**: The specific meta-rule that triggered the mode change |
||||
|
- **`timestamp`**: UTC timestamp when the mode transition occurred |
||||
|
|
||||
|
**History Purpose**: |
||||
|
- **Workflow Continuity**: Track progression through development phases |
||||
|
- **Meta-Rule Usage**: Monitor which rules are invoked and when |
||||
|
- **Temporal Context**: Maintain chronological order of workflow changes |
||||
|
- **State Persistence**: Preserve workflow history across development sessions |
||||
|
- **Debugging Support**: Help diagnose workflow state issues |
||||
|
- **Process Analysis**: Understand development patterns and meta-rule effectiveness |
||||
|
|
||||
|
#### **Commit Override System** |
||||
|
|
||||
|
The workflow includes a flexible commit override mechanism that allows commits on demand while maintaining workflow integrity: |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"overrides": { |
||||
|
"commit": { |
||||
|
"allowed": true, |
||||
|
"requires_override": true, |
||||
|
"override_reason": "user_requested" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**Override Benefits**: |
||||
|
- ✅ **Investigation Commits**: Document findings during diagnosis phases |
||||
|
- ✅ **Work-in-Progress**: Commit partial solutions during complex investigations |
||||
|
- ✅ **Emergency Fixes**: Commit critical fixes without mode transitions |
||||
|
- ✅ **Flexible Workflow**: Maintain systematic approach while accommodating real needs |
||||
|
|
||||
|
**Override Limitations**: |
||||
|
- ❌ **Does NOT bypass**: Version control rules, commit message standards, or security requirements |
||||
|
- ❌ **Does NOT bypass**: Code quality standards, testing requirements, or documentation requirements |
||||
|
|
||||
|
#### **Workflow Enforcement** |
||||
|
|
||||
|
The system automatically enforces workflow constraints through the core always-on rules: |
||||
|
|
||||
|
**Before Every Interaction**: |
||||
|
1. **Read current workflow state** from `.cursor/rules/.workflow_state.json` |
||||
|
2. **Identify current mode** and its constraints |
||||
|
3. **Validate user request** against current mode constraints |
||||
|
4. **Enforce constraints** before generating response |
||||
|
5. **Guide model behavior** based on current mode |
||||
|
|
||||
|
**Mode-Specific Enforcement**: |
||||
|
- **Diagnosis Mode**: Blocks modification, creation, building, and commits |
||||
|
- **Fixing Mode**: Allows full implementation and testing capabilities |
||||
|
- **Planning Mode**: Focuses on design and architecture, blocks implementation |
||||
|
- **Research Mode**: Enables investigation and analysis, blocks modification |
||||
|
- **Documentation Mode**: Allows writing and editing, blocks implementation |
||||
|
|
||||
|
#### **Workflow Transitions** |
||||
|
|
||||
|
To change workflow modes, invoke the appropriate meta-rule: |
||||
|
|
||||
|
```bash |
||||
|
# Switch to bug fixing mode |
||||
|
@meta_bug_fixing.mdc |
||||
|
|
||||
|
# Switch to feature planning mode |
||||
|
@meta_feature_planning.mdc |
||||
|
|
||||
|
# Switch to documentation mode |
||||
|
@meta_documentation.mdc |
||||
|
``` |
||||
|
|
||||
|
**Transition Requirements**: |
||||
|
- **Mode Changes**: Require explicit meta-rule invocation |
||||
|
- **State Updates**: Automatically update workflow state file |
||||
|
- **Constraint Enforcement**: Immediately apply new mode constraints |
||||
|
- **History Tracking**: Automatically maintained in `workflowHistory` array |
||||
|
- **Timestamp Recording**: Each transition recorded with UTC timestamp |
||||
|
|
||||
|
#### **Integration with Development Process** |
||||
|
|
||||
|
The workflow system integrates seamlessly with existing development practices: |
||||
|
|
||||
|
**Version Control**: |
||||
|
- All commits must follow TimeSafari commit message standards |
||||
|
- Security audit checklists are enforced regardless of workflow mode |
||||
|
- Documentation updates are required for substantial changes |
||||
|
|
||||
|
**Quality Assurance**: |
||||
|
- Code quality standards (PEP8, TypeScript, etc.) are always enforced |
||||
|
- Testing requirements apply to all implementation work |
||||
|
- Documentation standards are maintained across all phases |
||||
|
|
||||
|
**Build System**: |
||||
|
- Build Architecture Guard protects critical build files |
||||
|
- Platform-specific build processes respect workflow constraints |
||||
|
- Asset generation follows established patterns |
||||
|
|
||||
|
**Migration Context**: |
||||
|
- Database migration work respects investigation vs. implementation phases |
||||
|
- Component migration progress is tracked through workflow states |
||||
|
|
||||
|
## Usage Guidelines |
||||
|
|
||||
|
1. **Always-On Rules**: Start with `meta_core_always_on.mdc` for every |
||||
|
single prompt |
||||
|
2. **Core Rules**: Always apply rules from `core/` directory |
||||
|
3. **Context-Specific**: Use rules from appropriate subdirectories based on |
||||
|
your task |
||||
|
4. **Meta-Rules**: Use workflow-specific meta-rules for specialized tasks |
||||
|
- **Documentation**: Use `meta_documentation.mdc` for all documentation work |
||||
|
- **Getting Started**: See `docs/meta_rule_usage_guide.md` for comprehensive usage instructions |
||||
|
5. **Cross-References**: All files contain updated cross-references to |
||||
|
reflect the new structure |
||||
|
6. **Validation**: All files pass markdown validation and maintain |
||||
|
consistent formatting |
||||
|
|
||||
|
## Benefits of New Organization |
||||
|
|
||||
|
1. **Logical grouping** - Related rules are now co-located |
||||
|
2. **Easier navigation** - Developers can quickly find relevant rules |
||||
|
3. **Better maintainability** - Clear separation of concerns |
||||
|
4. **Scalable structure** - Easy to add new rules in appropriate categories |
||||
|
5. **Consistent cross-references** - All file links updated and working |
||||
|
6. **Workflow bundling** - Meta-rules provide high-level workflow guidance |
||||
|
7. **Feedback integration** - Built-in feedback mechanisms for continuous improvement |
||||
|
8. **Educational focus** - Documentation emphasizes human competence over technical description |
||||
|
|
||||
|
## File Naming Convention |
||||
|
|
||||
|
- **Lowercase with underscores**: `file_name.mdc` |
||||
|
- **Descriptive names**: Names clearly indicate the rule's purpose |
||||
|
- **Consistent extensions**: All files use `.mdc` extension |
||||
|
|
||||
|
## Maintenance |
||||
|
|
||||
|
- **Cross-references**: Update when moving files between directories |
||||
|
- **Markdown validation**: Run `npm run markdown:check` after any changes |
||||
|
- **Organization**: Keep related rules in appropriate subdirectories |
||||
|
- **Documentation**: Update this README when adding new rules or directories |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Active organization structure |
||||
|
**Last Updated**: 2025-08-21 |
||||
|
**Maintainer**: Development team |
@ -0,0 +1,192 @@ |
|||||
|
# Meta-Rule: Core Always-On Rules |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-21 |
||||
|
**Status**: 🎯 **ACTIVE** - Core rules for every prompt |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule bundles the core rules that should be applied to **every single |
||||
|
prompt** because they define fundamental behaviors, principles, and context |
||||
|
that are essential for all AI interactions. |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
**ALWAYS** - These rules apply to every single prompt, regardless of the task |
||||
|
or context. They form the foundation for all AI assistant behavior. |
||||
|
|
||||
|
## Bundled Rules |
||||
|
|
||||
|
### **Core Human Competence Principles** |
||||
|
|
||||
|
- **`core/base_context.mdc`** - Human competence first principles, interaction |
||||
|
guidelines, and output contract requirements |
||||
|
- **`core/less_complex.mdc`** - Minimalist solution principle and complexity |
||||
|
guidelines |
||||
|
|
||||
|
### **Time & Context Standards** |
||||
|
|
||||
|
- **`development/time.mdc`** - Time handling principles and UTC standards |
||||
|
- **`development/time_examples.mdc`** - Practical time implementation examples |
||||
|
- **`development/time_implementation.mdc`** - Detailed time implementation |
||||
|
guidelines |
||||
|
|
||||
|
### **Version Control & Process** |
||||
|
|
||||
|
- **`workflow/version_control.mdc`** - Version control principles and commit |
||||
|
guidelines |
||||
|
- **`workflow/commit_messages.mdc`** - Commit message format and conventions |
||||
|
|
||||
|
### **Application Context** |
||||
|
|
||||
|
- **`app/timesafari.mdc`** - Core TimeSafari application context and |
||||
|
development principles |
||||
|
- **`app/timesafari_development.mdc`** - TimeSafari-specific development |
||||
|
workflow and quality standards |
||||
|
|
||||
|
## Why These Rules Are Always-On |
||||
|
|
||||
|
### **Base Context** |
||||
|
|
||||
|
- **Human Competence First**: Every interaction must increase human competence |
||||
|
- **Output Contract**: All responses must follow the required structure |
||||
|
- **Competence Hooks**: Learning and collaboration must be built into every response |
||||
|
|
||||
|
### **Time Standards** |
||||
|
|
||||
|
- **UTC Consistency**: All timestamps must use UTC for system operations |
||||
|
- **Evidence Collection**: Time context is essential for debugging and investigation |
||||
|
- **Cross-Platform**: Time handling affects all platforms and features |
||||
|
|
||||
|
### **Version Control** |
||||
|
|
||||
|
- **Commit Standards**: Every code change must follow commit message conventions |
||||
|
- **Process Consistency**: Version control affects all development work |
||||
|
- **Team Collaboration**: Commit standards enable effective team communication |
||||
|
|
||||
|
### **Application Context** |
||||
|
|
||||
|
- **Platform Awareness**: Every task must consider web/mobile/desktop platforms |
||||
|
- **Architecture Principles**: All work must follow TimeSafari patterns |
||||
|
- **Development Standards**: Quality and testing requirements apply to all work |
||||
|
|
||||
|
## Application Priority |
||||
|
|
||||
|
### **Primary (Apply First)** |
||||
|
|
||||
|
1. **Base Context** - Human competence and output contract |
||||
|
2. **Time Standards** - UTC and timestamp requirements |
||||
|
3. **Application Context** - TimeSafari principles and platforms |
||||
|
|
||||
|
### **Secondary (Apply as Needed)** |
||||
|
|
||||
|
1. **Version Control** - When making code changes |
||||
|
2. **Complexity Guidelines** - When evaluating solution approaches |
||||
|
|
||||
|
## Integration with Other Meta-Rules |
||||
|
|
||||
|
### **Feature Planning** |
||||
|
|
||||
|
- Base context ensures human competence focus |
||||
|
- Time standards inform planning and estimation |
||||
|
- Application context drives platform considerations |
||||
|
|
||||
|
### **Bug Diagnosis** |
||||
|
|
||||
|
- Base context ensures systematic investigation |
||||
|
- Time standards enable proper evidence collection |
||||
|
- Application context provides system understanding |
||||
|
|
||||
|
### **Bug Fixing** |
||||
|
|
||||
|
- Base context ensures quality implementation |
||||
|
- Time standards maintain logging consistency |
||||
|
- Application context guides testing strategy |
||||
|
|
||||
|
### **Feature Implementation** |
||||
|
|
||||
|
- Base context ensures proper development approach |
||||
|
- Time standards maintain system consistency |
||||
|
- Application context drives architecture decisions |
||||
|
|
||||
|
## Success Criteria |
||||
|
|
||||
|
- [ ] **Base context applied** to every single prompt |
||||
|
- [ ] **Time standards followed** for all timestamps and logging |
||||
|
- [ ] **Version control standards** applied to all code changes |
||||
|
- [ ] **Application context considered** for all platform work |
||||
|
- [ ] **Human competence focus** maintained in all interactions |
||||
|
- [ ] **Output contract structure** followed in all responses |
||||
|
|
||||
|
## Common Pitfalls |
||||
|
|
||||
|
- **Don't skip base context** - loses human competence focus |
||||
|
- **Don't ignore time standards** - creates inconsistent timestamps |
||||
|
- **Don't forget application context** - misses platform considerations |
||||
|
- **Don't skip version control** - creates inconsistent commit history |
||||
|
- **Don't lose competence focus** - reduces learning value |
||||
|
|
||||
|
## Feedback & Improvement |
||||
|
|
||||
|
### **Rule Effectiveness Ratings (1-5 scale)** |
||||
|
|
||||
|
- **Base Context**: ___/5 - Comments: _______________ |
||||
|
- **Time Standards**: ___/5 - Comments: _______________ |
||||
|
- **Version Control**: ___/5 - Comments: _______________ |
||||
|
- **Application Context**: ___/5 - Comments: _______________ |
||||
|
|
||||
|
### **Always-On Effectiveness** |
||||
|
|
||||
|
- **Consistency**: Are these rules applied consistently across all prompts? |
||||
|
- **Value**: Do these rules add value to every interaction? |
||||
|
- **Overhead**: Are these rules too burdensome for simple tasks? |
||||
|
|
||||
|
### **Integration Feedback** |
||||
|
|
||||
|
- **With Other Meta-Rules**: How well do these integrate with workflow rules? |
||||
|
- **Context Switching**: Do these rules help or hinder context switching? |
||||
|
- **Learning Curve**: Are these rules easy for new users to understand? |
||||
|
|
||||
|
### **Overall Experience** |
||||
|
|
||||
|
- **Quality Improvement**: Do these rules improve response quality? |
||||
|
- **Efficiency**: Do these rules make interactions more efficient? |
||||
|
- **Recommendation**: Would you recommend keeping these always-on? |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Every Prompt |
||||
|
|
||||
|
- [ ] **Base Context**: Ensure human competence principles are active |
||||
|
- [ ] **Time Standards**: Verify UTC and timestamp requirements are clear |
||||
|
- [ ] **Application Context**: Confirm TimeSafari context is loaded |
||||
|
- [ ] **Version Control**: Prepare commit standards if code changes are needed |
||||
|
|
||||
|
### During Response Creation |
||||
|
|
||||
|
- [ ] **Output Contract**: Follow required response structure |
||||
|
- [ ] **Competence Hooks**: Include learning and collaboration elements |
||||
|
- [ ] **Time Consistency**: Apply UTC standards for all time references |
||||
|
- [ ] **Platform Awareness**: Consider all target platforms |
||||
|
|
||||
|
### After Response Creation |
||||
|
|
||||
|
- [ ] **Validation**: Verify all always-on rules were applied |
||||
|
- [ ] **Quality Check**: Ensure response meets competence standards |
||||
|
- [ ] **Context Review**: Confirm application context was properly considered |
||||
|
- [ ] **Feedback Collection**: Note any issues with always-on application |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_feature_planning.mdc` for workflow-specific rules |
||||
|
- `.cursor/rules/meta_bug_diagnosis.mdc` for investigation workflows |
||||
|
- `.cursor/rules/meta_bug_fixing.mdc` for fix implementation |
||||
|
- `.cursor/rules/meta_feature_implementation.mdc` for feature development |
||||
|
|
||||
|
**Status**: Active core always-on meta-rule |
||||
|
**Priority**: Critical (applies to every prompt) |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: All AI interactions, Development team |
@ -0,0 +1,193 @@ |
|||||
|
# TimeSafari Cross-Platform Architecture Guide |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Architecture guidelines |
||||
|
|
||||
|
## 1. Platform Support Matrix |
||||
|
|
||||
|
| Feature | Web (PWA) | Capacitor (Mobile) | Electron (Desktop) | |
||||
|
|---------|-----------|--------------------|-------------------| |
||||
|
| QR Code Scanning | WebInlineQRScanner | @capacitor-mlkit/barcode-scanning | |
||||
|
Not Implemented | |
||||
|
| Deep Linking | URL Parameters | App URL Open Events | Not Implemented | |
||||
|
| File System | Limited (Browser API) | Capacitor Filesystem | Electron fs | |
||||
|
| Camera Access | MediaDevices API | Capacitor Camera | Not Implemented | |
||||
|
| Platform Detection | Web APIs | Capacitor.isNativePlatform() | process.env |
||||
|
checks | |
||||
|
|
||||
|
## 2. Project Structure |
||||
|
|
||||
|
### Core Directories |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
src/ |
||||
|
├── components/ # Vue components |
||||
|
├── services/ # Platform services and business logic |
||||
|
├── views/ # Page components |
||||
|
├── router/ # Vue router configuration |
||||
|
├── types/ # TypeScript type definitions |
||||
|
├── utils/ # Utility functions |
||||
|
├── lib/ # Core libraries |
||||
|
├── platforms/ # Platform-specific implementations |
||||
|
├── electron/ # Electron-specific code |
||||
|
├── constants/ # Application constants |
||||
|
├── db/ # Database related code |
||||
|
├── interfaces/ # TypeScript interfaces |
||||
|
└── assets/ # Static assets |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Entry Points |
||||
|
|
||||
|
- `main.ts` → Base entry |
||||
|
|
||||
|
- `main.common.ts` → Shared init |
||||
|
|
||||
|
- `main.capacitor.ts` → Mobile entry |
||||
|
|
||||
|
- `main.electron.ts` → Electron entry |
||||
|
|
||||
|
- `main.web.ts` → Web entry |
||||
|
|
||||
|
## 3. Service Architecture |
||||
|
|
||||
|
### Service Organization |
||||
|
|
||||
|
```tree |
||||
|
|
||||
|
services/ |
||||
|
├── QRScanner/ |
||||
|
│ ├── WebInlineQRScanner.ts |
||||
|
│ └── interfaces.ts |
||||
|
├── platforms/ |
||||
|
│ ├── WebPlatformService.ts |
||||
|
│ ├── CapacitorPlatformService.ts |
||||
|
│ └── ElectronPlatformService.ts |
||||
|
└── factory/ |
||||
|
└── PlatformServiceFactory.ts |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Factory Pattern |
||||
|
|
||||
|
Use a **singleton factory** to select platform services via |
||||
|
`process.env.VITE_PLATFORM`. |
||||
|
|
||||
|
## 4. Feature Guidelines |
||||
|
|
||||
|
### QR Code Scanning |
||||
|
|
||||
|
- Define `QRScannerService` interface. |
||||
|
|
||||
|
- Implement platform-specific classes (`WebInlineQRScanner`, Capacitor, |
||||
|
|
||||
|
etc). |
||||
|
|
||||
|
- Provide `addListener` and `onStream` hooks for composability. |
||||
|
|
||||
|
### Deep Linking |
||||
|
|
||||
|
- URL format: `timesafari://<route>[/<param>][?query=value]` |
||||
|
|
||||
|
- Web: `router.beforeEach` → parse query |
||||
|
|
||||
|
- Capacitor: `App.addListener("appUrlOpen", …)` |
||||
|
|
||||
|
## 5. Build Process |
||||
|
|
||||
|
- `vite.config.common.mts` → shared config |
||||
|
|
||||
|
- Platform configs: `vite.config.web.mts`, `.capacitor.mts`, |
||||
|
|
||||
|
`.electron.mts` |
||||
|
|
||||
|
- Use `process.env.VITE_PLATFORM` for conditional loading. |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
npm run build:web |
||||
|
npm run build:capacitor |
||||
|
npm run build:electron |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## 6. Testing Strategy |
||||
|
|
||||
|
- **Unit Tests**: Jest for business logic and utilities |
||||
|
|
||||
|
- **E2E Tests**: Playwright for critical user journeys |
||||
|
|
||||
|
- **Platform Tests**: Test platform-specific implementations |
||||
|
|
||||
|
- **Integration Tests**: Test service interactions |
||||
|
|
||||
|
## 7. Key Principles |
||||
|
|
||||
|
### Platform Independence |
||||
|
|
||||
|
- **Abstract platform differences** behind interfaces |
||||
|
|
||||
|
- **Use factory pattern** for service selection |
||||
|
|
||||
|
- **Maintain consistent APIs** across platforms |
||||
|
|
||||
|
- **Graceful degradation** when features unavailable |
||||
|
|
||||
|
### Code Organization |
||||
|
|
||||
|
- **Single responsibility** for each service |
||||
|
|
||||
|
- **Interface segregation** for platform services |
||||
|
|
||||
|
- **Dependency injection** via mixins |
||||
|
|
||||
|
- **Composition over inheritance** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/app/architectural_implementation.mdc` for |
||||
|
|
||||
|
detailed implementation details |
||||
|
|
||||
|
- `.cursor/rules/app/architectural_patterns.mdc` for architectural patterns and |
||||
|
|
||||
|
examples |
||||
|
|
||||
|
**Status**: Active architecture guidelines |
||||
|
**Priority**: Critical |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: timesafari.mdc |
||||
|
**Stakeholders**: Development team, Architecture team |
||||
|
|
||||
|
- [ ] Have relevant ADRs been updated/linked? |
||||
|
|
||||
|
- [ ] Did I add competence hooks or prompts for the team? |
||||
|
|
||||
|
- [ ] Was human interaction (sync/review/demo) scheduled? |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Architectural Decisions |
||||
|
|
||||
|
- [ ] **Decision Context**: Understand the architectural challenge to be addressed |
||||
|
- [ ] **Stakeholder Identification**: Identify all decision makers and affected parties |
||||
|
- [ ] **Research**: Research alternatives and gather evidence |
||||
|
- [ ] **Impact Assessment**: Assess impact on existing architecture |
||||
|
|
||||
|
### During Architectural Decisions |
||||
|
|
||||
|
- [ ] **Context Documentation**: Document the context and forces at play |
||||
|
- [ ] **Decision Recording**: Record the decision and rationale clearly |
||||
|
- [ ] **Consequences Analysis**: Analyze positive, negative, and neutral consequences |
||||
|
- [ ] **Alternatives Documentation**: Document alternatives considered and why rejected |
||||
|
|
||||
|
### After Architectural Decisions |
||||
|
|
||||
|
- [ ] **ADR Creation**: Create or update Architectural Decision Record |
||||
|
- [ ] **Team Communication**: Communicate decision to all stakeholders |
||||
|
- [ ] **Implementation Planning**: Plan implementation of the architectural decision |
||||
|
- [ ] **Documentation Update**: Update relevant architectural documentation |
@ -0,0 +1,246 @@ |
|||||
|
# Time Safari Architecture — Examples and Testing |
||||
|
|
||||
|
> **Agent role**: Reference this file for architectural examples and |
||||
|
testing patterns when working with TimeSafari architecture. |
||||
|
|
||||
|
## Error Handling Patterns |
||||
|
|
||||
|
### Global Error Handler |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// main.ts |
||||
|
app.config.errorHandler = (err, instance, info) => { |
||||
|
const componentName = instance?.$options?.name || 'Unknown'; |
||||
|
logger.error(`[${componentName}] Vue error`, err, info); |
||||
|
}; |
||||
|
|
||||
|
window.addEventListener('unhandledrejection', (event) => { |
||||
|
logger.error('[Global] Unhandled promise rejection', event.reason); |
||||
|
}); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Platform-Specific Error Wrapping |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// services/platforms/CapacitorPlatformService.ts |
||||
|
export class CapacitorPlatformService { |
||||
|
async getFileContents(path: string): Promise<string> { |
||||
|
try { |
||||
|
const result = await Filesystem.readFile({ |
||||
|
path: path, |
||||
|
encoding: 'utf8' |
||||
|
}); |
||||
|
return result.data; |
||||
|
} catch (error) { |
||||
|
logger.error('[Capacitor API Error] Failed to read file', error, path); |
||||
|
throw new Error(`Failed to read file: ${path}`); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Testing Patterns |
||||
|
|
||||
|
### Platform-Specific Test Skipping |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// tests/QRScanner.test.ts |
||||
|
describe('QRScanner Service', () => { |
||||
|
test('should start scanning on web', async () => { |
||||
|
test.skip(process.env.VITE_PLATFORM !== 'web', 'Web-only test'); |
||||
|
|
||||
|
const scanner = new WebInlineQRScanner(); |
||||
|
await scanner.startScanning(); |
||||
|
// Assert scanning started |
||||
|
}); |
||||
|
|
||||
|
test('should start scanning on mobile', async () => { |
||||
|
test.skip(process.env.VITE_PLATFORM !== 'capacitor', 'Mobile-only test'); |
||||
|
|
||||
|
const scanner = new CapacitorQRScanner(); |
||||
|
await scanner.startScanning(); |
||||
|
// Assert scanning started |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Mock Service Testing |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// tests/mocks/QRScannerMock.ts |
||||
|
export class QRScannerMock implements QRScannerService { |
||||
|
private isScanning = false; |
||||
|
private listeners: Map<string, Function[]> = new Map(); |
||||
|
|
||||
|
async startScanning(): Promise<void> { |
||||
|
this.isScanning = true; |
||||
|
this.emit('scanningStarted'); |
||||
|
} |
||||
|
|
||||
|
async stopScanning(): Promise<void> { |
||||
|
this.isScanning = false; |
||||
|
this.emit('scanningStopped'); |
||||
|
} |
||||
|
|
||||
|
addListener(event: string, callback: Function): void { |
||||
|
if (!this.listeners.has(event)) { |
||||
|
this.listeners.set(event, []); |
||||
|
} |
||||
|
this.listeners.get(event)!.push(callback); |
||||
|
} |
||||
|
|
||||
|
removeListener(event: string, callback: Function): void { |
||||
|
const callbacks = this.listeners.get(event); |
||||
|
if (callbacks) { |
||||
|
const index = callbacks.indexOf(callback); |
||||
|
if (index > -1) { |
||||
|
callbacks.splice(index, 1); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private emit(event: string, ...args: any[]): void { |
||||
|
const callbacks = this.listeners.get(event); |
||||
|
if (callbacks) { |
||||
|
callbacks.forEach(callback => callback(...args)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
getScanningState(): boolean { |
||||
|
return this.isScanning; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Integration Examples |
||||
|
|
||||
|
### Service Composition |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// services/QRScannerService.ts |
||||
|
export class QRScannerService { |
||||
|
constructor( |
||||
|
private platformService: PlatformService, |
||||
|
private notificationService: NotificationService |
||||
|
) {} |
||||
|
|
||||
|
async startScanning(): Promise<void> { |
||||
|
try { |
||||
|
await this.platformService.startCamera(); |
||||
|
this.notificationService.show('Camera started'); |
||||
|
} catch (error) { |
||||
|
this.notificationService.showError('Failed to start camera'); |
||||
|
throw error; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Component Integration |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// components/QRScannerDialog.vue |
||||
|
export default class QRScannerDialog extends Vue { |
||||
|
@Inject() private qrScannerService!: QRScannerService; |
||||
|
|
||||
|
async mounted() { |
||||
|
try { |
||||
|
await this.qrScannerService.startScanning(); |
||||
|
} catch (error) { |
||||
|
this.$notify.error('Failed to start scanner'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
beforeDestroy() { |
||||
|
this.qrScannerService.stopScanning(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Best Practices |
||||
|
|
||||
|
### Service Design |
||||
|
|
||||
|
- Keep services focused and single-purpose |
||||
|
|
||||
|
- Use dependency injection for service composition |
||||
|
|
||||
|
- Implement proper error handling and logging |
||||
|
|
||||
|
- Provide clear interfaces and contracts |
||||
|
|
||||
|
### Testing Strategy |
||||
|
|
||||
|
- Test platform-specific behavior separately |
||||
|
|
||||
|
- Use mocks for external dependencies |
||||
|
|
||||
|
- Test error conditions and edge cases |
||||
|
|
||||
|
- Validate service contracts and interfaces |
||||
|
|
||||
|
### Error Handling |
||||
|
|
||||
|
- Log errors with appropriate context |
||||
|
|
||||
|
- Provide user-friendly error messages |
||||
|
|
||||
|
- Implement graceful degradation |
||||
|
|
||||
|
- Handle platform-specific error scenarios |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/app/architectural_decision_record.mdc` for |
||||
|
|
||||
|
core architecture principles |
||||
|
|
||||
|
- `.cursor/rules/app/architectural_implementation.mdc` for |
||||
|
|
||||
|
implementation details |
||||
|
|
||||
|
- `.cursor/rules/app/architectural_patterns.mdc` for core patterns |
||||
|
|
||||
|
**Status**: Active examples and testing guide |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: architectural_patterns.mdc |
||||
|
**Stakeholders**: Development team, Testing team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Architectural Examples |
||||
|
|
||||
|
- [ ] **Pattern Selection**: Choose appropriate architectural pattern for the use |
||||
|
case |
||||
|
- [ ] **Service Design**: Plan service structure and dependencies |
||||
|
- [ ] **Testing Strategy**: Plan testing approach for the example |
||||
|
- [ ] **Error Handling**: Plan error handling and logging strategy |
||||
|
|
||||
|
### During Architectural Examples |
||||
|
|
||||
|
- [ ] **Service Implementation**: Implement focused, single-purpose services |
||||
|
- [ ] **Dependency Injection**: Use proper dependency injection patterns |
||||
|
- [ ] **Error Handling**: Implement proper error handling and logging |
||||
|
- [ ] **Interface Design**: Provide clear interfaces and contracts |
||||
|
|
||||
|
### After Architectural Examples |
||||
|
|
||||
|
- [ ] **Testing Execution**: Test platform-specific behavior separately |
||||
|
- [ ] **Service Validation**: Validate service contracts and interfaces |
||||
|
- [ ] **Error Testing**: Test error conditions and edge cases |
||||
|
- [ ] **Documentation**: Update architectural examples documentation |
@ -0,0 +1,139 @@ |
|||||
|
# Time Safari Architecture — Implementation Details |
||||
|
|
||||
|
> **Agent role**: Reference this file for detailed implementation details when |
||||
|
working with TimeSafari architecture implementation. |
||||
|
|
||||
|
## Error Handling |
||||
|
|
||||
|
- Global Vue error handler → logs with component name. |
||||
|
|
||||
|
- Platform-specific wrappers log API errors with platform prefix |
||||
|
|
||||
|
(`[Capacitor API Error]`, etc). |
||||
|
|
||||
|
- Use structured logging (not `console.log`). |
||||
|
|
||||
|
## Best Practices |
||||
|
|
||||
|
- Keep platform code **isolated** in `platforms/`. |
||||
|
|
||||
|
- Always define a **shared interface** first. |
||||
|
|
||||
|
- Use feature detection, not platform detection, when possible. |
||||
|
|
||||
|
- Dependency injection for services → improves testability. |
||||
|
|
||||
|
- Maintain **Competence Hooks** in PRs (2–3 prompts for dev |
||||
|
|
||||
|
discussion). |
||||
|
|
||||
|
## Dependency Management |
||||
|
|
||||
|
- Key deps: `@capacitor/core`, `electron`, `vue`. |
||||
|
|
||||
|
- Use conditional `import()` for platform-specific libs. |
||||
|
|
||||
|
## Security Considerations |
||||
|
|
||||
|
- **Permissions**: Always check + request gracefully. |
||||
|
|
||||
|
- **Storage**: Secure storage for sensitive data; encrypt when possible. |
||||
|
|
||||
|
- **Audits**: Schedule quarterly security reviews. |
||||
|
|
||||
|
## ADR Process |
||||
|
|
||||
|
- All major architecture choices → log in `doc/adr/`. |
||||
|
|
||||
|
- Use ADR template with Context, Decision, Consequences, Status. |
||||
|
|
||||
|
- Link related ADRs in PR descriptions. |
||||
|
|
||||
|
> 🔗 **Human Hook:** When proposing a new ADR, schedule a 30-min |
||||
|
> design sync for discussion, not just async review. |
||||
|
|
||||
|
## Collaboration Hooks |
||||
|
|
||||
|
- **QR features**: Sync with Security before merging → permissions & |
||||
|
|
||||
|
privacy. |
||||
|
|
||||
|
- **New platform builds**: Demo in team meeting → confirm UX |
||||
|
|
||||
|
differences. |
||||
|
|
||||
|
- **Critical ADRs**: Present in guild or architecture review. |
||||
|
|
||||
|
## Testing Implementation |
||||
|
|
||||
|
- **Unit tests** for services. |
||||
|
|
||||
|
- **Playwright** for Web + Capacitor: |
||||
|
|
||||
|
- `playwright.config-local.ts` includes web + Pixel 5. |
||||
|
|
||||
|
- **Electron tests**: add `spectron` or Playwright-Electron. |
||||
|
|
||||
|
- Mark tests with platform tags: |
||||
|
|
||||
|
```ts |
||||
|
|
||||
|
test.skip(!process.env.MOBILE_TEST, "Mobile-only test"); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
> 🔗 **Human Hook:** Before merging new tests, hold a short sync (≤15 |
||||
|
> min) with QA to align on coverage and flaky test risks. |
||||
|
|
||||
|
## Self-Check |
||||
|
|
||||
|
- [ ] Does this feature implement a shared interface? |
||||
|
|
||||
|
- [ ] Are fallbacks + errors handled gracefully? |
||||
|
|
||||
|
- [ ] Have relevant ADRs been updated/linked? |
||||
|
|
||||
|
- [ ] Did I add competence hooks or prompts for the team? |
||||
|
|
||||
|
- [ ] Was human interaction (sync/review/demo) scheduled? |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/app/architectural_decision_record.mdc` for |
||||
|
|
||||
|
core architecture principles |
||||
|
|
||||
|
- `.cursor/rules/app/architectural_patterns.mdc` for architectural patterns and |
||||
|
|
||||
|
examples |
||||
|
|
||||
|
**Status**: Active implementation guidelines |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: architectural_decision_record.mdc |
||||
|
**Stakeholders**: Development team, Architecture team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Architectural Implementation |
||||
|
|
||||
|
- [ ] **Interface Review**: Verify feature implements shared interface |
||||
|
- [ ] **ADR Review**: Check if ADR is required for major changes |
||||
|
- [ ] **Security Assessment**: Assess security implications for QR features |
||||
|
- [ ] **Platform Planning**: Plan platform-specific implementation details |
||||
|
|
||||
|
### During Architectural Implementation |
||||
|
|
||||
|
- [ ] **Interface Implementation**: Implement shared interfaces consistently |
||||
|
- [ ] **Error Handling**: Implement graceful fallbacks and error handling |
||||
|
- [ ] **Testing Strategy**: Plan unit tests for services and E2E tests |
||||
|
- [ ] **Human Interaction**: Schedule syncs/reviews/demos as needed |
||||
|
|
||||
|
### After Architectural Implementation |
||||
|
|
||||
|
- [ ] **Interface Validation**: Verify shared interfaces are properly implemented |
||||
|
- [ ] **Testing Execution**: Run unit tests and platform-specific tests |
||||
|
- [ ] **ADR Updates**: Update relevant ADRs and link in PR descriptions |
||||
|
- [ ] **Team Communication**: Share implementation results with team |
@ -0,0 +1,214 @@ |
|||||
|
# Time Safari Architecture — Patterns and Examples |
||||
|
|
||||
|
> **Agent role**: Reference this file for architectural patterns and |
||||
|
> examples when working with TimeSafari architecture design. |
||||
|
|
||||
|
## Architectural Patterns |
||||
|
|
||||
|
### Factory Pattern Implementation |
||||
|
|
||||
|
```typescript |
||||
|
// PlatformServiceFactory.ts |
||||
|
export class PlatformServiceFactory { |
||||
|
private static instance: PlatformServiceFactory; |
||||
|
|
||||
|
static getInstance(): PlatformServiceFactory { |
||||
|
if (!PlatformServiceFactory.instance) { |
||||
|
PlatformServiceFactory.instance = new PlatformServiceFactory(); |
||||
|
} |
||||
|
return PlatformServiceFactory.instance; |
||||
|
} |
||||
|
|
||||
|
getQRScannerService(): QRScannerService { |
||||
|
const platform = process.env.VITE_PLATFORM; |
||||
|
|
||||
|
switch (platform) { |
||||
|
case 'web': |
||||
|
return new WebInlineQRScanner(); |
||||
|
case 'capacitor': |
||||
|
return new CapacitorQRScanner(); |
||||
|
case 'electron': |
||||
|
return new ElectronQRScanner(); |
||||
|
default: |
||||
|
throw new Error(`Unsupported platform: ${platform}`); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### Service Interface Definition |
||||
|
|
||||
|
```typescript |
||||
|
// interfaces/QRScannerService.ts |
||||
|
export interface QRScannerService { |
||||
|
startScanning(): Promise<void>; |
||||
|
stopScanning(): Promise<void>; |
||||
|
addListener(event: string, callback: Function): void; |
||||
|
removeListener(event: string, callback: Function): void; |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### Platform-Specific Implementation |
||||
|
|
||||
|
```typescript |
||||
|
// services/QRScanner/WebInlineQRScanner.ts |
||||
|
export class WebInlineQRScanner implements QRScannerService { |
||||
|
private listeners: Map<string, Function[]> = new Map(); |
||||
|
|
||||
|
async startScanning(): Promise<void> { |
||||
|
// Web-specific implementation |
||||
|
const stream = await navigator.mediaDevices.getUserMedia({ video: true }); |
||||
|
// Process video stream for QR codes |
||||
|
} |
||||
|
|
||||
|
async stopScanning(): Promise<void> { |
||||
|
// Stop video stream |
||||
|
} |
||||
|
|
||||
|
addListener(event: string, callback: Function): void { |
||||
|
if (!this.listeners.has(event)) { |
||||
|
this.listeners.set(event, []); |
||||
|
} |
||||
|
this.listeners.get(event)!.push(callback); |
||||
|
} |
||||
|
|
||||
|
removeListener(event: string, callback: Function): void { |
||||
|
const callbacks = this.listeners.get(event); |
||||
|
if (callbacks) { |
||||
|
const index = callbacks.indexOf(callback); |
||||
|
if (index > -1) { |
||||
|
callbacks.splice(index, 1); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## Deep Linking Implementation |
||||
|
|
||||
|
### URL Format |
||||
|
|
||||
|
``` |
||||
|
timesafari://<route>[/<param>][?query=value] |
||||
|
``` |
||||
|
|
||||
|
### Web Implementation |
||||
|
|
||||
|
```typescript |
||||
|
// router/index.ts |
||||
|
router.beforeEach((to, from, next) => { |
||||
|
// Parse deep link parameters |
||||
|
if (to.query.deepLink) { |
||||
|
const deepLink = to.query.deepLink as string; |
||||
|
// Process deep link |
||||
|
handleDeepLink(deepLink); |
||||
|
} |
||||
|
next(); |
||||
|
}); |
||||
|
|
||||
|
function handleDeepLink(deepLink: string) { |
||||
|
// Parse and route deep link |
||||
|
const url = new URL(deepLink); |
||||
|
const route = url.pathname; |
||||
|
const params = url.searchParams; |
||||
|
|
||||
|
// Navigate to appropriate route |
||||
|
router.push({ name: route, query: Object.fromEntries(params) }); |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### Capacitor Implementation |
||||
|
|
||||
|
```typescript |
||||
|
// main.capacitor.ts |
||||
|
import { App } from '@capacitor/app'; |
||||
|
|
||||
|
App.addListener('appUrlOpen', (data) => { |
||||
|
const url = data.url; |
||||
|
// Parse deep link and navigate |
||||
|
handleDeepLink(url); |
||||
|
}); |
||||
|
``` |
||||
|
|
||||
|
## Platform Detection |
||||
|
|
||||
|
### Feature Detection vs Platform Detection |
||||
|
|
||||
|
```typescript |
||||
|
// ✅ Good: Feature detection |
||||
|
function hasCameraAccess(): boolean { |
||||
|
return 'mediaDevices' in navigator && |
||||
|
'getUserMedia' in navigator.mediaDevices; |
||||
|
} |
||||
|
|
||||
|
// ❌ Bad: Platform detection |
||||
|
function isWeb(): boolean { |
||||
|
return process.env.VITE_PLATFORM === 'web'; |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### Conditional Imports |
||||
|
|
||||
|
```typescript |
||||
|
// services/platforms/index.ts |
||||
|
export async function getPlatformService() { |
||||
|
const platform = process.env.VITE_PLATFORM; |
||||
|
|
||||
|
switch (platform) { |
||||
|
case 'capacitor': |
||||
|
const { CapacitorPlatformService } = |
||||
|
await import('./CapacitorPlatformService'); |
||||
|
return new CapacitorPlatformService(); |
||||
|
case 'electron': |
||||
|
const { ElectronPlatformService } = |
||||
|
await import('./ElectronPlatformService'); |
||||
|
return new ElectronPlatformService(); |
||||
|
default: |
||||
|
const { WebPlatformService } = |
||||
|
await import('./WebPlatformService'); |
||||
|
return new WebPlatformService(); |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/app/architectural_decision_record.mdc` for core |
||||
|
architecture principles |
||||
|
- `.cursor/rules/app/architectural_implementation.mdc` for |
||||
|
implementation details |
||||
|
- `.cursor/rules/app/architectural_examples.mdc` for examples and |
||||
|
testing patterns |
||||
|
|
||||
|
**Status**: Active patterns and examples |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: architectural_decision_record.mdc, |
||||
|
architectural_implementation.mdc |
||||
|
**Stakeholders**: Development team, Architecture team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Architectural Patterns |
||||
|
|
||||
|
- [ ] **Pattern Selection**: Choose appropriate architectural pattern for the use |
||||
|
case |
||||
|
- [ ] **Platform Analysis**: Identify platform-specific requirements |
||||
|
- [ ] **Service Planning**: Plan service structure and dependencies |
||||
|
- [ ] **Testing Strategy**: Plan testing approach for the pattern |
||||
|
|
||||
|
### During Architectural Patterns |
||||
|
|
||||
|
- [ ] **Pattern Implementation**: Implement chosen architectural pattern |
||||
|
- [ ] **Platform Abstraction**: Use platform abstraction layers appropriately |
||||
|
- [ ] **Service Composition**: Compose services using dependency injection |
||||
|
- [ ] **Interface Design**: Provide clear interfaces and contracts |
||||
|
|
||||
|
### After Architectural Patterns |
||||
|
|
||||
|
- [ ] **Pattern Validation**: Verify pattern is implemented correctly |
||||
|
- [ ] **Platform Testing**: Test across all target platforms |
||||
|
- [ ] **Service Testing**: Test service composition and dependencies |
||||
|
- [ ] **Documentation**: Update architectural patterns documentation |
@ -0,0 +1,173 @@ |
|||||
|
--- |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
# Time Safari Context |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Core application context |
||||
|
|
||||
|
## Project Overview |
||||
|
|
||||
|
Time Safari is an application designed to foster community building through |
||||
|
gifts, gratitude, and collaborative projects. The app makes it easy and |
||||
|
intuitive for users of any age and capability to recognize contributions, |
||||
|
build trust networks, and organize collective action. It is built on services |
||||
|
that preserve privacy and data sovereignty. |
||||
|
|
||||
|
## Core Goals |
||||
|
|
||||
|
1. **Connect**: Make it easy, rewarding, and non-threatening for people to |
||||
|
|
||||
|
connect with others who have similar interests, and to initiate activities |
||||
|
together. |
||||
|
|
||||
|
2. **Reveal**: Widely advertise the great support and rewards that are being |
||||
|
|
||||
|
given and accepted freely, especially non-monetary ones, showing the impact |
||||
|
gifts make in people's lives. |
||||
|
|
||||
|
## Technical Foundation |
||||
|
|
||||
|
### Architecture |
||||
|
|
||||
|
- **Privacy-preserving claims architecture** via endorser.ch |
||||
|
|
||||
|
- **Decentralized Identifiers (DIDs)**: User identities based on |
||||
|
|
||||
|
public/private key pairs stored on devices |
||||
|
|
||||
|
- **Cryptographic Verification**: All claims and confirmations are |
||||
|
|
||||
|
cryptographically signed |
||||
|
|
||||
|
- **User-Controlled Visibility**: Users explicitly control who can see their |
||||
|
|
||||
|
identifiers and data |
||||
|
|
||||
|
- **Cross-Platform**: Web (PWA), Mobile (Capacitor), Desktop (Electron) |
||||
|
|
||||
|
### Current Database State |
||||
|
|
||||
|
- **Database**: SQLite via Absurd SQL (browser) and native SQLite |
||||
|
|
||||
|
(mobile/desktop) |
||||
|
|
||||
|
- **Legacy Support**: IndexedDB (Dexie) for backward compatibility |
||||
|
|
||||
|
- **Status**: Modern database architecture fully implemented |
||||
|
|
||||
|
### Core Technologies |
||||
|
|
||||
|
- **Frontend**: Vue 3 + TypeScript + vue-facing-decorator |
||||
|
|
||||
|
- **Styling**: TailwindCSS |
||||
|
|
||||
|
- **Build**: Vite with platform-specific configs |
||||
|
|
||||
|
- **Testing**: Playwright E2E, Jest unit tests |
||||
|
|
||||
|
- **Database**: SQLite (Absurd SQL in browser), IndexedDB (legacy) |
||||
|
|
||||
|
- **State**: Pinia stores |
||||
|
|
||||
|
- **Platform Services**: Abstracted behind interfaces with factory pattern |
||||
|
|
||||
|
## Development Principles |
||||
|
|
||||
|
### Code Organization |
||||
|
|
||||
|
- **Platform Services**: Abstract platform-specific code behind interfaces |
||||
|
|
||||
|
- **Service Factory**: Use `PlatformServiceFactory` for platform selection |
||||
|
|
||||
|
- **Type Safety**: Strict TypeScript, no `any` types, use type guards |
||||
|
|
||||
|
- **Modern Architecture**: Use current platform service patterns |
||||
|
|
||||
|
### Architecture Patterns |
||||
|
|
||||
|
- **Dependency Injection**: Services injected via mixins and factory pattern |
||||
|
|
||||
|
- **Interface Segregation**: Small, focused interfaces over large ones |
||||
|
|
||||
|
- **Composition over Inheritance**: Prefer mixins and composition |
||||
|
|
||||
|
- **Single Responsibility**: Each component/service has one clear purpose |
||||
|
|
||||
|
### Testing Strategy |
||||
|
|
||||
|
- **E2E**: Playwright for critical user journeys |
||||
|
|
||||
|
- **Unit**: Jest with F.I.R.S.T. principles |
||||
|
|
||||
|
- **Platform Coverage**: Web + Capacitor (Pixel 5) in CI |
||||
|
|
||||
|
- **Quality Assurance**: Comprehensive testing and validation |
||||
|
|
||||
|
## Current Development Focus |
||||
|
|
||||
|
### Active Development |
||||
|
|
||||
|
- **Feature Development**: Build new functionality using modern platform |
||||
|
|
||||
|
services |
||||
|
|
||||
|
- **Performance Optimization**: Improve app performance and user experience |
||||
|
|
||||
|
- **Platform Enhancement**: Leverage platform-specific capabilities |
||||
|
|
||||
|
- **Code Quality**: Maintain high standards and best practices |
||||
|
|
||||
|
### Development Metrics |
||||
|
|
||||
|
- **Code Quality**: High standards maintained across all platforms |
||||
|
|
||||
|
- **Performance**: Optimized for all target devices |
||||
|
|
||||
|
- **Testing**: Comprehensive coverage maintained |
||||
|
|
||||
|
- **User Experience**: Focus on intuitive, accessible interfaces |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/app/timesafari_platforms.mdc` for platform-specific details |
||||
|
|
||||
|
- `.cursor/rules/app/timesafari_development.mdc` for |
||||
|
|
||||
|
development workflow details |
||||
|
|
||||
|
**Status**: Active application context |
||||
|
**Priority**: Critical |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Development team, Product team |
||||
|
|
||||
|
- **Dependencies**: Vue 3, TypeScript, SQLite, Capacitor, Electron |
||||
|
|
||||
|
- **Stakeholders**: Development team, Product team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before TimeSafari Development |
||||
|
|
||||
|
- [ ] **Application Context**: Understand TimeSafari's community-building purpose |
||||
|
- [ ] **Platform Analysis**: Identify target platforms (web, mobile, desktop) |
||||
|
- [ ] **Architecture Review**: Review current platform service patterns |
||||
|
- [ ] **Testing Strategy**: Plan testing approach for all platforms |
||||
|
|
||||
|
### During TimeSafari Development |
||||
|
|
||||
|
- [ ] **Platform Services**: Use abstracted platform services via interfaces |
||||
|
- [ ] **Type Safety**: Implement strict TypeScript with type guards |
||||
|
- **Modern Architecture**: Follow current platform service patterns |
||||
|
- [ ] **Performance Focus**: Ensure performance on all target devices |
||||
|
|
||||
|
### After TimeSafari Development |
||||
|
|
||||
|
- [ ] **Cross-Platform Testing**: Test functionality across all platforms |
||||
|
- [ ] **Performance Validation**: Verify performance meets requirements |
||||
|
- [ ] **Code Quality**: Ensure high standards maintained |
||||
|
- [ ] **Documentation Update**: Update relevant documentation |
@ -0,0 +1,174 @@ |
|||||
|
# Time Safari Development — Workflow and Processes |
||||
|
|
||||
|
> **Agent role**: Reference this file for development workflow details when |
||||
|
working with TimeSafari development processes. |
||||
|
|
||||
|
## Development Workflow |
||||
|
|
||||
|
### Build Commands |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
# Web (development) |
||||
|
|
||||
|
npm run build:web |
||||
|
|
||||
|
# Mobile |
||||
|
|
||||
|
npm run build:capacitor |
||||
|
npm run build:native |
||||
|
|
||||
|
# Desktop |
||||
|
|
||||
|
npm run build:electron |
||||
|
npm run build:electron:appimage |
||||
|
npm run build:electron:deb |
||||
|
npm run build:electron:dmg |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Testing Commands |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
# Web E2E |
||||
|
|
||||
|
npm run test:web |
||||
|
|
||||
|
# Mobile |
||||
|
|
||||
|
npm run test:mobile |
||||
|
npm run test:android |
||||
|
npm run test:ios |
||||
|
|
||||
|
# Type checking |
||||
|
|
||||
|
npm run type-check |
||||
|
npm run lint-fix |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Development Principles |
||||
|
|
||||
|
### Code Organization |
||||
|
|
||||
|
- **Platform Services**: Abstract platform-specific code behind interfaces |
||||
|
|
||||
|
- **Service Factory**: Use `PlatformServiceFactory` for platform selection |
||||
|
|
||||
|
- **Type Safety**: Strict TypeScript, no `any` types, use type guards |
||||
|
|
||||
|
- **Modern Architecture**: Use current platform service patterns |
||||
|
|
||||
|
### Architecture Patterns |
||||
|
|
||||
|
- **Dependency Injection**: Services injected via mixins and factory pattern |
||||
|
|
||||
|
- **Interface Segregation**: Small, focused interfaces over large ones |
||||
|
|
||||
|
- **Composition over Inheritance**: Prefer mixins and composition |
||||
|
|
||||
|
- **Single Responsibility**: Each component/service has one clear purpose |
||||
|
|
||||
|
### Testing Strategy |
||||
|
|
||||
|
- **E2E**: Playwright for critical user journeys |
||||
|
|
||||
|
- **Unit**: Jest with F.I.R.S.T. principles |
||||
|
|
||||
|
- **Platform Coverage**: Web + Capacitor (Pixel 5) in CI |
||||
|
|
||||
|
- **Quality Assurance**: Comprehensive testing and validation |
||||
|
|
||||
|
## Current Development Focus |
||||
|
|
||||
|
### Active Development |
||||
|
|
||||
|
- **Feature Development**: Build new functionality using modern platform |
||||
|
|
||||
|
services |
||||
|
|
||||
|
- **Performance Optimization**: Improve app performance and user experience |
||||
|
|
||||
|
- **Platform Enhancement**: Leverage platform-specific capabilities |
||||
|
|
||||
|
- **Code Quality**: Maintain high standards and best practices |
||||
|
|
||||
|
### Development Metrics |
||||
|
|
||||
|
- **Code Quality**: High standards maintained across all platforms |
||||
|
|
||||
|
- **Performance**: Optimized for all target devices |
||||
|
|
||||
|
- **Testing**: Comprehensive coverage maintained |
||||
|
|
||||
|
- **User Experience**: Focus on intuitive, accessible interfaces |
||||
|
|
||||
|
## Development Environment |
||||
|
|
||||
|
### Required Tools |
||||
|
|
||||
|
- **Node.js**: LTS version with npm |
||||
|
|
||||
|
- **Git**: Version control with proper branching strategy |
||||
|
|
||||
|
- **IDE**: VS Code with recommended extensions |
||||
|
|
||||
|
- **Platform Tools**: Android Studio, Xcode (for mobile development) |
||||
|
|
||||
|
### Environment Setup |
||||
|
|
||||
|
1. **Clone Repository**: `git clone <repository-url>` |
||||
|
|
||||
|
2. **Install Dependencies**: `npm install` |
||||
|
|
||||
|
3. **Environment Variables**: Copy `.env.example` to `.env.local` |
||||
|
|
||||
|
4. **Platform Setup**: Follow platform-specific setup guides |
||||
|
|
||||
|
### Quality Assurance |
||||
|
|
||||
|
- **Linting**: ESLint with TypeScript rules |
||||
|
|
||||
|
- **Formatting**: Prettier for consistent code style |
||||
|
|
||||
|
- **Type Checking**: TypeScript strict mode enabled |
||||
|
|
||||
|
- **Testing**: Comprehensive test coverage requirements |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/app/timesafari.mdc` for core application context |
||||
|
|
||||
|
- `.cursor/rules/app/timesafari_platforms.mdc` for platform-specific details |
||||
|
|
||||
|
**Status**: Active development workflow |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: timesafari.mdc, timesafari_platforms.mdc |
||||
|
**Stakeholders**: Development team, DevOps team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before TimeSafari Development |
||||
|
|
||||
|
- [ ] **Environment Setup**: Verify development environment is ready |
||||
|
- [ ] **Platform Tools**: Ensure platform-specific tools are available |
||||
|
- [ ] **Dependencies**: Check all required dependencies are installed |
||||
|
- [ ] **Environment Variables**: Configure local environment variables |
||||
|
|
||||
|
### During TimeSafari Development |
||||
|
|
||||
|
- [ ] **Platform Services**: Use modern platform service patterns |
||||
|
- [ ] **Code Quality**: Follow ESLint and TypeScript strict rules |
||||
|
- [ ] **Testing**: Implement comprehensive testing strategy |
||||
|
- [ ] **Performance**: Optimize for all target platforms |
||||
|
|
||||
|
### After TimeSafari Development |
||||
|
|
||||
|
- [ ] **Quality Checks**: Run linting, formatting, and type checking |
||||
|
- [ ] **Testing**: Execute comprehensive tests across platforms |
||||
|
- [ ] **Performance Validation**: Verify performance meets requirements |
||||
|
- [ ] **Documentation**: Update development documentation |
@ -0,0 +1,167 @@ |
|||||
|
# Time Safari Platforms — Platform-Specific Considerations |
||||
|
|
||||
|
> **Agent role**: Reference this file for platform-specific details when working |
||||
|
with TimeSafari development across different platforms. |
||||
|
|
||||
|
## Platform-Specific Considerations |
||||
|
|
||||
|
### Web (PWA) |
||||
|
|
||||
|
- **QR Scanning**: WebInlineQRScanner |
||||
|
|
||||
|
- **Deep Linking**: URL parameters |
||||
|
|
||||
|
- **File System**: Limited browser APIs |
||||
|
|
||||
|
- **Build**: `npm run build:web` (development build) |
||||
|
|
||||
|
### Mobile (Capacitor) |
||||
|
|
||||
|
- **QR Scanning**: @capacitor-mlkit/barcode-scanning |
||||
|
|
||||
|
- **Deep Linking**: App URL open events |
||||
|
|
||||
|
- **File System**: Capacitor Filesystem |
||||
|
|
||||
|
- **Build**: `npm run build:capacitor` |
||||
|
|
||||
|
### Desktop (Electron) |
||||
|
|
||||
|
- **File System**: Node.js fs |
||||
|
|
||||
|
- **Build**: `npm run build:electron` |
||||
|
|
||||
|
- **Distribution**: AppImage, DEB, DMG packages |
||||
|
|
||||
|
## Platform Compatibility Requirements |
||||
|
|
||||
|
### Cross-Platform Features |
||||
|
|
||||
|
- **Core functionality** must work identically across all platforms |
||||
|
|
||||
|
- **Platform-specific enhancements** should be additive, not required |
||||
|
|
||||
|
- **Fallback behavior** must be graceful when platform features unavailable |
||||
|
|
||||
|
### Platform-Specific Capabilities |
||||
|
|
||||
|
- **Web**: Browser APIs, PWA features, responsive design |
||||
|
|
||||
|
- **Mobile**: Native device features, offline capability, app store compliance |
||||
|
|
||||
|
- **Desktop**: File system access, system integration, native performance |
||||
|
|
||||
|
## Build and Distribution |
||||
|
|
||||
|
### Build Commands |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
# Web (development) |
||||
|
|
||||
|
npm run build:web |
||||
|
|
||||
|
# Mobile |
||||
|
|
||||
|
npm run build:capacitor |
||||
|
npm run build:native |
||||
|
|
||||
|
# Desktop |
||||
|
|
||||
|
npm run build:electron |
||||
|
npm run build:electron:appimage |
||||
|
npm run build:electron:deb |
||||
|
npm run build:electron:dmg |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Testing Commands |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
# Web E2E |
||||
|
|
||||
|
npm run test:web |
||||
|
|
||||
|
# Mobile |
||||
|
|
||||
|
npm run test:mobile |
||||
|
npm run test:android |
||||
|
npm run test:ios |
||||
|
|
||||
|
# Type checking |
||||
|
|
||||
|
npm run type-check |
||||
|
npm run lint-fix |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Key Constraints |
||||
|
|
||||
|
1. **Privacy First**: User identifiers remain private except when explicitly |
||||
|
|
||||
|
shared |
||||
|
|
||||
|
2. **Platform Compatibility**: Features must work across all target platforms |
||||
|
|
||||
|
3. **Performance**: Must remain performant on older/simpler devices |
||||
|
|
||||
|
4. **Modern Architecture**: New features should use current platform services |
||||
|
|
||||
|
5. **Offline Capability**: Key functionality should work offline when feasible |
||||
|
|
||||
|
## Use Cases to Support |
||||
|
|
||||
|
1. **Community Building**: Tools for finding others with shared interests |
||||
|
|
||||
|
2. **Project Coordination**: Easy proposal and collaboration on projects |
||||
|
|
||||
|
3. **Reputation Building**: Showcasing contributions and reliability |
||||
|
|
||||
|
4. **Governance**: Facilitating decision-making and collective governance |
||||
|
|
||||
|
## Resources |
||||
|
|
||||
|
- **Testing**: `docs/migration-testing/` |
||||
|
|
||||
|
- **Architecture**: `docs/architecture-decisions.md` |
||||
|
|
||||
|
- **Build Context**: `docs/build-modernization-context.md` |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/app/timesafari.mdc` for core application context |
||||
|
- `.cursor/rules/app/timesafari_development.mdc` for |
||||
|
|
||||
|
development workflow details |
||||
|
|
||||
|
**Status**: Active platform guidelines |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: timesafari.mdc |
||||
|
**Stakeholders**: Development team, Platform teams |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Platform Development |
||||
|
|
||||
|
- [ ] **Platform Analysis**: Identify all target platforms (web, mobile, desktop) |
||||
|
- [ ] **Feature Requirements**: Understand feature requirements across platforms |
||||
|
- [ ] **Platform Constraints**: Review platform-specific limitations and capabilities |
||||
|
- [ ] **Testing Strategy**: Plan testing approach for all target platforms |
||||
|
|
||||
|
### During Platform Development |
||||
|
|
||||
|
- [ ] **Cross-Platform Implementation**: Implement features across all platforms |
||||
|
- [ ] **Platform Services**: Use current platform services for new features |
||||
|
- [ ] **Performance Optimization**: Ensure performance on older/simpler devices |
||||
|
- [ ] **Offline Capability**: Implement offline functionality where feasible |
||||
|
|
||||
|
### After Platform Development |
||||
|
|
||||
|
- [ ] **Cross-Platform Testing**: Test functionality across all target platforms |
||||
|
- [ ] **Performance Validation**: Verify performance meets requirements |
||||
|
- [ ] **Documentation Update**: Update platform-specific documentation |
||||
|
- [ ] **Team Communication**: Share platform implementation results with team |
@ -0,0 +1,75 @@ |
|||||
|
# Architecture Rules Directory |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-20 |
||||
|
**Status**: 🎯 **ACTIVE** - Architecture protection guidelines |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
This directory contains MDC (Model Directive Configuration) rules that protect |
||||
|
critical architectural components of the TimeSafari project. These rules ensure |
||||
|
that changes to system architecture follow proper review, testing, and |
||||
|
documentation procedures. |
||||
|
|
||||
|
## Available Rules |
||||
|
|
||||
|
### Build Architecture Guard (`build_architecture_guard.mdc`) |
||||
|
|
||||
|
Protects the multi-platform build system including: |
||||
|
|
||||
|
- Vite configuration files |
||||
|
- Build scripts and automation |
||||
|
- Platform-specific configurations (iOS, Android, Electron, Web) |
||||
|
- Docker and deployment infrastructure |
||||
|
- CI/CD pipeline components |
||||
|
|
||||
|
**When to use**: Any time you're modifying build scripts, configuration files, |
||||
|
or deployment processes. |
||||
|
|
||||
|
**Authorization levels**: |
||||
|
|
||||
|
- **Level 1**: Minor changes (review required) |
||||
|
- **Level 2**: Moderate changes (testing required) |
||||
|
- **Level 3**: Major changes (ADR required) |
||||
|
|
||||
|
## Usage Guidelines |
||||
|
|
||||
|
### For Developers |
||||
|
|
||||
|
1. **Check the rule**: Before making architectural changes, review the relevant |
||||
|
rule |
||||
|
2. **Follow the process**: Use the appropriate authorization level |
||||
|
3. **Complete validation**: Run through the required checklist |
||||
|
4. **Update documentation**: Keep BUILDING.md and related docs current |
||||
|
|
||||
|
### For Reviewers |
||||
|
|
||||
|
1. **Verify authorization**: Ensure changes match the required level |
||||
|
2. **Check testing**: Confirm appropriate testing has been completed |
||||
|
3. **Validate documentation**: Ensure BUILDING.md reflects changes |
||||
|
4. **Assess risk**: Consider impact on other platforms and systems |
||||
|
|
||||
|
## Integration with Other Rules |
||||
|
|
||||
|
- **Version Control**: Works with `workflow/version_control.mdc` |
||||
|
- **Research & Diagnostic**: Supports `research_diagnostic.mdc` for |
||||
|
investigations |
||||
|
- **Software Development**: Aligns with development best practices |
||||
|
- **Markdown Automation**: Integrates with `docs/markdown-automation.mdc` for |
||||
|
consistent documentation formatting |
||||
|
|
||||
|
## Emergency Procedures |
||||
|
|
||||
|
If architectural changes cause system failures: |
||||
|
|
||||
|
1. **Immediate rollback** to last known working state |
||||
|
2. **Document the failure** with full error details |
||||
|
3. **Investigate root cause** using diagnostic workflows |
||||
|
4. **Update procedures** to prevent future failures |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Active architecture protection |
||||
|
**Priority**: Critical |
||||
|
**Maintainer**: Development team |
||||
|
**Next Review**: 2025-09-20 |
@ -0,0 +1,186 @@ |
|||||
|
|
||||
|
# Build Architecture Guard Directive |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-22 |
||||
|
**Status**: 🎯 **ACTIVE** - Build system protection guidelines |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
Protect the TimeSafari building architecture from unauthorized changes that |
||||
|
could break the multi-platform build pipeline, deployment processes, or |
||||
|
development workflow. This directive ensures all build system modifications |
||||
|
follow proper review, testing, and documentation procedures. |
||||
|
|
||||
|
**Note**: Recent Android build system enhancements (2025-08-22) include |
||||
|
sophisticated asset validation, platform-specific API routing, and automatic |
||||
|
resource regeneration. These features require enhanced testing and validation |
||||
|
procedures. |
||||
|
|
||||
|
## Protected Architecture Components |
||||
|
|
||||
|
### Core Build Infrastructure |
||||
|
|
||||
|
- **Vite Configuration Files**: `vite.config.*.mts` files |
||||
|
|
||||
|
- **Build Scripts**: All scripts in `scripts/` directory |
||||
|
|
||||
|
- **Package Scripts**: `package.json` build-related scripts |
||||
|
|
||||
|
- **Platform Configs**: `capacitor.config.ts`, `electron/`, `android/`, |
||||
|
|
||||
|
`ios/` |
||||
|
|
||||
|
- **Docker Configuration**: `Dockerfile`, `docker-compose.yml` |
||||
|
|
||||
|
- **Environment Files**: `.env.*`, `.nvmrc`, `.node-version` |
||||
|
|
||||
|
### Android-Specific Build Validation |
||||
|
|
||||
|
- **Asset Validation Scripts**: |
||||
|
|
||||
|
`validate_android_assets()` function and resource checking |
||||
|
|
||||
|
- **Resource Generation**: `capacitor-assets` integration and verification |
||||
|
|
||||
|
- **Platform-Specific IP Handling**: |
||||
|
|
||||
|
Android emulator vs physical device API routing |
||||
|
|
||||
|
- **Build Mode Validation**: Development/test/production mode handling |
||||
|
|
||||
|
- **Resource Fallback Logic**: |
||||
|
|
||||
|
Automatic regeneration of missing Android resources |
||||
|
|
||||
|
### Critical Build Dependencies |
||||
|
|
||||
|
- **Build Tools**: Vite, Capacitor, Electron, Android SDK, Xcode |
||||
|
|
||||
|
- **Asset Management**: `capacitor-assets.config.json`, asset scripts |
||||
|
|
||||
|
- **Testing Infrastructure**: Playwright, Jest, mobile test scripts |
||||
|
|
||||
|
- **CI/CD Pipeline**: GitHub Actions, build validation scripts |
||||
|
|
||||
|
- **Service Worker Assembly**: `sw_scripts/`, `sw_combine.js`, WASM copy steps |
||||
|
|
||||
|
## Change Authorization Requirements |
||||
|
|
||||
|
### Level 1: Minor Changes (Requires Review) |
||||
|
|
||||
|
- Documentation updates to `BUILDING.md` |
||||
|
|
||||
|
- Non-breaking script improvements |
||||
|
|
||||
|
- Test additions or improvements |
||||
|
|
||||
|
- Asset configuration updates |
||||
|
|
||||
|
**Process**: Code review + basic testing |
||||
|
|
||||
|
### Level 2: Moderate Changes (Requires Testing) |
||||
|
|
||||
|
- New build script additions |
||||
|
|
||||
|
- Environment variable changes |
||||
|
|
||||
|
- Dependency version updates |
||||
|
|
||||
|
- Platform-specific optimizations |
||||
|
|
||||
|
- **Build script argument parsing**: |
||||
|
|
||||
|
New flag handling (--api-ip, --auto-run, --deploy) |
||||
|
|
||||
|
- **Platform-specific environment overrides**: |
||||
|
|
||||
|
Android API server IP customization |
||||
|
|
||||
|
- **Asset regeneration logic**: Automatic fallback for missing Android resources |
||||
|
|
||||
|
**Process**: Code review + platform testing + documentation update |
||||
|
|
||||
|
### Level 3: Major Changes (Requires ADR) |
||||
|
|
||||
|
- Build system architecture changes |
||||
|
|
||||
|
- New platform support |
||||
|
|
||||
|
- Breaking changes to build scripts |
||||
|
|
||||
|
- Major dependency migrations |
||||
|
|
||||
|
**Process**: ADR creation + comprehensive testing + team review |
||||
|
|
||||
|
## Prohibited Actions |
||||
|
|
||||
|
### ❌ Never Allow Without ADR |
||||
|
|
||||
|
- **Delete or rename** core build scripts |
||||
|
|
||||
|
- **Modify** `package.json` build script names |
||||
|
|
||||
|
- **Change** Vite configuration structure |
||||
|
|
||||
|
- **Remove** platform-specific build targets |
||||
|
|
||||
|
- **Alter** Docker build process |
||||
|
|
||||
|
- **Modify** CI/CD pipeline without testing |
||||
|
|
||||
|
### ❌ Never Allow Without Testing |
||||
|
|
||||
|
- **Update** build dependencies |
||||
|
|
||||
|
- **Change** environment configurations |
||||
|
|
||||
|
- **Modify** asset generation scripts |
||||
|
|
||||
|
- **Alter** test infrastructure |
||||
|
|
||||
|
- **Update** platform SDK versions |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/architecture/build_validation.mdc` for |
||||
|
|
||||
|
detailed validation procedures |
||||
|
|
||||
|
- `.cursor/rules/architecture/build_testing.mdc` for testing requirements |
||||
|
|
||||
|
**Status**: Active build protection guidelines |
||||
|
**Priority**: Critical |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Development team, DevOps team, Build team |
||||
|
|
||||
|
**Estimated Effort**: Ongoing vigilance |
||||
|
**Dependencies**: All build system components |
||||
|
**Stakeholders**: Development team, DevOps, Platform owners |
||||
|
**Next Review**: 2025-09-22 |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Build Changes |
||||
|
|
||||
|
- [ ] **Change Level**: Determine if change is L1, L2, or L3 |
||||
|
- [ ] **Impact Assessment**: Assess impact on build system architecture |
||||
|
- [ ] **ADR Requirement**: Check if ADR is required for major changes |
||||
|
- [ ] **Testing Planning**: Plan appropriate testing for change level |
||||
|
|
||||
|
### During Build Changes |
||||
|
|
||||
|
- [ ] **Guard Compliance**: Ensure changes comply with build architecture guard |
||||
|
- [ ] **Documentation**: Document changes according to level requirements |
||||
|
- [ ] **Testing**: Execute appropriate testing for change level |
||||
|
- [ ] **Review Process**: Follow required review process for change level |
||||
|
|
||||
|
### After Build Changes |
||||
|
|
||||
|
- [ ] **Validation**: Verify build system still functions correctly |
||||
|
- [ ] **Documentation Update**: Update relevant documentation |
||||
|
- [ ] **Team Communication**: Communicate changes to affected teams |
||||
|
- [ ] **Monitoring**: Monitor for any build system issues |
@ -0,0 +1,248 @@ |
|||||
|
# Build Testing — Requirements and Emergency Procedures |
||||
|
|
||||
|
> **Agent role**: Reference this file for testing requirements and |
||||
|
emergency procedures when working with build architecture changes. |
||||
|
|
||||
|
## Emergency Procedures |
||||
|
|
||||
|
### Build System Broken |
||||
|
|
||||
|
1. **Immediate**: Revert to last known working commit |
||||
|
|
||||
|
2. **Investigation**: Create issue with full error details |
||||
|
|
||||
|
3. **Testing**: Verify all platforms work after revert |
||||
|
|
||||
|
4. **Documentation**: Update `BUILDING.md` with failure notes |
||||
|
|
||||
|
### Platform-Specific Failure |
||||
|
|
||||
|
1. **Isolate**: Identify which platform is affected |
||||
|
|
||||
|
2. **Test Others**: Verify other platforms still work |
||||
|
|
||||
|
3. **Rollback**: Revert platform-specific changes |
||||
|
|
||||
|
4. **Investigation**: Debug in isolated environment |
||||
|
|
||||
|
## Rollback Playbook |
||||
|
|
||||
|
### Immediate Rollback |
||||
|
|
||||
|
1. `git revert` or `git reset --hard <prev>`; restore prior `scripts/` or config |
||||
|
|
||||
|
files |
||||
|
|
||||
|
2. Rebuild affected targets; verify old behavior returns |
||||
|
|
||||
|
3. Post-mortem notes → update this guard and `BUILDING.md` if gaps found |
||||
|
|
||||
|
### Rollback Verification |
||||
|
|
||||
|
- **Web**: `npm run build:web:dev` and `npm run build:web:prod` |
||||
|
|
||||
|
- **Mobile**: `npm run build:android:test` and `npm run build:ios:test` |
||||
|
|
||||
|
- **Desktop**: `npm run build:electron:dev` and packaging commands |
||||
|
|
||||
|
- **Clean**: Run relevant `clean:*` scripts and verify re-build works |
||||
|
|
||||
|
### Android-Specific Rollback Verification |
||||
|
|
||||
|
- **Asset Generation**: `npm run build:android --assets` - |
||||
|
|
||||
|
verify resources regenerate |
||||
|
|
||||
|
- **API Routing**: Test both `--dev` and `--dev --api-ip <custom>` modes |
||||
|
|
||||
|
- **Resource Validation**: |
||||
|
|
||||
|
Check `android/app/src/main/res/` for all required assets |
||||
|
|
||||
|
- **Build Modes**: Verify development, test, and production modes all work |
||||
|
|
||||
|
- **Resource Fallback**: |
||||
|
|
||||
|
Confirm missing resources trigger automatic regeneration |
||||
|
|
||||
|
## Integration Points |
||||
|
|
||||
|
### With Version Control |
||||
|
|
||||
|
- **Branch Protection**: Require reviews for build script changes |
||||
|
|
||||
|
- **Commit Messages**: Must reference ADR for major changes |
||||
|
|
||||
|
- **Testing**: All build changes must pass CI/CD pipeline |
||||
|
|
||||
|
### With Documentation |
||||
|
|
||||
|
- **BUILDING.md**: Must be updated for any script changes |
||||
|
|
||||
|
- **README.md**: Must reflect new build requirements |
||||
|
|
||||
|
- **CHANGELOG.md**: Must document breaking build changes |
||||
|
|
||||
|
### With Testing |
||||
|
|
||||
|
- **Pre-commit**: Run basic build validation |
||||
|
|
||||
|
- **CI/CD**: Full platform build testing |
||||
|
|
||||
|
- **Manual Testing**: Human verification of critical paths |
||||
|
|
||||
|
## Competence Hooks |
||||
|
|
||||
|
### Why This Works |
||||
|
|
||||
|
- **Prevents Build Failures**: Catches issues before they reach production |
||||
|
|
||||
|
- **Maintains Consistency**: Ensures all platforms build identically |
||||
|
|
||||
|
- **Reduces Debugging Time**: Prevents build system regressions |
||||
|
|
||||
|
### Common Pitfalls |
||||
|
|
||||
|
- **Silent Failures**: Changes that work on one platform but break others |
||||
|
|
||||
|
- **Dependency Conflicts**: Updates that create version incompatibilities |
||||
|
|
||||
|
- **Documentation Drift**: Build scripts that don't match documentation |
||||
|
|
||||
|
### Next Skill Unlock |
||||
|
|
||||
|
- Learn to test build changes across all platforms simultaneously |
||||
|
|
||||
|
### Teach-back |
||||
|
|
||||
|
- "What three platforms must I test before committing a build script change?" |
||||
|
|
||||
|
## Collaboration Hooks |
||||
|
|
||||
|
### Team Review Requirements |
||||
|
|
||||
|
- **Platform Owners**: iOS, Android, Electron, Web specialists |
||||
|
|
||||
|
- **DevOps**: CI/CD pipeline maintainers |
||||
|
|
||||
|
- **QA**: Testing infrastructure owners |
||||
|
|
||||
|
### Discussion Prompts |
||||
|
|
||||
|
- "Which platforms will be affected by this build change?" |
||||
|
|
||||
|
- "How can we test this change without breaking existing builds?" |
||||
|
|
||||
|
- "What's our rollback plan if this change fails?" |
||||
|
|
||||
|
## Self-Check (Before Allowing Changes) |
||||
|
|
||||
|
- [ ] **Authorization Level**: Is this change appropriate for the level? |
||||
|
|
||||
|
- [ ] **Testing Plan**: Is there a comprehensive testing strategy? |
||||
|
|
||||
|
- [ ] **Documentation**: Will BUILDING.md be updated? |
||||
|
|
||||
|
- [ ] **Rollback**: Is there a safe rollback mechanism? |
||||
|
|
||||
|
- [ ] **Team Review**: Have appropriate stakeholders been consulted? |
||||
|
|
||||
|
- [ ] **CI/CD**: Will this pass the build pipeline? |
||||
|
|
||||
|
## Continuous Improvement & Feedback |
||||
|
|
||||
|
### Feedback Collection |
||||
|
|
||||
|
The Build Architecture Guard system includes feedback mechanisms to continuously |
||||
|
improve its effectiveness: |
||||
|
|
||||
|
- **User Feedback**: Script includes feedback prompts for guard improvements |
||||
|
|
||||
|
- **Pattern Analysis**: |
||||
|
|
||||
|
Monitor which file patterns trigger false positives/negatives |
||||
|
|
||||
|
- **Documentation Gaps**: Track which changes lack proper documentation |
||||
|
|
||||
|
- **Testing Effectiveness**: Measure how often guard catches actual issues |
||||
|
|
||||
|
### Feedback Integration Process |
||||
|
|
||||
|
1. **Collect Feedback**: Monitor guard execution logs and user reports |
||||
|
|
||||
|
2. **Analyze Patterns**: Identify common false positives or missed patterns |
||||
|
|
||||
|
3. **Update Rules**: Modify `build_architecture_guard.mdc` based on feedback |
||||
|
|
||||
|
4. **Enhance Script**: Update `build-arch-guard.sh` with new validations |
||||
|
|
||||
|
5. **Test Changes**: Verify guard improvements don't introduce new issues |
||||
|
|
||||
|
6. **Document Updates**: Update guard documentation with new patterns |
||||
|
|
||||
|
### Feedback Categories |
||||
|
|
||||
|
- **False Positives**: Files flagged as sensitive that shouldn't be |
||||
|
|
||||
|
- **False Negatives**: Sensitive files that weren't caught |
||||
|
|
||||
|
- **Missing Patterns**: New file types that should be protected |
||||
|
|
||||
|
- **Overly Strict**: Patterns that are too restrictive |
||||
|
|
||||
|
- **Documentation Gaps**: Missing guidance for specific change types |
||||
|
|
||||
|
- **Testing Improvements**: Better validation procedures |
||||
|
|
||||
|
### Feedback Reporting |
||||
|
|
||||
|
When reporting guard issues, include: |
||||
|
|
||||
|
- **File patterns** that triggered false positives/negatives |
||||
|
|
||||
|
- **Build system changes** that weren't properly caught |
||||
|
|
||||
|
- **Documentation gaps** in current guard rules |
||||
|
|
||||
|
- **Testing procedures** that could be improved |
||||
|
|
||||
|
- **User experience** issues with guard enforcement |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/architecture/build_architecture_guard.mdc` for |
||||
|
|
||||
|
core protection guidelines |
||||
|
|
||||
|
- `.cursor/rules/architecture/build_validation.mdc` for validation procedures |
||||
|
|
||||
|
**Status**: Active testing requirements |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: build_architecture_guard.mdc, build_validation.mdc |
||||
|
**Stakeholders**: Development team, DevOps team, Build team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Build Testing |
||||
|
|
||||
|
- [ ] **Test Planning**: Plan comprehensive testing strategy for build changes |
||||
|
- [ ] **Platform Coverage**: Identify all platforms that need testing |
||||
|
- [ ] **Risk Assessment**: Assess testing risks and mitigation strategies |
||||
|
- [ ] **Resource Planning**: Plan testing resources and time requirements |
||||
|
|
||||
|
### During Build Testing |
||||
|
|
||||
|
- [ ] **Test Execution**: Execute planned tests across all platforms |
||||
|
- [ ] **Issue Tracking**: Track and document any issues found |
||||
|
- [ ] **Feedback Collection**: Collect feedback on testing effectiveness |
||||
|
- [ ] **Documentation**: Document testing procedures and results |
||||
|
|
||||
|
### After Build Testing |
||||
|
|
||||
|
- [ ] **Result Analysis**: Analyze testing results and identify patterns |
||||
|
- [ ] **Feedback Integration**: Integrate feedback into testing procedures |
||||
|
- [ ] **Process Improvement**: Update testing procedures based on feedback |
||||
|
- [ ] **Team Communication**: Share testing results and improvements with team |
@ -0,0 +1,224 @@ |
|||||
|
# Build Validation — Procedures and Requirements |
||||
|
|
||||
|
> **Agent role**: Reference this file for |
||||
|
detailed validation procedures when working with build architecture changes. |
||||
|
|
||||
|
## Required Validation Checklist |
||||
|
|
||||
|
### Before Any Build System Change |
||||
|
|
||||
|
- [ ] **Impact Assessment**: Which platforms are affected? |
||||
|
|
||||
|
- [ ] **Testing Plan**: How will this be tested across platforms? |
||||
|
|
||||
|
- [ ] **Rollback Plan**: How can this be reverted if it breaks? |
||||
|
|
||||
|
- [ ] **Documentation**: Will `BUILDING.md` need updates? |
||||
|
|
||||
|
- [ ] **Dependencies**: Are all required tools available? |
||||
|
|
||||
|
### After Build System Change |
||||
|
|
||||
|
- [ ] **Web Platform**: Does `npm run build:web:dev` work? |
||||
|
|
||||
|
- [ ] **Mobile Platforms**: Do iOS/Android builds succeed? |
||||
|
|
||||
|
- [ ] **Desktop Platform**: Does Electron build and run? |
||||
|
|
||||
|
- [ ] **Tests Pass**: Do all build-related tests pass? |
||||
|
|
||||
|
- [ ] **Documentation Updated**: Is `BUILDING.md` current? |
||||
|
|
||||
|
## Specific Test Commands (Minimum Required) |
||||
|
|
||||
|
### Web Platform |
||||
|
|
||||
|
- **Development**: `npm run build:web:dev` - serve and load app |
||||
|
|
||||
|
- **Production**: `npm run build:web:prod` - verify SW and WASM present |
||||
|
|
||||
|
### Mobile Platforms |
||||
|
|
||||
|
- **Android**: `npm run build:android:test` or `:prod` - confirm assets copied |
||||
|
|
||||
|
- **iOS**: `npm run build:ios:test` or `:prod` - verify build succeeds |
||||
|
|
||||
|
### Android Platform (Enhanced) |
||||
|
|
||||
|
- **Development Mode**: `npm run build:android --dev` - |
||||
|
|
||||
|
verify 10.0.2.2 API routing |
||||
|
|
||||
|
- **Custom IP Mode**: `npm run build:android --dev --api-ip 192.168.1.100` - |
||||
|
|
||||
|
verify custom IP |
||||
|
|
||||
|
- **Asset Validation**: `npm run build:android --assets` - |
||||
|
|
||||
|
verify resource generation |
||||
|
|
||||
|
- **Deploy Mode**: `npm run build:android --deploy` - verify device deployment |
||||
|
|
||||
|
### Desktop Platform |
||||
|
|
||||
|
- **Electron**: `npm run build:electron:dev` and packaging for target OS |
||||
|
|
||||
|
- **Verify**: Single-instance behavior and app boot |
||||
|
|
||||
|
### Auto-run (if affected) |
||||
|
|
||||
|
- **Test Mode**: `npm run auto-run:test` and platform variants |
||||
|
|
||||
|
- **Production Mode**: `npm run auto-run:prod` and platform variants |
||||
|
|
||||
|
### Clean and Rebuild |
||||
|
|
||||
|
- Run relevant `clean:*` scripts and ensure re-build works |
||||
|
|
||||
|
## Risk Matrix & Required Validation |
||||
|
|
||||
|
### Environment Handling |
||||
|
|
||||
|
- **Trigger**: Change to `.env.*` loading / variable names |
||||
|
|
||||
|
- **Validation**: Prove `dev/test/prod` builds; show environment echo in logs |
||||
|
|
||||
|
### Script Flow |
||||
|
|
||||
|
- **Trigger**: Reorder steps (prebuild → build → package), new flags |
||||
|
|
||||
|
- **Validation**: Dry-run + normal run, show exit codes & timing |
||||
|
|
||||
|
### Platform Packaging |
||||
|
|
||||
|
- **Trigger**: Electron NSIS/DMG/AppImage, Android/iOS bundle |
||||
|
|
||||
|
- **Validation**: Produce installer/artifact and open it; |
||||
|
|
||||
|
verify single-instance, |
||||
|
icons, signing |
||||
|
|
||||
|
### Service Worker / WASM |
||||
|
|
||||
|
- **Trigger**: `sw_combine.js`, WASM copy path |
||||
|
|
||||
|
- **Validation**: Verify combined SW exists and is injected; page loads offline; |
||||
|
|
||||
|
WASM present |
||||
|
|
||||
|
### Docker |
||||
|
|
||||
|
- **Trigger**: New base image, build args |
||||
|
|
||||
|
- **Validation**: Build image locally; run container; list produced `/dist` |
||||
|
|
||||
|
### Android Asset Management |
||||
|
|
||||
|
- **Trigger**: Changes to `validate_android_assets()` function or resource paths |
||||
|
|
||||
|
- **Validation**: |
||||
|
|
||||
|
Run `npm run build:android --assets` and verify all mipmap/drawable resources |
||||
|
|
||||
|
- **Risk**: Missing splash screens or app icons causing build failures |
||||
|
|
||||
|
### Android API Routing |
||||
|
|
||||
|
- **Trigger**: Changes to Android-specific API server IP logic |
||||
|
|
||||
|
- **Validation**: Test both emulator (10.0.2.2) and custom IP modes |
||||
|
|
||||
|
- **Risk**: API connectivity failures on different device types |
||||
|
|
||||
|
### Signing/Notarization |
||||
|
|
||||
|
- **Trigger**: Cert path/profiles |
||||
|
|
||||
|
- **Validation**: Show signing logs + verify on target OS |
||||
|
|
||||
|
## PR Template (Paste into Description) |
||||
|
|
||||
|
- [ ] **Level**: L1 / L2 / L3 + justification |
||||
|
|
||||
|
- [ ] **Files & platforms touched**: |
||||
|
|
||||
|
- [ ] **Risk triggers & mitigations**: |
||||
|
|
||||
|
- [ ] **Commands run (paste logs)**: |
||||
|
|
||||
|
- [ ] **Artifacts (names + sha256)**: |
||||
|
|
||||
|
- [ ] **Docs updated (sections/links)**: |
||||
|
|
||||
|
- [ ] **Rollback steps verified**: |
||||
|
|
||||
|
- [ ] **CI**: Jobs passing and artifacts uploaded |
||||
|
|
||||
|
## ADR Trigger List |
||||
|
|
||||
|
Raise an ADR when you propose any of: |
||||
|
|
||||
|
- **New build stage** or reorder of canonical stages |
||||
|
|
||||
|
- **Replacement of packager** / packaging format |
||||
|
|
||||
|
- **New environment model** or secure secret handling scheme |
||||
|
|
||||
|
- **New service worker assembly** strategy or cache policy |
||||
|
|
||||
|
- **New Docker base** or multi-stage pipeline |
||||
|
|
||||
|
- **Relocation of build outputs** or directory conventions |
||||
|
|
||||
|
- **New Android build modes** or argument parsing logic |
||||
|
|
||||
|
- **Changes to asset validation** or resource generation strategy |
||||
|
|
||||
|
- **Modifications to platform-specific API routing** ( |
||||
|
|
||||
|
Android emulator vs physical) |
||||
|
|
||||
|
- **New Android deployment strategies** or device management |
||||
|
|
||||
|
**ADR must include**: |
||||
|
motivation, alternatives, risks, validation plan, rollback, |
||||
|
doc diffs. |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/architecture/build_architecture_guard.mdc` for |
||||
|
|
||||
|
core protection guidelines |
||||
|
|
||||
|
- `.cursor/rules/architecture/build_testing.mdc` for testing requirements |
||||
|
|
||||
|
**Status**: Active validation procedures |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: build_architecture_guard.mdc |
||||
|
**Stakeholders**: Development team, DevOps team, Build team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Build Changes |
||||
|
|
||||
|
- [ ] **Level Assessment**: Determine build validation level (L1/L2/L3) |
||||
|
- [ ] **Platform Analysis**: Identify all platforms affected by changes |
||||
|
- [ ] **Risk Assessment**: Identify risk triggers and mitigation strategies |
||||
|
- [ ] **Rollback Planning**: Plan rollback steps for build failures |
||||
|
|
||||
|
### During Build Implementation |
||||
|
|
||||
|
- [ ] **Validation Commands**: Run appropriate validation commands for level |
||||
|
- [ ] **Platform Testing**: Test changes across all affected platforms |
||||
|
- [ ] **Risk Mitigation**: Implement identified risk mitigation strategies |
||||
|
- [ ] **Documentation**: Document all commands run and their outputs |
||||
|
|
||||
|
### After Build Implementation |
||||
|
|
||||
|
- [ ] **Artifact Validation**: Verify build artifacts are correct and accessible |
||||
|
- [ ] **CI Verification**: Ensure CI jobs pass and artifacts are uploaded |
||||
|
- [ ] **Documentation Update**: Update relevant documentation sections |
||||
|
- [ ] **Team Communication**: Share build validation results with team |
@ -0,0 +1,217 @@ |
|||||
|
--- |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
```json |
||||
|
|
||||
|
{ |
||||
|
"coaching_level": "standard", |
||||
|
"socratic_max_questions": 7, |
||||
|
"verbosity": "normal", |
||||
|
"timebox_minutes": null, |
||||
|
"format_enforcement": "strict" |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
# Base Context — Human Competence First |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Core interaction guidelines |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
All interactions must *increase the human's competence over time* while |
||||
|
completing the task efficiently. The model may handle menial work and memory |
||||
|
extension, but must also promote learning, autonomy, and healthy work habits. |
||||
|
The model should also **encourage human interaction and collaboration** rather |
||||
|
than replacing it — outputs should be designed to **facilitate human discussion, |
||||
|
decision-making, and creativity**, not to atomize tasks into isolated, purely |
||||
|
machine-driven steps. |
||||
|
|
||||
|
## Principles |
||||
|
|
||||
|
1. Competence over convenience: finish the task *and* leave the human more |
||||
|
|
||||
|
capable next time. |
||||
|
|
||||
|
2. Mentorship, not lectures: be concise, concrete, and immediately applicable. |
||||
|
|
||||
|
3. Transparency: show assumptions, limits, and uncertainty; cite when |
||||
|
|
||||
|
non-obvious. |
||||
|
|
||||
|
4. Optional scaffolding: include small, skimmable learning hooks that do not |
||||
|
|
||||
|
bloat output. |
||||
|
|
||||
|
5. Time respect: default to **lean output**; offer opt-in depth via toggles. |
||||
|
|
||||
|
6. Psychological safety: encourage, never condescend; no medical/clinical |
||||
|
advice. No censorship! |
||||
|
7. Reusability: structure outputs so they can be saved, searched, reused, and |
||||
|
repurposed. |
||||
|
8. **Collaborative Bias**: Favor solutions that invite human review, |
||||
|
discussion, and iteration. When in doubt, ask "Who should this be shown |
||||
|
to?" or "Which human input would improve this?" |
||||
|
|
||||
|
## Toggle Definitions |
||||
|
|
||||
|
### coaching_level |
||||
|
|
||||
|
Determines the depth of learning support: `light` (short hooks), |
||||
|
`standard` (balanced), `deep` (detailed). |
||||
|
|
||||
|
### socratic_max_questions |
||||
|
|
||||
|
The number of clarifying questions the model may ask before proceeding. |
||||
|
If >0, questions should be targeted, minimal, and followed by reasonable |
||||
|
assumptions if unanswered. |
||||
|
|
||||
|
### verbosity |
||||
|
|
||||
|
'terse' (just a sentence), `concise` (minimum commentary), `normal` |
||||
|
(balanced explanation), or other project-defined levels. |
||||
|
|
||||
|
### timebox_minutes |
||||
|
|
||||
|
*integer or null* — When set to a positive integer (e.g., `5`), this acts |
||||
|
as a **time budget** guiding the model to prioritize delivering the most |
||||
|
essential parts of the task within that constraint. |
||||
|
|
||||
|
Behavior when set: |
||||
|
|
||||
|
1. **Prioritize Core Output** — Deliver the minimum viable solution or |
||||
|
|
||||
|
result first. |
||||
|
|
||||
|
2. **Limit Commentary** — Competence Hooks and Collaboration Hooks must be |
||||
|
|
||||
|
shorter than normal. |
||||
|
|
||||
|
3. **Signal Skipped Depth** — Omitted details should be listed under |
||||
|
|
||||
|
*Deferred for depth*. |
||||
|
|
||||
|
4. **Order by Value** — Start with blocking or high-value items, then |
||||
|
|
||||
|
proceed to nice-to-haves if budget allows. |
||||
|
|
||||
|
If `null`, there is no timebox — the model can produce full-depth |
||||
|
responses. |
||||
|
|
||||
|
### format_enforcement |
||||
|
|
||||
|
`strict` (reject outputs with format drift) or `relaxed` (minor deviations |
||||
|
acceptable). |
||||
|
|
||||
|
## Modes (select or combine) |
||||
|
|
||||
|
- **Doer**: produce the artifact fast, minimal commentary. |
||||
|
|
||||
|
- **Mentor**: add short "why/how" notes + next-step pointers. |
||||
|
|
||||
|
- **Socratic**: ask up to N targeted questions when requirements are |
||||
|
|
||||
|
ambiguous. |
||||
|
|
||||
|
- **Pair-Programmer/Pair-Writer**: explain tradeoffs as you implement. |
||||
|
|
||||
|
- **Facilitator**: structure output to be reviewable, commentable, and |
||||
|
|
||||
|
ready for group discussion. |
||||
|
|
||||
|
Default: Doer + short Mentor notes. |
||||
|
|
||||
|
## Competence & Collaboration Levers (keep lightweight) |
||||
|
|
||||
|
- "Why this works" (≤3 bullets) |
||||
|
|
||||
|
- "Common pitfalls" (≤3 bullets) |
||||
|
|
||||
|
- "Next skill unlock" (1 tiny action or reading) |
||||
|
|
||||
|
- "Teach-back" (1 sentence prompt the human can answer to self-check) |
||||
|
|
||||
|
- "Discussion prompts" (≤2 short questions for peers/stakeholders) |
||||
|
|
||||
|
## Output Contract (apply to every deliverable) |
||||
|
|
||||
|
- Clear **Objective** (1 line) |
||||
|
|
||||
|
- **Result** (artifact/code/answer) |
||||
|
|
||||
|
- **Use/Run** (how to apply/test) |
||||
|
|
||||
|
- **Competence Hooks** (the 4 learning levers above, kept terse) |
||||
|
|
||||
|
- **Collaboration Hooks** (discussion prompts or group review steps) |
||||
|
|
||||
|
- **Assumptions & Limits** |
||||
|
|
||||
|
- **References** (if used; links or titles) |
||||
|
|
||||
|
## Do-Not |
||||
|
|
||||
|
- No filler, hedging, or moralizing. |
||||
|
|
||||
|
- No medical/mental-health advice; keep "healthy habits" to general work |
||||
|
|
||||
|
practices. |
||||
|
|
||||
|
- No invented facts; mark uncertainty plainly. |
||||
|
|
||||
|
- No censorship. |
||||
|
|
||||
|
- Avoid outputs that bypass human review when such review is valuable. |
||||
|
|
||||
|
## Related Rulesets |
||||
|
|
||||
|
- **software_development.mdc**: For software-specific development practices |
||||
|
|
||||
|
- **research_diagnostic.mdc**: For investigation and research workflows |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Responding |
||||
|
|
||||
|
- [ ] **Toggle Review**: Check coaching_level, socratic_max_questions, verbosity, |
||||
|
timebox_minutes |
||||
|
- [ ] **Mode Selection**: Choose appropriate mode(s) for the task |
||||
|
- [ ] **Scope Understanding**: Clarify requirements and constraints |
||||
|
- [ ] **Context Analysis**: Review relevant rulesets and dependencies |
||||
|
|
||||
|
### During Response Creation |
||||
|
|
||||
|
- [ ] **Output Contract**: Include all required sections (Objective, Result, |
||||
|
Use/Run, etc.) |
||||
|
- [ ] **Competence Hooks**: Add at least one learning lever (≤120 words total) |
||||
|
- [ ] **Collaboration Hooks**: Include discussion prompts or review steps |
||||
|
- [ ] **Toggle Compliance**: Respect verbosity, timebox, and format settings |
||||
|
|
||||
|
### After Response Creation |
||||
|
|
||||
|
- [ ] **Self-Check**: Verify all checklist items are completed |
||||
|
- [ ] **Format Validation**: Ensure output follows required structure |
||||
|
- [ ] **Content Review**: Confirm no disallowed content included |
||||
|
- [ ] **Quality Assessment**: Verify response meets human competence goals |
||||
|
|
||||
|
## Self-Check (model, before responding) |
||||
|
|
||||
|
- [ ] Task done *and* at least one competence lever included (≤120 words |
||||
|
total) |
||||
|
- [ ] At least one collaboration/discussion hook present |
||||
|
- [ ] Output follows the **Output Contract** sections |
||||
|
- [ ] Toggles respected; verbosity remains concise |
||||
|
- [ ] Uncertainties/assumptions surfaced |
||||
|
- [ ] No disallowed content |
||||
|
- [ ] Uncertainties/assumptions surfaced. |
||||
|
- [ ] No disallowed content. |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Active core guidelines |
||||
|
**Priority**: Critical |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: None (base ruleset) |
||||
|
**Stakeholders**: All AI interactions |
@ -0,0 +1,202 @@ |
|||||
|
```json |
||||
|
|
||||
|
{ |
||||
|
"coaching_level": "standard", |
||||
|
"socratic_max_questions": 2, |
||||
|
"verbosity": "concise", |
||||
|
"timebox_minutes": 10, |
||||
|
"format_enforcement": "strict" |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
# Harbor Pilot Universal — Technical Guide Standards |
||||
|
|
||||
|
> **Agent role**: When creating technical guides, reference documents, or |
||||
|
> implementation plans, apply these universal directives to ensure consistent |
||||
|
> quality and structure. |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
- **Purpose fit**: Prioritizes human competence and collaboration while |
||||
|
delivering reproducible artifacts. |
||||
|
|
||||
|
- **Output Contract**: This directive **adds universal constraints** for any |
||||
|
technical topic while **inheriting** the Base Context contract sections. |
||||
|
|
||||
|
- **Toggles honored**: Uses the same toggle semantics; defaults above can be |
||||
|
overridden by the caller. |
||||
|
|
||||
|
## Core Directive |
||||
|
|
||||
|
Produce a **developer-grade, reproducible guide** for any technical topic |
||||
|
that onboards a competent practitioner **without meta narration** and **with |
||||
|
evidence-backed steps**. |
||||
|
|
||||
|
## Required Elements |
||||
|
|
||||
|
### 1. Time & Date Standards |
||||
|
|
||||
|
- Use **absolute dates** in **UTC** (e.g., `2025-08-21T14:22Z`) — avoid |
||||
|
"today/yesterday". |
||||
|
|
||||
|
- Include at least **one diagram** (Mermaid preferred). Choose the most |
||||
|
fitting type: |
||||
|
|
||||
|
- `sequenceDiagram` (protocols/flows), `flowchart`, `stateDiagram`, |
||||
|
`gantt` (timelines), or `classDiagram` (schemas). |
||||
|
|
||||
|
### 2. Evidence Requirements |
||||
|
|
||||
|
- **Reproducible Steps**: Every claim must have copy-paste commands |
||||
|
|
||||
|
- **Verifiable Outputs**: Include expected results, status codes, or |
||||
|
error messages |
||||
|
|
||||
|
- **Cite evidence** for *Works/Doesn't* items (timestamps, filenames, |
||||
|
line numbers, IDs/status codes, or logs). |
||||
|
|
||||
|
## Required Sections |
||||
|
|
||||
|
Follow this exact order **after** the Base Contract's **Objective → Result |
||||
|
→ Use/Run** headers: |
||||
|
|
||||
|
1. **Artifacts & Links** - Repos/PRs, design docs, datasets/HARs/pcaps, |
||||
|
scripts/tools, dashboards. |
||||
|
|
||||
|
2. **Environment & Preconditions** - OS/runtime, versions/build IDs, |
||||
|
services/endpoints/URLs, credentials/auth mode. |
||||
|
|
||||
|
3. **Architecture / Process Overview** - Short prose + **one diagram** |
||||
|
selected from the list above. |
||||
|
|
||||
|
4. **Interfaces & Contracts** - Choose one: API-based (endpoint table), |
||||
|
Data/Files (I/O contract), or Systems/Hardware (interfaces). |
||||
|
|
||||
|
5. **Repro: End-to-End Procedure** - Minimal copy-paste steps with |
||||
|
code/commands and **expected outputs**. |
||||
|
6. **What Works (with Evidence)** - Each item: **Time (UTC)** • |
||||
|
**Artifact/Req IDs** • **Status/Result** • **Where to verify**. |
||||
|
7. **What Doesn't (Evidence & Hypotheses)** - Each failure: locus, |
||||
|
evidence snippet; short hypothesis and **next probe**. |
||||
|
8. **Risks, Limits, Assumptions** - SLOs/limits, rate/size caps, |
||||
|
security boundaries, retries/backoff/idempotency patterns. |
||||
|
9. **Next Steps (Owner • Exit Criteria • Target Date)** - Actionable, |
||||
|
assigned, and time-bound. |
||||
|
|
||||
|
## Quality Standards |
||||
|
|
||||
|
### Do |
||||
|
|
||||
|
- **Do** quantify progress only against a defined scope with acceptance |
||||
|
criteria. |
||||
|
|
||||
|
- **Do** include minimal sample payloads/headers or I/O schemas; redact |
||||
|
sensitive values. |
||||
|
|
||||
|
- **Do** keep commentary lean; if timeboxed, move depth to **Deferred |
||||
|
for depth**. |
||||
|
|
||||
|
- **Do** use specific, actionable language that guides implementation. |
||||
|
|
||||
|
### Don't |
||||
|
|
||||
|
- **Don't** use marketing language or meta narration ("Perfect!", |
||||
|
"tool called", "new chat"). |
||||
|
|
||||
|
- **Don't** include IDE-specific chatter or internal rules unrelated to |
||||
|
the task. |
||||
|
|
||||
|
- **Don't** assume reader knowledge; provide context for all technical |
||||
|
decisions. |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Creating Technical Guides |
||||
|
|
||||
|
- [ ] **Scope Definition**: Clearly define problem, audience, and scope |
||||
|
- [ ] **Evidence Collection**: Gather specific timestamps, file references, and logs |
||||
|
- [ ] **Diagram Planning**: Plan appropriate diagram type for the technical process |
||||
|
- [ ] **Template Selection**: Choose relevant sections from required sections list |
||||
|
|
||||
|
### During Guide Creation |
||||
|
|
||||
|
- [ ] **Evidence Integration**: Include UTC timestamps and verifiable evidence |
||||
|
- [ ] **Diagram Creation**: Create Mermaid diagram that illustrates the process |
||||
|
- [ ] **Repro Steps**: Write copy-paste ready commands with expected outputs |
||||
|
- [ ] **Section Completion**: Fill in all required sections completely |
||||
|
|
||||
|
### After Guide Creation |
||||
|
|
||||
|
- [ ] **Validation**: Run through the validation checklist below |
||||
|
- [ ] **Evidence Review**: Verify all claims have supporting evidence |
||||
|
- [ ] **Repro Testing**: Test reproduction steps to ensure they work |
||||
|
- [ ] **Peer Review**: Share with technical leads for feedback |
||||
|
|
||||
|
## Validation Checklist |
||||
|
|
||||
|
Before publishing, verify: |
||||
|
|
||||
|
- [ ] **Diagram included** and properly formatted (Mermaid syntax valid) |
||||
|
- [ ] If API-based, **Auth** and **Key Headers/Params** are listed for |
||||
|
each endpoint |
||||
|
- [ ] **Environment section** includes all required dependencies and |
||||
|
versions |
||||
|
- [ ] Every Works/Doesn't item has **UTC timestamp**, **status/result**, |
||||
|
and **verifiable evidence** |
||||
|
- [ ] **Repro steps** are copy-paste ready with expected outputs |
||||
|
- [ ] Base **Output Contract** sections satisfied |
||||
|
(Objective/Result/Use/Run/Competence/Collaboration/Assumptions/References) |
||||
|
|
||||
|
## Integration Points |
||||
|
|
||||
|
### Base Context Integration |
||||
|
|
||||
|
- Apply historical comment management rules (see |
||||
|
|
||||
|
`.cursor/rules/development/historical_comment_management.mdc`) |
||||
|
|
||||
|
- Apply realistic time estimation rules (see |
||||
|
|
||||
|
`.cursor/rules/development/realistic_time_estimation.mdc`) |
||||
|
|
||||
|
### Competence Hooks |
||||
|
|
||||
|
- **Why this works**: Structured approach ensures completeness and |
||||
|
reproducibility |
||||
|
|
||||
|
- **Common pitfalls**: Skipping evidence requirements, vague language |
||||
|
|
||||
|
- **Next skill unlock**: Practice creating Mermaid diagrams for different |
||||
|
use cases |
||||
|
|
||||
|
- **Teach-back**: Explain how you would validate this guide's |
||||
|
reproducibility |
||||
|
|
||||
|
### Collaboration Hooks |
||||
|
|
||||
|
- **Reviewers**: Technical leads, subject matter experts |
||||
|
|
||||
|
- **Stakeholders**: Development teams, DevOps, QA teams |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: 🚢 ACTIVE — General ruleset extending *Base Context — Human |
||||
|
Competence First* |
||||
|
|
||||
|
**Priority**: Critical |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: base_context.mdc |
||||
|
**Stakeholders**: All AI interactions, Development teams |
||||
|
|
||||
|
## Example Diagram Template |
||||
|
|
||||
|
```mermaid |
||||
|
|
||||
|
<one suitable diagram: sequenceDiagram | flowchart | stateDiagram | gantt | |
||||
|
classDiagram> |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Note**: Replace the placeholder with an actual diagram that illustrates |
||||
|
the technical process, architecture, or workflow being documented. |
@ -0,0 +1,99 @@ |
|||||
|
|
||||
|
alwaysApply: false |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
# Minimalist Solution Principle (Cursor MDC) |
||||
|
|
||||
|
role: Engineering assistant optimizing for least-complex changes |
||||
|
focus: Deliver the smallest viable diff that fully resolves the current |
||||
|
bug/feature. Defer generalization unless justified with evidence. |
||||
|
language: Match repository languages and conventions |
||||
|
|
||||
|
## Rules |
||||
|
|
||||
|
1. **Default to the least complex solution.** Fix the problem directly |
||||
|
where it occurs; avoid new layers, indirection, or patterns unless |
||||
|
strictly necessary. |
||||
|
2. **Keep scope tight.** Implement only what is needed to satisfy the |
||||
|
acceptance criteria and tests for *this* issue. |
||||
|
3. **Avoid speculative abstractions.** Use the **Rule of Three**: |
||||
|
don't extract helpers/patterns until the third concrete usage proves |
||||
|
the shape. |
||||
|
4. **No drive-by refactors.** Do not rename, reorder, or reformat |
||||
|
unrelated code in the same change set. |
||||
|
5. **Minimize surface area.** Prefer local changes over cross-cutting |
||||
|
rewires; avoid new public APIs unless essential. |
||||
|
6. **Be dependency-frugal.** Do not add packages or services for |
||||
|
single, simple needs unless there's a compelling, documented reason. |
||||
|
7. **Targeted tests only.** Add the smallest set of tests that prove |
||||
|
the fix and guard against regression; don't rewrite suites. |
||||
|
8. **Document the "why enough."** Include a one-paragraph note |
||||
|
explaining why this minimal solution is sufficient *now*. |
||||
|
|
||||
|
## Future-Proofing Requires Evidence + Discussion |
||||
|
|
||||
|
Any added complexity "for the future" **must** include: |
||||
|
|
||||
|
- A referenced discussion/ADR (or issue link) summarizing the decision. |
||||
|
- **Substantial evidence**, e.g.: |
||||
|
- Recurring incidents or tickets that this prevents (list IDs). |
||||
|
- Benchmarks or profiling showing a real bottleneck. |
||||
|
- Concrete upcoming requirements with dates/owners, not hypotheticals. |
||||
|
- Risk assessment comparing maintenance cost vs. expected benefit. |
||||
|
- A clear trade-off table showing why minimal won't suffice. |
||||
|
|
||||
|
If this evidence is not available, **ship the minimal fix** and open a |
||||
|
follow-up discussion item. |
||||
|
|
||||
|
## PR / Change Checklist (enforced by reviewer + model) |
||||
|
|
||||
|
- [ ] Smallest diff that fully fixes the issue (attach `git diff --stat` |
||||
|
if useful). |
||||
|
- [ ] No unrelated refactors or formatting. |
||||
|
- [ ] No new dependencies, or justification + ADR link provided. |
||||
|
- [ ] Abstractions only if ≥3 call sites or strong evidence says |
||||
|
otherwise (cite). |
||||
|
- [ ] Targeted tests proving the fix/regression guard. |
||||
|
- [ ] Short "Why this is enough now" note in the PR description. |
||||
|
- [ ] Optional: "Future Work (non-blocking)" section listing deferred |
||||
|
ideas. |
||||
|
|
||||
|
## Assistant Output Contract |
||||
|
|
||||
|
When proposing a change, provide: |
||||
|
|
||||
|
1. **Minimal Plan**: 3–6 bullet steps scoped to the immediate fix. |
||||
|
2. **Patch Sketch**: Focused diffs/snippets touching only necessary |
||||
|
files. |
||||
|
3. **Risk & Rollback**: One paragraph each on risk, quick rollback, |
||||
|
and test points. |
||||
|
4. **(If proposing complexity)**: Link/inline ADR summary + evidence + |
||||
|
trade-offs; otherwise default to minimal. |
||||
|
|
||||
|
One paragraph each on risk, quick rollback, and test points. |
||||
|
5. **(If proposing complexity)**: Link/inline ADR summary + evidence + |
||||
|
trade-offs; otherwise default to minimal. |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Proposing Changes |
||||
|
|
||||
|
- [ ] **Problem Analysis**: Clearly understand the specific issue scope |
||||
|
- [ ] **Evidence Review**: Gather evidence that justifies the change |
||||
|
- [ ] **Complexity Assessment**: Evaluate if change requires added complexity |
||||
|
- [ ] **Alternative Research**: Consider simpler solutions first |
||||
|
|
||||
|
### During Change Design |
||||
|
|
||||
|
- [ ] **Minimal Scope**: Design solution that addresses only the current issue |
||||
|
- [ ] **Evidence Integration**: Include specific evidence for any complexity |
||||
|
- [ ] **Dependency Review**: Minimize new dependencies and packages |
||||
|
- [ ] **Testing Strategy**: Plan minimal tests that prove the fix |
||||
|
|
||||
|
### After Change Design |
||||
|
|
||||
|
- [ ] **Self-Review**: Verify solution follows minimalist principles |
||||
|
- [ ] **Evidence Validation**: Confirm all claims have supporting evidence |
||||
|
- [ ] **Complexity Justification**: Document why minimal approach suffices |
||||
|
- [ ] **Future Work Planning**: Identify deferred improvements for later |
@ -0,0 +1,273 @@ |
|||||
|
--- |
||||
|
globs: **/db/databaseUtil.ts, **/interfaces/absurd-sql.d.ts, |
||||
|
**/src/registerSQLWorker.js, **/ |
||||
|
services/AbsurdSqlDatabaseService.ts |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
|
||||
|
# Absurd SQL - Cursor Development Guide |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Database development guidelines |
||||
|
|
||||
|
## Project Overview |
||||
|
|
||||
|
Absurd SQL is a backend implementation for sql.js that enables persistent |
||||
|
SQLite databases in the browser by using IndexedDB as a block storage system. |
||||
|
This guide provides rules and best practices for developing with this project |
||||
|
in Cursor. |
||||
|
|
||||
|
## Project Structure |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
absurd-sql/ |
||||
|
├── src/ # Source code |
||||
|
├── dist/ # Built files |
||||
|
├── package.json # Dependencies and scripts |
||||
|
├── rollup.config.js # Build configuration |
||||
|
└── jest.config.js # Test configuration |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Development Rules |
||||
|
|
||||
|
### 1. Worker Thread Requirements |
||||
|
|
||||
|
- All SQL operations MUST be performed in a worker thread |
||||
|
|
||||
|
- Main thread should only handle worker initialization and communication |
||||
|
|
||||
|
- Never block the main thread with database operations |
||||
|
|
||||
|
### 2. Code Organization |
||||
|
|
||||
|
- Keep worker code in separate files (e.g., `*.worker.js`) |
||||
|
|
||||
|
- Use ES modules for imports/exports |
||||
|
|
||||
|
- Follow the project's existing module structure |
||||
|
|
||||
|
### 3. Required Headers |
||||
|
|
||||
|
When developing locally or deploying, ensure these headers are set: |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
Cross-Origin-Opener-Policy: same-origin |
||||
|
Cross-Origin-Embedder-Policy: require-corp |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### 4. Browser Compatibility |
||||
|
|
||||
|
- Primary target: Modern browsers with SharedArrayBuffer support |
||||
|
|
||||
|
- Fallback mode: Safari (with limitations) |
||||
|
|
||||
|
- Always test in both modes |
||||
|
|
||||
|
### 5. Database Configuration |
||||
|
|
||||
|
Recommended database settings: |
||||
|
|
||||
|
```sql |
||||
|
|
||||
|
PRAGMA journal_mode=MEMORY; |
||||
|
PRAGMA page_size=8192; -- Optional, but recommended |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### 6. Development Workflow |
||||
|
|
||||
|
1. Install dependencies: |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
yarn add @jlongster/sql.js absurd-sql |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
2. Development commands: |
||||
|
|
||||
|
- `yarn build` - Build the project |
||||
|
|
||||
|
- `yarn jest` - Run tests |
||||
|
|
||||
|
- `yarn serve` - Start development server |
||||
|
|
||||
|
### 7. Testing Guidelines |
||||
|
|
||||
|
- Write tests for both SharedArrayBuffer and fallback modes |
||||
|
|
||||
|
- Use Jest for testing |
||||
|
|
||||
|
- Include performance benchmarks for critical operations |
||||
|
|
||||
|
### 8. Performance Considerations |
||||
|
|
||||
|
- Use bulk operations when possible |
||||
|
|
||||
|
- Monitor read/write performance |
||||
|
|
||||
|
- Consider using transactions for multiple operations |
||||
|
|
||||
|
- Avoid unnecessary database connections |
||||
|
|
||||
|
### 9. Error Handling |
||||
|
|
||||
|
- Implement proper error handling for: |
||||
|
|
||||
|
- Worker initialization failures |
||||
|
|
||||
|
- Database connection issues |
||||
|
|
||||
|
- Concurrent access conflicts (in fallback mode) |
||||
|
|
||||
|
- Storage quota exceeded scenarios |
||||
|
|
||||
|
### 10. Security Best Practices |
||||
|
|
||||
|
- Never expose database operations directly to the client |
||||
|
|
||||
|
- Validate all SQL queries |
||||
|
|
||||
|
- Implement proper access controls |
||||
|
|
||||
|
- Handle sensitive data appropriately |
||||
|
|
||||
|
### 11. Code Style |
||||
|
|
||||
|
- Follow ESLint configuration |
||||
|
|
||||
|
- Use async/await for asynchronous operations |
||||
|
|
||||
|
- Document complex database operations |
||||
|
|
||||
|
- Include comments for non-obvious optimizations |
||||
|
|
||||
|
### 12. Debugging |
||||
|
|
||||
|
- Use `jest-debug` for debugging tests |
||||
|
|
||||
|
- Monitor IndexedDB usage in browser dev tools |
||||
|
|
||||
|
- Check worker communication in console |
||||
|
|
||||
|
- Use performance monitoring tools |
||||
|
|
||||
|
## Common Patterns |
||||
|
|
||||
|
### Worker Initialization |
||||
|
|
||||
|
```javascript |
||||
|
|
||||
|
// Main thread |
||||
|
import { initBackend } from 'absurd-sql/dist/indexeddb-main-thread'; |
||||
|
|
||||
|
function init() { |
||||
|
let worker = new Worker(new URL('./index.worker.js', import.meta.url)); |
||||
|
initBackend(worker); |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Database Setup |
||||
|
|
||||
|
```javascript |
||||
|
|
||||
|
// Worker thread |
||||
|
import initSqlJs from '@jlongster/sql.js'; |
||||
|
import { SQLiteFS } from 'absurd-sql'; |
||||
|
import IndexedDBBackend from 'absurd-sql/dist/indexeddb-backend'; |
||||
|
|
||||
|
async function setupDatabase() { |
||||
|
let SQL = await initSqlJs({ locateFile: file => file }); |
||||
|
let sqlFS = new SQLiteFS(SQL.FS, new IndexedDBBackend()); |
||||
|
SQL.register_for_idb(sqlFS); |
||||
|
|
||||
|
SQL.FS.mkdir('/sql'); |
||||
|
SQL.FS.mount(sqlFS, {}, '/sql'); |
||||
|
|
||||
|
return new SQL.Database('/sql/db.sqlite', { filename: true }); |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Troubleshooting |
||||
|
|
||||
|
### Common Issues |
||||
|
|
||||
|
1. SharedArrayBuffer not available |
||||
|
|
||||
|
- Check COOP/COEP headers |
||||
|
|
||||
|
- Verify browser support |
||||
|
|
||||
|
- Test fallback mode |
||||
|
|
||||
|
2. Worker initialization failures |
||||
|
|
||||
|
- Check file paths |
||||
|
|
||||
|
- Verify module imports |
||||
|
|
||||
|
- Check browser console for errors |
||||
|
|
||||
|
3. Performance issues |
||||
|
|
||||
|
- Monitor IndexedDB usage |
||||
|
|
||||
|
- Check for unnecessary operations |
||||
|
|
||||
|
- Verify transaction usage |
||||
|
|
||||
|
## Resources |
||||
|
|
||||
|
- [Project Demo](https://priceless-keller-d097e5.netlify.app/) |
||||
|
|
||||
|
- [Example Project](https://github.com/jlongster/absurd-example-project) |
||||
|
|
||||
|
- [Blog Post](https://jlongster.com/future-sql-web) |
||||
|
|
||||
|
- [SQL.js Documentation](https://github.com/sql-js/sql.js/) |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Active database development guidelines |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: Absurd SQL, SQL.js, IndexedDB |
||||
|
**Stakeholders**: Development team, Database team |
||||
|
|
||||
|
- [Project Demo](https://priceless-keller-d097e5.netlify.app/) |
||||
|
|
||||
|
- [Example Project](https://github.com/jlongster/absurd-example-project) |
||||
|
|
||||
|
- [Blog Post](https://jlongster.com/future-sql-web) |
||||
|
|
||||
|
- [SQL.js Documentation](https://github.com/sql-js/sql.js/) |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Absurd SQL Implementation |
||||
|
|
||||
|
- [ ] **Browser Support**: Verify SharedArrayBuffer and COOP/COEP support |
||||
|
- [ ] **Worker Setup**: Plan worker thread initialization and communication |
||||
|
- [ ] **Database Planning**: Plan database schema and initialization |
||||
|
- [ ] **Performance Planning**: Plan performance monitoring and optimization |
||||
|
|
||||
|
### During Absurd SQL Implementation |
||||
|
|
||||
|
- [ ] **Worker Initialization**: Set up worker threads with proper communication |
||||
|
- [ ] **Database Setup**: Initialize SQLite database with IndexedDB backend |
||||
|
- [ ] **File System**: Configure SQLiteFS with proper mounting |
||||
|
- [ ] **Error Handling**: Implement proper error handling for worker failures |
||||
|
|
||||
|
### After Absurd SQL Implementation |
||||
|
|
||||
|
- [ ] **Cross-Browser Testing**: Test across different browsers and devices |
||||
|
- [ ] **Performance Validation**: Monitor IndexedDB usage and performance |
||||
|
- [ ] **Worker Validation**: Verify worker communication and database operations |
||||
|
- [ ] **Documentation**: Update Absurd SQL implementation documentation |
@ -0,0 +1,62 @@ |
|||||
|
# Legacy Dexie Database — Migration Guidelines |
||||
|
|
||||
|
> **Agent role**: Reference this file when working with legacy Dexie |
||||
|
> database code or migration patterns. |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
All references in the codebase to Dexie apply only to migration from |
||||
|
IndexedDb to Absurd SQL. Dexie is no longer used for new development. |
||||
|
|
||||
|
## Migration Status |
||||
|
|
||||
|
- **Legacy Code**: Existing Dexie implementations being migrated |
||||
|
- **Target**: Absurd SQL with IndexedDB backend |
||||
|
- **Timeline**: Gradual migration as features are updated |
||||
|
|
||||
|
## Key Principles |
||||
|
|
||||
|
- **No New Dexie**: All new database operations use Absurd SQL |
||||
|
- **Migration Path**: Legacy code should be migrated when updated |
||||
|
- **Backward Compatibility**: Maintain existing functionality during |
||||
|
migration |
||||
|
|
||||
|
## Integration Points |
||||
|
|
||||
|
- Apply these rules when updating database-related code |
||||
|
- Use during feature development and refactoring |
||||
|
- Include in database architecture decisions |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Legacy migration guidelines |
||||
|
**Priority**: Low |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: absurd-sql.mdc |
||||
|
**Stakeholders**: Database team, Development team |
||||
|
|
||||
|
All references in the codebase to Dexie apply only to migration from IndexedDb |
||||
|
to Sqlite and will be deprecated in future versions. |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Legacy Dexie Work |
||||
|
|
||||
|
- [ ] **Migration Analysis**: Identify legacy Dexie code that needs migration |
||||
|
- [ ] **Target Planning**: Plan migration to Absurd SQL with IndexedDB backend |
||||
|
- [ ] **Backward Compatibility**: Plan to maintain existing functionality |
||||
|
- [ ] **Testing Strategy**: Plan testing approach for migration |
||||
|
|
||||
|
### During Legacy Dexie Migration |
||||
|
|
||||
|
- [ ] **No New Dexie**: Ensure no new Dexie code is introduced |
||||
|
- [ ] **Migration Implementation**: Implement migration to Absurd SQL |
||||
|
- [ ] **Functionality Preservation**: Maintain existing functionality during migration |
||||
|
- [ ] **Error Handling**: Implement proper error handling for migration |
||||
|
|
||||
|
### After Legacy Dexie Migration |
||||
|
|
||||
|
- [ ] **Functionality Testing**: Verify all functionality still works correctly |
||||
|
- [ ] **Performance Validation**: Ensure performance meets or exceeds legacy |
||||
|
- [ ] **Documentation Update**: Update database documentation |
||||
|
- [ ] **Legacy Cleanup**: Remove deprecated Dexie code |
@ -0,0 +1,105 @@ |
|||||
|
--- |
||||
|
description: when doing anything with capacitor assets |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
|
||||
|
# Asset Configuration Directive |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Asset management guidelines |
||||
|
|
||||
|
*Scope: Assets Only (icons, splashes, image pipelines) — not overall build |
||||
|
orchestration* |
||||
|
|
||||
|
## Intent |
||||
|
|
||||
|
- Version **asset configuration files** (optionally dev-time generated). |
||||
|
|
||||
|
- **Do not** version platform asset outputs (Android/iOS/Electron); generate |
||||
|
|
||||
|
them **at build-time** with standard tools. |
||||
|
|
||||
|
- Keep existing per-platform build scripts unchanged. |
||||
|
|
||||
|
## Source of Truth |
||||
|
|
||||
|
- **Preferred (Capacitor default):** `resources/` as the single master source. |
||||
|
|
||||
|
- **Alternative:** `assets/` is acceptable **only** if `capacitor-assets` is |
||||
|
|
||||
|
explicitly configured to read from it. |
||||
|
|
||||
|
- **Never** maintain both `resources/` and `assets/` as parallel sources. |
||||
|
|
||||
|
Migrate and delete the redundant folder. |
||||
|
|
||||
|
## Config Files |
||||
|
|
||||
|
- Live under: `config/assets/` (committed). |
||||
|
|
||||
|
- Examples: |
||||
|
|
||||
|
- `config/assets/capacitor-assets.config.json` (or the path the tool |
||||
|
|
||||
|
expects) |
||||
|
|
||||
|
- `config/assets/android.assets.json` |
||||
|
|
||||
|
- `config/assets/ios.assets.json` |
||||
|
|
||||
|
- `config/assets/common.assets.yaml` (optional shared layer) |
||||
|
|
||||
|
- **Dev-time generation allowed** for these configs; **build-time |
||||
|
|
||||
|
generation is forbidden**. |
||||
|
|
||||
|
## Build-Time Behavior |
||||
|
|
||||
|
- Build generates platform assets (not configs) using the standard chain: |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
npm run build:capacitor # web build via Vite (.mts) |
||||
|
npx cap sync |
||||
|
npx capacitor-assets generate # produces platform assets; not committed |
||||
|
|
||||
|
# then platform-specific build steps |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Active asset management directive |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: capacitor-assets toolchain |
||||
|
**Stakeholders**: Development team, Build team |
||||
|
|
||||
|
npx capacitor-assets generate # produces platform assets; not committed |
||||
|
|
||||
|
# then platform-specific build steps |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Asset Configuration |
||||
|
|
||||
|
- [ ] **Source Review**: Identify current asset source location (`resources/` or |
||||
|
`assets/`) |
||||
|
- [ ] **Tool Assessment**: Verify capacitor-assets toolchain is available |
||||
|
- [ ] **Config Planning**: Plan configuration file structure and location |
||||
|
- [ ] **Platform Analysis**: Understand asset requirements for all target platforms |
||||
|
|
||||
|
### During Asset Configuration |
||||
|
|
||||
|
- [ ] **Source Consolidation**: Ensure single source of truth (prefer `resources/`) |
||||
|
- [ ] **Config Creation**: Create platform-specific asset configuration files |
||||
|
- [ ] **Tool Integration**: Configure capacitor-assets to read from correct source |
||||
|
- [ ] **Build Integration**: Integrate asset generation into build pipeline |
||||
|
|
||||
|
### After Asset Configuration |
||||
|
|
||||
|
- [ ] **Build Testing**: Verify assets generate correctly at build time |
||||
|
- [ ] **Platform Validation**: Test asset generation across all platforms |
||||
|
- [ ] **Documentation**: Update build documentation with asset generation steps |
||||
|
- [ ] **Team Communication**: Communicate asset workflow changes to team |
@ -0,0 +1,177 @@ |
|||||
|
# Complexity Assessment — Evaluation Frameworks |
||||
|
|
||||
|
> **Agent role**: Reference this file for |
||||
|
complexity evaluation frameworks when assessing project complexity. |
||||
|
|
||||
|
## 📊 Complexity Assessment Framework |
||||
|
|
||||
|
### **Technical Complexity Factors** |
||||
|
|
||||
|
#### **Code Changes** |
||||
|
|
||||
|
- **Simple**: Text, styling, configuration updates |
||||
|
|
||||
|
- **Medium**: New components, refactoring existing code |
||||
|
|
||||
|
- **Complex**: Architecture changes, new patterns, integrations |
||||
|
|
||||
|
- **Unknown**: New technologies, APIs, or approaches |
||||
|
|
||||
|
#### **Platform Impact** |
||||
|
|
||||
|
- **Single platform**: Web-only or mobile-only changes |
||||
|
|
||||
|
- **Two platforms**: Web + mobile or web + desktop |
||||
|
|
||||
|
- **Three platforms**: Web + mobile + desktop |
||||
|
|
||||
|
- **Cross-platform consistency**: Ensuring behavior matches across all platforms |
||||
|
|
||||
|
#### **Testing Requirements** |
||||
|
|
||||
|
- **Basic**: Unit tests for new functionality |
||||
|
|
||||
|
- **Comprehensive**: Integration tests, cross-platform testing |
||||
|
|
||||
|
- **User acceptance**: User testing, feedback integration |
||||
|
|
||||
|
- **Performance**: Load testing, optimization validation |
||||
|
|
||||
|
### **Dependency Complexity** |
||||
|
|
||||
|
#### **Internal Dependencies** |
||||
|
|
||||
|
- **Low**: Self-contained changes, no other components affected |
||||
|
|
||||
|
- **Medium**: Changes affect related components or services |
||||
|
|
||||
|
- **High**: Changes affect core architecture or multiple systems |
||||
|
|
||||
|
- **Critical**: Changes affect data models or core business logic |
||||
|
|
||||
|
#### **External Dependencies** |
||||
|
|
||||
|
- **None**: No external services or APIs involved |
||||
|
|
||||
|
- **Low**: Simple API calls or service integrations |
||||
|
|
||||
|
- **Medium**: Complex integrations with external systems |
||||
|
|
||||
|
- **High**: Third-party platform dependencies or complex APIs |
||||
|
|
||||
|
#### **Infrastructure Dependencies** |
||||
|
|
||||
|
- **None**: No infrastructure changes required |
||||
|
|
||||
|
- **Low**: Configuration updates or environment changes |
||||
|
|
||||
|
- **Medium**: New services or infrastructure components |
||||
|
|
||||
|
- **High**: Platform migrations or major infrastructure changes |
||||
|
|
||||
|
## 🔍 Complexity Evaluation Process |
||||
|
|
||||
|
### **Step 1: Technical Assessment** |
||||
|
|
||||
|
1. **Identify scope of changes** - what files/components are affected |
||||
|
|
||||
|
2. **Assess platform impact** - which platforms need updates |
||||
|
|
||||
|
3. **Evaluate testing needs** - what testing is required |
||||
|
|
||||
|
4. **Consider performance impact** - will this affect performance |
||||
|
|
||||
|
### **Step 2: Dependency Mapping** |
||||
|
|
||||
|
1. **Map internal dependencies** - what other components are affected |
||||
|
|
||||
|
2. **Identify external dependencies** - what external services are involved |
||||
|
|
||||
|
3. **Assess infrastructure needs** - what infrastructure changes are required |
||||
|
|
||||
|
4. **Evaluate risk factors** - what could go wrong |
||||
|
|
||||
|
### **Step 3: Complexity Classification** |
||||
|
|
||||
|
1. **Assign complexity levels** to each factor |
||||
|
|
||||
|
2. **Identify highest complexity** areas that need attention |
||||
|
|
||||
|
3. **Plan mitigation strategies** for high-complexity areas |
||||
|
|
||||
|
4. **Set realistic expectations** based on complexity assessment |
||||
|
|
||||
|
## 📋 Complexity Assessment Checklist |
||||
|
|
||||
|
- [ ] Technical scope identified and mapped |
||||
|
|
||||
|
- [ ] Platform impact assessed across all targets |
||||
|
|
||||
|
- [ ] Testing requirements defined and planned |
||||
|
|
||||
|
- [ ] Internal dependencies mapped and evaluated |
||||
|
|
||||
|
- [ ] External dependencies identified and assessed |
||||
|
|
||||
|
- [ ] Infrastructure requirements evaluated |
||||
|
|
||||
|
- [ ] Risk factors identified and mitigation planned |
||||
|
|
||||
|
- [ ] Complexity levels assigned to all factors |
||||
|
|
||||
|
- [ ] Realistic expectations set based on assessment |
||||
|
|
||||
|
## 🎯 Complexity Reduction Strategies |
||||
|
|
||||
|
### **Scope Reduction** |
||||
|
|
||||
|
- Break large features into smaller, manageable pieces |
||||
|
|
||||
|
- Focus on core functionality first, add polish later |
||||
|
|
||||
|
- Consider phased rollout to reduce initial complexity |
||||
|
|
||||
|
### **Dependency Management** |
||||
|
|
||||
|
- Minimize external dependencies when possible |
||||
|
|
||||
|
- Use abstraction layers to isolate complex integrations |
||||
|
|
||||
|
- Plan for dependency failures and fallbacks |
||||
|
|
||||
|
### **Testing Strategy** |
||||
|
|
||||
|
- Start with basic testing and expand coverage |
||||
|
|
||||
|
- Use automated testing to reduce manual testing complexity |
||||
|
|
||||
|
- Plan for iterative testing and feedback cycles |
||||
|
|
||||
|
## **See also** |
||||
|
|
||||
|
- `.cursor/rules/development/realistic_time_estimation.mdc` for the core principles |
||||
|
|
||||
|
- `.cursor/rules/development/planning_examples.mdc` for planning examples |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Complexity Assessment |
||||
|
|
||||
|
- [ ] **Problem Scope**: Clearly define the problem to be assessed |
||||
|
- [ ] **Stakeholder Identification**: Identify all parties affected by complexity |
||||
|
- [ ] **Context Analysis**: Understand technical and business context |
||||
|
- [ ] **Assessment Criteria**: Define what factors determine complexity |
||||
|
|
||||
|
### During Complexity Assessment |
||||
|
|
||||
|
- [ ] **Technical Mapping**: Map technical scope and platform impact |
||||
|
- [ ] **Dependency Analysis**: Identify internal and external dependencies |
||||
|
- [ ] **Risk Evaluation**: Assess infrastructure needs and risk factors |
||||
|
- [ ] **Complexity Classification**: Assign complexity levels to all factors |
||||
|
|
||||
|
### After Complexity Assessment |
||||
|
|
||||
|
- [ ] **Mitigation Planning**: Plan strategies for high-complexity areas |
||||
|
- [ ] **Expectation Setting**: Set realistic expectations based on assessment |
||||
|
- [ ] **Documentation**: Document assessment process and findings |
||||
|
- [ ] **Stakeholder Communication**: Share results and recommendations |
@ -0,0 +1,177 @@ |
|||||
|
# Dependency Management — Best Practices |
||||
|
|
||||
|
> **Agent role**: Reference this file for dependency management strategies and |
||||
|
best practices when working with software projects. |
||||
|
|
||||
|
## Dependency Management Best Practices |
||||
|
|
||||
|
### Pre-build Validation |
||||
|
|
||||
|
- **Check Critical Dependencies**: |
||||
|
|
||||
|
Validate essential tools before executing build |
||||
|
scripts |
||||
|
|
||||
|
- **Use npx for Local Dependencies**: Prefer `npx tsx` over direct `tsx` to |
||||
|
|
||||
|
avoid PATH issues |
||||
|
|
||||
|
- **Environment Consistency**: Ensure all team members have identical dependency |
||||
|
|
||||
|
versions |
||||
|
|
||||
|
### Common Pitfalls |
||||
|
|
||||
|
- **Missing npm install**: Team members cloning without running `npm install` |
||||
|
|
||||
|
- **PATH Issues**: Direct command execution vs. npm script execution differences |
||||
|
|
||||
|
- **Version Mismatches**: Different Node.js/npm versions across team members |
||||
|
|
||||
|
### Validation Strategies |
||||
|
|
||||
|
- **Dependency Check Scripts**: Implement pre-build validation for critical |
||||
|
|
||||
|
dependencies |
||||
|
|
||||
|
- **Environment Requirements**: |
||||
|
|
||||
|
Document and enforce minimum Node.js/npm versions |
||||
|
|
||||
|
- **Onboarding Checklist**: Standardize team member setup procedures |
||||
|
|
||||
|
### Error Messages and Guidance |
||||
|
|
||||
|
- **Specific Error Context**: |
||||
|
|
||||
|
Provide clear guidance when dependency issues occur |
||||
|
|
||||
|
- **Actionable Solutions**: Direct users to specific commands (`npm install`, |
||||
|
|
||||
|
`npm run check:dependencies`) |
||||
|
|
||||
|
- **Environment Diagnostics**: Implement comprehensive environment validation |
||||
|
|
||||
|
tools |
||||
|
|
||||
|
### Build Script Enhancements |
||||
|
|
||||
|
- **Early Validation**: Check dependencies before starting build processes |
||||
|
|
||||
|
- **Graceful Degradation**: Continue builds when possible but warn about issues |
||||
|
|
||||
|
- **Helpful Tips**: Remind users about dependency management best practices |
||||
|
|
||||
|
## Environment Setup Guidelines |
||||
|
|
||||
|
### Required Tools |
||||
|
|
||||
|
- **Node.js**: Minimum version requirements and LTS recommendations |
||||
|
|
||||
|
- **npm**: Version compatibility and global package management |
||||
|
|
||||
|
- **Platform-specific tools**: Android SDK, Xcode, etc. |
||||
|
|
||||
|
### Environment Variables |
||||
|
|
||||
|
- **NODE_ENV**: Development, testing, production environments |
||||
|
|
||||
|
- **PATH**: Ensure tools are accessible from command line |
||||
|
|
||||
|
- **Platform-specific**: Android SDK paths, Xcode command line tools |
||||
|
|
||||
|
### Validation Commands |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
# Check Node.js version |
||||
|
|
||||
|
node --version |
||||
|
|
||||
|
# Check npm version |
||||
|
|
||||
|
npm --version |
||||
|
|
||||
|
# Check global packages |
||||
|
|
||||
|
npm list -g --depth=0 |
||||
|
|
||||
|
# Validate platform tools |
||||
|
|
||||
|
npx capacitor doctor |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Dependency Troubleshooting |
||||
|
|
||||
|
### Common Issues |
||||
|
|
||||
|
1. **Permission Errors**: Use `sudo` sparingly, prefer `npm config set prefix` |
||||
|
|
||||
|
2. **Version Conflicts**: Use `npm ls` to identify dependency conflicts |
||||
|
|
||||
|
3. **Cache Issues**: Clear npm cache with `npm cache clean --force` |
||||
|
|
||||
|
4. **Lock File Issues**: Delete `package-lock.json` and `node_modules`, |
||||
|
|
||||
|
then reinstall |
||||
|
|
||||
|
### Resolution Strategies |
||||
|
|
||||
|
- **Dependency Audit**: Run `npm audit` to identify security issues |
||||
|
|
||||
|
- **Version Pinning**: Use exact versions for critical dependencies |
||||
|
|
||||
|
- **Peer Dependency Management**: Ensure compatible versions across packages |
||||
|
|
||||
|
- **Platform-specific Dependencies**: Handle different requirements per platform |
||||
|
|
||||
|
## Best Practices for Teams |
||||
|
|
||||
|
### Onboarding |
||||
|
|
||||
|
- **Environment Setup Script**: Automated setup for new team members |
||||
|
|
||||
|
- **Version Locking**: Use `package-lock.json` and `yarn.lock` consistently |
||||
|
|
||||
|
- **Documentation**: Clear setup instructions with troubleshooting steps |
||||
|
|
||||
|
### Maintenance |
||||
|
|
||||
|
- **Regular Updates**: Schedule dependency updates and security patches |
||||
|
|
||||
|
- **Testing**: Validate changes don't break existing functionality |
||||
|
|
||||
|
- **Rollback Plan**: Maintain ability to revert to previous working versions |
||||
|
|
||||
|
**See also**: |
||||
|
`.cursor/rules/development/software_development.mdc` for core development principles. |
||||
|
|
||||
|
**Status**: Active dependency management guidelines |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: software_development.mdc |
||||
|
**Stakeholders**: Development team, DevOps team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Dependency Changes |
||||
|
|
||||
|
- [ ] **Current State Review**: Check current dependency versions and status |
||||
|
- [ ] **Impact Analysis**: Assess impact of dependency changes on codebase |
||||
|
- [ ] **Compatibility Check**: Verify compatibility with existing code |
||||
|
- [ ] **Security Review**: Review security implications of dependency changes |
||||
|
|
||||
|
### During Dependency Management |
||||
|
|
||||
|
- [ ] **Version Selection**: Choose appropriate dependency versions |
||||
|
- [ ] **Testing**: Test with new dependency versions |
||||
|
- [ ] **Documentation**: Update dependency documentation |
||||
|
- [ ] **Team Communication**: Communicate changes to team members |
||||
|
|
||||
|
### After Dependency Changes |
||||
|
|
||||
|
- [ ] **Comprehensive Testing**: Test all functionality with new dependencies |
||||
|
- [ ] **Documentation Update**: Update all relevant documentation |
||||
|
- [ ] **Deployment Planning**: Plan and execute deployment strategy |
||||
|
- [ ] **Monitoring**: Monitor for issues after deployment |
@ -0,0 +1,33 @@ |
|||||
|
--- |
||||
|
globs: **/src/**/* |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
✅ use system date command to timestamp all interactions with accurate date and |
||||
|
time |
||||
|
✅ python script files must always have a blank line at their end |
||||
|
✅ remove whitespace at the end of lines |
||||
|
✅ use npm run lint-fix to check for warnings |
||||
|
✅ do not use npm run dev let me handle running and supplying feedback |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Development Work |
||||
|
|
||||
|
- [ ] **System Date Check**: Use system date command for accurate timestamps |
||||
|
- [ ] **Environment Setup**: Verify development environment is ready |
||||
|
- [ ] **Linting Setup**: Ensure npm run lint-fix is available |
||||
|
- [ ] **Code Standards**: Review project coding standards and requirements |
||||
|
|
||||
|
### During Development |
||||
|
|
||||
|
- [ ] **Timestamp Usage**: Include accurate timestamps in all interactions |
||||
|
- [ ] **Code Quality**: Use npm run lint-fix to check for warnings |
||||
|
- [ ] **File Standards**: Ensure Python files have blank line at end |
||||
|
- [ ] **Whitespace**: Remove trailing whitespace from all lines |
||||
|
|
||||
|
### After Development |
||||
|
|
||||
|
- [ ] **Linting Check**: Run npm run lint-fix to verify code quality |
||||
|
- [ ] **File Validation**: Confirm Python files end with blank line |
||||
|
- [ ] **Whitespace Review**: Verify no trailing whitespace remains |
||||
|
- [ ] **Documentation**: Update relevant documentation with changes |
@ -0,0 +1,119 @@ |
|||||
|
# Historical Comment Management — Code Clarity Guidelines |
||||
|
|
||||
|
> **Agent role**: When encountering historical comments about removed |
||||
|
> methods, deprecated patterns, or architectural changes, apply these |
||||
|
> guidelines to maintain code clarity and developer guidance. |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
Historical comments should either be **removed entirely** or **transformed |
||||
|
into actionable guidance** for future developers. Avoid keeping comments |
||||
|
that merely state what was removed without explaining why or what to do |
||||
|
instead. |
||||
|
|
||||
|
## Decision Framework |
||||
|
|
||||
|
### When to Remove Comments |
||||
|
|
||||
|
- **Obsolete Information**: Comment describes functionality that no |
||||
|
longer exists |
||||
|
- **Outdated Context**: Comment refers to old patterns that are no |
||||
|
longer relevant |
||||
|
- **No Actionable Value**: Comment doesn't help future developers |
||||
|
make decisions |
||||
|
|
||||
|
### When to Transform Comments |
||||
|
|
||||
|
- **Migration Guidance**: Future developers might need to understand |
||||
|
the evolution |
||||
|
- **Alternative Approaches**: The comment can guide future |
||||
|
implementation choices |
||||
|
- **Historical Context**: Understanding the change helps with |
||||
|
current decisions |
||||
|
|
||||
|
## Transformation Patterns |
||||
|
|
||||
|
### 1. **Removed Method** → **Alternative Approach** |
||||
|
|
||||
|
```typescript |
||||
|
// Before: Historical comment |
||||
|
// turnOffNotifyingFlags method removed - notification state is now |
||||
|
// managed by NotificationSection component |
||||
|
|
||||
|
// After: Actionable guidance |
||||
|
// Note: Notification state management has been migrated to |
||||
|
// NotificationSection component |
||||
|
``` |
||||
|
|
||||
|
### 2. **Deprecated Pattern** → **Current Best Practice** |
||||
|
|
||||
|
```typescript |
||||
|
// Before: Historical comment |
||||
|
// Database access has been migrated from direct IndexedDB calls to |
||||
|
// PlatformServiceMixin |
||||
|
|
||||
|
// After: Actionable guidance |
||||
|
// This provides better platform abstraction and consistent error |
||||
|
// handling across web/mobile/desktop |
||||
|
|
||||
|
// When adding new database operations, use this.$getContact(), |
||||
|
// this.$saveSettings(), etc. |
||||
|
``` |
||||
|
|
||||
|
## Best Practices |
||||
|
|
||||
|
### 1. **Use Actionable Language**: Guide future decisions, not just |
||||
|
|
||||
|
document history |
||||
|
|
||||
|
### 2. **Provide Alternatives**: Always suggest what to use instead |
||||
|
|
||||
|
### 3. **Update Related Docs**: If removing from code, consider |
||||
|
|
||||
|
adding to documentation |
||||
|
|
||||
|
### 4. **Keep Context**: Include enough information to understand |
||||
|
|
||||
|
why the change was made |
||||
|
|
||||
|
## Integration Points |
||||
|
|
||||
|
- Apply these rules when reviewing code changes |
||||
|
- Use during code cleanup and refactoring |
||||
|
- Include in code review checklists |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/development/historical_comment_patterns.mdc` for detailed |
||||
|
transformation examples and patterns |
||||
|
|
||||
|
**Status**: Active comment management guidelines |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Development team, Code reviewers |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Comment Review |
||||
|
|
||||
|
- [ ] **Code Analysis**: Review code for historical or outdated comments |
||||
|
- [ ] **Context Understanding**: Understand the current state of the codebase |
||||
|
- [ ] **Pattern Identification**: Identify comments that need transformation or removal |
||||
|
- [ ] **Documentation Planning**: Plan where to move important historical context |
||||
|
|
||||
|
### During Comment Management |
||||
|
|
||||
|
- [ ] **Transformation**: Convert historical comments to actionable guidance |
||||
|
- [ ] **Alternative Provision**: Suggest current best practices and alternatives |
||||
|
- [ ] **Context Preservation**: Maintain enough information to understand changes |
||||
|
- [ ] **Documentation Update**: Move important context to appropriate documentation |
||||
|
|
||||
|
### After Comment Management |
||||
|
|
||||
|
- [ ] **Code Review**: Ensure transformed comments provide actionable value |
||||
|
- [ ] **Documentation Sync**: Verify related documentation is updated |
||||
|
- [ ] **Team Communication**: Share comment transformation patterns with team |
||||
|
- [ ] **Process Integration**: Include comment management in code review checklists |
@ -0,0 +1,139 @@ |
|||||
|
# Historical Comment Patterns — Transformation Examples |
||||
|
|
||||
|
> **Agent role**: Reference this file for specific patterns and |
||||
|
examples when transforming historical comments into actionable guidance. |
||||
|
|
||||
|
## 🔄 Transformation Patterns |
||||
|
|
||||
|
### 1. From Removal Notice to Migration Note |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// ❌ REMOVE THIS |
||||
|
// turnOffNotifyingFlags method removed - |
||||
|
notification state is now managed by NotificationSection component |
||||
|
|
||||
|
// ✅ TRANSFORM TO THIS |
||||
|
// Note: Notification state management has been migrated to NotificationSection |
||||
|
component |
||||
|
// which handles its own lifecycle and persistence via PlatformServiceMixin |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### 2. From Deprecation Notice to Implementation Guide |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// ❌ REMOVE THIS |
||||
|
// This will be handled by the NewComponent now |
||||
|
// No need to call oldMethod() as it's no longer needed |
||||
|
|
||||
|
// ✅ TRANSFORM TO THIS |
||||
|
// Note: This functionality has been migrated to NewComponent |
||||
|
// which provides better separation of concerns and testability |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### 3. From Historical Note to Architectural Context |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// ❌ REMOVE THIS |
||||
|
// Old approach: used direct database calls |
||||
|
// New approach: uses service layer |
||||
|
|
||||
|
// ✅ TRANSFORM TO THIS |
||||
|
// Note: Database access has been abstracted through service layer |
||||
|
// for better testability and platform independence |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## 🚫 Anti-Patterns to Remove |
||||
|
|
||||
|
- Comments that only state what was removed |
||||
|
|
||||
|
- Comments that don't explain the current approach |
||||
|
|
||||
|
- Comments that reference non-existent methods |
||||
|
|
||||
|
- Comments that are self-evident from the code |
||||
|
|
||||
|
- Comments that don't help future decision-making |
||||
|
|
||||
|
## 📚 Examples |
||||
|
|
||||
|
### Good Historical Comment (Keep & Transform) |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// Note: Database access has been migrated from direct IndexedDB calls to |
||||
|
PlatformServiceMixin |
||||
|
// This provides better platform abstraction and |
||||
|
consistent error handling across web/mobile/desktop |
||||
|
// When adding new database operations, use this.$getContact(), |
||||
|
this.$saveSettings(), etc. |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Bad Historical Comment (Remove) |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// Old method getContactFromDB() removed - now handled by PlatformServiceMixin |
||||
|
// No need to call the old method anymore |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## 🎯 When to Use Each Pattern |
||||
|
|
||||
|
### Migration Notes |
||||
|
|
||||
|
- Use when functionality has moved to a different component/service |
||||
|
|
||||
|
- Explain the new location and why it's better |
||||
|
|
||||
|
- Provide guidance on how to use the new approach |
||||
|
|
||||
|
### Implementation Guides |
||||
|
|
||||
|
- Use when patterns have changed significantly |
||||
|
|
||||
|
- Explain the architectural benefits |
||||
|
|
||||
|
- Show how to implement the new pattern |
||||
|
|
||||
|
### Architectural Context |
||||
|
|
||||
|
- Use when the change represents a system-wide improvement |
||||
|
|
||||
|
- Explain the reasoning behind the change |
||||
|
|
||||
|
- Help future developers understand the evolution |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: `.cursor/rules/development/historical_comment_management.mdc` for |
||||
|
the core decision framework and best practices. |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Comment Review |
||||
|
|
||||
|
- [ ] **Code Analysis**: Review code for historical or outdated comments |
||||
|
- [ ] **Pattern Identification**: Identify comments that need transformation or removal |
||||
|
- [ ] **Context Understanding**: Understand the current state of the codebase |
||||
|
- [ ] **Transformation Planning**: Plan how to transform or remove comments |
||||
|
|
||||
|
### During Comment Transformation |
||||
|
|
||||
|
- [ ] **Pattern Selection**: Choose appropriate transformation pattern |
||||
|
- [ ] **Content Creation**: Create actionable guidance for future developers |
||||
|
- [ ] **Alternative Provision**: Suggest current best practices and approaches |
||||
|
- [ ] **Context Preservation**: Maintain enough information to understand changes |
||||
|
|
||||
|
### After Comment Transformation |
||||
|
|
||||
|
- [ ] **Code Review**: Ensure transformed comments provide actionable value |
||||
|
- [ ] **Pattern Documentation**: Document transformation patterns for team use |
||||
|
- [ ] **Team Communication**: Share comment transformation patterns with team |
||||
|
- [ ] **Process Integration**: Include comment patterns in code review checklists |
@ -0,0 +1,178 @@ |
|||||
|
# Investigation Report Example |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Investigation methodology example |
||||
|
|
||||
|
## Investigation — Registration Dialog Test Flakiness |
||||
|
|
||||
|
## Objective |
||||
|
|
||||
|
Identify root cause of flaky tests related to registration dialogs in contact |
||||
|
import scenarios. |
||||
|
|
||||
|
## System Map |
||||
|
|
||||
|
- User action → ContactInputForm → ContactsView.addContact() → |
||||
|
|
||||
|
handleRegistrationPrompt() |
||||
|
|
||||
|
- setTimeout(1000ms) → Modal dialog → User response → Registration API call |
||||
|
|
||||
|
- Test execution → Wait for dialog → Assert dialog content → Click response |
||||
|
|
||||
|
button |
||||
|
|
||||
|
## Findings (Evidence) |
||||
|
|
||||
|
- **1-second timeout causes flakiness** — evidence: |
||||
|
|
||||
|
`src/views/ContactsView.vue:971-1000`; setTimeout(..., 1000) in |
||||
|
handleRegistrationPrompt() |
||||
|
|
||||
|
- **Import flow bypasses dialogs** — evidence: |
||||
|
|
||||
|
`src/views/ContactImportView.vue:500-520`; importContacts() calls |
||||
|
$insertContact() directly, no handleRegistrationPrompt() |
||||
|
|
||||
|
- **Dialog only appears in direct add flow** — evidence: |
||||
|
|
||||
|
`src/views/ContactsView.vue:774-800`; addContact() calls |
||||
|
handleRegistrationPrompt() after database insert |
||||
|
|
||||
|
## Hypotheses & Failure Modes |
||||
|
|
||||
|
- H1: 1-second timeout makes dialog appearance unpredictable; would fail when |
||||
|
|
||||
|
tests run faster than 1000ms |
||||
|
|
||||
|
- H2: Test environment timing differs from development; watch for CI vs local |
||||
|
|
||||
|
test differences |
||||
|
|
||||
|
## Corrections |
||||
|
|
||||
|
- Updated: "Multiple dialogs interfere with imports" → "Import flow never |
||||
|
|
||||
|
triggers dialogs - they only appear in direct contact addition" |
||||
|
|
||||
|
- Updated: "Complex batch registration needed" → "Simple timeout removal and |
||||
|
|
||||
|
test mode flag sufficient" |
||||
|
|
||||
|
## Diagnostics (Next Checks) |
||||
|
|
||||
|
- [ ] Repro on CI environment vs local |
||||
|
|
||||
|
- [ ] Measure actual dialog appearance timing |
||||
|
|
||||
|
- [ ] Test with setTimeout removed |
||||
|
|
||||
|
- [ ] Verify import flow doesn't call handleRegistrationPrompt |
||||
|
|
||||
|
## Risks & Scope |
||||
|
|
||||
|
- Impacted: Contact addition tests, registration workflow tests; Data: None; |
||||
|
|
||||
|
Users: Test suite reliability |
||||
|
|
||||
|
## Decision / Next Steps |
||||
|
|
||||
|
- Owner: Development Team; By: 2025-01-28 |
||||
|
|
||||
|
- Action: Remove 1-second timeout + add test mode flag; Exit criteria: Tests |
||||
|
|
||||
|
pass consistently |
||||
|
|
||||
|
## References |
||||
|
|
||||
|
- `src/views/ContactsView.vue:971-1000` |
||||
|
|
||||
|
- `src/views/ContactImportView.vue:500-520` |
||||
|
|
||||
|
- `src/views/ContactsView.vue:774-800` |
||||
|
|
||||
|
## Competence Hooks |
||||
|
|
||||
|
- Why this works: Code path tracing revealed separate execution flows, |
||||
|
|
||||
|
evidence disproved initial assumptions |
||||
|
|
||||
|
- Common pitfalls: Assuming related functionality without tracing execution |
||||
|
|
||||
|
paths, over-engineering solutions to imaginary problems |
||||
|
|
||||
|
- Next skill: Learn to trace code execution before proposing architectural |
||||
|
|
||||
|
changes |
||||
|
|
||||
|
- Teach-back: "What evidence shows that contact imports bypass registration |
||||
|
|
||||
|
dialogs?" |
||||
|
|
||||
|
## Key Learning Points |
||||
|
|
||||
|
### Evidence-First Approach |
||||
|
|
||||
|
This investigation demonstrates the importance of: |
||||
|
|
||||
|
1. **Tracing actual code execution** rather than making assumptions |
||||
|
|
||||
|
2. **Citing specific evidence** with file:line references |
||||
|
|
||||
|
3. **Validating problem scope** before proposing solutions |
||||
|
|
||||
|
4. **Considering simpler alternatives** before complex architectural changes |
||||
|
|
||||
|
### Code Path Tracing Value |
||||
|
|
||||
|
By tracing the execution paths, we discovered: |
||||
|
|
||||
|
- Import flow and direct add flow are completely separate |
||||
|
|
||||
|
- The "multiple dialog interference" problem didn't exist |
||||
|
|
||||
|
- A simple timeout removal would solve the actual issue |
||||
|
|
||||
|
### Prevention of Over-Engineering |
||||
|
|
||||
|
The investigation prevented: |
||||
|
|
||||
|
- Unnecessary database schema changes |
||||
|
|
||||
|
- Complex batch registration systems |
||||
|
|
||||
|
- Migration scripts for non-existent problems |
||||
|
|
||||
|
- Architectural changes based on assumptions |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Active investigation methodology |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: software_development.mdc |
||||
|
**Stakeholders**: Development team, QA team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Investigation |
||||
|
|
||||
|
- [ ] **Problem Definition**: Clearly define the problem to investigate |
||||
|
- [ ] **Scope Definition**: Determine investigation scope and boundaries |
||||
|
- [ ] **Methodology Planning**: Plan investigation approach and methods |
||||
|
- [ ] **Resource Assessment**: Identify required resources and tools |
||||
|
|
||||
|
### During Investigation |
||||
|
|
||||
|
- [ ] **Evidence Collection**: Gather relevant evidence and data systematically |
||||
|
- [ ] **Code Path Tracing**: Map execution flow for software investigations |
||||
|
- [ ] **Analysis**: Analyze evidence using appropriate methods |
||||
|
- [ ] **Documentation**: Document investigation process and findings |
||||
|
|
||||
|
### After Investigation |
||||
|
|
||||
|
- [ ] **Synthesis**: Synthesize findings into actionable insights |
||||
|
- [ ] **Report Creation**: Create comprehensive investigation report |
||||
|
- [ ] **Recommendations**: Provide clear, actionable recommendations |
||||
|
- [ ] **Team Communication**: Share findings and next steps with team |
@ -0,0 +1,358 @@ |
|||||
|
--- |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
|
||||
|
# Logging Migration — Patterns and Examples |
||||
|
|
||||
|
> **Agent role**: Reference this file for specific migration patterns and |
||||
|
examples when converting console.* calls to logger usage. |
||||
|
|
||||
|
## Migration — Auto‑Rewrites (Apply Every Time) |
||||
|
|
||||
|
### Exact Transforms |
||||
|
|
||||
|
- `console.debug(...)` → `logger.debug(...)` |
||||
|
|
||||
|
- `console.log(...)` → `logger.log(...)` (or `logger.info(...)` when |
||||
|
|
||||
|
clearly stateful) |
||||
|
|
||||
|
- `console.info(...)` → `logger.info(...)` |
||||
|
|
||||
|
- `console.warn(...)` → `logger.warn(...)` |
||||
|
|
||||
|
- `console.error(...)` → `logger.error(...)` |
||||
|
|
||||
|
### Multi-arg Handling |
||||
|
|
||||
|
- First arg becomes `message` (stringify safely if non-string). |
||||
|
|
||||
|
- Remaining args map 1:1 to `...args`: |
||||
|
|
||||
|
`console.info(msg, a, b)` → `logger.info(String(msg), a, b)` |
||||
|
|
||||
|
### Sole `Error` |
||||
|
|
||||
|
- `console.error(err)` → `logger.error(err.message, err)` |
||||
|
|
||||
|
### Object-wrapping Cleanup |
||||
|
|
||||
|
Replace `{{ userId, meta }}` wrappers with separate args: |
||||
|
`logger.info('User signed in', userId, meta)` |
||||
|
|
||||
|
## Level Guidelines with Examples |
||||
|
|
||||
|
### DEBUG Examples |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
logger.debug('[HomeView] reloadFeedOnChange() called'); |
||||
|
logger.debug('[HomeView] Current filter settings', |
||||
|
settings.filterFeedByVisible, |
||||
|
settings.filterFeedByNearby, |
||||
|
settings.searchBoxes?.length ?? 0); |
||||
|
logger.debug('[FeedFilters] Toggling nearby filter', |
||||
|
this.isNearby, this.settingChanged, this.activeDid); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Avoid**: Vague messages (`'Processing data'`). |
||||
|
|
||||
|
### INFO Examples |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
logger.info('[StartView] Component mounted', process.env.VITE_PLATFORM); |
||||
|
logger.info('[StartView] User selected new seed generation'); |
||||
|
logger.info('[SearchAreaView] Search box stored', |
||||
|
searchBox.name, searchBox.bbox); |
||||
|
logger.info('[ContactQRScanShowView] Contact registration OK', |
||||
|
contact.did); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Avoid**: Diagnostic details that belong in `debug`. |
||||
|
|
||||
|
### WARN Examples |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
logger.warn('[ContactQRScanShowView] Invalid scan result – no value', |
||||
|
resultType); |
||||
|
logger.warn('[ContactQRScanShowView] Invalid QR format – no JWT in URL'); |
||||
|
logger.warn('[ContactQRScanShowView] JWT missing "own" field'); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Avoid**: Hard failures (those are `error`). |
||||
|
|
||||
|
### ERROR Examples |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
logger.error('[HomeView Settings] initializeIdentity() failed', err); |
||||
|
logger.error('[StartView] Failed to load initialization data', error); |
||||
|
logger.error('[ContactQRScanShowView] Error processing contact QR', |
||||
|
error, rawValue); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Avoid**: Expected user cancels (use `info`/`debug`). |
||||
|
|
||||
|
## Context Hygiene Examples |
||||
|
|
||||
|
### Component Context |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
const log = logger.withContext('UserService'); |
||||
|
log.info('User created', userId); |
||||
|
log.error('Failed to create user', error); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
If not using `withContext`, prefix message with `[ComponentName]`. |
||||
|
|
||||
|
### Emoji Guidelines |
||||
|
|
||||
|
Recommended set for visual scanning: |
||||
|
|
||||
|
- Start/finish: 🚀 / ✅ |
||||
|
|
||||
|
- Retry/loop: 🔄 |
||||
|
|
||||
|
- External call: 📡 |
||||
|
|
||||
|
- Data/metrics: 📊 |
||||
|
|
||||
|
- Inspection: 🔍 |
||||
|
|
||||
|
## Quick Before/After |
||||
|
|
||||
|
### **Before** |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
console.log('User signed in', user.id, meta); |
||||
|
console.error('Failed to update profile', err); |
||||
|
console.info('Filter toggled', this.hasVisibleDid); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### **After** |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
import { logger } from '@/utils/logger'; |
||||
|
|
||||
|
logger.info('User signed in', user.id, meta); |
||||
|
logger.error('Failed to update profile', err); |
||||
|
logger.debug('[FeedFilters] Filter toggled', this.hasVisibleDid); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Checklist (for every PR) |
||||
|
|
||||
|
- [ ] No `console.*` (or properly pragma'd in the allowed locations) |
||||
|
|
||||
|
- [ ] Correct import path for `logger` |
||||
|
|
||||
|
- [ ] Rest-parameter call shape (`message, ...args`) |
||||
|
|
||||
|
- [ ] Right level chosen (debug/info/warn/error) |
||||
|
|
||||
|
- [ ] No secrets / oversized payloads / throwaway context objects |
||||
|
|
||||
|
- [ ] Component context provided (scoped logger or `[Component]` prefix) |
||||
|
|
||||
|
**See also**: |
||||
|
`.cursor/rules/development/logging_standards.mdc` for the core standards and rules. |
||||
|
|
||||
|
# Logging Migration — Patterns and Examples |
||||
|
|
||||
|
> **Agent role**: Reference this file for specific migration patterns and |
||||
|
examples when converting console.* calls to logger usage. |
||||
|
|
||||
|
## Migration — Auto‑Rewrites (Apply Every Time) |
||||
|
|
||||
|
### Exact Transforms |
||||
|
|
||||
|
- `console.debug(...)` → `logger.debug(...)` |
||||
|
|
||||
|
- `console.log(...)` → `logger.log(...)` (or `logger.info(...)` when |
||||
|
|
||||
|
clearly stateful) |
||||
|
|
||||
|
- `console.info(...)` → `logger.info(...)` |
||||
|
|
||||
|
- `console.warn(...)` → `logger.warn(...)` |
||||
|
|
||||
|
- `console.error(...)` → `logger.error(...)` |
||||
|
|
||||
|
### Multi-arg Handling |
||||
|
|
||||
|
- First arg becomes `message` (stringify safely if non-string). |
||||
|
|
||||
|
- Remaining args map 1:1 to `...args`: |
||||
|
|
||||
|
`console.info(msg, a, b)` → `logger.info(String(msg), a, b)` |
||||
|
|
||||
|
### Sole `Error` |
||||
|
|
||||
|
- `console.error(err)` → `logger.error(err.message, err)` |
||||
|
|
||||
|
### Object-wrapping Cleanup |
||||
|
|
||||
|
Replace `{{ userId, meta }}` wrappers with separate args: |
||||
|
`logger.info('User signed in', userId, meta)` |
||||
|
|
||||
|
## Level Guidelines with Examples |
||||
|
|
||||
|
### DEBUG Examples |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
logger.debug('[HomeView] reloadFeedOnChange() called'); |
||||
|
logger.debug('[HomeView] Current filter settings', |
||||
|
settings.filterFeedByVisible, |
||||
|
settings.filterFeedByNearby, |
||||
|
settings.searchBoxes?.length ?? 0); |
||||
|
logger.debug('[FeedFilters] Toggling nearby filter', |
||||
|
this.isNearby, this.settingChanged, this.activeDid); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Avoid**: Vague messages (`'Processing data'`). |
||||
|
|
||||
|
### INFO Examples |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
logger.info('[StartView] Component mounted', process.env.VITE_PLATFORM); |
||||
|
logger.info('[StartView] User selected new seed generation'); |
||||
|
logger.info('[SearchAreaView] Search box stored', |
||||
|
searchBox.name, searchBox.bbox); |
||||
|
logger.info('[ContactQRScanShowView] Contact registration OK', |
||||
|
contact.did); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Avoid**: Diagnostic details that belong in `debug`. |
||||
|
|
||||
|
### WARN Examples |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
logger.warn('[ContactQRScanShowView] Invalid scan result – no value', |
||||
|
resultType); |
||||
|
logger.warn('[ContactQRScanShowView] Invalid QR format – no JWT in URL'); |
||||
|
logger.warn('[ContactQRScanShowView] JWT missing "own" field'); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Avoid**: Hard failures (those are `error`). |
||||
|
|
||||
|
### ERROR Examples |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
logger.error('[HomeView Settings] initializeIdentity() failed', err); |
||||
|
logger.error('[StartView] Failed to load initialization data', error); |
||||
|
logger.error('[ContactQRScanShowView] Error processing contact QR', |
||||
|
error, rawValue); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
**Avoid**: Expected user cancels (use `info`/`debug`). |
||||
|
|
||||
|
## Context Hygiene Examples |
||||
|
|
||||
|
### Component Context |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
const log = logger.withContext('UserService'); |
||||
|
log.info('User created', userId); |
||||
|
log.error('Failed to create user', error); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
If not using `withContext`, prefix message with `[ComponentName]`. |
||||
|
|
||||
|
### Emoji Guidelines |
||||
|
|
||||
|
Recommended set for visual scanning: |
||||
|
|
||||
|
- Start/finish: 🚀 / ✅ |
||||
|
|
||||
|
- Retry/loop: 🔄 |
||||
|
|
||||
|
- External call: 📡 |
||||
|
|
||||
|
- Data/metrics: 📊 |
||||
|
|
||||
|
- Inspection: 🔍 |
||||
|
|
||||
|
## Quick Before/After |
||||
|
|
||||
|
### **Before** |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
console.log('User signed in', user.id, meta); |
||||
|
console.error('Failed to update profile', err); |
||||
|
console.info('Filter toggled', this.hasVisibleDid); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### **After** |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
import { logger } from '@/utils/logger'; |
||||
|
|
||||
|
logger.info('User signed in', user.id, meta); |
||||
|
logger.error('Failed to update profile', err); |
||||
|
logger.debug('[FeedFilters] Filter toggled', this.hasVisibleDid); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Checklist (for every PR) |
||||
|
|
||||
|
- [ ] No `console.*` (or properly pragma'd in the allowed locations) |
||||
|
|
||||
|
- [ ] Correct import path for `logger` |
||||
|
|
||||
|
- [ ] Rest-parameter call shape (`message, ...args`) |
||||
|
|
||||
|
- [ ] Right level chosen (debug/info/warn/error) |
||||
|
|
||||
|
- [ ] No secrets / oversized payloads / throwaway context objects |
||||
|
|
||||
|
- [ ] Component context provided (scoped logger or `[Component]` prefix) |
||||
|
|
||||
|
**See also**: |
||||
|
`.cursor/rules/development/logging_standards.mdc` for the core standards and rules. |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Logging Migration |
||||
|
|
||||
|
- [ ] **Code Review**: Identify all `console.*` calls in the codebase |
||||
|
- [ ] **Logger Import**: Verify logger utility is available and accessible |
||||
|
- [ ] **Context Planning**: Plan component context for each logging call |
||||
|
- [ ] **Level Assessment**: Determine appropriate log levels for each call |
||||
|
|
||||
|
### During Logging Migration |
||||
|
|
||||
|
- [ ] **Import Replacement**: Replace `console.*` with `logger.*` calls |
||||
|
- [ ] **Context Addition**: Add component context using scoped logger or prefix |
||||
|
- [ ] **Level Selection**: Choose appropriate log level (debug/info/warn/error) |
||||
|
- [ ] **Parameter Format**: Use rest-parameter call shape (`message, ...args`) |
||||
|
|
||||
|
### After Logging Migration |
||||
|
|
||||
|
- [ ] **Console Check**: Ensure no `console.*` methods remain (unless pragma'd) |
||||
|
- [ ] **Context Validation**: Verify all logging calls have proper context |
||||
|
- [ ] **Level Review**: Confirm log levels are appropriate for each situation |
||||
|
- [ ] **Testing**: Test logging functionality across all platforms |
@ -0,0 +1,176 @@ |
|||||
|
# Agent Contract — TimeSafari Logging (Unified, MANDATORY) |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Mandatory logging standards |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
This document defines unified logging standards for the TimeSafari project, |
||||
|
ensuring consistent, rest-parameter logging style using the project logger. |
||||
|
No `console.*` methods are allowed in production code. |
||||
|
|
||||
|
## Scope and Goals |
||||
|
|
||||
|
**Scope**: Applies to all diffs and generated code in this workspace unless |
||||
|
explicitly exempted below. |
||||
|
|
||||
|
**Goal**: One consistent, rest-parameter logging style using the project |
||||
|
logger; no `console.*` in production code. |
||||
|
|
||||
|
## Non‑Negotiables (DO THIS) |
||||
|
|
||||
|
- You **MUST** use the project logger; **DO NOT** use any `console.*` |
||||
|
|
||||
|
methods. |
||||
|
|
||||
|
- Import exactly as: |
||||
|
|
||||
|
- `import { logger } from '@/utils/logger'` |
||||
|
|
||||
|
- If `@` alias is unavailable, compute the correct relative path (do not |
||||
|
|
||||
|
fail). |
||||
|
|
||||
|
- Call signatures use **rest parameters**: `logger.info(message, ...args)` |
||||
|
|
||||
|
- Prefer primitives/IDs and small objects in `...args`; **never build a |
||||
|
|
||||
|
throwaway object** just to "wrap context". |
||||
|
|
||||
|
- Production defaults: Web = `warn+`, Electron = `error`, Dev/Capacitor = |
||||
|
|
||||
|
`info+` (override via `VITE_LOG_LEVEL`). |
||||
|
|
||||
|
- **Database persistence**: `info|warn|error` are persisted; `debug` is not. |
||||
|
|
||||
|
Use `logger.toDb(msg, level?)` for DB-only. |
||||
|
|
||||
|
## Available Logger API (Authoritative) |
||||
|
|
||||
|
- `logger.debug(message, ...args)` — verbose internals, timings, input/output |
||||
|
|
||||
|
shapes |
||||
|
|
||||
|
- `logger.log(message, ...args)` — synonym of `info` for general info |
||||
|
|
||||
|
- `logger.info(message, ...args)` — lifecycle, state changes, success paths |
||||
|
|
||||
|
- `logger.warn(message, ...args)` — recoverable issues, retries, degraded mode |
||||
|
|
||||
|
- `logger.error(message, ...args)` — failures, thrown exceptions, aborts |
||||
|
|
||||
|
- `logger.toDb(message, level?)` — DB-only entry (default level = `info`) |
||||
|
|
||||
|
- `logger.toConsoleAndDb(message, isError)` — console + DB (use sparingly) |
||||
|
|
||||
|
- `logger.withContext(componentName)` — returns a scoped logger |
||||
|
|
||||
|
## Level Guidelines (Use These Heuristics) |
||||
|
|
||||
|
### DEBUG |
||||
|
|
||||
|
Use for method entry/exit, computed values, filters, loops, retries, and |
||||
|
external call payload sizes. |
||||
|
|
||||
|
### INFO |
||||
|
|
||||
|
Use for user-visible lifecycle and completed operations. |
||||
|
|
||||
|
### WARN |
||||
|
|
||||
|
Use for recoverable issues, fallbacks, unexpected-but-handled conditions. |
||||
|
|
||||
|
### ERROR |
||||
|
|
||||
|
Use for unrecoverable failures, data integrity issues, and thrown |
||||
|
exceptions. |
||||
|
|
||||
|
## Context Hygiene (Consistent, Minimal, Helpful) |
||||
|
|
||||
|
- **Component context**: Prefer scoped logger. |
||||
|
|
||||
|
- **Emojis**: Optional and minimal for visual scanning. |
||||
|
|
||||
|
- **Sensitive data**: Never log secrets (tokens, keys, passwords) or |
||||
|
payloads >10KB. Prefer IDs over objects; redact/hash when needed. |
||||
|
|
||||
|
## DB Logging Rules |
||||
|
|
||||
|
- `debug` **never** persists automatically. |
||||
|
|
||||
|
- `info|warn|error` persist automatically. |
||||
|
|
||||
|
- For DB-only events (no console), call `logger.toDb('Message', |
||||
|
'info'|'warn'|'error')`. |
||||
|
|
||||
|
## Exceptions (Tightly Scoped) |
||||
|
|
||||
|
Allowed paths (still prefer logger): |
||||
|
|
||||
|
- `**/*.test.*`, `**/*.spec.*` |
||||
|
|
||||
|
- `scripts/dev/**`, `scripts/migrate/**` |
||||
|
|
||||
|
To intentionally keep `console.*`, add a pragma on the previous line: |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// cursor:allow-console reason="short justification" |
||||
|
console.log('temporary output'); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## CI & Diff Enforcement |
||||
|
|
||||
|
- Do not introduce `console.*` anywhere outside allowed, pragma'd spots. |
||||
|
|
||||
|
- If an import is missing, insert it and resolve alias/relative path |
||||
|
correctly. |
||||
|
|
||||
|
- Enforce rest-parameter call shape in reviews; replace object-wrapped |
||||
|
context. |
||||
|
|
||||
|
- Ensure environment log level rules remain intact (`VITE_LOG_LEVEL` |
||||
|
respected). |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
`.cursor/rules/development/logging_migration.mdc` for migration patterns and examples. |
||||
|
|
||||
|
**Status**: Active and enforced |
||||
|
**Priority**: Critical |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: TimeSafari logger utility |
||||
|
**Stakeholders**: Development team, Code review team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Adding Logging |
||||
|
|
||||
|
- [ ] **Logger Import**: Import logger as `import { logger } from |
||||
|
'@/utils/logger'` |
||||
|
- [ ] **Log Level Selection**: Determine appropriate log level |
||||
|
(debug/info/warn/error) |
||||
|
- [ ] **Context Planning**: Plan what context information to include |
||||
|
- [ ] **Sensitive Data Review**: Identify any sensitive data that needs redaction |
||||
|
|
||||
|
### During Logging Implementation |
||||
|
|
||||
|
- [ ] **Rest Parameters**: Use `logger.info(message, ...args)` format, not object |
||||
|
wrapping |
||||
|
- [ ] **Context Addition**: Include relevant IDs, primitives, or small objects in |
||||
|
args |
||||
|
- [ ] **Level Appropriateness**: Use correct log level for the situation |
||||
|
- [ ] **Scoped Logger**: Use `logger.withContext(componentName)` for |
||||
|
component-specific logging |
||||
|
|
||||
|
### After Logging Implementation |
||||
|
|
||||
|
- [ ] **Console Check**: Ensure no `console.*` methods are used (unless in |
||||
|
allowed paths) |
||||
|
- [ ] **Performance Review**: Verify logging doesn't impact performance |
||||
|
- [ ] **DB Persistence**: Use `logger.toDb()` for database-only logging if needed |
||||
|
- [ ] **Environment Compliance**: Respect `VITE_LOG_LEVEL` environment |
||||
|
variable |
@ -0,0 +1,160 @@ |
|||||
|
# Planning Examples — No Time Estimates |
||||
|
|
||||
|
> **Agent role**: Reference this file for detailed planning examples and |
||||
|
anti-patterns when creating project plans. |
||||
|
|
||||
|
## 🎯 Example Planning (No Time Estimates) |
||||
|
|
||||
|
### **Example 1: Simple Feature** |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
Phase 1: Core implementation |
||||
|
|
||||
|
- Basic functionality |
||||
|
|
||||
|
- Single platform support |
||||
|
|
||||
|
- Unit tests |
||||
|
|
||||
|
Phase 2: Platform expansion |
||||
|
|
||||
|
- Multi-platform support |
||||
|
|
||||
|
- Integration tests |
||||
|
|
||||
|
Phase 3: Polish |
||||
|
|
||||
|
- User testing |
||||
|
|
||||
|
- Edge case handling |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### **Example 2: Complex Cross-Platform Feature** |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
Phase 1: Foundation |
||||
|
|
||||
|
- Architecture design |
||||
|
|
||||
|
- Core service implementation |
||||
|
|
||||
|
- Basic web platform support |
||||
|
|
||||
|
Phase 2: Platform Integration |
||||
|
|
||||
|
- Mobile platform support |
||||
|
|
||||
|
- Desktop platform support |
||||
|
|
||||
|
- Cross-platform consistency |
||||
|
|
||||
|
Phase 3: Testing & Polish |
||||
|
|
||||
|
- Comprehensive testing |
||||
|
|
||||
|
- Error handling |
||||
|
|
||||
|
- User experience refinement |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## 🚫 Anti-Patterns to Avoid |
||||
|
|
||||
|
- **"This should take X days"** - Red flag for time estimation |
||||
|
|
||||
|
- **"Just a few hours"** - Ignores complexity and testing |
||||
|
|
||||
|
- **"Similar to X"** - Without considering differences |
||||
|
|
||||
|
- **"Quick fix"** - Nothing is ever quick in software |
||||
|
|
||||
|
- **"No testing needed"** - Testing always takes effort |
||||
|
|
||||
|
## ✅ Best Practices |
||||
|
|
||||
|
### **When Planning:** |
||||
|
|
||||
|
1. **Break down everything** - no work is too small to plan |
||||
|
|
||||
|
2. **Consider all platforms** - web, mobile, desktop differences |
||||
|
|
||||
|
3. **Include testing strategy** - unit, integration, and user testing |
||||
|
|
||||
|
4. **Account for unknowns** - there are always surprises |
||||
|
|
||||
|
5. **Focus on dependencies** - what blocks what |
||||
|
|
||||
|
### **When Presenting Plans:** |
||||
|
|
||||
|
1. **Show the phases** - explain the logical progression |
||||
|
|
||||
|
2. **Highlight dependencies** - what could block progress |
||||
|
|
||||
|
3. **Define milestones** - clear success criteria |
||||
|
|
||||
|
4. **Identify risks** - what could go wrong |
||||
|
|
||||
|
5. **Suggest alternatives** - ways to reduce scope or complexity |
||||
|
|
||||
|
## 🔄 Continuous Improvement |
||||
|
|
||||
|
### **Track Progress** |
||||
|
|
||||
|
- Record planned vs. actual phases completed |
||||
|
|
||||
|
- Identify what took longer than expected |
||||
|
|
||||
|
- Learn from complexity misjudgments |
||||
|
|
||||
|
- Adjust planning process based on experience |
||||
|
|
||||
|
### **Learn from Experience** |
||||
|
|
||||
|
- **Underestimated complexity**: Increase complexity categories |
||||
|
|
||||
|
- **Missed dependencies**: Improve dependency mapping |
||||
|
|
||||
|
- **Platform surprises**: Better platform research upfront |
||||
|
|
||||
|
## 🎯 Integration with Harbor Pilot |
||||
|
|
||||
|
This rule works in conjunction with: |
||||
|
|
||||
|
- **Project Planning**: Focuses on phases and milestones |
||||
|
|
||||
|
- **Resource Allocation**: Based on complexity, not time |
||||
|
|
||||
|
- **Risk Management**: Identifies blockers and dependencies |
||||
|
|
||||
|
- **Stakeholder Communication**: Sets progress-based expectations |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: `.cursor/rules/development/realistic_time_estimation.mdc` for |
||||
|
the core principles and framework. |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Planning |
||||
|
|
||||
|
- [ ] **Requirements Review**: Understand all requirements completely |
||||
|
- [ ] **Stakeholder Input**: Gather input from all stakeholders |
||||
|
- [ ] **Complexity Assessment**: Evaluate technical and business complexity |
||||
|
- [ ] **Platform Analysis**: Consider requirements across all target platforms |
||||
|
|
||||
|
### During Planning |
||||
|
|
||||
|
- [ ] **Phase Definition**: Define clear phases and milestones |
||||
|
- [ ] **Dependency Mapping**: Map dependencies between tasks |
||||
|
- [ ] **Risk Identification**: Identify potential risks and challenges |
||||
|
- [ ] **Testing Strategy**: Plan comprehensive testing approach |
||||
|
|
||||
|
### After Planning |
||||
|
|
||||
|
- [ ] **Stakeholder Review**: Review plan with stakeholders |
||||
|
- [ ] **Documentation**: Document plan clearly with phases and milestones |
||||
|
- [ ] **Team Communication**: Communicate plan to team |
||||
|
- [ ] **Progress Tracking**: Set up monitoring and tracking mechanisms |
@ -0,0 +1,128 @@ |
|||||
|
# Realistic Time Estimation — Development Guidelines |
||||
|
|
||||
|
> **Agent role**: **DO NOT MAKE TIME ESTIMATES**. Instead, use phases, |
||||
|
> milestones, and complexity levels. Time estimates are consistently wrong |
||||
|
> and create unrealistic expectations. |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
Development time estimates are consistently wrong and create unrealistic |
||||
|
expectations. This rule ensures we focus on phases, milestones, and |
||||
|
complexity rather than trying to predict specific timeframes. |
||||
|
|
||||
|
## Critical Rule |
||||
|
|
||||
|
**NEVER provide specific time estimates** (hours, days, weeks) for |
||||
|
development tasks. Instead, use: |
||||
|
|
||||
|
- **Complexity levels** (Low, Medium, High, Critical) |
||||
|
|
||||
|
- **Phases and milestones** with clear acceptance criteria |
||||
|
|
||||
|
- **Platform-specific considerations** (Web, Mobile, Desktop) |
||||
|
|
||||
|
- **Testing requirements** and validation steps |
||||
|
|
||||
|
## Planning Framework |
||||
|
|
||||
|
### Complexity Assessment |
||||
|
|
||||
|
- **Low**: Simple changes, existing patterns, minimal testing |
||||
|
|
||||
|
- **Medium**: New features, moderate testing, some integration |
||||
|
|
||||
|
- **High**: Complex features, extensive testing, multiple platforms |
||||
|
|
||||
|
- **Critical**: Core architecture changes, full regression testing |
||||
|
|
||||
|
### Platform Categories |
||||
|
|
||||
|
- **Web**: Browser compatibility, responsive design, accessibility |
||||
|
|
||||
|
- **Mobile**: Native APIs, platform-specific testing, deployment |
||||
|
|
||||
|
- **Desktop**: Electron integration, system APIs, distribution |
||||
|
|
||||
|
### Testing Strategy |
||||
|
|
||||
|
- **Unit tests**: Core functionality validation |
||||
|
|
||||
|
- **Integration tests**: Component interaction testing |
||||
|
|
||||
|
- **E2E tests**: User workflow validation |
||||
|
|
||||
|
- **Platform tests**: Cross-platform compatibility |
||||
|
|
||||
|
## Process Guidelines |
||||
|
|
||||
|
### Planning Phase |
||||
|
|
||||
|
1. **Scope Definition**: Clear requirements and acceptance criteria |
||||
|
|
||||
|
2. **Complexity Assessment**: Evaluate technical and business complexity |
||||
|
|
||||
|
3. **Phase Breakdown**: Divide into logical, testable phases |
||||
|
|
||||
|
4. **Milestone Definition**: Define success criteria for each phase |
||||
|
|
||||
|
### Execution Phase |
||||
|
|
||||
|
1. **Phase 1**: Foundation and core implementation |
||||
|
|
||||
|
2. **Phase 2**: Feature completion and integration |
||||
|
|
||||
|
3. **Phase 3**: Testing, refinement, and documentation |
||||
|
|
||||
|
4. **Phase 4**: Deployment and validation |
||||
|
|
||||
|
### Validation Phase |
||||
|
|
||||
|
1. **Acceptance Testing**: Verify against defined criteria |
||||
|
|
||||
|
2. **Platform Testing**: Validate across target platforms |
||||
|
|
||||
|
3. **Performance Testing**: Ensure performance requirements met |
||||
|
|
||||
|
4. **Documentation**: Update relevant documentation |
||||
|
|
||||
|
## Remember |
||||
|
|
||||
|
**Your first estimate is wrong. Your second estimate is probably still |
||||
|
wrong. Focus on progress, not deadlines.** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/development/planning_examples.mdc` for detailed planning examples |
||||
|
|
||||
|
- `.cursor/rules/development/complexity_assessment.mdc` for complexity evaluation |
||||
|
|
||||
|
**Status**: Active development guidelines |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Development team, Project managers |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Time Estimation |
||||
|
|
||||
|
- [ ] **Requirements Analysis**: Understand all requirements and acceptance criteria |
||||
|
- [ ] **Complexity Assessment**: Evaluate technical and business complexity |
||||
|
- [ ] **Platform Review**: Identify requirements across all target platforms |
||||
|
- [ ] **Stakeholder Input**: Gather input from all affected parties |
||||
|
|
||||
|
### During Time Estimation |
||||
|
|
||||
|
- [ ] **Phase Breakdown**: Divide work into logical, testable phases |
||||
|
- [ ] **Complexity Classification**: Assign complexity levels (Low/Medium/High/Critical) |
||||
|
- [ ] **Platform Considerations**: Account for platform-specific requirements |
||||
|
- [ ] **Testing Strategy**: Plan comprehensive testing approach |
||||
|
|
||||
|
### After Time Estimation |
||||
|
|
||||
|
- [ ] **Milestone Definition**: Define success criteria for each phase |
||||
|
- [ ] **Progress Tracking**: Set up monitoring and tracking mechanisms |
||||
|
- [ ] **Documentation**: Document estimation process and assumptions |
||||
|
- [ ] **Stakeholder Communication**: Share estimation approach and progress focus |
@ -0,0 +1,262 @@ |
|||||
|
--- |
||||
|
description: Use this workflow when doing **pre-implementation research, defect |
||||
|
investigations with uncertain repros, or clarifying system architecture and |
||||
|
behaviors**. |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
|
||||
|
```json |
||||
|
|
||||
|
{ |
||||
|
"coaching_level": "light", |
||||
|
"socratic_max_questions": 2, |
||||
|
"verbosity": "concise", |
||||
|
"timebox_minutes": null, |
||||
|
"format_enforcement": "strict" |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
# Research & Diagnostic Workflow (R&D) |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
Provide a **repeatable, evidence-first** workflow to investigate features and |
||||
|
defects **before coding**. Outputs are concise reports, hypotheses, and next |
||||
|
steps—**not** code changes. |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
- Pre-implementation research for new features |
||||
|
|
||||
|
- Defect investigations (repros uncertain, user-specific failures) |
||||
|
|
||||
|
- Architecture/behavior clarifications (e.g., auth flows, merges, migrations) |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Enhanced with Software Development Ruleset |
||||
|
|
||||
|
When investigating software issues, also apply: |
||||
|
|
||||
|
- **Code Path Tracing**: Required for technical investigations |
||||
|
|
||||
|
- **Evidence Validation**: Ensure claims are code-backed |
||||
|
|
||||
|
- **Solution Complexity Assessment**: Justify architectural changes |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Output Contract (strict) |
||||
|
|
||||
|
1) **Objective** — 1–2 lines |
||||
|
2) **System Map (if helpful)** — short diagram or bullet flow (≤8 bullets) |
||||
|
3) **Findings (Evidence-linked)** — bullets; each with file/function refs |
||||
|
4) **Hypotheses & Failure Modes** — short list, each testable |
||||
|
5) **Corrections** — explicit deltas from earlier assumptions (if any) |
||||
|
6) **Diagnostics** — what to check next (logs, DB, env, repro steps) |
||||
|
7) **Risks & Scope** — what could break; affected components |
||||
|
8) **Decision/Next Steps** — what we'll do, who's involved, by when |
||||
|
9) **References** — code paths, ADRs, docs |
||||
|
10) **Competence & Collaboration Hooks** — brief, skimmable |
||||
|
|
||||
|
> Keep total length lean. Prefer links and bullets over prose. |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Quickstart Template |
||||
|
|
||||
|
Copy/paste and fill: |
||||
|
|
||||
|
```md |
||||
|
|
||||
|
# Investigation — <short title> |
||||
|
|
||||
|
## Objective |
||||
|
|
||||
|
<one or two lines> |
||||
|
|
||||
|
## System Map |
||||
|
|
||||
|
- <module> → <function> → <downstream> |
||||
|
|
||||
|
- <data path> → <db table> → <api> |
||||
|
|
||||
|
## Findings (Evidence) |
||||
|
|
||||
|
- <claim> — |
||||
|
|
||||
|
evidence: `src/path/file.ts:function` (lines X–Y); log snippet/trace id |
||||
|
|
||||
|
- <claim> — evidence: `...` |
||||
|
|
||||
|
## Hypotheses & Failure Modes |
||||
|
|
||||
|
- H1: <hypothesis>; would fail when <condition> |
||||
|
|
||||
|
- H2: <hypothesis>; watch for <signal> |
||||
|
|
||||
|
## Corrections |
||||
|
|
||||
|
- Updated: <old statement> → <new statement with evidence> |
||||
|
|
||||
|
## Diagnostics (Next Checks) |
||||
|
|
||||
|
- [ ] Repro on <platform/version> |
||||
|
|
||||
|
- [ ] Inspect <table/store> for <record> |
||||
|
|
||||
|
- [ ] Capture <log/trace> |
||||
|
|
||||
|
## Risks & Scope |
||||
|
|
||||
|
- Impacted: <areas/components>; Data: <tables/keys>; Users: <segments> |
||||
|
|
||||
|
## Decision / Next Steps |
||||
|
|
||||
|
- Owner: <name>; By: <date> (YYYY-MM-DD) |
||||
|
|
||||
|
- Action: <spike/bugfix/ADR>; Exit criteria: <binary checks> |
||||
|
|
||||
|
## References |
||||
|
|
||||
|
- `src/...` |
||||
|
|
||||
|
- ADR: `docs/adr/xxxx-yy-zz-something.md` |
||||
|
|
||||
|
- Design: `docs/...` |
||||
|
|
||||
|
## Competence Hooks |
||||
|
|
||||
|
- Why this works: <≤3 bullets> |
||||
|
|
||||
|
- Common pitfalls: <≤3 bullets> |
||||
|
|
||||
|
- Next skill: <≤1 item> |
||||
|
|
||||
|
- Teach-back: "<one question>" |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Evidence Quality Bar |
||||
|
|
||||
|
- **Cite the source** (file:func, line range if possible). |
||||
|
|
||||
|
- **Prefer primary evidence** (code, logs) over inference. |
||||
|
|
||||
|
- **Disambiguate platform** (Web/Capacitor/Electron) and **state** (migration, |
||||
|
|
||||
|
auth). |
||||
|
|
||||
|
- **Note uncertainty** explicitly. |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Code Path Tracing (Required for Software Investigations) |
||||
|
|
||||
|
Before proposing solutions, trace the actual execution path: |
||||
|
|
||||
|
- [ ] **Entry Points**: |
||||
|
|
||||
|
Identify where the flow begins (user action, API call, etc.) |
||||
|
|
||||
|
- [ ] **Component Flow**: Map which components/methods are involved |
||||
|
|
||||
|
- [ ] **Data Path**: Track how data moves through the system |
||||
|
|
||||
|
- [ ] **Exit Points**: Confirm where the flow ends and what results |
||||
|
|
||||
|
- [ ] **Evidence Collection**: Gather specific code citations for each step |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Collaboration Hooks |
||||
|
|
||||
|
- **Syncs:** 10–15m with QA/Security/Platform owners for high-risk areas. |
||||
|
|
||||
|
- **ADR:** Record major decisions; link here. |
||||
|
|
||||
|
- **Review:** Share repro + diagnostics checklist in PR/issue. |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Integration with Other Rulesets |
||||
|
|
||||
|
### With software_development.mdc |
||||
|
|
||||
|
- **Enhanced Evidence Validation**: |
||||
|
|
||||
|
Use code path tracing for technical investigations |
||||
|
|
||||
|
- **Architecture Assessment**: |
||||
|
|
||||
|
Apply complexity justification to proposed solutions |
||||
|
|
||||
|
- **Impact Analysis**: Assess effects on existing systems before recommendations |
||||
|
|
||||
|
### With base_context.mdc |
||||
|
|
||||
|
- **Competence Building**: Focus on technical investigation skills |
||||
|
|
||||
|
- **Collaboration**: Structure outputs for team review and discussion |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Self-Check (model, before responding) |
||||
|
|
||||
|
- [ ] Output matches the **Output Contract** sections. |
||||
|
|
||||
|
- [ ] Each claim has **evidence** or **uncertainty** is flagged. |
||||
|
|
||||
|
- [ ] Hypotheses are testable; diagnostics are actionable. |
||||
|
|
||||
|
- [ ] Competence + collaboration hooks present (≤120 words total). |
||||
|
|
||||
|
- [ ] Respect toggles; keep it concise. |
||||
|
|
||||
|
- [ ] **Code path traced** (for software investigations). |
||||
|
|
||||
|
- [ ] **Evidence validated** against actual code execution. |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Optional Globs (examples) |
||||
|
|
||||
|
> Uncomment `globs` in the header if you want auto-attach behavior. |
||||
|
|
||||
|
- `src/platforms/**`, `src/services/**` — |
||||
|
|
||||
|
attach during service/feature investigations |
||||
|
|
||||
|
- `docs/adr/**` — attach when editing ADRs |
||||
|
|
||||
|
## Referenced Files |
||||
|
|
||||
|
- Consider including templates as context: `@adr_template.mdc`, |
||||
|
|
||||
|
`@investigation_report_example.mdc` |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Investigation |
||||
|
|
||||
|
- [ ] **Problem Definition**: Clearly define the research question or issue |
||||
|
- [ ] **Scope Definition**: Determine investigation scope and boundaries |
||||
|
- [ ] **Methodology Planning**: Plan investigation approach and methods |
||||
|
- [ ] **Resource Assessment**: Identify required resources and tools |
||||
|
|
||||
|
### During Investigation |
||||
|
|
||||
|
- [ ] **Evidence Collection**: Gather relevant evidence and data systematically |
||||
|
- [ ] **Code Path Tracing**: Map execution flow for software investigations |
||||
|
- [ ] **Analysis**: Analyze evidence using appropriate methods |
||||
|
- [ ] **Documentation**: Document investigation process and findings |
||||
|
|
||||
|
### After Investigation |
||||
|
|
||||
|
- [ ] **Synthesis**: Synthesize findings into actionable insights |
||||
|
- [ ] **Report Creation**: Create comprehensive investigation report |
||||
|
- [ ] **Recommendations**: Provide clear, actionable recommendations |
||||
|
- [ ] **Team Communication**: Share findings and next steps with team |
@ -0,0 +1,227 @@ |
|||||
|
|
||||
|
--- |
||||
|
|
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
|
||||
|
# Software Development Ruleset |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Core development guidelines |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
Specialized guidelines for software development tasks including code review, |
||||
|
debugging, architecture decisions, and testing. |
||||
|
|
||||
|
## Core Principles |
||||
|
|
||||
|
### 1. Evidence-First Development |
||||
|
|
||||
|
- **Code Citations Required**: Always cite specific file:line references when |
||||
|
|
||||
|
making claims |
||||
|
|
||||
|
- **Execution Path Tracing**: Trace actual code execution before proposing |
||||
|
|
||||
|
architectural changes |
||||
|
|
||||
|
- **Assumption Validation**: Flag assumptions as "assumed" vs "evidence-based" |
||||
|
|
||||
|
### 2. Code Review Standards |
||||
|
|
||||
|
- **Trace Before Proposing**: Always trace execution paths before suggesting |
||||
|
|
||||
|
changes |
||||
|
|
||||
|
- **Evidence Over Inference**: Prefer code citations over logical deductions |
||||
|
|
||||
|
- **Scope Validation**: Confirm the actual scope of problems before proposing |
||||
|
|
||||
|
solutions |
||||
|
|
||||
|
### 3. Problem-Solution Validation |
||||
|
|
||||
|
- **Problem Scope**: Does the solution address the actual problem? |
||||
|
|
||||
|
- **Evidence Alignment**: Does the solution match the evidence? |
||||
|
|
||||
|
- **Complexity Justification**: Is added complexity justified by real needs? |
||||
|
|
||||
|
- **Alternative Analysis**: What simpler solutions were considered? |
||||
|
|
||||
|
### 4. Dependency Management & Environment Validation |
||||
|
|
||||
|
- **Pre-build Validation**: |
||||
|
|
||||
|
Always validate critical dependencies before executing |
||||
|
build scripts |
||||
|
|
||||
|
- **Environment Consistency**: Ensure team members have identical development |
||||
|
|
||||
|
environments |
||||
|
|
||||
|
- **Dependency Verification**: Check that required packages are installed and |
||||
|
|
||||
|
accessible |
||||
|
|
||||
|
- **Path Resolution**: Use `npx` for local dependencies to avoid PATH issues |
||||
|
|
||||
|
## Required Workflows |
||||
|
|
||||
|
### Before Proposing Changes |
||||
|
|
||||
|
- [ ] **Code Path Tracing**: Map execution flow from entry to exit |
||||
|
|
||||
|
- [ ] **Evidence Collection**: Gather specific code citations and logs |
||||
|
|
||||
|
- [ ] **Assumption Surfacing**: Identify what's proven vs. inferred |
||||
|
|
||||
|
- [ ] **Scope Validation**: Confirm the actual extent of the problem |
||||
|
|
||||
|
- [ ] **Dependency Validation**: Verify all required dependencies are available |
||||
|
|
||||
|
and accessible |
||||
|
|
||||
|
### During Solution Design |
||||
|
|
||||
|
- [ ] **Evidence Alignment**: Ensure solution addresses proven problems |
||||
|
|
||||
|
- [ ] **Complexity Assessment**: Justify any added complexity |
||||
|
|
||||
|
- [ ] **Alternative Evaluation**: Consider simpler approaches first |
||||
|
|
||||
|
- [ ] **Impact Analysis**: Assess effects on existing systems |
||||
|
|
||||
|
- [ ] **Environment Impact**: Assess how changes affect team member setups |
||||
|
|
||||
|
## Software-Specific Competence Hooks |
||||
|
|
||||
|
### Evidence Validation |
||||
|
|
||||
|
- **"What code path proves this claim?"** |
||||
|
|
||||
|
- **"How does data actually flow through the system?"** |
||||
|
|
||||
|
- **"What am I assuming vs. what can I prove?"** |
||||
|
|
||||
|
### Code Tracing |
||||
|
|
||||
|
- **"What's the execution path from user action to system response?"** |
||||
|
|
||||
|
- **"Which components actually interact in this scenario?"** |
||||
|
|
||||
|
- **"Where does the data originate and where does it end up?"** |
||||
|
|
||||
|
### Architecture Decisions |
||||
|
|
||||
|
- **"What evidence shows this change is necessary?"** |
||||
|
|
||||
|
- **"What simpler solution could achieve the same goal?"** |
||||
|
|
||||
|
- **"How does this change affect the existing system architecture?"** |
||||
|
|
||||
|
### Dependency & Environment Management |
||||
|
|
||||
|
- **"What dependencies does this feature require and are they properly |
||||
|
|
||||
|
declared?"** |
||||
|
|
||||
|
- **"How will this change affect team member development environments?"** |
||||
|
|
||||
|
- **"What validation can we add to catch dependency issues early?"** |
||||
|
|
||||
|
## Integration with Other Rulesets |
||||
|
|
||||
|
### With base_context.mdc |
||||
|
|
||||
|
- Inherits generic competence principles |
||||
|
|
||||
|
- Adds software-specific evidence requirements |
||||
|
|
||||
|
- Maintains collaboration and learning focus |
||||
|
|
||||
|
### With research_diagnostic.mdc |
||||
|
|
||||
|
- Enhances investigation with code path tracing |
||||
|
|
||||
|
- Adds evidence validation to diagnostic workflow |
||||
|
|
||||
|
- Strengthens problem identification accuracy |
||||
|
|
||||
|
## Usage Guidelines |
||||
|
|
||||
|
### When to Use This Ruleset |
||||
|
|
||||
|
- Code reviews and architectural decisions |
||||
|
|
||||
|
- Bug investigation and debugging |
||||
|
|
||||
|
- Performance optimization |
||||
|
|
||||
|
- Feature implementation planning |
||||
|
|
||||
|
- Testing strategy development |
||||
|
|
||||
|
### When to Combine with Others |
||||
|
|
||||
|
- **base_context + software_development**: General development tasks |
||||
|
|
||||
|
- **research_diagnostic + software_development**: Technical investigations |
||||
|
|
||||
|
- **All three**: Complex architectural decisions or major refactoring |
||||
|
|
||||
|
## Self-Check (model, before responding) |
||||
|
|
||||
|
- [ ] Code path traced and documented |
||||
|
|
||||
|
- [ ] Evidence cited with specific file:line references |
||||
|
|
||||
|
- [ ] Assumptions clearly flagged as proven vs. inferred |
||||
|
|
||||
|
- [ ] Solution complexity justified by evidence |
||||
|
|
||||
|
- [ ] Simpler alternatives considered and documented |
||||
|
|
||||
|
- [ ] Impact on existing systems assessed |
||||
|
|
||||
|
- [ ] Dependencies validated and accessible |
||||
|
|
||||
|
- [ ] Environment impact assessed for team members |
||||
|
|
||||
|
- [ ] Pre-build validation implemented where appropriate |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: `.cursor/rules/development/dependency_management.mdc` for |
||||
|
detailed dependency management practices. |
||||
|
|
||||
|
**Status**: Active development guidelines |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: base_context.mdc, research_diagnostic.mdc |
||||
|
**Stakeholders**: Development team, Code review team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Development Work |
||||
|
|
||||
|
- [ ] **Code Path Tracing**: Map execution flow from entry to exit |
||||
|
- [ ] **Evidence Collection**: Gather specific code citations and logs |
||||
|
- [ ] **Assumption Surfacing**: Identify what's proven vs. inferred |
||||
|
- [ ] **Scope Validation**: Confirm the actual extent of the problem |
||||
|
|
||||
|
### During Development |
||||
|
|
||||
|
- [ ] **Evidence Alignment**: Ensure solution addresses proven problems |
||||
|
- [ ] **Complexity Assessment**: Justify any added complexity |
||||
|
- [ ] **Alternative Evaluation**: Consider simpler approaches first |
||||
|
- [ ] **Impact Analysis**: Assess effects on existing systems |
||||
|
|
||||
|
### After Development |
||||
|
|
||||
|
- [ ] **Code Path Validation**: Verify execution paths are correct |
||||
|
- [ ] **Evidence Documentation**: Document all code citations and evidence |
||||
|
- [ ] **Assumption Review**: Confirm all assumptions are documented |
||||
|
- [ ] **Environment Impact**: Assess how changes affect team member setups |
@ -0,0 +1,146 @@ |
|||||
|
# Time Handling in Development Workflow |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-17 |
||||
|
**Status**: 🎯 **ACTIVE** - Production Ready |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
This guide establishes **how time should be referenced and used** across the |
||||
|
development workflow. It is not tied to any one project, but applies to **all |
||||
|
feature development, issue investigations, ADRs, and documentation**. |
||||
|
|
||||
|
## General Principles |
||||
|
|
||||
|
- **Explicit over relative**: Always prefer absolute dates (`2025-08-17`) over |
||||
|
|
||||
|
relative references like "last week." |
||||
|
|
||||
|
- **ISO 8601 Standard**: Use `YYYY-MM-DD` format for all date references in |
||||
|
|
||||
|
docs, issues, ADRs, and commits. |
||||
|
|
||||
|
- **Time zones**: Default to **UTC** unless explicitly tied to user-facing |
||||
|
|
||||
|
behavior. |
||||
|
|
||||
|
- **Precision**: Only specify as much precision as needed (date vs. datetime vs. |
||||
|
|
||||
|
timestamp). |
||||
|
|
||||
|
- **Consistency**: Align time references across ADRs, commits, and investigation |
||||
|
|
||||
|
reports. |
||||
|
|
||||
|
## In Documentation & ADRs |
||||
|
|
||||
|
- Record decision dates using **absolute ISO dates**. |
||||
|
|
||||
|
- For ongoing timelines, state start and end explicitly (e.g., `2025-08-01` → |
||||
|
|
||||
|
`2025-08-17`). |
||||
|
|
||||
|
- Avoid ambiguous terms like *recently*, *last month*, or *soon*. |
||||
|
|
||||
|
- For time-based experiments (e.g., A/B tests), always include: |
||||
|
|
||||
|
- Start date |
||||
|
|
||||
|
- Expected duration |
||||
|
|
||||
|
- Review date checkpoint |
||||
|
|
||||
|
## In Code & Commits |
||||
|
|
||||
|
- Use **UTC timestamps** in logs, DB migrations, and serialized formats. |
||||
|
|
||||
|
- In commits, link changes to **date-bound ADRs or investigation docs**. |
||||
|
|
||||
|
- For migrations, include both **applied date** and **intended version window**. |
||||
|
|
||||
|
- Use constants for known fixed dates; avoid hardcoding arbitrary strings. |
||||
|
|
||||
|
## In Investigations & Research |
||||
|
|
||||
|
- Capture **when** an issue occurred (absolute time or version tag). |
||||
|
|
||||
|
- When describing failures: note whether they are **time-sensitive** (e.g., |
||||
|
|
||||
|
after |
||||
|
migrations, cache expirations). |
||||
|
|
||||
|
- Record diagnostic timelines in ISO format (not relative). |
||||
|
|
||||
|
- For performance regressions, annotate both **baseline timeframe** and |
||||
|
|
||||
|
**measurement timeframe**. |
||||
|
|
||||
|
## Collaboration Hooks |
||||
|
|
||||
|
- During reviews, verify **time references are clear, absolute, and |
||||
|
|
||||
|
standardized**. |
||||
|
|
||||
|
- In syncs, reframe relative terms ("this week") into shared absolute |
||||
|
|
||||
|
references. |
||||
|
|
||||
|
- Tag ADRs with both **date created** and **review by** checkpoints. |
||||
|
|
||||
|
## Self-Check Before Submitting |
||||
|
|
||||
|
- [ ] Did I check the time using the **developer's actual system time and |
||||
|
|
||||
|
timezone**? |
||||
|
|
||||
|
- [ ] Am I using absolute ISO dates? |
||||
|
|
||||
|
- [ ] Is UTC assumed unless specified otherwise? |
||||
|
|
||||
|
- [ ] Did I avoid ambiguous relative terms? |
||||
|
|
||||
|
- [ ] If duration matters, did I specify both start and end? |
||||
|
|
||||
|
- [ ] For future work, did I include a review/revisit date? |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/development/time_implementation.mdc` for |
||||
|
|
||||
|
detailed implementation instructions |
||||
|
|
||||
|
- `.cursor/rules/development/time_examples.mdc` for practical examples and patterns |
||||
|
|
||||
|
**Status**: Active time handling guidelines |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Development team, Documentation team |
||||
|
|
||||
|
**Maintainer**: Matthew Raymer |
||||
|
**Next Review**: 2025-09-17 |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Time-Related Work |
||||
|
|
||||
|
- [ ] **Time Context**: Understand what time information is needed |
||||
|
- [ ] **Format Review**: Review time formatting standards (UTC, ISO 8601) |
||||
|
- [ ] **Platform Check**: Identify platform-specific time requirements |
||||
|
- [ ] **User Context**: Consider user's timezone and preferences |
||||
|
|
||||
|
### During Time Implementation |
||||
|
|
||||
|
- [ ] **UTC Usage**: Use UTC for all system and log timestamps |
||||
|
- [ ] **Format Consistency**: Apply consistent time formatting patterns |
||||
|
- [ ] **Timezone Handling**: Properly handle timezone conversions |
||||
|
- [ ] **User Display**: Format times appropriately for user display |
||||
|
|
||||
|
### After Time Implementation |
||||
|
|
||||
|
- [ ] **Validation**: Verify time formats are correct and consistent |
||||
|
- [ ] **Testing**: Test time handling across different scenarios |
||||
|
- [ ] **Documentation**: Update relevant documentation with time patterns |
||||
|
- [ ] **Review**: Confirm implementation follows time standards |
@ -0,0 +1,243 @@ |
|||||
|
# Time Examples — Practical Patterns |
||||
|
|
||||
|
> **Agent role**: Reference this file for practical examples and |
||||
|
patterns when working with time handling in development. |
||||
|
|
||||
|
## Examples |
||||
|
|
||||
|
### Good |
||||
|
|
||||
|
- "Feature flag rollout started on `2025-08-01` and will be reviewed on |
||||
|
|
||||
|
`2025-08-21`." |
||||
|
|
||||
|
- "Migration applied on `2025-07-15T14:00Z`." |
||||
|
|
||||
|
- "Issue reproduced on `2025-08-17T09:00-05:00 (local)` / |
||||
|
|
||||
|
`2025-08-17T14:00Z (UTC)`." |
||||
|
|
||||
|
### Bad |
||||
|
|
||||
|
- "Feature flag rolled out last week." |
||||
|
|
||||
|
- "Migration applied recently." |
||||
|
|
||||
|
- "Now is August, so we assume this was last month." |
||||
|
|
||||
|
### More Examples |
||||
|
|
||||
|
#### Issue Reports |
||||
|
|
||||
|
- ✅ **Good**: "User reported login failure at `2025-08-17T14:30:00Z`. Issue |
||||
|
|
||||
|
persisted until `2025-08-17T15:45:00Z`." |
||||
|
|
||||
|
- ❌ **Bad**: "User reported login failure earlier today. Issue lasted for a |
||||
|
|
||||
|
while." |
||||
|
|
||||
|
#### Release Planning |
||||
|
|
||||
|
- ✅ **Good**: "Feature X scheduled for release on `2025-08-25`. Testing |
||||
|
|
||||
|
window: `2025-08-20` to `2025-08-24`." |
||||
|
|
||||
|
- ❌ **Bad**: "Feature X will be released next week after testing." |
||||
|
|
||||
|
#### Performance Monitoring |
||||
|
|
||||
|
- ✅ **Good**: "Baseline performance measured on `2025-08-10T09:00:00Z`. |
||||
|
|
||||
|
Regression detected on `2025-08-15T14:00:00Z`." |
||||
|
|
||||
|
- ❌ **Bad**: "Performance was good last week but got worse this week." |
||||
|
|
||||
|
## Technical Implementation Examples |
||||
|
|
||||
|
### Database Storage |
||||
|
|
||||
|
```sql |
||||
|
|
||||
|
-- ✅ Good: Store in UTC |
||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
||||
|
|
||||
|
-- ❌ Bad: Store in local time |
||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### API Responses |
||||
|
|
||||
|
```json |
||||
|
|
||||
|
// ✅ Good: Include both UTC and local time |
||||
|
{ |
||||
|
"eventTime": "2025-08-17T14:00:00Z", |
||||
|
"localTime": "2025-08-17T10:00:00-04:00", |
||||
|
"timezone": "America/New_York" |
||||
|
} |
||||
|
|
||||
|
// ❌ Bad: Only local time |
||||
|
{ |
||||
|
"eventTime": "2025-08-17T10:00:00-04:00" |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Logging |
||||
|
|
||||
|
```python |
||||
|
|
||||
|
# ✅ Good: Log in UTC with timezone info |
||||
|
|
||||
|
logger.info(f"User action at {datetime.utcnow().isoformat()}Z (UTC)") |
||||
|
|
||||
|
# ❌ Bad: Log in local time |
||||
|
|
||||
|
logger.info(f"User action at {datetime.now()}") |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Timezone Handling Examples |
||||
|
|
||||
|
### Good Timezone Usage |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// ✅ Good: Store UTC, convert for display |
||||
|
const eventTime = new Date().toISOString(); // Store in UTC |
||||
|
const localTime = new Date().toLocaleString('en-US', { |
||||
|
timeZone: 'America/New_York' |
||||
|
}); // Convert for display |
||||
|
|
||||
|
// ✅ Good: Include timezone context |
||||
|
const timestamp = { |
||||
|
utc: "2025-08-17T14:00:00Z", |
||||
|
local: "2025-08-17T10:00:00-04:00", |
||||
|
timezone: "America/New_York" |
||||
|
}; |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Bad Timezone Usage |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// ❌ Bad: Assume timezone |
||||
|
const now = new Date(); // Assumes system timezone |
||||
|
|
||||
|
// ❌ Bad: Mix formats |
||||
|
const timestamp = "2025-08-17 10:00 AM"; // Ambiguous format |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Common Patterns |
||||
|
|
||||
|
### Date Range References |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// ✅ Good: Explicit date ranges |
||||
|
const dateRange = { |
||||
|
start: "2025-08-01T00:00:00Z", |
||||
|
end: "2025-08-31T23:59:59Z" |
||||
|
}; |
||||
|
|
||||
|
// ❌ Bad: Relative ranges |
||||
|
const dateRange = { |
||||
|
start: "beginning of month", |
||||
|
end: "end of month" |
||||
|
}; |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Duration References |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// ✅ Good: Specific durations |
||||
|
const duration = { |
||||
|
value: 30, |
||||
|
unit: "days", |
||||
|
startDate: "2025-08-01T00:00:00Z" |
||||
|
}; |
||||
|
|
||||
|
// ❌ Bad: Vague durations |
||||
|
const duration = "about a month"; |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Version References |
||||
|
|
||||
|
```typescript |
||||
|
|
||||
|
// ✅ Good: Version with date |
||||
|
const version = { |
||||
|
number: "1.2.3", |
||||
|
releaseDate: "2025-08-17T10:00:00Z", |
||||
|
buildDate: "2025-08-17T09:30:00Z" |
||||
|
}; |
||||
|
|
||||
|
// ❌ Bad: Version without context |
||||
|
const version = "latest"; |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## References |
||||
|
|
||||
|
- [ISO 8601 Date and Time Standard](https://en.wikipedia.org/wiki/ISO_8601) |
||||
|
|
||||
|
- [IANA Timezone Database](https://www.iana.org/time-zones) |
||||
|
|
||||
|
- [ADR Template](./adr_template.md) |
||||
|
|
||||
|
- [Research & Diagnostic Workflow](./research_diagnostic.mdc) |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Rule of Thumb**: Every time reference in development artifacts should be |
||||
|
**clear in 6 months without context**, and aligned to the **developer's actual |
||||
|
current time**. |
||||
|
|
||||
|
**Technical Rule of Thumb**: **Store in UTC, display in local time, always |
||||
|
include timezone context.** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/development/time.mdc` for core principles |
||||
|
|
||||
|
- `.cursor/rules/development/time_implementation.mdc` for implementation instructions |
||||
|
|
||||
|
**Status**: Active examples and patterns |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: time.mdc, time_implementation.mdc |
||||
|
**Stakeholders**: Development team, Documentation team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Time Implementation |
||||
|
|
||||
|
- [ ] **Time Context**: Understand what time information needs to be implemented |
||||
|
- [ ] **Format Review**: Review time formatting standards (UTC, ISO 8601) |
||||
|
- [ ] **Platform Check**: Identify platform-specific time requirements |
||||
|
- [ ] **User Context**: Consider user's timezone and display preferences |
||||
|
|
||||
|
### During Time Implementation |
||||
|
|
||||
|
- [ ] **UTC Storage**: Use UTC for all system and log timestamps |
||||
|
- [ ] **Format Consistency**: Apply consistent time formatting patterns |
||||
|
- [ ] **Timezone Handling**: Properly handle timezone conversions |
||||
|
- [ ] **User Display**: Format times appropriately for user display |
||||
|
|
||||
|
### After Time Implementation |
||||
|
|
||||
|
- [ ] **Format Validation**: Verify time formats are correct and consistent |
||||
|
- [ ] **Cross-Platform Testing**: Test time handling across different platforms |
||||
|
- [ ] **Documentation**: Update relevant documentation with time patterns |
||||
|
- [ ] **User Experience**: Confirm time display is clear and user-friendly |
@ -0,0 +1,285 @@ |
|||||
|
# Time Implementation — Technical Instructions |
||||
|
|
||||
|
> **Agent role**: Reference this file for detailed implementation instructions |
||||
|
when working with time handling in development. |
||||
|
|
||||
|
## Real-Time Context in Developer Interactions |
||||
|
|
||||
|
- The model must always resolve **"current time"** using the **developer's |
||||
|
|
||||
|
actual system time and timezone**. |
||||
|
|
||||
|
- When generating timestamps (e.g., in investigation logs, ADRs, or examples), |
||||
|
|
||||
|
the model should: |
||||
|
|
||||
|
- Use the **developer's current local time** by default. |
||||
|
|
||||
|
- Indicate the timezone explicitly (e.g., `2025-08-17T10:32-05:00`). |
||||
|
|
||||
|
- Optionally provide UTC alongside if context requires cross-team clarity. |
||||
|
|
||||
|
- When interpreting relative terms like *now*, *today*, *last week*: |
||||
|
|
||||
|
- Resolve them against the **developer's current time**. |
||||
|
|
||||
|
- Convert them into **absolute ISO-8601 values** in the output. |
||||
|
|
||||
|
## LLM Time Checking Instructions |
||||
|
|
||||
|
**CRITICAL**: The LLM must actively query the system for current time rather |
||||
|
than assuming or inventing times. |
||||
|
|
||||
|
### How to Check Current Time |
||||
|
|
||||
|
#### 1. **Query System Time (Required)** |
||||
|
|
||||
|
- **Always start** by querying the current system time using available tools |
||||
|
|
||||
|
- **Never assume** what the current time is |
||||
|
|
||||
|
- **Never use** placeholder values like "current time" or "now" |
||||
|
|
||||
|
#### 2. **Available Time Query Methods** |
||||
|
|
||||
|
- **System Clock**: Use `date` command or equivalent system time function |
||||
|
|
||||
|
- **Programming Language**: Use language-specific time functions (e.g., |
||||
|
|
||||
|
`Date.now()`, `datetime.now()`) |
||||
|
|
||||
|
- **Environment Variables**: Check for time-related environment variables |
||||
|
|
||||
|
- **API Calls**: Use time service APIs if available |
||||
|
|
||||
|
#### 3. **Required Time Information** |
||||
|
|
||||
|
When querying time, always obtain: |
||||
|
|
||||
|
- **Current Date**: YYYY-MM-DD format |
||||
|
|
||||
|
- **Current Time**: HH:MM:SS format (24-hour) |
||||
|
|
||||
|
- **Timezone**: Current system timezone or UTC offset |
||||
|
|
||||
|
- **UTC Equivalent**: Convert local time to UTC for cross-team clarity |
||||
|
|
||||
|
#### 4. **Time Query Examples** |
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
# Example: Query system time |
||||
|
|
||||
|
$ date |
||||
|
|
||||
|
# Expected output: Mon Aug 17 10:32:45 EDT 2025 |
||||
|
|
||||
|
# Example: Query UTC time |
||||
|
|
||||
|
$ date -u |
||||
|
|
||||
|
# Expected output: Mon Aug 17 14:32:45 UTC 2025 |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
```python |
||||
|
|
||||
|
# Example: Python time query |
||||
|
|
||||
|
import datetime |
||||
|
current_time = datetime.datetime.now() |
||||
|
utc_time = datetime.datetime.utcnow() |
||||
|
print(f"Local: {current_time}") |
||||
|
print(f"UTC: {utc_time}") |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
```javascript |
||||
|
|
||||
|
// Example: JavaScript time query |
||||
|
const now = new Date(); |
||||
|
const utc = new Date().toISOString(); |
||||
|
console.log(`Local: ${now}`); |
||||
|
console.log(`UTC: ${utc}`); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
#### 5. **LLM Time Checking Workflow** |
||||
|
|
||||
|
1. **Query**: Actively query system for current time |
||||
|
|
||||
|
2. **Validate**: Confirm time data is reasonable and current |
||||
|
|
||||
|
3. **Format**: Convert to ISO 8601 format |
||||
|
|
||||
|
4. **Context**: Provide both local and UTC times when helpful |
||||
|
|
||||
|
5. **Document**: Show the source of time information |
||||
|
|
||||
|
#### 6. **Error Handling for Time Queries** |
||||
|
|
||||
|
- **If time query fails**: Ask user for current time or use "unknown time" |
||||
|
|
||||
|
with explanation |
||||
|
|
||||
|
- **If timezone unclear**: Default to UTC and ask for clarification |
||||
|
|
||||
|
- **If time seems wrong**: Verify with user before proceeding |
||||
|
|
||||
|
- **Always log**: Record when and how time was obtained |
||||
|
|
||||
|
#### 7. **Time Query Verification** |
||||
|
|
||||
|
Before using queried time, verify: |
||||
|
|
||||
|
- [ ] Time is recent (within last few minutes) |
||||
|
|
||||
|
- [ ] Timezone information is available |
||||
|
|
||||
|
- [ ] UTC conversion is accurate |
||||
|
|
||||
|
- [ ] Format follows ISO 8601 standard |
||||
|
|
||||
|
## Model Behavior Rules |
||||
|
|
||||
|
- **Never invent a "fake now"**: All "current time" references must come from |
||||
|
|
||||
|
the real system clock available at runtime. |
||||
|
|
||||
|
- **Check developer time zone**: If ambiguous, ask for clarification (e.g., |
||||
|
|
||||
|
"Should I use UTC or your local timezone?"). |
||||
|
|
||||
|
- **Format for clarity**: |
||||
|
|
||||
|
- Local time: `YYYY-MM-DDTHH:mm±hh:mm` |
||||
|
|
||||
|
- UTC equivalent (if needed): `YYYY-MM-DDTHH:mmZ` |
||||
|
|
||||
|
## Technical Implementation Notes |
||||
|
|
||||
|
### UTC Storage Principle |
||||
|
|
||||
|
- **Store all timestamps in UTC** in databases, logs, and serialized formats |
||||
|
|
||||
|
- **Convert to local time only for user display** |
||||
|
|
||||
|
- **Use ISO 8601 format** for all storage: `YYYY-MM-DDTHH:mm:ss.sssZ` |
||||
|
|
||||
|
### Common Implementation Patterns |
||||
|
|
||||
|
#### Database Storage |
||||
|
|
||||
|
```sql |
||||
|
|
||||
|
-- ✅ Good: Store in UTC |
||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
#### API Responses |
||||
|
|
||||
|
```json |
||||
|
|
||||
|
// ✅ Good: Include both UTC and local time |
||||
|
{ |
||||
|
"eventTime": "2025-08-17T14:00:00Z", |
||||
|
"localTime": "2025-08-17T10:00:00-04:00", |
||||
|
"timezone": "America/New_York" |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
#### Logging |
||||
|
|
||||
|
```python |
||||
|
|
||||
|
# ✅ Good: Log in UTC with timezone info |
||||
|
|
||||
|
logger.info(f"User action at {datetime.utcnow().isoformat()}Z (UTC)") |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Timezone Handling Best Practices |
||||
|
|
||||
|
#### 1. Always Store Timezone Information |
||||
|
|
||||
|
- Include IANA timezone identifier (e.g., `America/New_York`) |
||||
|
|
||||
|
- Store UTC offset at time of creation |
||||
|
|
||||
|
- Handle daylight saving time transitions automatically |
||||
|
|
||||
|
#### 2. User Display Considerations |
||||
|
|
||||
|
- Convert UTC to user's preferred timezone |
||||
|
|
||||
|
- Show timezone abbreviation when helpful |
||||
|
|
||||
|
- Use relative time for recent events ("2 hours ago") |
||||
|
|
||||
|
#### 3. Edge Case Handling |
||||
|
|
||||
|
- **Daylight Saving Time**: Use timezone-aware libraries |
||||
|
|
||||
|
- **Leap Seconds**: Handle gracefully (rare but important) |
||||
|
|
||||
|
- **Invalid Times**: Validate before processing |
||||
|
|
||||
|
### Common Mistakes to Avoid |
||||
|
|
||||
|
#### 1. Timezone Confusion |
||||
|
|
||||
|
- ❌ **Don't**: Assume server timezone is user timezone |
||||
|
|
||||
|
- ✅ **Do**: Always convert UTC to user's local time for display |
||||
|
|
||||
|
#### 2. Format Inconsistency |
||||
|
|
||||
|
- ❌ **Don't**: Mix different time formats in the same system |
||||
|
|
||||
|
- ✅ **Do**: Standardize on ISO 8601 for all storage |
||||
|
|
||||
|
#### 3. Relative Time References |
||||
|
|
||||
|
- ❌ **Don't**: Use relative terms in persistent storage |
||||
|
|
||||
|
- ✅ **Do**: Convert relative terms to absolute timestamps immediately |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/development/time.mdc` for core principles |
||||
|
|
||||
|
- `.cursor/rules/development/time_examples.mdc` for practical examples |
||||
|
|
||||
|
**Status**: Active implementation guidelines |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: time.mdc |
||||
|
**Stakeholders**: Development team, DevOps team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Time Implementation |
||||
|
|
||||
|
- [ ] **Time Context**: Understand what time information needs to be implemented |
||||
|
- [ ] **Format Review**: Review time formatting standards (UTC, ISO 8601) |
||||
|
- [ ] **Platform Check**: Identify platform-specific time requirements |
||||
|
- [ ] **User Context**: Consider user's timezone and display preferences |
||||
|
|
||||
|
### During Time Implementation |
||||
|
|
||||
|
- [ ] **UTC Storage**: Use UTC for all system and log timestamps |
||||
|
- [ ] **Format Consistency**: Apply consistent time formatting patterns |
||||
|
- [ ] **Timezone Handling**: Properly handle timezone conversions |
||||
|
- [ ] **User Display**: Format times appropriately for user display |
||||
|
|
||||
|
### After Time Implementation |
||||
|
|
||||
|
- [ ] **Format Validation**: Verify time formats are correct and consistent |
||||
|
- [ ] **Cross-Platform Testing**: Test time handling across different platforms |
||||
|
- [ ] **Documentation**: Update relevant documentation with time patterns |
||||
|
- [ ] **User Experience**: Confirm time display is clear and user-friendly |
@ -0,0 +1,212 @@ |
|||||
|
--- |
||||
|
description: when dealing with types and Typesript |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
|
||||
|
```json |
||||
|
|
||||
|
{ |
||||
|
"coaching_level": "light", |
||||
|
"socratic_max_questions": 7, |
||||
|
"verbosity": "concise", |
||||
|
"timebox_minutes": null, |
||||
|
"format_enforcement": "strict" |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
# TypeScript Type Safety Guidelines |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-19 |
||||
|
**Status**: 🎯 **ACTIVE** - Type safety enforcement |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
Practical rules to keep TypeScript strict and predictable. Minimize exceptions. |
||||
|
|
||||
|
## Core Rules |
||||
|
|
||||
|
1. **No `any`** |
||||
|
|
||||
|
- Use explicit types. If unknown, use `unknown` and **narrow** via guards. |
||||
|
|
||||
|
2. **Error handling uses guards** |
||||
|
|
||||
|
- Reuse guards from `src/interfaces/**` (e.g., `isDatabaseError`, |
||||
|
|
||||
|
`isApiError`). |
||||
|
|
||||
|
- Catch with `unknown`; never cast to `any`. |
||||
|
|
||||
|
3. **Dynamic property access is type‑safe** |
||||
|
|
||||
|
- Use `keyof` + `in` checks: |
||||
|
|
||||
|
```ts |
||||
|
|
||||
|
obj[k as keyof typeof obj] |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
- Avoid `(obj as any)[k]`. |
||||
|
|
||||
|
## Type Safety Enforcement |
||||
|
|
||||
|
### Core Type Safety Rules |
||||
|
|
||||
|
- **No `any` Types**: Use explicit types or `unknown` with proper type guards |
||||
|
|
||||
|
- **Error Handling Uses Guards**: |
||||
|
|
||||
|
Implement and reuse type guards from `src/interfaces/**` |
||||
|
|
||||
|
- **Dynamic Property Access**: |
||||
|
|
||||
|
Use `keyof` + `in` checks for type-safe property access |
||||
|
|
||||
|
### Type Guard Patterns |
||||
|
|
||||
|
- **API Errors**: Use `isApiError(error)` guards for API error handling |
||||
|
|
||||
|
- **Database Errors**: |
||||
|
|
||||
|
Use `isDatabaseError(error)` guards for database operations |
||||
|
|
||||
|
- **Axios Errors**: |
||||
|
|
||||
|
Implement `isAxiosError(error)` guards for HTTP error handling |
||||
|
|
||||
|
### Implementation Guidelines |
||||
|
|
||||
|
- **Avoid Type Assertions**: |
||||
|
|
||||
|
Replace `as any` with proper type guards and interfaces |
||||
|
|
||||
|
- **Narrow Types Properly**: Use type guards to narrow `unknown` types safely |
||||
|
|
||||
|
- **Document Type Decisions**: Explain complex type structures and their purpose |
||||
|
|
||||
|
## Minimal Special Cases (document in PR when used) |
||||
|
|
||||
|
- **Vue refs / instances**: Use `ComponentPublicInstance` or specific |
||||
|
|
||||
|
component types for dynamic refs. |
||||
|
|
||||
|
- **3rd‑party libs without types**: Narrow immediately to a **known |
||||
|
|
||||
|
interface**; do not leave `any` hanging. |
||||
|
|
||||
|
## Patterns (short) |
||||
|
|
||||
|
### Database errors |
||||
|
|
||||
|
```ts |
||||
|
|
||||
|
try { await this.$addContact(contact); } |
||||
|
catch (e: unknown) { |
||||
|
if (isDatabaseError(e) && e.message.includes("Key already exists")) { |
||||
|
/* handle duplicate */ |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### API errors |
||||
|
|
||||
|
```ts |
||||
|
|
||||
|
try { await apiCall(); } |
||||
|
catch (e: unknown) { |
||||
|
if (isApiError(e)) { |
||||
|
const msg = e.response?.data?.error?.message; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Dynamic keys |
||||
|
|
||||
|
```ts |
||||
|
|
||||
|
const keys = Object.keys(newSettings).filter( |
||||
|
k => k in newSettings && newSettings[k as keyof typeof newSettings] !== |
||||
|
undefined |
||||
|
); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Checklists |
||||
|
|
||||
|
**Before commit** |
||||
|
|
||||
|
- [ ] No `any` (except documented, justified cases) |
||||
|
|
||||
|
- [ ] Errors handled via guards |
||||
|
|
||||
|
- [ ] Dynamic access uses `keyof`/`in` |
||||
|
|
||||
|
- [ ] Imports point to correct interfaces/types |
||||
|
|
||||
|
**Code review** |
||||
|
|
||||
|
- [ ] Hunt hidden `as any` |
||||
|
|
||||
|
- [ ] Guard‑based error paths verified |
||||
|
|
||||
|
- [ ] Dynamic ops are type‑safe |
||||
|
|
||||
|
- [ ] Prefer existing types over re‑inventing |
||||
|
|
||||
|
## Tools |
||||
|
|
||||
|
- `npm run lint-fix` — lint & auto‑fix |
||||
|
|
||||
|
- `npm run type-check` — strict type compilation (CI + pre‑release) |
||||
|
|
||||
|
- IDE: enable strict TS, ESLint/TS ESLint, Volar (Vue 3) |
||||
|
|
||||
|
## References |
||||
|
|
||||
|
- TS Handbook — <https://www.typescriptlang.org/docs/> |
||||
|
|
||||
|
- TS‑ESLint — <https://typescript-eslint.io/rules/> |
||||
|
|
||||
|
- Vue 3 + TS — <https://vuejs.org/guide/typescript/> |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Active type safety guidelines |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: TypeScript, ESLint, Vue 3 |
||||
|
**Stakeholders**: Development team |
||||
|
|
||||
|
- TS Handbook — <https://www.typescriptlang.org/docs/> |
||||
|
|
||||
|
- TS‑ESLint — <https://typescript-eslint.io/rules/> |
||||
|
|
||||
|
- Vue 3 + TS — <https://vuejs.org/guide/typescript/> |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Type Implementation |
||||
|
|
||||
|
- [ ] **Type Analysis**: Understand current type definitions and usage |
||||
|
- [ ] **Interface Review**: Review existing interfaces and types |
||||
|
- [ ] **Error Handling**: Plan error handling with type guards |
||||
|
- [ ] **Dynamic Access**: Identify dynamic access patterns that need type safety |
||||
|
|
||||
|
### During Type Implementation |
||||
|
|
||||
|
- [ ] **Type Safety**: Ensure types provide meaningful safety guarantees |
||||
|
- [ ] **Error Guards**: Implement proper error handling with type guards |
||||
|
- [ ] **Dynamic Operations**: Use `keyof`/`in` for dynamic access |
||||
|
- [ ] **Import Validation**: Verify imports point to correct interfaces/types |
||||
|
|
||||
|
### After Type Implementation |
||||
|
|
||||
|
- [ ] **Linting Check**: Run `npm run lint-fix` to verify code quality |
||||
|
- [ ] **Type Check**: Run `npm run type-check` for strict type compilation |
||||
|
- [ ] **Code Review**: Hunt for hidden `as any` and type safety issues |
||||
|
- [ ] **Documentation**: Update type documentation and examples |
@ -0,0 +1,37 @@ |
|||||
|
--- |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
# Directive for Documentation Generation |
||||
|
|
||||
|
1. Produce a **small, focused set of documents** rather than an overwhelming volume. |
||||
|
2. Ensure the content is **maintainable and worth preserving**, so that humans |
||||
|
are motivated to keep it up to date. |
||||
|
3. Prioritize **educational value**: the documents must clearly explain the |
||||
|
workings of the system. |
||||
|
4. Avoid **shallow, generic, or filler explanations** often found in AI-generated |
||||
|
documentation. |
||||
|
5. Aim for **clarity, depth, and usefulness**, so readers gain genuine understanding. |
||||
|
6. Always check the local system date to determine current date. |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Documentation Creation |
||||
|
|
||||
|
- [ ] **Scope Definition**: Define what needs to be documented |
||||
|
- [ ] **Audience Analysis**: Identify target readers and their needs |
||||
|
- [ ] **Content Planning**: Plan focused, educational content structure |
||||
|
- [ ] **Maintenance Planning**: Ensure content will be worth preserving |
||||
|
|
||||
|
### During Documentation Creation |
||||
|
|
||||
|
- [ ] **Educational Focus**: Clearly explain how the system works |
||||
|
- [ ] **Depth and Clarity**: Provide genuine understanding, not surface explanations |
||||
|
- [ ] **Focused Content**: Keep documents small and focused on specific topics |
||||
|
- [ ] **Current Date**: Check local system date for time-sensitive content |
||||
|
|
||||
|
### After Documentation Creation |
||||
|
|
||||
|
- [ ] **Quality Review**: Ensure content is clear, deep, and useful |
||||
|
- [ ] **Maintainability Check**: Verify content motivates humans to keep it updated |
||||
|
- [ ] **Audience Validation**: Confirm content meets target reader needs |
||||
|
- [ ] **Integration**: Integrate with existing documentation structure |
@ -0,0 +1,210 @@ |
|||||
|
# Markdown Core Standards & Automation |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-21 |
||||
|
**Status**: 🎯 **ACTIVE** - Core markdown standards and automation |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
This file combines core markdown formatting standards with automation |
||||
|
guidelines. AI agents must follow these rules DURING content generation, |
||||
|
not apply them after the fact. |
||||
|
|
||||
|
**Primary Focus**: Create educational content that increases human |
||||
|
competence, not just technical descriptions. |
||||
|
|
||||
|
## AI Generation Guidelines |
||||
|
|
||||
|
### **MANDATORY**: Follow These Rules While Writing |
||||
|
|
||||
|
When generating markdown content, you MUST: |
||||
|
|
||||
|
1. **Line Length**: Never exceed 80 characters per line |
||||
|
2. **Blank Lines**: Always add blank lines around headings, lists, and |
||||
|
code blocks |
||||
|
3. **Structure**: Use proper heading hierarchy and document templates |
||||
|
4. **Formatting**: Apply consistent formatting patterns immediately |
||||
|
5. **Educational Value**: Focus on increasing reader competence and |
||||
|
understanding |
||||
|
|
||||
|
### **DO NOT**: Generate content that violates these rules |
||||
|
|
||||
|
- ❌ Generate long lines that need breaking |
||||
|
- ❌ Create content without proper blank line spacing |
||||
|
- ❌ Use inconsistent formatting patterns |
||||
|
- ❌ Assume post-processing will fix violations |
||||
|
- ❌ Focus only on technical details without educational context |
||||
|
- ❌ Assume reader has extensive prior knowledge |
||||
|
|
||||
|
### **DO**: Generate compliant content from the start |
||||
|
|
||||
|
- ✅ Write within 80-character limits |
||||
|
- ✅ Add blank lines around all structural elements |
||||
|
- ✅ Use established templates and patterns |
||||
|
- ✅ Apply formatting standards immediately |
||||
|
- ✅ Explain concepts before implementation details |
||||
|
- ✅ Provide context and motivation for technical choices |
||||
|
- ✅ Include examples that illustrate key concepts |
||||
|
|
||||
|
## Core Formatting Standards |
||||
|
|
||||
|
### Line Length |
||||
|
|
||||
|
- **Maximum line length**: 80 characters |
||||
|
- **Exception**: Code blocks (JSON, shell, TypeScript, etc.) - no line |
||||
|
length enforcement |
||||
|
- **Rationale**: Ensures readability across different screen sizes and |
||||
|
terminal widths |
||||
|
|
||||
|
### Blank Lines |
||||
|
|
||||
|
- **Headings**: Must be surrounded by blank lines above and below |
||||
|
- **Lists**: Must be surrounded by blank lines above and below |
||||
|
- **Code blocks**: Must be surrounded by blank lines above and below |
||||
|
- **Maximum consecutive blank lines**: 1 (no multiple blank lines) |
||||
|
- **File start**: No blank lines at the beginning of the file |
||||
|
- **File end**: Single newline character at the end |
||||
|
|
||||
|
### Whitespace |
||||
|
|
||||
|
- **No trailing spaces**: Remove all trailing whitespace from lines |
||||
|
- **No tabs**: Use spaces for indentation |
||||
|
- **Consistent indentation**: 2 spaces for list items and nested content |
||||
|
|
||||
|
## Heading Standards |
||||
|
|
||||
|
### Format |
||||
|
|
||||
|
- **Style**: ATX-style headings (`#`, `##`, `###`, etc.) |
||||
|
- **Case**: Title case for general headings |
||||
|
- **Code references**: Use backticks for file names and technical terms |
||||
|
- ✅ `### Current package.json Scripts` |
||||
|
- ❌ `### Current Package.json Scripts` |
||||
|
|
||||
|
### Hierarchy |
||||
|
|
||||
|
- **H1 (#)**: Document title only |
||||
|
- **H2 (##)**: Major sections |
||||
|
- **H3 (###)**: Subsections |
||||
|
- **H4 (####)**: Sub-subsections |
||||
|
- **H5+**: Avoid deeper nesting |
||||
|
|
||||
|
## List Standards |
||||
|
|
||||
|
### Unordered Lists |
||||
|
|
||||
|
- **Marker**: Use `-` (hyphen) consistently |
||||
|
- **Indentation**: 2 spaces for nested items |
||||
|
- **Blank lines**: Surround lists with blank lines |
||||
|
|
||||
|
### Ordered Lists |
||||
|
|
||||
|
- **Format**: `1.`, `2.`, `3.` (sequential numbering) |
||||
|
- **Indentation**: 2 spaces for nested items |
||||
|
- **Blank lines**: Surround lists with blank lines |
||||
|
|
||||
|
### Task Lists |
||||
|
|
||||
|
- **Format**: `- [ ]` for incomplete, `- [x]` for complete |
||||
|
- **Indentation**: 2 spaces for nested items |
||||
|
- **Blank lines**: Surround lists with blank lines |
||||
|
|
||||
|
## Educational Content Standards |
||||
|
|
||||
|
### **Content Structure for Learning** |
||||
|
|
||||
|
- **Concept First**: Explain what something is before how to use it |
||||
|
- **Context Matters**: Explain why and when to use a feature |
||||
|
- **Progressive Disclosure**: Start simple, add complexity gradually |
||||
|
- **Real Examples**: Use concrete, relatable scenarios |
||||
|
- **Common Questions**: Anticipate and answer reader questions |
||||
|
|
||||
|
### **Writing for Understanding** |
||||
|
|
||||
|
- **Conversational Tone**: Write as if explaining to a colleague |
||||
|
- **Active Voice**: "You can do this" not "This can be done" |
||||
|
- **Question Format**: "What happens when..." to engage thinking |
||||
|
- **Analogies**: Use familiar concepts to explain complex ideas |
||||
|
- **Limitations**: Clearly state what solutions don't do |
||||
|
|
||||
|
## Code Block Standards |
||||
|
|
||||
|
### Inline Code |
||||
|
|
||||
|
- **Format**: Single backticks for inline code |
||||
|
- **Use cases**: File names, commands, variables, technical terms |
||||
|
- **Examples**: `package.json`, `npm run build`, `VITE_PLATFORM` |
||||
|
|
||||
|
### Code Blocks |
||||
|
|
||||
|
- **Format**: Triple backticks with language specification |
||||
|
- **Language**: Always specify the language for syntax highlighting |
||||
|
- **Blank lines**: Surround with blank lines above and below |
||||
|
|
||||
|
## Automation System |
||||
|
|
||||
|
### Available Commands |
||||
|
|
||||
|
- **`npm run markdown:fix`** - Fix formatting in all markdown files |
||||
|
using markdownlint-cli2 --fix |
||||
|
- **`npm run markdown:check`** - Validate formatting without fixing |
||||
|
using markdownlint-cli2 |
||||
|
|
||||
|
### How It Works |
||||
|
|
||||
|
1. **AI Agent Compliance** (Primary): AI follows markdown rules during |
||||
|
generation |
||||
|
2. **Pre-commit Hooks** (Backup): Catches any remaining formatting |
||||
|
issues |
||||
|
3. **GitHub Actions** (Pre-merge): Validates formatting before merge |
||||
|
|
||||
|
### Benefits |
||||
|
|
||||
|
- **No more manual fixes** - AI generates compliant content from start |
||||
|
- **Consistent style** - All files follow same standards |
||||
|
- **Faster development** - No need to fix formatting manually |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Generating Markdown Content |
||||
|
|
||||
|
- [ ] **Line Length**: Ensure no line exceeds 80 characters |
||||
|
- [ ] **Blank Lines**: Add blank lines around headings, lists, and code blocks |
||||
|
- [ ] **Whitespace**: Remove all trailing spaces, use 2-space indentation |
||||
|
- [ ] **Headings**: Use ATX-style with proper hierarchy (H1 for title only) |
||||
|
- [ ] **Lists**: Use consistent markers (- for unordered, 1. for ordered) |
||||
|
- [ ] **Code**: Specify language for fenced blocks, use backticks for inline |
||||
|
- [ ] **Educational Focus**: Plan content structure for learning progression |
||||
|
- [ ] **Audience Consideration**: Identify target reader knowledge level |
||||
|
|
||||
|
### After Generating Markdown Content |
||||
|
|
||||
|
- [ ] **Validation**: Run `npm run markdown:check` to verify compliance |
||||
|
- [ ] **Auto-fix**: Use `npm run markdown:fix` if any issues found |
||||
|
- [ ] **Review**: Confirm content follows established templates and patterns |
||||
|
- [ ] **Cross-reference**: Link to related documentation and templates |
||||
|
- [ ] **Educational Review**: Verify content increases reader competence |
||||
|
- [ ] **Example Validation**: Ensure examples illustrate key concepts clearly |
||||
|
|
||||
|
### Quality Assurance |
||||
|
|
||||
|
- [ ] **Readability**: Content is clear and follows project conventions |
||||
|
- [ ] **Consistency**: Formatting matches existing documentation style |
||||
|
- [ ] **Completeness**: All required sections and information included |
||||
|
- [ ] **Accuracy**: Technical details are correct and up-to-date |
||||
|
- [ ] **Educational Value**: Content increases reader understanding and competence |
||||
|
- [ ] **Context Clarity**: Reader understands when and why to use the information |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_documentation.mdc` for comprehensive documentation workflow |
||||
|
- `.cursor/rules/docs/markdown_templates.mdc` for document templates |
||||
|
- `.cursor/rules/docs/markdown_workflow.mdc` for validation workflows |
||||
|
|
||||
|
**Status**: Active core standards and automation |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Documentation team, Development team |
@ -0,0 +1,314 @@ |
|||||
|
# Markdown Templates & Examples |
||||
|
|
||||
|
> **Agent role**: Reference this file for document templates, structure, |
||||
|
> and examples when creating new documentation. |
||||
|
> |
||||
|
> **Focus**: Create educational content that increases human competence, |
||||
|
> not just technical descriptions. |
||||
|
|
||||
|
## Document Templates |
||||
|
|
||||
|
### Standard Document Template |
||||
|
|
||||
|
```markdown |
||||
|
# Document Title |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: YYYY-MM-DD |
||||
|
**Status**: 🎯 **STATUS** - Brief description |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
Brief description of the document's purpose and scope. |
||||
|
|
||||
|
**Educational Goal**: What will the reader learn and how will it increase |
||||
|
their competence? |
||||
|
|
||||
|
## Current State |
||||
|
|
||||
|
Description of current situation or problem. |
||||
|
|
||||
|
**Why This Matters**: Explain the business value and user benefit of |
||||
|
addressing this situation. |
||||
|
|
||||
|
## Implementation Plan |
||||
|
|
||||
|
### Phase 1: Foundation |
||||
|
|
||||
|
- [ ] Task 1 |
||||
|
- [ ] Task 2 |
||||
|
|
||||
|
**Learning Context**: What concepts should the reader understand before |
||||
|
proceeding with implementation? |
||||
|
|
||||
|
## Next Steps |
||||
|
|
||||
|
1. **Review and approve plan** |
||||
|
2. **Begin implementation** |
||||
|
3. **Test and validate** |
||||
|
|
||||
|
**Continued Learning**: Where can the reader go next to deepen their |
||||
|
understanding? |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Ready for implementation |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: X days |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Development team |
||||
|
``` |
||||
|
|
||||
|
### Technical Specification Template |
||||
|
|
||||
|
```markdown |
||||
|
# Technical Specification: [Feature Name] |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: YYYY-MM-DD |
||||
|
**Status**: 🎯 **DRAFT** - Under Review |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
Brief description of the technical specification. |
||||
|
|
||||
|
**Business Context**: Why is this specification needed and what problem |
||||
|
does it solve for users? |
||||
|
|
||||
|
## Requirements |
||||
|
|
||||
|
### Functional Requirements |
||||
|
|
||||
|
- [ ] Requirement 1 |
||||
|
- [ ] Requirement 2 |
||||
|
|
||||
|
### Non-Functional Requirements |
||||
|
|
||||
|
- [ ] Performance requirement |
||||
|
- [ ] Security requirement |
||||
|
|
||||
|
## Technical Design |
||||
|
|
||||
|
### Architecture |
||||
|
|
||||
|
Description of the technical architecture. |
||||
|
|
||||
|
**Design Rationale**: Why was this architecture chosen over alternatives? |
||||
|
What are the trade-offs and benefits? |
||||
|
|
||||
|
### Data Models |
||||
|
|
||||
|
```typescript |
||||
|
interface ExampleModel { |
||||
|
id: string; |
||||
|
name: string; |
||||
|
createdAt: Date; |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### API Design |
||||
|
|
||||
|
```typescript |
||||
|
interface APIResponse<T> { |
||||
|
success: boolean; |
||||
|
data: T; |
||||
|
error?: string; |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## Testing Strategy |
||||
|
|
||||
|
- [ ] Unit tests |
||||
|
|
||||
|
**Learning from Testing**: What insights does testing provide about the |
||||
|
system's behavior and design? |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Educational Documentation Template |
||||
|
|
||||
|
### **Concept Explanation Template** |
||||
|
|
||||
|
```markdown |
||||
|
## What is [Concept Name]? |
||||
|
|
||||
|
Brief, clear definition of the concept. |
||||
|
|
||||
|
## Why Does [Concept Name] Matter? |
||||
|
|
||||
|
Explain the business value and user benefit. |
||||
|
|
||||
|
## How Does [Concept Name] Work? |
||||
|
|
||||
|
High-level explanation of the mechanism. |
||||
|
|
||||
|
## When Would You Use [Concept Name]? |
||||
|
|
||||
|
Real-world scenarios and use cases. |
||||
|
|
||||
|
## Common Misconceptions |
||||
|
|
||||
|
Address typical misunderstandings. |
||||
|
|
||||
|
## Examples |
||||
|
|
||||
|
Concrete examples that illustrate the concept. |
||||
|
|
||||
|
## Next Steps |
||||
|
|
||||
|
Where to learn more about related concepts. |
||||
|
``` |
||||
|
|
||||
|
### **Tutorial Template** |
||||
|
|
||||
|
```markdown |
||||
|
## Learning Objective |
||||
|
|
||||
|
What the reader will accomplish by the end. |
||||
|
|
||||
|
## Prerequisites |
||||
|
|
||||
|
What the reader should know before starting. |
||||
|
|
||||
|
## Step-by-Step Guide |
||||
|
|
||||
|
1. **Step 1**: What to do and why |
||||
|
2. **Step 2**: What to do and why |
||||
|
3. **Step 3**: What to do and why |
||||
|
|
||||
|
## Verification |
||||
|
|
||||
|
How to confirm the tutorial was successful. |
||||
|
|
||||
|
## Troubleshooting |
||||
|
|
||||
|
Common issues and how to resolve them. |
||||
|
|
||||
|
## What You've Learned |
||||
|
|
||||
|
Summary of key concepts and skills. |
||||
|
|
||||
|
## Next Steps |
||||
|
|
||||
|
Where to apply this knowledge next. |
||||
|
``` |
||||
|
- [ ] Integration tests |
||||
|
- [ ] E2E tests |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Draft |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: X days |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Development team |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## Content Examples |
||||
|
|
||||
|
### JSON Examples |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"property": "value", |
||||
|
"nested": { |
||||
|
"property": "value" |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### Shell Commands |
||||
|
|
||||
|
```bash |
||||
|
# Command with comment |
||||
|
npm run build:web |
||||
|
|
||||
|
# Multi-line command |
||||
|
VITE_GIT_HASH=`git log -1 --pretty=format:%h` \ |
||||
|
vite build --config vite.config.web.mts |
||||
|
``` |
||||
|
|
||||
|
### TypeScript Examples |
||||
|
|
||||
|
```typescript |
||||
|
// Function with JSDoc |
||||
|
const getEnvironmentConfig = (env: string) => { |
||||
|
switch (env) { |
||||
|
case 'prod': |
||||
|
return { /* production settings */ }; |
||||
|
default: |
||||
|
return { /* development settings */ }; |
||||
|
} |
||||
|
}; |
||||
|
``` |
||||
|
|
||||
|
## File Structure Standards |
||||
|
|
||||
|
### Document Header |
||||
|
|
||||
|
```markdown |
||||
|
# Document Title |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: YYYY-MM-DD |
||||
|
**Status**: 🎯 **STATUS** - Brief description |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
Brief description of the document's purpose and scope. |
||||
|
``` |
||||
|
|
||||
|
### Section Organization |
||||
|
|
||||
|
Standard sections: Overview, Current State, Implementation Plan, |
||||
|
Technical Details, Testing & Validation, Next Steps |
||||
|
|
||||
|
## Common Patterns |
||||
|
|
||||
|
Standard implementation plans follow Phase 1 (Foundation), Phase 2 |
||||
|
(Features), Phase 3 (Testing & Polish) structure. |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Using Templates |
||||
|
|
||||
|
- [ ] **Template Selection**: Choose appropriate template for document type |
||||
|
- [ ] **Structure Review**: Understand required sections and organization |
||||
|
- [ ] **Content Planning**: Plan what information goes in each section |
||||
|
- [ ] **Audience Analysis**: Ensure template matches target audience needs |
||||
|
|
||||
|
### During Template Usage |
||||
|
|
||||
|
- [ ] **Section Completion**: Fill in all required sections completely |
||||
|
- [ ] **Example Integration**: Include relevant code examples and patterns |
||||
|
- [ ] **Formatting Consistency**: Apply markdown standards from core rules |
||||
|
- [ ] **Cross-references**: Link to related documentation and resources |
||||
|
|
||||
|
### After Template Usage |
||||
|
|
||||
|
- [ ] **Content Review**: Verify all sections contain appropriate content |
||||
|
- [ ] **Formatting Check**: Run `npm run markdown:check` for compliance |
||||
|
- [ ] **Template Validation**: Confirm document follows template structure |
||||
|
- [ ] **Quality Assessment**: Ensure content meets project standards |
||||
|
|
||||
|
### Template-Specific Requirements |
||||
|
|
||||
|
- [ ] **Standard Documents**: Include all required metadata and sections |
||||
|
- [ ] **Technical Specs**: Complete all requirement and design sections |
||||
|
- [ ] **Implementation Plans**: Define clear phases and milestones |
||||
|
- [ ] **Examples**: Provide relevant, working code examples |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_documentation.mdc` for comprehensive documentation workflow |
||||
|
- `.cursor/rules/docs/markdown_core.mdc` for core formatting standards |
||||
|
- `.cursor/rules/docs/markdown_workflow.mdc` for validation workflows |
||||
|
|
||||
|
**Status**: Active templates and examples |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: markdown_core.mdc |
||||
|
**Stakeholders**: Documentation team, Development team |
@ -0,0 +1,168 @@ |
|||||
|
# Markdown Workflow & Validation |
||||
|
|
||||
|
> **Agent role**: Reference this file for markdown validation rules, |
||||
|
> enforcement procedures, and workflow management. |
||||
|
|
||||
|
## Markdownlint Configuration |
||||
|
|
||||
|
### Core Rules |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"MD013": { "line_length": 80, "code_blocks": false }, |
||||
|
"MD012": true, |
||||
|
"MD022": true, |
||||
|
"MD031": true, |
||||
|
"MD032": true, |
||||
|
"MD047": true, |
||||
|
"MD009": true, |
||||
|
"MD004": { "style": "dash" } |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### Rule Explanations |
||||
|
|
||||
|
- **MD013**: Line length (80 chars, disabled for code blocks) |
||||
|
- **MD012**: No multiple consecutive blank lines |
||||
|
- **MD022**: Headings should be surrounded by blank lines |
||||
|
- **MD031**: Fenced code blocks should be surrounded by blank lines |
||||
|
- **MD032**: Lists should be surrounded by blank lines |
||||
|
- **MD047**: Files should end with a single newline |
||||
|
- **MD009**: No trailing spaces |
||||
|
- **MD004**: Consistent list markers (dash style) |
||||
|
|
||||
|
## Validation Commands |
||||
|
|
||||
|
### Check All MDC Files |
||||
|
|
||||
|
```bash |
||||
|
npm run markdown:check |
||||
|
``` |
||||
|
|
||||
|
### Auto-fix Formatting Issues |
||||
|
|
||||
|
```bash |
||||
|
npm run markdown:fix |
||||
|
``` |
||||
|
|
||||
|
### Check Single File |
||||
|
|
||||
|
```bash |
||||
|
npx markdownlint-cli2 .cursor/rules/filename.mdc |
||||
|
``` |
||||
|
|
||||
|
## Enforcement Workflow |
||||
|
|
||||
|
### Pre-commit Hooks |
||||
|
|
||||
|
- **Automatic**: `lint-staged` runs `markdownlint-cli2 --fix` on all |
||||
|
staged `.mdc` files |
||||
|
- **Result**: Files are automatically formatted before commit |
||||
|
- **Blocking**: Commits with unfixable violations are blocked |
||||
|
|
||||
|
### CI/CD Integration |
||||
|
|
||||
|
- **Build Pipeline**: Include markdownlint in automated builds |
||||
|
- **Quality Reports**: Generate documentation quality metrics |
||||
|
- **Build Failure**: Fail builds with critical violations |
||||
|
|
||||
|
### Team Guidelines |
||||
|
|
||||
|
- **PR Requirements**: All documentation PRs must pass markdownlint |
||||
|
- **Templates**: Use provided templates for new documents |
||||
|
- **Patterns**: Follow established patterns for consistency |
||||
|
- **Auto-fixing**: Let automation handle formatting, focus on content |
||||
|
|
||||
|
## Quality Assurance |
||||
|
|
||||
|
### Validation Checklist |
||||
|
|
||||
|
- [ ] All files pass `npm run markdown:check` |
||||
|
- [ ] Line length under 80 characters |
||||
|
- [ ] Proper blank line spacing around elements |
||||
|
- [ ] No trailing spaces |
||||
|
- [ ] Consistent list markers |
||||
|
- [ ] Proper heading hierarchy |
||||
|
- [ ] Code blocks have language specification |
||||
|
|
||||
|
### Common Issues & Fixes |
||||
|
|
||||
|
#### Trailing Spaces |
||||
|
|
||||
|
```bash |
||||
|
# Remove trailing spaces |
||||
|
sed -i 's/[[:space:]]*$//' .cursor/rules/**/*.mdc |
||||
|
``` |
||||
|
|
||||
|
#### Multiple Blank Lines |
||||
|
|
||||
|
```bash |
||||
|
# Remove multiple blank lines |
||||
|
sed -i '/^$/N;/^\n$/D' .cursor/rules/**/*.mdc |
||||
|
``` |
||||
|
|
||||
|
#### Missing Newlines |
||||
|
|
||||
|
```bash |
||||
|
# Add newline at end if missing |
||||
|
find .cursor/rules -name "*.mdc" -exec sed -i -e '$a\' {} \; |
||||
|
``` |
||||
|
|
||||
|
## Integration Points |
||||
|
|
||||
|
### Git Workflow |
||||
|
|
||||
|
1. **Edit**: Make changes to MDC files |
||||
|
2. **Stage**: `git add .cursor/rules/filename.mdc` |
||||
|
3. **Auto-fix**: `lint-staged` runs `markdownlint-cli2 --fix` |
||||
|
4. **Commit**: Changes are committed with perfect formatting |
||||
|
|
||||
|
### Development Workflow |
||||
|
|
||||
|
1. **Create/Edit**: Use templates from `markdown_templates.mdc` |
||||
|
2. **Validate**: Run `npm run markdown:check` before committing |
||||
|
3. **Auto-fix**: Use `npm run markdown:fix` for bulk fixes |
||||
|
4. **Review**: Ensure content quality, not just formatting |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Starting Workflow |
||||
|
|
||||
|
- [ ] **Configuration Review**: Understand markdownlint rules and settings |
||||
|
- [ ] **Tool Availability**: Ensure markdownlint-cli2 is installed and working |
||||
|
- [ ] **File Scope**: Identify which files need validation or fixing |
||||
|
- [ ] **Backup Strategy**: Consider backing up files before bulk operations |
||||
|
|
||||
|
### During Workflow Execution |
||||
|
|
||||
|
- [ ] **Validation First**: Run `npm run markdown:check` to identify issues |
||||
|
- [ ] **Issue Analysis**: Review and understand each validation error |
||||
|
- [ ] **Auto-fix Application**: Use `npm run markdown:fix` for automatic fixes |
||||
|
- [ ] **Manual Review**: Check files that couldn't be auto-fixed |
||||
|
|
||||
|
### After Workflow Completion |
||||
|
|
||||
|
- [ ] **Final Validation**: Confirm all files pass `npm run markdown:check` |
||||
|
- [ ] **Quality Review**: Verify formatting meets project standards |
||||
|
- [ ] **Documentation Update**: Update any related documentation or guides |
||||
|
- [ ] **Team Communication**: Share workflow results and any manual fixes needed |
||||
|
|
||||
|
### Workflow-Specific Requirements |
||||
|
|
||||
|
- [ ] **Pre-commit Hooks**: Ensure lint-staged configuration is working |
||||
|
- [ ] **CI/CD Integration**: Verify build pipeline includes markdown validation |
||||
|
- [ ] **Team Guidelines**: Confirm all team members understand the workflow |
||||
|
- [ ] **Error Resolution**: Document common issues and their solutions |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/docs/markdown_core.mdc` for core formatting standards |
||||
|
- `.cursor/rules/docs/markdown_templates.mdc` for document templates |
||||
|
|
||||
|
**Status**: Active workflow and validation |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: markdown_core.mdc, markdown_templates.mdc |
||||
|
**Stakeholders**: Development team, Documentation team |
@ -1,19 +0,0 @@ |
|||||
--- |
|
||||
globs: *.md |
|
||||
alwaysApply: false |
|
||||
--- |
|
||||
|
|
||||
INITIAL_PLAN.md is unique to projects built inhouse and must never be deleted. |
|
||||
Maintain traditional files (README, CHANGELOG, BUILDING, etc.) |
|
||||
Any ad hoc files must always be put into docs folder |
|
||||
The docs folder must use sub-folders to classify documents by |
|
||||
There must never be more than seven folders at any sub-folder of the docs tree |
|
||||
Keep documents no more than seven in number for a folder. |
|
||||
If you need more documents than seven, make sub-folders to classify or re-classify documents. |
|
||||
Re-use documents by ammending or editing but always version them in git. |
|
||||
put documentation at the file, classs, and method heads |
|
||||
|
|
||||
Documents themselves must: |
|
||||
|
|
||||
Headings should be surrounded by blank lines |
|
||||
Lists should be surrounded by blank |
|
@ -0,0 +1,163 @@ |
|||||
|
# Camera Implementation Documentation |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
This document describes how camera functionality is implemented across the |
||||
|
TimeSafari application. The application uses cameras for two main purposes: |
||||
|
|
||||
|
1. QR Code scanning |
||||
|
|
||||
|
2. Photo capture |
||||
|
|
||||
|
## Components |
||||
|
|
||||
|
### QRScannerDialog.vue |
||||
|
|
||||
|
Primary component for QR code scanning in web browsers. |
||||
|
|
||||
|
**Key Features:** |
||||
|
|
||||
|
- Uses `qrcode-stream` for web-based QR scanning |
||||
|
|
||||
|
- Supports both front and back cameras |
||||
|
|
||||
|
- Provides real-time camera status feedback |
||||
|
|
||||
|
- Implements error handling with user-friendly messages |
||||
|
|
||||
|
- Includes camera switching functionality |
||||
|
|
||||
|
**Camera Access Flow:** |
||||
|
|
||||
|
1. Checks for camera API availability |
||||
|
|
||||
|
2. Enumerates available video devices |
||||
|
|
||||
|
3. Requests camera permissions |
||||
|
|
||||
|
4. Initializes camera stream with preferred settings |
||||
|
|
||||
|
5. Handles various error conditions with specific messages |
||||
|
|
||||
|
### PhotoDialog.vue |
||||
|
|
||||
|
Component for photo capture and selection. |
||||
|
|
||||
|
**Key Features:** |
||||
|
|
||||
|
- Cross-platform photo capture interface |
||||
|
|
||||
|
- Image cropping capabilities |
||||
|
|
||||
|
- File selection fallback |
||||
|
|
||||
|
- Unified interface for different platforms |
||||
|
|
||||
|
## Services |
||||
|
|
||||
|
### QRScanner Services |
||||
|
|
||||
|
#### WebDialogQRScanner |
||||
|
|
||||
|
Web-based implementation of QR scanning. |
||||
|
|
||||
|
**Key Methods:** |
||||
|
|
||||
|
- `checkPermissions()`: Verifies camera permission status |
||||
|
|
||||
|
- `requestPermissions()`: Requests camera access |
||||
|
|
||||
|
- `isSupported()`: Checks for camera API support |
||||
|
|
||||
|
- Handles various error conditions with specific messages |
||||
|
|
||||
|
#### CapacitorQRScanner |
||||
|
|
||||
|
Native implementation using Capacitor's MLKit. |
||||
|
|
||||
|
**Key Features:** |
||||
|
|
||||
|
- Uses `@capacitor-mlkit/barcode-scanning` |
||||
|
|
||||
|
- Supports both front and back cameras |
||||
|
|
||||
|
- Implements permission management |
||||
|
|
||||
|
- Provides continuous scanning capability |
||||
|
|
||||
|
### Platform Services |
||||
|
|
||||
|
#### WebPlatformService |
||||
|
|
||||
|
Web-specific implementation of platform features. |
||||
|
|
||||
|
**Camera Capabilities:** |
||||
|
|
||||
|
- Uses HTML5 file input with capture attribute |
||||
|
|
||||
|
- Falls back to file selection if camera unavailable |
||||
|
|
||||
|
- Processes captured images for consistent format |
||||
|
|
||||
|
#### CapacitorPlatformService |
||||
|
|
||||
|
Native implementation using Capacitor. |
||||
|
|
||||
|
**Camera Features:** |
||||
|
|
||||
|
- Uses `Camera.getPhoto()` for native camera access |
||||
|
|
||||
|
- Supports image editing |
||||
|
|
||||
|
- Configures high-quality image capture |
||||
|
|
||||
|
- Handles base64 image processing |
||||
|
|
||||
|
#### ElectronPlatformService |
||||
|
|
||||
|
Desktop implementation (currently unimplemented). |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/features/camera_technical.mdc` for |
||||
|
|
||||
|
detailed technical implementation |
||||
|
|
||||
|
- `.cursor/rules/features/camera_platforms.mdc` for platform-specific details |
||||
|
|
||||
|
**Status**: Active camera implementation overview |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: None |
||||
|
**Stakeholders**: Development team, Camera feature team |
||||
|
|
||||
|
- iOS and Android devices |
||||
|
|
||||
|
- Desktop platforms |
||||
|
|
||||
|
- Various network conditions |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Camera Implementation |
||||
|
|
||||
|
- [ ] **Platform Analysis**: Understand camera requirements across all platforms |
||||
|
- [ ] **Feature Planning**: Plan QR scanning and photo capture features |
||||
|
- [ ] **Service Planning**: Plan camera service architecture |
||||
|
- [ ] **Testing Strategy**: Plan testing across web, mobile, and desktop |
||||
|
|
||||
|
### During Camera Implementation |
||||
|
|
||||
|
- [ ] **Component Development**: Implement QRScannerDialog and PhotoDialog |
||||
|
- [ ] **Service Implementation**: Implement platform-specific camera services |
||||
|
- [ ] **Permission Handling**: Implement proper camera permission management |
||||
|
- [ ] **Error Handling**: Implement graceful error handling for camera failures |
||||
|
|
||||
|
### After Camera Implementation |
||||
|
|
||||
|
- [ ] **Cross-Platform Testing**: Test camera functionality across all platforms |
||||
|
- [ ] **Feature Validation**: Verify QR scanning and photo capture work correctly |
||||
|
- [ ] **Performance Testing**: Ensure camera performance meets requirements |
||||
|
- [ ] **Documentation Update**: Update camera implementation documentation |
@ -0,0 +1,225 @@ |
|||||
|
# Camera Platform-Specific Implementation |
||||
|
|
||||
|
> **Agent role**: |
||||
|
Reference this file for platform-specific camera implementation details. |
||||
|
|
||||
|
## Web Platform |
||||
|
|
||||
|
### Implementation Details |
||||
|
|
||||
|
- Uses `getUserMedia` API for camera access |
||||
|
|
||||
|
- Implements fallback to file input if camera unavailable |
||||
|
|
||||
|
- Handles browser compatibility issues |
||||
|
|
||||
|
- Requires HTTPS for camera access |
||||
|
|
||||
|
### Browser Support |
||||
|
|
||||
|
- Chrome: Full support |
||||
|
|
||||
|
- Firefox: Full support |
||||
|
|
||||
|
- Safari: Limited support |
||||
|
|
||||
|
- Edge: Full support |
||||
|
|
||||
|
### Fallback Mechanisms |
||||
|
|
||||
|
1. Camera access via getUserMedia |
||||
|
|
||||
|
2. File input for image upload |
||||
|
|
||||
|
3. Drag and drop support |
||||
|
|
||||
|
4. Clipboard paste support |
||||
|
|
||||
|
## Mobile Platform (Capacitor) |
||||
|
|
||||
|
### iOS Implementation |
||||
|
|
||||
|
- Uses `@capacitor-mlkit/barcode-scanning` |
||||
|
|
||||
|
- Implements proper permission handling |
||||
|
|
||||
|
- Supports both front and back cameras |
||||
|
|
||||
|
- Handles camera switching |
||||
|
|
||||
|
### Android Implementation |
||||
|
|
||||
|
- Uses `@capacitor-mlkit/barcode-scanning` |
||||
|
|
||||
|
- Implements proper permission handling |
||||
|
|
||||
|
- Supports both front and back cameras |
||||
|
|
||||
|
- Handles camera switching |
||||
|
|
||||
|
### Permission Handling |
||||
|
|
||||
|
- Camera permissions requested at runtime |
||||
|
|
||||
|
- Permission state tracked and cached |
||||
|
|
||||
|
- Graceful handling of denied permissions |
||||
|
|
||||
|
- Clear user guidance for enabling permissions |
||||
|
|
||||
|
## Desktop Platform (Electron) |
||||
|
|
||||
|
### Current Status |
||||
|
|
||||
|
- Camera implementation pending |
||||
|
|
||||
|
- Will use platform-specific APIs |
||||
|
|
||||
|
- Requires proper permission handling |
||||
|
|
||||
|
- Will support both built-in and external cameras |
||||
|
|
||||
|
### Planned Implementation |
||||
|
|
||||
|
- Native camera access via Electron |
||||
|
|
||||
|
- Platform-specific camera APIs |
||||
|
|
||||
|
- Proper permission handling |
||||
|
|
||||
|
- Camera switching support |
||||
|
|
||||
|
## Platform Detection |
||||
|
|
||||
|
### Implementation |
||||
|
|
||||
|
- Uses `PlatformServiceFactory` for platform detection |
||||
|
|
||||
|
- Implements platform-specific camera services |
||||
|
|
||||
|
- Handles platform-specific error conditions |
||||
|
|
||||
|
- Provides platform-specific user guidance |
||||
|
|
||||
|
### Service Selection |
||||
|
|
||||
|
- Web: `WebPlatformService` |
||||
|
|
||||
|
- Mobile: `CapacitorPlatformService` |
||||
|
|
||||
|
- Desktop: `ElectronPlatformService` |
||||
|
|
||||
|
## Cross-Platform Compatibility |
||||
|
|
||||
|
### Common Interface |
||||
|
|
||||
|
- Unified camera service interface |
||||
|
|
||||
|
- Platform-specific implementations |
||||
|
|
||||
|
- Consistent error handling |
||||
|
|
||||
|
- Unified user experience |
||||
|
|
||||
|
### Feature Parity |
||||
|
|
||||
|
- Core camera functionality across platforms |
||||
|
|
||||
|
- Platform-specific optimizations |
||||
|
|
||||
|
- Consistent user interface |
||||
|
|
||||
|
- Unified error messages |
||||
|
|
||||
|
## Platform-Specific Features |
||||
|
|
||||
|
### Web |
||||
|
|
||||
|
- Browser-based camera access |
||||
|
|
||||
|
- File upload fallback |
||||
|
|
||||
|
- Drag and drop support |
||||
|
|
||||
|
- Clipboard paste support |
||||
|
|
||||
|
### Mobile |
||||
|
|
||||
|
- Native camera access |
||||
|
|
||||
|
- Barcode scanning |
||||
|
|
||||
|
- Photo capture |
||||
|
|
||||
|
- Camera switching |
||||
|
|
||||
|
### Desktop |
||||
|
|
||||
|
- Native camera access (planned) |
||||
|
|
||||
|
- External camera support (planned) |
||||
|
|
||||
|
- Advanced camera controls (planned) |
||||
|
|
||||
|
## Testing Strategy |
||||
|
|
||||
|
### Platform Coverage |
||||
|
|
||||
|
- Web: Multiple browsers |
||||
|
|
||||
|
- Mobile: iOS and Android devices |
||||
|
|
||||
|
- Desktop: Windows, macOS, Linux |
||||
|
|
||||
|
### Test Scenarios |
||||
|
|
||||
|
- Permission handling |
||||
|
|
||||
|
- Camera access |
||||
|
|
||||
|
- Error conditions |
||||
|
|
||||
|
- Platform compatibility |
||||
|
|
||||
|
- Performance metrics |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/features/camera-implementation.mdc` for |
||||
|
|
||||
|
core implementation overview |
||||
|
|
||||
|
- `.cursor/rules/features/camera_technical.mdc` for |
||||
|
|
||||
|
technical implementation details |
||||
|
|
||||
|
**Status**: Active platform-specific implementation guide |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: camera-implementation.mdc |
||||
|
**Stakeholders**: Development team, Platform team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Camera Platform Implementation |
||||
|
|
||||
|
- [ ] **Platform Analysis**: Identify target platforms and their camera capabilities |
||||
|
- [ ] **Feature Planning**: Plan platform-specific camera features |
||||
|
- [ ] **Integration Planning**: Plan integration with existing camera systems |
||||
|
- [ ] **Testing Strategy**: Plan testing across all target platforms |
||||
|
|
||||
|
### During Camera Platform Implementation |
||||
|
|
||||
|
- [ ] **Platform Services**: Implement platform-specific camera functionality |
||||
|
- [ ] **Feature Development**: Implement planned camera features for each platform |
||||
|
- [ ] **Integration**: Integrate with existing camera infrastructure |
||||
|
- [ ] **Performance Optimization**: Optimize camera performance for each platform |
||||
|
|
||||
|
### After Camera Platform Implementation |
||||
|
|
||||
|
- [ ] **Cross-Platform Testing**: Test camera functionality across all platforms |
||||
|
- [ ] **Feature Validation**: Verify all planned features work correctly |
||||
|
- [ ] **Performance Testing**: Ensure camera performance meets requirements |
||||
|
- [ ] **Documentation Update**: Update platform-specific camera documentation |
@ -0,0 +1,203 @@ |
|||||
|
# Camera Technical Implementation — Details and Best Practices |
||||
|
|
||||
|
> **Agent role**: Reference this file for |
||||
|
detailed technical implementation when working with camera features. |
||||
|
|
||||
|
## Platform-Specific Considerations |
||||
|
|
||||
|
### iOS |
||||
|
|
||||
|
- Requires `NSCameraUsageDescription` in Info.plist |
||||
|
|
||||
|
- Supports both front and back cameras |
||||
|
|
||||
|
- Implements proper permission handling |
||||
|
|
||||
|
### Android |
||||
|
|
||||
|
- Requires camera permissions in manifest |
||||
|
|
||||
|
- Supports both front and back cameras |
||||
|
|
||||
|
- Handles permission requests through Capacitor |
||||
|
|
||||
|
### Web |
||||
|
|
||||
|
- Requires HTTPS for camera access |
||||
|
|
||||
|
- Implements fallback mechanisms |
||||
|
|
||||
|
- Handles browser compatibility issues |
||||
|
|
||||
|
## Error Handling |
||||
|
|
||||
|
### Common Error Scenarios |
||||
|
|
||||
|
1. No camera found |
||||
|
|
||||
|
2. Permission denied |
||||
|
|
||||
|
3. Camera in use by another application |
||||
|
|
||||
|
4. HTTPS required |
||||
|
|
||||
|
5. Browser compatibility issues |
||||
|
|
||||
|
### Error Response |
||||
|
|
||||
|
- User-friendly error messages |
||||
|
|
||||
|
- Troubleshooting tips |
||||
|
|
||||
|
- Clear instructions for resolution |
||||
|
|
||||
|
- Platform-specific guidance |
||||
|
|
||||
|
## Security Considerations |
||||
|
|
||||
|
### Permission Management |
||||
|
|
||||
|
- Explicit permission requests |
||||
|
|
||||
|
- Permission state tracking |
||||
|
|
||||
|
- Graceful handling of denied permissions |
||||
|
|
||||
|
### Data Handling |
||||
|
|
||||
|
- Secure image processing |
||||
|
|
||||
|
- Proper cleanup of camera resources |
||||
|
|
||||
|
- No persistent storage of camera data |
||||
|
|
||||
|
## Best Practices |
||||
|
|
||||
|
### Camera Access |
||||
|
|
||||
|
1. Always check for camera availability |
||||
|
|
||||
|
2. Request permissions explicitly |
||||
|
|
||||
|
3. Handle all error conditions |
||||
|
|
||||
|
4. Provide clear user feedback |
||||
|
|
||||
|
5. Implement proper cleanup |
||||
|
|
||||
|
### Performance |
||||
|
|
||||
|
1. Optimize camera resolution |
||||
|
|
||||
|
2. Implement proper resource cleanup |
||||
|
|
||||
|
3. Handle camera switching efficiently |
||||
|
|
||||
|
4. Manage memory usage |
||||
|
|
||||
|
### User Experience |
||||
|
|
||||
|
1. Clear status indicators |
||||
|
|
||||
|
2. Intuitive camera controls |
||||
|
|
||||
|
3. Helpful error messages |
||||
|
|
||||
|
4. Smooth camera switching |
||||
|
|
||||
|
5. Responsive UI feedback |
||||
|
|
||||
|
## Future Improvements |
||||
|
|
||||
|
### Planned Enhancements |
||||
|
|
||||
|
1. Implement Electron camera support |
||||
|
|
||||
|
2. Add advanced camera features |
||||
|
|
||||
|
3. Improve error handling |
||||
|
|
||||
|
4. Enhance user feedback |
||||
|
|
||||
|
5. Optimize performance |
||||
|
|
||||
|
### Known Issues |
||||
|
|
||||
|
1. Electron camera implementation pending |
||||
|
|
||||
|
2. Some browser compatibility limitations |
||||
|
|
||||
|
3. Platform-specific quirks to address |
||||
|
|
||||
|
## Dependencies |
||||
|
|
||||
|
### Key Packages |
||||
|
|
||||
|
- `@capacitor-mlkit/barcode-scanning` |
||||
|
|
||||
|
- `qrcode-stream` |
||||
|
|
||||
|
- `vue-picture-cropper` |
||||
|
|
||||
|
- Platform-specific camera APIs |
||||
|
|
||||
|
## Testing |
||||
|
|
||||
|
### Test Scenarios |
||||
|
|
||||
|
1. Permission handling |
||||
|
|
||||
|
2. Camera switching |
||||
|
|
||||
|
3. Error conditions |
||||
|
|
||||
|
4. Platform compatibility |
||||
|
|
||||
|
5. Performance metrics |
||||
|
|
||||
|
### Test Environment |
||||
|
|
||||
|
- Multiple browsers |
||||
|
|
||||
|
- iOS and Android devices |
||||
|
|
||||
|
- Desktop platforms |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/features/camera-implementation.mdc` for |
||||
|
|
||||
|
core implementation overview |
||||
|
|
||||
|
- `.cursor/rules/features/camera_platforms.mdc` for platform-specific details |
||||
|
|
||||
|
**Status**: Active technical implementation guide |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: camera-implementation.mdc |
||||
|
**Stakeholders**: Development team, Camera feature team |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Camera Implementation |
||||
|
|
||||
|
- [ ] **Platform Analysis**: Identify target platforms and camera capabilities |
||||
|
- [ ] **Permission Planning**: Plan permission handling for camera access |
||||
|
- [ ] **Dependency Review**: Review required camera packages and APIs |
||||
|
- [ ] **Testing Strategy**: Plan testing across multiple platforms |
||||
|
|
||||
|
### During Camera Implementation |
||||
|
|
||||
|
- [ ] **Platform Services**: Implement platform-specific camera services |
||||
|
- [ ] **Permission Handling**: Implement proper camera permission handling |
||||
|
- [ ] **Error Handling**: Implement graceful error handling for camera failures |
||||
|
- [ ] **Performance Optimization**: Optimize camera performance and responsiveness |
||||
|
|
||||
|
### After Camera Implementation |
||||
|
|
||||
|
- [ ] **Cross-Platform Testing**: Test camera functionality across all platforms |
||||
|
- [ ] **Permission Testing**: Test permission handling and user feedback |
||||
|
- [ ] **Performance Validation**: Verify camera performance meets requirements |
||||
|
- [ ] **Documentation Update**: Update camera technical documentation |
@ -1,3 +0,0 @@ |
|||||
--- |
|
||||
alwaysApply: true |
|
||||
--- |
|
@ -1,6 +0,0 @@ |
|||||
--- |
|
||||
alwaysApply: true |
|
||||
--- |
|
||||
Always use structlog with rich contextual annotation |
|
||||
All logs should go to rsyslog |
|
||||
Logs showing in console should be set to whatever is needed at that time. |
|
@ -0,0 +1,288 @@ |
|||||
|
# Meta-Rule: Bug Diagnosis Workflow |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: August 24, 2025 |
||||
|
**Status**: 🎯 **ACTIVE** - Core workflow for all bug investigation |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule defines the systematic approach for investigating and diagnosing |
||||
|
bugs, defects, and unexpected behaviors in the TimeSafari application. It ensures |
||||
|
consistent, thorough, and efficient problem-solving workflows. |
||||
|
|
||||
|
## Workflow Constraints |
||||
|
|
||||
|
**This meta-rule enforces DIAGNOSIS MODE for all bundled sub-rules:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowMode": "diagnosis", |
||||
|
"constraints": { |
||||
|
"mode": "read_only", |
||||
|
"forbidden": ["modify", "create", "build", "commit"], |
||||
|
"required": "complete_investigation_before_fixing" |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**All bundled sub-rules automatically inherit these constraints.** |
||||
|
|
||||
|
## Workflow State Update |
||||
|
|
||||
|
**When this meta-rule is invoked, update the workflow state file:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"currentMode": "diagnosis", |
||||
|
"lastInvoked": "meta_bug_diagnosis.mdc", |
||||
|
"timestamp": "2025-01-27T15:30:00Z", |
||||
|
"constraints": { |
||||
|
"mode": "read_only", |
||||
|
"forbidden": ["modify", "create", "build", "commit"], |
||||
|
"allowed": ["read", "search", "analyze", "document"], |
||||
|
"required": "complete_investigation_before_fixing" |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**State File Location**: `.cursor/rules/.workflow_state.json` |
||||
|
|
||||
|
**This enables the core always-on rule to enforce diagnosis mode constraints.** |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
**ALWAYS** - Apply this workflow to every bug investigation, regardless of |
||||
|
severity or complexity. This ensures systematic problem-solving and prevents |
||||
|
common investigation pitfalls. |
||||
|
|
||||
|
## Bundled Rules |
||||
|
|
||||
|
### **Investigation Foundation** |
||||
|
|
||||
|
- **`development/research_diagnostic.mdc`** - Research and investigation methodologies |
||||
|
- **`development/logging_standards.mdc`** - Logging and debugging best practices |
||||
|
- **`development/type_safety_guide.mdc`** - Type safety and error prevention |
||||
|
|
||||
|
### **Development Workflow** |
||||
|
|
||||
|
- **`workflow/version_control.mdc`** - Version control during investigation |
||||
|
- **`development/software_development.mdc`** - Development best practices |
||||
|
|
||||
|
## Critical Development Constraints |
||||
|
|
||||
|
### **🚫 NEVER Use Build Commands During Diagnosis** |
||||
|
|
||||
|
**Critical Rule**: Never use `npm run build:web` or similar build commands during bug diagnosis |
||||
|
|
||||
|
- **Reason**: These commands block the chat and prevent effective troubleshooting |
||||
|
- **Impact**: Blocks user interaction, prevents real-time problem solving |
||||
|
- **Alternative**: Use safe, fast commands for investigation |
||||
|
- **When to use build**: Only after diagnosis is complete and fixes are ready for testing |
||||
|
|
||||
|
### **Safe Diagnosis Commands** |
||||
|
|
||||
|
✅ **Safe to use during diagnosis:** |
||||
|
- `npm run lint-fix` - Syntax and style checking |
||||
|
- `npm run type-check` - TypeScript validation (if available) |
||||
|
- `git status` - Version control status |
||||
|
- `ls` / `dir` - File listing |
||||
|
- `cat` / `read_file` - File content inspection |
||||
|
- `grep_search` - Text pattern searching |
||||
|
|
||||
|
❌ **Never use during diagnosis:** |
||||
|
- `npm run build:web` - Blocks chat |
||||
|
- `npm run build:electron` - Blocks chat |
||||
|
- `npm run build:capacitor` - Blocks chat |
||||
|
- Any long-running build processes |
||||
|
|
||||
|
## Investigation Workflow |
||||
|
|
||||
|
### **Phase 1: Problem Definition** |
||||
|
|
||||
|
1. **Gather Evidence** |
||||
|
- Error messages and stack traces |
||||
|
- User-reported symptoms |
||||
|
- System logs and timestamps |
||||
|
- Reproduction steps |
||||
|
|
||||
|
2. **Context Analysis** |
||||
|
- When did the problem start? |
||||
|
- What changed recently? |
||||
|
- Which platform/environment? |
||||
|
- User actions leading to the issue |
||||
|
|
||||
|
### **Phase 2: Systematic Investigation** |
||||
|
|
||||
|
1. **Code Inspection** |
||||
|
- Relevant file examination |
||||
|
- Import and dependency analysis |
||||
|
- Syntax and type checking |
||||
|
- Logic flow analysis |
||||
|
|
||||
|
2. **Environment Analysis** |
||||
|
- Platform-specific considerations |
||||
|
- Configuration and settings |
||||
|
- Database and storage state |
||||
|
- Network and API connectivity |
||||
|
|
||||
|
### **Phase 3: Root Cause Identification** |
||||
|
|
||||
|
1. **Pattern Recognition** |
||||
|
- Similar issues in codebase |
||||
|
- Common failure modes |
||||
|
- Platform-specific behaviors |
||||
|
- Recent changes impact |
||||
|
|
||||
|
2. **Hypothesis Testing** |
||||
|
- Targeted code changes |
||||
|
- Configuration modifications |
||||
|
- Environment adjustments |
||||
|
- Systematic elimination |
||||
|
|
||||
|
## Investigation Techniques |
||||
|
|
||||
|
### **Safe Code Analysis** |
||||
|
|
||||
|
- **File Reading**: Use `read_file` tool for targeted inspection |
||||
|
- **Pattern Searching**: Use `grep_search` for code patterns |
||||
|
- **Semantic Search**: Use `codebase_search` for related functionality |
||||
|
- **Import Tracing**: Follow dependency chains systematically |
||||
|
|
||||
|
### **Error Analysis** |
||||
|
|
||||
|
- **Stack Trace Analysis**: Identify error origin and propagation |
||||
|
- **Log Correlation**: Match errors with system events |
||||
|
- **Timeline Reconstruction**: Build sequence of events |
||||
|
- **Context Preservation**: Maintain investigation state |
||||
|
|
||||
|
### **Platform Considerations** |
||||
|
|
||||
|
- **Web Platform**: Browser-specific behaviors and limitations |
||||
|
- **Electron Platform**: Desktop app considerations |
||||
|
- **Capacitor Platform**: Mobile app behaviors |
||||
|
- **Cross-Platform**: Shared vs. platform-specific code |
||||
|
|
||||
|
## Evidence Collection Standards |
||||
|
|
||||
|
### **Timestamps** |
||||
|
|
||||
|
- **UTC Format**: All timestamps in UTC for consistency |
||||
|
- **Precision**: Include milliseconds for precise correlation |
||||
|
- **Context**: Include relevant system state information |
||||
|
- **Correlation**: Link events across different components |
||||
|
|
||||
|
### **Error Context** |
||||
|
|
||||
|
- **Full Error Objects**: Capture complete error information |
||||
|
- **Stack Traces**: Preserve call stack for analysis |
||||
|
- **User Actions**: Document steps leading to error |
||||
|
- **System State**: Capture relevant configuration and state |
||||
|
|
||||
|
### **Reproduction Steps** |
||||
|
|
||||
|
- **Clear Sequence**: Step-by-step reproduction instructions |
||||
|
- **Environment Details**: Platform, version, configuration |
||||
|
- **Data Requirements**: Required data or state |
||||
|
- **Expected vs. Actual**: Clear behavior comparison |
||||
|
|
||||
|
## Investigation Documentation |
||||
|
|
||||
|
### **Problem Summary** |
||||
|
|
||||
|
- **Issue Description**: Clear, concise problem statement |
||||
|
- **Impact Assessment**: Severity and user impact |
||||
|
- **Scope Definition**: Affected components and users |
||||
|
- **Priority Level**: Based on impact and frequency |
||||
|
|
||||
|
### **Investigation Log** |
||||
|
|
||||
|
- **Timeline**: Chronological investigation steps |
||||
|
- **Evidence**: Collected information and findings |
||||
|
- **Hypotheses**: Tested theories and results |
||||
|
- **Conclusions**: Root cause identification |
||||
|
|
||||
|
### **Solution Requirements** |
||||
|
|
||||
|
- **Fix Description**: Required changes and approach |
||||
|
- **Testing Strategy**: Validation and verification steps |
||||
|
- **Rollback Plan**: Reversion strategy if needed |
||||
|
- **Prevention Measures**: Future issue prevention |
||||
|
|
||||
|
## Quality Standards |
||||
|
|
||||
|
### **Investigation Completeness** |
||||
|
|
||||
|
- **Evidence Sufficiency**: Adequate information for root cause |
||||
|
- **Alternative Theories**: Considered and eliminated |
||||
|
- **Platform Coverage**: All relevant platforms investigated |
||||
|
- **Edge Cases**: Unusual scenarios considered |
||||
|
|
||||
|
### **Documentation Quality** |
||||
|
|
||||
|
- **Clear Communication**: Understandable to all stakeholders |
||||
|
- **Technical Accuracy**: Precise technical details |
||||
|
- **Actionable Insights**: Clear next steps and recommendations |
||||
|
- **Knowledge Transfer**: Lessons learned for future reference |
||||
|
|
||||
|
## Common Pitfalls |
||||
|
|
||||
|
### **Investigation Mistakes** |
||||
|
|
||||
|
- **Jumping to Solutions**: Implementing fixes before understanding |
||||
|
- **Insufficient Evidence**: Making assumptions without data |
||||
|
- **Platform Blindness**: Ignoring platform-specific behaviors |
||||
|
- **Scope Creep**: Expanding investigation beyond original problem |
||||
|
|
||||
|
### **Communication Issues** |
||||
|
|
||||
|
- **Technical Jargon**: Using unclear terminology |
||||
|
- **Missing Context**: Insufficient background information |
||||
|
- **Unclear Recommendations**: Vague or ambiguous next steps |
||||
|
- **Poor Documentation**: Incomplete or unclear investigation records |
||||
|
|
||||
|
## Success Criteria |
||||
|
|
||||
|
- [ ] **Problem clearly defined** with sufficient evidence |
||||
|
- [ ] **Root cause identified** through systematic investigation |
||||
|
- [ ] **Solution approach determined** with clear requirements |
||||
|
- [ ] **Documentation complete** for knowledge transfer |
||||
|
- [ ] **No chat-blocking commands** used during investigation |
||||
|
- [ ] **Platform considerations** properly addressed |
||||
|
- [ ] **Timeline and context** properly documented |
||||
|
|
||||
|
## Integration with Other Meta-Rules |
||||
|
|
||||
|
### **Bug Fixing** |
||||
|
|
||||
|
- **Investigation Results**: Provide foundation for fix implementation |
||||
|
- **Solution Requirements**: Define what needs to be built |
||||
|
- **Testing Strategy**: Inform validation approach |
||||
|
- **Documentation**: Support implementation guidance |
||||
|
|
||||
|
### **Feature Planning** |
||||
|
|
||||
|
- **Root Cause Analysis**: Identify systemic issues |
||||
|
- **Prevention Measures**: Plan future issue avoidance |
||||
|
- **Architecture Improvements**: Identify structural enhancements |
||||
|
- **Process Refinements**: Improve development workflows |
||||
|
|
||||
|
### **Research and Documentation** |
||||
|
|
||||
|
- **Knowledge Base**: Contribute to troubleshooting guides |
||||
|
- **Pattern Recognition**: Identify common failure modes |
||||
|
- **Best Practices**: Develop investigation methodologies |
||||
|
- **Team Training**: Improve investigation capabilities |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_bug_fixing.mdc` for implementing fixes |
||||
|
- `.cursor/rules/meta_feature_planning.mdc` for planning improvements |
||||
|
- `.cursor/rules/meta_documentation.mdc` for documentation standards |
||||
|
|
||||
|
**Status**: Active meta-rule for bug diagnosis |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: Development team, QA team, DevOps team |
@ -0,0 +1,214 @@ |
|||||
|
# Meta-Rule: Bug Fixing |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-21 |
||||
|
**Status**: 🎯 **ACTIVE** - Bug fix implementation workflow bundling |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule bundles all the rules needed for implementing bug fixes |
||||
|
with proper testing and validation. Use this after diagnosis when |
||||
|
implementing the actual fix. |
||||
|
|
||||
|
## Workflow Constraints |
||||
|
|
||||
|
**This meta-rule enforces FIXING MODE for all bundled sub-rules:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowMode": "fixing", |
||||
|
"constraints": { |
||||
|
"mode": "implementation", |
||||
|
"allowed": ["modify", "create", "build", "test", "commit"], |
||||
|
"required": "diagnosis_complete_before_fixing" |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**All bundled sub-rules automatically inherit these constraints.** |
||||
|
|
||||
|
## Workflow State Update |
||||
|
|
||||
|
**When this meta-rule is invoked, update the workflow state file:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"currentMode": "fixing", |
||||
|
"lastInvoked": "meta_bug_fixing.mdc", |
||||
|
"timestamp": "2025-01-27T15:30:00Z", |
||||
|
"constraints": { |
||||
|
"mode": "implementation", |
||||
|
"allowed": ["modify", "create", "build", "test", "commit"], |
||||
|
"forbidden": [], |
||||
|
"required": "diagnosis_complete_before_fixing" |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**State File Location**: `.cursor/rules/.workflow_state.json` |
||||
|
|
||||
|
**This enables the core always-on rule to enforce fixing mode constraints.** |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
- **Post-Diagnosis**: After root cause is identified and fix is planned |
||||
|
- **Fix Implementation**: When coding the actual bug fix |
||||
|
- **Testing & Validation**: When testing the fix works correctly |
||||
|
- **Code Review**: When reviewing the fix implementation |
||||
|
- **Deployment**: When preparing the fix for deployment |
||||
|
- **Documentation**: When documenting the fix and lessons learned |
||||
|
|
||||
|
## Bundled Rules |
||||
|
|
||||
|
### **Implementation Standards** |
||||
|
|
||||
|
- **`development/software_development.mdc`** - Core development |
||||
|
principles, evidence requirements, and testing strategy |
||||
|
- **`development/type_safety_guide.mdc`** - Type-safe implementation |
||||
|
with proper error handling and type guards |
||||
|
- **`development/logging_migration.mdc`** - Proper logging |
||||
|
implementation and migration from console.* calls |
||||
|
|
||||
|
### **Code Quality & Review** |
||||
|
|
||||
|
- **`development/historical_comment_management.mdc`** - Code quality |
||||
|
standards and comment transformation rules |
||||
|
- **`development/historical_comment_patterns.mdc`** - Specific |
||||
|
patterns for transforming historical comments |
||||
|
- **`development/complexity_assessment.mdc`** - Complexity evaluation |
||||
|
for fix implementation |
||||
|
|
||||
|
### **Platform & Testing** |
||||
|
|
||||
|
- **`app/timesafari_development.mdc`** - TimeSafari-specific |
||||
|
development workflow and testing requirements |
||||
|
- **`app/timesafari_platforms.mdc`** - Platform-specific testing |
||||
|
and validation requirements |
||||
|
- **`architecture/build_validation.mdc`** - Build system validation |
||||
|
and testing procedures |
||||
|
|
||||
|
## Workflow Sequence |
||||
|
|
||||
|
### **Phase 1: Fix Implementation (Start Here)** |
||||
|
|
||||
|
1. **Development Standards** - Apply `software_development.mdc` for |
||||
|
core implementation principles |
||||
|
2. **Type Safety** - Use `type_safety_guide.mdc` for type-safe |
||||
|
implementation |
||||
|
3. **Logging Implementation** - Apply `logging_migration.mdc` for |
||||
|
proper logging |
||||
|
|
||||
|
### **Phase 2: Quality & Review** |
||||
|
|
||||
|
1. **Code Quality** - Use `historical_comment_management.mdc` for |
||||
|
code quality standards |
||||
|
2. **Complexity Assessment** - Apply `complexity_assessment.mdc` to |
||||
|
evaluate fix complexity |
||||
|
3. **Code Review** - Follow review standards from bundled rules |
||||
|
|
||||
|
### **Phase 3: Testing & Validation** |
||||
|
|
||||
|
1. **Platform Testing** - Use `timesafari_platforms.mdc` for |
||||
|
platform-specific testing |
||||
|
2. **Build Validation** - Apply `build_validation.mdc` for build |
||||
|
system compliance |
||||
|
3. **Final Validation** - Verify fix works across all platforms |
||||
|
|
||||
|
## Success Criteria |
||||
|
|
||||
|
- [ ] **Fix implemented** following development standards |
||||
|
- [ ] **Type safety maintained** with proper error handling |
||||
|
- [ ] **Logging properly implemented** with component context |
||||
|
- [ ] **Code quality standards met** with clean, maintainable code |
||||
|
- [ ] **Testing completed** across all target platforms |
||||
|
- [ ] **Build validation passed** with no build system issues |
||||
|
- [ ] **Code review completed** with all feedback addressed |
||||
|
- [ ] **Documentation updated** with fix details and lessons learned |
||||
|
|
||||
|
## Common Pitfalls |
||||
|
|
||||
|
- **Don't skip type safety** - leads to runtime errors |
||||
|
- **Don't ignore logging** - makes future debugging harder |
||||
|
- **Don't skip platform testing** - misses platform-specific issues |
||||
|
- **Don't ignore code quality** - creates technical debt |
||||
|
- **Don't skip build validation** - can break build system |
||||
|
- **Don't forget documentation** - loses fix context for future |
||||
|
|
||||
|
## Integration Points |
||||
|
|
||||
|
### **With Other Meta-Rules** |
||||
|
|
||||
|
- **Bug Diagnosis**: Investigation results drive fix implementation |
||||
|
- **Feature Implementation**: Fix patterns inform future development |
||||
|
- **Feature Planning**: Fix complexity informs future planning |
||||
|
|
||||
|
### **With Development Workflow** |
||||
|
|
||||
|
- Fix implementation follows development standards |
||||
|
- Testing strategy ensures fix quality |
||||
|
- Code review maintains code quality |
||||
|
|
||||
|
## Feedback & Improvement |
||||
|
|
||||
|
### **Sub-Rule Ratings (1-5 scale)** |
||||
|
|
||||
|
- **Development Standards**: ___/5 - Comments: _______________ |
||||
|
- **Type Safety**: ___/5 - Comments: _______________ |
||||
|
- **Logging Migration**: ___/5 - Comments: _______________ |
||||
|
- **Code Quality**: ___/5 - Comments: _______________ |
||||
|
- **Platform Testing**: ___/5 - Comments: _______________ |
||||
|
|
||||
|
### **Workflow Feedback** |
||||
|
|
||||
|
- **Implementation Clarity**: How clear was the implementation guidance? |
||||
|
- **Testing Coverage**: Were testing requirements sufficient or excessive? |
||||
|
- **Process Effectiveness**: How well did the workflow work for you? |
||||
|
|
||||
|
### **Sub-Rule Improvements** |
||||
|
|
||||
|
- **Clarity Issues**: Which rules were unclear or confusing? |
||||
|
- **Missing Examples**: What examples would make rules more useful? |
||||
|
- **Integration Problems**: Do any rules conflict or overlap? |
||||
|
|
||||
|
### **Overall Experience** |
||||
|
|
||||
|
- **Time Saved**: How much time did this meta-rule save you? |
||||
|
- **Quality Improvement**: Did following these rules improve your fix? |
||||
|
- **Recommendation**: Would you recommend this meta-rule to others? |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Bug Fixing |
||||
|
|
||||
|
- [ ] **Root Cause Understood**: Confirm root cause is clearly identified |
||||
|
- [ ] **Fix Strategy Planned**: Plan implementation approach and testing |
||||
|
- [ ] **Platform Impact Assessed**: Understand impact across all platforms |
||||
|
- [ ] **Testing Strategy Planned**: Plan testing approach for the fix |
||||
|
|
||||
|
### During Bug Fixing |
||||
|
|
||||
|
- [ ] **Rule Application**: Apply bundled rules in recommended sequence |
||||
|
- [ ] **Implementation**: Implement fix following development standards |
||||
|
- [ ] **Testing**: Test fix across all target platforms |
||||
|
- [ ] **Documentation**: Document implementation details and decisions |
||||
|
|
||||
|
### After Bug Fixing |
||||
|
|
||||
|
- [ ] **Validation**: Verify fix meets all success criteria |
||||
|
- [ ] **Code Review**: Complete code review with team |
||||
|
- [ ] **Deployment**: Deploy fix following deployment procedures |
||||
|
- [ ] **Feedback Collection**: Collect feedback on meta-rule effectiveness |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_bug_diagnosis.mdc` for investigation workflow |
||||
|
- `.cursor/rules/meta_feature_implementation.mdc` for implementation patterns |
||||
|
- `.cursor/rules/meta_feature_planning.mdc` for planning future work |
||||
|
|
||||
|
**Status**: Active meta-rule for bug fixing |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: Development team, QA team, DevOps team |
@ -0,0 +1,383 @@ |
|||||
|
# Meta-Rule: Change Evaluation and Breaking Change Detection |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-25 |
||||
|
**Status**: 🎯 **ACTIVE** - Manually activated change evaluation rule |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule provides a systematic approach to evaluate changes between |
||||
|
branches and detect potential breaking changes. It's designed to catch |
||||
|
problematic model behavior by analyzing the nature, scope, and impact of |
||||
|
code changes before they cause issues. |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
**Manual Activation Only** - This rule should be invoked when: |
||||
|
|
||||
|
- Reviewing changes before merging branches |
||||
|
- Investigating unexpected behavior after updates |
||||
|
- Validating that model-generated changes are safe |
||||
|
- Analyzing the impact of recent commits |
||||
|
- Debugging issues that may be caused by recent changes |
||||
|
|
||||
|
## Workflow State Enforcement |
||||
|
|
||||
|
**This meta-rule enforces current workflow mode constraints:** |
||||
|
|
||||
|
### **Current Workflow State** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowState": { |
||||
|
"currentMode": "diagnosis|fixing|planning|research|documentation", |
||||
|
"constraints": { |
||||
|
"mode": "read_only|implementation|design_only|investigation|writing_only", |
||||
|
"allowed": ["array", "of", "allowed", "actions"], |
||||
|
"forbidden": ["array", "of", "forbidden", "actions"] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### **Mode-Specific Enforcement** |
||||
|
|
||||
|
**Diagnosis Mode (read_only):** |
||||
|
|
||||
|
- ❌ **Forbidden**: File modification, code creation, build commands, git |
||||
|
commits |
||||
|
- ✅ **Allowed**: File reading, code analysis, investigation, documentation |
||||
|
- **Response**: Focus on analysis and documentation, not implementation |
||||
|
|
||||
|
**Fixing Mode (implementation):** |
||||
|
|
||||
|
- ✅ **Allowed**: File modification, code creation, build commands, testing, |
||||
|
git commits |
||||
|
- ❌ **Forbidden**: None (full implementation mode) |
||||
|
- **Response**: Proceed with implementation and testing |
||||
|
|
||||
|
**Planning Mode (design_only):** |
||||
|
|
||||
|
- ❌ **Forbidden**: Implementation, coding, building, deployment |
||||
|
- ✅ **Allowed**: Analysis, design, estimation, documentation, architecture |
||||
|
- **Response**: Focus on planning and design, not implementation |
||||
|
|
||||
|
**Research Mode (investigation):** |
||||
|
|
||||
|
- ❌ **Forbidden**: File modification, implementation, deployment |
||||
|
- ✅ **Allowed**: Investigation, analysis, research, documentation |
||||
|
- **Response**: Focus on investigation and analysis |
||||
|
|
||||
|
**Documentation Mode (writing_only):** |
||||
|
|
||||
|
- ❌ **Forbidden**: Implementation, coding, building, deployment |
||||
|
- ✅ **Allowed**: Writing, editing, formatting, structuring, reviewing |
||||
|
- **Response**: Focus on documentation creation and improvement |
||||
|
|
||||
|
## Change Evaluation Process |
||||
|
|
||||
|
### **Phase 1: Change Discovery and Analysis** |
||||
|
|
||||
|
1. **Branch Comparison Analysis** |
||||
|
|
||||
|
- Compare working branch with master/main branch |
||||
|
- Identify all changed files and their modification types |
||||
|
- Categorize changes by scope and impact |
||||
|
|
||||
|
2. **Change Pattern Recognition** |
||||
|
|
||||
|
- Identify common change patterns (refactoring, feature addition, bug |
||||
|
fixes) |
||||
|
- Detect unusual or suspicious change patterns |
||||
|
- Flag changes that deviate from established patterns |
||||
|
|
||||
|
3. **Dependency Impact Assessment** |
||||
|
|
||||
|
- Analyze changes to imports, exports, and interfaces |
||||
|
- Identify potential breaking changes to public APIs |
||||
|
- Assess impact on dependent components and services |
||||
|
|
||||
|
### **Phase 2: Breaking Change Detection** |
||||
|
|
||||
|
1. **API Contract Analysis** |
||||
|
|
||||
|
- Check for changes to function signatures, method names, class |
||||
|
interfaces |
||||
|
- Identify removed or renamed public methods/properties |
||||
|
- Detect changes to configuration options and constants |
||||
|
|
||||
|
2. **Data Structure Changes** |
||||
|
|
||||
|
- Analyze database schema modifications |
||||
|
- Check for changes to data models and interfaces |
||||
|
- Identify modifications to serialization/deserialization logic |
||||
|
|
||||
|
3. **Behavioral Changes** |
||||
|
|
||||
|
- Detect changes to business logic and algorithms |
||||
|
- Identify modifications to error handling and validation |
||||
|
- Check for changes to user experience and workflows |
||||
|
|
||||
|
### **Phase 3: Risk Assessment and Recommendations** |
||||
|
|
||||
|
1. **Risk Level Classification** |
||||
|
|
||||
|
- **LOW**: Cosmetic changes, documentation updates, minor refactoring |
||||
|
- **MEDIUM**: Internal API changes, configuration modifications, |
||||
|
performance improvements |
||||
|
- **HIGH**: Public API changes, breaking interface modifications, major |
||||
|
architectural changes |
||||
|
- **CRITICAL**: Database schema changes, authentication modifications, |
||||
|
security-related changes |
||||
|
|
||||
|
2. **Impact Analysis** |
||||
|
|
||||
|
- Identify affected user groups and use cases |
||||
|
- Assess potential for data loss or corruption |
||||
|
- Evaluate impact on system performance and reliability |
||||
|
|
||||
|
3. **Mitigation Strategies** |
||||
|
|
||||
|
- Recommend testing approaches for affected areas |
||||
|
- Suggest rollback strategies if needed |
||||
|
- Identify areas requiring additional validation |
||||
|
|
||||
|
## Implementation Guidelines |
||||
|
|
||||
|
### **Change Analysis Tools** |
||||
|
|
||||
|
1. **Git Diff Analysis** |
||||
|
|
||||
|
```bash |
||||
|
# Compare working branch with master |
||||
|
git diff master..HEAD --name-only |
||||
|
git diff master..HEAD --stat |
||||
|
git log master..HEAD --oneline |
||||
|
``` |
||||
|
|
||||
|
2. **File Change Categorization** |
||||
|
|
||||
|
- **Core Files**: Application entry points, main services, critical |
||||
|
utilities |
||||
|
- **Interface Files**: Public APIs, component interfaces, data models |
||||
|
- **Configuration Files**: Environment settings, build configurations, |
||||
|
deployment scripts |
||||
|
- **Test Files**: Unit tests, integration tests, test utilities |
||||
|
|
||||
|
3. **Change Impact Mapping** |
||||
|
|
||||
|
- Map changed files to affected functionality |
||||
|
- Identify cross-dependencies and ripple effects |
||||
|
- Document potential side effects and unintended consequences |
||||
|
|
||||
|
### **Breaking Change Detection Patterns** |
||||
|
|
||||
|
1. **Function Signature Changes** |
||||
|
|
||||
|
```typescript |
||||
|
// BEFORE |
||||
|
function processData(data: string, options?: Options): Result |
||||
|
|
||||
|
// AFTER - BREAKING CHANGE |
||||
|
function processData(data: string, options: Required<Options>): Result |
||||
|
``` |
||||
|
|
||||
|
2. **Interface Modifications** |
||||
|
|
||||
|
```typescript |
||||
|
// BEFORE |
||||
|
interface UserProfile { |
||||
|
name: string; |
||||
|
email: string; |
||||
|
} |
||||
|
|
||||
|
// AFTER - BREAKING CHANGE |
||||
|
interface UserProfile { |
||||
|
name: string; |
||||
|
email: string; |
||||
|
phone: string; // Required new field |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
3. **Configuration Changes** |
||||
|
|
||||
|
```typescript |
||||
|
// BEFORE |
||||
|
const config = { |
||||
|
apiUrl: 'https://api.example.com', |
||||
|
timeout: 5000 |
||||
|
}; |
||||
|
|
||||
|
// AFTER - BREAKING CHANGE |
||||
|
const config = { |
||||
|
apiUrl: 'https://api.example.com', |
||||
|
timeout: 5000, |
||||
|
retries: 3 // New required configuration |
||||
|
}; |
||||
|
``` |
||||
|
|
||||
|
## Output Format |
||||
|
|
||||
|
### **Change Evaluation Report** |
||||
|
|
||||
|
```markdown |
||||
|
# Change Evaluation Report |
||||
|
|
||||
|
## Executive Summary |
||||
|
|
||||
|
- **Risk Level**: [LOW|MEDIUM|HIGH|CRITICAL] |
||||
|
- **Overall Assessment**: [SAFE|CAUTION|DANGEROUS|CRITICAL] |
||||
|
- **Recommendation**: [PROCEED|REVIEW|HALT|IMMEDIATE_ROLLBACK] |
||||
|
|
||||
|
## Change Analysis |
||||
|
|
||||
|
### Files Modified |
||||
|
|
||||
|
- **Total Changes**: [X] files |
||||
|
- **Core Files**: [X] files |
||||
|
- **Interface Files**: [X] files |
||||
|
- **Configuration Files**: [X] files |
||||
|
- **Test Files**: [X] files |
||||
|
|
||||
|
### Change Categories |
||||
|
|
||||
|
- **Refactoring**: [X] changes |
||||
|
- **Feature Addition**: [X] changes |
||||
|
- **Bug Fixes**: [X] changes |
||||
|
- **Configuration**: [X] changes |
||||
|
- **Documentation**: [X] changes |
||||
|
|
||||
|
## Breaking Change Detection |
||||
|
|
||||
|
### API Contract Changes |
||||
|
|
||||
|
- **Function Signatures**: [X] modified |
||||
|
- **Interface Definitions**: [X] modified |
||||
|
- **Public Methods**: [X] added/removed/modified |
||||
|
|
||||
|
### Data Structure Changes |
||||
|
|
||||
|
- **Database Schema**: [X] modifications |
||||
|
- **Data Models**: [X] changes |
||||
|
- **Serialization**: [X] changes |
||||
|
|
||||
|
### Behavioral Changes |
||||
|
|
||||
|
- **Business Logic**: [X] modifications |
||||
|
- **Error Handling**: [X] changes |
||||
|
- **User Experience**: [X] changes |
||||
|
|
||||
|
## Risk Assessment |
||||
|
|
||||
|
### Impact Analysis |
||||
|
|
||||
|
- **User Groups Affected**: [Description] |
||||
|
- **Use Cases Impacted**: [Description] |
||||
|
- **Performance Impact**: [Description] |
||||
|
- **Reliability Impact**: [Description] |
||||
|
|
||||
|
### Dependencies |
||||
|
|
||||
|
- **Internal Dependencies**: [List] |
||||
|
- **External Dependencies**: [List] |
||||
|
- **Configuration Dependencies**: [List] |
||||
|
|
||||
|
## Recommendations |
||||
|
|
||||
|
### Testing Requirements |
||||
|
|
||||
|
- [ ] Unit tests for modified components |
||||
|
- [ ] Integration tests for affected workflows |
||||
|
- [ ] Performance tests for changed algorithms |
||||
|
- [ ] User acceptance tests for UI changes |
||||
|
|
||||
|
### Validation Steps |
||||
|
|
||||
|
- [ ] Code review by domain experts |
||||
|
- [ ] API compatibility testing |
||||
|
- [ ] Database migration testing |
||||
|
- [ ] End-to-end workflow testing |
||||
|
|
||||
|
### Rollback Strategy |
||||
|
|
||||
|
- **Rollback Complexity**: [LOW|MEDIUM|HIGH] |
||||
|
- **Rollback Time**: [Estimated time] |
||||
|
- **Data Preservation**: [Strategy description] |
||||
|
|
||||
|
## Conclusion |
||||
|
|
||||
|
[Summary of findings and final recommendation] |
||||
|
``` |
||||
|
|
||||
|
## Usage Examples |
||||
|
|
||||
|
### **Example 1: Safe Refactoring** |
||||
|
|
||||
|
```bash |
||||
|
@meta_change_evaluation.mdc analyze changes between feature-branch and master |
||||
|
``` |
||||
|
|
||||
|
### **Example 2: Breaking Change Investigation** |
||||
|
|
||||
|
```bash |
||||
|
@meta_change_evaluation.mdc evaluate potential breaking changes in recent commits |
||||
|
``` |
||||
|
|
||||
|
### **Example 3: Pre-Merge Validation** |
||||
|
|
||||
|
```bash |
||||
|
@meta_change_evaluation.mdc validate changes before merging feature-branch to master |
||||
|
``` |
||||
|
|
||||
|
## Success Criteria |
||||
|
|
||||
|
- [ ] **Change Discovery**: All modified files are identified and categorized |
||||
|
- [ ] **Pattern Recognition**: Unusual change patterns are detected and flagged |
||||
|
- [ ] **Breaking Change Detection**: All potential breaking changes are identified |
||||
|
- [ ] **Risk Assessment**: Accurate risk levels are assigned with justification |
||||
|
- [ ] **Recommendations**: Actionable recommendations are provided |
||||
|
- [ ] **Documentation**: Complete change evaluation report is generated |
||||
|
|
||||
|
## Common Pitfalls |
||||
|
|
||||
|
- **Missing Dependencies**: Failing to identify all affected components |
||||
|
- **Underestimating Impact**: Not considering ripple effects of changes |
||||
|
- **Incomplete Testing**: Missing critical test scenarios for changes |
||||
|
- **Configuration Blindness**: Overlooking configuration file changes |
||||
|
- **Interface Assumptions**: Assuming internal changes won't affect external |
||||
|
users |
||||
|
|
||||
|
## Integration with Other Meta-Rules |
||||
|
|
||||
|
### **With Bug Diagnosis** |
||||
|
|
||||
|
- Use change evaluation to identify recent changes that may have caused |
||||
|
bugs |
||||
|
- Correlate change patterns with reported issues |
||||
|
|
||||
|
### **With Feature Planning** |
||||
|
|
||||
|
- Evaluate the impact of planned changes before implementation |
||||
|
- Identify potential breaking changes early in the planning process |
||||
|
|
||||
|
### **With Bug Fixing** |
||||
|
|
||||
|
- Validate that fixes don't introduce new breaking changes |
||||
|
- Ensure fixes maintain backward compatibility |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_core_always_on.mdc` for core always-on rules |
||||
|
- `.cursor/rules/meta_feature_planning.mdc` for feature development |
||||
|
workflows |
||||
|
- `.cursor/rules/meta_bug_diagnosis.mdc` for bug investigation workflows |
||||
|
- `.cursor/rules/meta_bug_fixing.mdc` for fix implementation workflows |
||||
|
|
||||
|
**Status**: Active change evaluation meta-rule |
||||
|
**Priority**: High (applies to all change evaluation tasks) |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: Development team, Quality Assurance team, Release |
||||
|
Management team |
@ -0,0 +1,311 @@ |
|||||
|
--- |
||||
|
alwaysApply: true |
||||
|
--- |
||||
|
|
||||
|
# Meta-Rule: Core Always-On Rules |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-21 |
||||
|
**Status**: 🎯 **ACTIVE** - Core rules for every prompt |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule bundles the core rules that should be applied to **every single |
||||
|
prompt** because they define fundamental behaviors, principles, and context |
||||
|
that are essential for all AI interactions. |
||||
|
|
||||
|
## Workflow Constraints |
||||
|
|
||||
|
**This meta-rule enforces ALWAYS-ON MODE for all bundled sub-rules:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowMode": "always_on", |
||||
|
"constraints": { |
||||
|
"mode": "foundation", |
||||
|
"alwaysApplied": true, |
||||
|
"required": "applied_to_every_prompt" |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**All bundled sub-rules automatically inherit these constraints.** |
||||
|
|
||||
|
## Workflow State Enforcement |
||||
|
|
||||
|
**This meta-rule enforces current workflow mode constraints for all interactions:** |
||||
|
|
||||
|
### **Current Workflow State** |
||||
|
```json |
||||
|
{ |
||||
|
"workflowState": { |
||||
|
"currentMode": "diagnosis|fixing|planning|research|documentation", |
||||
|
"constraints": { |
||||
|
"mode": "read_only|implementation|design_only|investigation|writing_only", |
||||
|
"allowed": ["array", "of", "allowed", "actions"], |
||||
|
"forbidden": ["array", "of", "forbidden", "actions"] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
### **Constraint Enforcement Rules** |
||||
|
|
||||
|
**Before responding to any user request, enforce current mode constraints:** |
||||
|
|
||||
|
1. **Read current workflow state** from `.cursor/rules/.workflow_state.json` |
||||
|
2. **Identify current mode** and its constraints |
||||
|
3. **Validate user request** against current mode constraints |
||||
|
4. **Enforce constraints** before generating response |
||||
|
5. **Guide model behavior** based on current mode |
||||
|
|
||||
|
### **Mode-Specific Enforcement** |
||||
|
|
||||
|
**Diagnosis Mode (read_only):** |
||||
|
- ❌ **Forbidden**: File modification, code creation, build commands, git commits |
||||
|
- ✅ **Allowed**: File reading, code analysis, investigation, documentation |
||||
|
- **Response**: Guide user toward investigation and analysis, not implementation |
||||
|
|
||||
|
**Fixing Mode (implementation):** |
||||
|
- ✅ **Allowed**: File modification, code creation, build commands, testing, git commits |
||||
|
- ❌ **Forbidden**: None (full implementation mode) |
||||
|
- **Response**: Proceed with implementation and testing |
||||
|
|
||||
|
**Planning Mode (design_only):** |
||||
|
- ❌ **Forbidden**: Implementation, coding, building, deployment |
||||
|
- ✅ **Allowed**: Analysis, design, estimation, documentation, architecture |
||||
|
- **Response**: Focus on planning and design, not implementation |
||||
|
|
||||
|
**Research Mode (investigation):** |
||||
|
- ❌ **Forbidden**: File modification, implementation, deployment |
||||
|
- ✅ **Allowed**: Investigation, analysis, research, documentation |
||||
|
- **Response**: Focus on investigation and analysis |
||||
|
|
||||
|
**Documentation Mode (writing_only):** |
||||
|
- ❌ **Forbidden**: Implementation, coding, building, deployment |
||||
|
- ✅ **Allowed**: Writing, editing, formatting, structuring, reviewing |
||||
|
- **Response**: Focus on documentation creation and improvement |
||||
|
|
||||
|
### **Constraint Violation Response** |
||||
|
|
||||
|
**If user request violates current mode constraints:** |
||||
|
|
||||
|
``` |
||||
|
❌ **WORKFLOW CONSTRAINT VIOLATION** |
||||
|
|
||||
|
**Current Mode**: [MODE_NAME] |
||||
|
**Requested Action**: [ACTION] |
||||
|
**Constraint Violation**: [DESCRIPTION] |
||||
|
|
||||
|
**What You Can Do Instead**: |
||||
|
- [LIST OF ALLOWED ALTERNATIVES] |
||||
|
|
||||
|
**To Enable This Action**: Invoke @meta_[appropriate_mode].mdc |
||||
|
``` |
||||
|
|
||||
|
### **Mode Transition Guidance** |
||||
|
|
||||
|
**When user needs to change modes, provide clear guidance:** |
||||
|
|
||||
|
``` |
||||
|
🔄 **MODE TRANSITION REQUIRED** |
||||
|
|
||||
|
**Current Mode**: [CURRENT_MODE] |
||||
|
**Required Mode**: [REQUIRED_MODE] |
||||
|
**Action**: Invoke @meta_[required_mode].mdc |
||||
|
|
||||
|
**This will enable**: [DESCRIPTION OF NEW CAPABILITIES] |
||||
|
``` |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
**ALWAYS** - These rules apply to every single prompt, regardless of the task |
||||
|
or context. They form the foundation for all AI assistant behavior. |
||||
|
|
||||
|
## Bundled Rules |
||||
|
|
||||
|
### **Core Human Competence Principles** |
||||
|
|
||||
|
- **`core/base_context.mdc`** - Human competence first principles, interaction |
||||
|
guidelines, and output contract requirements |
||||
|
- **`core/less_complex.mdc`** - Minimalist solution principle and complexity |
||||
|
guidelines |
||||
|
|
||||
|
### **Time & Context Standards** |
||||
|
|
||||
|
- **`development/time.mdc`** - Time handling principles and UTC standards |
||||
|
- **`development/time_examples.mdc`** - Practical time implementation examples |
||||
|
- **`development/time_implementation.mdc`** - Detailed time implementation |
||||
|
guidelines |
||||
|
|
||||
|
### **Version Control & Process** |
||||
|
|
||||
|
- **`workflow/version_control.mdc`** - Version control principles and commit |
||||
|
guidelines |
||||
|
- **`workflow/commit_messages.mdc`** - Commit message format and conventions |
||||
|
|
||||
|
### **Application Context** |
||||
|
|
||||
|
- **`app/timesafari.mdc`** - Core TimeSafari application context and |
||||
|
development principles |
||||
|
- **`app/timesafari_development.mdc`** - TimeSafari-specific development |
||||
|
workflow and quality standards |
||||
|
|
||||
|
## Why These Rules Are Always-On |
||||
|
|
||||
|
### **Base Context** |
||||
|
|
||||
|
- **Human Competence First**: Every interaction must increase human competence |
||||
|
- **Output Contract**: All responses must follow the required structure |
||||
|
- **Competence Hooks**: Learning and collaboration must be built into every response |
||||
|
|
||||
|
### **Time Standards** |
||||
|
|
||||
|
- **UTC Consistency**: All timestamps must use UTC for system operations |
||||
|
- **Evidence Collection**: Time context is essential for debugging and investigation |
||||
|
- **Cross-Platform**: Time handling affects all platforms and features |
||||
|
|
||||
|
### **Version Control** |
||||
|
|
||||
|
- **Commit Standards**: Every code change must follow commit message conventions |
||||
|
- **Process Consistency**: Version control affects all development work |
||||
|
- **Team Collaboration**: Commit standards enable effective team communication |
||||
|
|
||||
|
### **Application Context** |
||||
|
|
||||
|
- **Platform Awareness**: Every task must consider web/mobile/desktop platforms |
||||
|
- **Architecture Principles**: All work must follow TimeSafari patterns |
||||
|
- **Development Standards**: Quality and testing requirements apply to all work |
||||
|
|
||||
|
## Application Priority |
||||
|
|
||||
|
### **Primary (Apply First)** |
||||
|
|
||||
|
1. **Base Context** - Human competence and output contract |
||||
|
2. **Time Standards** - UTC and timestamp requirements |
||||
|
3. **Application Context** - TimeSafari principles and platforms |
||||
|
|
||||
|
### **Secondary (Apply as Needed)** |
||||
|
|
||||
|
1. **Version Control** - When making code changes |
||||
|
2. **Complexity Guidelines** - When evaluating solution approaches |
||||
|
|
||||
|
## Integration with Other Meta-Rules |
||||
|
|
||||
|
### **Feature Planning** |
||||
|
|
||||
|
- Base context ensures human competence focus |
||||
|
- Time standards inform planning and estimation |
||||
|
- Application context drives platform considerations |
||||
|
|
||||
|
### **Bug Diagnosis** |
||||
|
|
||||
|
- Base context ensures systematic investigation |
||||
|
- Time standards enable proper evidence collection |
||||
|
- Application context provides system understanding |
||||
|
|
||||
|
### **Bug Fixing** |
||||
|
|
||||
|
- Base context ensures quality implementation |
||||
|
- Time standards maintain logging consistency |
||||
|
- Application context guides testing strategy |
||||
|
|
||||
|
### **Feature Implementation** |
||||
|
|
||||
|
- Base context ensures proper development approach |
||||
|
- Time standards maintain system consistency |
||||
|
- Application context drives architecture decisions |
||||
|
|
||||
|
## Success Criteria |
||||
|
|
||||
|
- [ ] **Base context applied** to every single prompt |
||||
|
- [ ] **Time standards followed** for all timestamps and logging |
||||
|
- [ ] **Version control standards** applied to all code changes |
||||
|
- [ ] **Application context considered** for all platform work |
||||
|
- [ ] **Human competence focus** maintained in all interactions |
||||
|
- [ ] **Output contract structure** followed in all responses |
||||
|
|
||||
|
## Common Pitfalls |
||||
|
|
||||
|
- **Don't skip base context** - loses human competence focus |
||||
|
- **Don't ignore time standards** - creates inconsistent timestamps |
||||
|
- **Don't forget application context** - misses platform considerations |
||||
|
- **Don't skip version control** - creates inconsistent commit history |
||||
|
- **Don't lose competence focus** - reduces learning value |
||||
|
|
||||
|
## Feedback & Improvement |
||||
|
|
||||
|
### **Rule Effectiveness Ratings (1-5 scale)** |
||||
|
|
||||
|
- **Base Context**: ___/5 - Comments: _______________ |
||||
|
- **Time Standards**: ___/5 - Comments: _______________ |
||||
|
- **Version Control**: ___/5 - Comments: _______________ |
||||
|
- **Application Context**: ___/5 - Comments: _______________ |
||||
|
|
||||
|
### **Always-On Effectiveness** |
||||
|
|
||||
|
- **Consistency**: Are these rules applied consistently across all prompts? |
||||
|
- **Value**: Do these rules add value to every interaction? |
||||
|
- **Overhead**: Are these rules too burdensome for simple tasks? |
||||
|
|
||||
|
### **Integration Feedback** |
||||
|
|
||||
|
- **With Other Meta-Rules**: How well do these integrate with workflow rules? |
||||
|
- **Context Switching**: Do these rules help or hinder context switching? |
||||
|
- **Learning Curve**: Are these rules easy for new users to understand? |
||||
|
|
||||
|
### **Overall Experience** |
||||
|
|
||||
|
- **Quality Improvement**: Do these rules improve response quality? |
||||
|
- **Efficiency**: Do these rules make interactions more efficient? |
||||
|
- **Recommendation**: Would you recommend keeping these always-on? |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Every Prompt |
||||
|
|
||||
|
- [ ] **Base Context**: Ensure human competence principles are active |
||||
|
- [ ] **Time Standards**: Verify UTC and timestamp requirements are clear |
||||
|
- [ ] **Application Context**: Confirm TimeSafari context is loaded |
||||
|
- [ ] **Version Control**: Prepare commit standards if code changes are needed |
||||
|
- [ ] **Workflow State**: Read current mode constraints from state file |
||||
|
- [ ] **Constraint Validation**: Validate user request against current mode |
||||
|
|
||||
|
### During Response Creation |
||||
|
|
||||
|
- [ ] **Output Contract**: Follow required response structure |
||||
|
- [ ] **Competence Hooks**: Include learning and collaboration elements |
||||
|
- [ ] **Time Consistency**: Apply UTC standards for all time references |
||||
|
- [ ] **Platform Awareness**: Consider all target platforms |
||||
|
- [ ] **Mode Enforcement**: Apply current mode constraints to response |
||||
|
- [ ] **Constraint Violations**: Block forbidden actions and guide alternatives |
||||
|
|
||||
|
### After Response Creation |
||||
|
|
||||
|
- [ ] **Validation**: Verify all always-on rules were applied |
||||
|
- [ ] **Quality Check**: Ensure response meets competence standards |
||||
|
- [ ] **Context Review**: Confirm application context was properly considered |
||||
|
- [ ] **Feedback Collection**: Note any issues with always-on application |
||||
|
- [ ] **Mode Compliance**: Verify response stayed within current mode constraints |
||||
|
- [ ] **Transition Guidance**: Provide clear guidance for mode changes if needed |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_feature_planning.mdc` for workflow-specific rules |
||||
|
- `.cursor/rules/meta_bug_diagnosis.mdc` for investigation workflows |
||||
|
- `.cursor/rules/meta_bug_fixing.mdc` for fix implementation |
||||
|
- `.cursor/rules/meta_feature_implementation.mdc` for feature development |
||||
|
|
||||
|
**Status**: Active core always-on meta-rule |
||||
|
**Priority**: Critical (applies to every prompt) |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: All AI interactions, Development team |
||||
|
|
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: All AI interactions, Development team |
||||
|
|
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: All AI interactions, Development team |
@ -0,0 +1,275 @@ |
|||||
|
# Meta-Rule: Documentation Writing & Education |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-21 |
||||
|
**Status**: 🎯 **ACTIVE** - Documentation writing and education workflow |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule bundles documentation-related rules to create comprehensive, |
||||
|
educational documentation that increases human competence rather than just |
||||
|
providing technical descriptions. |
||||
|
|
||||
|
## Workflow Constraints |
||||
|
|
||||
|
**This meta-rule enforces DOCUMENTATION MODE for all bundled sub-rules:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowMode": "documentation", |
||||
|
"constraints": { |
||||
|
"mode": "writing_only", |
||||
|
"allowed": ["write", "edit", "format", "structure", "review"], |
||||
|
"forbidden": ["implement", "code", "build", "deploy"] |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**All bundled sub-rules automatically inherit these constraints.** |
||||
|
|
||||
|
## Workflow State Update |
||||
|
|
||||
|
**When this meta-rule is invoked, update the workflow state file:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"currentMode": "documentation", |
||||
|
"lastInvoked": "meta_documentation.mdc", |
||||
|
"timestamp": "2025-01-27T15:30:00Z", |
||||
|
"constraints": { |
||||
|
"mode": "writing_only", |
||||
|
"allowed": ["write", "edit", "format", "structure", "review"], |
||||
|
"forbidden": ["implement", "code", "build", "deploy"] |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**State File Location**: `.cursor/rules/.workflow_state.json` |
||||
|
|
||||
|
**This enables the core always-on rule to enforce documentation mode constraints.** |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
**Use this meta-rule when**: |
||||
|
- Writing new documentation |
||||
|
- Updating existing documentation |
||||
|
- Creating technical guides |
||||
|
- Writing migration documentation |
||||
|
- Creating architectural documentation |
||||
|
- Writing user guides or tutorials |
||||
|
|
||||
|
## Bundled Rules |
||||
|
|
||||
|
### **Core Documentation Standards** |
||||
|
|
||||
|
- **`docs/markdown_core.mdc`** - Core markdown formatting and automation |
||||
|
- **`docs/markdown_templates.mdc`** - Document templates and structure |
||||
|
- **`docs/markdown_workflow.mdc`** - Documentation validation workflows |
||||
|
|
||||
|
### **Documentation Principles** |
||||
|
|
||||
|
- **`core/base_context.mdc`** - Human competence first principles |
||||
|
- **`core/less_complex.mdc`** - Minimalist solution guidelines |
||||
|
- **`development/software_development.mdc`** - Development documentation standards |
||||
|
|
||||
|
### **Context-Specific Rules** |
||||
|
|
||||
|
- **`app/timesafari.mdc`** - TimeSafari application context |
||||
|
- **`app/timesafari_development.mdc`** - Development documentation patterns |
||||
|
- **`architecture/architectural_patterns.mdc`** - Architecture documentation |
||||
|
|
||||
|
## Core Documentation Philosophy |
||||
|
|
||||
|
### **Education Over Technical Description** |
||||
|
|
||||
|
**Primary Goal**: Increase human competence and understanding |
||||
|
**Secondary Goal**: Provide accurate technical information |
||||
|
**Approach**: Explain the "why" before the "how" |
||||
|
|
||||
|
### **Human Competence Principles** |
||||
|
|
||||
|
1. **Context First**: Explain the problem before the solution |
||||
|
2. **Learning Path**: Structure content for progressive understanding |
||||
|
3. **Real Examples**: Use concrete, relatable examples |
||||
|
4. **Common Pitfalls**: Warn about typical mistakes and misconceptions |
||||
|
5. **Decision Context**: Explain why certain choices were made |
||||
|
|
||||
|
### **Documentation Hierarchy** |
||||
|
|
||||
|
1. **Conceptual Understanding** - What is this and why does it matter? |
||||
|
2. **Context and Motivation** - When and why would you use this? |
||||
|
3. **Technical Implementation** - How do you implement it? |
||||
|
4. **Examples and Patterns** - What does it look like in practice? |
||||
|
5. **Troubleshooting** - What can go wrong and how to fix it? |
||||
|
|
||||
|
## Implementation Guidelines |
||||
|
|
||||
|
### **Document Structure** |
||||
|
|
||||
|
**Mandatory Sections**: |
||||
|
- **Overview**: Clear purpose and scope with educational context |
||||
|
- **Why This Matters**: Business value and user benefit explanation |
||||
|
- **Core Concepts**: Fundamental understanding before implementation |
||||
|
- **Implementation**: Step-by-step technical guidance |
||||
|
- **Examples**: Real-world usage patterns |
||||
|
- **Common Issues**: Troubleshooting and prevention |
||||
|
- **Next Steps**: Where to go from here |
||||
|
|
||||
|
**Optional Sections**: |
||||
|
- **Background**: Historical context and evolution |
||||
|
- **Alternatives**: Other approaches and trade-offs |
||||
|
- **Advanced Topics**: Deep dive into complex scenarios |
||||
|
- **References**: Additional learning resources |
||||
|
|
||||
|
### **Writing Style** |
||||
|
|
||||
|
**Educational Approach**: |
||||
|
- **Conversational tone**: Write as if explaining to a colleague |
||||
|
- **Progressive disclosure**: Start simple, add complexity gradually |
||||
|
- **Active voice**: "You can do this" not "This can be done" |
||||
|
- **Question format**: "What happens when..." to engage thinking |
||||
|
- **Analogies**: Use familiar concepts to explain complex ideas |
||||
|
|
||||
|
**Technical Accuracy**: |
||||
|
- **Precise language**: Use exact technical terms consistently |
||||
|
- **Code examples**: Working, tested code snippets |
||||
|
- **Version information**: Specify applicable versions and platforms |
||||
|
- **Limitations**: Clearly state what the solution doesn't do |
||||
|
|
||||
|
### **Content Quality Standards** |
||||
|
|
||||
|
**Educational Value**: |
||||
|
- [ ] **Concept clarity**: Reader understands the fundamental idea |
||||
|
- [ ] **Context relevance**: Reader knows when to apply the knowledge |
||||
|
- [ ] **Practical application**: Reader can implement the solution |
||||
|
- [ ] **Problem prevention**: Reader avoids common mistakes |
||||
|
- [ ] **Next steps**: Reader knows where to continue learning |
||||
|
|
||||
|
**Technical Accuracy**: |
||||
|
- [ ] **Fact verification**: All technical details are correct |
||||
|
- [ ] **Code validation**: Examples compile and run correctly |
||||
|
- [ ] **Version compatibility**: Platform and version requirements clear |
||||
|
- [ ] **Security consideration**: Security implications addressed |
||||
|
- [ ] **Performance notes**: Performance characteristics documented |
||||
|
|
||||
|
## Document Types and Templates |
||||
|
|
||||
|
### **Technical Guides** |
||||
|
|
||||
|
**Focus**: Implementation and technical details |
||||
|
**Structure**: Problem → Solution → Implementation → Examples |
||||
|
**Education**: Explain the "why" behind technical choices |
||||
|
|
||||
|
### **Migration Documentation** |
||||
|
|
||||
|
**Focus**: Process and workflow guidance |
||||
|
**Structure**: Context → Preparation → Steps → Validation → Troubleshooting |
||||
|
**Education**: Help users understand migration benefits and risks |
||||
|
|
||||
|
### **Architecture Documentation** |
||||
|
|
||||
|
**Focus**: System design and decision rationale |
||||
|
**Structure**: Problem → Constraints → Alternatives → Decision → Implementation |
||||
|
**Education**: Explain design trade-offs and decision factors |
||||
|
|
||||
|
### **User Guides** |
||||
|
|
||||
|
**Focus**: Task completion and user empowerment |
||||
|
**Structure**: Goal → Prerequisites → Steps → Verification → Next Steps |
||||
|
**Education**: Help users understand the system's capabilities |
||||
|
|
||||
|
## Quality Assurance |
||||
|
|
||||
|
### **Review Checklist** |
||||
|
|
||||
|
**Educational Quality**: |
||||
|
- [ ] **Clear learning objective**: What will the reader learn? |
||||
|
- [ ] **Appropriate complexity**: Matches target audience knowledge |
||||
|
- [ ] **Progressive disclosure**: Information builds logically |
||||
|
- [ ] **Practical examples**: Real-world scenarios and use cases |
||||
|
- [ ] **Common questions**: Anticipates and answers reader questions |
||||
|
|
||||
|
**Technical Quality**: |
||||
|
- [ ] **Accuracy**: All technical details verified |
||||
|
- [ ] **Completeness**: Covers all necessary information |
||||
|
- [ ] **Consistency**: Terminology and formatting consistent |
||||
|
- [ ] **Currency**: Information is up-to-date |
||||
|
- [ ] **Accessibility**: Clear for target audience |
||||
|
|
||||
|
### **Validation Workflows** |
||||
|
|
||||
|
1. **Content Review**: Subject matter expert review |
||||
|
2. **Educational Review**: Learning effectiveness assessment |
||||
|
3. **Technical Review**: Accuracy and completeness validation |
||||
|
4. **User Testing**: Real user comprehension testing |
||||
|
5. **Continuous Improvement**: Regular updates based on feedback |
||||
|
|
||||
|
## Success Metrics |
||||
|
|
||||
|
### **Educational Effectiveness** |
||||
|
|
||||
|
- **Comprehension**: Users understand the concepts |
||||
|
- **Application**: Users can implement the solutions |
||||
|
- **Confidence**: Users feel capable and empowered |
||||
|
- **Efficiency**: Users complete tasks faster |
||||
|
- **Satisfaction**: Users find documentation helpful |
||||
|
|
||||
|
### **Technical Quality** |
||||
|
|
||||
|
- **Accuracy**: Zero technical errors |
||||
|
- **Completeness**: All necessary information included |
||||
|
- **Consistency**: Uniform style and format |
||||
|
- **Maintainability**: Easy to update and extend |
||||
|
- **Accessibility**: Clear for target audience |
||||
|
|
||||
|
## Common Pitfalls |
||||
|
|
||||
|
### **Educational Mistakes** |
||||
|
|
||||
|
- **Assumption overload**: Assuming too much prior knowledge |
||||
|
- **Information dump**: Overwhelming with details |
||||
|
- **Context missing**: Not explaining why something matters |
||||
|
- **Example poverty**: Insufficient practical examples |
||||
|
- **Feedback missing**: No way to verify understanding |
||||
|
|
||||
|
### **Technical Mistakes** |
||||
|
|
||||
|
- **Outdated information**: Not keeping content current |
||||
|
- **Incomplete coverage**: Missing important details |
||||
|
- **Inconsistent terminology**: Using different terms for same concepts |
||||
|
- **Poor examples**: Non-working or confusing code |
||||
|
- **Missing validation**: No way to verify correctness |
||||
|
|
||||
|
## Feedback and Improvement |
||||
|
|
||||
|
### **Continuous Learning** |
||||
|
|
||||
|
- **User feedback**: Collect and analyze user comments |
||||
|
- **Usage metrics**: Track document usage and effectiveness |
||||
|
- **Review cycles**: Regular content review and updates |
||||
|
- **Community input**: Engage users in documentation improvement |
||||
|
- **Best practices**: Stay current with documentation standards |
||||
|
|
||||
|
### **Quality Metrics** |
||||
|
|
||||
|
- **Readability scores**: Measure content clarity |
||||
|
- **User satisfaction**: Survey-based quality assessment |
||||
|
- **Task completion**: Success rate of documented procedures |
||||
|
- **Support reduction**: Decrease in help requests |
||||
|
- **Knowledge retention**: Long-term user understanding |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/docs/markdown_core.mdc` for core formatting standards |
||||
|
- `.cursor/rules/docs/markdown_templates.mdc` for document templates |
||||
|
- `.cursor/rules/docs/markdown_workflow.mdc` for validation workflows |
||||
|
- `.cursor/rules/docs/meta_rule_usage_guide.md` for how to use meta-rules |
||||
|
- `.cursor/rules/core/base_context.mdc` for human competence principles |
||||
|
|
||||
|
**Status**: Active documentation meta-rule |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: Documentation team, Development team, Users |
@ -0,0 +1,226 @@ |
|||||
|
# Meta-Rule: Feature Implementation |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-21 |
||||
|
**Status**: 🎯 **ACTIVE** - Feature implementation workflow bundling |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule bundles all the rules needed for building features with |
||||
|
proper architecture and cross-platform support. Use this when implementing |
||||
|
planned features or refactoring existing code. |
||||
|
|
||||
|
## Workflow Constraints |
||||
|
|
||||
|
**This meta-rule enforces IMPLEMENTATION MODE for all bundled sub-rules:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowMode": "implementation", |
||||
|
"constraints": { |
||||
|
"mode": "development", |
||||
|
"allowed": ["code", "build", "test", "refactor", "deploy"], |
||||
|
"required": "planning_complete_before_implementation" |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**All bundled sub-rules automatically inherit these constraints.** |
||||
|
|
||||
|
## Workflow State Update |
||||
|
|
||||
|
**When this meta-rule is invoked, update the workflow state file:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"currentMode": "implementation", |
||||
|
"lastInvoked": "meta_feature_implementation.mdc", |
||||
|
"timestamp": "2025-01-27T15:30:00Z", |
||||
|
"constraints": { |
||||
|
"mode": "development", |
||||
|
"allowed": ["code", "build", "test", "refactor", "deploy"], |
||||
|
"forbidden": [], |
||||
|
"required": "planning_complete_before_implementation" |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**State File Location**: `.cursor/rules/.workflow_state.json` |
||||
|
|
||||
|
**This enables the core always-on rule to enforce implementation mode constraints.** |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
- **Feature Development**: Building new features from planning |
||||
|
- **Code Refactoring**: Restructuring existing code for better architecture |
||||
|
- **Platform Expansion**: Adding features to new platforms |
||||
|
- **Service Implementation**: Building new services or components |
||||
|
- **Integration Work**: Connecting features with existing systems |
||||
|
- **Performance Optimization**: Improving feature performance |
||||
|
|
||||
|
## Bundled Rules |
||||
|
|
||||
|
### **Development Foundation** |
||||
|
|
||||
|
- **`app/timesafari_development.mdc`** - TimeSafari-specific |
||||
|
development workflow and quality standards |
||||
|
- **`development/software_development.mdc`** - Core development |
||||
|
principles and evidence requirements |
||||
|
- **`development/type_safety_guide.mdc`** - Type-safe implementation |
||||
|
with proper error handling |
||||
|
|
||||
|
### **Architecture & Patterns** |
||||
|
|
||||
|
- **`app/architectural_patterns.mdc`** - Design patterns and |
||||
|
architectural examples for features |
||||
|
- **`app/architectural_examples.mdc`** - Implementation examples |
||||
|
and testing strategies |
||||
|
- **`app/architectural_implementation.mdc`** - Implementation |
||||
|
guidelines and best practices |
||||
|
|
||||
|
### **Platform & Services** |
||||
|
|
||||
|
- **`app/timesafari_platforms.mdc`** - Platform abstraction |
||||
|
patterns and platform-specific requirements |
||||
|
- **`development/asset_configuration.mdc`** - Asset management |
||||
|
and build integration |
||||
|
- **`development/logging_standards.mdc`** - Proper logging |
||||
|
implementation standards |
||||
|
|
||||
|
### **Quality & Validation** |
||||
|
|
||||
|
- **`architecture/build_validation.mdc`** - Build system |
||||
|
validation and testing procedures |
||||
|
- **`architecture/build_testing.mdc`** - Testing requirements |
||||
|
and feedback collection |
||||
|
- **`development/complexity_assessment.mdc`** - Complexity |
||||
|
evaluation for implementation |
||||
|
|
||||
|
## Workflow Sequence |
||||
|
|
||||
|
### **Phase 1: Implementation Foundation (Start Here)** |
||||
|
|
||||
|
1. **Development Workflow** - Use `timesafari_development.mdc` for |
||||
|
development standards and workflow |
||||
|
2. **Type Safety** - Apply `type_safety_guide.mdc` for type-safe |
||||
|
implementation |
||||
|
3. **Architecture Patterns** - Use `architectural_patterns.mdc` for |
||||
|
design patterns |
||||
|
|
||||
|
### **Phase 2: Feature Development** |
||||
|
|
||||
|
1. **Platform Services** - Apply `timesafari_platforms.mdc` for |
||||
|
platform abstraction |
||||
|
2. **Implementation Examples** - Use `architectural_examples.mdc` |
||||
|
for implementation guidance |
||||
|
3. **Asset Configuration** - Apply `asset_configuration.mdc` for |
||||
|
asset management |
||||
|
|
||||
|
### **Phase 3: Quality & Testing** |
||||
|
|
||||
|
1. **Logging Implementation** - Use `logging_standards.mdc` for |
||||
|
proper logging |
||||
|
2. **Build Validation** - Apply `build_validation.mdc` for build |
||||
|
system compliance |
||||
|
3. **Testing & Feedback** - Use `build_testing.mdc` for testing |
||||
|
requirements |
||||
|
|
||||
|
## Success Criteria |
||||
|
|
||||
|
- [ ] **Feature implemented** following development standards |
||||
|
- [ ] **Type safety maintained** with proper error handling |
||||
|
- [ ] **Architecture patterns applied** consistently |
||||
|
- [ ] **Platform abstraction implemented** correctly |
||||
|
- [ ] **Logging properly implemented** with component context |
||||
|
- [ ] **Assets configured** and integrated with build system |
||||
|
- [ ] **Build validation passed** with no build system issues |
||||
|
- [ ] **Testing completed** across all target platforms |
||||
|
- [ ] **Code review completed** with all feedback addressed |
||||
|
|
||||
|
## Common Pitfalls |
||||
|
|
||||
|
- **Don't skip architecture patterns** - leads to inconsistent design |
||||
|
- **Don't ignore platform abstraction** - creates platform-specific code |
||||
|
- **Don't skip type safety** - leads to runtime errors |
||||
|
- **Don't ignore logging** - makes future debugging harder |
||||
|
- **Don't skip build validation** - can break build system |
||||
|
- **Don't forget asset configuration** - leads to missing assets |
||||
|
|
||||
|
## Integration Points |
||||
|
|
||||
|
### **With Other Meta-Rules** |
||||
|
|
||||
|
- **Feature Planning**: Planning outputs drive implementation approach |
||||
|
- **Bug Fixing**: Implementation patterns inform fix strategies |
||||
|
- **Bug Diagnosis**: Implementation insights help with investigation |
||||
|
|
||||
|
### **With Development Workflow** |
||||
|
|
||||
|
- Implementation follows development standards |
||||
|
- Architecture decisions drive implementation approach |
||||
|
- Platform requirements inform testing strategy |
||||
|
|
||||
|
## Feedback & Improvement |
||||
|
|
||||
|
### **Sub-Rule Ratings (1-5 scale)** |
||||
|
|
||||
|
- **Development Workflow**: ___/5 - Comments: _______________ |
||||
|
- **Type Safety**: ___/5 - Comments: _______________ |
||||
|
- **Architecture Patterns**: ___/5 - Comments: _______________ |
||||
|
- **Platform Services**: ___/5 - Comments: _______________ |
||||
|
- **Build Validation**: ___/5 - Comments: _______________ |
||||
|
|
||||
|
### **Workflow Feedback** |
||||
|
|
||||
|
- **Implementation Clarity**: How clear was the implementation guidance? |
||||
|
- **Pattern Effectiveness**: How well did architecture patterns work? |
||||
|
- **Platform Coverage**: How well did platform guidance cover your needs? |
||||
|
|
||||
|
### **Sub-Rule Improvements** |
||||
|
|
||||
|
- **Clarity Issues**: Which rules were unclear or confusing? |
||||
|
- **Missing Examples**: What examples would make rules more useful? |
||||
|
- **Integration Problems**: Do any rules conflict or overlap? |
||||
|
|
||||
|
### **Overall Experience** |
||||
|
|
||||
|
- **Time Saved**: How much time did this meta-rule save you? |
||||
|
- **Quality Improvement**: Did following these rules improve your implementation? |
||||
|
- **Recommendation**: Would you recommend this meta-rule to others? |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Feature Implementation |
||||
|
|
||||
|
- [ ] **Planning Review**: Review feature planning and requirements |
||||
|
- [ ] **Architecture Planning**: Plan architecture and design patterns |
||||
|
- [ ] **Platform Analysis**: Understand platform-specific requirements |
||||
|
- [ ] **Testing Strategy**: Plan testing approach for the feature |
||||
|
|
||||
|
### During Feature Implementation |
||||
|
|
||||
|
- [ ] **Rule Application**: Apply bundled rules in recommended sequence |
||||
|
- [ ] **Implementation**: Implement feature following development standards |
||||
|
- [ ] **Testing**: Test feature across all target platforms |
||||
|
- [ ] **Documentation**: Document implementation details and decisions |
||||
|
|
||||
|
### After Feature Implementation |
||||
|
|
||||
|
- [ ] **Validation**: Verify feature meets all success criteria |
||||
|
- [ ] **Code Review**: Complete code review with team |
||||
|
- [ ] **Testing**: Complete comprehensive testing across platforms |
||||
|
- [ ] **Feedback Collection**: Collect feedback on meta-rule effectiveness |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_feature_planning.mdc` for planning workflow |
||||
|
- `.cursor/rules/meta_bug_fixing.mdc` for fix implementation patterns |
||||
|
- `.cursor/rules/meta_bug_diagnosis.mdc` for investigation insights |
||||
|
|
||||
|
**Status**: Active meta-rule for feature implementation |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: Development team, Architecture team, QA team |
@ -0,0 +1,203 @@ |
|||||
|
# Meta-Rule: Feature Planning |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-08-21 |
||||
|
**Status**: 🎯 **ACTIVE** - Feature planning workflow bundling |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule bundles all the rules needed for comprehensive feature planning |
||||
|
across all platforms. Use this when starting any new feature development, |
||||
|
planning sprints, or estimating work effort. |
||||
|
|
||||
|
## Workflow Constraints |
||||
|
|
||||
|
**This meta-rule enforces PLANNING MODE for all bundled sub-rules:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowMode": "planning", |
||||
|
"constraints": { |
||||
|
"mode": "design_only", |
||||
|
"allowed": ["analyze", "plan", "design", "estimate", "document"], |
||||
|
"forbidden": ["implement", "code", "build", "test", "deploy"] |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**All bundled sub-rules automatically inherit these constraints.** |
||||
|
|
||||
|
## Workflow State Update |
||||
|
|
||||
|
**When this meta-rule is invoked, update the workflow state file:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"currentMode": "planning", |
||||
|
"lastInvoked": "meta_feature_planning.mdc", |
||||
|
"timestamp": "2025-01-27T15:30:00Z", |
||||
|
"constraints": { |
||||
|
"mode": "design_only", |
||||
|
"allowed": ["analyze", "plan", "design", "estimate", "document"], |
||||
|
"forbidden": ["implement", "code", "build", "test", "deploy"] |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**State File Location**: `.cursor/rules/.workflow_state.json` |
||||
|
|
||||
|
**This enables the core always-on rule to enforce planning mode constraints.** |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
- **New Feature Development**: Planning features from concept to implementation |
||||
|
- **Sprint Planning**: Estimating effort and breaking down work |
||||
|
- **Architecture Decisions**: Planning major architectural changes |
||||
|
- **Platform Expansion**: Adding features to new platforms |
||||
|
- **Refactoring Planning**: Planning significant code restructuring |
||||
|
|
||||
|
## Bundled Rules |
||||
|
|
||||
|
### **Core Planning Foundation** |
||||
|
|
||||
|
- **`development/planning_examples.mdc`** - Planning templates, examples, and |
||||
|
best practices for structured planning |
||||
|
- **`development/realistic_time_estimation.mdc`** - Time estimation framework |
||||
|
with complexity-based phases and milestones |
||||
|
- **`development/complexity_assessment.mdc`** - Technical and business |
||||
|
complexity evaluation with risk assessment |
||||
|
|
||||
|
### **Platform & Architecture** |
||||
|
|
||||
|
- **`app/timesafari_platforms.mdc`** - Platform-specific requirements, |
||||
|
constraints, and capabilities across web/mobile/desktop |
||||
|
- **`app/architectural_decision_record.mdc`** - ADR process for documenting |
||||
|
major architectural decisions and trade-offs |
||||
|
|
||||
|
### **Development Context** |
||||
|
|
||||
|
- **`app/timesafari.mdc`** - Core application context, principles, and |
||||
|
development focus areas |
||||
|
- **`app/timesafari_development.mdc`** - TimeSafari-specific development |
||||
|
workflow and quality standards |
||||
|
|
||||
|
## Workflow Sequence |
||||
|
|
||||
|
### **Phase 1: Foundation (Start Here)** |
||||
|
|
||||
|
1. **Complexity Assessment** - Use `complexity_assessment.mdc` to evaluate |
||||
|
technical and business complexity |
||||
|
2. **Time Estimation** - Apply `realistic_time_estimation.mdc` framework |
||||
|
based on complexity results |
||||
|
3. **Core Planning** - Use `planning_examples.mdc` for structured planning |
||||
|
approach |
||||
|
|
||||
|
### **Phase 2: Platform & Architecture** |
||||
|
|
||||
|
1. **Platform Analysis** - Review `timesafari_platforms.mdc` for |
||||
|
platform-specific requirements |
||||
|
2. **Architecture Planning** - Use `architectural_decision_record.mdc` if |
||||
|
major architectural changes are needed |
||||
|
|
||||
|
### **Phase 3: Implementation Planning** |
||||
|
|
||||
|
1. **Development Workflow** - Reference `timesafari_development.mdc` for |
||||
|
development standards and testing strategy |
||||
|
2. **Final Planning** - Consolidate all inputs into comprehensive plan |
||||
|
|
||||
|
## Success Criteria |
||||
|
|
||||
|
- [ ] **Complexity assessed** and documented with risk factors |
||||
|
- [ ] **Time estimate created** with clear phases and milestones |
||||
|
- [ ] **Platform requirements identified** for all target platforms |
||||
|
- [ ] **Architecture decisions documented** (if major changes needed) |
||||
|
- [ ] **Testing strategy planned** with platform-specific considerations |
||||
|
- [ ] **Dependencies mapped** between tasks and phases |
||||
|
- [ ] **Stakeholder input gathered** and incorporated |
||||
|
|
||||
|
## Common Pitfalls |
||||
|
|
||||
|
- **Don't skip complexity assessment** - leads to unrealistic estimates |
||||
|
- **Don't estimate without platform analysis** - misses platform-specific work |
||||
|
- **Don't plan without stakeholder input** - creates misaligned expectations |
||||
|
- **Don't ignore testing strategy** - leads to incomplete planning |
||||
|
- **Don't skip architecture decisions** - creates technical debt |
||||
|
|
||||
|
## Integration Points |
||||
|
|
||||
|
### **With Other Meta-Rules** |
||||
|
|
||||
|
- **Bug Diagnosis**: Use complexity assessment for bug investigation planning |
||||
|
- **Feature Implementation**: This planning feeds directly into implementation |
||||
|
- **Code Review**: Planning standards inform review requirements |
||||
|
|
||||
|
### **With Development Workflow** |
||||
|
|
||||
|
- Planning outputs become inputs for sprint planning |
||||
|
- Complexity assessment informs testing strategy |
||||
|
- Platform requirements drive architecture decisions |
||||
|
|
||||
|
## Feedback & Improvement |
||||
|
|
||||
|
### **Sub-Rule Ratings (1-5 scale)** |
||||
|
|
||||
|
- **Complexity Assessment**: ___/5 - Comments: _______________ |
||||
|
- **Time Estimation**: ___/5 - Comments: _______________ |
||||
|
- **Planning Examples**: ___/5 - Comments: _______________ |
||||
|
- **Platform Analysis**: ___/5 - Comments: _______________ |
||||
|
- **Architecture Decisions**: ___/5 - Comments: _______________ |
||||
|
|
||||
|
### **Workflow Feedback** |
||||
|
|
||||
|
- **Sequence Effectiveness**: Did the recommended order work for you? |
||||
|
- **Missing Guidance**: What additional information would have helped? |
||||
|
- **Process Gaps**: Where did the workflow break down? |
||||
|
|
||||
|
### **Sub-Rule Improvements** |
||||
|
|
||||
|
- **Clarity Issues**: Which rules were unclear or confusing? |
||||
|
- **Missing Examples**: What examples would make rules more useful? |
||||
|
- **Integration Problems**: Do any rules conflict or overlap? |
||||
|
|
||||
|
### **Overall Experience** |
||||
|
|
||||
|
- **Time Saved**: How much time did this meta-rule save you? |
||||
|
- **Quality Improvement**: Did following these rules improve your planning? |
||||
|
- **Recommendation**: Would you recommend this meta-rule to others? |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Feature Planning |
||||
|
|
||||
|
- [ ] **Scope Definition**: Clearly define the feature scope and boundaries |
||||
|
- [ ] **Stakeholder Identification**: Identify all stakeholders and decision makers |
||||
|
- [ ] **Platform Requirements**: Understand target platforms and constraints |
||||
|
- [ ] **Complexity Assessment**: Plan complexity evaluation approach |
||||
|
|
||||
|
### During Feature Planning |
||||
|
|
||||
|
- [ ] **Rule Application**: Apply bundled rules in recommended sequence |
||||
|
- [ ] **Documentation**: Document all planning decisions and rationale |
||||
|
- [ ] **Stakeholder Input**: Gather and incorporate stakeholder feedback |
||||
|
- [ ] **Validation**: Validate planning against success criteria |
||||
|
|
||||
|
### After Feature Planning |
||||
|
|
||||
|
- [ ] **Plan Review**: Review plan with stakeholders and team |
||||
|
- [ ] **Feedback Collection**: Collect feedback on meta-rule effectiveness |
||||
|
- [ ] **Documentation Update**: Update relevant documentation |
||||
|
- [ ] **Process Improvement**: Identify improvements for future planning |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_bug_diagnosis.mdc` for investigation planning |
||||
|
- `.cursor/rules/meta_feature_implementation.mdc` for implementation workflow |
||||
|
- `.cursor/rules/meta_bug_fixing.mdc` for fix implementation |
||||
|
|
||||
|
**Status**: Active meta-rule for feature planning |
||||
|
**Priority**: High |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: Development team, Product team, Architecture team |
@ -0,0 +1,285 @@ |
|||||
|
# Meta-Rule: Enhanced Research Workflows |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-01-27 |
||||
|
**Status**: 🎯 **ACTIVE** - Research and investigation workflows |
||||
|
|
||||
|
## Purpose |
||||
|
|
||||
|
This meta-rule bundles research-specific rules that should be applied when conducting |
||||
|
systematic investigation, analysis, evidence collection, or research tasks. It provides |
||||
|
a comprehensive framework for thorough, methodical research workflows that produce |
||||
|
actionable insights and evidence-based conclusions. |
||||
|
|
||||
|
## Workflow Constraints |
||||
|
|
||||
|
**This meta-rule enforces RESEARCH MODE for all bundled sub-rules:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"workflowMode": "research", |
||||
|
"constraints": { |
||||
|
"mode": "investigation", |
||||
|
"allowed": ["read", "search", "analyze", "plan"], |
||||
|
"forbidden": ["modify", "create", "build", "commit"] |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**All bundled sub-rules automatically inherit these constraints.** |
||||
|
|
||||
|
## Workflow State Update |
||||
|
|
||||
|
**When this meta-rule is invoked, update the workflow state file:** |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"currentMode": "research", |
||||
|
"lastInvoked": "meta_research.mdc", |
||||
|
"timestamp": "2025-01-27T15:30:00Z", |
||||
|
"constraints": { |
||||
|
"mode": "investigation", |
||||
|
"allowed": ["read", "search", "analyze", "plan"], |
||||
|
"forbidden": ["modify", "create", "build", "commit"] |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
**State File Location**: `.cursor/rules/.workflow_state.json` |
||||
|
|
||||
|
**This enables the core always-on rule to enforce research mode constraints.** |
||||
|
|
||||
|
## When to Use |
||||
|
|
||||
|
**RESEARCH TASKS** - Apply this meta-rule when: |
||||
|
|
||||
|
- Investigating bugs, defects, or system issues |
||||
|
- Conducting technical research or feasibility analysis |
||||
|
- Analyzing codebases, architectures, or dependencies |
||||
|
- Researching solutions, alternatives, or best practices |
||||
|
- Collecting evidence for decision-making or documentation |
||||
|
- Performing root cause analysis or impact assessment |
||||
|
|
||||
|
## Bundled Rules |
||||
|
|
||||
|
### **Core Research Principles** |
||||
|
|
||||
|
- **`development/research_diagnostic.mdc`** - Systematic investigation workflow |
||||
|
and evidence collection methodology |
||||
|
- **`development/type_safety_guide.mdc`** - Type analysis and safety research |
||||
|
for TypeScript/JavaScript codebases |
||||
|
|
||||
|
### **Investigation & Analysis** |
||||
|
|
||||
|
- **`workflow/version_control.mdc`** - Git history analysis and commit research |
||||
|
- **`workflow/commit_messages.mdc`** - Commit pattern analysis and history |
||||
|
investigation |
||||
|
|
||||
|
### **Platform & Context Research** |
||||
|
|
||||
|
- **`app/timesafari.mdc`** - Application context research and platform |
||||
|
understanding |
||||
|
- **`app/timesafari_platforms.mdc`** - Platform-specific research and |
||||
|
capability analysis |
||||
|
|
||||
|
## Why These Rules Are Research-Focused |
||||
|
|
||||
|
### **Research Diagnostic** |
||||
|
|
||||
|
- **Systematic Approach**: Provides structured investigation methodology |
||||
|
- **Evidence Collection**: Ensures thorough data gathering and documentation |
||||
|
- **Root Cause Analysis**: Guides systematic problem investigation |
||||
|
- **Impact Assessment**: Helps evaluate scope and consequences |
||||
|
|
||||
|
### **Type Safety Research** |
||||
|
|
||||
|
- **Code Analysis**: Enables systematic type system investigation |
||||
|
- **Safety Assessment**: Guides research into type-related issues |
||||
|
- **Migration Planning**: Supports research for architectural changes |
||||
|
|
||||
|
### **Version Control Research** |
||||
|
|
||||
|
- **History Analysis**: Enables investigation of code evolution |
||||
|
- **Pattern Recognition**: Helps identify commit and change patterns |
||||
|
- **Timeline Research**: Supports chronological investigation |
||||
|
|
||||
|
### **Platform Research** |
||||
|
|
||||
|
- **Capability Analysis**: Guides research into platform-specific features |
||||
|
- **Context Understanding**: Ensures research considers application context |
||||
|
- **Cross-Platform Research**: Supports multi-platform investigation |
||||
|
|
||||
|
## Application Priority |
||||
|
|
||||
|
### **Primary (Apply First)** |
||||
|
|
||||
|
1. **Research Diagnostic** - Systematic investigation methodology |
||||
|
2. **Type Safety Guide** - Code analysis and type research |
||||
|
3. **Application Context** - Platform and context understanding |
||||
|
|
||||
|
### **Secondary (Apply as Needed)** |
||||
|
|
||||
|
1. **Version Control** - When investigating code history |
||||
|
2. **Platform Details** - When researching platform-specific capabilities |
||||
|
|
||||
|
## Integration with Other Meta-Rules |
||||
|
|
||||
|
### **Bug Diagnosis** |
||||
|
|
||||
|
- Research meta-rule provides investigation methodology |
||||
|
- Core always-on ensures systematic approach |
||||
|
- Application context provides system understanding |
||||
|
|
||||
|
### **Feature Planning** |
||||
|
|
||||
|
- Research meta-rule guides feasibility research |
||||
|
- Core always-on ensures competence focus |
||||
|
- Application context drives platform considerations |
||||
|
|
||||
|
### **Architecture Analysis** |
||||
|
|
||||
|
- Research meta-rule provides systematic analysis framework |
||||
|
- Core always-on ensures quality standards |
||||
|
- Application context informs architectural decisions |
||||
|
|
||||
|
### **Performance Investigation** |
||||
|
|
||||
|
- Research meta-rule guides systematic performance research |
||||
|
- Core always-on ensures thorough investigation |
||||
|
- Application context provides performance context |
||||
|
|
||||
|
## Research Workflow Phases |
||||
|
|
||||
|
### **Phase 1: Investigation Setup** |
||||
|
|
||||
|
1. **Scope Definition** - Define research boundaries and objectives |
||||
|
2. **Context Gathering** - Collect relevant application and platform context |
||||
|
3. **Methodology Selection** - Choose appropriate research approaches |
||||
|
|
||||
|
### **Phase 2: Evidence Collection** |
||||
|
|
||||
|
1. **Systematic Data Gathering** - Collect evidence using structured methods |
||||
|
2. **Documentation** - Record all findings and observations |
||||
|
3. **Validation** - Verify evidence accuracy and relevance |
||||
|
|
||||
|
### **Phase 3: Analysis & Synthesis** |
||||
|
|
||||
|
1. **Pattern Recognition** - Identify trends and patterns in evidence |
||||
|
2. **Root Cause Analysis** - Determine underlying causes and factors |
||||
|
3. **Impact Assessment** - Evaluate scope and consequences |
||||
|
|
||||
|
### **Phase 4: Conclusion & Action** |
||||
|
|
||||
|
1. **Evidence-Based Conclusions** - Draw conclusions from collected evidence |
||||
|
2. **Actionable Recommendations** - Provide specific, implementable guidance |
||||
|
3. **Documentation** - Create comprehensive research documentation |
||||
|
|
||||
|
## Success Criteria |
||||
|
|
||||
|
- [ ] **Research diagnostic applied** to all investigation tasks |
||||
|
- [ ] **Type safety research** conducted for code analysis |
||||
|
- [ ] **Evidence collection** systematic and comprehensive |
||||
|
- [ ] **Root cause analysis** thorough and accurate |
||||
|
- [ ] **Conclusions actionable** and evidence-based |
||||
|
- [ ] **Documentation complete** and searchable |
||||
|
|
||||
|
## Common Research Pitfalls |
||||
|
|
||||
|
- **Don't skip systematic approach** - leads to incomplete investigation |
||||
|
- **Don't ignore evidence validation** - creates unreliable conclusions |
||||
|
- **Don't forget context** - misses important factors |
||||
|
- **Don't skip documentation** - loses research value |
||||
|
- **Don't rush conclusions** - produces poor recommendations |
||||
|
|
||||
|
## Research Quality Standards |
||||
|
|
||||
|
### **Evidence Quality** |
||||
|
|
||||
|
- **Completeness**: All relevant evidence collected |
||||
|
- **Accuracy**: Evidence verified and validated |
||||
|
- **Relevance**: Evidence directly addresses research questions |
||||
|
- **Timeliness**: Evidence current and up-to-date |
||||
|
|
||||
|
### **Analysis Quality** |
||||
|
|
||||
|
- **Systematic**: Analysis follows structured methodology |
||||
|
- **Objective**: Analysis free from bias and assumptions |
||||
|
- **Thorough**: All evidence considered and evaluated |
||||
|
- **Logical**: Conclusions follow from evidence |
||||
|
|
||||
|
### **Documentation Quality** |
||||
|
|
||||
|
- **Comprehensive**: All findings and methods documented |
||||
|
- **Searchable**: Documentation easily findable and navigable |
||||
|
- **Actionable**: Recommendations specific and implementable |
||||
|
- **Maintainable**: Documentation structure supports updates |
||||
|
|
||||
|
## Feedback & Improvement |
||||
|
|
||||
|
### **Rule Effectiveness Ratings (1-5 scale)** |
||||
|
|
||||
|
- **Research Diagnostic**: ___/5 - Comments: _______________ |
||||
|
- **Type Safety Guide**: ___/5 - Comments: _______________ |
||||
|
- **Version Control**: ___/5 - Comments: _______________ |
||||
|
- **Platform Context**: ___/5 - Comments: _______________ |
||||
|
|
||||
|
### **Research Workflow Effectiveness** |
||||
|
|
||||
|
- **Investigation Quality**: Are research tasks producing thorough results? |
||||
|
- **Evidence Collection**: Is evidence gathering systematic and complete? |
||||
|
- **Conclusion Quality**: Are conclusions actionable and evidence-based? |
||||
|
- **Documentation Value**: Is research documentation useful and maintainable? |
||||
|
|
||||
|
### **Integration Feedback** |
||||
|
|
||||
|
- **With Other Meta-Rules**: How well does this integrate with workflow rules? |
||||
|
- **Context Switching**: Do these rules help or hinder research context? |
||||
|
- **Learning Curve**: Are these rules easy for new researchers to understand? |
||||
|
|
||||
|
### **Overall Research Experience** |
||||
|
|
||||
|
- **Quality Improvement**: Do these rules improve research outcomes? |
||||
|
- **Efficiency**: Do these rules make research more efficient? |
||||
|
- **Recommendation**: Would you recommend keeping this research meta-rule? |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before Research Tasks |
||||
|
|
||||
|
- [ ] **Research Diagnostic**: Ensure systematic investigation methodology |
||||
|
- [ ] **Type Safety Guide**: Prepare for code analysis if needed |
||||
|
- [ ] **Application Context**: Load relevant platform and context information |
||||
|
- [ ] **Version Control**: Prepare for history analysis if needed |
||||
|
|
||||
|
### During Research Execution |
||||
|
|
||||
|
- [ ] **Systematic Approach**: Follow structured investigation methodology |
||||
|
- [ ] **Evidence Collection**: Gather comprehensive and validated evidence |
||||
|
- [ ] **Documentation**: Record all findings and observations |
||||
|
- [ ] **Context Awareness**: Consider application and platform context |
||||
|
|
||||
|
### After Research Completion |
||||
|
|
||||
|
- [ ] **Validation**: Verify all research phases completed |
||||
|
- [ ] **Quality Check**: Ensure research meets quality standards |
||||
|
- [ ] **Documentation Review**: Confirm research properly documented |
||||
|
- [ ] **Feedback Collection**: Note any issues with research process |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**See also**: |
||||
|
|
||||
|
- `.cursor/rules/meta_core_always_on.mdc` for core always-on rules |
||||
|
- `.cursor/rules/meta_feature_planning.mdc` for feature development workflows |
||||
|
- `.cursor/rules/meta_bug_diagnosis.mdc` for bug investigation workflows |
||||
|
- `.cursor/rules/meta_bug_fixing.mdc` for fix implementation workflows |
||||
|
|
||||
|
**Status**: Active research meta-rule |
||||
|
**Priority**: High (applies to all research tasks) |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All bundled sub-rules |
||||
|
**Stakeholders**: Development team, Research team, Quality Assurance team |
||||
|
description: |
||||
|
globs: |
||||
|
alwaysApply: false |
||||
|
--- |
@ -0,0 +1,103 @@ |
|||||
|
# Meta-Rule Architecture Overview |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-01-27 |
||||
|
**Status**: 📋 **ACTIVE** - Meta-rule organization and relationships |
||||
|
|
||||
|
## Meta-Rule Structure |
||||
|
|
||||
|
### **Core Always-On Rules** (`meta_core_always_on.mdc`) |
||||
|
- **Purpose**: Applied to every single prompt |
||||
|
- **Scope**: Human competence, time standards, version control, application context |
||||
|
- **Priority**: Critical - foundation for all interactions |
||||
|
|
||||
|
### **Enhanced Research Workflows** (`meta_research.mdc`) ⭐ **NEW** |
||||
|
- **Purpose**: Applied to research, investigation, and analysis tasks |
||||
|
- **Scope**: Systematic investigation, evidence collection, root cause analysis |
||||
|
- **Priority**: High - applies to all research tasks |
||||
|
- **Bundles**: Research diagnostic, type safety, version control research, platform context |
||||
|
|
||||
|
### **Feature Development Workflows** (`meta_feature_planning.mdc`) |
||||
|
- **Purpose**: Applied to feature planning and development tasks |
||||
|
- **Scope**: Requirements analysis, architecture planning, implementation strategy |
||||
|
- **Priority**: High - applies to feature development |
||||
|
|
||||
|
### **Bug Investigation Workflows** (`meta_bug_diagnosis.mdc`) |
||||
|
- **Purpose**: Applied to bug investigation and diagnosis tasks |
||||
|
- **Scope**: Defect analysis, evidence collection, root cause identification |
||||
|
- **Priority**: High - applies to bug investigation |
||||
|
|
||||
|
### **Bug Fixing Workflows** (`meta_bug_fixing.mdc`) |
||||
|
- **Purpose**: Applied to bug fixing and resolution tasks |
||||
|
- **Scope**: Fix implementation, testing, validation |
||||
|
- **Priority**: High - applies to bug resolution |
||||
|
|
||||
|
## Research Meta-Rule Integration |
||||
|
|
||||
|
### **When to Use Research Meta-Rule** |
||||
|
|
||||
|
The research meta-rule should be applied when: |
||||
|
- **Investigating bugs** - systematic defect analysis |
||||
|
- **Researching solutions** - feasibility and alternative analysis |
||||
|
- **Analyzing codebases** - architecture and dependency research |
||||
|
- **Collecting evidence** - systematic data gathering |
||||
|
- **Root cause analysis** - systematic problem investigation |
||||
|
- **Impact assessment** - scope and consequence evaluation |
||||
|
|
||||
|
### **How It Complements Other Meta-Rules** |
||||
|
|
||||
|
- **Core Always-On**: Provides foundation (competence, time, context) |
||||
|
- **Research**: Adds systematic investigation methodology |
||||
|
- **Feature Planning**: Guides feasibility research and analysis |
||||
|
- **Bug Diagnosis**: Provides investigation framework |
||||
|
- **Bug Fixing**: Informs fix strategy through research |
||||
|
|
||||
|
### **Research Workflow Phases** |
||||
|
|
||||
|
1. **Investigation Setup** - Scope, context, methodology |
||||
|
2. **Evidence Collection** - Systematic data gathering |
||||
|
3. **Analysis & Synthesis** - Pattern recognition, root cause |
||||
|
4. **Conclusion & Action** - Evidence-based recommendations |
||||
|
|
||||
|
## Usage Examples |
||||
|
|
||||
|
### **Bug Investigation** |
||||
|
``` |
||||
|
Apply: meta_core_always_on + meta_research + meta_bug_diagnosis |
||||
|
Result: Systematic investigation with evidence collection and root cause analysis |
||||
|
``` |
||||
|
|
||||
|
### **Feature Research** |
||||
|
``` |
||||
|
Apply: meta_core_always_on + meta_research + meta_feature_planning |
||||
|
Result: Comprehensive feasibility research with platform context |
||||
|
``` |
||||
|
|
||||
|
### **Architecture Analysis** |
||||
|
``` |
||||
|
Apply: meta_core_always_on + meta_research |
||||
|
Result: Systematic architecture investigation with evidence-based conclusions |
||||
|
``` |
||||
|
|
||||
|
## Benefits of Enhanced Research Meta-Rule |
||||
|
|
||||
|
- **Systematic Approach**: Structured investigation methodology |
||||
|
- **Evidence-Based**: Comprehensive data collection and validation |
||||
|
- **Quality Standards**: Defined research quality criteria |
||||
|
- **Integration**: Seamless integration with existing workflows |
||||
|
- **Documentation**: Comprehensive research documentation standards |
||||
|
|
||||
|
## Next Steps |
||||
|
|
||||
|
1. **Test Research Meta-Rule** - Apply to next research task |
||||
|
2. **Validate Integration** - Ensure smooth workflow integration |
||||
|
3. **Collect Feedback** - Gather effectiveness ratings |
||||
|
4. **Iterate** - Refine based on usage experience |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Status**: Active documentation |
||||
|
**Priority**: Medium |
||||
|
**Estimated Effort**: Ongoing reference |
||||
|
**Dependencies**: All meta-rules |
||||
|
**Stakeholders**: Development team, Research team |
@ -1,6 +0,0 @@ |
|||||
--- |
|
||||
alwaysApply: true |
|
||||
--- |
|
||||
progress reports are based on git commit messages and file differences for that day |
|
||||
reports are in conversational style |
|
||||
do not be a bean counter unless otherwise instructed |
|
@ -1,242 +0,0 @@ |
|||||
# TimeSafari Notifications — LLM Implementation Directive (v2.0) |
|
||||
_Last updated: August 12, 2025_ |
|
||||
|
|
||||
## 0) Role & Objective |
|
||||
**You are the implementation LLM.** Build an **offline-first daily notifications system** for Android (Kotlin) and iOS (Swift) that **prefetches -> caches -> schedules -> displays** content **without requiring network at display time**. Favor **reliability over richness**. |
|
||||
|
|
||||
## 1) Golden Rules |
|
||||
1. **Follow the pipeline:** **Prefetch → Cache → Schedule → Display.** |
|
||||
2. **Never depend on network at display time.** All assets must be local. |
|
||||
3. **Design for failure.** Always have a last-known-good and an emergency fallback. |
|
||||
4. **Keep content scannable (<3s), single message, actionable.** |
|
||||
5. **Measure everything** (fetch success, delivery, engagement, stale usage). |
|
||||
6. **Minimize battery impact** and respect platform limitations and user settings. |
|
||||
7. **Ask only when needed:** if a required input is missing, use the defaults below; otherwise proceed. |
|
||||
|
|
||||
## 2) Default Assumptions (use unless overridden) |
|
||||
- **Product mode:** Lightweight Daily Updates (text + emoji) with option to extend to media later. |
|
||||
- **Fetch size:** 1–2 KB JSON daily. |
|
||||
- **User schedule default:** 07:30 local time, daily. |
|
||||
- **Quiet hours:** None (app-level quiet hours supported but disabled by default). |
|
||||
- **Analytics:** Local log + pluggable uploader (no-op by default). |
|
||||
|
|
||||
## 3) Deliverables |
|
||||
Produce the following artifacts: |
|
||||
|
|
||||
### Android (Kotlin) |
|
||||
- `:core`: models, storage, metrics, fallback manager. |
|
||||
- `:data`: fetchers (WorkManager), mappers, cache policy. |
|
||||
- `:notify`: scheduler (AlarmManager), receiver, channels. |
|
||||
- App manifest entries & permissions. |
|
||||
- Unit tests for fallback, scheduling, metrics. |
|
||||
- README with battery optimization instructions (OEMs). |
|
||||
|
|
||||
### iOS (Swift) |
|
||||
- `NotificationKit`: models, storage, metrics, fallback manager. |
|
||||
- BGTaskScheduler registration + handler. |
|
||||
- UNUserNotificationCenter scheduling + categories + attachments. |
|
||||
- Unit tests for fallback, scheduling, metrics. |
|
||||
- README with Background App Refresh caveats + Focus/Summary notes. |
|
||||
|
|
||||
## 4) Permissions & Required Setup |
|
||||
### Android Manifest |
|
||||
```xml |
|
||||
<uses-permission android:name="android.permission.INTERNET" /> |
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> |
|
||||
<uses-permission android:name="android.permission/SCHEDULE_EXACT_ALARM" /> |
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" /> |
|
||||
``` |
|
||||
- Create a high-importance **NotificationChannel** `timesafari.daily`. |
|
||||
- If **SCHEDULE_EXACT_ALARM** denied on Android 12+, auto-fallback to inexact. |
|
||||
|
|
||||
### iOS App Setup (AppDelegate / SceneDelegate) |
|
||||
- Register `BGTaskScheduler` with ID `com.timesafari.daily-fetch`. |
|
||||
- Request alerts, sound, badge via `UNUserNotificationCenter`. |
|
||||
- Create category `DAILY_UPDATE` with a primary `View` action. |
|
||||
- Ensure Background Modes: **Background fetch**, **Remote notifications** (optional for future push). |
|
||||
|
|
||||
## 5) Data Model (keep minimal, versioned) |
|
||||
### Canonical Schema (language-agnostic) |
|
||||
``` |
|
||||
NotificationContent v1 |
|
||||
- id: string (uuid) |
|
||||
- title: string |
|
||||
- body: string (plain text; may include simple emoji) |
|
||||
- scheduledTime: epoch millis (client-local target) |
|
||||
- mediaUrl: string? (for future; must be mirrored to local path before use) |
|
||||
- fetchTime: epoch millis |
|
||||
``` |
|
||||
### Kotlin |
|
||||
```kotlin |
|
||||
@Entity |
|
||||
data class NotificationContent( |
|
||||
@PrimaryKey val id: String, |
|
||||
val title: String, |
|
||||
val body: String, |
|
||||
val scheduledTime: Long, |
|
||||
val mediaUrl: String?, |
|
||||
val fetchTime: Long |
|
||||
) |
|
||||
``` |
|
||||
### Swift |
|
||||
```swift |
|
||||
struct NotificationContent: Codable { |
|
||||
let id: String |
|
||||
let title: String |
|
||||
let body: String |
|
||||
let scheduledTime: TimeInterval |
|
||||
let mediaUrl: String? |
|
||||
let fetchTime: TimeInterval |
|
||||
} |
|
||||
``` |
|
||||
|
|
||||
## 6) Storage Layers |
|
||||
**Tier 1: Key-Value (quick)** — next payload, last fetch timestamp, user prefs. |
|
||||
**Tier 2: DB (structured)** — history, media metadata, analytics events. |
|
||||
**Tier 3: Files (large assets)** — images/audio; LRU cache & quotas. |
|
||||
|
|
||||
- Android: SharedPreferences/DataStore + Room + `context.cacheDir/notifications/` |
|
||||
- iOS: UserDefaults + Core Data/SQLite + `Library/Caches/notifications/` |
|
||||
|
|
||||
## 7) Background Execution |
|
||||
### Android — WorkManager |
|
||||
- Periodic daily work with constraints (CONNECTED network). |
|
||||
- Total time budget ~10m; use **timeouts** (e.g., fetch ≤30s, overall ≤8m). |
|
||||
- On exception/timeout: **schedule from cache**; then `Result.success()` or `Result.retry()` per policy. |
|
||||
|
|
||||
### iOS — BGTaskScheduler |
|
||||
- `BGAppRefreshTask` with aggressive time budgeting (10–30s typical). |
|
||||
- Submit next request immediately at start of handler. |
|
||||
- Set `expirationHandler` first; cancel tasks cleanly; **fallback to cache** on failure. |
|
||||
|
|
||||
## 8) Scheduling & Display |
|
||||
### Android |
|
||||
- Prefer `AlarmManager.setExactAndAllowWhileIdle()` if permitted; else inexact. |
|
||||
- Receiver builds notification using **BigTextStyle** for long bodies. |
|
||||
- Limit actions to ≤3; default: `View` (foreground intent). |
|
||||
|
|
||||
### iOS |
|
||||
- `UNCalendarNotificationTrigger` repeating at preferred time. |
|
||||
- Category `DAILY_UPDATE` with `View` action. |
|
||||
- Media attachments **only if local**; otherwise skip gracefully. |
|
||||
|
|
||||
## 9) Fallback Hierarchy (must implement) |
|
||||
1. **Foreground prefetch path** if app is open. |
|
||||
2. **Background fetch** with short network timeout. |
|
||||
3. **Last good cache** (annotate staleness: “as of X”). |
|
||||
4. **Emergency phrases** (rotate from static list). |
|
||||
|
|
||||
Provide helper: |
|
||||
- `withStaleMarker(content) -> content'` appends age label (e.g., “from 3h ago”). |
|
||||
|
|
||||
## 10) Failure Matrix & Responses |
|
||||
| Scenario | Detect | Action | |
|
||||
|---|---|---| |
|
||||
| No network / timeout | Exceptions / status | Use last-good; schedule | |
|
||||
| Invalid JSON | Parse error | Use emergency content; log | |
|
||||
| Storage full | Write error | Evict old; retry minimal payload | |
|
||||
| Notifications disabled | OS state | In-app education screen | |
|
||||
| Background killed | Gaps in execution | Catch-up next foreground open | |
|
||||
|
|
||||
## 11) Metrics (local first; uploader optional) |
|
||||
Track per attempt: |
|
||||
``` |
|
||||
NotificationMetrics v1 |
|
||||
- scheduledTime, actualDeliveryTime? |
|
||||
- contentAge (ms) |
|
||||
- engagement: {TAPPED, DISMISSED, IGNORED}? |
|
||||
- failureReason? |
|
||||
- platformInfo (oem, os version, app state) |
|
||||
``` |
|
||||
- Compute: **Fetch Success Rate**, **Delivery Rate**, **Engagement Rate**, **Stale Content Rate**. |
|
||||
|
|
||||
## 12) Testing Requirements |
|
||||
### Matrix (minimum) |
|
||||
- Android 12+ foreground/background/killed; with/without Battery Saver; Wi‑Fi/Mobile/Offline. |
|
||||
- iOS 16+ background/Low Power/Focus/Scheduled Summary on & off. |
|
||||
- Offline at trigger time (must still display). |
|
||||
|
|
||||
### Unit Tests (examples) |
|
||||
- Fallback when fetch fails (uses last-good and marks stale). |
|
||||
- Exact vs inexact scheduling path selected correctly. |
|
||||
- Metrics recorded for each stage. |
|
||||
|
|
||||
## 13) UX Standards |
|
||||
- One clear message; no clutter. |
|
||||
- ≤2 actions; primary takes user into app. |
|
||||
- Respect quiet hours if configured. |
|
||||
- Provide onboarding: value explanation → permission request → time picker → test notification → tips for OEM battery settings (Android) or Focus/Summary (iOS). |
|
||||
|
|
||||
## 14) Code Stubs (must generate & wire) |
|
||||
### Android — Worker (core pattern) |
|
||||
```kotlin |
|
||||
class DailyContentWorker(ctx: Context, params: WorkerParameters) : CoroutineWorker(ctx, params) { |
|
||||
override suspend fun doWork(): Result = try { |
|
||||
withTimeout(8.minutes) { |
|
||||
val content = fetchDailyContent(timeout = 30.seconds) |
|
||||
saveToCache(content) |
|
||||
scheduleNotification(content) |
|
||||
} |
|
||||
Result.success() |
|
||||
} catch (e: TimeoutCancellationException) { |
|
||||
scheduleFromCache(); Result.success() |
|
||||
} catch (e: Exception) { |
|
||||
scheduleFromCache(); Result.retry() |
|
||||
} |
|
||||
} |
|
||||
``` |
|
||||
### iOS — BG Refresh Handler (core pattern) |
|
||||
```swift |
|
||||
func handleBackgroundRefresh(_ task: BGAppRefreshTask) { |
|
||||
scheduleNextRefresh() |
|
||||
var finished = false |
|
||||
task.expirationHandler = { if !finished { cancelNetwork(); task.setTaskCompleted(success: false) } } |
|
||||
fetchDailyContent(timeout: 15) { result in |
|
||||
defer { finished = true; task.setTaskCompleted(success: result.isSuccess) } |
|
||||
switch result { |
|
||||
case .success(let content): quickSave(content); scheduleNotification(content) |
|
||||
case .failure: scheduleFromCache() |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
``` |
|
||||
|
|
||||
## 15) Security & Privacy |
|
||||
- Use HTTPS; pin if required. |
|
||||
- Strip PII from payloads; keep content generic by default. |
|
||||
- Store only what is necessary; apply cache quotas; purge on logout/uninstall. |
|
||||
- Respect OS privacy settings (Focus, Scheduled Summary, Quiet Hours). |
|
||||
|
|
||||
## 16) Troubleshooting Playbook (LLM should generate helpers) |
|
||||
- Android: verify permission, channel, OEM battery settings; `adb shell dumpsys notification`. |
|
||||
- iOS: check authorization, Background App Refresh, Low Power, Focus/Summary state. |
|
||||
|
|
||||
## 17) Roadmap Flags (implement behind switches) |
|
||||
- `FEATURE_MEDIA_ATTACHMENTS` (default off). |
|
||||
- `FEATURE_PERSONALIZATION_ENGINE` (time/frequency, content types). |
|
||||
- `FEATURE_PUSH_REALTIME` (server-driven for urgent alerts). |
|
||||
|
|
||||
## 18) Definition of Done |
|
||||
- Notifications deliver daily at user-selected time **without network**. |
|
||||
- Graceful fallback chain proven by tests. |
|
||||
- Metrics recorded locally; viewable log. |
|
||||
- Clear onboarding and self-diagnostic screen. |
|
||||
- Battery/OS constraints documented; user education available. |
|
||||
|
|
||||
## 19) Quick Start (LLM execution order) |
|
||||
1. Scaffold modules (Android + iOS). |
|
||||
2. Implement models + storage + fallback content. |
|
||||
3. Implement schedulers (AlarmManager / UNCalendarNotificationTrigger). |
|
||||
4. Implement background fetchers (WorkManager / BGTaskScheduler). |
|
||||
5. Wire onboarding + test notification. |
|
||||
6. Add metrics logging. |
|
||||
7. Ship minimal, then iterate. |
|
||||
|
|
||||
--- |
|
||||
|
|
||||
### Appendix A — Emergency Fallback Lines |
|
||||
- "🌅 Good morning! Ready to make today amazing?" |
|
||||
- "💪 Every small step forward counts. You've got this!" |
|
||||
- "🎯 Focus on what you can control today." |
|
||||
- "✨ Your potential is limitless. Keep growing!" |
|
||||
- "🌟 Progress over perfection, always." |
|
@ -0,0 +1,98 @@ |
|||||
|
--- |
||||
|
alwaysApply: false |
||||
|
--- |
||||
|
|
||||
|
# ADR Template |
||||
|
|
||||
|
## ADR-XXXX-YY-ZZ: [Short Title] |
||||
|
|
||||
|
**Date:** YYYY-MM-DD |
||||
|
**Status:** [PROPOSED | ACCEPTED | REJECTED | DEPRECATED | SUPERSEDED] |
||||
|
**Deciders:** [List of decision makers] |
||||
|
**Technical Story:** [Link to issue/PR if applicable] |
||||
|
|
||||
|
## Context |
||||
|
|
||||
|
[Describe the forces at play, including technological, political, social, and |
||||
|
project local. These forces are probably in tension, and should be called out as |
||||
|
such. The language in this section is value-neutral. It is simply describing |
||||
|
facts.] |
||||
|
|
||||
|
## Decision |
||||
|
|
||||
|
[Describe our response to these forces. We will use the past tense ( |
||||
|
"We will...").] |
||||
|
|
||||
|
## Consequences |
||||
|
|
||||
|
### Positive |
||||
|
|
||||
|
- [List positive consequences] |
||||
|
|
||||
|
### Negative |
||||
|
|
||||
|
- [List negative consequences or trade-offs] |
||||
|
|
||||
|
### Neutral |
||||
|
|
||||
|
- [List neutral consequences or notes] |
||||
|
|
||||
|
## Alternatives Considered |
||||
|
|
||||
|
- **Alternative 1:** [Description] - [Why rejected] |
||||
|
|
||||
|
- **Alternative 2:** [Description] - [Why rejected] |
||||
|
|
||||
|
- **Alternative 3:** [Description] - [Why rejected] |
||||
|
|
||||
|
## Implementation Notes |
||||
|
|
||||
|
[Any specific implementation details, migration steps, or |
||||
|
technical considerations] |
||||
|
|
||||
|
## References |
||||
|
|
||||
|
- [Link to relevant documentation] |
||||
|
|
||||
|
- [Link to related ADRs] |
||||
|
|
||||
|
- [Link to external resources] |
||||
|
|
||||
|
## Related Decisions |
||||
|
|
||||
|
- [List related ADRs or decisions] |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Usage Guidelines |
||||
|
|
||||
|
1. **Copy this template** for new ADRs |
||||
|
2. **Number sequentially** (ADR-001, ADR-002, etc.) |
||||
|
3. **Use descriptive titles** that clearly indicate the decision |
||||
|
4. **Include all stakeholders** in the deciders list |
||||
|
5. **Link to related issues** and documentation |
||||
|
6. **Update status** as decisions evolve |
||||
|
7. **Store in** `doc/architecture-decisions/` directory |
||||
|
|
||||
|
## Model Implementation Checklist |
||||
|
|
||||
|
### Before ADR Creation |
||||
|
|
||||
|
- [ ] **Decision Context**: Understand the decision that needs to be made |
||||
|
- [ ] **Stakeholder Identification**: Identify all decision makers |
||||
|
- [ ] **Research**: Research alternatives and gather evidence |
||||
|
- [ ] **Template Selection**: Choose appropriate ADR template |
||||
|
|
||||
|
### During ADR Creation |
||||
|
|
||||
|
- [ ] **Context Documentation**: Document the context and forces at play |
||||
|
- [ ] **Decision Recording**: Record the decision and rationale |
||||
|
- [ ] **Consequences Analysis**: Analyze positive, negative, and neutral consequences |
||||
|
- [ ] **Alternatives Documentation**: Document alternatives considered |
||||
|
|
||||
|
### After ADR Creation |
||||
|
|
||||
|
- [ ] **Review**: Review ADR with stakeholders |
||||
|
- [ ] **Approval**: Get approval from decision makers |
||||
|
- [ ] **Communication**: Communicate decision to team |
||||
|
- [ ] **Implementation**: Plan implementation of the decision |
@ -1,12 +0,0 @@ |
|||||
--- |
|
||||
alwaysApply: true |
|
||||
--- |
|
||||
|
|
||||
**always** |
|
||||
|
|
||||
use pydantic and marshallow |
|
||||
use mocking, unit tests, e2e |
|
||||
fragment tests into folders acccording to feature, sub-feature, sub-sub-feature, etc. |
|
||||
document each folder with a README.md |
|
||||
examples are tests using real data instead of mocks-units |
|
||||
examples have their own folder system structured the same |
|
@ -1,5 +0,0 @@ |
|||||
--- |
|
||||
alwaysApply: true |
|
||||
--- |
|
||||
Eagerly query the local system for time in UTC |
|
||||
Use local system time for all time sense, queries, and calculations involving time. |
|
@ -1,7 +0,0 @@ |
|||||
--- |
|
||||
alwaysApply: true |
|
||||
--- |
|
||||
use git |
|
||||
commit messages are based on unstaged files and the chnages made to them |
|
||||
present proposed messages for approval |
|
||||
get approval before staging or commmiting |
|
@ -1,7 +0,0 @@ |
|||||
--- |
|
||||
alwaysApply: true |
|
||||
--- |
|
||||
|
|
||||
Semantic Versioning: Follows MAJOR.MINOR.PATCH format |
|
||||
Centralized Management: Single source of truth for all version information |
|
||||
Git Integration: Automatic commit hash detection |
|
Loading…
Reference in new issue