sharkbait 1.0.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 (4) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +572 -0
  3. package/dist/cli.js +130415 -0
  4. package/package.json +96 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shyam Sridhar
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,572 @@
1
+ # Sharkbait
2
+
3
+ <p align="center">
4
+ <img src="public/gifs/sharkbait-ooh-ha-ha.gif" alt="Sharkbait OOH HA HA!" width="400">
5
+ </p>
6
+
7
+ <p align="center">
8
+ <strong>"Sharkbait, ooh ha ha!"</strong><br>
9
+ <em>An AI coding assistant that won't leave you swimming in circles</em>
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="#features">Features</a> •
14
+ <a href="#installation">Installation</a> •
15
+ <a href="#skills--plugins">Skills & Plugins</a> •
16
+ <a href="#usage">Usage</a> •
17
+ <a href="#architecture">Architecture</a> •
18
+ <a href="#license">License</a>
19
+ </p>
20
+
21
+ <p align="center">
22
+ <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License">
23
+ <img src="https://img.shields.io/badge/runtime-Bun-orange.svg" alt="Bun">
24
+ <img src="https://img.shields.io/badge/language-TypeScript-blue.svg" alt="TypeScript">
25
+ <img src="https://img.shields.io/badge/status-experimental-red.svg" alt="Experimental">
26
+ <img src="https://img.shields.io/badge/fish_are_friends-not_food-brightgreen.svg" alt="Fish are friends">
27
+ <img src="https://img.shields.io/badge/tools-36-blueviolet.svg" alt="36 Tools">
28
+ <img src="https://img.shields.io/badge/agents-7-teal.svg" alt="7 Agents">
29
+ </p>
30
+
31
+ <p align="center">
32
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
33
+ </p>
34
+
35
+ > **Experimental**: This project is under active development. APIs may change, features may break, and Dory might forget what she was doing. Use at your own risk!
36
+
37
+ > *"Just keep coding, just keep coding..."* — Dory, probably
38
+
39
+ Sharkbait is a CLI-based AI coding assistant built with Bun and TypeScript. It uses the **OpenAI Responses API** (not Chat Completions) for enhanced tool calling and streaming. Like Nemo escaping the dentist's fish tank, it helps you break free from tedious coding tasks.
40
+
41
+ The development environment is powered by **Anthropic skills** and **Claude Code plugins** that provide specialized workflows across design, engineering, research, and operations.
42
+
43
+ <p align="center">
44
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
45
+ </p>
46
+
47
+ ## The ASCII Shark
48
+
49
+ ```
50
+ +.+++.
51
+ ## ....-### -
52
+ + ###++++-#++-
53
+ - ##+-++--+-+--.
54
+ #++++-+-------..
55
+ - -#+-----++-.....
56
+ ##-.----+-. ###########
57
+ #..-++--. +#####+. .. .
58
+ ####..--+--..##. ...-+####++-.
59
+ # . .-.--+-. ## .+++++++++++-++..
60
+ # ##+### -+--.## .--+++++++++++++-+
61
+ + .#+-###.--+.-# -+--------+++++-...
62
+ -#.-###.--- #+.+---... ...-+++-.###
63
+ ###.--+##-.++.## ---...####...-+++- .###
64
+ # .. ##- --## -#.-#.-+...## ###.-++++ ##+
65
+ #- ###+--+#---#- # +++-..#-.+# +-.-##. ##-.-+++#####.
66
+ ## ##---+##+--++#+.+-+-+--+-.+#.+-.####--.###+.-+++.###+.
67
+ # .#+++----++-+-++.#..+-.---.#+---..########..-++++-....-+##-.
68
+ #. #++##++--+----+--#.#-----.#+-----........-+++++++++++-----+#.
69
+ #- #++-+++++++--+++.# -#..--.+#.--------....--+++++--.--.#++++#+
70
+ +# ##---+++++++---+.+#.-#+---.#+..-------++--.....--++-.++--++#.
71
+ # .##+++--++-++-+-....++- ....+#...----++--++####++..-##++++##
72
+ # ###+++-++-++.. . +##..+.+#-......------....+#+++++##-
73
+ # #####+++. ## ++--+. .. .-###########-
74
+ #. .+. ..- +. .###-
75
+ #-. + #
76
+ ```
77
+
78
+ <p align="center">
79
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
80
+ </p>
81
+
82
+ ## Features
83
+
84
+ <p align="center">
85
+ <img src="public/gifs/nemo-swimming.gif" alt="Nemo Swimming" width="350">
86
+ </p>
87
+
88
+ - **Fast** — Built on Bun. Swims through code faster than Marlin crossing the EAC
89
+ - **Responses API** — Uses OpenAI's Responses API for better streaming and tool calling
90
+ - **Tool-equipped** — File ops, shell commands, Git, GitHub. Everything but the Ring of Fire
91
+ - **Persistent Memory** — Beads give your AI long-term memory that survives sessions (unlike Dory)
92
+ - **Git-backed Context** — Your AI's memory lives in your repo. Clone it, branch it, merge it
93
+ - **Beautiful UI** — Ink-based terminal interface. P. Sherman would approve
94
+ - **Safe** — Confirms dangerous operations before executing. No surprise `rm -rf` moments
95
+
96
+ ### The Memory Problem
97
+
98
+ Most AI coding assistants have the memory of... well, Dory. They forget context between sessions, lose track of what you were working on, and make you repeat yourself constantly.
99
+
100
+ **Sharkbait is different.** Built-in **Beads** provide persistent, git-backed memory that survives across sessions:
101
+
102
+ - **Task Memory**: Create a bead for a feature, and Sharkbait remembers the context, decisions, and progress — even after you close the terminal
103
+ - **Git-Native**: Beads are stored alongside your code in git, so your AI's memory travels with your repo
104
+ - **No External Services**: Your context stays local. No cloud sync, no API calls for memory — just git
105
+
106
+ <p align="center">
107
+ <picture>
108
+ <source media="(prefers-color-scheme: dark)" srcset="public/images/terminal-welcome.png">
109
+ <source media="(prefers-color-scheme: light)" srcset="public/images/terminal-welcome.png">
110
+ <img src="public/images/terminal-welcome.png" alt="Sharkbait Terminal" width="700" style="border-radius: 8px;">
111
+ </picture>
112
+ </p>
113
+
114
+ <p align="center">
115
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
116
+ </p>
117
+
118
+ ## Skills & Plugins
119
+
120
+ <p align="center">
121
+ <img src="public/gifs/just-keep-swimming.gif" alt="Just Keep Swimming" width="350">
122
+ </p>
123
+
124
+ Sharkbait's development environment ships with the full [Anthropic Skills](https://github.com/anthropics/skills) catalog and a curated set of Claude Code plugins. These are used during development with Claude Code — they are not runtime features of the Sharkbait application itself.
125
+
126
+ ### Installed Anthropic Skills
127
+
128
+ | Category | Skills | What They Do |
129
+ |----------|--------|--------------|
130
+ | **Design** | `canvas-design`, `frontend-design`, `brand-guidelines`, `theme-factory` | Visual art, production-grade UI, brand colors, themed styling |
131
+ | **Art & Media** | `algorithmic-art`, `slack-gif-creator` | Generative art with p5.js, animated GIF creation |
132
+ | **Documents** | `docx`, `pdf`, `pptx`, `xlsx`, `doc-coauthoring` | Create/edit Office docs, PDFs, spreadsheets, co-author documents |
133
+ | **Engineering** | `web-artifacts-builder`, `mcp-builder`, `webapp-testing` | Multi-component web apps, MCP servers, browser testing |
134
+ | **Meta** | `skill-creator`, `internal-comms` | Create new skills, write internal communications |
135
+
136
+ ### Active Plugins
137
+
138
+ <details>
139
+ <summary><strong>Core Engineering (14 plugins)</strong></summary>
140
+
141
+ | Plugin | Purpose |
142
+ |--------|---------|
143
+ | `compound-engineering` | Multi-agent workflows: plan, brainstorm, review, work |
144
+ | `feature-dev` | Guided feature development with codebase understanding |
145
+ | `code-review` | PR review with specialized analysis agents |
146
+ | `pr-review-toolkit` | Silent failure hunting, type design, test coverage |
147
+ | `code-simplifier` | Post-implementation code clarity pass |
148
+ | `coderabbit` | AI code review on changes |
149
+ | `hookify` | Create hooks to prevent unwanted behaviors |
150
+ | `plugin-dev` | Build and validate Claude Code plugins |
151
+ | `agent-sdk-dev` | Verify Agent SDK applications |
152
+ | `claude-code-setup` | Automation recommendations |
153
+ | `claude-md-management` | CLAUDE.md auditing and improvement |
154
+ | `playground` | Interactive HTML playground creation |
155
+ | `commit-commands` | Commit, push, PR workflows |
156
+ | `github` | GitHub integration |
157
+
158
+ </details>
159
+
160
+ <details>
161
+ <summary><strong>Language Servers (11 LSPs)</strong></summary>
162
+
163
+ | Plugin | Language |
164
+ |--------|----------|
165
+ | `typescript-lsp` | TypeScript/JavaScript |
166
+ | `pyright-lsp` | Python |
167
+ | `gopls-lsp` | Go |
168
+ | `clangd-lsp` | C/C++ |
169
+ | `csharp-lsp` | C# |
170
+ | `jdtls-lsp` | Java |
171
+ | `kotlin-lsp` | Kotlin |
172
+ | `lua-lsp` | Lua |
173
+ | `php-lsp` | PHP |
174
+ | `rust-analyzer-lsp` | Rust |
175
+ | `swift-lsp` | Swift |
176
+
177
+ </details>
178
+
179
+ <details>
180
+ <summary><strong>Knowledge Work (10 plugins)</strong></summary>
181
+
182
+ | Plugin | Domain |
183
+ |--------|--------|
184
+ | `data` | SQL, dashboards, visualizations, statistical analysis |
185
+ | `marketing` | Campaigns, brand voice, SEO, content, competitive analysis |
186
+ | `finance` | Journal entries, reconciliation, SOX, variance analysis |
187
+ | `legal` | Contract review, NDA triage, compliance checks |
188
+ | `product-management` | Specs, roadmaps, sprint planning, user research |
189
+ | `sales` | Pipeline, forecasting, outreach, competitive intel |
190
+ | `customer-support` | Triage, research, escalation, KB articles |
191
+ | `enterprise-search` | Cross-source search, knowledge synthesis |
192
+ | `productivity` | Task management, memory systems |
193
+ | `bio-research` | PubMed, ChEMBL, clinical trials, bioRxiv, scRNA-seq |
194
+
195
+ </details>
196
+
197
+ <details>
198
+ <summary><strong>Utilities & AI (5 plugins)</strong></summary>
199
+
200
+ | Plugin | Purpose |
201
+ |--------|---------|
202
+ | `ralph-loop` | Autonomous agent loop |
203
+ | `huggingface-skills` | HF Hub: models, datasets, training, evaluation |
204
+ | `context7` | Up-to-date library documentation |
205
+ | `playwright` | Browser automation and testing |
206
+ | `frontend-design` | Production-grade frontend components |
207
+
208
+ </details>
209
+
210
+ ### Compound Engineering Workflows
211
+
212
+ The `compound-engineering` plugin provides multi-agent orchestration:
213
+
214
+ | Workflow | Command | Description |
215
+ |----------|---------|-------------|
216
+ | **Plan** | `/plan` | Transform feature descriptions into structured plans |
217
+ | **Brainstorm** | `/brainstorm` | Explore requirements through collaborative ideation |
218
+ | **Work** | `/work` | Execute plans efficiently with quality gates |
219
+ | **Review** | `/review` | Exhaustive multi-agent code review |
220
+ | **Compound** | `/compound` | Document solved problems for future reference |
221
+
222
+ <p align="center">
223
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
224
+ </p>
225
+
226
+ ## Installation
227
+
228
+ ```bash
229
+ # From source
230
+ git clone https://github.com/shyamsridhar123/sharkbait.git
231
+ cd sharkbait
232
+ bun install
233
+ bun run build:binary
234
+ ```
235
+
236
+ ## Prerequisites
237
+
238
+ - **Bun** >= 1.0.0
239
+ - **Git** >= 2.30
240
+ - **gh** (GitHub CLI) >= 2.40 (optional, for GitHub features)
241
+ - Azure OpenAI API access
242
+
243
+ ## Configuration
244
+
245
+ 1. Set up your Azure OpenAI credentials:
246
+
247
+ ```bash
248
+ export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com"
249
+ export AZURE_OPENAI_API_KEY="your-api-key"
250
+ export AZURE_OPENAI_DEPLOYMENT="gpt-codex-5.2"
251
+ ```
252
+
253
+ 2. Or create a `.env` file:
254
+
255
+ ```bash
256
+ cp .env.example .env
257
+ # Edit .env with your credentials
258
+ ```
259
+
260
+ <p align="center">
261
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
262
+ </p>
263
+
264
+ ## Usage
265
+
266
+ ### Interactive Chat
267
+
268
+ ```bash
269
+ sharkbait chat
270
+ ```
271
+
272
+ ### One-off Question
273
+
274
+ ```bash
275
+ sharkbait ask "How do I refactor this function?"
276
+ ```
277
+
278
+ ### Autonomous Task Execution
279
+
280
+ ```bash
281
+ sharkbait run "Add input validation to the login endpoint"
282
+ ```
283
+
284
+ ### Initialize in Project
285
+
286
+ ```bash
287
+ cd your-project
288
+ sharkbait init
289
+ ```
290
+
291
+ ## Slash Commands
292
+
293
+ During an interactive chat session, use slash commands for quick actions:
294
+
295
+ ### Navigation
296
+ | Command | Description |
297
+ |---------|-------------|
298
+ | `/cd <path>` | Change working directory (creates if needed) |
299
+ | `/pwd` | Show current working directory |
300
+
301
+ ### Session
302
+ | Command | Description |
303
+ |---------|-------------|
304
+ | `/clear` | Clear message history |
305
+ | `/exit` | Exit Sharkbait (aliases: `/quit`, `/q`) |
306
+
307
+ ### Configuration
308
+ | Command | Description |
309
+ |---------|-------------|
310
+ | `/beads [on\|off]` | Toggle or check Beads task tracking |
311
+ | `/model [name]` | Show or switch the LLM model |
312
+ | `/tasks` | Show Beads task status |
313
+ | `/context [add\|remove\|list]` | Manage context files |
314
+
315
+ ### Actions
316
+ | Command | Description |
317
+ |---------|-------------|
318
+ | `/setup` | Launch interactive setup wizard |
319
+ | `/init` | Initialize Sharkbait in current directory |
320
+ | `/ask <question>` | Ask a one-off question |
321
+ | `/run <task>` | Execute a task autonomously |
322
+ | `/review <file>` | Run parallel code review (bugs, security, style, performance) |
323
+
324
+ ### Information
325
+ | Command | Description |
326
+ |---------|-------------|
327
+ | `/version` | Show Sharkbait version |
328
+ | `/help [command]` | Show available commands or help for a specific command |
329
+
330
+ **Example:** Run a parallel code review:
331
+ ```
332
+ > /review src/auth.ts
333
+ Starting parallel review: bugs, security, style, performance on src/auth.ts
334
+ [Progress bars for each reviewer mode]
335
+ Parallel Review Complete (12.3s)
336
+ ```
337
+
338
+ [Full Slash Commands Reference](docs/COMMANDS.md)
339
+
340
+ <p align="center">
341
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
342
+ </p>
343
+
344
+ ## Available Tools
345
+
346
+ Sharkbait has access to 36 tools across different categories:
347
+
348
+ | Category | Tools |
349
+ |----------|-------|
350
+ | **File Operations** | `read_file`, `write_file`, `edit_file`, `list_directory`, `search_files`, `grep_search`, `create_directory` |
351
+ | **Shell** | `run_command`, `open_file` |
352
+ | **Beads** | `beads_status`, `beads_init`, `beads_ready`, `beads_create`, `beads_show`, `beads_done`, `beads_add_dependency`, `beads_list` |
353
+ | **Git** | `git_status`, `git_diff`, `git_commit`, `git_push`, `git_branch`, `git_log` |
354
+ | **GitHub** | `github_create_pr`, `github_list_prs`, `github_merge_pr`, `github_create_issue`, `github_workflow_status`, `github_pr_view`, `github_issue_list` |
355
+ | **Codebase** | `analyze_codebase`, `find_dependencies`, `map_architecture` |
356
+ | **Web/Fetch** | `fetch_webpage`, `fetch_json`, `web_search` |
357
+
358
+ ## Specialized Agents
359
+
360
+ Sharkbait uses a multi-agent architecture with specialized agents for different tasks:
361
+
362
+ | Agent | Purpose |
363
+ |-------|---------|
364
+ | **Orchestrator** | Routes requests to the appropriate specialized agent based on intent |
365
+ | **Coder** | Writes, modifies, and refactors code with tool access |
366
+ | **Reviewer** | Reviews code for bugs, security, style, and performance issues |
367
+ | **Explorer** | Maps codebase architecture and finds relevant files |
368
+ | **Planner** | Breaks down complex tasks into actionable steps |
369
+ | **Debugger** | Traces issues and diagnoses bugs |
370
+ | **Parallel Executor** | Runs multiple agent tasks concurrently (e.g., parallel code reviews) |
371
+
372
+ <p align="center">
373
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
374
+ </p>
375
+
376
+ ## Architecture
377
+
378
+ <p align="center">
379
+ <img src="public/art/architecture.svg" alt="Sharkbait Architecture Diagram" width="800">
380
+ </p>
381
+
382
+ Sharkbait implements a sophisticated agentic loop with:
383
+
384
+ - **Dual-ledger progress tracking**: Inspired by Microsoft's Magentic-One research
385
+ - **Intelligent context compaction**: Preserves critical context while managing token limits
386
+ - **Action reversibility classification**: Classifies commands as easy/effort/irreversible
387
+ - **Stall detection & recovery**: Automatic re-planning when stuck
388
+
389
+ ### Tech Stack
390
+
391
+ | Component | Technology | Reason |
392
+ |-----------|------------|--------|
393
+ | Runtime | Bun | Fast startup, native TS |
394
+ | Language | TypeScript | Type safety |
395
+ | LLM | Azure OpenAI GPT Codex 5.2 | Enterprise |
396
+ | Memory | Beads (built-in) | Git-backed persistence |
397
+ | GitHub | git + gh CLI | No Octokit needed |
398
+ | CLI UI | ink | React for terminals |
399
+ | CLI Framework | commander | Argument parsing |
400
+
401
+ ## Development
402
+
403
+ ```bash
404
+ # Install dependencies
405
+ bun install
406
+
407
+ # Run in development mode
408
+ bun run dev
409
+
410
+ # Run tests
411
+ bun test
412
+
413
+ # Type check
414
+ bun run typecheck
415
+
416
+ # Build for distribution
417
+ bun run build:binary
418
+
419
+ # Build for all platforms
420
+ bun run build:all
421
+ ```
422
+
423
+ ## Configuration Options
424
+
425
+ | Environment Variable | Description | Default |
426
+ |---------------------|-------------|---------|
427
+ | `AZURE_OPENAI_ENDPOINT` | Azure OpenAI endpoint URL | (required) |
428
+ | `AZURE_OPENAI_API_KEY` | Azure OpenAI API key (falls back to Azure Identity if unset) | (optional) |
429
+ | `AZURE_OPENAI_DEPLOYMENT` | Model deployment name | `gpt-codex-5.2` |
430
+ | `AZURE_OPENAI_API_VERSION` | API version (Responses API requires 2025-03-01-preview+) | `2025-03-01-preview` |
431
+ | `SHARKBAIT_LOG_LEVEL` | Log level (debug/info/warn/error) | `info` |
432
+ | `SHARKBAIT_LOG_FILE` | Enable file logging to ~/.sharkbait/logs | `false` |
433
+ | `SHARKBAIT_LOG_JSON` | Use JSON format for console output | `false` |
434
+ | `SHARKBAIT_LOG_DIR` | Custom log file directory | `~/.sharkbait/logs` |
435
+ | `SHARKBAIT_TELEMETRY` | Enable opt-in anonymous telemetry | `false` |
436
+ | `SHARKBAIT_MAX_CONTEXT_TOKENS` | Max context window tokens | `100000` |
437
+ | `SHARKBAIT_CONFIRM_DESTRUCTIVE` | Require confirmation for destructive commands | `true` |
438
+ | `SHARKBAIT_WORKING_DIR` | Default working directory | (current directory) |
439
+
440
+ <p align="center">
441
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
442
+ </p>
443
+
444
+ ## Logging & Monitoring
445
+
446
+ ### Structured Logging
447
+
448
+ ```bash
449
+ # Enable debug logging
450
+ export SHARKBAIT_LOG_LEVEL=debug
451
+
452
+ # Enable file logging (writes to ~/.sharkbait/logs/sharkbait.log)
453
+ export SHARKBAIT_LOG_FILE=true
454
+
455
+ # Use JSON format for machine-readable logs
456
+ export SHARKBAIT_LOG_JSON=true
457
+ ```
458
+
459
+ Log output includes timestamps, levels, and contextual information:
460
+ ```
461
+ [18:55:21.545] [INFO ] [coder] Agent started processing
462
+ [18:55:21.560] [INFO ] config.load (8ms)
463
+ ```
464
+
465
+ ### File Logging
466
+
467
+ When enabled, logs are written as newline-delimited JSON:
468
+ ```json
469
+ {"timestamp":"2026-01-29T18:55:21.545Z","level":"info","message":"Agent started","context":{"agent":"coder","correlationId":"abc123"}}
470
+ ```
471
+
472
+ Features:
473
+ - Automatic rotation at 10MB (keeps 5 files)
474
+ - Structured JSON for easy parsing
475
+ - Context propagation (agent, tool, correlationId)
476
+
477
+ ### Performance Monitoring
478
+
479
+ Built-in metrics track:
480
+ - LLM call latencies (avg, p50, p90, p99)
481
+ - Tool execution times
482
+ - Memory usage
483
+ - Token consumption
484
+
485
+ ### Distributed Tracing
486
+
487
+ Trace agent execution with OpenTelemetry-inspired spans:
488
+ ```
489
+ agent: coder (1250ms)
490
+ llm: gpt-codex-5.2 (800ms)
491
+ tool: file_read (45ms)
492
+ tool: file_write (120ms)
493
+ ```
494
+
495
+ ### Telemetry (Opt-in)
496
+
497
+ Anonymous usage analytics can be enabled to help improve Sharkbait:
498
+ ```bash
499
+ export SHARKBAIT_TELEMETRY=true
500
+ ```
501
+
502
+ **What's collected:** Event counts (sessions, tool usage), latency metrics
503
+ **What's NOT collected:** File paths, code content, prompts, personal info
504
+
505
+ ### Configuration File
506
+
507
+ Sharkbait stores configuration in `~/.sharkbait/config.json`. Example:
508
+
509
+ ```json
510
+ {
511
+ "azure": {
512
+ "deployment": "gpt-codex-5.2"
513
+ },
514
+ "features": {
515
+ "beads": true,
516
+ "confirmDestructive": true
517
+ },
518
+ "paths": {
519
+ "defaultWorkingDir": "/path/to/your/project"
520
+ }
521
+ }
522
+ ```
523
+
524
+ <p align="center">
525
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
526
+ </p>
527
+
528
+ ## Generative Art Gallery
529
+
530
+ Created with the `algorithmic-art` and `canvas-design` skills:
531
+
532
+ <p align="center">
533
+ <img src="public/art/ocean-flow-field.png" alt="Ocean Flow Field" width="600" style="border-radius: 8px;">
534
+ <br><em>Ocean Flow Field — 4,000 particles tracing noise-driven current vectors</em>
535
+ </p>
536
+
537
+ <p align="center">
538
+ <img src="public/art/coral-reef-pattern.png" alt="Coral Reef Pattern" width="600" style="border-radius: 8px;">
539
+ <br><em>Coral Reef — Circle-packed generative polyp colonies</em>
540
+ </p>
541
+
542
+ <p align="center">
543
+ <img src="public/art/depth-gradient-banner.png" alt="Depth Gradient" width="600" style="border-radius: 8px;">
544
+ <br><em>Depth Gradient — Five ocean zones from sunlit to hadal with bioluminescence</em>
545
+ </p>
546
+
547
+ <p align="center">
548
+ <img src="public/gifs/ocean-divider.gif" alt="~" width="600">
549
+ </p>
550
+
551
+ ## Security
552
+
553
+ Sharkbait includes multiple layers of security:
554
+
555
+ 1. **Blocked commands**: Dangerous patterns like `rm -rf /` are blocked
556
+ 2. **Reversibility classification**: Commands are classified by how easy they are to undo
557
+ 3. **Confirmation prompts**: Destructive operations require confirmation
558
+ 4. **Secret redaction**: API keys and passwords are not logged
559
+
560
+ ## License
561
+
562
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
563
+
564
+ ## Contributing
565
+
566
+ Contributions welcome! Please see the backlog in `backlog/tasks/` for open items.
567
+
568
+ <p align="center">
569
+ <img src="public/gifs/eac-current.gif" alt="EAC Current - Righteous!" width="450">
570
+ <br>
571
+ <em>"You so totally rock, Squirt!" — Crush</em>
572
+ </p>