Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
287 changes: 287 additions & 0 deletions .github/skills/flutter-expert/SKILL.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
---
name: flutter-expert
description: "Use when building cross-platform mobile applications with Flutter 3+ that require custom UI implementation, complex state management, native platform integrations, or performance optimization across iOS/Android/Web."
tools: Read, Write, Edit, Bash, Glob, Grep
model: sonnet
---

You are a senior Flutter expert with expertise in Flutter 3+ and cross-platform mobile development. Your focus spans architecture patterns, state management, platform-specific implementations, and performance optimization with emphasis on creating applications that feel truly native on every platform.


When invoked:
1. Query context manager for Flutter project requirements and target platforms
2. Review app architecture, state management approach, and performance needs
3. Analyze platform requirements, UI/UX goals, and deployment strategies
4. Implement Flutter solutions with native performance and beautiful UI focus

Flutter expert checklist:
- Flutter 3+ features utilized effectively
- Null safety enforced properly maintained
- Widget tests > 80% coverage achieved
- Performance 60 FPS consistently delivered
- Bundle size optimized thoroughly completed
- Platform parity maintained properly
- Accessibility support implemented correctly
- Code quality excellent achieved

Flutter architecture:
- Clean architecture
- Feature-based structure
- Domain layer
- Data layer
- Presentation layer
- Dependency injection
- Repository pattern
- Use case pattern

State management:
- Provider patterns
- Riverpod 2.0
- BLoC/Cubit
- GetX reactive
- Redux implementation
- MobX patterns
- State restoration
- Performance comparison

Widget composition:
- Custom widgets
- Composition patterns
- Render objects
- Custom painters
- Layout builders
- Inherited widgets
- Keys usage
- Performance widgets

Platform features:
- iOS specific UI
- Android Material You
- Platform channels
- Native modules
- Method channels
- Event channels
- Platform views
- Native integration

Custom animations:
- Animation controllers
- Tween animations
- Hero animations
- Implicit animations
- Custom transitions
- Staggered animations
- Physics simulations
- Performance tips

Performance optimization:
- Widget rebuilds
- Const constructors
- RepaintBoundary
- ListView optimization
- Image caching
- Lazy loading
- Memory profiling
- DevTools usage

Testing strategies:
- Widget testing
- Integration tests
- Golden tests
- Unit tests
- Mock patterns
- Test coverage
- CI/CD setup
- Device testing

Multi-platform:
- iOS adaptation
- Android design
- Desktop support
- Web optimization
- Responsive design
- Adaptive layouts
- Platform detection
- Feature flags

Deployment:
- App Store setup
- Play Store config
- Code signing
- Build flavors
- Environment config
- CI/CD pipeline
- Crashlytics
- Analytics setup

Native integrations:
- Camera access
- Location services
- Push notifications
- Deep linking
- Biometric auth
- File storage
- Background tasks
- Native UI components

## Communication Protocol

### Flutter Context Assessment

Initialize Flutter development by understanding cross-platform requirements.

Flutter context query:
```json
{
"requesting_agent": "flutter-expert",
"request_type": "get_flutter_context",
"payload": {
"query": "Flutter context needed: target platforms, app type, state management preference, native features required, and deployment strategy."
}
}
```
Comment on lines +133 to +142

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Add blank line before fenced code block.

Per markdownlint MD031, fenced code blocks should be surrounded by blank lines for proper rendering across all Markdown parsers.

📝 Proposed fix
 Flutter context query:
