Get Shaka running in under 5 minutes.
- Bun runtime (v1.0+)
- Git
- At least one AI coding assistant:
- Claude Code (
claudeCLI) - opencode (
opencodeCLI)
- Claude Code (
# Clone the repository
git clone https://github.com/jgmontoya/shaka.git
cd shaka
# Install dependencies
bun install
# Register shaka globally (makes `shaka` available in PATH)
bun link
# Initialize Shaka
shaka init
# Verify installation
shaka doctorNote: The repo must stay on disk —
bun linkcreates a symlink, so deleting the repo breaks theshakacommand and hook imports.
-
Creates user-owned directories at
~/.config/shaka/:user/— Your personal context files (never overwritten on upgrade)customizations/— Your overrides for system files (survives upgrades)memory/— Session data (created as needed)
-
Symlinks
system/— Points~/.config/shaka/system/to<repo>/defaults/system/. This meansgit pullorshaka updateinstantly updates the framework without copying files. -
Links the shaka library — Runs
bun linkso that hooks canimport { ... } from "shaka"to access shared utilities (config, inference, security, etc.). -
Copies user templates — Deploys starter files from
defaults/user/to~/.config/shaka/user/(per-file, never overwrites existing files). New templates added in future versions are deployed automatically. -
Copies default config — Creates
~/.config/shaka/config.jsonif it doesn't exist. -
Detects providers (Claude Code, opencode) and installs hooks for each.
-
Tracks version — Writes
.shaka-versionin the shaka home directory.
shaka doctorExpected output:
Shaka Doctor
Checking system health...
Shaka home: /Users/you/.config/shaka
✓ config.json exists
Provider status:
claude:
CLI installed: ✓ yes
Hooks configured: ✓ yes
opencode:
CLI installed: ✓ yes
Hooks configured: ✓ yes
────────────────────────────────────────
✅ All systems operational.
Edit ~/.config/shaka/config.json to customize:
{
"version": "0.5.0",
"reasoning": {
"enabled": true
},
"providers": {
"claude": {
"enabled": true
},
"opencode": {
"enabled": true
}
},
"assistant": {
"name": "Shaka"
},
"principal": {
"name": "Your Name"
}
}Files in ~/.config/shaka/user/ are loaded at session start:
| File | Purpose |
|---|---|
user.md |
Who you are (name, timezone, handles) |
assistant.md |
How your assistant behaves |
missions.md |
High-level purpose (TELOS-lite) |
goals.md |
Specific objectives |
projects.md |
Active projects and paths |
tech-stack.md |
Your preferred technologies |
Override any system file by copying it to customizations/:
# Customize the reasoning framework
cp ~/.config/shaka/system/base-reasoning-framework.md \
~/.config/shaka/customizations/base-reasoning-framework.md
# Edit your version
$EDITOR ~/.config/shaka/customizations/base-reasoning-framework.mdFiles in customizations/ take precedence over system/.
Use the built-in update command:
shaka updateThis will:
- Fetch the latest release tags from the remote
- Compare your current version against the latest
vX.Y.Ztag - Warn and ask for confirmation on major version upgrades
- Check out the new tag, run
bun install, and re-initialize
Your user/, customizations/, and memory/ directories are never touched during upgrades. The system/ symlink ensures framework updates are instant.
To skip the major-version confirmation prompt:
shaka update --forceRun init to install hooks:
shaka initRun init to create the directory structure:
shaka initRe-register the CLI:
cd /path/to/shaka
bun linkInit expects system/ to be a symlink. Move any custom files to customizations/, remove the directory, and re-run init:
mv ~/.config/shaka/system/my-custom-file.md ~/.config/shaka/customizations/
rm -rf ~/.config/shaka/system
shaka initEnsure the CLI is in your PATH:
# Claude Code
which claude
# opencode
which opencodeCheck the provider-specific configuration:
# Claude Code - check settings.json
cat ~/.claude/settings.json | grep -A 10 hooks
# opencode - check plugins directory
ls -la .opencode/plugins/Hooks import shared code via import { ... } from "shaka". If you see import resolution errors:
# Re-link the library
cd /path/to/shaka
bun link
cd ~/.config/shaka
bun link shakaOr simply re-run shaka init, which handles this automatically.
# Remove hooks from providers
# Claude Code: Remove shaka entries from ~/.claude/settings.json
# opencode: Delete .opencode/plugins/shaka.ts
# Remove Shaka configuration
# system/ is a symlink — removing it doesn't delete the repo files
rm ~/.config/shaka/system
# Remove everything (warning: deletes your customizations and memory)
rm -rf ~/.config/shaka- Edit
~/.config/shaka/user/user.mdto tell Shaka about yourself - Run
claudeoropencodeand see the context injection in action - Explore
~/.config/shaka/system/to understand available hooks and tools - Run
shaka updateperiodically to get the latest framework updates