Skip to content

Commit 8f4376f

Browse files
committed
Update AGENTS files
1 parent 1a6db3f commit 8f4376f

7 files changed

Lines changed: 162 additions & 140 deletions

File tree

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
name: store-changelog
3+
description: Generate release notes for app stores (Android Play Store, iOS App Store, macOS App Store, Linux Flatpak). Use when the user asks for changelogs, release notes, or store descriptions based on git history.
4+
---
5+
6+
# Store Changelog Generator
7+
8+
Generate release notes for App stores based on git history since a specified tag.
9+
10+
## Instructions
11+
12+
1. **Get the tag name**:
13+
- If the user provides a tag name (e.g., `1.0.0` or `v1.0.0`), use it
14+
- If not provided, automatically get the latest tag using: `git describe --tags --abbrev=0`
15+
- Inform the user which tag is being used
16+
17+
2. **Analyze git history**: Run `git log <tag>..HEAD --pretty=format:"%h %s%n%b" --no-merges` to get all commits since the tag, including both commit messages and descriptions.
18+
19+
3. **Identify changes**: Categorize commits into:
20+
- New features
21+
- Improvements
22+
- Bug fixes
23+
24+
4. **Generate platform-specific release notes** following the formats below.
25+
26+
## Output Formats
27+
28+
### Android (Play Store)
29+
- Maximum 500 characters
30+
- Bullet point format
31+
- Focus on top 3-4 most impactful changes
32+
- Example:
33+
```
34+
• New reader mode for distraction-free reading
35+
• Improved sync reliability with FreshRSS
36+
• Fixed crash when opening large feeds
37+
```
38+
39+
### iOS (App Store)
40+
- User-friendly narrative format
41+
- Highlight iOS-specific improvements (scrolling, touch interactions, mobile layout)
42+
- Group by: New Features, Improvements, Bug Fixes
43+
- Example:
44+
```
45+
New Features:
46+
• Reader mode now provides a clean, distraction-free reading experience.
47+
48+
Improvements:
49+
• Smoother scrolling and faster feed loading on all devices.
50+
51+
Bug Fixes:
52+
• Fixed an issue where the app could crash when opening feeds with many articles.
53+
```
54+
55+
### macOS (App Store)
56+
- User-friendly narrative format
57+
- Highlight macOS-specific improvements (desktop layout, toolbar, keyboard shortcuts, interface)
58+
- Separate from iOS since they are different apps
59+
- Group by: New Features, Improvements, Bug Fixes
60+
61+
### Linux (Flatpak metainfo.xml)
62+
- XML format with individual `<p>` tags
63+
- Concise, one-line descriptions per change
64+
- Format:
65+
```xml
66+
<release version="X.X.X" date="YYYY-MM-DD">
67+
<description>
68+
<p>Feature or fix description</p>
69+
<p>Another change</p>
70+
</description>
71+
</release>
72+
```
73+
74+
## Resources
75+
76+
- `references/release-notes-guidelines.md`: Language, filtering, and QA rules for App Store notes.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Store Release Notes Guidelines
2+
3+
## Goals
4+
- Produce user-facing release notes that describe visible changes since the last tag.
5+
- Include all user-impacting changes; omit purely internal or refactor-only work.
6+
- Keep language plain, short, and benefit-focused.
7+
8+
## Output Shape
9+
- Prefer 5 to 10 bullets total for most releases.
10+
- Group by theme if needed: New, Improved, Fixed.
11+
- Each bullet should be one sentence and start with a verb.
12+
- Avoid internal codenames, ticket IDs, or file paths.
13+
14+
## Filtering Rules
15+
- Include: new features, UI changes, behavior changes, bug fixes users would notice, performance improvements with visible impact.
16+
- Exclude: refactors, dependency bumps, CI changes, developer tooling, translations updates, internal logging, analytics changes unless they affect user privacy or behavior.
17+
- If a change is ambiguous, ask for clarification or describe it as a small improvement only if it is user-visible.
18+
19+
## Language Guidance
20+
- Translate technical terms into user-facing descriptions.
21+
- Avoid versions of "API", "refactor", "nil", "crash log", or "dependency".
22+
- Prefer "Improved", "Added", "Fixed", "Updated" or action verbs like "Search", "Upload", "Sync".
23+
- Keep tense present or past: "Added", "Improved", "Fixed".
24+
25+
## Examples
26+
- "Added account switching from the profile menu."
27+
- "Improved timeline loading speed on slow connections."
28+
- "Fixed media attachments not opening in full screen."
29+
30+
## QA Checklist
31+
- Every bullet ties to a real change in the range.
32+
- No duplicate bullets that describe the same change.
33+
- No internal jargon or file paths.
34+
- Final list fits App Store and Google Play text limits for the target storefront if provided.

