Borrowing it
Nothing to install: this file belongs to po4yka/RIPDPI. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/po4yka/RIPDPI/main/.agents/skills/protobuf-datastore/SKILL.mdgit clone --depth 1 https://github.com/po4yka/RIPDPIWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/po4yka/ripdpi/protobuf-datastore)<a href="https://agentmods.dev/skills/po4yka/ripdpi/protobuf-datastore"><img src="https://agentmods.dev/badge/skills/po4yka/ripdpi/protobuf-datastore/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/po4yka/ripdpi/protobuf-datastore"><img src="https://agentmods.dev/badge/skills/po4yka/ripdpi/protobuf-datastore.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00046 | $0.01143 |
| Opus 5.5 | $0.00018 | $0.00457 |
| Sonnet 5.5 | $0.00009 | $0.00229 |
| Haiku 4.5 | $0.00005 | $0.00114 |
Grade A, and why
protobuf-datastore scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 109 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Protobuf DataStore
Overview
RIPDPI persists all app settings as a single Protobuf message (AppSettings) stored via Jetpack DataStore. The schema is the source of truth for all configurable values.
Key Files
| File | Purpose |
|---|---|
core/data/model/src/main/proto/app_settings.proto |
Schema definition for persisted app settings |
core/data/settings/src/main/kotlin/com/poyka/ripdpi/data/AppSettingsSerializer.kt |
Serializer with default values |
core/data/settings/src/main/kotlin/com/poyka/ripdpi/data/AppDataStore.kt |
DataStore extension property |
core/engine/.../core/RipDpiProxyPreferences.kt |
Proto -> native preferences conversion |
app/.../ui/screens/settings/SettingsViewModel.kt |
Proto -> UI state conversion |
app/.../ui/screens/connection/ConnectionViewModel.kt |
Config draft validation and persistence |
Adding a New Setting
-
Add field to proto schema (
app_settings.proto):bool your_new_setting = <next_field_number>;Use next available field number. Never reuse or renumber existing fields.
-
Set default in serializer (
AppSettingsSerializer.kt):override val defaultValue: AppSettings = AppSettings.newBuilder() // ... existing defaults ... .setYourNewSetting(false) .build() -
Expose in UI state (
SettingsUiStateorConnectionDraft):data class SettingsUiState( // ... existing fields ... val yourNewSetting: Boolean = false, ) -
Map in conversion function (
AppSettings.toUiState()ortoConfigDraft()):fun AppSettings.toUiState() = SettingsUiState( // ... existing mappings ... yourNewSetting = this.yourNewSetting, ) -
Persist changes via DataStore:
context.settingsStore.updateData { current -> current.toBuilder().setYourNewSetting(value).build() }
Reading Settings
// Reactive (preferred): Flow<AppSettings>
context.settingsStore.data.collect { settings ->
val value = settings.yourSetting
}
// In ViewModel: combine with other flows
val uiState = combine(application.settingsStore.data, otherFlow) { settings, other ->
UiState(setting = settings.yourSetting, /* ... */)
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000), UiState())
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 109 lines · 46 tokens per session scan A de11b6f54829
protobuf-datastore is a skill published in the GitHub repository po4yka/RIPDPI (85 stars, last pushed yesterday), licensed BSD-3-Clause. It adds 46 tokens to every session and 1,143 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-07.
protobuf-datastore compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| protobuf-datastorepo4yka/RIPDPI | Skill | 85 | yesterday | BSD-3-Clause | A | 46 | Claude Code, Codex |
| maui-networking-offline-datadotnet/maui-labs | Skill | 235 | yesterday | MIT | A | 87 | Claude Code, Codex |
| maui-aspire-clientdotnet/maui-labs | Skill | 235 | yesterday | MIT | A | 100 | Claude Code, Codex |
| compose-dataMeet-Miyani/compose-skill | Skill | 303 | 15d ago | MIT | A | 151 | Claude Code |
| network-tracingnexus-labs-automation/mobile-observability | Skill | 116 | 2mo ago | MIT | A | 31 | Claude Code |
| offline-firstTalissonVitorino/kmp-ios-skills | Skill | 16 | 2mo ago | MIT | A | 26 | Claude Code, Codex |
| cloudkitTalissonVitorino/kmp-ios-skills | Skill | 16 | 2mo ago | MIT | A | 209 | Claude Code, Codex |