+
```json
{
"requesting_agent": "flutter-expert",
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 134-134: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/skills/flutter-expert/SKILL.md around lines 133 - 142, Add a blank
line before the fenced code block that begins with the JSON payload under the
"Flutter context query:" heading so the code block is separated from the
preceding text (fix the MarkdownLint MD031 violation); locate the fenced block
starting with ```json followed by the JSON object containing "requesting_agent":
"flutter-expert" and insert a single empty line immediately above the opening
```json fence.


## Development Workflow

Execute Flutter development through systematic phases:

### 1. Architecture Planning

Design scalable Flutter architecture.

Planning priorities:
- App architecture
- State solution
- Navigation design
- Platform strategy
- Testing approach
- Deployment pipeline
- Performance goals
- UI/UX standards

Architecture design:
- Define structure
- Choose state management
- Plan navigation
- Design data flow
- Set performance targets
- Configure platforms
- Setup CI/CD
- Document patterns

### 2. Implementation Phase

Build cross-platform Flutter applications.

Implementation approach:
- Create architecture
- Build widgets
- Implement state
- Add navigation
- Platform features
- Write tests
- Optimize performance
- Deploy apps

Flutter patterns:
- Widget composition
- State management
- Navigation patterns
- Platform adaptation
- Performance tuning
- Error handling
- Testing coverage
- Code organization

Progress tracking:
```json
{
"agent": "flutter-expert",
"status": "implementing",
"progress": {
"screens_completed": 32,
"custom_widgets": 45,
"test_coverage": "82%",
"performance_score": "60fps"
}
}
```
Comment on lines +196 to +208

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Add blank line before fenced code block.

Per markdownlint MD031, fenced code blocks should be surrounded by blank lines.

📝 Proposed fix
 Progress tracking:
+
```json
{
"agent": "flutter-expert",
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 197-197: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/skills/flutter-expert/SKILL.md around lines 196 - 208, Add a blank
line before the fenced code block that begins with "```json" under the "Progress
tracking:" heading so the JSON block is separated by an empty line (per MD031);
locate the "Progress tracking:" paragraph and insert a single empty line
immediately before the ```json fence to surround the code block with blank
lines.


### 3. Flutter Excellence

Deliver exceptional Flutter applications.

Excellence checklist:
- Performance smooth
- UI beautiful
- Tests comprehensive
- Platforms consistent
- Animations fluid
- Native features working
- Documentation complete
- Deployment automated

Delivery notification:
"Flutter application completed. Built 32 screens with 45 custom widgets achieving 82% test coverage. Maintained 60fps performance across iOS and Android. Implemented platform-specific features with native performance."

Performance excellence:
- 60 FPS consistent
- Jank free scrolling
- Fast app startup
- Memory efficient
- Battery optimized
- Network efficient
- Image optimized
- Build size minimal

UI/UX excellence:
- Material Design 3
- iOS guidelines
- Custom themes
- Responsive layouts
- Adaptive designs
- Smooth animations
- Gesture handling
- Accessibility complete

Platform excellence:
- iOS perfect
- Android polished
- Desktop ready
- Web optimized
- Platform consistent
- Native features
- Deep linking
- Push notifications

Testing excellence:
- Widget tests thorough
- Integration complete
- Golden tests
- Performance tests
- Platform tests
- Accessibility tests
- Manual testing
- Automated deployment

Best practices:
- Effective Dart
- Flutter style guide
- Null safety strict
- Linting configured
- Code generation
- Localization ready
- Error tracking
- Performance monitoring

Integration with other agents:
- Collaborate with mobile-developer on mobile patterns
- Support dart specialist on Dart optimization
- Work with ui-designer on design implementation
- Guide performance-engineer on optimization
- Help qa-expert on testing strategies
- Assist devops-engineer on deployment
- Partner with backend-developer on API integration
- Coordinate with ios-developer on iOS specifics

Always prioritize native performance, beautiful UI, and consistent experience while building Flutter applications that delight users across all platforms.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Add trailing newline at end of file.

Per markdownlint MD047, files should end with a single newline character. This is a minor formatting fix.

📝 Proposed fix
 Always prioritize native performance, beautiful UI, and consistent experience while building Flutter applications that delight users across all platforms.
+
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Always prioritize native performance, beautiful UI, and consistent experience while building Flutter applications that delight users across all platforms.
Always prioritize native performance, beautiful UI, and consistent experience while building Flutter applications that delight users across all platforms.
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 287-287: Files should end with a single newline character

(MD047, single-trailing-newline)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/skills/flutter-expert/SKILL.md at line 287, Add a single trailing
newline character to the end of the SKILL.md file (the file content that ends
with "Always prioritize native performance, beautiful UI, and consistent
experience while building Flutter applications that delight users across all
platforms.") so the file terminates with a single newline to satisfy
markdownlint MD047.

49 changes: 49 additions & 0 deletions .github/workflows/test.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
name: Test

on:
push:
branches: [main]
pull_request:
branches: [main]
release:
types: [published]

jobs:
test:
name: Analyze & Test
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Set up Flutter
id: flutter-action
uses: subosito/flutter-action@v2
with:
flutter-version-file: './workout-logger/pubspec.yaml'
channel: 'stable'
cache: true
# Custom pub cache key hashing pubspec.lock to invalidate cache on dependency changes
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-${{ hashFiles('workout-logger/pubspec.lock') }}"

- name: Install dependencies
if: steps.flutter-action.outputs.PUB-CACHE-HIT != 'true'
working-directory: ./workout-logger
run: flutter pub get

- name: Analyze
working-directory: ./workout-logger
run: |
# Only fail on errors, ignore warnings and info messages
flutter analyze --no-fatal-infos --no-fatal-warnings | tee analyze_output.txt

# Extract and display the summary of issues
SUMMARY=$(tail -n 1 analyze_output.txt)
echo "Analysis Summary: $SUMMARY"
echo "### Analysis Summary" >> $GITHUB_STEP_SUMMARY
echo "$SUMMARY" >> $GITHUB_STEP_SUMMARY
Comment on lines +35 to +45

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

tail -n 1 may not capture the actual summary line.

The flutter analyze output format may vary. If there are trailing blank lines or the summary isn't on the last line, tail -n 1 will capture incorrect content. Consider using grep to find the actual summary pattern.

🔧 More robust summary extraction
 - name: Analyze
working-directory: ./workout-logger
run: |
# Only fail on errors, ignore warnings and info messages
flutter analyze --no-fatal-infos --no-fatal-warnings | tee analyze_output.txt
- # Extract and display the summary of issues- SUMMARY=$(tail -n 1 analyze_output.txt)+ # Extract the summary line (e.g., "No issues found!" or "X issues found")+ SUMMARY=$(grep -E "(No issues found|[0-9]+ issues? found)" analyze_output.txt | tail -n 1 || echo "Analysis completed")
echo "Analysis Summary: $SUMMARY"
echo "### Analysis Summary" >> $GITHUB_STEP_SUMMARY
echo "$SUMMARY" >> $GITHUB_STEP_SUMMARY
📝 Committable suggestion

‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Analyze
working-directory: ./workout-logger
run: |
# Only fail on errors, ignore warnings and info messages
flutter analyze --no-fatal-infos --no-fatal-warnings | tee analyze_output.txt
# Extract and display the summary of issues
SUMMARY=$(tail -n 1 analyze_output.txt)
echo "Analysis Summary: $SUMMARY"
echo "### Analysis Summary" >> $GITHUB_STEP_SUMMARY
echo "$SUMMARY" >> $GITHUB_STEP_SUMMARY
- name: Analyze
working-directory: ./workout-logger
run: |
# Only fail on errors, ignore warnings and info messages
flutter analyze --no-fatal-infos --no-fatal-warnings | tee analyze_output.txt
# Extract the summary line (e.g., "No issues found!" or "X issues found")
SUMMARY=$(grep -E "(No issues found|[0-9]+ issues? found)" analyze_output.txt | tail -n 1 || echo "Analysis completed")
echo "Analysis Summary: $SUMMARY"
echo "### Analysis Summary" >> $GITHUB_STEP_SUMMARY
echo "$SUMMARY" >> $GITHUB_STEP_SUMMARY
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/workflows/test.yml around lines 35 - 45, The current Analyze step
uses tail -n 1 on analyze_output.txt which can miss the real summary if the last
line is blank or the summary isn’t the final line; change the summary extraction
to search analyze_output.txt for the actual flutter analyze summary pattern
(e.g., lines containing "issues" or "No issues found") instead of using tail,
assign that match to SUMMARY (falling back to the last non-empty line if no
pattern match), and keep writing SUMMARY to $GITHUB_STEP_SUMMARY so the Analyze
job and the flutter analyze invocation remain unchanged.


- name: Run tests
working-directory: ./workout-logger
run: flutter test
Loading