<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Skills on KnightLi Blog</title>
        <link>https://knightli.com/en/tags/skills/</link>
        <description>Recent content in Skills on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Mon, 18 May 2026 22:29:43 +0800</lastBuildDate><atom:link href="https://knightli.com/en/tags/skills/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>A Survey of Mainstream AI PPT Tools: How to Choose Between Auto Generation, Web Slides, PPTX, and Image-Based Workflows</title>
        <link>https://knightli.com/en/2026/05/18/ai-ppt-skills-selection-guide/</link>
        <pubDate>Mon, 18 May 2026 22:29:43 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/18/ai-ppt-skills-selection-guide/</guid>
        <description>&lt;p&gt;AI for PPT is no longer just &amp;ldquo;enter a title and apply a template.&amp;rdquo; In AI coding environments such as Claude Code, Codex, and Cursor, PPT generation is becoming a set of installable, reusable Agent Skills: some output web presentations, some generate truly editable &lt;code&gt;.pptx&lt;/code&gt; files, some use image models to turn each slide into a visual draft, and some let AI operate PowerPoint files through MCP.&lt;/p&gt;
&lt;p&gt;This article looks at a group of mainstream PPT-related Skills. The useful part is not only the list itself, but the way these tools can be separated by delivery format. Before choosing a tool, ask one question first: who will edit the final deliverable, where will it be presented, and does it need ongoing collaboration?&lt;/p&gt;
&lt;h2 id=&#34;several-routes&#34;&gt;Several Routes
&lt;/h2&gt;&lt;h3 id=&#34;1-html-web-presentations&#34;&gt;1. HTML Web Presentations
&lt;/h3&gt;&lt;p&gt;Representative projects include &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The strength of this route is visual expressiveness. CSS animations, Canvas, WebGL, and responsive layouts are all available. The result can be opened directly in a browser, making it suitable for technical talks, product launches, Demo Day presentations, and talks with a strong personal style.&lt;/p&gt;
&lt;p&gt;The trade-off is also clear: after delivery, it is not ideal for clients who need to edit text line by line. If the client receives HTML instead of a PowerPoint file, later changes often need to go back through the generation workflow.&lt;/p&gt;
&lt;p&gt;If you only care about HTML presentations, &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt; feels like a high-star general entry point, &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt; is stronger in aesthetic constraints and themed style, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt; stands out for its number of themes, layout options, and presenter mode.&lt;/p&gt;
&lt;h3 id=&#34;2-native-pptx&#34;&gt;2. Native PPTX
&lt;/h3&gt;&lt;p&gt;Representative projects include &lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mckinsey-pptx&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-agent-skills&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/tfriedel/claude-office-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;claude-office-skills&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is the most stable route for business delivery. As long as the client asks to &amp;ldquo;edit text, change images, and apply a company template in PowerPoint,&amp;rdquo; the final output needs to land in &lt;code&gt;.pptx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt; is especially worth a separate look. Its idea is to have the LLM generate SVG first, then convert it into native PowerPoint DrawingML objects. The goal is to keep text boxes, shapes, and charts editable inside PPTX. It also supports generating PPTX from PDF, DOCX, URL, and Markdown, as well as template replication, animation, narration, and local preview.&lt;/p&gt;
&lt;p&gt;This route works well for consulting deliverables, company reports, white paper presentations, and turning long reports into PPT decks. The downside is that the visual ceiling is usually limited by PowerPoint itself, so complex effects are not as free as HTML or image-based routes.&lt;/p&gt;
&lt;h3 id=&#34;3-ai-image-driven-workflows&#34;&gt;3. AI Image-Driven Workflows
&lt;/h3&gt;&lt;p&gt;Representative projects include &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanoBanana-PPT-Skills&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpt_image_2_skill&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-image-first&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This route treats each slide as a visual image first, then places the images into PPTX or another container. Its advantage is a high level of visual completion, especially for covers, social media graphics, visual proposals, and communication-oriented content.&lt;/p&gt;
&lt;p&gt;The problem is poor editability. A page is essentially an image. If you later need to change a title, replace a paragraph, or move an icon, you may need to regenerate it. It is good for &amp;ldquo;it needs to look good,&amp;rdquo; but not for &amp;ldquo;the client will revise it repeatedly.&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;4-mcp--protocol-layer&#34;&gt;4. MCP / Protocol Layer
&lt;/h3&gt;&lt;p&gt;Representative projects include &lt;a class=&#34;link&#34; href=&#34;https://github.com/GongRzhe/Office-PowerPoint-MCP-Server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Office-PowerPoint-MCP-Server&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PPTAgent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These tools do not necessarily generate a complete PPT directly. Instead, they give AI an interface for operating PowerPoint. After connecting through MCP, the model can read, modify, and write &lt;code&gt;.pptx&lt;/code&gt; files.&lt;/p&gt;
&lt;p&gt;This route fits workflows where a PPT file already exists and AI is needed to help revise it. Examples include batch format changes, rearranging pages based on feedback, or asking the model to check whether each slide matches the goal. &lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PPTAgent&lt;/a&gt; emphasizes reflective generation, meaning it checks back after generating each slide. That direction is useful for reducing the &amp;ldquo;AI PPT feels rough&amp;rdquo; problem.&lt;/p&gt;
&lt;h3 id=&#34;5-integrated-design-platforms&#34;&gt;5. Integrated Design Platforms
&lt;/h3&gt;&lt;p&gt;Representative projects include &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&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These projects go beyond PPT generation itself. &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&lt;/a&gt; is more like a local-first design platform that can generate prototypes, slides, images, and videos, with support for multiple export formats. &lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent&lt;/a&gt; is not a PPT tool, but it can index and chat with local documents, making it useful as a material organization layer before generating PPT.&lt;/p&gt;
&lt;p&gt;If your need is not a one-off PPT, but a fuller workflow from materials, design, and prototypes to delivery, this type of platform is more worth watching.&lt;/p&gt;
&lt;h2 id=&#34;skill-metadata&#34;&gt;Skill Metadata
&lt;/h2&gt;&lt;p&gt;Star counts come from the original crawl result on 2026-05-15. They are only useful as a popularity reference. Before actual use, open the repositories again to confirm maintenance status, README, and LICENSE.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Skill&lt;/th&gt;
          &lt;th&gt;Author&lt;/th&gt;
          &lt;th&gt;Links&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Star&lt;/th&gt;
          &lt;th&gt;Language&lt;/th&gt;
          &lt;th&gt;Route&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;frontend-slides&lt;/td&gt;
          &lt;td&gt;@zarazhangrui&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;zarazhangrui/frontend-slides&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;17,530&lt;/td&gt;
          &lt;td&gt;Shell&lt;/td&gt;
          &lt;td&gt;HTML web presentation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;guizang-ppt-skill&lt;/td&gt;
          &lt;td&gt;@op7418 (Guizang)&lt;/td&gt;
          &lt;td&gt;Site article: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;&lt;br&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/guizang-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;op7418/guizang-ppt-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8,832&lt;/td&gt;
          &lt;td&gt;HTML&lt;/td&gt;
          &lt;td&gt;HTML web presentation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;html-ppt-skill&lt;/td&gt;
          &lt;td&gt;@lewislulu&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lewislulu/html-ppt-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3,834&lt;/td&gt;
          &lt;td&gt;HTML/CSS/JS&lt;/td&gt;
          &lt;td&gt;HTML web presentation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;mckinsey-pptx&lt;/td&gt;
          &lt;td&gt;@seulee26&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;seulee26/mckinsey-pptx&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;426&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;Native PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-agent-skills&lt;/td&gt;
          &lt;td&gt;@sunbigfly&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sunbigfly/ppt-agent-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;714&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;Native PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;claude-office-skills&lt;/td&gt;
          &lt;td&gt;@tfriedel&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/tfriedel/claude-office-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tfriedel/claude-office-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;631&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;Native PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-master&lt;/td&gt;
          &lt;td&gt;@hugohe3&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hugohe3/ppt-master&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16,626&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;Native PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NanoBanana-PPT-Skills&lt;/td&gt;
          &lt;td&gt;@op7418 (Guizang)&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;op7418/NanoBanana-PPT-Skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2,668&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI image-driven&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;gpt_image_2_skill&lt;/td&gt;
          &lt;td&gt;@wuyoscar&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;wuyoscar/gpt_image_2_skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2,102&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI image-driven&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-image-first&lt;/td&gt;
          &lt;td&gt;@NyxTides&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NyxTides/ppt-image-first&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;799&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI image-driven&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Office-PowerPoint-MCP-Server&lt;/td&gt;
          &lt;td&gt;@GongRzhe&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/GongRzhe/Office-PowerPoint-MCP-Server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GongRzhe/Office-PowerPoint-MCP-Server&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1,708&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;MCP / protocol layer&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PPTAgent&lt;/td&gt;
          &lt;td&gt;@icip-cas&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;icip-cas/PPTAgent&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4,354&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;MCP / protocol layer&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;open-design&lt;/td&gt;
          &lt;td&gt;@nexu-io&lt;/td&gt;
          &lt;td&gt;Site article: &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&lt;/a&gt;&lt;br&gt;GitHub: &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 style=&#34;text-align: right&#34;&gt;40,822&lt;/td&gt;
          &lt;td&gt;TypeScript&lt;/td&gt;
          &lt;td&gt;Integrated design platform&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;docsagent&lt;/td&gt;
          &lt;td&gt;@docsagent&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent/docsagent&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;687&lt;/td&gt;
          &lt;td&gt;TypeScript&lt;/td&gt;
          &lt;td&gt;Integrated design platform&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to Choose
&lt;/h2&gt;&lt;p&gt;If the client needs to continue editing, prioritize the native PPTX route, especially &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mckinsey-pptx&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-agent-skills&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you are presenting yourself and visual expression matters more than later editing, prioritize the HTML route, especially &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If the goal is a poster-like, cover-like, or shareable visual, prioritize the image route, such as &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-image-first&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpt_image_2_skill&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanoBanana-PPT-Skills&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you already have a PPT file and only want AI to help read, edit, and rearrange it, look at the MCP route.&lt;/p&gt;
&lt;p&gt;For explicit scenarios such as academic talks, marketing, translation, or compressing long reports into slides, you can also look for vertical Skills instead of forcing a general-purpose PPT generator to do everything.&lt;/p&gt;
&lt;h2 id=&#34;final-notes&#34;&gt;Final Notes
&lt;/h2&gt;&lt;p&gt;Open source projects should not be judged by Star count alone. Before actual use, confirm three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether the LICENSE allows your use case.&lt;/li&gt;
&lt;li&gt;Whether the generated output meets delivery requirements, especially editability.&lt;/li&gt;
&lt;li&gt;Whether the cost is acceptable, including model calls, image generation, large-context models, and possible cloud service fees.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These tools change quickly. Star counts will change, and project maintenance status will change too. But the selection logic is relatively stable: decide the delivery format first, then look at specific tools. Whether a PPT is for speaking, editing, or viewing often narrows the choices by more than half.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>24 Claude Code Tips: Plan Mode, Rewind, CLAUDE.md, Skills, Agents, and Plugins</title>
        <link>https://knightli.com/en/2026/05/08/claude-code-24-tips-plan-rewind-skills-agents/</link>
        <pubDate>Fri, 08 May 2026 08:54:14 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/08/claude-code-24-tips-plan-rewind-skills-agents/</guid>
        <description>&lt;p&gt;Claude Code is not just a chat box. It is closer to a coding Agent that can enter a project directory, read and write files, run commands, and maintain context.&lt;/p&gt;
