<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>GitHub on KnightLi Blog</title>
        <link>https://knightli.com/en/tags/github/</link>
        <description>Recent content in GitHub on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Mon, 25 May 2026 00:19:14 +0800</lastBuildDate><atom:link href="https://knightli.com/en/tags/github/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>What Is GitHub Spec Kit? Using Spec-Driven Development to Tame AI Coding</title>
        <link>https://knightli.com/en/2026/05/25/github-spec-kit-spec-driven-development/</link>
        <pubDate>Mon, 25 May 2026 00:19:14 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/25/github-spec-kit-spec-driven-development/</guid>
        <description>&lt;p&gt;GitHub&amp;rsquo;s &lt;strong&gt;Spec Kit&lt;/strong&gt; is a new toolkit for AI coding. Its goal is to help developers practice &lt;strong&gt;Spec-Driven Development&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The problem it tackles is straightforward: many AI coding workflows today feel too much like &amp;ldquo;chat while coding.&amp;rdquo; A human gives a rough idea, and an Agent immediately starts changing code. It looks fast in the short term, but the requirement boundaries, acceptance criteria, technical trade-offs, and task breakdown often never settle into anything durable. Once a project becomes even slightly complex, it easily turns into one-off vibe coding.&lt;/p&gt;
&lt;p&gt;Spec Kit takes the opposite route: write the spec clearly first, then move into planning, tasks, and implementation. Code is no longer the first step. The spec is.&lt;/p&gt;
&lt;h2 id=&#34;what-is-spec-kit&#34;&gt;What Is Spec Kit?
&lt;/h2&gt;&lt;p&gt;Spec Kit is GitHub&amp;rsquo;s open-source toolkit for spec-driven development. It provides the &lt;code&gt;specify&lt;/code&gt; CLI, templates, scripts, and commands for AI coding agents, allowing teams to advance development around the same set of structured artifacts.&lt;/p&gt;
&lt;p&gt;Its emphasis is not &amp;ldquo;make AI ask fewer questions.&amp;rdquo; Instead, it asks AI to generate and refine these things before writing code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project principles: the team&amp;rsquo;s constraints around quality, testing, experience, performance, and similar concerns;&lt;/li&gt;
&lt;li&gt;Feature specs: what to build, why to build it, user stories, and functional requirements;&lt;/li&gt;
&lt;li&gt;Technical plans: which technology stack to use, how to implement it, and what architecture decisions are involved;&lt;/li&gt;
&lt;li&gt;Task lists: breaking the plan into executable steps;&lt;/li&gt;
&lt;li&gt;Implementation process: changing code step by step according to tasks, instead of making one chaotic batch of edits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This workflow makes AI coding feel more like engineering collaboration, rather than a one-time prompt performance.&lt;/p&gt;
&lt;h2 id=&#34;basic-usage-flow&#34;&gt;Basic Usage Flow
&lt;/h2&gt;&lt;p&gt;The official README describes a getting-started flow roughly like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;specify init my-project --integration copilot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After initialization, the project gets a &lt;code&gt;.specify&lt;/code&gt; directory, templates, scripts, and commands for Agent integration. You then use &lt;code&gt;/speckit.*&lt;/code&gt; commands inside a supported AI coding agent to move development forward.&lt;/p&gt;
&lt;p&gt;A typical sequence is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.constitution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.specify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.clarify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.tasks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.implement
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Here, &lt;code&gt;/speckit.constitution&lt;/code&gt; establishes project principles, &lt;code&gt;/speckit.specify&lt;/code&gt; describes product requirements, &lt;code&gt;/speckit.clarify&lt;/code&gt; fills in ambiguity, &lt;code&gt;/speckit.plan&lt;/code&gt; generates a technical plan, &lt;code&gt;/speckit.tasks&lt;/code&gt; breaks the work into tasks, and &lt;code&gt;/speckit.implement&lt;/code&gt; finally performs the implementation.&lt;/p&gt;
&lt;p&gt;This is very different from directly telling an Agent, &amp;ldquo;Help me build an app.&amp;rdquo; Spec Kit asks you to first make clear what to build and how it will be accepted, then let the Agent start working.&lt;/p&gt;
&lt;h2 id=&#34;it-changes-the-entry-point-of-ai-coding&#34;&gt;It Changes the Entry Point of AI Coding
&lt;/h2&gt;&lt;p&gt;Traditional AI coding often starts with code:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;I want to build a task management app. Help me write it.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Spec Kit is closer to this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;First define the users, scenarios, feature boundaries, acceptance criteria, and non-goals for this task management app;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;then choose the technical approach based on those specs;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;then break it into tasks;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;finally implement it step by step.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This shift matters. AI is very good at executing from context, but if the context itself is loose, faster execution can also mean faster drift. Spec Kit turns context into files and templates, so requirements, plans, and tasks can all be reviewed, revised, and version-controlled.&lt;/p&gt;
&lt;p&gt;In other words, it is not making AI more &amp;ldquo;free.&amp;rdquo; It is giving AI clearer engineering rails on which to work freely.&lt;/p&gt;
&lt;h2 id=&#34;how-to-understand-the-core-commands&#34;&gt;How to Understand the Core Commands
&lt;/h2&gt;&lt;h3 id=&#34;speckitconstitution&#34;&gt;&lt;code&gt;/speckit.constitution&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This is the project&amp;rsquo;s &amp;ldquo;constitution.&amp;rdquo; It creates or updates &lt;code&gt;.specify/memory/constitution.md&lt;/code&gt;, which records long-term principles for the project, such as code quality, testing standards, user experience consistency, performance requirements, and rules for technical decisions.&lt;/p&gt;
&lt;p&gt;This step is best for writing down team consensus, not requirements for a single feature.&lt;/p&gt;
&lt;h3 id=&#34;speckitspecify&#34;&gt;&lt;code&gt;/speckit.specify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This is the feature specification phase. You describe what you want to build, who the users are, what problem it solves, and what the core flows are.&lt;/p&gt;
&lt;p&gt;The official guidance specifically emphasizes that this phase should not focus too early on the technology stack. First make the what and why clear, then discuss the how.&lt;/p&gt;
&lt;h3 id=&#34;speckitclarify&#34;&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This is the phase for filling gaps. Many requirements have holes the first time they are written: how should permissions work? What are the error states? Does the data need to be persisted? How should edge cases be accepted?&lt;/p&gt;
&lt;p&gt;The value of &lt;code&gt;/speckit.clarify&lt;/code&gt; is that it lets the Agent actively find uncertain points in the spec and write the answers back into the specification document, reducing rework later.&lt;/p&gt;
&lt;h3 id=&#34;speckitplan&#34;&gt;&lt;code&gt;/speckit.plan&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This is the technical planning phase. Only here do you start to define the framework, database, architecture, APIs, testing strategy, and constraints.&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;/speckit.specify&lt;/code&gt; is product language, then &lt;code&gt;/speckit.plan&lt;/code&gt; is engineering language.&lt;/p&gt;
&lt;h3 id=&#34;speckittasks&#34;&gt;&lt;code&gt;/speckit.tasks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This step breaks the plan into executable tasks. A good task list should let the Agent advance step by step, while still letting humans understand the purpose of each step.&lt;/p&gt;
&lt;h3 id=&#34;speckitimplement&#34;&gt;&lt;code&gt;/speckit.implement&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Only at the end do you enter implementation. The Agent modifies code according to the specs, plans, and tasks that have already been settled. At this point, it is no longer guessing requirements from a single large prompt; it is executing inside a set of structured documents.&lt;/p&gt;
&lt;h2 id=&#34;why-it-fits-ai-coding&#34;&gt;Why It Fits AI Coding
&lt;/h2&gt;&lt;p&gt;Spec Kit&amp;rsquo;s value is not in any single magic command. It is in restoring the things most easily lost in AI coding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requirements can be reviewed;&lt;/li&gt;
&lt;li&gt;Plans can be discussed;&lt;/li&gt;
&lt;li&gt;Tasks can be traced;&lt;/li&gt;
&lt;li&gt;Decisions have context;&lt;/li&gt;
&lt;li&gt;Artifacts can enter Git history;&lt;/li&gt;
&lt;li&gt;Teams can reuse templates and principles;&lt;/li&gt;
&lt;li&gt;The Agent&amp;rsquo;s implementation no longer depends only on a one-time chat record.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is especially useful for complex projects. The more a project involves multiple collaborators, long-term maintenance, or high quality requirements, the less it can rely only on temporary prompts to drive development.&lt;/p&gt;
&lt;h2 id=&#34;extensions-and-presets&#34;&gt;Extensions and Presets
&lt;/h2&gt;&lt;p&gt;Spec Kit also provides two kinds of customization:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions&lt;/strong&gt;: add new commands, new templates, or integrations with external tools;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presets&lt;/strong&gt;: change the format and terminology of existing spec, plan, and task templates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In simple terms, use an Extension when you want to add new capability; use a Preset when you want to reshape the workflow style.&lt;/p&gt;
&lt;p&gt;For example, a team can use a Preset to require security review, compliance traceability, domain terminology, or test-first rules. It can also use an Extension to add Jira integration, code review, project health checks, and other new phases.&lt;/p&gt;
&lt;p&gt;This means Spec Kit is not trying to lock every team into the same workflow. It provides an extensible skeleton for spec-driven development.&lt;/p&gt;
&lt;h2 id=&#34;who-is-it-for&#34;&gt;Who Is It For?
&lt;/h2&gt;&lt;p&gt;Spec Kit is suitable for scenarios like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using an AI coding agent to prototype a new project;&lt;/li&gt;
&lt;li&gt;Turning vibe coding into a repeatable workflow;&lt;/li&gt;
&lt;li&gt;Standardizing the requirement and planning format before teams let AI generate code;&lt;/li&gt;
&lt;li&gt;Projects that need clear acceptance criteria and testing requirements;&lt;/li&gt;
&lt;li&gt;Bringing requirements, plans, tasks, and implementation history into version control;&lt;/li&gt;
&lt;li&gt;Teams exploring GitHub Copilot, Claude Code, Codex CLI, and similar tools in a team setting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not necessarily a good fit for very small one-off scripts. For problems that can be solved in a few lines of code, the full spec workflow may feel heavy. But once a task involves multiple pages, multiple modules, state management, permissions, data models, or long-term maintenance, Spec Kit&amp;rsquo;s structure starts to pay off clearly.&lt;/p&gt;
&lt;h2 id=&#34;my-take&#34;&gt;My Take
&lt;/h2&gt;&lt;p&gt;Spec Kit represents an important turn in AI coding tools: from &amp;ldquo;make the Agent write code faster&amp;rdquo; toward &amp;ldquo;make the Agent participate in software engineering more reliably.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Earlier AI coding focused on prompts and model capability. Spec Kit focuses more on process, artifacts, and constraints. It reminds us that the faster AI writes code, the less we can afford to skip specs, plans, and acceptance criteria.&lt;/p&gt;
&lt;p&gt;If you are already used to letting AI implement features directly, you can try changing the starting move with Spec Kit:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;First let AI help you write the requirement as a spec, then let it write the code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That step may look slower, but in practice it reduces the later rework of &amp;ldquo;the code is done, but it is not what I wanted.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/github/spec-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github/spec-kit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>What is oh-my-pi? An AI coding assistant that connects the terminal, IDE, and debugger</title>
        <link>https://knightli.com/en/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/</link>
        <pubDate>Sat, 23 May 2026 19:02:20 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/</guid>
        <description>&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; is an AI Coding Agent for the terminal and editor. It is a fork of Mario Zechner&amp;rsquo;s &lt;code&gt;Pi&lt;/code&gt; project, extended by &lt;code&gt;can1357&lt;/code&gt;. Its goal is not just to provide a command-line chat UI, but to connect file reading, code search, structured edits, LSP, debuggers, browsers, subagents, and multiple model providers into one coding workflow.&lt;/p&gt;
