<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tene on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/tags/tene/</link><description>Recent content in Tene on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Thu, 07 May 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/tags/tene/index.xml" rel="self" type="application/rss+xml"/><item><title>Mapping the Claude Code Plugin Landscape — Harness, Permission, Knowledge Graph, Secret Vault, Usage Monitor</title><link>https://ice-ice-bear.github.io/posts/2026-05-07-claude-code-plugin-landscape/</link><pubDate>Thu, 07 May 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/posts/2026-05-07-claude-code-plugin-landscape/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post Mapping the Claude Code Plugin Landscape — Harness, Permission, Knowledge Graph, Secret Vault, Usage Monitor" /&gt;&lt;h2 id="overview"&gt;Overview
&lt;/h2&gt;&lt;p&gt;Spent two weeks with the tools growing around Claude Code. Five — two are mine (harnesskit, claude-auto-permission), three are external (graphify, tene, trafficmonitor-ai-usage-plugin). Each touches a different layer — harness, permission, knowledge graph, secrets, monitoring.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph TD
 Claude["Claude Code session"] --&gt; Harness["harnesskit &amp;lt;br/&amp;gt; (project harness, mine)"]
 Claude --&gt; Perms["claude-auto-permission &amp;lt;br/&amp;gt; (permission gate, mine)"]
 Claude --&gt; Graph["graphify &amp;lt;br/&amp;gt; (knowledge graph, ★43.9k)"]
 Claude --&gt; Vault["tene &amp;lt;br/&amp;gt; (encrypted secrets)"]
 Claude --&gt; Monitor["trafficmonitor-ai-usage &amp;lt;br/&amp;gt; (taskbar usage limits)"]
 Harness -.detect/configure.-&gt; Stack["language / framework / tests"]
 Perms -.preset-based.-&gt; Allow["allow / deny lists"]
 Graph -.scan.-&gt; Repo["code + docs + images"]
 Vault -.encrypt.-&gt; Env[".env → vault"]
 Monitor -.poll.-&gt; Limits["Claude / Codex usage"]&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="harnesskit--auto-detect-a-project-apply-guardrails"&gt;harnesskit — auto-detect a project, apply guardrails
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/ice-ice-bear/harnesskit" target="_blank" rel="noopener"
 &gt;ice-ice-bear/harnesskit&lt;/a&gt;, Shell, ★2 (mine).&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Adaptive harness for vibe coders — detect, configure, observe, improve&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Core idea, four-stage loop:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Detect → Configure → Observe → Improve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Detect&lt;/strong&gt; — auto-detects a repo&amp;rsquo;s language/framework/test framework/linter/package manager. &lt;strong&gt;Spends zero LLM tokens&lt;/strong&gt; (zero-token shell hooks, bash + jq).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configure&lt;/strong&gt; — uses detection to pick a preset (beginner/intermediate/advanced) and apply guardrails.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observe&lt;/strong&gt; — collects metrics via session hooks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improve&lt;/strong&gt; — an insights agent reads project patterns and proposes harness improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/harnesskit:setup &lt;span class="c1"&gt;# detect + pick preset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/harnesskit:init &lt;span class="c1"&gt;# generate infra + toolkit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/harnesskit:status &lt;span class="c1"&gt;# current state&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/harnesskit:insights &lt;span class="c1"&gt;# generate improvement proposals&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/harnesskit:apply &lt;span class="c1"&gt;# review diffs and apply&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Not auto-applied — &amp;ldquo;analyze → propose → user reviews diff → apply&amp;rdquo; is one cycle. AI proposes, human commits.&lt;/p&gt;
&lt;p&gt;89 tests pass per the README, version 0.2.0. Self-retrospective: &lt;strong&gt;the zero-token detect was the decisive call.&lt;/strong&gt; Detect via LLM means cost/latency/error pile up — bash + jq is enough for 80% of cases.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="claude-auto-permission--stop-approving-every-git-add"&gt;claude-auto-permission — stop approving every git add
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/ice-ice-bear/claude-auto-permission" target="_blank" rel="noopener"
 &gt;ice-ice-bear/claude-auto-permission&lt;/a&gt;, JavaScript/Shell, ★1 (mine).&lt;/p&gt;
