@hasna/terminal 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/cli.js +29 -12
  2. package/package.json +1 -1
  3. package/src/ai.ts +50 -36
  4. package/src/cli.tsx +29 -12
  5. package/src/context-hints.ts +89 -0
  6. package/src/discover.ts +238 -0
  7. package/src/economy.ts +53 -0
  8. package/src/output-store.ts +65 -0
  9. package/src/providers/index.ts +4 -4
  10. package/src/sessions-db.ts +81 -0
  11. package/temp/rtk/.claude/agents/code-reviewer.md +221 -0
  12. package/temp/rtk/.claude/agents/debugger.md +519 -0
  13. package/temp/rtk/.claude/agents/rtk-testing-specialist.md +461 -0
  14. package/temp/rtk/.claude/agents/rust-rtk.md +511 -0
  15. package/temp/rtk/.claude/agents/technical-writer.md +355 -0
  16. package/temp/rtk/.claude/commands/diagnose.md +352 -0
  17. package/temp/rtk/.claude/commands/test-routing.md +362 -0
  18. package/temp/rtk/.claude/hooks/bash/pre-commit-format.sh +16 -0
  19. package/temp/rtk/.claude/hooks/rtk-rewrite.sh +70 -0
  20. package/temp/rtk/.claude/hooks/rtk-suggest.sh +152 -0
  21. package/temp/rtk/.claude/rules/cli-testing.md +526 -0
  22. package/temp/rtk/.claude/skills/issue-triage/SKILL.md +348 -0
  23. package/temp/rtk/.claude/skills/issue-triage/templates/issue-comment.md +134 -0
  24. package/temp/rtk/.claude/skills/performance.md +435 -0
  25. package/temp/rtk/.claude/skills/pr-triage/SKILL.md +315 -0
  26. package/temp/rtk/.claude/skills/pr-triage/templates/review-comment.md +71 -0
  27. package/temp/rtk/.claude/skills/repo-recap.md +206 -0
  28. package/temp/rtk/.claude/skills/rtk-tdd/SKILL.md +78 -0
  29. package/temp/rtk/.claude/skills/rtk-tdd/references/testing-patterns.md +124 -0
  30. package/temp/rtk/.claude/skills/security-guardian.md +503 -0
  31. package/temp/rtk/.claude/skills/ship.md +404 -0
  32. package/temp/rtk/.github/workflows/benchmark.yml +34 -0
  33. package/temp/rtk/.github/workflows/dco-check.yaml +12 -0
  34. package/temp/rtk/.github/workflows/release-please.yml +51 -0
  35. package/temp/rtk/.github/workflows/release.yml +343 -0
  36. package/temp/rtk/.github/workflows/security-check.yml +135 -0
  37. package/temp/rtk/.github/workflows/validate-docs.yml +78 -0
  38. package/temp/rtk/.release-please-manifest.json +3 -0
  39. package/temp/rtk/ARCHITECTURE.md +1491 -0
  40. package/temp/rtk/CHANGELOG.md +640 -0
  41. package/temp/rtk/CLAUDE.md +605 -0
  42. package/temp/rtk/CONTRIBUTING.md +199 -0
  43. package/temp/rtk/Cargo.lock +1668 -0
  44. package/temp/rtk/Cargo.toml +64 -0
  45. package/temp/rtk/Formula/rtk.rb +43 -0
  46. package/temp/rtk/INSTALL.md +390 -0
  47. package/temp/rtk/LICENSE +21 -0
  48. package/temp/rtk/README.md +386 -0
  49. package/temp/rtk/README_es.md +159 -0
  50. package/temp/rtk/README_fr.md +197 -0
  51. package/temp/rtk/README_ja.md +159 -0
  52. package/temp/rtk/README_ko.md +159 -0
  53. package/temp/rtk/README_zh.md +167 -0
  54. package/temp/rtk/ROADMAP.md +15 -0
  55. package/temp/rtk/SECURITY.md +217 -0
  56. package/temp/rtk/TEST_EXEC_TIME.md +102 -0
  57. package/temp/rtk/build.rs +57 -0
  58. package/temp/rtk/docs/AUDIT_GUIDE.md +432 -0
  59. package/temp/rtk/docs/FEATURES.md +1410 -0
  60. package/temp/rtk/docs/TROUBLESHOOTING.md +309 -0
  61. package/temp/rtk/docs/filter-workflow.md +102 -0
  62. package/temp/rtk/docs/images/gain-dashboard.jpg +0 -0
  63. package/temp/rtk/docs/tracking.md +583 -0
  64. package/temp/rtk/hooks/opencode-rtk.ts +39 -0
  65. package/temp/rtk/hooks/rtk-awareness.md +29 -0
  66. package/temp/rtk/hooks/rtk-rewrite.sh +61 -0
  67. package/temp/rtk/hooks/test-rtk-rewrite.sh +442 -0
  68. package/temp/rtk/install.sh +124 -0
  69. package/temp/rtk/release-please-config.json +10 -0
  70. package/temp/rtk/scripts/benchmark.sh +592 -0
  71. package/temp/rtk/scripts/check-installation.sh +162 -0
  72. package/temp/rtk/scripts/install-local.sh +37 -0
  73. package/temp/rtk/scripts/rtk-economics.sh +137 -0
  74. package/temp/rtk/scripts/test-all.sh +561 -0
  75. package/temp/rtk/scripts/test-aristote.sh +227 -0
  76. package/temp/rtk/scripts/test-tracking.sh +79 -0
  77. package/temp/rtk/scripts/update-readme-metrics.sh +32 -0
  78. package/temp/rtk/scripts/validate-docs.sh +73 -0
  79. package/temp/rtk/src/aws_cmd.rs +880 -0
  80. package/temp/rtk/src/binlog.rs +1645 -0
  81. package/temp/rtk/src/cargo_cmd.rs +1727 -0
  82. package/temp/rtk/src/cc_economics.rs +1157 -0
  83. package/temp/rtk/src/ccusage.rs +340 -0
  84. package/temp/rtk/src/config.rs +187 -0
  85. package/temp/rtk/src/container.rs +855 -0
  86. package/temp/rtk/src/curl_cmd.rs +134 -0
  87. package/temp/rtk/src/deps.rs +268 -0
  88. package/temp/rtk/src/diff_cmd.rs +367 -0
  89. package/temp/rtk/src/discover/mod.rs +274 -0
  90. package/temp/rtk/src/discover/provider.rs +388 -0
  91. package/temp/rtk/src/discover/registry.rs +2022 -0
  92. package/temp/rtk/src/discover/report.rs +202 -0
  93. package/temp/rtk/src/discover/rules.rs +667 -0
  94. package/temp/rtk/src/display_helpers.rs +402 -0
  95. package/temp/rtk/src/dotnet_cmd.rs +1771 -0
  96. package/temp/rtk/src/dotnet_format_report.rs +133 -0
  97. package/temp/rtk/src/dotnet_trx.rs +593 -0
  98. package/temp/rtk/src/env_cmd.rs +204 -0
  99. package/temp/rtk/src/filter.rs +462 -0
  100. package/temp/rtk/src/filters/README.md +52 -0
  101. package/temp/rtk/src/filters/ansible-playbook.toml +34 -0
  102. package/temp/rtk/src/filters/basedpyright.toml +47 -0
  103. package/temp/rtk/src/filters/biome.toml +45 -0
  104. package/temp/rtk/src/filters/brew-install.toml +37 -0
  105. package/temp/rtk/src/filters/composer-install.toml +40 -0
  106. package/temp/rtk/src/filters/df.toml +16 -0
  107. package/temp/rtk/src/filters/dotnet-build.toml +64 -0
  108. package/temp/rtk/src/filters/du.toml +16 -0
  109. package/temp/rtk/src/filters/fail2ban-client.toml +15 -0
  110. package/temp/rtk/src/filters/gcc.toml +49 -0
  111. package/temp/rtk/src/filters/gcloud.toml +22 -0
  112. package/temp/rtk/src/filters/hadolint.toml +24 -0
  113. package/temp/rtk/src/filters/helm.toml +29 -0
  114. package/temp/rtk/src/filters/iptables.toml +27 -0
  115. package/temp/rtk/src/filters/jj.toml +28 -0
  116. package/temp/rtk/src/filters/jq.toml +24 -0
  117. package/temp/rtk/src/filters/make.toml +41 -0
  118. package/temp/rtk/src/filters/markdownlint.toml +24 -0
  119. package/temp/rtk/src/filters/mix-compile.toml +27 -0
  120. package/temp/rtk/src/filters/mix-format.toml +15 -0
  121. package/temp/rtk/src/filters/mvn-build.toml +44 -0
  122. package/temp/rtk/src/filters/oxlint.toml +43 -0
  123. package/temp/rtk/src/filters/ping.toml +63 -0
  124. package/temp/rtk/src/filters/pio-run.toml +40 -0
  125. package/temp/rtk/src/filters/poetry-install.toml +50 -0
  126. package/temp/rtk/src/filters/pre-commit.toml +35 -0
  127. package/temp/rtk/src/filters/ps.toml +16 -0
  128. package/temp/rtk/src/filters/quarto-render.toml +41 -0
  129. package/temp/rtk/src/filters/rsync.toml +48 -0
  130. package/temp/rtk/src/filters/shellcheck.toml +27 -0
  131. package/temp/rtk/src/filters/shopify-theme.toml +29 -0
  132. package/temp/rtk/src/filters/skopeo.toml +45 -0
  133. package/temp/rtk/src/filters/sops.toml +16 -0
  134. package/temp/rtk/src/filters/ssh.toml +44 -0
  135. package/temp/rtk/src/filters/stat.toml +34 -0
  136. package/temp/rtk/src/filters/swift-build.toml +41 -0
  137. package/temp/rtk/src/filters/systemctl-status.toml +33 -0
  138. package/temp/rtk/src/filters/terraform-plan.toml +35 -0
  139. package/temp/rtk/src/filters/tofu-fmt.toml +16 -0
  140. package/temp/rtk/src/filters/tofu-init.toml +38 -0
  141. package/temp/rtk/src/filters/tofu-plan.toml +35 -0
  142. package/temp/rtk/src/filters/tofu-validate.toml +17 -0
  143. package/temp/rtk/src/filters/trunk-build.toml +39 -0
  144. package/temp/rtk/src/filters/ty.toml +50 -0
  145. package/temp/rtk/src/filters/uv-sync.toml +37 -0
  146. package/temp/rtk/src/filters/xcodebuild.toml +99 -0
  147. package/temp/rtk/src/filters/yamllint.toml +25 -0
  148. package/temp/rtk/src/find_cmd.rs +598 -0
  149. package/temp/rtk/src/format_cmd.rs +386 -0
  150. package/temp/rtk/src/gain.rs +723 -0
  151. package/temp/rtk/src/gh_cmd.rs +1651 -0
  152. package/temp/rtk/src/git.rs +2012 -0
  153. package/temp/rtk/src/go_cmd.rs +592 -0
  154. package/temp/rtk/src/golangci_cmd.rs +254 -0
  155. package/temp/rtk/src/grep_cmd.rs +288 -0
  156. package/temp/rtk/src/gt_cmd.rs +810 -0
  157. package/temp/rtk/src/hook_audit_cmd.rs +283 -0
  158. package/temp/rtk/src/hook_check.rs +171 -0
  159. package/temp/rtk/src/init.rs +1859 -0
  160. package/temp/rtk/src/integrity.rs +537 -0
  161. package/temp/rtk/src/json_cmd.rs +231 -0
  162. package/temp/rtk/src/learn/detector.rs +628 -0
  163. package/temp/rtk/src/learn/mod.rs +119 -0
  164. package/temp/rtk/src/learn/report.rs +184 -0
  165. package/temp/rtk/src/lint_cmd.rs +694 -0
  166. package/temp/rtk/src/local_llm.rs +316 -0
  167. package/temp/rtk/src/log_cmd.rs +248 -0
  168. package/temp/rtk/src/ls.rs +324 -0
  169. package/temp/rtk/src/main.rs +2482 -0
  170. package/temp/rtk/src/mypy_cmd.rs +389 -0
  171. package/temp/rtk/src/next_cmd.rs +241 -0
  172. package/temp/rtk/src/npm_cmd.rs +236 -0
  173. package/temp/rtk/src/parser/README.md +267 -0
  174. package/temp/rtk/src/parser/error.rs +46 -0
  175. package/temp/rtk/src/parser/formatter.rs +336 -0
  176. package/temp/rtk/src/parser/mod.rs +311 -0
  177. package/temp/rtk/src/parser/types.rs +119 -0
  178. package/temp/rtk/src/pip_cmd.rs +302 -0
  179. package/temp/rtk/src/playwright_cmd.rs +479 -0
  180. package/temp/rtk/src/pnpm_cmd.rs +573 -0
  181. package/temp/rtk/src/prettier_cmd.rs +221 -0
  182. package/temp/rtk/src/prisma_cmd.rs +482 -0
  183. package/temp/rtk/src/psql_cmd.rs +382 -0
  184. package/temp/rtk/src/pytest_cmd.rs +384 -0
  185. package/temp/rtk/src/read.rs +217 -0
  186. package/temp/rtk/src/rewrite_cmd.rs +50 -0
  187. package/temp/rtk/src/ruff_cmd.rs +402 -0
  188. package/temp/rtk/src/runner.rs +271 -0
  189. package/temp/rtk/src/summary.rs +297 -0
  190. package/temp/rtk/src/tee.rs +405 -0
  191. package/temp/rtk/src/telemetry.rs +248 -0
  192. package/temp/rtk/src/toml_filter.rs +1655 -0
  193. package/temp/rtk/src/tracking.rs +1416 -0
  194. package/temp/rtk/src/tree.rs +209 -0
  195. package/temp/rtk/src/tsc_cmd.rs +259 -0
  196. package/temp/rtk/src/utils.rs +432 -0
  197. package/temp/rtk/src/verify_cmd.rs +47 -0
  198. package/temp/rtk/src/vitest_cmd.rs +385 -0
  199. package/temp/rtk/src/wc_cmd.rs +401 -0
  200. package/temp/rtk/src/wget_cmd.rs +260 -0
  201. package/temp/rtk/tests/fixtures/dotnet/build_failed.txt +11 -0
  202. package/temp/rtk/tests/fixtures/dotnet/format_changes.json +31 -0
  203. package/temp/rtk/tests/fixtures/dotnet/format_empty.json +1 -0
  204. package/temp/rtk/tests/fixtures/dotnet/format_success.json +12 -0
  205. package/temp/rtk/tests/fixtures/dotnet/test_failed.txt +18 -0