&lt;p&gt;From the project README, it feels more like an AI coding tool layer than a simple assistant: you can use it interactively in the terminal, connect editors through ACP, or embed it in Node projects through the SDK. For people already using Claude Code, Codex CLI, Cline, Cursor, or other agent tools, the interesting part is that &lt;code&gt;oh-my-pi&lt;/code&gt; turns many abilities that usually live in separate tools into one built-in tool surface.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-is-it-trying-to-solve&#34;&gt;What problem is it trying to solve?
&lt;/h2&gt;&lt;p&gt;For many AI coding tools, the weak point is not the model itself, but the tool interface around it. When a model wants to change code but only has rough full-file reads, fragile string replacement, and one-off shell commands, the toolchain amplifies failure.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; tries to reduce those common points of friction:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File reads prefer structured summaries instead of dumping whole files into context.&lt;/li&gt;
&lt;li&gt;Search, glob, find, syntax highlighting, and token counting are implemented natively where possible, reducing dependence on external commands.&lt;/li&gt;
&lt;li&gt;Code writes can use LSP so renames, references, and file moves behave more like IDE operations.&lt;/li&gt;
&lt;li&gt;Debugging can use DAP tools such as &lt;code&gt;lldb&lt;/code&gt;, &lt;code&gt;dlv&lt;/code&gt;, and &lt;code&gt;debugpy&lt;/code&gt;, instead of relying only on logs and guesses.&lt;/li&gt;
&lt;li&gt;Complex tasks can be split across subagents and returned as structured results.&lt;/li&gt;
&lt;li&gt;Edits use content anchors and previews to reduce the chance of a bad patch landing directly on disk.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These choices show that the focus is not &amp;ldquo;can the model answer?&amp;rdquo;, but &amp;ldquo;can the model reliably complete a real code change?&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;The project provides several installation paths. On macOS and Linux, you can use the install script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://omp.sh/install &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you use Bun, the README recommends installing the npm package globally:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install -g @oh-my-pi/pi-coding-agent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On Windows PowerShell:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;omp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The README also mentions pinning versions with &lt;code&gt;mise&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mise use -g github:can1357/oh-my-pi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Before installing, check the Bun version requirement. The README lists macOS, Linux, and Windows support, and requires &lt;code&gt;bun &amp;gt;= 1.3.14&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;capabilities-worth-watching&#34;&gt;Capabilities worth watching
&lt;/h2&gt;&lt;h3 id=&#34;1-tool-calling-goes-beyond-shell-commands&#34;&gt;1. Tool calling goes beyond shell commands
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; includes tools for file reads, search, writes, edits, AST edits, browser use, task splitting, debugging, and LSP. The README mentions 32 built-in tools, 13 LSP operations, and 27 DAP operations.&lt;/p&gt;
&lt;p&gt;That means the agent does not have to wrap everything as command-line output. Reference lookup can go through LSP, PRs and issues can be read through a unified file-like interface, and web pages or PDFs can be converted into Markdown with link structure intact before being passed to the model.&lt;/p&gt;
&lt;h3 id=&#34;2-lsp-integration-is-useful-for-real-codebases&#34;&gt;2. LSP integration is useful for real codebases
&lt;/h3&gt;&lt;p&gt;In large projects, renaming and moving files often breaks re-exports, aliased imports, barrel files, or cross-directory references. The &lt;code&gt;oh-my-pi&lt;/code&gt; README highlights that write paths can go through LSP. For example, file renames use &lt;code&gt;workspace/willRenameFiles&lt;/code&gt;, making edits closer to semantic IDE operations.&lt;/p&gt;
&lt;p&gt;This is useful for everyday refactoring in TypeScript, Rust, Go, Python, and similar projects, especially in cases where manual edits are possible but easy to miss.&lt;/p&gt;
&lt;h3 id=&#34;3-the-debugger-is-a-first-class-tool&#34;&gt;3. The debugger is a first-class tool
&lt;/h3&gt;&lt;p&gt;Many AI coding flows still debug by adding logs, rerunning, and reading output. &lt;code&gt;oh-my-pi&lt;/code&gt; connects DAP debuggers to the tool surface. The README gives examples with C programs using &lt;code&gt;lldb&lt;/code&gt;, Go services using &lt;code&gt;dlv&lt;/code&gt;, and Python processes using &lt;code&gt;debugpy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That changes how an agent handles bugs: it can pause a process, inspect stack frames, read local variables, and then decide what to do next, instead of guessing from error text alone.&lt;/p&gt;
&lt;h3 id=&#34;4-hashline-editing-reduces-patch-failures&#34;&gt;4. Hashline editing reduces patch failures
&lt;/h3&gt;&lt;p&gt;The project emphasizes &lt;code&gt;Hashline&lt;/code&gt;, an editing approach based on content anchors. The goal is to let the model point to the content it wants to change instead of repeatedly emitting large diffs. This reduces edit failures caused by whitespace, stale context, or failed string matching.&lt;/p&gt;
&lt;p&gt;For agent tools, this matters a lot. Even a capable model feels clumsy if the write interface keeps failing and forcing retries.&lt;/p&gt;
&lt;h3 id=&#34;5-subagents-and-workspace-isolation&#34;&gt;5. Subagents and workspace isolation
&lt;/h3&gt;&lt;p&gt;The README introduces a &lt;code&gt;task&lt;/code&gt; subagent capability: a task can be split across isolated workers, and results are returned as structured objects. The project also includes workspace isolation logic for parallel tasks, branch exploration, and avoiding overlapping edits.&lt;/p&gt;
&lt;p&gt;This fits code review, migrations, bulk fixes, and test investigation. The value is not only speed; it is also cleaner separation between different exploration paths.&lt;/p&gt;
&lt;h3 id=&#34;6-it-can-inherit-existing-rules-and-configs&#34;&gt;6. It can inherit existing rules and configs
&lt;/h3&gt;&lt;p&gt;On first run, &lt;code&gt;oh-my-pi&lt;/code&gt; can read rules and configuration left by other tools, including &lt;code&gt;.claude&lt;/code&gt;, &lt;code&gt;.cursor&lt;/code&gt;, &lt;code&gt;.windsurf&lt;/code&gt;, &lt;code&gt;.gemini&lt;/code&gt;, &lt;code&gt;.codex&lt;/code&gt;, &lt;code&gt;.cline&lt;/code&gt;, &lt;code&gt;.github/copilot&lt;/code&gt;, and &lt;code&gt;.vscode&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is practical. Many teams have already written rules for several AI tools. Rewriting them for every new tool is expensive, so &lt;code&gt;oh-my-pi&lt;/code&gt; tries to reuse what is already on disk.&lt;/p&gt;
&lt;h2 id=&#34;four-entry-points&#34;&gt;Four entry points
&lt;/h2&gt;&lt;p&gt;The project provides four main ways to use it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interactive TUI: run &lt;code&gt;omp&lt;/code&gt; directly in the terminal.&lt;/li&gt;
&lt;li&gt;One-shot command: use &lt;code&gt;omp -p&lt;/code&gt; to send a single prompt.&lt;/li&gt;
&lt;li&gt;Node SDK: embed it in a Node or TypeScript project through &lt;code&gt;@oh-my-pi/pi-coding-agent&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;RPC / ACP: connect other programs and editors through stdio or Agent Client Protocol.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This means it is not only for individual terminal users. It also leaves room for IDEs, plugins, automation platforms, and internal tools.&lt;/p&gt;
&lt;h2 id=&#34;who-should-try-it&#34;&gt;Who should try it?
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; is a good fit for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developers who often edit, debug, and review code in the terminal.&lt;/li&gt;
&lt;li&gt;People already using AI Coding Agents but unhappy with file reading, patching, search, or debugging reliability.&lt;/li&gt;
&lt;li&gt;Developers who want to connect an agent to an editor, RPC layer, or Node service.&lt;/li&gt;
&lt;li&gt;Users who need to switch between multiple models and providers in one tool.&lt;/li&gt;
&lt;li&gt;Tool builders interested in LSP, DAP, AST editing, and subagent workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only want a chat-style coding assistant that works immediately, the learning curve may feel high. It is better suited to people willing to understand the toolchain and treat the agent as a configurable development environment.&lt;/p&gt;
&lt;h2 id=&#34;what-to-keep-in-mind&#34;&gt;What to keep in mind
&lt;/h2&gt;&lt;p&gt;First, &lt;code&gt;oh-my-pi&lt;/code&gt; is still a fast-moving open source project. Commits are frequent, and there are many issues and pull requests, so installation and usage may change.&lt;/p&gt;
&lt;p&gt;Second, its capabilities depend heavily on your local environment. LSP, debuggers, Bun, model-provider authentication, terminal setup, and Windows or Unix differences can all affect the experience.&lt;/p&gt;
&lt;p&gt;Third, having many built-in tools does not mean every scenario should enable everything. In practice, it is better to enable the tools needed for the task and configure rules, permissions, and workspace boundaries clearly.&lt;/p&gt;
&lt;p&gt;Fourth, an AI Agent can write code, but it can also change the wrong code. Even with previews and content-anchored edits, important projects still need version control, tests, and human review.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The interesting part of &lt;code&gt;oh-my-pi&lt;/code&gt; is not that it is another AI terminal shell. It is that it reorganizes the tool layer that often holds AI coding back: file reading, search, editing, LSP, debugging, browser access, subagents, and SDK integration all sit inside one agent workflow.&lt;/p&gt;
&lt;p&gt;It is worth watching for people who care about AI coding infrastructure, and for developers comparing different Coding Agent approaches. The competition in AI coding tools is no longer just about model answer quality. It is also about who can connect models reliably to real codebases, real debugging workflows, and real team rules. &lt;code&gt;oh-my-pi&lt;/code&gt; is an ambitious open source attempt in that direction.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub project: &lt;a class=&#34;link&#34; href=&#34;https://github.com/can1357/oh-my-pi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/can1357/oh-my-pi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Official site: &lt;a class=&#34;link&#34; href=&#34;https://omp.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://omp.sh/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SDK documentation: &lt;a class=&#34;link&#34; href=&#34;https://omp.sh/docs/sdk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://omp.sh/docs/sdk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>poc-lab Patch Verification: Confirm Whether Recent High-Severity Vulnerabilities Are Fixed, Including Chrome CSSFontFeatureValuesMap UAF, NGINX Rift, Dirty Frag, and Fragnesia</title>
        <link>https://knightli.com/en/2026/05/22/poc-lab-recent-cve-poc-reproduction-scripts/</link>
        <pubDate>Fri, 22 May 2026 23:13:24 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/22/poc-lab-recent-cve-poc-reproduction-scripts/</guid>
        <description>&lt;p&gt;&lt;code&gt;poc-lab&lt;/code&gt; is a repository of PoCs and reproduction scripts for recently disclosed high-severity vulnerabilities. It focuses on fresh and impactful CVE reproduction material across Linux kernel, Windows, macOS, containers, service components, and browser-related vulnerabilities.&lt;/p&gt;