&lt;p&gt;The problem is sharp:&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Claude Code asks permission for every tool use. You end up clicking &amp;ldquo;yes&amp;rdquo; hundreds of times for safe operations like reading files, running tests, and committing code.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Claude Code&amp;rsquo;s built-in &lt;code&gt;settings.local.json&lt;/code&gt; accumulates one-off approvals that don&amp;rsquo;t transfer across repos or devices. The fix:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.claude/ # Shared across all repos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hooks/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; selective-auto-permission.mjs # PreToolUse hook
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; permission-learner.mjs # Learns approval patterns
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; skills/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; learn-permissions/SKILL.md # /learn-permissions skill
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;your-repo/.claude/ # Per-repo config
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; auto-permission.json # preset + custom rules
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; settings.json # Registers the hook
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Preset-based + per-repo overrides + dangerous commands always prompt. Concrete savings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git add&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt;, &lt;code&gt;git status&lt;/code&gt;, &lt;code&gt;npm run build&lt;/code&gt;, &lt;code&gt;pytest&lt;/code&gt; — auto-pass&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rm -rf&lt;/code&gt;, &lt;code&gt;git push --force&lt;/code&gt;, &lt;code&gt;DROP TABLE&lt;/code&gt; — always prompt the user&lt;/li&gt;
&lt;li&gt;Pattern learning: the &lt;code&gt;/learn-permissions&lt;/code&gt; skill reads transcripts and adds frequently-approved patterns to the allow list automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The product wedge is &lt;strong&gt;&amp;ldquo;safe automation&amp;rdquo;&lt;/strong&gt; — auto-approving everything is unsafe; prompting for everything kills productivity. Picking the right default in between is the work.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="graphify--codedocsimages-as-a-knowledge-graph"&gt;graphify — code/docs/images as a knowledge graph
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/safishamsi/graphify" target="_blank" rel="noopener"
 &gt;safishamsi/graphify&lt;/a&gt;, Python, &lt;strong&gt;★43,935&lt;/strong&gt; (external, flagship-tier).&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Type &lt;code&gt;/graphify&lt;/code&gt; in your AI coding assistant and it maps your entire project — code, docs, PDFs, images, videos — into a knowledge graph you can query instead of grepping through files.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Tools that cross 40k stars usually do one thing very well — graphify is &lt;strong&gt;&amp;ldquo;a graph instead of grep.&amp;rdquo;&lt;/strong&gt; A single command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/graphify .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;drops three files:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;graphify-out/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── graph.html # browser: click nodes, filter, search
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── GRAPH_REPORT.md # key concepts, surprising connections, suggested questions
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── graph.json # the full graph — query without re-reading files
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The platform list is overwhelming — Claude Code, Codex, OpenCode, Cursor, Gemini CLI, GitHub Copilot CLI, VS Code Copilot Chat, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Pi, Google Antigravity. Almost every major AI coding assistant gets a &lt;code&gt;/graphify&lt;/code&gt; slash command.&lt;/p&gt;
&lt;p&gt;The PyPI package is &lt;code&gt;graphifyy&lt;/code&gt; (double-y). Other &lt;code&gt;graphify*&lt;/code&gt; packages are not affiliated — naming-squatting protection.&lt;/p&gt;
&lt;p&gt;The real value: &lt;strong&gt;long-running codebase exploration that doesn&amp;rsquo;t burn LLM context window.&lt;/strong&gt; On a big repo, &amp;ldquo;who calls this function?&amp;rdquo; via grep dumps raw output into the LLM context. The graph queries pre-indexed results instead. Both tokens and latency drop.&lt;/p&gt;
&lt;p&gt;(A ★43k tool README has a Korean translation at &lt;code&gt;docs/translations/README.ko-KR.md&lt;/code&gt;. Side projects like popcon need translations too — that&amp;rsquo;s a real bar.)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="tene--your-env-is-not-a-secret-ai-can-read-it"&gt;tene — your &lt;code&gt;.env&lt;/code&gt; is not a secret (AI can read it)
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/tomo-kay/tene" target="_blank" rel="noopener"
 &gt;tomo-kay/tene&lt;/a&gt;, Go + TypeScript + Python multi-language, ★8 (external).&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Your .env is not a secret. AI can read it.&lt;/strong&gt; Tene is a local-first, encrypted secret management CLI. It encrypts your secrets and injects them at runtime — so AI agents can use them without ever seeing the values.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;The framing is what&amp;rsquo;s interesting. Most secret managers (1Password CLI, doppler, vault) frame as &amp;ldquo;humans store secrets safely.&amp;rdquo; Tene adds a new axis: &lt;strong&gt;&amp;ldquo;AI agents use secrets without seeing the values.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mechanically:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;tene encrypts &lt;code&gt;.env&lt;/code&gt; values into a vault&lt;/li&gt;