@@ -0,0 +1,432 @@
1
+ # RTK Token Savings Audit Guide
2
+
3
+ Complete guide to analyzing your rtk token savings with temporal breakdowns and data exports.
4
+
5
+ ## Overview
6
+
7
+ The `rtk gain` command provides comprehensive analytics for tracking your token savings across time periods.
8
+
9
+ **Database Location**: `~/.local/share/rtk/history.db`
10
+ **Retention Policy**: 90 days
11
+ **Scope**: Global across all projects, worktrees, and Claude sessions
12
+
13
+ ## Quick Reference
14
+
15
+ ```bash
16
+ # Default summary view
17
+ rtk gain
18
+
19
+ # Temporal breakdowns
20
+ rtk gain --daily # All days since tracking started
21
+ rtk gain --weekly # Aggregated by week
22
+ rtk gain --monthly # Aggregated by month
23
+ rtk gain --all # Show all breakdowns at once
24
+
25
+ # Export formats
26
+ rtk gain --all --format json > savings.json
27
+ rtk gain --all --format csv > savings.csv
28
+
29
+ # Combined flags
30
+ rtk gain --graph --history --quota # Classic view with extras
31
+ rtk gain --daily --weekly --monthly # Multiple breakdowns
32
+ ```
33
+
34
+ ## Command Options
35
+
36
+ ### Temporal Flags
37
+
38
+ | Flag | Description | Output |
39
+ |------|-------------|--------|
40
+ | `--daily` | Day-by-day breakdown | All days with full metrics |
41
+ | `--weekly` | Week-by-week breakdown | Aggregated by Sunday-Saturday weeks |
42
+ | `--monthly` | Month-by-month breakdown | Aggregated by calendar month |
43
+ | `--all` | All time breakdowns | Daily + Weekly + Monthly combined |
44
+
45
+ ### Classic Flags (still available)
46
+
47
+ | Flag | Description |
48
+ |------|-------------|
49
+ | `--graph` | ASCII graph of last 30 days |
50
+ | `--history` | Recent 10 commands |
51
+ | `--quota` | Monthly quota analysis (Pro/5x/20x tiers) |
52
+ | `--tier <TIER>` | Quota tier: pro, 5x, 20x (default: 20x) |
53
+
54
+ ### Export Formats
55
+
56
+ | Format | Flag | Use Case |
57
+ |--------|------|----------|
58
+ | `text` | `--format text` (default) | Terminal display |
59
+ | `json` | `--format json` | Programmatic analysis, APIs |
60
+ | `csv` | `--format csv` | Excel, data analysis, plotting |
61
+
62
+ ## Output Examples
63
+
64
+ ### Daily Breakdown
65
+
66
+ ```
67
+ 📅 Daily Breakdown (3 days)
68
+ ════════════════════════════════════════════════════════════════
69
+ Date Cmds Input Output Saved Save%
70
+ ────────────────────────────────────────────────────────────────
71
+ 2026-01-28 89 380.9K 26.7K 355.8K 93.4%
72
+ 2026-01-29 102 894.5K 32.4K 863.7K 96.6%
73
+ 2026-01-30 5 749 55 694 92.7%
74
+ ────────────────────────────────────────────────────────────────
75
+ TOTAL 196 1.3M 59.2K 1.2M 95.6%
76
+ ```
77
+
78
+ **Metrics explained:**
79
+ - **Cmds**: Number of rtk commands executed
80
+ - **Input**: Estimated tokens from raw command output
81
+ - **Output**: Actual tokens after rtk filtering
82
+ - **Saved**: Input - Output (tokens prevented from reaching LLM)
83
+ - **Save%**: Percentage reduction (Saved / Input × 100)
84
+
85
+ ### Weekly Breakdown
86
+
87
+ ```
88
+ 📊 Weekly Breakdown (1 weeks)
89
+ ════════════════════════════════════════════════════════════════════════
90
+ Week Cmds Input Output Saved Save%
91
+ ────────────────────────────────────────────────────────────────────────
92
+ 01-26 → 02-01 196 1.3M 59.2K 1.2M 95.6%
93
+ ────────────────────────────────────────────────────────────────────────
94
+ TOTAL 196 1.3M 59.2K 1.2M 95.6%
95
+ ```
96
+
97
+ **Week definition**: Sunday to Saturday (ISO week starting Sunday at 00:00)
98
+
99
+ ### Monthly Breakdown
100
+
101
+ ```
102
+ 📆 Monthly Breakdown (1 months)
103
+ ════════════════════════════════════════════════════════════════
104
+ Month Cmds Input Output Saved Save%
105
+ ────────────────────────────────────────────────────────────────
106
+ 2026-01 196 1.3M 59.2K 1.2M 95.6%
107
+ ────────────────────────────────────────────────────────────────
108
+ TOTAL 196 1.3M 59.2K 1.2M 95.6%
109
+ ```
110
+
111
+ **Month format**: YYYY-MM (calendar month)
112
+
113
+ ### JSON Export
114
+
115
+ ```json
116
+ {
117
+ "summary": {
118
+ "total_commands": 196,
119
+ "total_input": 1276098,
120
+ "total_output": 59244,
121
+ "total_saved": 1220217,
122
+ "avg_savings_pct": 95.62
123
+ },
124
+ "daily": [
125
+ {
126
+ "date": "2026-01-28",
127
+ "commands": 89,
128
+ "input_tokens": 380894,
129
+ "output_tokens": 26744,
130
+ "saved_tokens": 355779,
131
+ "savings_pct": 93.41
132
+ }
133
+ ],
134
+ "weekly": [...],
135
+ "monthly": [...]
136
+ }
137
+ ```
138
+
139
+ **Use cases:**
140
+ - API integration
141
+ - Custom dashboards
142
+ - Automated reporting
143
+ - Data pipeline ingestion
144
+
145
+ ### CSV Export
146
+
147
+ ```csv
148
+ # Daily Data
149
+ date,commands,input_tokens,output_tokens,saved_tokens,savings_pct
150
+ 2026-01-28,89,380894,26744,355779,93.41
151
+ 2026-01-29,102,894455,32445,863744,96.57
152
+
153
+ # Weekly Data
154
+ week_start,week_end,commands,input_tokens,output_tokens,saved_tokens,savings_pct
155
+ 2026-01-26,2026-02-01,196,1276098,59244,1220217,95.62
156
+
157
+ # Monthly Data
158
+ month,commands,input_tokens,output_tokens,saved_tokens,savings_pct
159
+ 2026-01,196,1276098,59244,1220217,95.62
160
+ ```
161
+
162
+ **Use cases:**
163
+ - Excel analysis
164
+ - Python/R data science
165
+ - Google Sheets dashboards
166
+ - Matplotlib/seaborn plotting
167
+
168
+ ## Analysis Workflows
169
+
170
+ ### Weekly Progress Tracking
171
+
172
+ ```bash
173
+ # Generate weekly report every Monday
174
+ rtk gain --weekly --format csv > reports/week-$(date +%Y-%W).csv
175
+
176
+ # Compare this week vs last week
177
+ rtk gain --weekly | tail -3
178
+ ```
179
+
180
+ ### Monthly Cost Analysis
181
+
182
+ ```bash
183
+ # Export monthly data for budget review
184
+ rtk gain --monthly --format json | jq '.monthly[] |
185
+ {month, saved_tokens, quota_pct: (.saved_tokens / 6000000 * 100)}'
186
+ ```
187
+
188
+ ### Data Science Analysis
189
+
190
+ ```python
191
+ import pandas as pd
192
+ import subprocess
193
+
194
+ # Get CSV data
195
+ result = subprocess.run(['rtk', 'gain', '--all', '--format', 'csv'],
196
+ capture_output=True, text=True)
197
+
198
+ # Parse daily data
199
+ lines = result.stdout.split('\n')
200
+ daily_start = lines.index('# Daily Data') + 2
201
+ daily_end = lines.index('', daily_start)
202
+ daily_df = pd.read_csv(pd.StringIO('\n'.join(lines[daily_start:daily_end])))
203
+
204
+ # Plot savings trend
205
+ daily_df['date'] = pd.to_datetime(daily_df['date'])
206
+ daily_df.plot(x='date', y='savings_pct', kind='line')
207
+ ```
208
+
209
+ ### Excel Analysis
210
+
211
+ 1. Export CSV: `rtk gain --all --format csv > rtk-data.csv`
212
+ 2. Open in Excel
213
+ 3. Create pivot tables:
214
+ - Daily trends (line chart)
215
+ - Weekly totals (bar chart)
216
+ - Savings % distribution (histogram)
217
+
218
+ ### Dashboard Creation
219
+
220
+ ```bash
221
+ # Generate dashboard data daily via cron
222
+ 0 0 * * * rtk gain --all --format json > /var/www/dashboard/rtk-stats.json
223
+
224
+ # Serve with static site
225
+ cat > index.html <<'EOF'
226
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
227
+ <canvas id="savings"></canvas>
228
+ <script>
229
+ fetch('rtk-stats.json')
230
+ .then(r => r.json())
231
+ .then(data => {
232
+ new Chart(document.getElementById('savings'), {
233
+ type: 'line',
234
+ data: {
235
+ labels: data.daily.map(d => d.date),
236
+ datasets: [{
237
+ label: 'Daily Savings %',
238
+ data: data.daily.map(d => d.savings_pct)
239
+ }]
240
+ }
241
+ });
242
+ });
243
+ </script>
244
+ EOF
245
+ ```
246
+
247
+ ## Understanding Token Savings
248
+
249
+ ### Token Estimation
250
+
251
+ rtk estimates tokens using `text.len() / 4` (4 characters per token average).
252
+
253
+ **Accuracy**: ±10% compared to actual LLM tokenization (sufficient for trends).
254
+
255
+ ### Savings Calculation
256
+
257
+ ```
258
+ Input Tokens = estimate_tokens(raw_command_output)
259
+ Output Tokens = estimate_tokens(rtk_filtered_output)
260
+ Saved Tokens = Input - Output
261
+ Savings % = (Saved / Input) × 100
262
+ ```
263
+
264
+ ### Typical Savings by Command
265
+
266
+ | Command | Typical Savings | Mechanism |
267
+ |---------|----------------|-----------|
268
+ | `rtk git status` | 77-93% | Compact stat format |
269
+ | `rtk eslint` | 84% | Group by rule |
270
+ | `rtk vitest run` | 94-99% | Show failures only |
271
+ | `rtk find` | 75% | Tree format |
272
+ | `rtk pnpm list` | 70-90% | Compact dependencies |
273
+ | `rtk grep` | 70% | Truncate + group |
274
+
275
+ ## Database Management
276
+
277
+ ### Inspect Raw Data
278
+
279
+ ```bash
280
+ # Location
281
+ ls -lh ~/.local/share/rtk/history.db
282
+
283
+ # Schema
284
+ sqlite3 ~/.local/share/rtk/history.db ".schema"
285
+
286
+ # Recent records
287
+ sqlite3 ~/.local/share/rtk/history.db \
288
+ "SELECT timestamp, rtk_cmd, saved_tokens FROM commands
289
+ ORDER BY timestamp DESC LIMIT 10"
290
+
291
+ # Total database size
292
+ sqlite3 ~/.local/share/rtk/history.db \
293
+ "SELECT COUNT(*),
294
+ SUM(saved_tokens) as total_saved,
295
+ MIN(DATE(timestamp)) as first_record,
296
+ MAX(DATE(timestamp)) as last_record
297
+ FROM commands"
298
+ ```
299
+
300
+ ### Backup & Restore
301
+
302
+ ```bash
303
+ # Backup
304
+ cp ~/.local/share/rtk/history.db ~/backups/rtk-history-$(date +%Y%m%d).db
305
+
306
+ # Restore
307
+ cp ~/backups/rtk-history-20260128.db ~/.local/share/rtk/history.db
308
+
309
+ # Export for migration
310
+ sqlite3 ~/.local/share/rtk/history.db .dump > rtk-backup.sql
311
+ ```
312
+
313
+ ### Cleanup
314
+
315
+ ```bash
316
+ # Manual cleanup (older than 90 days)
317
+ sqlite3 ~/.local/share/rtk/history.db \
318
+ "DELETE FROM commands WHERE timestamp < datetime('now', '-90 days')"
319
+
320
+ # Reset all data
321
+ rm ~/.local/share/rtk/history.db
322
+ # Next rtk command will recreate database
323
+ ```
324
+
325
+ ## Integration Examples
326
+
327
+ ### GitHub Actions CI/CD
328
+
329
+ ```yaml
330
+ # .github/workflows/rtk-stats.yml
331
+ name: RTK Stats Report
332
+ on:
333
+ schedule:
334
+ - cron: '0 0 * * 1' # Weekly on Monday
335
+ jobs:
336
+ stats:
337
+ runs-on: ubuntu-latest
338
+ steps:
339
+ - uses: actions/checkout@v3
340
+ - name: Install rtk
341
+ run: cargo install --path .
342
+ - name: Generate report
343
+ run: |
344
+ rtk gain --weekly --format json > stats/week-$(date +%Y-%W).json
345
+ - name: Commit stats
346
+ run: |
347
+ git add stats/
348
+ git commit -m "Weekly rtk stats"
349
+ git push
350
+ ```
351
+
352
+ ### Slack Bot
353
+
354
+ ```python
355
+ import subprocess
356
+ import json
357
+ import requests
358
+
359
+ def send_rtk_stats():
360
+ result = subprocess.run(['rtk', 'gain', '--format', 'json'],
361
+ capture_output=True, text=True)
362
+ data = json.loads(result.stdout)
363
+
364
+ message = f"""
365
+ 📊 *RTK Token Savings Report*
366
+
367
+ Total Saved: {data['summary']['total_saved']:,} tokens
368
+ Savings Rate: {data['summary']['avg_savings_pct']:.1f}%
369
+ Commands: {data['summary']['total_commands']}
370
+ """
371
+
372
+ requests.post(SLACK_WEBHOOK_URL, json={'text': message})
373
+ ```
374
+
375
+ ## Troubleshooting
376
+
377
+ ### No data showing
378
+
379
+ ```bash
380
+ # Check if database exists
381
+ ls -lh ~/.local/share/rtk/history.db
382
+
383
+ # Check record count
384
+ sqlite3 ~/.local/share/rtk/history.db "SELECT COUNT(*) FROM commands"
385
+
386
+ # Run a tracked command to generate data
387
+ rtk git status
388
+ ```
389
+
390
+ ### Export fails
391
+
392
+ ```bash
393
+ # Check for pipe errors
394
+ rtk gain --format json 2>&1 | tee /tmp/rtk-debug.log | jq .
395
+
396
+ # Use release build to avoid warnings
397
+ cargo build --release
398
+ ./target/release/rtk gain --format json
399
+ ```
400
+
401
+ ### Incorrect statistics
402
+
403
+ Token estimation is a heuristic. For precise measurements:
404
+
405
+ ```bash
406
+ # Install tiktoken
407
+ pip install tiktoken
408
+
409
+ # Validate estimation
410
+ rtk git status > output.txt
411
+ python -c "
412
+ import tiktoken
413
+ enc = tiktoken.get_encoding('cl100k_base')
414
+ text = open('output.txt').read()
415
+ print(f'Actual tokens: {len(enc.encode(text))}')
416
+ print(f'rtk estimate: {len(text) // 4}')
417
+ "
418
+ ```
419
+
420
+ ## Best Practices
421
+
422
+ 1. **Regular Exports**: `rtk gain --all --format json > monthly-$(date +%Y%m).json`
423
+ 2. **Trend Analysis**: Compare week-over-week savings to identify optimization opportunities
424
+ 3. **Command Profiling**: Use `--history` to see which commands save the most
425
+ 4. **Backup Before Cleanup**: Always backup before manual database operations
426
+ 5. **CI Integration**: Track savings across team in shared dashboards
427
+
428
+ ## See Also
429
+
430
+ - [README.md](../README.md) - Full rtk documentation
431
+ - [CLAUDE.md](../CLAUDE.md) - Claude Code integration guide
432
+ - [ARCHITECTURE.md](../ARCHITECTURE.md) - Technical architecture