&lt;p&gt;If you only throw a requirement at it and wait for code, problems appear quickly: unclear plans, repeated permission prompts, growing context, unsatisfactory output, no clear rollback path, and no persistent place for project rules.&lt;/p&gt;
&lt;p&gt;Here is a set of common operations for developers getting started with Claude Code.&lt;/p&gt;
&lt;h2 id=&#34;start-inside-the-project-directory&#34;&gt;Start Inside the Project Directory
&lt;/h2&gt;&lt;p&gt;Claude Code works best when launched inside the project directory, not from a random terminal location.&lt;/p&gt;
&lt;p&gt;Create a folder as the project directory, enter it, open a command line, and start Claude 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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&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;When first entering a project, if Claude Code asks whether to trust the current folder, confirm before continuing. This lets it read files, create files, and run later operations around the current project.&lt;/p&gt;
&lt;p&gt;A simple practice task is to ask it to create a photographer portfolio website. The task is visual enough to inspect, and it also lets you practice file generation, command execution, rewind, and later refactoring.&lt;/p&gt;
&lt;h2 id=&#34;use-plan-mode-first&#34;&gt;Use Plan Mode First
&lt;/h2&gt;&lt;p&gt;For more complex tasks, Claude Code may enter plan mode. Plan mode is meant to discuss requirements and break down steps before you approve execution.&lt;/p&gt;
&lt;p&gt;After it writes a plan, you usually see options like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Approve the plan and automatically allow future edit tools.&lt;/li&gt;
&lt;li&gt;Approve the plan, but require manual approval for later edits.&lt;/li&gt;
&lt;li&gt;Pause and continue discussing the plan with Claude Code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the task is clear, approve and continue. If it is not clear yet, ask it to refine the plan, such as page style, tech stack, directory structure, interactions, and acceptance criteria.&lt;/p&gt;
&lt;p&gt;Plan mode reduces rework. If an Agent starts directly, it may quickly generate many files; if the direction is wrong, later changes can get messy.&lt;/p&gt;
&lt;h2 id=&#34;switch-modes-with-shift--tab&#34;&gt;Switch Modes With Shift + Tab
&lt;/h2&gt;&lt;p&gt;In Claude Code, &lt;code&gt;Shift + Tab&lt;/code&gt; can switch between working modes. A common use is entering plan mode or switching into an auto-approve-edit mode.&lt;/p&gt;
&lt;p&gt;Suggested habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New projects, new features, major changes: start in plan mode.&lt;/li&gt;
&lt;li&gt;Small edits and clear fixes: execute directly.&lt;/li&gt;
&lt;li&gt;Deletion, bulk replacement, dependency installation: keep manual approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In plan mode, Claude Code may ask project-detail questions. Use arrow keys to choose and Enter to confirm. After submitting feedback, it updates the plan.&lt;/p&gt;
&lt;h2 id=&#34;do-not-open-all-permissions-blindly&#34;&gt;Do Not Open All Permissions Blindly
&lt;/h2&gt;&lt;p&gt;When Claude Code runs commands, edits files, or starts programs, it may request permission.&lt;/p&gt;
&lt;p&gt;Common choices include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allow only this time.&lt;/li&gt;
&lt;li&gt;Allow this command type for the current session.&lt;/li&gt;
&lt;li&gt;Reject or pause.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For local preview, dev server startup, or file inspection, approve as needed. But do not permanently use a mode that auto-approves all permissions just to save clicks.&lt;/p&gt;
&lt;p&gt;Full automation is only suitable when the task is low-risk, clearly understood, and the project already has Git backups. For daily use, keep human approval for deletion, overwriting folders, dependency installation, networking, commits, and scripts.&lt;/p&gt;
&lt;h2 id=&#34;run-local-commands-in-terminal-mode&#34;&gt;Run Local Commands in Terminal Mode
&lt;/h2&gt;&lt;p&gt;Claude Code can enter a terminal-command mode to run local commands.&lt;/p&gt;
&lt;p&gt;For example, after generating a page, you can open an HTML file 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;/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;start index.html
&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;&lt;code&gt;start&lt;/code&gt; is a Windows command for opening a file, followed by the filename. This is faster than finding the file manually.&lt;/p&gt;
&lt;p&gt;Terminal mode is useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opening generated pages.&lt;/li&gt;
&lt;li&gt;Listing directory contents.&lt;/li&gt;
&lt;li&gt;Starting local development servers.&lt;/li&gt;
&lt;li&gt;Running tests or builds.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Still, be careful with high-risk commands such as recursive deletion, moving directories, bulk overwrites, and system environment changes.&lt;/p&gt;
&lt;h2 id=&#34;rewind-when-the-result-goes-wrong&#34;&gt;Rewind When the Result Goes Wrong
&lt;/h2&gt;&lt;p&gt;If the page or code produced by Claude Code is not what you want, and each correction makes it worse, rewind early.&lt;/p&gt;
&lt;p&gt;Rewind can return code or conversation to a previous point. Common options include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rewind both code and conversation.&lt;/li&gt;
&lt;li&gt;Rewind only conversation.&lt;/li&gt;
&lt;li&gt;Rewind only code.&lt;/li&gt;
&lt;li&gt;Compress earlier content into a summary.&lt;/li&gt;
&lt;li&gt;Cancel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When the direction is clearly wrong, it is usually better to rewind both code and conversation. That returns context and files to a cleaner state together.&lt;/p&gt;
&lt;p&gt;Note that Claude Code rewind usually only covers files it created or changed through built-in tools. Files created through external commands may not be fully rewindable. Important projects should still use Git.&lt;/p&gt;
&lt;h2 id=&#34;write-long-prompts-in-an-editor&#34;&gt;Write Long Prompts in an Editor
&lt;/h2&gt;&lt;p&gt;Do not squeeze complex requirements into one input line.&lt;/p&gt;
&lt;p&gt;If the system supports editing a long prompt in a text editor, open the editor, write the requirement clearly, save it, and then send it to Claude Code.&lt;/p&gt;
&lt;p&gt;Long prompts should include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The goal.&lt;/li&gt;
&lt;li&gt;The tech stack.&lt;/li&gt;
&lt;li&gt;What not to do.&lt;/li&gt;
&lt;li&gt;Which files must be kept.&lt;/li&gt;
&lt;li&gt;How to verify completion.&lt;/li&gt;
&lt;li&gt;Page or feature acceptance criteria.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, if you want Claude Code to refactor a plain HTML page into a more modern stack, do not just say &amp;ldquo;refactor it.&amp;rdquo; Explain component structure, visual preservation, responsive layout, and ask it to run a build check.&lt;/p&gt;
&lt;h2 id=&#34;restore-sessions-after-exit&#34;&gt;Restore Sessions After Exit
&lt;/h2&gt;&lt;p&gt;If you need to quit Claude Code midway, exit normally. Later, return to the same project directory and start again:&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;claude
&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 previous records do not appear directly, use history-related commands to view and load recent sessions.&lt;/p&gt;
&lt;p&gt;This is useful for continuing interrupted work. But do not treat session history as the only memory. Project rules, tech stack, common commands, and notes should live in project files.&lt;/p&gt;
&lt;h2 id=&#34;use-claudemd-for-project-rules&#34;&gt;Use CLAUDE.md for Project Rules
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is an important memory file for Claude Code. It usually sits at the project root and tells Claude Code project rules, tech stack, directory structure, and collaboration constraints.&lt;/p&gt;
&lt;p&gt;You can ask Claude Code to initialize it:&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;/init
&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;&lt;code&gt;CLAUDE.md&lt;/code&gt; is good for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project goals.&lt;/li&gt;
&lt;li&gt;Tech stack.&lt;/li&gt;
&lt;li&gt;Common start, test, and build commands.&lt;/li&gt;
&lt;li&gt;Directory notes.&lt;/li&gt;
&lt;li&gt;Code style.&lt;/li&gt;
&lt;li&gt;Forbidden actions.&lt;/li&gt;
&lt;li&gt;Commit and deployment rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;During each conversation, Claude Code can use these rules as part of the context. Think of it as a project manual.&lt;/p&gt;
&lt;p&gt;A simple test is to add a clear rule into &lt;code&gt;CLAUDE.md&lt;/code&gt;, then ask Claude Code something. If its answer follows the rule, it has read the project memory.&lt;/p&gt;
&lt;h2 id=&#34;reference-files-with-&#34;&gt;Reference Files With @
&lt;/h2&gt;&lt;p&gt;Typing &lt;code&gt;@&lt;/code&gt; in the input box lets you select files or Agents and add them to the current context.&lt;/p&gt;
&lt;p&gt;This is useful when you want Claude Code to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read a config file.&lt;/li&gt;
&lt;li&gt;Modify a specific page.&lt;/li&gt;
&lt;li&gt;Continue based on &lt;code&gt;CLAUDE.md&lt;/code&gt; or another document.&lt;/li&gt;
&lt;li&gt;Only inspect a specific file instead of guessing the whole project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compared with copying file contents into the input box, &lt;code&gt;@&lt;/code&gt; references are clearer and less error-prone.&lt;/p&gt;
&lt;h2 id=&#34;view-and-compress-context&#34;&gt;View and Compress Context
&lt;/h2&gt;&lt;p&gt;After a long conversation, context grows. When it gets too long, the model may slow down or start ignoring earlier details.&lt;/p&gt;
&lt;p&gt;Use:&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;/context
&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 context is long, compress history:&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;/compact
&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 the result is still poor, consider clearing the current context:&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;/clear
&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 clearing, Claude Code can still understand part of the project through files, &lt;code&gt;CLAUDE.md&lt;/code&gt;, and the current directory, but it will not keep the full conversation history.&lt;/p&gt;
&lt;p&gt;A practical habit: start a new chat after a task is done, write project rules into &lt;code&gt;CLAUDE.md&lt;/code&gt;, and do not let temporary discussion grow forever in one chat.&lt;/p&gt;
&lt;h2 id=&#34;skills-turn-repeated-work-into-instructions&#34;&gt;Skills: Turn Repeated Work Into Instructions
&lt;/h2&gt;&lt;p&gt;Skills are reusable task instructions for Claude Code. They are not one-off prompts, but packaged workflows.&lt;/p&gt;
&lt;p&gt;For example, if you often generate weekly reports, create a weekly-report Skill that defines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Required input.&lt;/li&gt;
&lt;li&gt;Output format.&lt;/li&gt;
&lt;li&gt;Tone and structure.&lt;/li&gt;
&lt;li&gt;What must be preserved.&lt;/li&gt;
&lt;li&gt;What must not be invented.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills usually contain &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, and detailed instructions. Once installed in the global Skills directory, Claude Code can recognize and load them for related tasks.&lt;/p&gt;
&lt;p&gt;Good Skill candidates include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Weekly reports.&lt;/li&gt;
&lt;li&gt;Code review templates.&lt;/li&gt;
&lt;li&gt;Document cleanup.&lt;/li&gt;
&lt;li&gt;Image batch processing.&lt;/li&gt;
&lt;li&gt;Fixed-format articles.&lt;/li&gt;
&lt;li&gt;Project initialization flows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you repeatedly copy the same prompt, consider turning it into a Skill.&lt;/p&gt;
&lt;h2 id=&#34;agents-delegate-subtasks-to-independent-helpers&#34;&gt;Agents: Delegate Subtasks to Independent Helpers
&lt;/h2&gt;&lt;p&gt;Agents are different from Skills.&lt;/p&gt;
&lt;p&gt;A Skill is more like an instruction manual. An Agent is more like an independent helper that can work outside the main conversation and return results.&lt;/p&gt;
&lt;p&gt;The value of Agents is context isolation. For code inspection, you can create a read-only Agent that only reads the project and outputs a report, without modifying files. This avoids polluting the main conversation and lowers risk.&lt;/p&gt;
&lt;p&gt;When creating an Agent, consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project-level or user-level Agent.&lt;/li&gt;
&lt;li&gt;Whether Claude Code should generate the config.&lt;/li&gt;
&lt;li&gt;Which tools are allowed.&lt;/li&gt;
&lt;li&gt;Which model to use.&lt;/li&gt;
&lt;li&gt;Whether memory should be saved.&lt;/li&gt;
&lt;li&gt;Whether the Agent prompt is clear enough.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For code-audit Agents, give read-only permissions first. Let it output a report, then decide in the main conversation whether to change code.&lt;/p&gt;
&lt;h2 id=&#34;plugins-package-skills-agents-mcp-and-hooks&#34;&gt;Plugins: Package Skills, Agents, MCP, and Hooks
&lt;/h2&gt;&lt;p&gt;Plugins are more complete capability packages. They may include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Agents&lt;/li&gt;
&lt;li&gt;MCP&lt;/li&gt;
&lt;li&gt;Hooks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compared with installing one Skill, a plugin is better for a full capability set. For example, a frontend design plugin may package visual rules, layout habits, component preferences, and related Agents together.&lt;/p&gt;
&lt;p&gt;When installing a plugin, you may choose:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install to the user directory, effective for all projects.&lt;/li&gt;
&lt;li&gt;Install to the project directory, shareable with the project.&lt;/li&gt;
&lt;li&gt;Install to a local project directory, effective only on your computer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the user directory for personal common capabilities, the project directory for team conventions, and local project install for temporary testing.&lt;/p&gt;
&lt;h2 id=&#34;plugins-can-improve-specific-tasks&#34;&gt;Plugins Can Improve Specific Tasks
&lt;/h2&gt;&lt;p&gt;For frontend page generation, plugins can be more stable than raw prompts.&lt;/p&gt;
&lt;p&gt;For example, for &amp;ldquo;make a photographer portfolio website,&amp;rdquo; a plain prompt may generate an acceptable page. If you explicitly use a frontend design plugin, the structure, visual hierarchy, spacing, colors, and overall finish are often better.&lt;/p&gt;
&lt;p&gt;This does not mean plugins replace human taste. A better workflow is to let the plugin generate a stronger first draft, then refine details manually.&lt;/p&gt;
&lt;h2 id=&#34;a-more-stable-claude-code-workflow&#34;&gt;A More Stable Claude Code Workflow
&lt;/h2&gt;&lt;p&gt;Putting these tips together gives a steadier workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start &lt;code&gt;claude&lt;/code&gt; inside the project directory.&lt;/li&gt;
&lt;li&gt;Discuss requirements in plan mode first.&lt;/li&gt;
&lt;li&gt;Confirm tech stack and acceptance criteria before approving the plan.&lt;/li&gt;
&lt;li&gt;Keep manual approval for high-risk actions.&lt;/li&gt;
&lt;li&gt;Use terminal mode for local preview and tests.&lt;/li&gt;
&lt;li&gt;Rewind early when the result goes off track.&lt;/li&gt;
&lt;li&gt;Write project rules into &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Check and compress context during long chats.&lt;/li&gt;
&lt;li&gt;Turn repeated workflows into Skills.&lt;/li&gt;
&lt;li&gt;Delegate inspection, research, and analysis to read-only Agents.&lt;/li&gt;
&lt;li&gt;Use plugins for domain-specific tasks.&lt;/li&gt;
&lt;li&gt;Always keep Git checkpoints for important projects.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is much more stable than simply sending one requirement and waiting for generation.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Claude Code efficiency does not come only from model capability. It also comes from workflow control.&lt;/p&gt;
&lt;p&gt;Plan mode sets direction, permission approval controls risk, rewind reduces rework, &lt;code&gt;CLAUDE.md&lt;/code&gt; stores project rules, &lt;code&gt;/context&lt;/code&gt;, &lt;code&gt;/compact&lt;/code&gt;, and &lt;code&gt;/clear&lt;/code&gt; manage context, Skills reuse fixed workflows, Agents isolate complex subtasks, and plugins package complete capabilities.&lt;/p&gt;
&lt;p&gt;The best way to use Claude Code is to let it move tasks forward inside clear boundaries, not to hand the entire project to it at once.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Awesome Codex Skills: A Community Catalog for Extending Codex CLI</title>
        <link>https://knightli.com/en/2026/05/07/awesome-codex-skills-composio/</link>
        <pubDate>Thu, 07 May 2026 20:19:15 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/07/awesome-codex-skills-composio/</guid>
        <description>&lt;p&gt;ComposioHQ&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/ComposioHQ/awesome-codex-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;awesome-codex-skills&lt;/a&gt; is a community catalog for Codex CLI skills. Its value is not another pile of prompt templates, but a way to package repeatable workflows into installable, reusable, and maintainable Skills.&lt;/p&gt;