&lt;p&gt;From its positioning, the repository is closer to a security research knowledge base than a one-click toolkit for general users. Each vulnerability directory usually includes PoC scripts, build files, and documentation, helping researchers understand impact, reproduction conditions, and references.&lt;/p&gt;
&lt;h2 id=&#34;main-project-contents&#34;&gt;Main project contents
&lt;/h2&gt;&lt;p&gt;The repository is currently organized by vulnerability identifier or public vulnerability name. The full listed vulnerability names include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-2441&lt;/code&gt;: Chrome &lt;code&gt;CSSFontFeatureValuesMap&lt;/code&gt; use-after-free, also listed as Chrome CSSFontFeatureValuesMap UAF.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-27623&lt;/code&gt;: Pre-Authentication Denial of Service from malformed RESP request.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31429&lt;/code&gt;: Slab Cross-Cache, a Linux kernel slab cross-cache exploitation direction.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31431&lt;/code&gt;: Copy Fail, a Linux kernel related vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31635&lt;/code&gt;: DirtyDecrypt, a system security boundary related vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-42945&lt;/code&gt;: NGINX Rift, a high-severity NGINX related vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43284&lt;/code&gt;: Dirty Frag, a Linux kernel related vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43494&lt;/code&gt;: PinTheft, a permission or credential security boundary related vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43500&lt;/code&gt;: Dirty Frag, a Linux kernel related vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-46300&lt;/code&gt;: Fragnesia, a Linux kernel related vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-46333&lt;/code&gt;: SSH Keysign pwn, an SSH keysign security boundary related vulnerability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These names show that the project is not limited to one platform. It spans browsers, the Linux kernel, server components, and operating system security boundaries. For people working on vulnerability analysis, patch validation, detection rule writing, and security training labs, this kind of material can be useful reference material.&lt;/p&gt;
&lt;h2 id=&#34;directory-structure&#34;&gt;Directory structure
&lt;/h2&gt;&lt;p&gt;The project README says each vulnerability directory is intended to follow a consistent structure. Common files include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;exploit.py&lt;/code&gt; or &lt;code&gt;exploit.sh&lt;/code&gt;: PoC script&lt;/li&gt;
&lt;li&gt;&lt;code&gt;README.md&lt;/code&gt;: vulnerability information, affected versions, reproduction steps, and references&lt;/li&gt;
&lt;li&gt;&lt;code&gt;build&lt;/code&gt; or related build files: used to compile or prepare the reproduction environment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The repository structure roughly looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;poc-lab/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CVE-2026-XXXXX/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── exploit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── VULN-NAME/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── exploit.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If a vulnerability already has a CVE identifier, the directory usually uses that CVE name. If there is no assigned CVE yet, it may use the public vulnerability name.&lt;/p&gt;
&lt;h2 id=&#34;suitable-use-cases&#34;&gt;Suitable use cases
&lt;/h2&gt;&lt;p&gt;This type of repository is more suitable for the following purposes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Security researchers reproducing vulnerability trigger conditions.&lt;/li&gt;
&lt;li&gt;Enterprise security teams verifying whether patches are effective.&lt;/li&gt;
&lt;li&gt;Detection engineers writing IDS, EDR, WAF, or log detection rules.&lt;/li&gt;
&lt;li&gt;Security courses or internal training that build isolated lab environments.&lt;/li&gt;
&lt;li&gt;Researchers comparing exploitation prerequisites and defensive ideas across vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not suitable for direct production scanning, and it should not be used against unauthorized systems. The value of a PoC is to help understand risk and verify defenses, not to expand attack surface.&lt;/p&gt;
&lt;h2 id=&#34;what-to-pay-attention-to-when-using-it&#34;&gt;What to pay attention to when using it
&lt;/h2&gt;&lt;p&gt;First, testing must happen in an isolated environment. Vulnerability reproduction may trigger crashes, privilege changes, file corruption, or service outages. It should not be run directly on office machines, production servers, or third-party systems.&lt;/p&gt;
&lt;p&gt;Second, read the &lt;code&gt;README.md&lt;/code&gt; inside each vulnerability directory first. Different PoCs have different dependencies, target versions, trigger conditions, and risks. Reading only the root README is not enough.&lt;/p&gt;
&lt;p&gt;Third, confirm the authorization boundary. Even if a PoC is public, running it against a system you do not own or have explicit permission to test can create legal and compliance risk.&lt;/p&gt;
&lt;p&gt;Fourth, after reproduction, return to the defensive workflow. That includes confirming patched versions, adding detection rules, checking exposed assets, updating asset inventories, and documenting incident response procedures.&lt;/p&gt;
&lt;h2 id=&#34;why-this-kind-of-repository-matters&#34;&gt;Why this kind of repository matters
&lt;/h2&gt;&lt;p&gt;In recent years, the time between high-severity vulnerability disclosure and public reproduction details has become shorter. For defenders, advisories and CVE descriptions are often not enough. Teams also need to understand trigger conditions, exploitation limits, and detection signals in realistic environments.&lt;/p&gt;
&lt;p&gt;The value of repositories such as &lt;code&gt;poc-lab&lt;/code&gt; is that they organize scattered high-severity vulnerability reproduction material by directory, helping researchers complete risk validation more quickly. It does not replace official advisories, vendor patches, or security baselines, but it can serve as supporting material for patch verification and detection engineering.&lt;/p&gt;
&lt;p&gt;There is also risk. Public PoCs lower the reproduction threshold. If an organization does not have timely patch management and asset inventory capabilities, public reproduction material can widen the exposure window. For enterprise security teams, tracking these projects matters, but building a rapid assessment and remediation process matters even more.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;poc-lab&lt;/code&gt; is a collection of PoCs and reproduction scripts for recent high-severity vulnerabilities, covering Linux kernel, browsers, service components, and operating system security issues. It is suitable for security research, patch verification, and detection rule development, but it must be used within authorization, isolation, and responsible disclosure boundaries.&lt;/p&gt;
&lt;p&gt;For general readers, the point is not &amp;ldquo;how to run a PoC.&amp;rdquo; The more important lesson is that after high-severity vulnerabilities become public, verification and exploitation move faster. Security teams need to complete asset identification, patch assessment, detection updates, and risk closure more quickly.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub project: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Unclecheng-li/poc-lab/tree/main&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Unclecheng-li/poc-lab/tree/main&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chinese README: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Unclecheng-li/poc-lab/blob/main/README.zh-CN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Unclecheng-li/poc-lab/blob/main/README.zh-CN.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GitHub AI Open Source Project Categories: From Coding Agent to RAG Knowledge Bases</title>
        <link>https://knightli.com/en/2026/05/21/github-ai-projects-site-statistics/</link>
        <pubDate>Thu, 21 May 2026 08:53:13 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/21/github-ai-projects-site-statistics/</guid>
        <description>&lt;p&gt;This page groups GitHub AI projects by application direction, covering AI coding and Coding Agents, agent skills and workflows, RAG and knowledge bases, multimodal creation, local models and inference, vertical applications and automation, and AI application development infrastructure. New projects can be added later using the same structure.&lt;/p&gt;