&lt;li&gt;At runtime tene injects them as env-vars into a child process&lt;/li&gt;
&lt;li&gt;AI agents (Claude Code, Cursor, etc.) only see the vault file, never plaintext&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Local-first, so it doesn&amp;rsquo;t depend on cloud. The open-source CLI is MIT; cloud sync/teams/billing live as a Pro tier on &lt;a class="link" href="https://tene.sh" target="_blank" rel="noopener"
 &gt;tene.sh&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Platform matrix: macOS (arm64/x64), Linux (arm64/x86_64), Windows (via WSL). Go 1.25+ at the core, with TypeScript/Python helpers. A genuinely polyglot repo.&lt;/p&gt;
&lt;p&gt;Worth a look for popcon, which has piled up multi-API secrets — ToonOut + Gemini + R2 + RunPod.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="trafficmonitor-ai-usage-plugin--claude-usage-in-windows-taskbar"&gt;trafficmonitor-ai-usage-plugin — Claude usage in Windows taskbar
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/bemaru/trafficmonitor-ai-usage-plugin" target="_blank" rel="noopener"
 &gt;bemaru/trafficmonitor-ai-usage-plugin&lt;/a&gt;, C++/JavaScript/PowerShell, ★31 (external).&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Taskbar usage limits for Claude and Codex through TrafficMonitor on Windows.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Narrow and practical. &lt;a class="link" href="https://github.com/zhongyang219/TrafficMonitor" target="_blank" rel="noopener"
 &gt;TrafficMonitor&lt;/a&gt; is a popular Windows taskbar widget (system monitoring); this plugin adds Claude/Codex usage to that widget.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;I built this because Windows did not have a convenient widget for this kind of AI usage-limit status. Claude usage can already be checked from places like Claude Code statusline, Claude Desktop, or Claude&amp;rsquo;s VS Code extension, but those surfaces depend on the current workflow. The Windows taskbar stays visible across editors, terminals, and browsers, so TrafficMonitor&amp;rsquo;s taskbar plugin surface was a good fit.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;That paragraph is a clean product-positioning example. &lt;strong&gt;&amp;ldquo;Existing surfaces&amp;rsquo; limits → the spot we fill&amp;rdquo;&lt;/strong&gt; — the Claude Code statusline lives only inside Claude Code; Desktop lives only inside that app. The taskbar is always visible, so it works cross-context.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m a Mac user so I won&amp;rsquo;t run this directly, but it&amp;rsquo;s a good case study of where to claim a niche. macOS has the menubar — the same niche exists.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="insights"&gt;Insights
&lt;/h2&gt;&lt;p&gt;Putting all five next to each other reveals how broad the Claude Code plugin landscape has gotten. By layer:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Layer&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;th&gt;Tool&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Project harness&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Detect project + apply guardrails&lt;/td&gt;
 &lt;td&gt;harnesskit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Permission gate&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Auto-approve safe tool uses&lt;/td&gt;
 &lt;td&gt;claude-auto-permission&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Knowledge layer&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Index code/docs into a queryable graph&lt;/td&gt;
 &lt;td&gt;graphify&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Secret layer&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Hide values from AI agents&lt;/td&gt;
 &lt;td&gt;tene&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Observability&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;OS-level usage monitor&lt;/td&gt;
 &lt;td&gt;trafficmonitor&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The layers barely overlap. graphify and harnesskit both deal with &amp;ldquo;project context&amp;rdquo; but graphify gives users/AI an index, while harnesskit configures how AI behaves. tene and claude-auto-permission are both &amp;ldquo;safety guards&amp;rdquo; — but one redacts secrets, the other gates commands.&lt;/p&gt;
&lt;p&gt;A pattern stands out as the ecosystem matures: &lt;strong&gt;value is accruing around the AI coding tools, not inside them.&lt;/strong&gt; Claude Code itself doesn&amp;rsquo;t try to do everything — small tools each take one axis. Unix philosophy.&lt;/p&gt;
&lt;p&gt;Looking at my own tools next to the external ones sharpens their position. harnesskit and claude-auto-permission are both on the axis of &lt;strong&gt;&amp;ldquo;adjust Claude Code&amp;rsquo;s default behavior to the user/project.&amp;rdquo;&lt;/strong&gt; That&amp;rsquo;s a different axis from &amp;ldquo;add a new capability&amp;rdquo; (graphify).&lt;/p&gt;
&lt;p&gt;Up next: install graphify on popcon and benchmark it against grep (latency, tokens), vault popcon&amp;rsquo;s .env via tene, and figure out which detect patterns to add to harnesskit v0.3.&lt;/p&gt;</description></item></channel></rss>