agentleFS
komikku-appkomikku-app/anikku/AGENTS.md

anikku

AGENTS.md1.1k starsChanged 3 months agoApache-2.0View on GitHub

Anikku is an Android anime/movie watcher (min SDK 26, target SDK 36, JVM 17 / Kotlin). Stack: Jetpack Compose + Material3, Voyager navigation, SQLDelight, Injekt DI. applicationId: app.anikku. Read before every change. These rules override shortcuts (e.g. copying nearby MR imports or only running compileDebugKotlin). Before git push: confirm current branch is not master/main (git branch --show-current). Rules: Never add Anikku strings to i18n/, i18n-sy/, or other non-i18n-ank/ modules. Never edit non-base locale files (Weblate owns translations). Inside // ANK…

  • Commits and pushes

Trending

More talk lately.thin dataabout the whole repository

Dec 2025: 0 mentionsJan 2026: 1 mentionFeb 2026: 1 mentionMar 2026: 0 mentionsApr 2026: 0 mentionsMay 2026: 0 mentionsJun 2026: 0 mentionsJul 2026: 0 mentionsAug 2026: 1 mentionSep 2026: 1 mentionOct 2026: 1 mentionNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the komikku-app/anikku repository that our weekly crawl found: only 10 in all, so this is a hint, not a trend. There is no adoption data for this file yet.

Who's talking about komikku-app/anikku

The biggest 5 of 10 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 10

Talked about on GitHub (10 times).

On GitHub · 10

5 more on GitHub
  • Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.

    Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.

  • In this repositoryOne other file it gives its agents.

The file

We split this AGENTS.md into the rules it gives an agent

5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before git push: confirm current branch is not master/main (git branch --show-current).

    line 18
  2. Very specific:

    Rules: Never add Anikku strings to i18n/, i18n-sy/, or other non-i18n-ank/ modules.

    line 31
  3. Very specific:

    Never skip spotlessCheck. If it fails, run spotlessApply and retry.

    line 41
  4. Very specific:

    Use assembleDebug for local verification.

    line 123
  5. Very specific:

    No emulator/device on Cloud VM.

    line 173

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md

Anikku – AI Agent Guide

Anikku is an Android anime/movie watcher (min SDK 26, target SDK 36, JVM 17 / Kotlin). Stack: Jetpack Compose + Material3, Voyager navigation, SQLDelight, Injekt DI. applicationId: app.anikku.


Mandatory rules for AI agents

Read before every change. These rules override shortcuts (e.g. copying nearby MR imports or only running compileDebugKotlin).

Git

RuleRequired behavior
BranchCreate a feature branch (git checkout -b <type>/<short-description>).
CommitOK on a feature branch. Never commit/push to master/main unless explicitly asked.

Before git push: confirm current branch is not master/main (git branch --show-current).

Internationalization (strings)

String kindModuleResource classBase folder
Anikku-onlyi18n-ank/AMRi18n-ank/src/commonMain/moko-resources/base/
Mihon-only (frozen upstream)i18n/MRi18n/src/commonMain/moko-resources/base/
TachiyomiSY-only (frozen upstream)i18n-sy/SYMRi18n-sy/src/commonMain/moko-resources/base/
Aniyomi-only (frozen upstream)i18n-aniyomi/AYMRi18n-aniyomi/src/commonMain/moko-resources/base/
Komikku-only (frozen upstream)i18n-kmk/KMRi18n-kmk/src/commonMain/moko-resources/base/
Animiru-only (frozen upstream)i18n-animiru/AMMRi18n-animiru/src/commonMain/moko-resources/base/

Rules: Never add Anikku strings to i18n/, i18n-sy/, or other non-i18n-ank/ modules. Never edit non-base locale files (Weblate owns translations). Inside // ANK blocks → use AMR + i18n-ank. Self-check: git diff must not add <string> or <plurals> under non-base locales in any i18n*/src/.

Build verification (run in order, after every Kotlin/XML edit)

./gradlew spotlessApply    # fix formatting
./gradlew spotlessCheck    # must pass (CI gate)
./gradlew assembleDebug    # or :app:compileDebugKotlin for compile-only

Never skip spotlessCheck. If it fails, run spotlessApply and retry.


Module layout

ModulePurpose
app/UI (eu.kanade.*, exh/, mihon/), DI, workers, build variants
domain/Use cases in …/interactor/, models, repo interfaces
data/SQLDelight DB, *RepositoryImpl
core:common/Network (OkHttp), security, storage, shared utils
core:archive/Archive reading
core-metadata/Comic-info metadata parsing
source-api/ / source-local/Extension Source API + local source
presentation-core/Shared Compose components
presentation-widget/Home-screen Glance widget
i18n/Mihon strings → MR (frozen upstream)
i18n-ank/Anikku strings → AMR
i18n-aniyomi/Aniyomi strings → AYMR (frozen upstream)
i18n-kmk/Komikku strings → KMR (frozen upstream)
i18n-sy/TachiyomiSY strings → SYMR (frozen upstream)
i18n-animiru/Animiru strings → AMMR (frozen upstream)
flagkit/Country-flag drawables
telemetry/Firebase/Crashlytics (noop unless -Pinclude-telemetry)