&lt;h2 id=&#34;category-summary&#34;&gt;Category Summary
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Category&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Projects&lt;/th&gt;
          &lt;th&gt;Who Should Start Here&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Coding and Coding Agents&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22&lt;/td&gt;
          &lt;td&gt;Users who often work with Claude Code, Codex, Cursor, terminal agents, or repository automation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Agent Skills and Workflows&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Users who want to standardize AI coding, research, or content workflows&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAG, Knowledge Bases, and Memory&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Users who need document retrieval, knowledge bases, long-term memory, web crawling, or structured extraction&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vertical Applications and Automation&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Users looking at finance, trading, Xianyu monitoring, desktop control, browser automation, and other applied scenarios&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Multimodal and Content Creation&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;Users working on images, video, transcription, prompt libraries, and content distribution&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Application Development Infrastructure&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;Developers building AI apps, browser automation, or Prompt/MCP toolchains&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Local Models and Inference&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;
          &lt;td&gt;Users interested in local DeepSeek, inference engines, and hardware adaptation&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The distribution shows several high-frequency directions in current AI open source projects: AI coding tools dominate, followed by agent workflows, RAG knowledge bases, and concrete application scenarios. Pure model inference projects are fewer here because much local deployment content is organized around models, GPUs, or deployment plans rather than a single GitHub project.&lt;/p&gt;