.claude/skills

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../.ai/skills

.codex/skills

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../.ai/skills

.junie/guidelines.md

Lines changed: 0 additions & 67 deletions
This file was deleted.

.junie/guidelines.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../AGENTS.md

AGENTS.md

Lines changed: 48 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,62 @@
11
# AGENTS.md
22

3-
This file provides guidance to agents when working with code in this repository.
4-
53
## Project Overview
64

7-
FeedFlow is a cross-platform RSS reader built with Kotlin Multiplatform, Compose Multiplatform and SwiftUI. It targets Android, iOS, macOS, Windows, and Linux. The app uses SwiftUI for iOS-specific UI components and Compose for all other platforms.
5+
FeedFlow is a multi-platform RSS reader built with Kotlin Multiplatform, Compose Multiplatform and SwiftUI.
6+
It targets Android, iOS, macOS, Windows, and Linux.
7+
The app uses SwiftUI for iOS-specific UI components and Compose for all other platforms.
8+
All the business logic is shared via Kotlin Multiplatform.
89

9-
## Architecture
10+
## Project Structure & Module Organization
1011

1112
### Module Structure
1213
- **core/**: Core domain models and utilities shared across all platforms
1314
- **shared/**: Main business logic, repositories, view models, and data layer
14-
- **sharedUI/**: Compose UI components shared across platforms
15+
- **sharedUI/**: Compose UI components shared across Android and Desktop
1516
- **database/**: SQLDelight database implementation
1617
- **i18n/**: Internationalization resources
17-
- **feedSync/**: Feed synchronization modules (Dropbox, FreshRSS, iCloud)
18+
- **feedSync/**: Feed synchronization modules (Dropbox, FreshRSS, iCloud, etc)
1819
- **androidApp/**: Android-specific app implementation
19-
- **iosApp/**: iOS/macOS app with SwiftUI
20+
- **iosApp/**: iOS app with SwiftUI
2021
- **desktopApp/**: Desktop app for Windows, Linux, and macOS
2122
- **website/**: Hugo-based website
2223

23-
### Key Technologies
24-
- **Kotlin Multiplatform**: Core logic sharing
25-
- **Compose Multiplatform**: UI framework for Android/Desktop
26-
- **SwiftUI**: iOS native UI
27-
- **SQLDelight**: Database abstraction
28-
- **Koin**: Dependency injection
29-
- **Ktor**: HTTP client
30-
- **RSS Parser**: Custom RSS parsing library
31-
32-
## Common Development Commands
24+
## Build, Test, and Development Commands
3325

3426
### Build Commands
35-
```bash
36-
# Build the entire project
37-
./gradlew build
3827

39-
# Build Android app
40-
./gradlew :androidApp:assembleDebug
41-
./gradlew :androidApp:assembleRelease
28+
- `./gradlew check` -> Run all checks including tests and linting for Shared code, Android and Desktop
29+
- `.scripts/ios-format.sh` -> Format iOS code through swiftformat and swiftlint
30+
- `./gradlew test` -> Run all tests for Shared code, Android and Desktop
31+
- `.scripts/refresh-translations.sh` -> Regenerate i18n translation code after adding new translations
32+
- `./gradlew :androidApp:assembleDebug` -> Build Android debug
33+
- `./gradlew desktopApp:run` -> Run Desktop app
4234

43-
# Build shared framework for iOS
44-
./gradlew :shared:linkDebugFrameworkIosArm64
45-
```
35+
### Build Verification Process
4636

47-
### Code Quality Commands
37+
IMPORTANT: When editing code, you MUST:
38+
1. Build the project after making changes
39+
2. Fix any compilation errors before proceeding
40+
41+
## Handing off
42+
43+
Before handing off you must:
44+
1. Run `./gradlew check` to ensure all checks pass
45+
2. Run `.scripts/ios-format.sh` to format iOS code
46+
3. Fix any issues found during the above steps
47+
48+
### Initial Setup (for building from scratch)
4849
```bash
49-
# Run Detekt linting
50-
./gradlew detekt
50+
# Android: Copy dummy google-services.json
51+
cp config/dummy-google-services.json androidApp/src/debug/google-services.json
52+
cp config/dummy-google-services.json androidApp/src/release/google-services.json
53+
54+
# iOS: Copy dummy GoogleService-Info.plist
55+
cp config/dummy-google-service.plist iosApp/GoogleService-Info-dev.plist
56+
cp config/dummy-google-service.plist iosApp/GoogleService-Info.plist
5157

52-
# Format iOS/macOS code
53-
.scripts/io-format.sh
58+
# iOS: Create Config.xcconfig
59+
cp iosApp/Assets/Config.xcconfig.template iosApp/Assets/Config.xcconfig
5460
```
5561

5662
## General rules:
@@ -69,47 +75,17 @@ When creating commits:
6975
- Example: `git commit -m "Add foundation for unified article parsing system"`
7076

7177
### iOS Development
72-
The iOS app uses Xcode and requires iOS-specific setup:
73-
- Open `iosApp/FeedFlow.xcodeproj` in Xcode
74-
- Build and run from Xcode
75-
7678
- ALWAYS build with xcodebuild with -quiet flag when building for iOS. If the command returns errors you may run xcodebuild again without the -quiet flag.
77-
78-
## Code Structure Notes
79-
80-
### Shared Logic
81-
- ViewModels in `shared/src/commonMain/kotlin/.../presentation/`
82-
- Repositories in `shared/src/commonMain/kotlin/.../domain/`
83-
- Platform-specific implementations use `expect`/`actual` pattern
84-
85-
### Platform-Specific Code
86-
- Android: `shared/src/androidMain/kotlin/`
87-
- iOS: `shared/src/iosMain/kotlin/`
88-
- Desktop: `shared/src/jvmMain/kotlin/`
89-
90-
### Database
91-
- SQLDelight schema in `database/src/commonMain/sqldelight/`
92-
- Database drivers are platform-specific
93-
94-
### Dependency Injection
95-
- Koin modules in `shared/src/commonMain/kotlin/.../di/`
96-
- Platform-specific modules in respective platform folders
97-
98-
## Testing
99-
- Common tests in `shared/src/commonTest/kotlin/`
100-
- Platform-specific tests in respective test folders
101-
- Uses Kotlin Test framework with JUnit on JVM platforms
102-
103-
## Internationalization
104-
- String resources in `i18n/src/commonMain/resources/locale/values-[language]/`
105-
- Refresh
106-
- Uses Lyricist for multiplatform string handling
107-
- Translation management via Weblate
79+
- IMPORTANT: The project now supports iOS 26 SDK (June 2025) while maintaining iOS 18 as the minimum deployment target. Use #available checks when adopting iOS 26+ APIs.
80+
- Break different types up into different Swift files rather than placing multiple structs, classes, or enums into a single file.
81+
- Never use `ObservableObject`; always prefer `@Observable` classes instead.
82+
- Never use `Task.sleep(nanoseconds:)`; always use `Task.sleep(for:)` instead.
83+
- Avoid `AnyView` unless it is absolutely required.
84+
- Avoid force unwraps and force `try` unless it is unrecoverable.
85+
86+
### Internationalization
87+
- String resources are located in `i18n/src/commonMain/resources/locale/values-[language]/`
10888
- Run .scripts/refresh-translations.sh after adding a new translation, to re-generate the kotlin code
89+
- NEVER add hardcoded strings in the code. Always use the i18n resources.
90+
- NEVER try to translate other languages by yourself. Add only the English strings. The translations will be handled by professionals later.
10991

110-
## Key Features to Understand
111-
- **Feed Sync**: Supports Dropbox, FreshRSS, and iCloud synchronization
112-
- **Reader Mode**: HTML content extraction and formatting
113-
- **OPML Import/Export**: Standard RSS subscription format support
114-
- **Widgets**: Android App Widget and iOS Widget support
115-
- **Notifications**: Background feed update notifications

CLAUDE.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AGENTS.md

0 commit comments

Comments
 (0)