-
Notifications
You must be signed in to change notification settings - Fork 1
v0.10.0
Released: 2026-04-24 Theme: Runtime enforcement alongside the prompt-level framework. Backend Python hooks that actually fire on Claude Code events β not just prose in SKILL.md.
Kasidit used to be 100% prompt convention. v0.10 adds a real backend: 5 Python/bash hooks wired into Claude Code's event system via an idempotent install.sh. A /kasi Mode command gates framework depth (router default β thin, fast, opt-in escalation). Three overlapping audit agents (code-reviewer, security-auditor, perf-profiler) merge into a single audit-specialist with a --focus flag.
Test suite: 10/10 pass under Python 3.9.19 and default interpreter. Backend validated end-to-end on fake HOME: route β record β route feedback loop works.
For the first time, Kasidit enforces some rules outside the LLM context. Bundled hooks under plugins/kasidit/hooks/:
| Hook | Event | Job |
|---|---|---|
kasidit-route.py |
UserPromptSubmit |
Classify incoming message into a mission kind, query route-memory.jsonl for the shortest successful mode on prior runs of this kind, inject a 1-line [kasidit] kind=... mode=... history=... recommendation into the turn. |
kasidit-verify.py |
PostToolUse + Stop
|
Scan assistant output for [high] confidence labels and cross-check against actual Read / Bash tool calls in the same turn. If a [high] claim has no matching verification call, print a downgrade notice. Also detects "delegating to specialist" claims paired with direct Edit / Write / Bash β the master orchestrator violation. |
kasidit-record.py |
Stop / SubagentStop
|
Parse [kasidit-log|pattern|memory|rule] emit lines from the final assistant output. Append to the matching JSONL in ~/.claude/skills/kasidit/center/. This is how the router's memory grows over time. |
kasidit-update-check.sh |
SessionStart (1Γ/UTC day) |
Hit GitHub Releases, compare vs. installed marketplace.json. Print 1-line update notice if newer. Silent on match / offline. |
kasidit-drift-check.sh |
SessionStart |
Centerlite sync-staleness reminder (>7 days). Accepts both KASIDIT_CENTER and legacy KASIDIT_CENTER_DIR. |
All stdlib-only. Tested under Python 3.9 and default interpreter. Backend-Hooks for payload contract.
What's still convention (not runtime-enforced):
- Rule 1 (mission-driven) β AI decides whether to narrow.
- Mode gating β AI decides whether full framework rules apply. Claude Code's skill harness has no conditional loader.
- The rest of the 11 core rules β followed by prompt instruction, not harness gate.
Honest split disclosed in README.md Honesty section.
A mode toggle to control framework load depth:
/kasi off # skill inactive
/kasi router # default β ~20 line classifier. Escalates only when needed.
/kasi lite # Rule 1 + Rule 11 only (~100 line).
/kasi full # all 11 rules + 8 agents + Gravity (~650 line).
/kasi ultra # full + verifier pass + master self-check each turn.
Heavy /kasi-* commands auto-escalate for the mission, revert on end. Casual chat stays in router. Result: context tax drops roughly ~60% versus always-on framework.
State precedence: session override > project config > global config > default. Caveat: this chain is a spec β no runtime resolver reads and merges the three configs. The AI and the user apply them by reading the files directly. See Kasi-Mode for the full spec.
Install-time question (/kasi-init): one prompt β router / lite / full β saved to ~/.claude/skills/kasidit/center/config.json.
Three prior agents overlapped heavily β same file reads, same checklist mechanics, different focus areas. Merged:
| Old agent | New invocation |
|---|---|
code-reviewer |
audit-specialist --focus=quality |
security-auditor |
audit-specialist --focus=security |
perf-profiler |
audit-specialist --focus=perf |
| β |
audit-specialist --focus=all (runs all three sequentially) |
The old three are kept as name-resolution stubs β empty files so references don't raise missing-agent errors. They do no work. Removed in v0.11.
No auto-mapping router β users and the master orchestrator must invoke audit-specialist --focus=<lens> explicitly. See Agent-Audit-Specialist.
Replaces the previous manual cp instructions. From a cloned repo:
bash plugins/kasidit/install.sh # standard install
bash plugins/kasidit/install.sh --dry-run # preview plan, no writes
bash plugins/kasidit/install.sh --mode=lite # set initial default mode
KASIDIT_SKIP_SETTINGS=1 bash install.sh # hooks only, no settings.json mergeBehavior:
- Copies hooks to
~/.claude/hooks/, chmods +x. - Merges
~/.claude/settings.jsonidempotently (jq primary, python3 stdlib fallback). Backs up tosettings.json.kasidit-backup-<ts>before editing. Keeps last 3 backups. - Registers 6 hook entries across SessionStartΓ2, UserPromptSubmit, PostToolUse, StopΓ2.
- Skips entries already registered (command-string match).
- Seeds Gravity hub: 5 JSONL files (route-memory, patterns, memory, rules, missions), 12 default checklists, 2 knowledge templates,
.last_syncand.last_update_checkstamps. - Writes
center/config.jsonwith the chosen--mode(defaultrouter).
Honors CLAUDE_PLUGIN_ROOT if Claude Code provides it.
Seeded at install under ~/.claude/skills/kasidit/center/checklists/:
| security | code-review | perf | |
|---|---|---|---|
| PHP | β | β | β |
| Node.js | β | β | β |
| Python | β | β | β |
| Go | β | β | β |
4 stacks Γ 3 lenses = 12 files. Pulled into project .kasidit/CHECKLISTS/ by /kasi-init Gravity-pull step or /kasi-pull checklist <name> ad-hoc.
When AI emits tiny structured lines at mission end or pattern discovery, kasidit-record.py parses them and appends to the matching backend store. Cost per mission: ~20-50 tokens emitted by AI.
[kasidit-log] kind=bug-fix-single-file mode=lite turns=2 outcome=pass
[kasidit-pattern] name=sanctum-bearer-auth file=app/Middleware/ApiAuth.php note="..."
[kasidit-memory] fact="project uses PHP 7.4 + Laravel 8"
[kasidit-rule] scope=project rule="no composer update without lock diff"
| Emit | Target store | Consumer |
|---|---|---|
[kasidit-log] |
center/route-memory.jsonl |
router recommendations |
[kasidit-pattern] |
center/patterns.jsonl |
/kasi-pull pattern, PATTERNS.md seed |
[kasidit-memory] |
center/memory.jsonl |
cross-session fact recall |
[kasidit-rule] scope=project |
.kasidit/rules.jsonl |
project-local rules |
[kasidit-rule] scope=global |
center/rules.jsonl |
user-wide rules |
Over months the router gets sharper β the shortest mode that has worked for each mission kind, based on history. Privacy: no prompt text in these files, only metrics. Safe to keep local.
Session-only keyword that spawns min 2 parallel specialists with "skip clarifying questions" pacing.
sudo fix auth bug # 2 parallel specialists, reasonable assumptions
sudo 6 review AuthService.php # 6 agents explicit
/kasi-multi --fast <mission> # equivalent flag form
Not a permission escalation. Does not bypass destructive-op confirmation, tier caps, or scope narrowing. Purely a pacing signal: "trust defaults, go fast, use parallel."
macOS's default python3 is often 3.9. Hooks verified under pyenv 3.9.19:
-
from __future__ import annotationsin every hook. -
Optional,List,Tuplefromtypinginstead of PEP 585 / 604 syntax. - Test suite runs green on both 3.9 and default interpreter.
The v0.9.3 experiment of splitting SKILL.md into router-lite and SKILL-full.md was reverted. Claude Code's skill harness loads one file β there is no conditional loader for "full mode" escalation. Honest fix: merged back into a single SKILL.md with a "Full Framework" header that tells the model to treat the body as inert outside full/ultra mode. Prompt-level gate, best-effort, not runtime-enforced.
The v0.10 release does not ship these, despite prose that may imply otherwise:
-
No runtime resolver for mode precedence.
/kasi statusreports what the AI reads from config files; it is not enforced by a hook. -
No auto-mapping of old agent names. Users must invoke
audit-specialist --focus=<lens>explicitly. -
No
/kasi-memorysubcommand. Inspectroute-memory.jsonlwithjqmanually. - Mode gating is prompt-level. AI compliance is best-effort.
-
Master Orchestrator enforcement is partial.
kasidit-verify.pydetects the "claimed delegation + direct edit" pattern but does not block it β only prints a warning.
These are called out in README.md Honesty section and CHANGELOG.md.
-
plugins/kasidit/hooks/test_hooks.pyβ 10 isolated snapshot tests. Per-test fresh tempdir. No shared state. All pass under Python 3.9.19 and default interpreter. - End-to-end validated on fake
HOME:install.shβ route.py classify β record.py append β route.py re-query reads history.
/plugin marketplace update kasidit
/plugin install kasidit@kasidit
/kasi-init # answer 1, 2, or 3 when prompted; default mode=routerExisting users: /kasi-init is idempotent. It detects existing config.json and skips the question. Re-run install.sh to wire new hooks added in v0.10.
- Agent-Audit-Specialist
-
Kasi-Mode (if present; otherwise see
plugins/kasidit/commands/kasi.md) - Backend-Hooks (new)
- Checklists
- Master-Orchestrator
- v0.9.2 (prior release)
Repo β’ Discussions β’ Issues β’ Changelog β’ Security β’ Contributing β’ MIT β’ Β© Kasidit Wansudon
Kasidit
Core
- Commands
- Kasi-Mode π₯ v0.10
- Backend-Hooks π₯ v0.10
- Model Tiers
- Gravity Pattern
- Multi-Agent-Orchestration
- Claude Design Integration
- UI Override Mode
- FAQ
Version History
- Version History β overview
- v0.13.0 β thClaws (Consolidated) π¦
- v0.12.0 β thClaws Runtime Support π¦
- v0.11.0 β Backend + Bridge + Runbook π
- v0.10.0 β Mode + Backend Hooks
- v0.9.2 β Gravity
- v0.9.1 β Master Orchestrator
- v0.9.0 β Claude Design
- v0.8.0 β Tier Cascade
- v0.7.4 β SWE-bench
- v0.3.0 β Tier adaptation
- v0.2.1 β Docs protocol
- v0.2.0 β UI Override
- v0.1.0 β Core
Concepts
Commands
- Kasi-Init
- Kasi-Review
- Kasi-Security
- Kasi-Fix
- Kasi-Ui
- Kasi-Cascade
- Kasi-Multi
- Kasi-Scaffold
- Kasi-Docs
- Kasi-Status
- Kasi-Promote
- Kasi-Pull
- Kasi-Sync
- Kasi-Search
- Kasi-Wiki-Sync
Agents
- Agent-Architect-Planner
- Agent-Audit-Specialist π₯ v0.10
- Agent-Bug-Hunter
- Agent-Deep-Researcher
- Agent-Legacy-Specialist
- Agent-Migration-Specialist
- Agent-Refactor-Surgeon
- Agent-Test-Writer
Deprecated v0.10 (stubs β audit-specialist --focus=..., removed in v0.11)
-
Agent-Code-Reviewer β
--focus=quality -
Agent-Security-Auditor β
--focus=security -
Agent-Perf-Profiler β
--focus=perf