&lt;h2 id=&#34;ai-coding-and-coding-agents&#34;&gt;AI Coding and Coding Agents
&lt;/h2&gt;&lt;p&gt;This group focuses on code understanding, code modification, engineering workflows, and terminal agents. It is the largest group, with &lt;strong&gt;22&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Ralph&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/&#34; &gt;Ralph: turning Claude Code and Amp into an autonomous development loop&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/snarktank/ralph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;snarktank/ralph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Drive Claude Code / Amp through PRD, planning, execution, and review loops&lt;/td&gt;
          &lt;td&gt;Users who want a straighter agent coding process&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude-Mem&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/claude-mem-persistent-memory-for-claude-code/&#34; &gt;Claude-Mem: long-term cross-session memory for Claude Code&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Add cross-session memory to Claude Code&lt;/td&gt;
          &lt;td&gt;Heavy Claude Code users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Code Hooks Mastery&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/claude-code-hooks-mastery-guide/&#34; &gt;Claude Code Hooks Mastery: getting started with 13 hooks lifecycle stages&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/disler/claude-code-hooks-mastery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;disler/claude-code-hooks-mastery&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Learn Claude Code hooks lifecycle and automation control&lt;/td&gt;
          &lt;td&gt;Users who want to customize Claude Code workflows&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Compound Engineering Plugin&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/compound-engineering-plugin-ai-coding-workflow/&#34; &gt;Compound Engineering Plugin: turning AI coding into planning, execution, and review loops&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EveryInc/compound-engineering-plugin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EveryInc/compound-engineering-plugin&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Split AI coding into planning, execution, and review cycles&lt;/td&gt;
          &lt;td&gt;Users who care about engineering discipline in AI coding&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;free-claude-code&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/free-claude-code-anthropic-compatible-proxy/&#34; &gt;free-claude-code: connecting Claude Code to OpenRouter, DeepSeek, and local models&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Alishahryar1/free-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alishahryar1/free-claude-code&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Use a proxy to connect Claude Code to different model backends&lt;/td&gt;
          &lt;td&gt;Users who want to reduce Claude Code cost&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hermes Agent&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/12/hermes-agent-intro-guide-vs-openclaw/&#34; &gt;What is Hermes Agent: overview, strengths, quick start, and OpenClaw comparison&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Local agent framework with tool calling and task execution&lt;/td&gt;
          &lt;td&gt;Users who want to run local agents&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenHarness&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/12/openharness-basic-functions/&#34; &gt;What OpenHarness can do as an open source agent harness&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/OpenHarness&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agent harness and multi-agent execution framework&lt;/td&gt;
          &lt;td&gt;Users researching agent orchestration&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodexBridge&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/13/codexbridge-openai-compatible-api/&#34; &gt;Using Codex with domestic LLMs: OpenAI-compatible APIs and CodexBridge&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/begonia599/CodexBridge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;begonia599/CodexBridge&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Connect Codex to OpenAI-compatible model APIs&lt;/td&gt;
          &lt;td&gt;Users who want Codex with domestic models&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ccx&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/13/ccx-ai-api-proxy-gateway/&#34; &gt;Using CCX to manage OpenAI-compatible APIs for Codex and domestic models&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BenedictKing/ccx&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Manage API proxies for Claude, Codex, Gemini, and more&lt;/td&gt;
          &lt;td&gt;Multi-model switching users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;cc-haha&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/14/cc-haha-claude-code-desktop-workbench/&#34; &gt;cc-haha: a desktop workspace for Claude Code&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanmiCoder/cc-haha&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Desktop workspace and Computer Use entry for Claude Code&lt;/td&gt;
          &lt;td&gt;Claude Code users who prefer a GUI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek-TUI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/16/deepseek-tui-terminal-coding-agent/&#34; &gt;DeepSeek-TUI: turning DeepSeek V4 into a terminal coding agent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hmbown/DeepSeek-TUI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Run a DeepSeek coding agent in the terminal&lt;/td&gt;
          &lt;td&gt;DeepSeek and command-line users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Open Design&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;Open Design: turning Claude Code and Codex into AI design tools&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nexu-io/open-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nexu-io/open-design&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Bring Claude Code / Codex into design generation&lt;/td&gt;
          &lt;td&gt;Users who want agents for design prototypes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;agentmemory&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/&#34; &gt;agentmemory: persistent memory for Claude Code, Codex, and Cursor&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/rohitg00/agentmemory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rohitg00/agentmemory&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Add persistent memory to coding agents&lt;/td&gt;
          &lt;td&gt;Developers maintaining long-running projects&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Graphify&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/21/safishamsi-graphify-ai-code-knowledge-graph/&#34; &gt;Graphify: turning a codebase into an AI-queryable knowledge graph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/safishamsi/graphify&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;safishamsi/graphify&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Convert a codebase into a knowledge graph to reduce repeated file reads&lt;/td&gt;
          &lt;td&gt;Large-codebase users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;oh-my-pi&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/&#34; &gt;What is oh-my-pi? An AI coding assistant that connects terminal, IDE, and debugger&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/can1357/oh-my-pi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;can1357/oh-my-pi&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Connect terminal, IDE, LSP, and debugger as a local AI coding console&lt;/td&gt;
          &lt;td&gt;Developers who want to unify CLI and IDE workflows&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Plugins Official&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/23/claude-plugins-official-claude-code-plugin-directory/&#34; &gt;Claude Code now has a plugin directory: what to install, how to install it, and what to watch&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/claude-plugins-official&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/claude-plugins-official&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Official Claude Code plugin directory and installation entry point&lt;/td&gt;
          &lt;td&gt;Users who want to extend Claude Code&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodeGraph&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/23/codegraph-local-code-knowledge-graph-ai-coding-agent/&#34; &gt;What is CodeGraph? A local code map for Claude Code, Codex, and Cursor&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/colbymchenry/codegraph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;colbymchenry/codegraph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Generate local indexes and relationship graphs to help Coding Agents understand projects&lt;/td&gt;
          &lt;td&gt;Developers maintaining medium-to-large codebases&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CC Switch&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/06/cc-switch-ai-cli-manager/&#34; &gt;CC Switch: managing Claude Code, Codex, Gemini CLI, and OpenClaw in one desktop tool&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/farion1231/cc-switch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;farion1231/cc-switch&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Manage multiple AI CLI tools and account/config switching&lt;/td&gt;
          &lt;td&gt;Users of multiple CLI tools&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Warp&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/07/warpdotdev-warp-open-source-agentic-terminal/&#34; &gt;Warp open source: from terminal to Agentic Development Environment&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/warpdotdev/warp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;warpdotdev/warp&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agentic terminal and development environment&lt;/td&gt;
          &lt;td&gt;Heavy terminal users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;opencode&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/08/opencode-open-source-ai-coding-agent/&#34; &gt;opencode vs Claude Code vs Codex: open source AI coding tools guide&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anomalyco/opencode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anomalyco/opencode&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Open source AI coding agent&lt;/td&gt;
          &lt;td&gt;Users looking for Claude Code / Codex alternatives&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;9Router&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/08/9router-ai-coding-router-token-saver/&#34; &gt;9Router: connecting Claude Code, Codex, and Cursor to one AI router&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/decolua/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;decolua/9router&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI coding model routing and token cost control&lt;/td&gt;
          &lt;td&gt;Multi-tool, multi-model users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;goose&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/&#34; &gt;goose: an open source AI Agent across desktop, CLI, and API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/aaif-goose/goose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;aaif-goose/goose&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Open source agent across desktop, CLI, and API&lt;/td&gt;
          &lt;td&gt;Users who want a general agent workspace&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;agent-skills-and-workflows&#34;&gt;Agent Skills and Workflows