Dependency flow: app → domain → source-api; data implements domain repos.

Version catalogs: gradle/libs.versions.toml, kotlinx.versions.toml, androidx.versions.toml, compose.versions.toml, sy.versions.toml, aniyomi.versions.toml.


Architecture

DI – uy.kohesive.injekt (not Hilt). Register in AppModule.kt, DomainModule.kt, KMKDomainModule.kt, SYDomainModule.kt via addSingleton/addSingletonFactory. injectLazy<T>() for class-field delegates; Injekt.get<T>() for imperative resolution inside functions.

UI & navigation – Voyager: Screen in eu.kanade.tachiyomi.ui.*, composables in eu.kanade.presentation.*. State via rememberScreenModel { … }; models extend StateScreenModel<State>. Use screenModelScope for lifecycle-bound coroutines. launchIO/withIOContext (from tachiyomi.core.common.util.lang) run on GlobalScope — prefer screenModelScope when the work should be tied to the model's lifecycle.

Activities (not Voyager) – MainActivity (shell), PlayerActivity + PlayerViewModel, WebViewActivity, UnlockActivity, OAuth login activities, DeepLinkActivity. Player: PlayerActivity.newIntent(context, animeId, episodeId). Web: WebViewScreen (Voyager) or WebViewActivity.newIntent(...).

Domain / data – One class per operation under domain/…/interactor/ (verb names, no *Interactor suffix). Wire repos in eu.kanade.domain.DomainModule.kt (+ KMKDomainModule, SYDomainModule).

Source API types – SAnime/SEpisode are source-layer interfaces (source-api); Anime/Episode are domain models. Never use source types in domain or UI layers.

Database – SQLDelight in data/src/main/sqldelight/tachiyomi/. Schema change workflow: add .sqm migration → update .sq query → update *RepositoryImpl mapper → run ./gradlew :data:generateSqlDelightInterface.

Images – Coil 3 (coil3.*). No Glide/Picasso.

App preference migrations – app/src/main/java/mihon/core/migration/migrations/.


Anikku-specific

  • Strings: always AMR + i18n-ank/…/base/. See i18n table above.
  • Anikku code/DI: search // ANK (e.g. ANKDomainModule, HideCategory).
  • Prefs: eu.kanade.domain.*.service.*Preferences.
  • Fork markers to preserve: // KMK, // AY, // SY, // EXH (legacy — E-Hentai; prefer // ANK for new Anikku-only code).

New Anikku feature workflow:

  1. Domain interactor in domain/…/interactor/MyFeature.kt
  2. Register: addFactory { MyFeature(get()) } in DomainModule.kt
  3. ScreenModel + Screen under app/…/ui/
  4. Strings in i18n-ank/src/commonMain/moko-resources/base/strings.xml using AMR

Reference: domain/src/main/java/tachiyomi/domain/category/interactor/HideCategory.kt + DomainModule.kt:133.


Build & CI

Build types: debug, release, releaseTest, foss, preview (CI default), benchmark.

Gradle -P flags:

FlagEffect
include-telemetryFirebase Analytics + Crashlytics
enable-updaterIn-app update checker
disable-code-shrinkSkip R8 minification
include-dependency-infoDependency metadata in APK

Use assembleDebug for local verification; assemblePreview for CI-equivalent output.

./gradlew assemblePreview                                        # main CI/dev APK
./gradlew assemblePreview -Pinclude-telemetry -Penable-updater  # full CI build
./gradlew testReleaseUnitTest                                    # CI unit tests
./gradlew installDebug                                           # device install
./gradlew :data:generateSqlDelightInterface                      # after .sq/.sqm changes

Conventions

  • Logging – xLogE() / xLog() from exh.log for Anikku code; logcat { } from tachiyomi.core.common.util.system for Mihon code.
  • Formatting – Spotless + ktlint. Always run spotlessApply then spotlessCheck.
  • Fork edits – New Anikku features inside // ANK islands; keep upstream // SY / // EXH blocks intact when merging.

Key files

  • App.kt – Injekt bootstrap, logging setup
  • MainActivity.kt – Voyager host
  • app/src/main/java/eu/kanade/tachiyomi/di/AppModule.kt – core DI
  • app/src/main/java/eu/kanade/domain/DomainModule.kt – domain interactors

Tests

Unit tests: domain/src/test/, app/src/test/. Framework: JUnit 5 + Kotest + Mockk. No broad UI test suite.


Cursor Cloud specific instructions

Environment

Android SDK installed into /opt/android-sdk. JDK 21 pre-installed (compiles to JVM target 17). Export before running Gradle in a fresh shell:

export ANDROID_HOME=/opt/android-sdk
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64

Gotchas

  • First Gradle build downloads ~1 GB of dependencies; subsequent builds use cache.
  • local.properties is .gitignored — recreate if missing.
  • No emulator/device on Cloud VM; use assembleDebug for verification.
  • google-services.json absent; builds without -Pinclude-telemetry succeed.
  • OOM: kill daemon with ./gradlew --stop.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.