&lt;p&gt;If you already use Codex as part of daily development, this kind of repository is immediately useful: rules, commands, reference materials, and operating steps that you used to explain again and again can be written down once, then reused whenever the matching Skill is invoked.&lt;/p&gt;
&lt;h2 id=&#34;what-this-repository-solves&#34;&gt;What This Repository Solves
&lt;/h2&gt;&lt;p&gt;Codex Skills can be understood as specialized work modes for Codex CLI. A normal prompt is good for one temporary instruction; a Skill is better for something you want to reuse over time.&lt;/p&gt;
&lt;p&gt;For example, you may often need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;generate commit messages in a fixed format;&lt;/li&gt;
&lt;li&gt;look up a specific family of API documentation;&lt;/li&gt;
&lt;li&gt;run project-specific test and deployment commands;&lt;/li&gt;
&lt;li&gt;rewrite articles, translate docs, or organize notes according to team rules;&lt;/li&gt;
&lt;li&gt;call external tools for repetitive development tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Typing these instructions every time quickly becomes overhead. A Skill puts the rules into a standalone directory. The core is usually a &lt;code&gt;SKILL.md&lt;/code&gt; file, sometimes accompanied by scripts, templates, reference documents, or assets. When Codex is triggered, it reads the instructions and follows the workflow described there.&lt;/p&gt;
&lt;h2 id=&#34;how-it-differs-from-a-prompt&#34;&gt;How It Differs From a Prompt
&lt;/h2&gt;&lt;p&gt;A prompt is more like a one-off instruction: &amp;ldquo;do this task this way.&amp;rdquo; A Skill is closer to a small operating manual: &amp;ldquo;whenever this class of task appears, work in this way.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Its main advantages are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Reusable&lt;/strong&gt;: common workflows no longer need copy-and-paste setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reviewable&lt;/strong&gt;: skill files are usually local Markdown files that can be opened, edited, and versioned.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extensible&lt;/strong&gt;: complex skills can include scripts, templates, and references, not just natural language instructions.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That is why catalogs like &lt;code&gt;awesome-codex-skills&lt;/code&gt; are useful: they help you discover existing skills, then adapt them to your own workflow.&lt;/p&gt;
&lt;h2 id=&#34;installation-and-use&#34;&gt;Installation and Use
&lt;/h2&gt;&lt;p&gt;The repository provides an installation script and also supports manual installation. A typical flow 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;/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;git clone https://github.com/ComposioHQ/awesome-codex-skills.git
&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; awesome-codex-skills
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python install.py
&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 only want to try a few skills, read the &lt;code&gt;SKILL.md&lt;/code&gt; in each skill directory first. Check what it reads, what scripts it may run, what files it may edit, and whether the defaults fit your local environment.&lt;/p&gt;
&lt;p&gt;After installation, Codex can match skills when the task calls for them, or you can name a skill explicitly. For long-term use, the most practical approach is often to install a community skill first, then rewrite the instructions around your own project conventions.&lt;/p&gt;
&lt;h2 id=&#34;which-skills-are-worth-watching&#34;&gt;Which Skills Are Worth Watching
&lt;/h2&gt;&lt;p&gt;The most valuable skills are not necessarily the ones with the flashiest names. They are the ones that reliably remove repeated work.&lt;/p&gt;
&lt;p&gt;I would first look at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Development workflow skills&lt;/strong&gt;: review, testing, commits, releases, dependency checks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation skills&lt;/strong&gt;: rewriting, translation, summarization, structured organization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool integration skills&lt;/strong&gt;: connecting Codex to external services, APIs, and CLI tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Project convention skills&lt;/strong&gt;: encoding team rules, directory structure, naming conventions, and deployment steps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If a skill merely wraps a single sentence prompt, it has limited value. If it can connect research, judgment, execution, verification, and output into a stable workflow, it is worth keeping.&lt;/p&gt;
&lt;h2 id=&#34;what-to-watch-out-for&#34;&gt;What to Watch Out For
&lt;/h2&gt;&lt;p&gt;Community skills are convenient, but they should not be treated as black boxes. This is especially true for Skills that include scripts. Before installing one, check:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;what &lt;code&gt;SKILL.md&lt;/code&gt; asks Codex to do;&lt;/li&gt;
&lt;li&gt;whether it includes scripts that access the network, read or write files, or call external services;&lt;/li&gt;
&lt;li&gt;whether the default paths, commands, and permissions fit your machine.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A Skill expands what Codex can do. Written well, it makes Codex feel more like a teammate who knows your project. Written carelessly, it can bring unsuitable rules into your workflow. The best pattern is not to install many skills, but to keep a small set, tune them carefully, and maintain them over time.&lt;/p&gt;
&lt;h2 id=&#34;my-take&#34;&gt;My Take
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;awesome-codex-skills&lt;/code&gt; is worth bookmarking, especially if you already use Codex CLI for real development, documentation, or automation work. It is not an official capability by itself; it is a community entry point for finding and adapting reusable workflows.&lt;/p&gt;
&lt;p&gt;For heavy users, the point of Codex Skills is not simply helping AI remember more. It is helping AI make fewer detours on repeated tasks. Writing rules as Skills turns temporary instructions into reusable working infrastructure.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CC Switch: A desktop tool for managing Claude Code, Codex, Gemini CLI, and OpenClaw in one place</title>
        <link>https://knightli.com/en/2026/05/06/cc-switch-ai-cli-manager/</link>
        <pubDate>Wed, 06 May 2026 09:03:08 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/06/cc-switch-ai-cli-manager/</guid>
        <description>&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; is a desktop management tool for heavy AI coding users. The problem it tries to solve is straightforward: many people now use &lt;code&gt;Claude Code&lt;/code&gt;, &lt;code&gt;Codex&lt;/code&gt;, &lt;code&gt;Gemini CLI&lt;/code&gt;, &lt;code&gt;OpenCode&lt;/code&gt;, and &lt;code&gt;OpenClaw&lt;/code&gt; at the same time, but each tool has its own configuration format, Provider syntax, MCP setup, and Skills management method.&lt;/p&gt;