&lt;/h2&gt;&lt;p&gt;This group focuses on turning AI capabilities into repeatable skills, processes, and specifications. It includes &lt;strong&gt;7&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;mattpocock/skills&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/15/matt-pocock-skills-ai-engineering-workflow/&#34; &gt;Rejecting Vibe Coding: Matt Pocock&amp;rsquo;s skills repo adds engineering constraints to AI coding&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattpocock/skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Use skills to constrain AI coding workflows&lt;/td&gt;
          &lt;td&gt;Users who want engineering discipline for agents&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Superpowers&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/15/obra-superpowers-agentic-skills-framework/&#34; &gt;Superpowers: bringing coding agents back into engineering workflows&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/obra/superpowers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;obra/superpowers&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agentic skills framework and software development methodology&lt;/td&gt;
          &lt;td&gt;Users who want systematic coding-agent workflows&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Prompt-Vault&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/15/prompt-vault-coding-prompt-benchmark/&#34; &gt;Prompt-Vault: a prompt specification library for testing AI coding ability&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/w512/Prompt-Vault&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;w512/Prompt-Vault&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Collect prompt specs for testing AI coding ability&lt;/td&gt;
          &lt;td&gt;Model and tool evaluators&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;web-video-presentation&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/15/web-video-presentation-agent-skill/&#34; &gt;web-video-presentation: an agent skill for turning articles into recordable web videos&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ConardLi/garden-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ConardLi/garden-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Turn articles into recordable web videos&lt;/td&gt;
          &lt;td&gt;Content creators and automation users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;nuwa-skill&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/22/nuwa-skill-distill-how-someone-thinks/&#34; &gt;nuwa-skill: making &amp;ldquo;distilling a person&amp;rdquo; into an executable workflow&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;alchaincyf/nuwa-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Recreate a person&amp;rsquo;s expression and thinking flow with a skill&lt;/td&gt;
          &lt;td&gt;Users building style-based agents&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Scientific Agent Skills&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/17/scientific-agent-skills/&#34; &gt;Scientific Agent Skills: giving research workflows to AI agents&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-Dense-AI/scientific-agent-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Skill collection for scientific workflows&lt;/td&gt;
          &lt;td&gt;Researchers, data analysts, and technical writers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;easy-vibe&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/16/easy-vibe-vibe-coding-learning-map/&#34; &gt;easy-vibe: a learning map for Vibe Coding beginners&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/datawhalechina/easy-vibe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;datawhalechina/easy-vibe&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Learning map for Vibe Coding&lt;/td&gt;
          &lt;td&gt;AI coding beginners&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;rag-knowledge-bases-and-memory&#34;&gt;RAG, Knowledge Bases, and Memory
&lt;/h2&gt;&lt;p&gt;This group addresses document retrieval, knowledge base construction, long-term memory, and structured extraction. It includes &lt;strong&gt;7&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;LangExtract&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/google-langextract-llm-structured-data-extraction/&#34; &gt;Google LangExtract: extracting structured data from long text with LLMs&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/langextract&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/langextract&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Extract structured information from long text&lt;/td&gt;
          &lt;td&gt;Information extraction and data processing users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;qmd&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/qmd-markdown-search-for-ai-agents/&#34; &gt;qmd: local Markdown document search for AI agents&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tobi/qmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tobi/qmd&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Local Markdown document search&lt;/td&gt;
          &lt;td&gt;Users managing knowledge in Markdown&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Firecrawl&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/15/firecrawl-ai-web-data-api/&#34; &gt;Firecrawl: web search, crawling, and interaction API for AI agents&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/firecrawl/firecrawl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;firecrawl/firecrawl&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Web crawling, search, and structured data entry point&lt;/td&gt;
          &lt;td&gt;RAG and agent data-ingestion users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAGFlow&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/15/ragflow-rag-engine-guide/&#34; &gt;RAGFlow: features and usage of an open source RAG engine&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/infiniflow/ragflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;infiniflow/ragflow&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Open source RAG engine&lt;/td&gt;
          &lt;td&gt;Enterprise knowledge base and document Q&amp;amp;A users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenHuman&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/15/openhuman-open-source-personal-ai-agent/&#34; &gt;OpenHuman: the desktop route for open source personal AI agents&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tinyhumansai/openhuman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tinyhumansai/openhuman&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Local-first personal AI agent and memory layer&lt;/td&gt;
          &lt;td&gt;Users who want to integrate personal data&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenKB&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/17/openkb-llm-knowledge-base/&#34; &gt;OpenKB: compiling documents into continuously updated LLM knowledge bases&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/OpenKB&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Compile documents into updatable knowledge bases&lt;/td&gt;
          &lt;td&gt;Documentation knowledge-base maintainers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PageIndex&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/20/vectifyai-pageindex-vectorless-rag/&#34; &gt;PageIndex: reasoning-style RAG document indexing without vector databases&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/PageIndex&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Reasoning-style document indexing without vector databases&lt;/td&gt;
          &lt;td&gt;Users watching new RAG approaches&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;multimodal-and-content-creation&#34;&gt;Multimodal and Content Creation
&lt;/h2&gt;&lt;p&gt;This group covers image, video, transcription, and content distribution scenarios. It includes &lt;strong&gt;5&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;rembg&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/19/rembg-background-removal-notes/&#34; &gt;rembg: local image background removal tool&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;danielgatis/rembg&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Local image background removal&lt;/td&gt;
          &lt;td&gt;E-commerce, design, and image-processing users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;awesome-gpt-image-2-prompts&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;GPT-Image 2 prompt library: e-commerce, posters, portraits, and UI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoLinkAI/awesome-gpt-image-2-prompts&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;GPT-Image 2 prompts and case library&lt;/td&gt;
          &lt;td&gt;AI art and prompt users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;faster-whisper&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/faster-whisper-speech-to-text/&#34; &gt;faster-whisper: a faster Whisper transcription engine&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/SYSTRAN/faster-whisper&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SYSTRAN/faster-whisper&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;High-performance speech-to-text&lt;/td&gt;
          &lt;td&gt;Subtitle, transcription, and speech-processing users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pixelle-Video&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/07/pixelle-video-ai-short-video-engine/&#34; &gt;Pixelle-Video: an open source AI engine for generating short videos from one topic&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AIDC-AI/Pixelle-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AIDC-AI/Pixelle-Video&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;One-topic short-video generation workflow&lt;/td&gt;
          &lt;td&gt;Short-video and AIGC creators&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AiToEarn&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/19/aitoearn-ai-content-marketing-agent/&#34; &gt;Too many content platforms? AiToEarn uses AI agents to help creators save effort&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yikart/AiToEarn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yikart/AiToEarn&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Multi-platform content distribution and creator automation&lt;/td&gt;
          &lt;td&gt;Content operators and creators&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;local-models-and-inference&#34;&gt;Local Models and Inference
