Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
Guide and review the preparation of a Flutter project for Google Play Store release. Covers keystore generation, signing configuration, ProGuard/R8, and AAB build. Use when the user wants to publish, release, deploy, sign, or prepare a Flutter app for Play Store, or when they mention "flutter build appbundle", "release signing", "play store flutter", "generate keystore", "configure signing", or "R8 errors". --- name: playstore-flutter description: > Guide and review the preparation of a Flutter project for Google Play Store release. Covers keystore generation, signing configuration, ProGuard/R8, and AAB build. Use when the user wants to publish, release, deploy, sign, or prepare a Flutter app for Play Store, or when they mention "flutter build appbundle", "release signing", "play store flutter", "generate keystore", "co Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Freshness
Last checked 4/15/2026
Best For
playstore-flutter is best for break workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
Guide and review the preparation of a Flutter project for Google Play Store release. Covers keystore generation, signing configuration, ProGuard/R8, and AAB build. Use when the user wants to publish, release, deploy, sign, or prepare a Flutter app for Play Store, or when they mention "flutter build appbundle", "release signing", "play store flutter", "generate keystore", "configure signing", or "R8 errors". --- name: playstore-flutter description: > Guide and review the preparation of a Flutter project for Google Play Store release. Covers keystore generation, signing configuration, ProGuard/R8, and AAB build. Use when the user wants to publish, release, deploy, sign, or prepare a Flutter app for Play Store, or when they mention "flutter build appbundle", "release signing", "play store flutter", "generate keystore", "co
Public facts
4
Change events
1
Artifacts
0
Freshness
Apr 15, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Apr 15, 2026
Vendor
Tacuchi
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Setup snapshot
git clone https://github.com/Tacuchi/playstore-flutter.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Tacuchi
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
bash
keytool -genkeypair \ -alias upload \ -keyalg RSA -keysize 2048 \ -validity 10000 \ -storetype PKCS12 \ -keystore upload-keystore.jks
properties
storePassword=<password> keyPassword=<same-password-as-store> keyAlias=upload storeFile=<absolute-or-relative-path-to-upload-keystore.jks>
gitignore
key.properties *.jks *.keystore
kotlin
import java.util.Properties
import java.io.FileInputStream
val keystoreProperties = Properties().apply {
val file = rootProject.file("key.properties")
if (file.exists()) load(FileInputStream(file))
}
android {
signingConfigs {
create("release") {
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["storePassword"] as String
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
}
}
}kotlin
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}proguard
# Google Play Core (in-app updates / reviews)
-keep class com.google.android.play.core.** { *; }
# Firebase
-keep class com.google.firebase.** { *; }
# Gson (if used by a plugin)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactoryFull documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Guide and review the preparation of a Flutter project for Google Play Store release. Covers keystore generation, signing configuration, ProGuard/R8, and AAB build. Use when the user wants to publish, release, deploy, sign, or prepare a Flutter app for Play Store, or when they mention "flutter build appbundle", "release signing", "play store flutter", "generate keystore", "configure signing", or "R8 errors". --- name: playstore-flutter description: > Guide and review the preparation of a Flutter project for Google Play Store release. Covers keystore generation, signing configuration, ProGuard/R8, and AAB build. Use when the user wants to publish, release, deploy, sign, or prepare a Flutter app for Play Store, or when they mention "flutter build appbundle", "release signing", "play store flutter", "generate keystore", "co
Build a signed Android App Bundle (AAB) from a Flutter project, ready for Google Play Store.
Ask these questions BEFORE touching any files:
Gradle DSL? Check android/app/build.gradle vs build.gradle.kts
.kts → Kotlin DSL (Flutter 3.29+ default).gradle → Groovy (legacy — do NOT convert during release prep)Existing signing config? Search for signingConfigs in the build file
key.properties, don't duplicateFlavor setup? Search for productFlavors in the build file
ProGuard needed? Run flutter build appbundle --release FIRST
missing_rules.txt, add rulesExisting keystore? Ask the user before generating a new one
.jks → Reuse it, skip Step 1| Step | Action | Key file |
|------|--------|----------|
| 1 | Generate upload keystore | upload-keystore.jks |
| 2 | Create credentials file | android/key.properties |
| 3 | Configure signing in Gradle | android/app/build.gradle.kts |
| 4 | Review ProGuard / R8 (if needed) | android/app/proguard-rules.pro |
| 5 | Build release AAB | CLI |
| 6 | Verify output | CLI + checklist |
keytool -genkeypair \
-alias upload \
-keyalg RSA -keysize 2048 \
-validity 10000 \
-storetype PKCS12 \
-keystore upload-keystore.jks
Critical details:
-validity 10000 = ~27 years. Google requires validity beyond Oct 22 2033.-storetype PKCS12 — avoids JKS migration warnings. But with PKCS12, store password and key password must be identical. keytool silently uses the store password for the key. If you enter different passwords, signing fails later with misleading "Cannot recover key" error..jks outside the project. Recommended: ~/.android/keystores/ or a secrets manager.Create android/key.properties (must NOT be committed):
storePassword=<password>
keyPassword=<same-password-as-store>
keyAlias=upload
storeFile=<absolute-or-relative-path-to-upload-keystore.jks>
Add to android/.gitignore:
key.properties
*.jks
*.keystore
Claude knows how to write a Gradle signing config. Focus on these Flutter-specific traps:
rootProject.file("key.properties") — NOT project.file(). In Flutter, rootProject = android/, project = android/app/. Wrong root = file not found silently, null properties at build time.keystoreProperties["keyAlias"] as String — Properties returns Any?. Missing cast = compile error. Missing property key = NPE at build time with no useful message.debug signingConfig. Flutter's Gradle plugin handles it. Adding one creates conflicts.buildTypes references a signingConfig that hasn't been declared yet, build fails.android/app/build.gradle.kts) — Flutter 3.29+import java.util.Properties
import java.io.FileInputStream
val keystoreProperties = Properties().apply {
val file = rootProject.file("key.properties")
if (file.exists()) load(FileInputStream(file))
}
android {
signingConfigs {
create("release") {
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["storePassword"] as String
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
}
}
}
For Groovy DSL (legacy projects): same structure but use def keystoreProperties = new Properties(), untyped property access keystoreProperties['keyAlias'], and signingConfig signingConfigs.release without =.
Version lives in pubspec.yaml as version: X.Y.Z+N where X.Y.Z = versionName and N = versionCode. Flutter's Gradle plugin reads this automatically. NEVER set versionCode/versionName in build.gradle — the values are ignored but cause confusion. Override via CLI: --build-name=1.2.0 --build-number=42.
R8 is enabled by default in Flutter release builds. You typically do NOT need custom rules. Only act if:
build/app/outputs/mapping/release/missing_rules.txt. Copy those rules verbatim to android/app/proguard-rules.pro.When adding rules, reference the file in Gradle:
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
Common rules needed by Flutter plugins:
# Google Play Core (in-app updates / reviews)
-keep class com.google.android.play.core.** { *; }
# Firebase
-keep class com.google.firebase.** { *; }
# Gson (if used by a plugin)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
flutter build appbundle --release
Useful flags:
--obfuscate --split-debug-info=build/debug-info — obfuscate Dart code + save symbols for crash reporting. Upload symbols to Firebase Crashlytics or Play Console.--build-name=1.2.0 --build-number=42 — override version without editing pubspec.yaml.--dart-define=ENV=production — inject compile-time constants.Output: build/app/outputs/bundle/release/app-release.aab
# Verify signing — confirm alias is "upload", NOT "androiddebugkey"
keytool -printcert -jarfile build/app/outputs/bundle/release/app-release.aab
# Verify version (requires bundletool)
bundletool dump manifest --bundle=build/app/outputs/bundle/release/app-release.aab \
| grep -E "versionCode|versionName"
Checklist:
versionCode higher than the previous uploadkey.properties and *.jks in .gitignore--obfuscate used)NEVER set different store/key passwords with PKCS12 — keytool silently uses store password for key. Different passwords → signing fails with "Cannot recover key" (misleading — it's a password mismatch, not a corrupt key).
NEVER skip flutter clean after Gradle changes — Flutter caches resolved Gradle configs in .dart_tool/. Stale cache → old signing config used → AAB signed with debug key → Play Store rejects upload.
NEVER upload without checking the signer alias — jarsigner -verify says "verified" even with debug key. You must run keytool -printcert -jarfile and confirm alias is upload, not androiddebugkey.
NEVER convert Groovy to KTS during release prep — DSL migration can break the build in subtle ways. If project uses .gradle, configure signing in Groovy. Migrate DSL in a separate PR with its own testing cycle.
NEVER hardcode version in build.gradle — Flutter reads version from pubspec.yaml. Gradle values are silently ignored, creating "I bumped the version but Play Store says it's the same" confusion.
NEVER add a debug signingConfig — Flutter's Gradle plugin injects debug signing automatically. Adding one creates "signingConfig already exists" errors or silently overrides Flutter's behavior.
| Error | Cause | Fix |
|-------|-------|-----|
| Missing class: ... during R8 | R8 strips classes used via reflection | Copy rules from missing_rules.txt to proguard-rules.pro |
| minifyReleaseWithR8 failed | Conflicting or malformed ProGuard rules | Check proguard-rules.pro for duplicate/syntax errors |
| Play Store: "debug certificate" | AAB signed with debug key | Verify signingConfig points to release; run flutter clean |
| versionCode N already used | Same versionCode as previous upload | Increment +N in pubspec.yaml |
| Cannot recover key | PKCS12 store/key password mismatch | Regenerate keystore with identical passwords |
| Build succeeds but wrong version | Version hardcoded in build.gradle overrides pubspec.yaml | Remove version from build.gradle, use only pubspec.yaml |
App Signing by Google Play — Google re-signs your app with their app signing key. The keystore you generate is the upload key only. If you lose it, request a reset through Play Console (takes days, requires identity verification).
missing_rules.txt location changes — After a flutter clean, the path resets. The file only appears after a failed R8 build. Don't expect it to persist between clean builds.
Plugins silently need ProGuard rules — Pure Dart doesn't need rules, but plugins with native Android code (Firebase, Google Maps, Play Core, Stripe) may. Always check plugin READMEs and changelogs for "add ProGuard rule" notes.
--obfuscate without --split-debug-info is an error — Flutter requires both flags together. If you forget --split-debug-info, the build fails with a clear message, but it's easy to miss in CI scripts.
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/snapshot"
curl -s "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/contract"
curl -s "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Rank
70
AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs
Traction
No public download signal
Freshness
Updated 5d ago
Rank
70
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
The Frontend for Agents & Generative UI. React + Angular
Traction
No public download signal
Freshness
Updated 23d ago
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-04-16T23:31:07.988Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "break",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:break|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Tacuchi",
"href": "https://github.com/Tacuchi/playstore-flutter",
"sourceUrl": "https://github.com/Tacuchi/playstore-flutter",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:19:40.738Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T00:19:40.738Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/tacuchi-playstore-flutter/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to playstore-flutter and adjacent AI workflows.