&lt;p&gt;When you only use one tool, manually editing configuration files is still tolerable. Once several tools are mixed together, plus official accounts, third-party APIs, relay services, local models, and shared team configuration, editing JSON, TOML, and &lt;code&gt;.env&lt;/code&gt; files by hand quickly becomes tedious.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; is positioned as a way to pull these scattered configurations into one cross-platform desktop app.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-it-solve&#34;&gt;What problem does it solve
&lt;/h2&gt;&lt;p&gt;Modern AI coding tools increasingly feel like &amp;ldquo;development colleagues inside the command line&amp;rdquo;, but their ecosystems are still not fully unified.&lt;/p&gt;
&lt;p&gt;Common pain points include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code, Codex, Gemini CLI, OpenCode, and OpenClaw all use different configuration formats.&lt;/li&gt;
&lt;li&gt;Switching API Providers requires repeated configuration-file edits.&lt;/li&gt;
&lt;li&gt;MCP servers are configured repeatedly across different tools.&lt;/li&gt;
&lt;li&gt;Prompt files such as &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;, and &lt;code&gt;GEMINI.md&lt;/code&gt; are hard to maintain consistently.&lt;/li&gt;
&lt;li&gt;Skills installation, sync, backup, and removal lack a single central entry point.&lt;/li&gt;
&lt;li&gt;Switching between multiple accounts, relays, and model services can easily become confusing.&lt;/li&gt;
&lt;li&gt;Once a manually edited configuration file breaks, troubleshooting is costly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The idea behind &lt;code&gt;CC Switch&lt;/code&gt; is to stop forcing users to remember every tool&amp;rsquo;s configuration details, and instead use one unified interface to manage Providers, MCP, Prompts, Skills, Sessions, and proxies.&lt;/p&gt;
&lt;h2 id=&#34;supported-tools&#34;&gt;Supported tools
&lt;/h2&gt;&lt;p&gt;The README lists five core supported targets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Codex&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemini CLI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenCode&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenClaw&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These tools are similar in positioning: all center on AI coding, Agent workflows, and command-line collaboration. But their configuration systems differ, and the value of &lt;code&gt;CC Switch&lt;/code&gt; lies in wrapping those differences.&lt;/p&gt;
&lt;p&gt;For people who often compare different AI coding tools, this is much easier than manually opening configuration files every time.&lt;/p&gt;
&lt;h2 id=&#34;provider-management&#34;&gt;Provider management
&lt;/h2&gt;&lt;p&gt;The first layer of &lt;code&gt;CC Switch&lt;/code&gt; is Provider management.&lt;/p&gt;
&lt;p&gt;It includes more than 50 Provider presets. The README mentions directions such as AWS Bedrock, NVIDIA NIM, and various community relays. Users can copy an API key, import it with one click, and then switch from the interface.&lt;/p&gt;
&lt;p&gt;The practical points include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add Providers with one click.&lt;/li&gt;
&lt;li&gt;Reorder Providers by dragging.&lt;/li&gt;
&lt;li&gt;Quickly switch from the system tray.&lt;/li&gt;
&lt;li&gt;Import and export Providers.&lt;/li&gt;
&lt;li&gt;Sync some common Providers across multiple apps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For many people, this feature alone is already attractive. In daily AI coding work, the problem is often not &amp;ldquo;I do not know how to use the model&amp;rdquo;, but &amp;ldquo;which tool, endpoint, and account should this key use today&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;local-proxy-and-failover&#34;&gt;Local proxy and failover
&lt;/h2&gt;&lt;p&gt;Besides writing configuration files, &lt;code&gt;CC Switch&lt;/code&gt; also provides a local proxy mode.&lt;/p&gt;
&lt;p&gt;The focus of this capability is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hot-switching Providers.&lt;/li&gt;
&lt;li&gt;Format conversion.&lt;/li&gt;
&lt;li&gt;Automatic failover.&lt;/li&gt;
&lt;li&gt;Circuit breakers.&lt;/li&gt;
&lt;li&gt;Provider health checks.&lt;/li&gt;
&lt;li&gt;Request correction.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In simple terms, it does not only write configuration into target tools. It can also add a local proxy layer in the middle, so different tools access model services through the proxy.&lt;/p&gt;
&lt;p&gt;This is useful for users with multiple Providers: if one service is down, switch to another; if one model is expensive, move to a cheaper one; if a request format is incompatible, adapt it through the proxy layer.&lt;/p&gt;
&lt;h2 id=&#34;mcp-prompts-and-skills&#34;&gt;MCP, Prompts, and Skills
&lt;/h2&gt;&lt;p&gt;The second important layer of &lt;code&gt;CC Switch&lt;/code&gt; is unified management for MCP, Prompts, and Skills.&lt;/p&gt;
&lt;h3 id=&#34;mcp&#34;&gt;MCP
&lt;/h3&gt;&lt;p&gt;It provides a unified MCP panel for managing MCP servers across multiple apps, with support for bidirectional sync and Deep Link import.&lt;/p&gt;
&lt;p&gt;This is practical for users already working with MCP. Once there are many MCP servers, configuration easily becomes scattered across different clients. A unified panel reduces duplicate configuration and makes migration easier.&lt;/p&gt;
&lt;h3 id=&#34;prompts&#34;&gt;Prompts
&lt;/h3&gt;&lt;p&gt;The Prompts section supports Markdown editing and can sync corresponding files across different tools, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GEMINI.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These files are essentially project manuals for Agents. Unified management makes it easier to maintain team rules, project conventions, and global prompts.&lt;/p&gt;
&lt;h3 id=&#34;skills&#34;&gt;Skills
&lt;/h3&gt;&lt;p&gt;Skills can be installed with one click from GitHub repositories or ZIP files. Custom repository management, symbolic links, and file copying are also supported.&lt;/p&gt;
&lt;p&gt;If you use tools such as Claude Code, Codex, and OpenClaw at the same time, Skills can easily turn into scattered files across different directories. &lt;code&gt;CC Switch&lt;/code&gt; centralizes them and reduces maintenance cost.&lt;/p&gt;
&lt;h2 id=&#34;sessions-and-workspace&#34;&gt;Sessions and workspace
&lt;/h2&gt;&lt;p&gt;The README also mentions Session Manager and Workspace features.&lt;/p&gt;
&lt;p&gt;It can browse, search, and restore session history from multiple apps. For people who use AI coding tools over a long period, session management is genuinely important: many valuable contexts, debugging trails, and solution comparisons are buried in old conversations.&lt;/p&gt;
&lt;p&gt;It also provides a Workspace editor for OpenClaw, allowing users to edit agent files such as &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;SOUL.md&lt;/code&gt; with Markdown preview.&lt;/p&gt;
&lt;p&gt;This shows that &lt;code&gt;CC Switch&lt;/code&gt; is not just a small &amp;ldquo;key switching&amp;rdquo; utility. It is expanding toward an AI Agent workstation.&lt;/p&gt;
&lt;h2 id=&#34;cloud-sync-and-data-storage&#34;&gt;Cloud sync and data storage
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; supports syncing Provider data through Dropbox, OneDrive, iCloud, NAS, or WebDAV.&lt;/p&gt;
&lt;p&gt;Local data storage is also clearly defined:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Database: &lt;code&gt;~/.cc-switch/cc-switch.db&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Local settings: &lt;code&gt;~/.cc-switch/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Automatic backups: &lt;code&gt;~/.cc-switch/backups/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Skills: &lt;code&gt;~/.cc-switch/skills/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Skill backups: &lt;code&gt;~/.cc-switch/skill-backups/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It uses SQLite as the main data source and emphasizes atomic writes and automatic backups, with the goal of avoiding configuration-file corruption during switching or writing.&lt;/p&gt;
&lt;p&gt;This design matters for heavy users. If the configuration management tool itself writes a bad configuration, every AI coding tool can be affected.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; is a cross-platform desktop app built on Tauri 2.&lt;/p&gt;
&lt;p&gt;The approximate system requirements are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows: Windows 10 or later&lt;/li&gt;
&lt;li&gt;macOS: macOS 12 Monterey or later&lt;/li&gt;
&lt;li&gt;Linux: Ubuntu 22.04+, Debian 11+, Fedora 34+, and other mainstream distributions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows users can download the &lt;code&gt;.msi&lt;/code&gt; installer or a portable compressed package.&lt;/p&gt;
&lt;p&gt;macOS users can install it with Homebrew:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew tap farion1231/ccswitch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install --cask cc-switch
&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;To update:&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;brew upgrade --cask cc-switch
&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;Linux users can choose &lt;code&gt;.deb&lt;/code&gt;, &lt;code&gt;.rpm&lt;/code&gt;, or AppImage. Arch Linux users can also install it through &lt;code&gt;paru -S cc-switch-bin&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;As of May 6, 2026, the repository page shows the latest release as &lt;code&gt;CC Switch v3.14.1&lt;/code&gt;, published on April 23, 2026.&lt;/p&gt;
&lt;h2 id=&#34;tech-stack&#34;&gt;Tech stack
&lt;/h2&gt;&lt;p&gt;Judging from the repository structure, &lt;code&gt;CC Switch&lt;/code&gt; is a typical Tauri desktop app:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frontend: React 18, TypeScript, Vite, TailwindCSS, TanStack Query, shadcn/ui&lt;/li&gt;
&lt;li&gt;Backend: Tauri 2, Rust, SQLite, Tokio&lt;/li&gt;
&lt;li&gt;Testing: Vitest, MSW, Testing Library&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Core design patterns include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQLite as the Single Source of Truth.&lt;/li&gt;
&lt;li&gt;JSON for device-level local settings.&lt;/li&gt;
&lt;li&gt;Writing into target tools&amp;rsquo; live config during switching.&lt;/li&gt;
&lt;li&gt;Filling current Provider edits back from live config.&lt;/li&gt;
&lt;li&gt;Atomic writes using temporary files plus rename.&lt;/li&gt;
&lt;li&gt;Locked database connections to avoid concurrent write issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This architecture suggests the project is not a simple script, but a desktop tool designed for long-term use.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who it is for
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; suits these users:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People who use Claude Code, Codex, Gemini CLI, OpenCode, and OpenClaw together.&lt;/li&gt;
&lt;li&gt;People who frequently switch between official accounts, third-party relays, local models, or team Providers.&lt;/li&gt;
&lt;li&gt;Users already making heavy use of MCP.&lt;/li&gt;
&lt;li&gt;Teams that want to maintain &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;, and &lt;code&gt;GEMINI.md&lt;/code&gt; in one place.&lt;/li&gt;
&lt;li&gt;Users who often install, test, and migrate Skills.&lt;/li&gt;
&lt;li&gt;People who want to view session history and usage across different tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only use one AI coding tool, rely on official login, and rarely touch Providers, MCP, or Skills, its value may not be obvious.&lt;/p&gt;
&lt;p&gt;But if you have already entered a &amp;ldquo;many tools, many accounts, many Providers, many projects&amp;rdquo; state, it can remove a lot of repetitive configuration work.&lt;/p&gt;
&lt;h2 id=&#34;what-to-watch-out-for&#34;&gt;What to watch out for
&lt;/h2&gt;&lt;p&gt;Tools like this are convenient, but they also need clear boundaries.&lt;/p&gt;
&lt;p&gt;First, it manages configuration for multiple AI CLIs, so users should be sure they trust the tool and its write logic.&lt;/p&gt;
&lt;p&gt;Second, API keys, relay endpoints, and MCP servers are all sensitive configuration. Before enabling cloud sync, make sure the sync folder and WebDAV service are secure and trustworthy.&lt;/p&gt;
&lt;p&gt;Third, after switching Providers, most tools still need the terminal or CLI to be restarted before changes take effect. The README mentions that Claude Code supports hot-switching Provider data, but other tools usually still require a restart.&lt;/p&gt;
&lt;p&gt;Fourth, when switching back to official login, it is better to add the official provider according to the project instructions and then rerun the corresponding tool&amp;rsquo;s login flow.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;CC Switch&lt;/code&gt; is not that it creates yet another AI coding tool. Its value is that it acknowledges a reality: the AI coding ecosystem has entered a stage where multiple tools coexist.&lt;/p&gt;
&lt;p&gt;Claude Code, Codex, Gemini CLI, OpenCode, and OpenClaw each have their own configuration systems, while MCP, Skills, Prompts, and Providers are expanding quickly. Continuing to edit configuration files by hand will eventually become a burden.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; pulls these pieces into one desktop app, making it easier to switch Providers, sync MCP, manage Skills, maintain prompt files, and view sessions. For heavy AI coding users, tools like this may move from &amp;ldquo;optional utility&amp;rdquo; to &amp;ldquo;daily infrastructure&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/farion1231/cc-switch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;farion1231/cc-switch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex App Beginner Guide: Installation, Sandbox, Parallel Tasks, Skills, and MCP</title>
        <link>https://knightli.com/en/2026/05/06/codex-app-complete-guide-skills-mcp/</link>
        <pubDate>Wed, 06 May 2026 08:41:17 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/06/codex-app-complete-guide-skills-mcp/</guid>
        <description>&lt;p&gt;Codex App can be understood as a task workspace for AI coding. It is not a traditional IDE, nor just a chat window. It brings multitasking, project management, sandbox permissions, Git, cloud execution, plugins, Skills, MCP, and automation into one interface.&lt;/p&gt;