&lt;/h2&gt;&lt;p&gt;This group focuses on local model runtime and inference experiments. It currently has fewer projects, with &lt;strong&gt;1&lt;/strong&gt; project.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ds4&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/11/deepseek-v4-flash-ds4-metal/&#34; &gt;Running DeepSeek 4 locally: Antirez ds4 on Apple Silicon Mac&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/antirez/ds4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;antirez/ds4&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Experiment with running DeepSeek 4 on Apple Silicon&lt;/td&gt;
          &lt;td&gt;Local model and inference experiment users&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;vertical-applications-and-automation&#34;&gt;Vertical Applications and Automation
&lt;/h2&gt;&lt;p&gt;This group applies agents or AI capabilities to finance, trading, browsers, desktops, e-commerce monitoring, and other concrete scenarios. It includes &lt;strong&gt;7&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;TradingAgents-CN&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/&#34; &gt;TradingAgents-CN: a multi-agent financial trading research framework for Chinese users&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hsliuping/TradingAgents-CN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hsliuping/TradingAgents-CN&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Multi-agent financial trading research framework&lt;/td&gt;
          &lt;td&gt;Quant, finance, and agent researchers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FinceptTerminal&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/finceptterminal-open-source-financial-terminal/&#34; &gt;FinceptTerminal: open source financial terminal, quant research, and AI Agent workspace&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Fincept-Corporation/FinceptTerminal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fincept-Corporation/FinceptTerminal&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Financial terminal, quant research, and AI agent workspace&lt;/td&gt;
          &lt;td&gt;Financial analysis and quant users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Anthropic financial-services&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/16/anthropic-financial-services-agent-templates/&#34; &gt;Anthropic financial-services: reusable templates for financial agent scenarios&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/financial-services&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/financial-services&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Financial services agent templates&lt;/td&gt;
          &lt;td&gt;Users building financial AI solutions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ai-goofish-monitor&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/17/ai-goofish-monitor/&#34; &gt;ai-goofish-monitor: open source AI monitoring system for Xianyu products&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI product monitoring and Xianyu automation&lt;/td&gt;
          &lt;td&gt;Second-hand marketplace monitoring users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CloakBrowser&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/&#34; &gt;CloakBrowser: a more human-like browser for Playwright and Puppeteer&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CloakHQ/CloakBrowser&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;More human-like browser automation environment&lt;/td&gt;
          &lt;td&gt;Browser automation and agent operation scenarios&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;UI-TARS-desktop&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/19/ui-tars-desktop-multimodal-ai-agent-stack/&#34; &gt;Let AI operate the computer? UI-TARS-desktop connects desktop, browser, and tools&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bytedance/UI-TARS-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bytedance/UI-TARS-desktop&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Desktop, browser, and tool operation agent&lt;/td&gt;
          &lt;td&gt;Users who want AI to operate computers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI-Trader&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/19/ai-trader-agent-native-trading-platform/&#34; &gt;What is AI-Trader: a platform for AI agents to publish trading signals and run simulations&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Trader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/AI-Trader&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI agent trading signals and simulated trading platform&lt;/td&gt;
          &lt;td&gt;Financial agent and trading researchers&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;ai-application-development-infrastructure&#34;&gt;AI Application Development Infrastructure
&lt;/h2&gt;&lt;p&gt;This group provides foundational components for building AI applications and agent toolchains. It includes &lt;strong&gt;5&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Prompt Optimizer&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/prompt-optimizer-prompt-engineering-tool/&#34; &gt;Prompt Optimizer: open source prompt optimization, testing, and MCP tools&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/linshenkx/prompt-optimizer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linshenkx/prompt-optimizer&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Prompt optimization, testing, and MCP tools&lt;/td&gt;
          &lt;td&gt;Prompt engineering and app-tuning users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Playwright CLI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/12/playwright-cli-getting-started/&#34; &gt;Playwright CLI basics: installation, skills, sessions, and common commands&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;microsoft/playwright-cli&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Browser automation CLI for coding agents&lt;/td&gt;
          &lt;td&gt;Agent users who need browser operation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vercel AI SDK&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/17/vercel-ai-sdk-typescript-agent-toolkit/&#34; &gt;What is Vercel AI SDK? A unified toolkit for TypeScript AI apps&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel/ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vercel/ai&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;TypeScript AI application SDK&lt;/td&gt;
          &lt;td&gt;Front-end and full-stack developers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CLIProxyAPI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/24/cliproxyapi-cli-to-api-gateway/&#34; &gt;CLIProxyAPI: wrapping Codex, Claude Code, and Gemini CLI into unified APIs&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/CLIProxyAPI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Wrap multiple AI CLIs and OAuth login states as compatible APIs&lt;/td&gt;
          &lt;td&gt;Users who want unified access to Codex, Claude Code, and Gemini CLI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CLIProxyAPI Management Center&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/24/cliproxyapi-management-center/&#34; &gt;CLIProxyAPI Management Center: a visual admin console for CLIProxyAPI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/Cli-Proxy-API-Management-Center&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/Cli-Proxy-API-Management-Center&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Web admin UI for CLIProxyAPI configuration, accounts, logs, and OAuth&lt;/td&gt;
          &lt;td&gt;Users running CLIProxyAPI as a team gateway or account pool&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</description>
        </item>
        <item>
        <title>Do Not Push API Keys to GitHub: A Secret-Leak Prevention Guide for AI Coding</title>
        <link>https://knightli.com/en/2026/05/16/ai-coding-api-key-leak-github/</link>
        <pubDate>Sat, 16 May 2026 16:26:50 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/16/ai-coding-api-key-leak-github/</guid>
        <description>&lt;p&gt;AI coding lowers the barrier to building software, but it also brings many engineering security problems to beginners and non-engineering users.&lt;/p&gt;
&lt;p&gt;One of the most common incidents is pushing &lt;code&gt;API Key&lt;/code&gt;, &lt;code&gt;Secret&lt;/code&gt;, &lt;code&gt;Token&lt;/code&gt;, database connection strings, or &lt;code&gt;.env&lt;/code&gt; files to a public repository. Locally, these files may look like ordinary configuration that keeps the app running. Once they enter a public GitHub repository, they become credentials that can be scanned, called, and abused automatically.&lt;/p&gt;
&lt;p&gt;Secret leaks are not rare. GitGuardian&amp;rsquo;s 2026 report says public GitHub commits in 2025 contained about 28.65 million new hardcoded credentials, and AI-service credential leaks grew 81% year over year. The issue is no longer just carelessness. AI coding, rapid prototyping, and public hosting are amplifying the scale.&lt;/p&gt;
&lt;h2 id=&#34;why-beginners-leak-keys-more-easily&#34;&gt;Why Beginners Leak Keys More Easily
&lt;/h2&gt;&lt;p&gt;Many AI agents and small tools have two &amp;ldquo;repositories&amp;rdquo;: one on the local disk, and one visible to the world on GitHub. The problem is that beginners often do not understand the boundary between the two.&lt;/p&gt;
&lt;p&gt;During local development, &lt;code&gt;config.json&lt;/code&gt;, &lt;code&gt;.env&lt;/code&gt;, and &lt;code&gt;settings.yaml&lt;/code&gt; may contain API keys. After &lt;code&gt;git add .&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt;, and &lt;code&gt;git push&lt;/code&gt;, those files may be uploaded in full. Once a repository is public, scanning bots do not need to understand your business logic. They only need to match a secret pattern.&lt;/p&gt;
&lt;p&gt;AI coding makes this worse:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AI-generated examples may place &lt;code&gt;OPENAI_API_KEY = &amp;quot;sk-...&amp;quot;&lt;/code&gt; directly in source code.&lt;/li&gt;
&lt;li&gt;Beginners often hardcode secrets in frontend code, scripts, or config files just to get the project running.&lt;/li&gt;
&lt;li&gt;Many vibe coding platforms can deploy apps directly without going through GitHub push protection.&lt;/li&gt;
&lt;li&gt;Users may not know which files, APIs, or default permissions exist inside an AI-generated project.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In short, AI can help you build something that runs faster. It does not automatically take over the security responsibility.&lt;/p&gt;
&lt;h2 id=&#34;gitignore-is-not-decoration&#34;&gt;&lt;code&gt;.gitignore&lt;/code&gt; Is Not Decoration
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Git&lt;/code&gt; manages version history, &lt;code&gt;GitHub&lt;/code&gt; hosts code, and &lt;code&gt;.gitignore&lt;/code&gt; tells Git which files should not enter that history.&lt;/p&gt;
&lt;p&gt;A basic AI project should at least ignore these:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config.local.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;secrets.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials.*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;But &lt;code&gt;.gitignore&lt;/code&gt; alone is not enough. It only prevents untracked files from being added later. If a secret file has already been committed, adding it to &lt;code&gt;.gitignore&lt;/code&gt; will not remove it from history.&lt;/p&gt;
&lt;p&gt;A safer habit is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;.gitignore&lt;/code&gt; at the beginning of a project.&lt;/li&gt;
&lt;li&gt;Store API keys only in environment variables or local config.&lt;/li&gt;
&lt;li&gt;Provide &lt;code&gt;.env.example&lt;/code&gt; with placeholders, not real secrets.&lt;/li&gt;
&lt;li&gt;Run a secret scanner before committing, such as &lt;code&gt;gitleaks&lt;/code&gt;, &lt;code&gt;trufflehog&lt;/code&gt;, or GitHub Secret Scanning.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;deleting-the-file-is-not-enough&#34;&gt;Deleting the File Is Not Enough
&lt;/h2&gt;&lt;p&gt;If a key has already been pushed to a public repository, the first reaction should not be &amp;ldquo;delete the file and commit again.&amp;rdquo; Revoke or rotate the key first.&lt;/p&gt;
&lt;p&gt;Git records history. Even if the latest commit removes the file, old commits, forks, clones, caches, and scanners may still contain it. GitHub&amp;rsquo;s documentation also recommends revoking or rotating passwords, tokens, and credentials as the first step.&lt;/p&gt;
&lt;p&gt;Recommended order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Revoke the old key in the provider console and create a new one.&lt;/li&gt;
&lt;li&gt;Check billing, usage logs, suspicious IPs, and unusual traffic.&lt;/li&gt;
&lt;li&gt;Remove hardcoded secrets and switch to environment variables or a secret manager.&lt;/li&gt;
&lt;li&gt;Clean sensitive files from repository history with &lt;code&gt;git filter-repo&lt;/code&gt; or BFG.&lt;/li&gt;
&lt;li&gt;Enable GitHub Secret Scanning and Push Protection.&lt;/li&gt;
&lt;li&gt;Check CI/CD, deployment platforms, cloud functions, and frontend build artifacts for the old key.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For OpenAI, Anthropic, DeepSeek, cloud providers, payment services, email services, and databases, a leaked key can lead to more than unexpected bills. It may expose data, enable abuse, affect the supply chain, or get business accounts banned.&lt;/p&gt;
&lt;h2 id=&#34;real-secrets-do-not-belong-in-frontend-code&#34;&gt;Real Secrets Do Not Belong in Frontend Code
&lt;/h2&gt;&lt;p&gt;Many beginners put API keys into frontend JavaScript because the page works:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sk-xxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This is effectively public. Browser code, network requests, source maps, and build artifacts can all be inspected. Any key that must remain secret should not appear on the client side.&lt;/p&gt;
&lt;p&gt;The correct approach is to let the frontend call your own backend, and let the backend read environment variables and call the third-party API:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// frontend
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/chat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;method&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then the server uses the environment variable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This keeps the secret in the server environment instead of exposing it to every visitor.&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-does-not-remove-security-responsibility&#34;&gt;Vibe Coding Does Not Remove Security Responsibility
&lt;/h2&gt;&lt;p&gt;Vibe coding is not only a GitHub leak problem. Many apps are published directly from AI coding platforms to the public internet, bypassing traditional code review, repository scanning, and security testing.&lt;/p&gt;
&lt;p&gt;Recent RedAccess research found a large number of publicly accessible assets generated or hosted by AI coding tools, some exposing corporate data, personal information, or internal files. The lesson is simple: when &amp;ldquo;can deploy&amp;rdquo; becomes too easy, people often forget to ask &amp;ldquo;should this be public?&amp;rdquo;, &amp;ldquo;should this only be internal?&amp;rdquo;, and &amp;ldquo;does it have access control?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Before publishing an AI-generated app, ask:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Does this app really need public access?&lt;/li&gt;
&lt;li&gt;Does it have login, authentication, and permission isolation?&lt;/li&gt;
&lt;li&gt;Are database URLs, API keys, tokens, or webhook URLs exposed in frontend code?&lt;/li&gt;
&lt;li&gt;Are third-party API quota, domain, permission, and expiry limits configured?&lt;/li&gt;
&lt;li&gt;Can keys be disabled and deployments rolled back quickly after an incident?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI-generated code still needs security review. The less code you personally wrote, the less you should assume it is safe.&lt;/p&gt;
&lt;h2 id=&#34;checks-to-run-now&#34;&gt;Checks to Run Now
&lt;/h2&gt;&lt;p&gt;Start with your own GitHub account. Search your username together with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SECRET
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOKEN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OPENAI_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ANTHROPIC_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DEEPSEEK_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you find a real key, rotate first and clean up later. If it ever entered a public repository, treat it as leaked.&lt;/p&gt;
&lt;p&gt;For future AI projects, use a fixed process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write &lt;code&gt;.gitignore&lt;/code&gt; before writing business code.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;.env.example&lt;/code&gt; to document required variables.&lt;/li&gt;
&lt;li&gt;Put all secrets in environment variables, not source code.&lt;/li&gt;
&lt;li&gt;Give API keys minimal permissions, quotas, and expiry dates.&lt;/li&gt;
&lt;li&gt;Enable GitHub Secret Scanning and Push Protection.&lt;/li&gt;
&lt;li&gt;Let AI help with a security review before publishing, but do not trust AI alone.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The danger of AI coding is not simply that it may write bad code. It gives many people the ability to publish unsafe apps to the public internet for the first time. Writing fast is not the problem. Handing out secrets, data, and permissions is.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gitguardian.com/state-of-secrets-sprawl-report-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitGuardian State of Secrets Sprawl 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/articles/remove-sensitive-data&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: Removing sensitive data from a repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/code-security/secret-scanning/push-protection-for-repositories-and-organizations&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: About push protection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/05/07/loveable-replit-vibe-coding-privacy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: AI vibe-coding apps leak sensitive data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