&lt;p&gt;If you already use Codex CLI, Claude Code, Cursor, or other coding agents, the most interesting part of Codex App is that it turns &amp;ldquo;running multiple agents in parallel&amp;rdquo; into a clearer desktop workflow.&lt;/p&gt;
&lt;h2 id=&#34;what-codex-app-is-good-for&#34;&gt;What Codex App Is Good For
&lt;/h2&gt;&lt;p&gt;The core value of Codex App is not answering questions, but letting AI continuously execute tasks inside a project directory:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edit code, run commands, and start development servers.&lt;/li&gt;
&lt;li&gt;Manage multiple projects and multiple tasks.&lt;/li&gt;
&lt;li&gt;Run long tasks locally or in the cloud.&lt;/li&gt;
&lt;li&gt;Call plugins, Skills, and MCP for extended capabilities.&lt;/li&gt;
&lt;li&gt;Manage changes through Git, worktree, and PR workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI also positions Codex App as an interface for managing multiple coding agents. It is suitable for people who need to advance several coding tasks at once, especially frontend pages, scripts, small apps, documentation, and automation workflows.&lt;/p&gt;
&lt;h2 id=&#34;preparation-before-installation&#34;&gt;Preparation Before Installation
&lt;/h2&gt;&lt;p&gt;Before using Codex App, it is best to prepare three basic tools:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Node.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VS Code&lt;/code&gt; or your preferred IDE&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Codex App supports macOS and Windows. After installation, sign in with your ChatGPT account. On first launch, you can choose your main usage scenario, such as programming or daily work. Codex will preload some plugins and Skills based on your choices, and you can adjust them later in settings and the plugin marketplace.&lt;/p&gt;
&lt;p&gt;The main features on Windows and macOS are broadly similar, but some computer automation capabilities may depend on platform and plugin support. Use whatever your current version actually displays.&lt;/p&gt;
&lt;h2 id=&#34;interface-structure-projects-tasks-and-chats&#34;&gt;Interface Structure: Projects, Tasks, and Chats
&lt;/h2&gt;&lt;p&gt;Codex App uses a classic three-column layout:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Left: projects, tasks, chat history, plugins, and automation entry points.&lt;/li&gt;
&lt;li&gt;Middle: current chat window.&lt;/li&gt;
&lt;li&gt;Right: files, browser, terminal, run results, and other panels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A project usually corresponds to a local folder. You can open multiple chats inside the same project, or open several projects at once so different agents can work in parallel.&lt;/p&gt;
&lt;p&gt;The task list shows different states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Running: the agent is still executing.&lt;/li&gt;
&lt;li&gt;Waiting for approval: you need to confirm permissions, networking, dependency installation, or a high-risk action.&lt;/li&gt;
&lt;li&gt;Completed: the task has finished, and you can inspect the result or continue asking.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is more intuitive than switching between multiple terminal windows, and it is better suited to managing several AI tasks at once.&lt;/p&gt;
&lt;h2 id=&#34;sandbox-and-permission-control&#34;&gt;Sandbox and Permission Control
&lt;/h2&gt;&lt;p&gt;Codex App&amp;rsquo;s permission system is built around the sandbox. By default, the current project folder becomes the agent&amp;rsquo;s main workspace.&lt;/p&gt;
&lt;p&gt;Common permission boundaries include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It can read and modify files inside the project directory.&lt;/li&gt;
&lt;li&gt;It cannot freely modify files outside the project by default.&lt;/li&gt;
&lt;li&gt;Networking or high-risk commands are restricted by default.&lt;/li&gt;
&lt;li&gt;When elevated access is needed, it asks the user for approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A practical mode is &amp;ldquo;auto review&amp;rdquo;: low-risk actions are automatically allowed, while high-risk actions are still confirmed by the user. This reduces frequent pop-ups while keeping dangerous operations from happening silently.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Full access&amp;rdquo; should be enabled cautiously. It is suitable when you know exactly what the agent needs to do and the project already has Git backups and important files have separate backups. It is not recommended as a long-term daily default.&lt;/p&gt;
&lt;h2 id=&#34;context-models-and-quotas&#34;&gt;Context, Models, and Quotas
&lt;/h2&gt;&lt;p&gt;Codex App shows the current chat&amp;rsquo;s context usage. The longer the conversation and the more history it contains, the more context the model needs to process.&lt;/p&gt;
&lt;p&gt;Useful habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start a new chat after finishing a task.&lt;/li&gt;
&lt;li&gt;Long chats can be compressed manually, but do not treat compression as perfect memory.&lt;/li&gt;
&lt;li&gt;For complex tasks, clearly state goals, boundaries, and acceptance criteria.&lt;/li&gt;
&lt;li&gt;Do not dump large irrelevant logs, errors, or files into a chat all at once.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For model selection, adjust reasoning strength according to task complexity. Simple edits, writing, and repetitive tasks do not always need the strongest model. Architecture migration, difficult bugs, and cross-file refactors are better suited to stronger models.&lt;/p&gt;
&lt;p&gt;If the interface has a fast mode, remember that it usually consumes more quota. Use it when speed matters, but not as a daily default.&lt;/p&gt;
&lt;h2 id=&#34;image-generation-and-multimodal-inputs&#34;&gt;Image Generation and Multimodal Inputs
&lt;/h2&gt;&lt;p&gt;Codex App can accept images and files as context, and can call image generation in suitable scenarios.&lt;/p&gt;
&lt;p&gt;This is useful for frontend and content projects. For example, you can ask Codex to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix page styles based on screenshots.&lt;/li&gt;
&lt;li&gt;Replace unsuitable images in a webpage.&lt;/li&gt;
&lt;li&gt;Generate product images, carousel images, or page assets.&lt;/li&gt;
&lt;li&gt;Point out what needs to be changed from a UI screenshot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A more efficient approach is not to say only &amp;ldquo;make it look better&amp;rdquo;, but to use screenshots and point to concrete problems, such as &amp;ldquo;the spacing in this card is too large&amp;rdquo;, &amp;ldquo;this image does not match the service scene&amp;rdquo;, or &amp;ldquo;make the map area clearer&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;steer-correcting-direction-during-execution&#34;&gt;Steer: Correcting Direction During Execution
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Steer&lt;/code&gt; can be understood as taking over the direction during execution. If the agent has already started but you realize it misunderstood the direction, you should not always wait for it to finish before correcting it.&lt;/p&gt;
&lt;p&gt;You can use steering to insert a new instruction into the current execution flow and make Codex correct course.&lt;/p&gt;
&lt;p&gt;Good use cases for Steer include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The agent misunderstood the requirement.&lt;/li&gt;
&lt;li&gt;The generated page style is clearly wrong.&lt;/li&gt;
&lt;li&gt;The current plan is too expensive or heavy.&lt;/li&gt;
&lt;li&gt;You need to add a key constraint temporarily.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In general, keep the default queued behavior and manually use Steer only when intervention is needed. This avoids disrupting normal tasks while still letting you pull the direction back at key moments.&lt;/p&gt;
&lt;h2 id=&#34;plan-mode-and-built-in-browser&#34;&gt;Plan Mode and Built-In Browser
&lt;/h2&gt;&lt;p&gt;For complex tasks, start with plan mode. In plan mode, Codex does not immediately modify code. It first outputs a plan and may ask key questions with cards.&lt;/p&gt;
&lt;p&gt;Tasks suitable for plan mode include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Framework migration, such as moving a React project to Next.js.&lt;/li&gt;
&lt;li&gt;Large refactors.&lt;/li&gt;
&lt;li&gt;Features involving databases, authentication, or deployment.&lt;/li&gt;
&lt;li&gt;Requirements where you have not decided the technical path.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The right panel in Codex App can open a built-in browser to preview the local development server. You can annotate the page and let Codex modify a specific UI location. This &amp;ldquo;look at the page, click the position, ask AI to change it&amp;rdquo; workflow is often better for frontend debugging than pure text descriptions.&lt;/p&gt;
&lt;h2 id=&#34;git-ide-and-code-rollback&#34;&gt;Git, IDE, and Code Rollback
&lt;/h2&gt;&lt;p&gt;Codex App is not a full IDE. It can view code and add annotations, but handwritten editing is still better done in VS Code, Cursor, Windsurf, or another IDE.&lt;/p&gt;
&lt;p&gt;Every Codex project should initialize Git early:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask Codex to create or check &lt;code&gt;.gitignore&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Commit once after reaching a usable state.&lt;/li&gt;
&lt;li&gt;Ensure a clean commit point before each large change.&lt;/li&gt;
&lt;li&gt;Roll back with Git if you are not satisfied.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you roll back only the chat history, the code will not automatically roll back. A safer approach is to return the chat to the right point, then use a Git commit hash to return the code to the corresponding state.&lt;/p&gt;
&lt;h2 id=&#34;worktree-parallel-development-in-multiple-directions&#34;&gt;Worktree: Parallel Development in Multiple Directions
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git worktree&lt;/code&gt; is especially suitable for parallel agents in Codex App.&lt;/p&gt;
&lt;p&gt;It creates multiple independent working directories from the same repository, each corresponding to a different branch. This lets different agents work in different folders at the same time without overwriting each other.&lt;/p&gt;
&lt;p&gt;Typical usage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One worktree optimizes the customer review component.&lt;/li&gt;
&lt;li&gt;One worktree adjusts store information and map layout.&lt;/li&gt;
&lt;li&gt;Merge both tasks back to main after completion.&lt;/li&gt;
&lt;li&gt;Remove temporary worktrees after merging.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is much safer than letting multiple agents modify code in the same directory. If conflicts happen, review and merge them using normal Git workflows.&lt;/p&gt;
&lt;h2 id=&#34;cloud-execution-environment&#34;&gt;Cloud Execution Environment
&lt;/h2&gt;&lt;p&gt;Codex can work not only on your local machine, but also in a cloud environment.&lt;/p&gt;
&lt;p&gt;Cloud execution is suitable when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are outside and only have a phone.&lt;/li&gt;
&lt;li&gt;You want agents to run long tasks in the background.&lt;/li&gt;
&lt;li&gt;The code has already been synced to GitHub and Codex needs to modify the remote repository.&lt;/li&gt;
&lt;li&gt;You want changes reviewed and merged through PRs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A typical flow is: push local code to GitHub, let Codex pull the repository in a cloud environment, execute the task, generate changes, then present them as a PR or diff for review.&lt;/p&gt;
&lt;p&gt;When continuing local development, remember to pull down the latest remote changes.&lt;/p&gt;
&lt;h2 id=&#34;memory-system-write-a-good-agentsmd&#34;&gt;Memory System: Write a Good AGENTS.md
&lt;/h2&gt;&lt;p&gt;New chats do not have complete historical memory by default. Once a project becomes complex, repeatedly explaining the background is inefficient.&lt;/p&gt;
&lt;p&gt;The most general solution is to maintain &lt;code&gt;AGENTS.md&lt;/code&gt; in the project root. This file can record:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project goals and main tech stack.&lt;/li&gt;
&lt;li&gt;Common commands.&lt;/li&gt;
&lt;li&gt;Directory structure.&lt;/li&gt;
&lt;li&gt;Code style and naming conventions.&lt;/li&gt;
&lt;li&gt;Prohibited actions, such as bulk deleting files.&lt;/li&gt;
&lt;li&gt;Test, build, and deployment rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also ask Codex to read the project and generate a first version of &lt;code&gt;AGENTS.md&lt;/code&gt;, then review it manually. For complex projects, this file is worth maintaining.&lt;/p&gt;
&lt;p&gt;Global rules should be used carefully. They are suitable for universal safety constraints, such as &amp;ldquo;do not recursively delete directories&amp;rdquo; or &amp;ldquo;confirm before destructive operations&amp;rdquo;. Do not put project-specific details into global rules, or they will pollute other projects.&lt;/p&gt;
&lt;h2 id=&#34;plugins-and-automations&#34;&gt;Plugins and Automations
&lt;/h2&gt;&lt;p&gt;Plugins connect Codex to external services such as GitHub, Gmail, Google Drive, databases, and deployment platforms.&lt;/p&gt;
&lt;p&gt;Their value is reducing copy and paste. For example, Codex can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check star trends for a GitHub repository.&lt;/li&gt;
&lt;li&gt;Summarize email content and send it to you.&lt;/li&gt;
&lt;li&gt;Run a recurring check.&lt;/li&gt;
&lt;li&gt;Write the result as a summary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Automations are suitable for repeated tasks. For example, checking repository data every Friday afternoon and sending an email report. Simple automation tasks usually do not require the strongest model; a lighter model is enough.&lt;/p&gt;
&lt;h2 id=&#34;skills-turn-workflows-into-reusable-capabilities&#34;&gt;Skills: Turn Workflows Into Reusable Capabilities
&lt;/h2&gt;&lt;p&gt;Skills are &amp;ldquo;professional playbooks&amp;rdquo; for Codex. They are not one-off prompts. They package a task flow, rules, scripts, and notes so Codex can reuse them reliably later.&lt;/p&gt;
&lt;p&gt;Common sources include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Official Skills.&lt;/li&gt;
&lt;li&gt;Third-party Skills.&lt;/li&gt;
&lt;li&gt;Skills you write yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Good candidates for Skills include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turning subtitles into illustrated notes.&lt;/li&gt;
&lt;li&gt;Writing weekly reports in a company format.&lt;/li&gt;
&lt;li&gt;Batch-processing images or documents.&lt;/li&gt;
&lt;li&gt;Fixed-format code reviews.&lt;/li&gt;
&lt;li&gt;Project initialization for a specific framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have copied and pasted the same prompt many times, it is worth turning it into a Skill.&lt;/p&gt;
&lt;h2 id=&#34;mcp-connect-external-tools-and-databases&#34;&gt;MCP: Connect External Tools and Databases
&lt;/h2&gt;&lt;p&gt;MCP can be understood as a standardized tool protocol for large models. Through MCP, Codex can call external services to complete more concrete tasks.&lt;/p&gt;
&lt;p&gt;For example, after connecting Supabase, Codex can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create database tables.&lt;/li&gt;
&lt;li&gt;Read database schemas.&lt;/li&gt;
&lt;li&gt;Modify backend endpoints.&lt;/li&gt;
&lt;li&gt;Submit frontend forms to the database.&lt;/li&gt;
&lt;li&gt;Debug problems based on database state.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is powerful, but permissions matter. Databases, production environments, deployment platforms, and email accounts are high-risk resources. When connecting for the first time, use a test project and a low-privilege account.&lt;/p&gt;
&lt;h2 id=&#34;deployment-plugins&#34;&gt;Deployment Plugins
&lt;/h2&gt;&lt;p&gt;Deployment platform plugins can let Codex complete builds and releases directly, such as deploying a frontend project to Netlify.&lt;/p&gt;
&lt;p&gt;These plugins are suitable for small websites, prototypes, internal tools, and demo projects. In real use, pay attention to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run a local build before deployment.&lt;/li&gt;
&lt;li&gt;Do not write environment variables directly into code.&lt;/li&gt;
&lt;li&gt;Check whether the page opens normally after publishing.&lt;/li&gt;
&lt;li&gt;Keep human review for production projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI can help connect the deployment flow, but deployment permissions should still be managed carefully.&lt;/p&gt;
&lt;h2 id=&#34;computer-automation&#34;&gt;Computer Automation
&lt;/h2&gt;&lt;p&gt;With supported platforms and plugin environments, Codex can also operate browsers or desktop apps, completing tasks closer to RPA.&lt;/p&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open a chat app and prepare a message.&lt;/li&gt;
&lt;li&gt;Browse a project board and summarize task status.&lt;/li&gt;
&lt;li&gt;Generate an English brief.&lt;/li&gt;
&lt;li&gt;Send it to a specified recipient after you confirm.&lt;/li&gt;
&lt;li&gt;Turn the flow into a scheduled automation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These capabilities are imaginative, but they require the strongest safety boundaries. Any operation involving sending messages, sending email, submitting forms, payments, or deleting data should retain human confirmation.&lt;/p&gt;
&lt;h2 id=&#34;usage-suggestions&#34;&gt;Usage Suggestions
&lt;/h2&gt;&lt;p&gt;The right way to use Codex App is not to let it fully take over everything at once, but to break tasks down and let it execute efficiently in a controlled environment.&lt;/p&gt;
&lt;p&gt;Recommended habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Initialize Git for every project.&lt;/li&gt;
&lt;li&gt;Use plan mode for complex tasks.&lt;/li&gt;
&lt;li&gt;Use worktree for parallel tasks.&lt;/li&gt;
&lt;li&gt;Put project rules in &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Keep human confirmation for high-risk actions.&lt;/li&gt;
&lt;li&gt;Turn repeated workflows into Skills or automations.&lt;/li&gt;
&lt;li&gt;Validate plugins and MCP in a test environment first.&lt;/li&gt;
&lt;/ul&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://openai.com/index/introducing-the-codex-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing the Codex app - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11369540-codex-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using Codex with your ChatGPT plan - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/academy/codex-plugins-and-skills/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Plugins and skills - OpenAI Academy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Codex App is not &amp;ldquo;one more AI chat window&amp;rdquo;. Its focus is turning AI coding into a manageable workspace where local projects, cloud tasks, Git, worktree, plugins, Skills, MCP, and automation can connect.&lt;/p&gt;
&lt;p&gt;The key to using it well is balancing freedom and control. Small tasks can be handed to Codex boldly. Complex tasks should start with a plan. High-risk actions must be confirmed. Used this way, Codex can become not just a code-writing assistant, but a long-term engineering tool.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>mattpocock/skills: A Practical Skill Collection for AI Coding Agents</title>
        <link>https://knightli.com/en/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</link>
        <pubDate>Fri, 01 May 2026 03:43:20 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</guid>
        <description>&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; is a public collection of AI coding agent skills from Matt Pocock.&lt;/p&gt;
&lt;p&gt;It is not a full application, nor a new chat client. It is a set of working skills that can be used by AI coding assistants. The idea is practical: break common AI coding problems into small skills that an Agent can call in the right task, instead of relying on one huge prompt every time.&lt;/p&gt;
&lt;p&gt;If you often use Claude Code, Codex, Cursor, or similar AI coding tools, this kind of skills collection is worth watching. What really affects the AI coding experience is often not whether the model can write code, but whether it can move through the task in your preferred working style.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;AI coding assistants are powerful, but they can easily go wrong.&lt;/p&gt;
&lt;p&gt;Common situations include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starting code changes before understanding the requirement&lt;/li&gt;
&lt;li&gt;Modifying too many files at once&lt;/li&gt;
&lt;li&gt;Producing lots of explanation but little useful action&lt;/li&gt;
&lt;li&gt;Blindly trying things after errors&lt;/li&gt;
&lt;li&gt;Not running tests or checks in time&lt;/li&gt;
&lt;li&gt;Ignoring existing project patterns&lt;/li&gt;
&lt;li&gt;Introducing unnecessary abstractions to finish a task&lt;/li&gt;
&lt;li&gt;Writing code without truly reviewing risks afterward&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These problems are not always caused by weak model capability. Often, the workflow is not constrained well enough.&lt;/p&gt;
&lt;p&gt;The value of &lt;code&gt;mattpocock/skills&lt;/code&gt; is that it turns these common failure modes into reusable operating methods, making the Agent behave more like an experienced engineering collaborator in different scenarios.&lt;/p&gt;
&lt;h2 id=&#34;what-are-skills&#34;&gt;What Are Skills
&lt;/h2&gt;&lt;p&gt;In the AI Agent context, a skill can be understood as a reusable task instruction, working method, or professional workflow.&lt;/p&gt;
&lt;p&gt;It does not have to be a code plugin, and it does not always need to call an external service. In many cases, a skill is simply a clear set of rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When to use it&lt;/li&gt;
&lt;li&gt;What to do first&lt;/li&gt;
&lt;li&gt;What not to do&lt;/li&gt;
&lt;li&gt;What output is required&lt;/li&gt;
&lt;li&gt;How to judge task completion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is somewhat like a normal prompt template, but the granularity is closer to a task capability.&lt;/p&gt;
&lt;p&gt;Normal prompt templates are usually copied and pasted manually by the user. Skills are better as part of an agent toolbox, allowing the Agent to choose the right workflow for the task.&lt;/p&gt;
&lt;h2 id=&#34;why-small-and-composable-matters&#34;&gt;Why Small and Composable Matters
&lt;/h2&gt;&lt;p&gt;The README emphasizes that these skills are small and composable.&lt;/p&gt;
&lt;p&gt;This direction matters.&lt;/p&gt;
&lt;p&gt;If one skill tries to handle everything, it quickly becomes a new giant prompt: long, vague, and hard to maintain. The advantage of small skills is clear boundaries.&lt;/p&gt;
&lt;p&gt;For example, one skill can focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Planning first&lt;/li&gt;
&lt;li&gt;Fixing TypeScript errors&lt;/li&gt;
&lt;li&gt;Running tests and fixing based on results&lt;/li&gt;
&lt;li&gt;Doing code review&lt;/li&gt;
&lt;li&gt;Summarizing project conventions&lt;/li&gt;
&lt;li&gt;Improving prompts&lt;/li&gt;
&lt;li&gt;Removing unnecessary abstractions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These skills can be combined according to the task. A simple task may need only one skill, while a complex task can chain several together.&lt;/p&gt;
&lt;p&gt;This is closer to real engineering work. You do not use the same workflow for every problem; you choose tools according to the situation.&lt;/p&gt;
&lt;h2 id=&#34;keeping-the-engineer-in-control&#34;&gt;Keeping the Engineer in Control
&lt;/h2&gt;&lt;p&gt;One important direction of this repository is keeping the engineer in control.&lt;/p&gt;
&lt;p&gt;AI coding can easily slide into two extremes.&lt;/p&gt;
&lt;p&gt;The first is fully manual. AI only helps write a few lines of code, while all context, planning, and verification still depend on you.&lt;/p&gt;
&lt;p&gt;The second is fully hands-off. You throw a task to an Agent, let it change a lot of things, and then face a diff that is hard to review.&lt;/p&gt;
&lt;p&gt;Skills help find a more stable middle position.&lt;/p&gt;
&lt;p&gt;They let AI take on more repetitive workflow, while still constraining it with rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Understand the task before acting&lt;/li&gt;
&lt;li&gt;Read relevant files before editing&lt;/li&gt;
&lt;li&gt;Keep the modification scope controlled&lt;/li&gt;
&lt;li&gt;Report uncertainty&lt;/li&gt;
&lt;li&gt;Verify after changes&lt;/li&gt;
&lt;li&gt;Do not refactor unrelated code just to show off&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This does not weaken AI. It makes AI actions easier for humans to review and take over.&lt;/p&gt;
&lt;h2 id=&#34;alignment-problems&#34;&gt;Alignment Problems
&lt;/h2&gt;&lt;p&gt;The first kind of AI coding failure is often alignment failure.&lt;/p&gt;
&lt;p&gt;The user wants a very specific change, but the Agent may understand it as a larger refactor. The user only wants a bug fixed, but it changes styles along the way. The user wants existing architecture to be followed, but it introduces a new pattern.&lt;/p&gt;
&lt;p&gt;Skills can help the Agent do several things at the start of a task:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restate the goal&lt;/li&gt;
&lt;li&gt;Identify the impact scope&lt;/li&gt;
&lt;li&gt;Recognize existing implementation patterns&lt;/li&gt;
&lt;li&gt;Provide a plan&lt;/li&gt;
&lt;li&gt;Clarify what will not be done&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This step is like an engineer’s self-check before starting work.&lt;/p&gt;
&lt;p&gt;If the Agent cannot clearly state the task boundary and starts writing code directly, it is easy for the task to drift.&lt;/p&gt;
&lt;h2 id=&#34;feedback-loop-problems&#34;&gt;Feedback Loop Problems
&lt;/h2&gt;&lt;p&gt;AI should not write code through one-shot generation alone.&lt;/p&gt;
&lt;p&gt;In real development, feedback loops matter:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Change a small piece&lt;/li&gt;
&lt;li&gt;Run tests or type checks&lt;/li&gt;
&lt;li&gt;Read the errors&lt;/li&gt;
&lt;li&gt;Fix them&lt;/li&gt;
&lt;li&gt;Verify again&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Many Agents fail because they skip the middle feedback. They change many things at once and then summarize from intuition that “it should work.”&lt;/p&gt;
&lt;p&gt;Skills can make the feedback loop explicit. For example, they can require the Agent to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run relevant checks after modification&lt;/li&gt;
&lt;li&gt;Read error messages first if checks fail&lt;/li&gt;
&lt;li&gt;Avoid blindly changing unrelated files&lt;/li&gt;
&lt;li&gt;Re-verify after each round of fixes&lt;/li&gt;
&lt;li&gt;Report final verification results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes AI coding more like real debugging and less like one-shot writing.&lt;/p&gt;
&lt;h2 id=&#34;architecture-control-problems&#34;&gt;Architecture Control Problems
&lt;/h2&gt;&lt;p&gt;AI is good at generating abstractions, and also good at over-generating abstractions.&lt;/p&gt;
&lt;p&gt;To complete a small requirement, it may create a service layer, helper functions, configuration objects, type wrappers, and adapters, making the code much more complex than the requirement itself.&lt;/p&gt;
&lt;p&gt;This is especially dangerous in large projects. AI-generated abstractions often look “professional,” but they may not match existing project style and may increase maintenance cost.&lt;/p&gt;
&lt;p&gt;Good skills remind the Agent to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefer existing patterns&lt;/li&gt;
&lt;li&gt;Avoid unnecessary new abstractions&lt;/li&gt;
&lt;li&gt;Avoid refactoring unrelated areas&lt;/li&gt;
&lt;li&gt;Match the change to the size of the task&lt;/li&gt;
&lt;li&gt;Understand the code before designing structure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This reduces output that looks engineered but is actually harder to maintain.&lt;/p&gt;
&lt;h2 id=&#34;why-review-skills-matter&#34;&gt;Why Review Skills Matter
&lt;/h2&gt;&lt;p&gt;Writing code and reviewing code are different states.&lt;/p&gt;
&lt;p&gt;When an Agent writes code, it usually tends to prove that its implementation works. It may explain why the change should work, but it does not always actively look for risks.&lt;/p&gt;
&lt;p&gt;The purpose of a review skill is to switch the Agent’s role:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find potential bugs&lt;/li&gt;
&lt;li&gt;Find behavior regressions&lt;/li&gt;
&lt;li&gt;Find missing tests&lt;/li&gt;
&lt;li&gt;Find edge cases&lt;/li&gt;
&lt;li&gt;Find increased complexity&lt;/li&gt;
&lt;li&gt;Find inconsistencies with existing conventions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This matters for AI coding because AI generates code quickly. Without review, users can easily be overwhelmed by large diffs.&lt;/p&gt;
&lt;p&gt;A good review output should list issues first, not praise the implementation first. It should help the engineer decide whether the change can be merged.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-normal-rules-files&#34;&gt;Difference from Normal Rules Files
&lt;/h2&gt;&lt;p&gt;Many AI coding tools support rules, instructions, or memory.&lt;/p&gt;
&lt;p&gt;These files usually record long-term rules, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project tech stack&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Test commands&lt;/li&gt;
&lt;li&gt;Directories not to modify&lt;/li&gt;
&lt;li&gt;Answer style preferences&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills are more focused on task workflow.&lt;/p&gt;
&lt;p&gt;Rules tell the Agent “how to behave in the long term,” while skills tell the Agent “how to execute this kind of task.”&lt;/p&gt;
&lt;p&gt;The two work best together.&lt;/p&gt;
&lt;p&gt;For example, rules can say the project uses &lt;code&gt;pnpm test&lt;/code&gt;, while a review skill requires checking test coverage after changes. Then the Agent knows not only the command, but also when to use it.&lt;/p&gt;
&lt;h2 id=&#34;suitable-scenarios&#34;&gt;Suitable Scenarios
&lt;/h2&gt;&lt;p&gt;Repositories like &lt;code&gt;mattpocock/skills&lt;/code&gt; are suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frequent use of AI coding tools&lt;/li&gt;
&lt;li&gt;Agents working on real codebases&lt;/li&gt;
&lt;li&gt;Reducing out-of-scope AI edits&lt;/li&gt;
&lt;li&gt;Making the Agent verify results more actively&lt;/li&gt;
&lt;li&gt;Turning your engineering habits into skills&lt;/li&gt;
&lt;li&gt;Learning how others design agent workflows&lt;/li&gt;
&lt;li&gt;Turning temporary prompts into a maintainable skill collection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only occasionally ask AI to write a small function, you may not need to maintain skills.&lt;/p&gt;
&lt;p&gt;But if you already treat AI as a long-term development partner, skills become increasingly important. They are like a reusable working method for the Agent.&lt;/p&gt;
&lt;h2 id=&#34;how-to-learn-from-this-repository&#34;&gt;How to Learn from This Repository
&lt;/h2&gt;&lt;p&gt;Even if you do not use every skill directly, you can learn several things from this repository.&lt;/p&gt;
&lt;p&gt;First, write down failure modes.&lt;/p&gt;
&lt;p&gt;Do not only complain when AI makes a mistake. Turn the patterns it often gets wrong into rules, so a skill can prevent them next time.&lt;/p&gt;
&lt;p&gt;Second, keep skills short.&lt;/p&gt;
&lt;p&gt;One skill should solve one clear problem. The shorter it is, the easier it is to call correctly and maintain.&lt;/p&gt;
&lt;p&gt;Third, make output format clear.&lt;/p&gt;
&lt;p&gt;If you want the Agent to list a plan first, execute next, and summarize verification results at the end, write that structure clearly. Vague requirements usually produce vague results.&lt;/p&gt;
&lt;p&gt;Fourth, keep human handoff points.&lt;/p&gt;
&lt;p&gt;A good skill should not let AI run too far alone. When there is uncertainty, expanded impact scope, failing tests, or a product decision, it should stop and explain the situation.&lt;/p&gt;
&lt;h2 id=&#34;notes-for-use&#34;&gt;Notes for Use
&lt;/h2&gt;&lt;p&gt;First, do not turn everything into a skill.&lt;/p&gt;
&lt;p&gt;Too many skills make the system complex, and the Agent may not know which one to choose. Start with the highest-frequency and most painful scenarios.&lt;/p&gt;
&lt;p&gt;Second, skills need iteration.&lt;/p&gt;
&lt;p&gt;The first version of a skill may not be good. Watch how AI actually executes it, then gradually delete, add, and rewrite.&lt;/p&gt;
&lt;p&gt;Third, do not let skills replace engineering judgment.&lt;/p&gt;
&lt;p&gt;Skills can improve workflow, but they cannot guarantee correct implementation. Tests, review, build checks, and human judgment still matter.&lt;/p&gt;
&lt;p&gt;Fourth, pay attention to differences between Agents.&lt;/p&gt;
&lt;p&gt;Claude Code, Codex, Cursor, and Copilot support instructions, skills, and rules differently. The same idea can be reused, but the specific format should be adjusted for each tool.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&lt;/h2&gt;&lt;ul&gt;
&lt;li&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;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;What makes &lt;code&gt;mattpocock/skills&lt;/code&gt; worth watching is not one magic prompt inside it, but the practical AI coding idea it demonstrates: break engineering experience into small skills, then let the Agent combine them by scenario.&lt;/p&gt;
&lt;p&gt;As AI coding moves from occasional assistance into daily workflow, skills become important tools for constraining Agents, keeping engineers in control, and improving feedback quality.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Why Does a Codex Skill Exist in the Directory but Still Not Show Up?</title>
        <link>https://knightli.com/en/2026/04/29/codex-skill-not-loaded-because-of-utf-8-bom/</link>
        <pubDate>Wed, 29 Apr 2026 11:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/29/codex-skill-not-loaded-because-of-utf-8-bom/</guid>
        <description>&lt;p&gt;This problem was easy to miss: several skills were already placed under &lt;code&gt;~/.codex/skills&lt;/code&gt;, but after opening a new Codex thread, the sidebar still showed only a small subset of them.&lt;/p&gt;
&lt;p&gt;At first, it looked like a cache or indexing issue. The real cause was more specific: several &lt;code&gt;SKILL.md&lt;/code&gt; files started with a UTF-8 BOM. Codex 0.111.0&amp;rsquo;s skill loader did not skip that byte sequence, so it misjudged the files as having no valid YAML front matter.&lt;/p&gt;
&lt;h2 id=&#34;symptom&#34;&gt;Symptom
&lt;/h2&gt;&lt;p&gt;The local directory contained these skills:&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;~/.codex/skills/git-commit-push/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/hugo-rsync-deploy/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/bilibili-speech-transcriber/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/product-cutout-normalize/SKILL.md
&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 after opening a new thread, the actually exposed skills were only:&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bilibili-speech-transcriber
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;product-cutout-normalize
&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;In other words, a file existing on disk does not mean the current session can load it successfully. Codex parses the front matter of each &lt;code&gt;SKILL.md&lt;/code&gt; first. If parsing fails, that skill is excluded directly.&lt;/p&gt;
&lt;h2 id=&#34;investigation&#34;&gt;Investigation
&lt;/h2&gt;&lt;p&gt;Starting a fresh session with &lt;code&gt;codex exec&lt;/code&gt; showed a more direct error. In VS Code or other IDEs, these logs may not be visible:&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;failed to load skill C:\Users\knightli\.codex\skills\git-commit-push\SKILL.md: missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;failed to load skill C:\Users\knightli\.codex\skills\hugo-rsync-deploy\SKILL.md: missing YAML frontmatter delimited by ---
&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;Visually, these files seemed to have a normal header:&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-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: post-rewrite
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: ...
&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;The real problem was at the byte level.&lt;/p&gt;
&lt;p&gt;The beginning of a failing file was:&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;EF-BB-BF-2D-2D-2D
&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 beginning of a file that loaded correctly was:&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;2D-2D-2D
&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;&lt;code&gt;2D-2D-2D&lt;/code&gt; is &lt;code&gt;---&lt;/code&gt;. The preceding &lt;code&gt;EF-BB-BF&lt;/code&gt; is the UTF-8 BOM.&lt;/p&gt;
&lt;h2 id=&#34;cause&#34;&gt;Cause
&lt;/h2&gt;&lt;p&gt;In Codex 0.111.0, the skill loader expects the first byte of &lt;code&gt;SKILL.md&lt;/code&gt; to be the first &lt;code&gt;-&lt;/code&gt; in &lt;code&gt;---&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If the file starts with a UTF-8 BOM, the actual beginning becomes:&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;BOM + ---
&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;So the loader thinks the file does not start with the front matter delimiter and reports:&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;missing YAML frontmatter delimited by ---
&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 skill content was not wrong, and the directory was not wrong either. A small encoding detail prevented the parser from recognizing the file.&lt;/p&gt;
&lt;h2 id=&#34;fix&#34;&gt;Fix
&lt;/h2&gt;&lt;p&gt;Convert the affected &lt;code&gt;SKILL.md&lt;/code&gt; files to UTF-8 without BOM.&lt;/p&gt;
&lt;p&gt;In PowerShell, this can be done 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;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&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;nv&#34;&gt;$paths&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#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;s1&#34;&gt;&amp;#39;C:\Users\knightli\.codex\skills\git-commit-push\SKILL.md&amp;#39;&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;s1&#34;&gt;&amp;#39;C:\Users\knightli\.codex\skills\hugo-rsync-deploy\SKILL.md&amp;#39;&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;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;nv&#34;&gt;$utf8NoBom&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;UTF8Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;vm&#34;&gt;$false&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$paths&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;nv&#34;&gt;$text&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 class=&#34;no&#34;&gt;IO.File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadAllText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&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 class=&#34;no&#34;&gt;Text.Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTF8&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 class=&#34;no&#34;&gt;IO.File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteAllText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$utf8NoBom&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;After processing, the file header should change from:&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;EF-BB-BF-2D-2D-2D
&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;to:&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;2D-2D-2D
&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;h2 id=&#34;verification&#34;&gt;Verification
&lt;/h2&gt;&lt;p&gt;After restarting a Codex session, the visible skills were restored to:&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;git-commit-push-zh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo-rsync-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bilibili-speech-transcriber
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;product-cutout-normalize
&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 the sidebar still shows the old list, close the current Codex sidebar or window and reopen the project. The skill list is usually loaded when the session starts, so changes made in the middle of a session may not refresh immediately.&lt;/p&gt;
&lt;h2 id=&#34;one-last-line&#34;&gt;One Last Line
&lt;/h2&gt;&lt;p&gt;This kind of issue is easy to mistake for &amp;ldquo;Codex did not re-index&amp;rdquo; or &amp;ldquo;the skill was not installed correctly.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;When troubleshooting, check these three things first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether &lt;code&gt;SKILL.md&lt;/code&gt; is really in the correct directory&lt;/li&gt;
&lt;li&gt;whether the file has valid &lt;code&gt;---&lt;/code&gt; front matter at the top&lt;/li&gt;
&lt;li&gt;whether the file is UTF-8 without BOM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key in this case was the third point: the file looked fine, but its first byte was not &lt;code&gt;-&lt;/code&gt;, so Codex did not treat it as a valid skill.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What Is the Difference Between ~/.codex/skills and Project .codex/skills in Codex</title>
        <link>https://knightli.com/en/2026/04/29/difference-between-global-and-project-codex-skills/</link>
        <pubDate>Wed, 29 Apr 2026 11:08:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/29/difference-between-global-and-project-codex-skills/</guid>
        <description>&lt;p&gt;When organizing Codex skills, people most often get stuck on two questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is the difference between &lt;code&gt;~/.codex/skills&lt;/code&gt; and &lt;code&gt;project/.codex/skills&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Why does a skill exist in the directory but not appear in the current session?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is the short version.&lt;/p&gt;
&lt;h2 id=&#34;the-difference&#34;&gt;The Difference
&lt;/h2&gt;&lt;p&gt;The simplest way to remember it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; is your global skill library&lt;/li&gt;
&lt;li&gt;&lt;code&gt;project/.codex/skills&lt;/code&gt; is the local skill library for that repository&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;codexskills&#34;&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Use it for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;skills you personally reuse across projects&lt;/li&gt;
&lt;li&gt;general workflows that are not tied to a specific repository&lt;/li&gt;
&lt;li&gt;workflows that clearly belong to your own habits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;post-rewrite&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;post-translate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git-commit-push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo-rsync-deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bilibili-speech-transcriber&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key trait of this kind of skill is: &lt;strong&gt;it still makes sense outside the current project.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;projectcodexskills&#34;&gt;&lt;code&gt;project/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Use it for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;workflows that only apply to this repository&lt;/li&gt;
&lt;li&gt;rules tightly coupled to the current project structure, scripts, or templates&lt;/li&gt;
&lt;li&gt;skills that should be shared by the team&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a publishing workflow specific to this repository&lt;/li&gt;
&lt;li&gt;a generation template that only works in this project&lt;/li&gt;
&lt;li&gt;automation steps tightly bound to private project scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key trait of this kind of skill is: &lt;strong&gt;it stops being meaningful once it leaves this repository.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;when-to-use-global-and-when-to-use-project-skills&#34;&gt;When to Use Global and When to Use Project Skills
&lt;/h2&gt;&lt;p&gt;This rule of thumb is enough:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If it is about your personal habits, put it in &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If it is about repository rules, put it in &lt;code&gt;project/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If it can be reused across projects, prefer global&lt;/li&gt;
&lt;li&gt;If it should be shared by multiple people and evolve with the repository, prefer project-level&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-current-repository&#34;&gt;The Current Repository
&lt;/h2&gt;&lt;p&gt;Based on the current state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;your machine has &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;this repository does not have &lt;code&gt;.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So right now, you mainly rely on global skills.&lt;/p&gt;
&lt;p&gt;That means workflows such as &lt;code&gt;post-rewrite&lt;/code&gt;, &lt;code&gt;post-translate&lt;/code&gt;, and &lt;code&gt;git-commit-push&lt;/code&gt; are currently more like part of your personal workflow, not something explicitly bundled with this repository.&lt;/p&gt;
&lt;h2 id=&#34;why-a-skill-exists-on-disk-but-may-not-appear-in-the-current-session&#34;&gt;Why a Skill Exists on Disk but May Not Appear in the Current Session
&lt;/h2&gt;&lt;p&gt;There are two different things here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Existing on disk&lt;/strong&gt;: the skill file exists in a local directory&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exposed to the session&lt;/strong&gt;: the current session registered it into the available skill list&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not the same thing.&lt;/p&gt;
&lt;p&gt;So this can happen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a skill already exists under &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;but it does not appear in the list after &lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This usually does not mean the skill is broken. More often, it means: &lt;strong&gt;the current session has not re-indexed it.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-to-make-a-skill-available-in-the-current-session&#34;&gt;How to Make a Skill Available in the Current Session
&lt;/h2&gt;&lt;p&gt;The practical checklist is short.&lt;/p&gt;
&lt;h3 id=&#34;1-put-it-in-the-right-directory&#34;&gt;1. Put It in the Right Directory
&lt;/h3&gt;&lt;p&gt;Global:&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;~/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&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;Project-level:&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;project/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&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;h3 id=&#34;2-make-the-skillmd-header-recognizable&#34;&gt;2. Make the &lt;code&gt;SKILL.md&lt;/code&gt; Header Recognizable
&lt;/h3&gt;&lt;p&gt;At minimum, it needs:&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-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: your-skill-name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: What this skill does
&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;h3 id=&#34;3-open-a-new-session-after-creating-or-editing-it&#34;&gt;3. Open a New Session After Creating or Editing It
&lt;/h3&gt;&lt;p&gt;In many cases, a skill does not appear because the current session already fixed its available skill list when it started.&lt;/p&gt;
&lt;p&gt;So if you create a skill in the middle of a session, it may already exist on disk, but this session may not recognize it.&lt;/p&gt;
&lt;p&gt;The most reliable workflow is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Put the skill in place&lt;/li&gt;
&lt;li&gt;End the current session&lt;/li&gt;
&lt;li&gt;Re-enter the project&lt;/li&gt;
&lt;li&gt;Open a new session&lt;/li&gt;
&lt;li&gt;Check whether it appears under &lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;4-put-project-skills-in-place-before-starting&#34;&gt;4. Put Project Skills in Place Before Starting
&lt;/h3&gt;&lt;p&gt;If you want &lt;code&gt;project/.codex/skills&lt;/code&gt; to be recognized more reliably, put those skills into the project before entering the repository and starting the session.&lt;/p&gt;
&lt;h2 id=&#34;one-last-line&#34;&gt;One Last Line
&lt;/h2&gt;&lt;p&gt;The shortest conclusion is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; is your personal skill library&lt;/li&gt;
&lt;li&gt;&lt;code&gt;project/.codex/skills&lt;/code&gt; is the repository&amp;rsquo;s local rule library&lt;/li&gt;
&lt;li&gt;a skill existing in the directory does not mean the current session will always show it&lt;/li&gt;
&lt;li&gt;the most common fix is to put it in the right directory, write a valid &lt;code&gt;SKILL.md&lt;/code&gt;, and then start a new session&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
