<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    
    <title>GitHub JavaScript Daily Trending Repositories</title>
    <description>Daily Trending Repositories of JavaScript on GitHub</description>
    
    <pubDate>Wed, 12 Aug 2026 04:33:43 GMT</pubDate>
    <link>https://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>addyosmani/agent-skills</title>
      <link>https://github.com/addyosmani/agent-skills</link>
      <description>&lt;p&gt;Production-grade engineering skills for AI coding agents.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Agent Skills&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;Production-grade engineering skills for AI coding agents.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Skills encode the workflows, quality gates, and best practices that senior engineers use when building software. These ones are packaged so AI agents follow them consistently across every phase of development.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/25200&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/25200&quot; alt=&quot;addyosmani%2Fagent-skills | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://addyosmani.com/assets/images/addys-agent-skills.jpg&quot; alt=&quot;Addy&#39;s Agent Skills&quot; /&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  DEFINE          PLAN           BUILD          VERIFY         REVIEW          SHIP
 ┌──────┐      ┌──────┐      ┌──────┐      ┌──────┐      ┌──────┐      ┌──────┐
 │ Idea │ ───▶ │ Spec │ ───▶ │ Code │ ───▶ │ Test │ ───▶ │  QA  │ ───▶ │  Go  │
 │Refine│      │  PRD │      │ Impl │      │Debug │      │ Gate │      │ Live │
 └──────┘      └──────┘      └──────┘      └──────┘      └──────┘      └──────┘
  /spec          /plan          /build        /test         /review       /ship
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Commands&lt;/h2&gt; 
&lt;p&gt;8 slash commands that map to the development lifecycle. Each one activates the right skills automatically.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;What you&#39;re doing&lt;/th&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;Key principle&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Define what to build&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/spec&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Spec before code&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Plan how to build it&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/plan&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Small, atomic tasks&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Build incrementally&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/build&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;One slice at a time&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Prove it works&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/test&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Tests are proof&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Review before merge&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Improve code health&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Audit web performance&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/webperf&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Measure before you optimize&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Simplify the code&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/code-simplify&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Clarity over cleverness&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Ship to production&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/ship&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Faster is safer&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Want fewer manual steps once the spec exists? &lt;strong&gt;&lt;code&gt;/build auto&lt;/code&gt;&lt;/strong&gt; generates the plan and implements every task in a single approved pass — you approve the plan once, then it runs autonomously. It removes the human stepping &lt;em&gt;between&lt;/em&gt; tasks, not the verification: every task is still test-driven and committed individually, and it pauses on failures or risky steps.&lt;/p&gt; 
&lt;p&gt;Skills also activate automatically based on what you&#39;re doing — designing an API triggers &lt;code&gt;api-and-interface-design&lt;/code&gt;, building UI triggers &lt;code&gt;frontend-ui-engineering&lt;/code&gt;, and so on.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Fastest path — any agent, one command.&lt;/strong&gt; The open &lt;a href=&quot;https://github.com/vercel-labs/skills&quot;&gt;skills CLI&lt;/a&gt; installs into 70+ agents (Claude Code, Cursor, Codex, Copilot, Cline, and more):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add addyosmani/agent-skills            # install all 24 skills
npx skills add addyosmani/agent-skills --list     # browse before installing
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or grab individual skills:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add addyosmani/agent-skills --skill code-review-and-quality   # five-axis review before merge
npx skills add addyosmani/agent-skills --skill interview-me              # requirements interrogation, one question at a time
npx skills add addyosmani/agent-skills --skill test-driven-development   # red-green-refactor, enforced
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Installing one skill?&lt;/strong&gt; A per-skill &lt;code&gt;npx&lt;/code&gt; install copies only &lt;code&gt;skills/&amp;lt;name&amp;gt;/&lt;/code&gt;, not the repo-level &lt;code&gt;references/&lt;/code&gt; directory. The skill still works, but paths to supplementary shared checklists are unavailable. Use a whole-repo integration, clone the repository, or copy the needed checklist into a &lt;code&gt;references/&lt;/code&gt; directory inside the installed skill. This portability gap is tracked in &lt;a href=&quot;https://github.com/addyosmani/agent-skills/issues/361&quot;&gt;#361&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Prefer a native integration? Pick your tool below.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Claude Code (recommended)&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;&lt;strong&gt;Marketplace install:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;/plugin marketplace add addyosmani/agent-skills
/plugin install agent-skills@addy-agent-skills
&lt;/code&gt;&lt;/pre&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;&lt;strong&gt;SSH errors?&lt;/strong&gt; The marketplace clones repos via SSH. If you don&#39;t have SSH keys set up on GitHub, either &lt;a href=&quot;https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account&quot;&gt;add your SSH key&lt;/a&gt; or use the full HTTPS URL to force HTTPS cloning during the marketplace-add step:&lt;/p&gt; 
  &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;/plugin marketplace add https://github.com/addyosmani/agent-skills.git
/plugin install agent-skills@addy-agent-skills
&lt;/code&gt;&lt;/pre&gt; 
  &lt;p&gt;If &lt;code&gt;/plugin install&lt;/code&gt; still fails with &lt;code&gt;git@github.com: Permission denied (publickey)&lt;/code&gt; on Windows or macOS, the recommended workaround is to configure Git once to rewrite GitHub SSH URLs to HTTPS for subprocess clones:&lt;/p&gt; 
  &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global url.&quot;https://github.com/&quot;.insteadOf git@github.com:
&lt;/code&gt;&lt;/pre&gt; 
 &lt;/blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Local / development:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/addyosmani/agent-skills.git
claude --plugin-dir /path/to/agent-skills
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Cursor&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Put workflow skills under &lt;code&gt;.cursor/skills/&lt;/code&gt; (sync from &lt;code&gt;agent-skills/skills/&lt;/code&gt;) and short policies in &lt;code&gt;.cursor/rules/*.mdc&lt;/code&gt; — do not paste full skills into rules. See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/cursor-setup.md&quot;&gt;docs/cursor-setup.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Antigravity CLI&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Install as a native plugin for skills, subagents, and slash commands. See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/antigravity-setup.md&quot;&gt;docs/antigravity-setup.md&lt;/a&gt;.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Install from the repo:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;agy plugin install https://github.com/addyosmani/agent-skills.git
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Install from a local clone:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/addyosmani/agent-skills.git
agy plugin install ./agent-skills
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Gemini CLI&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Install as native skills for auto-discovery, or add to &lt;code&gt;GEMINI.md&lt;/code&gt; for persistent context. See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/gemini-cli-setup.md&quot;&gt;docs/gemini-cli-setup.md&lt;/a&gt;.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Install from the repo:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gemini skills install https://github.com/addyosmani/agent-skills.git --path skills
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Install from a local clone:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gemini skills install ./agent-skills/skills/
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Windsurf&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Add skill contents to your Windsurf rules configuration. See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/windsurf-setup.md&quot;&gt;docs/windsurf-setup.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;OpenCode&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Uses agent-driven skill execution via &lt;a href=&quot;http://AGENTS.md&quot;&gt;AGENTS.md&lt;/a&gt; and the &lt;code&gt;skill&lt;/code&gt; tool.&lt;/p&gt; 
 &lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/opencode-setup.md&quot;&gt;docs/opencode-setup.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;GitHub Copilot&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Use agent definitions from &lt;code&gt;agents/&lt;/code&gt; as Copilot personas and skill content in &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;. See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/copilot-setup.md&quot;&gt;docs/copilot-setup.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Kiro IDE &amp;amp; CLI &lt;/b&gt;&lt;/summary&gt; Skills for Kiro reside under &quot;.kiro/skills/&quot; and can be stored under Project or Global level. Kiro also supports Agents.md. See Kiro docs at https://kiro.dev/docs/skills/ 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Codex&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Install as a native Codex plugin (Codex CLI v0.122+):&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;codex plugin marketplace add addyosmani/agent-skills
codex plugin add agent-skills@agent-skills
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;The first command registers the marketplace; the second installs the plugin. Codex reads the root &lt;code&gt;skills/&lt;/code&gt; directory directly through &lt;code&gt;.codex-plugin/plugin.json&lt;/code&gt;. Once installed, invoke skills in chat using &lt;code&gt;@&lt;/code&gt; (e.g., &lt;code&gt;@spec-driven-development&lt;/code&gt;). See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/codex-setup.md&quot;&gt;docs/codex-setup.md&lt;/a&gt; for local installation and troubleshooting.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Command Code&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Install natively with the built-in &lt;code&gt;cmd skills&lt;/code&gt; command. Command Code clones the repo, discovers every &lt;code&gt;SKILL.md&lt;/code&gt;, and installs into &lt;code&gt;.commandcode/skills/&lt;/code&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cmd skills add addyosmani/agent-skills            # pick skills to install (project)
cmd skills add addyosmani/agent-skills --global   # install for all projects (~/.commandcode/skills/)
cmd skills add addyosmani/agent-skills -s spec-driven-development  # install a specific skill
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Installed skills show up in the TUI slash menu, e.g. &lt;code&gt;/spec-driven-development&lt;/code&gt;. See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/commandcode-setup.md&quot;&gt;docs/commandcode-setup.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Other Agents&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Skills are plain Markdown - they work with any agent that accepts system prompts or instruction files. See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/getting-started.md&quot;&gt;docs/getting-started.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Adoption&lt;/h2&gt; 
&lt;p&gt;Already installed? How you roll the pack out depends on your codebase. The &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/adoption-guide.md&quot;&gt;Adoption Guide&lt;/a&gt;&lt;/strong&gt; covers two paths: the full lifecycle from day one for a greenfield project, or an incremental, verification-first rollout for an established codebase.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;All 24 Skills&lt;/h2&gt; 
&lt;p&gt;The commands above are entry points. The pack includes 24 skills total — 23 lifecycle skills plus the &lt;code&gt;using-agent-skills&lt;/code&gt; meta-skill. Each skill is a structured workflow with steps, verification gates, and anti-rationalization tables. You can also reference any skill directly.&lt;/p&gt; 
&lt;h3&gt;Meta - Discover which skill applies&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Skill&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
   &lt;th&gt;Use When&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/using-agent-skills/SKILL.md&quot;&gt;using-agent-skills&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Maps incoming work to the right skill workflow and defines shared operating rules&lt;/td&gt; 
   &lt;td&gt;Starting a session or deciding which skill applies&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Define - Clarify what to build&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Skill&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
   &lt;th&gt;Use When&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/interview-me/SKILL.md&quot;&gt;interview-me&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;One-question-at-a-time interview that extracts what the user actually wants instead of what they think they should want, until ~95% confidence&lt;/td&gt; 
   &lt;td&gt;The ask is underspecified, or the user invokes &quot;interview me&quot; / &quot;grill me&quot;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/idea-refine/SKILL.md&quot;&gt;idea-refine&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Structured divergent/convergent thinking to turn vague ideas into concrete proposals&lt;/td&gt; 
   &lt;td&gt;You have a rough concept that needs exploration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/spec-driven-development/SKILL.md&quot;&gt;spec-driven-development&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Write a PRD covering objectives, commands, structure, code style, testing, and boundaries before any code&lt;/td&gt; 
   &lt;td&gt;Starting a new project, feature, or significant change&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Plan - Break it down&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Skill&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
   &lt;th&gt;Use When&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/planning-and-task-breakdown/SKILL.md&quot;&gt;planning-and-task-breakdown&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Decompose specs into small, verifiable tasks with acceptance criteria and dependency ordering&lt;/td&gt; 
   &lt;td&gt;You have a spec and need implementable units&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Build - Write the code&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Skill&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
   &lt;th&gt;Use When&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/incremental-implementation/SKILL.md&quot;&gt;incremental-implementation&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Thin vertical slices - implement, test, verify, commit. Feature flags, safe defaults, rollback-friendly changes&lt;/td&gt; 
   &lt;td&gt;Any change touching more than one file&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/test-driven-development/SKILL.md&quot;&gt;test-driven-development&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Red-Green-Refactor, test pyramid (80/15/5), test sizes, DAMP over DRY, Beyonce Rule, browser testing&lt;/td&gt; 
   &lt;td&gt;Implementing logic, fixing bugs, or changing behavior&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/context-engineering/SKILL.md&quot;&gt;context-engineering&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Feed agents the right information at the right time - rules files, context packing, MCP integrations&lt;/td&gt; 
   &lt;td&gt;Starting a session, switching tasks, or when output quality drops&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/source-driven-development/SKILL.md&quot;&gt;source-driven-development&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Ground every framework decision in official documentation - verify, cite sources, flag what&#39;s unverified&lt;/td&gt; 
   &lt;td&gt;You want authoritative, source-cited code for any framework or library&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/doubt-driven-development/SKILL.md&quot;&gt;doubt-driven-development&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Adversarial fresh-context review of every non-trivial decision in-flight - CLAIM → EXTRACT → DOUBT → RECONCILE → STOP, with optional user-authorized cross-model escalation&lt;/td&gt; 
   &lt;td&gt;Stakes are high (production, security, irreversible), working in unfamiliar code, or a confident output is cheaper to verify now than to debug later&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/frontend-ui-engineering/SKILL.md&quot;&gt;frontend-ui-engineering&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Component architecture, design systems, state management, responsive design, WCAG 2.1 AA accessibility&lt;/td&gt; 
   &lt;td&gt;Building or modifying user-facing interfaces&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/api-and-interface-design/SKILL.md&quot;&gt;api-and-interface-design&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Contract-first design, Hyrum&#39;s Law, One-Version Rule, error semantics, boundary validation&lt;/td&gt; 
   &lt;td&gt;Designing APIs, module boundaries, or public interfaces&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Verify - Prove it works&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Skill&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
   &lt;th&gt;Use When&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/browser-testing-with-devtools/SKILL.md&quot;&gt;browser-testing-with-devtools&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Chrome DevTools MCP for live runtime data - DOM inspection, console logs, network traces, performance profiling&lt;/td&gt; 
   &lt;td&gt;Building or debugging anything that runs in a browser&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/debugging-and-error-recovery/SKILL.md&quot;&gt;debugging-and-error-recovery&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Five-step triage: reproduce, localize, reduce, fix, guard. Stop-the-line rule, safe fallbacks&lt;/td&gt; 
   &lt;td&gt;Tests fail, builds break, or behavior is unexpected&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Review - Quality gates before merge&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Skill&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
   &lt;th&gt;Use When&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/code-review-and-quality/SKILL.md&quot;&gt;code-review-and-quality&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Five-axis review, change sizing (~100 lines), severity labels (Nit/Optional/FYI), review speed norms, splitting strategies&lt;/td&gt; 
   &lt;td&gt;Before merging any change&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/code-simplification/SKILL.md&quot;&gt;code-simplification&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Chesterton&#39;s Fence, Rule of 500, reduce complexity while preserving exact behavior&lt;/td&gt; 
   &lt;td&gt;Code works but is harder to read or maintain than it should be&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/security-and-hardening/SKILL.md&quot;&gt;security-and-hardening&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;OWASP Top 10 prevention, auth patterns, secrets management, dependency auditing, three-tier boundary system&lt;/td&gt; 
   &lt;td&gt;Handling user input, auth, data storage, or external integrations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/performance-optimization/SKILL.md&quot;&gt;performance-optimization&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Measure-first approach - Core Web Vitals targets, profiling workflows, bundle analysis, anti-pattern detection&lt;/td&gt; 
   &lt;td&gt;Performance requirements exist or you suspect regressions&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Ship - Deploy with confidence&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Skill&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
   &lt;th&gt;Use When&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/git-workflow-and-versioning/SKILL.md&quot;&gt;git-workflow-and-versioning&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Trunk-based development, atomic commits, change sizing (~100 lines), the commit-as-save-point pattern&lt;/td&gt; 
   &lt;td&gt;Making any code change (always)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/ci-cd-and-automation/SKILL.md&quot;&gt;ci-cd-and-automation&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Shift Left, Faster is Safer, feature flags, quality gate pipelines, failure feedback loops&lt;/td&gt; 
   &lt;td&gt;Setting up or modifying build and deploy pipelines&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/deprecation-and-migration/SKILL.md&quot;&gt;deprecation-and-migration&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Code-as-liability mindset, compulsory vs advisory deprecation, migration patterns, zombie code removal&lt;/td&gt; 
   &lt;td&gt;Removing old systems, migrating users, or sunsetting features&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/documentation-and-adrs/SKILL.md&quot;&gt;documentation-and-adrs&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Architecture Decision Records, API docs, inline documentation standards - document the &lt;em&gt;why&lt;/em&gt;&lt;/td&gt; 
   &lt;td&gt;Making architectural decisions, changing APIs, or shipping features&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/observability-and-instrumentation/SKILL.md&quot;&gt;observability-and-instrumentation&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Structured logging, RED metrics, OpenTelemetry tracing, symptom-based alerting - instrument as you build&lt;/td&gt; 
   &lt;td&gt;Adding telemetry, or shipping anything that runs in production&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/shipping-and-launch/SKILL.md&quot;&gt;shipping-and-launch&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Pre-launch checklists, feature flag lifecycle, staged rollouts, rollback procedures, monitoring setup&lt;/td&gt; 
   &lt;td&gt;Preparing to deploy to production&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Agent Personas&lt;/h2&gt; 
&lt;p&gt;Pre-configured specialist personas for targeted reviews:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Agent&lt;/th&gt; 
   &lt;th&gt;Role&lt;/th&gt; 
   &lt;th&gt;Perspective&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/agents/code-reviewer.md&quot;&gt;code-reviewer&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Senior Staff Engineer&lt;/td&gt; 
   &lt;td&gt;Five-axis code review with &quot;would a staff engineer approve this?&quot; standard&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/agents/test-engineer.md&quot;&gt;test-engineer&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;QA Specialist&lt;/td&gt; 
   &lt;td&gt;Test strategy, coverage analysis, and the Prove-It pattern&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/agents/security-auditor.md&quot;&gt;security-auditor&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Security Engineer&lt;/td&gt; 
   &lt;td&gt;Vulnerability detection, threat modeling, OWASP assessment&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/agents/web-performance-auditor.md&quot;&gt;web-performance-auditor&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Web Performance Engineer&lt;/td&gt; 
   &lt;td&gt;Core Web Vitals audit with Quick/Deep modes and a metric-honesty rule; run it via &lt;code&gt;/webperf&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/agents.md&quot;&gt;docs/agents.md&lt;/a&gt; for the decision matrix, orchestration rules, and how personas compose with skills and slash commands.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Reference Checklists&lt;/h2&gt; 
&lt;p&gt;Quick-reference material that skills pull in when needed:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Reference&lt;/th&gt; 
   &lt;th&gt;Covers&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/references/definition-of-done.md&quot;&gt;definition-of-done.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Project-wide standing bar every change clears, contrasted with per-task acceptance criteria&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/references/testing-patterns.md&quot;&gt;testing-patterns.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Test structure, naming, mocking, React/API/E2E examples, anti-patterns (JavaScript/TypeScript)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/references/security-checklist.md&quot;&gt;security-checklist.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Pre-commit checks, auth, input validation, headers, CORS, OWASP Top 10&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/references/performance-checklist.md&quot;&gt;performance-checklist.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Core Web Vitals targets, frontend/backend checklists, measurement commands&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/references/accessibility-checklist.md&quot;&gt;accessibility-checklist.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Keyboard nav, screen readers, visual design, ARIA, testing tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/references/observability-checklist.md&quot;&gt;observability-checklist.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;On-call questions, structured logging, RED/USE metrics, tracing, symptom-based alerting, pre-launch gate&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/references/orchestration-patterns.md&quot;&gt;orchestration-patterns.md&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Endorsed multi-persona orchestration patterns, anti-patterns, and the &quot;personas don&#39;t invoke personas&quot; rule&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;How Skills Work&lt;/h2&gt; 
&lt;p&gt;Every skill follows a consistent anatomy:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;┌─────────────────────────────────────────────────┐
│  SKILL.md                                       │
│                                                 │
│  ┌─ Frontmatter ─────────────────────────────┐  │
│  │ name: lowercase-hyphen-name               │  │
│  │ description: Guides agents through [task].│  │
│  │              Use when…                    │  │
│  └───────────────────────────────────────────┘  │                                                                                                
│  Overview         → What this skill does        │
│  When to Use      → Triggering conditions       │
│  Process          → Step-by-step workflow       │
│  Rationalizations → Excuses + rebuttals         │
│  Red Flags        → Signs something&#39;s wrong     │
│  Verification     → Evidence requirements       │
└─────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Key design choices:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Process, not prose.&lt;/strong&gt; Skills are workflows agents follow, not reference docs they read. Each has steps, checkpoints, and exit criteria.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Anti-rationalization.&lt;/strong&gt; Every skill includes a table of common excuses agents use to skip steps (e.g., &quot;I&#39;ll add tests later&quot;) with documented counter-arguments.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Verification is non-negotiable.&lt;/strong&gt; Every skill ends with evidence requirements - tests passing, build output, runtime data. &quot;Seems right&quot; is never sufficient.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Progressive disclosure.&lt;/strong&gt; The &lt;code&gt;SKILL.md&lt;/code&gt; is the entry point. Supporting references load only when needed, keeping token usage minimal.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Project Structure&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;agent-skills/
├── skills/                            # 24 skills (23 lifecycle + 1 meta)
│   ├── interview-me/                  #   Define
│   ├── idea-refine/                   #   Define
│   ├── spec-driven-development/       #   Define
│   ├── planning-and-task-breakdown/   #   Plan
│   ├── incremental-implementation/    #   Build
│   ├── context-engineering/           #   Build
│   ├── source-driven-development/     #   Build
│   ├── doubt-driven-development/      #   Build
│   ├── frontend-ui-engineering/       #   Build
│   ├── test-driven-development/       #   Build
│   ├── api-and-interface-design/      #   Build
│   ├── browser-testing-with-devtools/ #   Verify
│   ├── debugging-and-error-recovery/  #   Verify
│   ├── code-review-and-quality/       #   Review
│   ├── code-simplification/           #   Review
│   ├── security-and-hardening/        #   Review
│   ├── performance-optimization/      #   Review
│   ├── git-workflow-and-versioning/   #   Ship
│   ├── ci-cd-and-automation/          #   Ship
│   ├── deprecation-and-migration/     #   Ship
│   ├── documentation-and-adrs/        #   Ship
│   ├── observability-and-instrumentation/ # Ship
│   ├── shipping-and-launch/           #   Ship
│   └── using-agent-skills/            #   Meta: how to use this pack
├── agents/                            # 4 specialist personas
├── references/                        # 7 supplementary checklists
├── hooks/                             # Session lifecycle hooks
├── .claude/commands/                  # 8 slash commands (Claude Code)
├── .gemini/commands/                  # 8 slash commands (Gemini CLI)
├── commands/                          # 8 slash commands (Antigravity CLI)
├── plugin.json                        # Antigravity plugin manifest
└── docs/                              # Setup guides per tool
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Why Agent Skills?&lt;/h2&gt; 
&lt;p&gt;AI coding agents default to the shortest path - which often means skipping specs, tests, security reviews, and the practices that make software reliable. Agent Skills gives agents structured workflows that enforce the same discipline senior engineers bring to production code.&lt;/p&gt; 
&lt;p&gt;Each skill encodes hard-won engineering judgment: &lt;em&gt;when&lt;/em&gt; to write a spec, &lt;em&gt;what&lt;/em&gt; to test, &lt;em&gt;how&lt;/em&gt; to review, and &lt;em&gt;when&lt;/em&gt; to ship. These aren&#39;t generic prompts - they&#39;re the kind of opinionated, process-driven workflows that separate production-quality work from prototype-quality work.&lt;/p&gt; 
&lt;p&gt;Skills bake in best practices from Google&#39;s engineering culture — including concepts from &lt;a href=&quot;https://abseil.io/resources/swe-book&quot;&gt;Software Engineering at Google&lt;/a&gt; and Google&#39;s &lt;a href=&quot;https://google.github.io/eng-practices/&quot;&gt;engineering practices guide&lt;/a&gt;. You&#39;ll find Hyrum&#39;s Law in API design, the Beyonce Rule and test pyramid in testing, change sizing and review speed norms in code review, Chesterton&#39;s Fence in simplification, trunk-based development in git workflow, Shift Left and feature flags in CI/CD, and a dedicated deprecation skill treating code as a liability. These aren&#39;t abstract principles — they&#39;re embedded directly into the step-by-step workflows agents follow.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;How it compares&lt;/h2&gt; 
&lt;p&gt;Wondering how this stacks up against &lt;a href=&quot;https://github.com/obra/superpowers&quot;&gt;Superpowers&lt;/a&gt; or &lt;a href=&quot;https://github.com/mattpocock/skills&quot;&gt;Matt Pocock&#39;s skills&lt;/a&gt;? See &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/comparison.md&quot;&gt;docs/comparison.md&lt;/a&gt;&lt;/strong&gt; for an honest, side-by-side look at how the three are shaped differently and when to reach for each — including a link to a controlled &lt;a href=&quot;https://www.linkedin.com/pulse/superpowers-vs-agent-skills-faster-shipping-safer-reasoning-om-mishra-dzakf/&quot;&gt;head-to-head experiment&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Skills should be &lt;strong&gt;specific&lt;/strong&gt; (actionable steps, not vague advice), &lt;strong&gt;verifiable&lt;/strong&gt; (clear exit criteria with evidence requirements), &lt;strong&gt;battle-tested&lt;/strong&gt; (based on real workflows), and &lt;strong&gt;minimal&lt;/strong&gt; (only what&#39;s needed to guide the agent).&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/docs/skill-anatomy.md&quot;&gt;docs/skill-anatomy.md&lt;/a&gt; for the format specification and &lt;a href=&quot;https://raw.githubusercontent.com/addyosmani/agent-skills/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for guidelines.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Team&lt;/h2&gt; 
&lt;p&gt;agent-skills is built and maintained by:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;&lt;/th&gt; 
   &lt;th&gt;Name&lt;/th&gt; 
   &lt;th&gt;GitHub&lt;/th&gt; 
   &lt;th&gt;Role&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://github.com/addyosmani.png?size=120&quot; width=&quot;60&quot; height=&quot;60&quot; alt=&quot;Addy Osmani&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Addy Osmani&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/addyosmani&quot;&gt;@addyosmani&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Creator&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://github.com/federicobartoli.png?size=120&quot; width=&quot;60&quot; height=&quot;60&quot; alt=&quot;Federico Bartoli&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Federico Bartoli&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/federicobartoli&quot;&gt;@federicobartoli&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Collaborator&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://github.com/nucliweb.png?size=120&quot; width=&quot;60&quot; height=&quot;60&quot; alt=&quot;Joan León&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Joan León&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/nucliweb&quot;&gt;@nucliweb&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Collaborator&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT - use these skills in your projects, teams, and tools.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>chr0nzz/traefik-manager</title>
      <link>https://github.com/chr0nzz/traefik-manager</link>
      <description>&lt;p&gt;A clean, self-hosted web UI for managing your Traefik reverse proxy.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/chr0nzz/traefik-manager/main/docs/public/images/icon.png&quot; width=&quot;128&quot; height=&quot;128&quot; alt=&quot;Traefik Manager&quot; /&gt; 
 &lt;h1&gt;Traefik Manager&lt;/h1&gt; 
 &lt;p&gt;&lt;strong&gt;A clean, self-hosted web UI for managing your Traefik reverse proxy.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;Add routes, manage middlewares, monitor services, and view TLS certificates - all without touching a YAML file by hand.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/chr0nzz/traefik-manager/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/chr0nzz/traefik-manager&quot; alt=&quot;Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/chr0nzz/traefik-manager/actions/workflows/docker.yml&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/chr0nzz/traefik-manager/docker.yml?logo=githubactions&amp;amp;logoColor=white&amp;amp;label=build&quot; alt=&quot;Build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/chr0nzz/traefik-manager/actions/workflows/tests.yml&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/chr0nzz/traefik-manager/tests.yml?branch=dev&amp;amp;logo=githubactions&amp;amp;logoColor=white&amp;amp;label=tests&quot; alt=&quot;Tests&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/chr0nzz/traefik-manager/pkgs/container/traefik-manager&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/ghcr.io-chr0nzz%2Ftraefik--manager-blue?logo=docker&amp;amp;logoColor=white&quot; alt=&quot;Docker Image&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/chr0nzz/traefik-manager/commits/dev&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/last-commit/chr0nzz/traefik-manager/dev?label=last%20commit&quot; alt=&quot;Last Commit&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/chr0nzz/traefik-manager/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-GPL--3.0-blue&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://traefik-manager.xyzlab.dev/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-xyzlab.dev-blue&quot; alt=&quot;Docs&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/chr0nzz/traefik-manager/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/chr0nzz/traefik-manager?logo=github&amp;amp;color=e3b341&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/chr0nzz/traefik-manager/issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/chr0nzz/traefik-manager?logo=github&quot; alt=&quot;Issues&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/chr0nzz/traefik-manager-mobile&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/mobile-repo-green?logo=android&amp;amp;logoColor=white&quot; alt=&quot;Mobile App&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=dev.chr0nzz.traefikmanager&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Google_Play-Available-blue?logo=google-play&amp;amp;logoColor=white&quot; alt=&quot;Google Play&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=dev.chr0nzz.traefikmanager&quot;&gt;&lt;img src=&quot;https://playbadges.pavi2410.me/badge/downloads?id=dev.chr0nzz.traefikmanager&quot; alt=&quot;Play Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://ko-fi.com/chr0nzz&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Ko--fi-Sponsor-ff5f5f?logo=ko-fi&amp;amp;logoColor=white&quot; alt=&quot;Ko-fi&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;sub&gt;Built for homelabbers who love Traefik but hate editing YAML at 2am.&lt;/sub&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Highlights&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Routes&lt;/strong&gt; - add, edit, clone, and enable/disable HTTP, TCP, and UDP routes from the browser&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Load balancing&lt;/strong&gt; - multiple backends per route, sticky sessions, health checks, and router priority&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Middlewares&lt;/strong&gt; - 24 guided wizards plus a raw YAML editor, for HTTP and TCP&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-server&lt;/strong&gt; - manage unlimited remote Traefik instances through a lightweight Go agent&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Static config editor&lt;/strong&gt; - edit the full &lt;code&gt;traefik.yml&lt;/code&gt; from the UI and apply it with a one-click Traefik restart&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Backups&lt;/strong&gt; - timestamped local backups plus git push with history, diffs, and one-click restore&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Monitoring&lt;/strong&gt; - live services, certificates, access logs, CrowdSec, and CVE advisory warnings&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Mobile app&lt;/strong&gt; - Android companion app on Google Play&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;One-liner installer&lt;/strong&gt; - installs Traefik + Traefik Manager together, or Traefik Manager on its own via Docker or a native Linux service:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://get-traefik.xyzlab.dev | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Manual Docker Compose:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  traefik-manager:
    image: ghcr.io/chr0nzz/traefik-manager:latest
    container_name: traefik-manager
    restart: unless-stopped
    ports:
      - &quot;5000:5000&quot;
    environment:
      - COOKIE_SECURE=false
    volumes:
      - /path/to/traefik/dynamic.yml:/app/config/dynamic.yml
      - /path/to/traefik-manager/config:/app/config
      - /path/to/traefik-manager/backups:/app/backups
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;strong&gt;&lt;a href=&quot;http://your-server:5000&quot;&gt;http://your-server:5000&lt;/a&gt;&lt;/strong&gt; - the setup wizard will guide you through the rest.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://traefik-manager.xyzlab.dev/ui-examples.html&quot;&gt;
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;docs/public/images/readme-carousel-dark.gif&quot; /&gt; 
   &lt;img src=&quot;https://raw.githubusercontent.com/chr0nzz/traefik-manager/main/docs/public/images/readme-carousel-light.gif&quot; width=&quot;85%&quot; alt=&quot;Traefik Manager - Dashboard, Routes, Middlewares, and Route Map&quot; /&gt; 
  &lt;/picture&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;h3&gt;Routes&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Add, edit, clone, delete, and enable/disable &lt;strong&gt;HTTP, TCP, and UDP&lt;/strong&gt; routes&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multiple domains per route&lt;/strong&gt; with a chip builder, or switch to the &lt;strong&gt;advanced rule editor&lt;/strong&gt; for complex expressions (&lt;code&gt;PathPrefix&lt;/code&gt;, &lt;code&gt;HostRegexp&lt;/code&gt;, &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; / &lt;code&gt;||&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multiple backends per route&lt;/strong&gt; - point HTTP, TCP, or UDP at several servers and let Traefik load-balance across them; route cards show a &lt;code&gt;+N&lt;/code&gt; badge&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Sticky sessions, health checks, and router priority&lt;/strong&gt; - &lt;code&gt;loadBalancer.sticky.cookie&lt;/code&gt;, &lt;code&gt;loadBalancer.healthCheck&lt;/code&gt;, and &lt;code&gt;router.priority&lt;/code&gt; as form fields instead of raw YAML&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Guided route presets&lt;/strong&gt; - one-click &lt;strong&gt;security headers&lt;/strong&gt; and &lt;strong&gt;streaming&lt;/strong&gt; tuning for Jellyfin/Emby/Plex; the middlewares they generate stay visible and editable, and hand-written ones are never overwritten&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Per-route certificate resolver&lt;/strong&gt; - pick any configured resolver, request &lt;strong&gt;wildcard certificates&lt;/strong&gt;, or disable TLS&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;TLS options profiles&lt;/strong&gt; - create named &lt;code&gt;tls.options&lt;/code&gt; (min/max version, ciphers, mTLS, SNI strict) and assign them per route&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;insecureSkipVerify per service&lt;/strong&gt; for backends with self-signed certs (Proxmox, Kasm, etc.)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-config file support&lt;/strong&gt; - mount several dynamic files via &lt;code&gt;CONFIG_DIR&lt;/code&gt; / &lt;code&gt;CONFIG_PATHS&lt;/code&gt;, choose the target file per route, create new files from the UI&lt;/li&gt; 
 &lt;li&gt;Optional &lt;strong&gt;app icons&lt;/strong&gt; on route cards and lists, shared with the Dashboard tab&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Middlewares&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;24 guided wizards&lt;/strong&gt;: Basic/Digest Auth, Forward Auth (with Authentik, Authelia, and Gatekeeper presets), OIDC Auth, Rate Limit, In-Flight Requests, IP Allowlist, Secure Headers, CORS, Redirects, Strip/Add/Replace Prefix, Retry, Circuit Breaker, Buffering, Compress, Chain, Encoded Characters, and more&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Raw YAML editor&lt;/strong&gt; for anything the wizards don&#39;t cover&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Client IP source selector&lt;/strong&gt; in the IP Allowlist wizard - match the real client instead of your proxy, via trusted hop depth (&lt;code&gt;ipStrategy.depth&lt;/code&gt;) or excluded proxy IPs (&lt;code&gt;ipStrategy.excludedIPs&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;TCP middlewares&lt;/strong&gt; alongside HTTP&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Provider middlewares&lt;/strong&gt; (Docker, Kubernetes, etc.) shown read-only in the provider tabs&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Live Dashboard &amp;amp; Monitoring&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Real-time stats: router counts, service health, entrypoints, Traefik version&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Provider tabs&lt;/strong&gt;: Docker, Kubernetes, Swarm, Nomad, ECS, Consul Catalog, Redis, etcd, Consul KV, ZooKeeper, HTTP, File - all API-based, no extra mounts&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Traefik CVE advisory warnings&lt;/strong&gt; - flags known security advisories affecting your running Traefik version&lt;/li&gt; 
 &lt;li&gt;Optional tabs (toggle in Settings) - API-based, no mounts: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Dashboard&lt;/strong&gt; - routes grouped by category with app icons from &lt;a href=&quot;https://selfh.st/icons/&quot;&gt;selfh.st/icons&lt;/a&gt; (cached locally), per-card name/icon/group overrides&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Route Map&lt;/strong&gt; - entry points, routes, middlewares, and services in a visual topology&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;TLS Options&lt;/strong&gt; - create and manage named &lt;code&gt;tls.options&lt;/code&gt; profiles, assignable per route&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;CrowdSec&lt;/strong&gt; - decisions and alerts from a LAPI; ban, captcha, bypass, or unban IPs with one click&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;IP geolocation&lt;/strong&gt; &lt;em&gt;(optional, off by default)&lt;/em&gt; - country flags and a shaded, clickable &lt;strong&gt;world map&lt;/strong&gt; of where your traffic and bans come from, on the Logs and CrowdSec tabs; lookups run on the server against a local &lt;a href=&quot;https://db-ip.com&quot;&gt;DB-IP&lt;/a&gt; database (no IPs leave your machine), or point &lt;code&gt;GEOIP_DB_PATH&lt;/code&gt; at your own MaxMind &lt;code&gt;.mmdb&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Optional tabs that read a mounted file: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Certs&lt;/strong&gt; &lt;em&gt;(mount &lt;code&gt;acme.json&lt;/code&gt;)&lt;/em&gt; - TLS certificates with expiry tracking; accepts several storage files or a directory, one per cert resolver&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Plugins&lt;/strong&gt; &lt;em&gt;(mount &lt;code&gt;traefik.yml&lt;/code&gt;)&lt;/em&gt; - view plugins declared in your static config, and &lt;strong&gt;install new ones&lt;/strong&gt; by pasting the snippet from the plugin catalog - TM writes the static config, optionally creates the matching middleware, and prompts a restart&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Logs&lt;/strong&gt; &lt;em&gt;(mount the Traefik access log)&lt;/em&gt; - parsed access log cards with full-detail panel&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Client IP Diagnostic&lt;/strong&gt; - a read-only tool in the top nav showing what this instance actually sees for your own request: the trusted client IP (the one that feeds the login and audit log, &lt;code&gt;ipAllowList&lt;/code&gt;, and CrowdSec), the raw socket peer, the trusted proxy hop count, and the forwarding headers as received. Warns when the trusted IP is private, loopback, or CGNAT while you expect public clients&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Source-IP classification&lt;/strong&gt; in the Logs tab - every IP in &lt;strong&gt;Top IPs&lt;/strong&gt; is tagged &lt;strong&gt;Public&lt;/strong&gt;, &lt;strong&gt;Private&lt;/strong&gt;, &lt;strong&gt;CGNAT&lt;/strong&gt;, &lt;strong&gt;Loopback&lt;/strong&gt;, or &lt;strong&gt;Link-local&lt;/strong&gt;, so local noise like a gateway&#39;s hairpin-NAT address is easy to tell apart from real traffic&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Configurable file paths&lt;/strong&gt; - set the &lt;code&gt;acme.json&lt;/code&gt;, access log, and static config paths from &lt;strong&gt;Settings → File Paths&lt;/strong&gt; without a container restart; UI settings override env vars&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Light, dark, or system theme&lt;/strong&gt; - the nav-bar toggle sets the default for the whole instance, including the login page&lt;/li&gt; 
 &lt;li&gt;Card/list view toggle on Routes, Middlewares, and Services&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Static Config Editor &lt;em&gt;(optional - mount &lt;code&gt;traefik.yml&lt;/code&gt; read-write)&lt;/em&gt;&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Edit every part of &lt;code&gt;traefik.yml&lt;/code&gt; from the UI - &lt;strong&gt;Entrypoints, Cert Resolvers, Plugins, API, Logging, and Providers&lt;/strong&gt; sections, plus a raw &lt;strong&gt;Monaco&lt;/strong&gt; YAML editor for the full file&lt;/li&gt; 
 &lt;li&gt;Changes are staged and backed up; apply them with a &lt;strong&gt;one-click Traefik restart&lt;/strong&gt; - via socket proxy (recommended), poison pill (no socket needed), or direct socket&lt;/li&gt; 
 &lt;li&gt;Full-screen reconnect overlay polls until Traefik is back up&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Backups&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Timestamped backups&lt;/strong&gt; before every change, one-click restore, &lt;strong&gt;configurable retention&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Git repository backup&lt;/strong&gt; - auto-push your config to GitHub, Gitea, Forgejo, GitLab, or any HTTPS remote; browse commit history, view side-by-side diffs, restore any commit, set custom commit messages&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;One repository for all servers&lt;/strong&gt; - agents can push to the Host&#39;s repository on their own branch, one branch per server (enforced), with per-agent history, diffs, and restore&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Multi-Server (Agents)&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Traefik Manager Agent (TMA)&lt;/strong&gt; - a lightweight Go daemon that runs next to Traefik on any remote server&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Server switcher&lt;/strong&gt; in the nav bar - every tab (routes, services, middlewares, backups, logs) works against the active server&lt;/li&gt; 
 &lt;li&gt;Setup wizard generates a ready-to-paste Docker Compose or Docker Run command; API key shown once and stored encrypted&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Cert resolvers without mounting the static config&lt;/strong&gt; - resolvers already in use by that server&#39;s routes are detected from its Traefik API, merged with its static config when mounted, plus an optional per-agent override field&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Git backup without agent-side setup&lt;/strong&gt; - enable &lt;em&gt;Use Host Repository&lt;/em&gt; and the Host pushes that agent&#39;s config to its git repo on a dedicated branch; or run agents autonomously via &lt;code&gt;GIT_BACKUP_*&lt;/code&gt; env vars&lt;/li&gt; 
 &lt;li&gt;Manage unlimited servers from one TM - no VPN or SSH required&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Notifications&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;In-app notification center for logins, config saves, restarts, backups, and CrowdSec actions&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Webhook forwarding&lt;/strong&gt; to Discord, Slack, ntfy, or any generic JSON endpoint, with a test button in Settings&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Security&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;bcrypt passwords&lt;/strong&gt; (cost 12), optional &lt;strong&gt;TOTP 2FA&lt;/strong&gt;, session fixation protection, configurable inactivity timeout&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;OIDC / SSO&lt;/strong&gt; - Keycloak, Google, Authentik, or any OIDC provider; restrict by email or group; can run as the &lt;strong&gt;sole login method&lt;/strong&gt; with built-in auth disabled&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Per-device API keys&lt;/strong&gt; (up to 10, individually revocable) - the mobile app keeps working in every auth mode&lt;/li&gt; 
 &lt;li&gt;CSRF protection, rate limiting, SSRF and git-transport hardening, secrets encrypted at rest (Fernet), atomic config writes&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Configurable trusted proxy hops&lt;/strong&gt; - &lt;code&gt;PROXY_FIX_HOPS&lt;/code&gt; (default &lt;code&gt;1&lt;/code&gt;) sets how many reverse-proxy hops to trust when reading &lt;code&gt;X-Forwarded-For&lt;/code&gt;, so the login and audit log record the real client behind a chain like Cloudflare → Traefik → TM. Only count hops you actually control - each trusted hop is one more entry a client could forge&lt;/li&gt; 
 &lt;li&gt;See the &lt;a href=&quot;https://traefik-manager.xyzlab.dev/security.html&quot;&gt;security&lt;/a&gt; and &lt;a href=&quot;https://traefik-manager.xyzlab.dev/hardening.html&quot;&gt;Traefik hardening&lt;/a&gt; docs&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Deployment&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Runtime&lt;/th&gt; 
   &lt;th&gt;Guide&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/windows-terminal.png&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; Installer&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/traefik-stack.html&quot;&gt;One-liner: full stack, TM-only Docker, TM-only Linux service, Agent&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/docker.png&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; Docker&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/docker.html&quot;&gt;Docker Compose setup, networking, behind Traefik&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/podman.png&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; Podman&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/podman.html&quot;&gt;Rootless, Quadlet/systemd, SELinux labels&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/linux.png&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; Linux&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/linux.html&quot;&gt;Native Python + systemd, no container required&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/unraid.png&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; Unraid&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/unraid.html&quot;&gt;Community Applications template, networking, multi-config&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;i&gt;Agent&lt;/i&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/agent.html&quot;&gt;TMA - remote agent for multi-server management&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Full documentation at &lt;strong&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/&quot;&gt;traefik-manager.xyzlab.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;&lt;/th&gt; 
   &lt;th&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/guide.html&quot;&gt;Get Started&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Deployment guides for Docker, Podman, and Linux&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/traefik-stack.html&quot;&gt;Traefik Stack&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;One-liner installer guide&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/manager-yml.html&quot;&gt;Configuration&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;manager.yml&lt;/code&gt; reference&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/env-vars.html&quot;&gt;Environment Variables&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;CONFIG_DIR&lt;/code&gt;, &lt;code&gt;CONFIG_PATHS&lt;/code&gt;, auth, domains, and more&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/security.html&quot;&gt;Security&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;API keys, sessions, CSRF, rate limits, and hardening&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/hardening.html&quot;&gt;Traefik Hardening&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;CVE advisories, header aliases, forwardAuth limits&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/api.html&quot;&gt;API Reference&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;REST API for integrations and the mobile app&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/api-agent.html&quot;&gt;Agent API&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;TMA endpoints, auth, and health checks&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/static.html&quot;&gt;Static Config Editor&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Entrypoints, cert resolvers, and the restart flow&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/geoip.html&quot;&gt;IP Geolocation&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Country flags, world map, and bring-your-own database&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/webhooks.html&quot;&gt;Notification Webhooks&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Discord, Slack, ntfy, and generic JSON payloads&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/oidc.html&quot;&gt;OIDC / SSO&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;OIDC setup, provider examples, and access control&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/git-backup.html&quot;&gt;Git Repository Backup&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-push, commit history, diff viewer, and one-click restore&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/mobile.html&quot;&gt;Mobile App&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Android companion app setup and features&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/reset-password.html&quot;&gt;Reset Password&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;CLI reset, TOTP recovery, manual reset&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/ui-examples.html&quot;&gt;UI Examples&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Screenshots and walkthroughs&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://traefik-manager.xyzlab.dev/tab-docker.html&quot;&gt;Provider Tabs&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Docker, Kubernetes, Swarm, Nomad, ECS, and more&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Mobile App&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;traefik-manager-mobile&lt;/strong&gt; is a React Native companion app for managing Traefik Manager from your phone. Requires &lt;strong&gt;Traefik Manager v1.0.0 or higher&lt;/strong&gt;.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;&lt;/th&gt; 
   &lt;th&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Repo&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/chr0nzz/traefik-manager-mobile&quot;&gt;github.com/chr0nzz/traefik-manager-mobile&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Download&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/chr0nzz/traefik-manager-mobile/releases/latest&quot;&gt;Latest release&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Auth&lt;/td&gt; 
   &lt;td&gt;Per-device API key - generate one in &lt;strong&gt;Settings → Authentication → App / Mobile API Keys&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;a href=&quot;https://play.google.com/store/apps/details?id=dev.chr0nzz.traefikmanager&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/chr0nzz/traefik-manager/main/static/icons/GetItOnGooglePlay.svg?sanitize=true&quot; alt=&quot;Get it on Google Play&quot; height=&quot;60&quot; /&gt; &lt;/a&gt; 
&lt;p&gt;Features: browse routes, middlewares, and services · enable/disable routes · add and edit routes and middlewares with guided wizards · multiple domains per route · per-service insecureSkipVerify · multi-config file picker · edit mode for bulk actions · CrowdSec tab · system light/dark theme.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Tech Stack&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Layer&lt;/th&gt; 
   &lt;th&gt;Technology&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Backend&lt;/td&gt; 
   &lt;td&gt;Python 3.11 · Flask 3.1 · Gunicorn&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent&lt;/td&gt; 
   &lt;td&gt;Go 1.23 · Alpine Linux (TMA - remote agent daemon)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Config&lt;/td&gt; 
   &lt;td&gt;ruamel.yaml (preserves comments and Go templates)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Auth&lt;/td&gt; 
   &lt;td&gt;bcrypt · pyotp (TOTP) · Flask sessions · CSRF · Flask-Limiter · Fernet&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Frontend&lt;/td&gt; 
   &lt;td&gt;Vanilla JS · Tailwind CSS 3.4 · Phosphor Icons&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Editor&lt;/td&gt; 
   &lt;td&gt;Monaco Editor 0.52 (VS Code engine)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Route Map&lt;/td&gt; 
   &lt;td&gt;dagre 0.8 (graph layout)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Geolocation&lt;/td&gt; 
   &lt;td&gt;maxminddb · DB-IP Lite (local lookups, no external calls)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Tests&lt;/td&gt; 
   &lt;td&gt;pytest · pyflakes · &lt;code&gt;go test&lt;/code&gt; - run on every pull request&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Container&lt;/td&gt; 
   &lt;td&gt;Docker · Alpine Linux · all JS/CSS dependencies bundled at build time (no CDN at runtime)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Pull requests are welcome. See &lt;a href=&quot;https://raw.githubusercontent.com/chr0nzz/traefik-manager/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for how to report bugs, suggest features, and run the project locally.&lt;/p&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;p&gt;Traefik Manager is better because of the people who took the time to dig into it and send patches. Thank you.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/fbnlrz&quot; title=&quot;Fabi (@fbnlrz) - client-IP feature set, guided route presets, config-safety fixes&quot;&gt;&lt;img src=&quot;https://images.weserv.nl/?url=github.com/fbnlrz.png&amp;amp;w=140&amp;amp;h=140&amp;amp;fit=cover&amp;amp;mask=circle&quot; width=&quot;70&quot; height=&quot;70&quot; alt=&quot;fbnlrz&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/adrianrp1988&quot; title=&quot;Adrian Rodriguez (@adrianrp1988) - TCP middlewares on TCP routes&quot;&gt;&lt;img src=&quot;https://images.weserv.nl/?url=github.com/adrianrp1988.png&amp;amp;w=140&amp;amp;h=140&amp;amp;fit=cover&amp;amp;mask=circle&quot; width=&quot;70&quot; height=&quot;70&quot; alt=&quot;adrianrp1988&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/akanealw&quot; title=&quot;@akanealw - Authelia forward-auth template fix&quot;&gt;&lt;img src=&quot;https://images.weserv.nl/?url=github.com/akanealw.png&amp;amp;w=140&amp;amp;h=140&amp;amp;fit=cover&amp;amp;mask=circle&quot; width=&quot;70&quot; height=&quot;70&quot; alt=&quot;akanealw&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/maca134&quot; title=&quot;@maca134 - horizontally resizable modals&quot;&gt;&lt;img src=&quot;https://images.weserv.nl/?url=github.com/maca134.png&amp;amp;w=140&amp;amp;h=140&amp;amp;fit=cover&amp;amp;mask=circle&quot; width=&quot;70&quot; height=&quot;70&quot; alt=&quot;maca134&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Thanks as well to everyone who has opened an issue or a discussion. Several features started as a question from someone running into something unexpected, and the detail in those reports is what made them fixable.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/chr0nzz/traefik-manager/main/LICENSE&quot;&gt;GPL-3.0&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>santifer/career-ops</title>
      <link>https://github.com/santifer/career-ops</link>
      <description>&lt;p&gt;Open-source AI job search: scan job portals, evaluate listings with a structured A-F rubric into a 1.0-5.0 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt;
 &lt;picture&gt;
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;docs/wordmark-dark.svg&quot; /&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/wordmark-light.svg?sanitize=true&quot; alt=&quot;career-ops&quot; width=&quot;250&quot; height=&quot;56&quot; /&gt;
 &lt;/picture&gt;&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.md&quot;&gt;English&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.es.md&quot;&gt;Español&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.de.md&quot;&gt;Deutsch&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.fr.md&quot;&gt;Français&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.pt-BR.md&quot;&gt;Português (Brasil)&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.ko-KR.md&quot;&gt;한국어&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.ja.md&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.cn.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.zh-TW.md&quot;&gt;繁體中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.ua.md&quot;&gt;Українська&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.ru.md&quot;&gt;Русский&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.pl.md&quot;&gt;Polski&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.da.md&quot;&gt;Dansk&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.ta.md&quot;&gt;தமிழ்&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.ar.md&quot;&gt;العربية&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.hi.md&quot;&gt;हिन्दी&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/README.tr.md&quot;&gt;Türkçe&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://x.com/santifer&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/hero-banner.jpg&quot; alt=&quot;career-ops Multi-Agent Job Search System&quot; width=&quot;800&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;em&gt;I spent months applying to jobs the hard way. So I engineered the system I wish I had.&lt;/em&gt;&lt;br /&gt; Companies use AI to filter candidates. &lt;strong&gt;I just gave candidates AI to &lt;em&gt;choose&lt;/em&gt; companies.&lt;/strong&gt;&lt;br /&gt; &lt;em&gt;Now it&#39;s open source.&lt;/em&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/25195&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/25195&quot; alt=&quot;santifer%2Fcareer-ops | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.producthunt.com/products/santifer-io?utm_source=badge-featured&amp;amp;utm_medium=badge&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/press/producthunt.svg?sanitize=true&quot; alt=&quot;career-ops on Claude | Product Hunt&quot; style=&quot;width: 206px; height: 54px; vertical-align: middle;&quot; width=&quot;206&quot; height=&quot;54&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt;&lt;sub&gt;FEATURED IN&lt;/sub&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://wired.com.gr/article/to-ai-ergaleio-pou-fernei-epanastasi-ston-tropo-pou-psachnoume-douleia/&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;docs/press/wired-dark.svg&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/press/wired.svg?sanitize=true&quot; alt=&quot;WIRED&quot; height=&quot;32&quot; /&gt;
  &lt;/picture&gt;&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://www.businessinsider.com/how-i-built-tool-filter-job-listings-landed-head-ai-2026-4&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;
  &lt;picture&gt;
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;docs/press/business-insider-dark.svg&quot; /&gt;
   &lt;img src=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/press/business-insider.svg?sanitize=true&quot; alt=&quot;Business Insider&quot; height=&quot;32&quot; /&gt;
  &lt;/picture&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/demo.gif&quot; alt=&quot;career-ops Demo&quot; width=&quot;800&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt;&lt;strong&gt;740+ job listings evaluated · 100+ personalized CVs · 1 dream role landed&lt;/strong&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://warpchart.dev/hq&quot;&gt; 
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://warpchart.dev/api/chart?theme=dark&amp;amp;v=3&quot; /&gt; 
   &lt;img alt=&quot;Live star telemetry of santifer/career-ops&quot; src=&quot;https://warpchart.dev/api/chart?theme=light&amp;amp;v=3&quot; loading=&quot;lazy&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://discord.gg/8pRpHETxa4&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Join_the_community-Discord-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/santifer/career-ops/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/%40santifer%2Fcareer-ops?style=for-the-badge&amp;amp;labelColor=2b3137&amp;amp;color=2ea44f&amp;amp;label=release&quot; alt=&quot;Latest release&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Built_with-Claude_Code-000?style=for-the-badge&amp;amp;logo=anthropic&amp;amp;logoColor=white&quot; alt=&quot;Built with Claude Code&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;sub&gt;Also runs on any agent-skill-standard CLI. See &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/SUPPORTED_CLIS.md&quot;&gt;Supported CLIs&lt;/a&gt;.&lt;/sub&gt;&lt;br /&gt; &lt;img src=&quot;https://img.shields.io/badge/Claude_Code-000?style=flat&amp;amp;logo=anthropic&amp;amp;logoColor=white&quot; alt=&quot;Claude Code&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/OpenCode-111827?style=flat&amp;amp;logo=terminal&amp;amp;logoColor=white&quot; alt=&quot;OpenCode&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Antigravity_CLI-4285F4?style=flat&amp;amp;logo=google&amp;amp;logoColor=white&quot; alt=&quot;Antigravity CLI&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Codex-412991?style=flat&amp;amp;logo=openai&amp;amp;logoColor=white&quot; alt=&quot;Codex&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Qwen-615CED?style=flat&quot; alt=&quot;Qwen&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Kimi-FF4B4B?style=flat&quot; alt=&quot;Kimi&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/GitHub_Copilot-000?style=flat&amp;amp;logo=githubcopilot&amp;amp;logoColor=white&quot; alt=&quot;GitHub Copilot&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Grok_Build_CLI-000?style=flat&amp;amp;logo=x&amp;amp;logoColor=white&quot; alt=&quot;Grok Build CLI&quot; /&gt; &lt;br /&gt; &lt;img src=&quot;https://img.shields.io/badge/Node.js-339933?style=flat&amp;amp;logo=node.js&amp;amp;logoColor=white&quot; alt=&quot;Node.js&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Go-00ADD8?style=flat&amp;amp;logo=go&amp;amp;logoColor=white&quot; alt=&quot;Go&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Playwright-2EAD33?style=flat&amp;amp;logo=playwright&amp;amp;logoColor=white&quot; alt=&quot;Playwright&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Bubble_Tea-FF75B5?style=flat&amp;amp;logo=go&amp;amp;logoColor=white&quot; alt=&quot;Bubble Tea&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/License-MIT-blue.svg?sanitize=true&quot; alt=&quot;MIT&quot; /&gt; &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/TRADEMARK.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Trademark-Policy-blue.svg?sanitize=true&quot; alt=&quot;Trademark Policy&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;What Is This&lt;/h2&gt; 
&lt;p&gt;career-ops (&lt;a href=&quot;https://career-ops.org&quot;&gt;career-ops.org&lt;/a&gt;, also known as &lt;strong&gt;careerops&lt;/strong&gt;) turns any AI coding CLI into a full job search command center. Instead of manually tracking applications in a spreadsheet, you get an AI-powered pipeline that:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Evaluates offers&lt;/strong&gt; with a structured evaluation -- blocks A-F scored across 5 weighted dimensions, plus block G, a separate posting-legitimacy assessment that never affects the 1-5 score&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Generates tailored PDFs&lt;/strong&gt; -- ATS-optimized CVs customized per job description&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Scans portals&lt;/strong&gt; automatically (Greenhouse, Ashby, Lever, company pages)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Processes in batch&lt;/strong&gt; -- evaluate 10+ offers in parallel with sub-agents&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Tracks everything&lt;/strong&gt; in a single source of truth with integrity checks&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Researches companies and finds the right person to contact&lt;/strong&gt; -- applications get you in the queue; research gets you a conversation&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Important: This is NOT a spray-and-pray tool.&lt;/strong&gt; career-ops is a filter -- it helps you find the few offers worth your time out of hundreds. The system strongly recommends against applying to anything scoring below 4.0/5. Your time is valuable, and so is the recruiter&#39;s. Always review before submitting.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;career-ops is agentic: whichever AI coding CLI you choose navigates career pages with Playwright, evaluates fit by reasoning about your CV vs the job description (not keyword matching), and adapts your resume per listing.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Heads up: the first evaluations won&#39;t be great.&lt;/strong&gt; The system doesn&#39;t know you yet. Feed it context -- your CV, your career story, your proof points, your preferences, what you&#39;re good at, what you want to avoid. The more you nurture it, the better it gets. Think of it as onboarding a new recruiter: the first week they need to learn about you, then they become invaluable.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Built by someone who used it to evaluate 740+ job offers, generate 100+ tailored CVs, and land a Head of Applied AI role. &lt;a href=&quot;https://santifer.io/career-ops-system&quot;&gt;Read the full case study&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;The CareerOps Manifesto&lt;/h2&gt; 
&lt;p&gt;career-ops is the first reference implementation of &lt;a href=&quot;https://career-ops.org/manifesto?utm_source=readme&quot;&gt;the CareerOps Manifesto&lt;/a&gt;. read it. if it says what you believe, sign it. your signature becomes a commit.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Auto-Pipeline&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Paste a URL, get a full evaluation + PDF + tracker entry&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;A-G Evaluation&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Role summary, CV match, level strategy, comp research, personalization, interview prep (STAR+R) -- plus a Block G posting-legitimacy check that flags scams and ghost jobs, and a Work-Auth signal that flags an explicit no-sponsorship JD as a hard blocker&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Interview Story Bank&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Accumulates STAR+Reflection stories across evaluations -- 5-10 master stories that answer any behavioral question&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Negotiation Scripts&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Salary negotiation frameworks, geographic discount pushback, competing offer leverage&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;ATS PDF Generation&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Keyword-injected CVs with Space Grotesk + DM Sans design&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Cover Letter Generator&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Research-backed cover letters with keyword mirroring, four interactive angle prompts (why/problems/approach/tone), draft-in-chat approval gate, and A4 PDF via the same HTML + Playwright pipeline as CVs. Auto-drafts on every evaluation; complete and generate on demand via &lt;code&gt;/career-ops cover&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Application Email Drafts&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Formal recruiter/referral/cold application emails from a report or pasted JD, with subject line, attachment checklist, source-backed fit points, and a profile-driven contact block. Draft-only -- career-ops never sends, submits, or clicks anything.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Portal Scanner&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;100+ companies pre-configured (Anthropic, OpenAI, ElevenLabs, Retool, n8n...) + custom queries across Ashby, Greenhouse, Lever, Wellfound&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Funded Company Discovery&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Review-first &lt;code&gt;company:funded&lt;/code&gt; command surfaces recently funded companies and source diagnostics from structured public feeds without editing your data&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Batch Processing&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Parallel evaluation with headless CLI workers (&lt;code&gt;claude -p&lt;/code&gt; / &lt;code&gt;opencode run&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Dashboard TUI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Terminal UI to browse, filter, and sort your pipeline&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Human-in-the-Loop&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;AI evaluates and recommends, you decide and act. The system never submits an application -- you always have the final call&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Pipeline Integrity&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Automated merge, dedup, status normalization, health checks&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Interview Suite&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Time-blocked prep plans, practice sessions with feedback, post-interview debriefs (&lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/modes/interview/README.md&quot;&gt;&lt;code&gt;interview/&lt;/code&gt;&lt;/a&gt;), and a company red-flag detector (&lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/modes/interview-redflag.md&quot;&gt;&lt;code&gt;interview-redflag&lt;/code&gt;&lt;/a&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Offer Stage&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Contract reading companion -- clause walk plus a lawyer question list (&lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/modes/offer-prep.md&quot;&gt;&lt;code&gt;offer-prep&lt;/code&gt;&lt;/a&gt;) -- and a desired/advertised/actual salary-gap analyzer (&lt;code&gt;salary-gap.mjs&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Follow-ups &amp;amp; Replies&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Follow-up cadence calculator and seeded reminders (&lt;code&gt;followup-cadence.mjs&lt;/code&gt;, &lt;code&gt;followup-seed.mjs&lt;/code&gt;); employer reply classification into tracker updates (&lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/modes/reply-watch.md&quot;&gt;&lt;code&gt;reply-watch&lt;/code&gt;&lt;/a&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Pattern Analysis&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Rejection patterns and per-ATS-channel advance rates (&lt;code&gt;analyze-patterns.mjs&lt;/code&gt;), lifetime funnel stats (&lt;code&gt;stats.mjs&lt;/code&gt;), repost/ghost-job detection (&lt;code&gt;detect-reposts.mjs&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Plugin System&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Opt-in integrations (Gmail, Notion, Apify + a community registry), disabled by default -- see &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/PLUGINS.md&quot;&gt;docs/PLUGINS.md&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Beyond the CV&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Company research (&lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/modes/deep.md&quot;&gt;&lt;code&gt;deep&lt;/code&gt;&lt;/a&gt;) surfaces AI strategy, recent moves, engineering culture, and the angle your profile should take. Contact discovery (&lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/modes/contacto.md&quot;&gt;&lt;code&gt;contacto&lt;/code&gt;&lt;/a&gt;) identifies the hiring manager, recruiter, or team peer worth reaching out to and drafts a ≤300-character LinkedIn message tuned to each contact type. Formal application email drafts (&lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/modes/email.md&quot;&gt;&lt;code&gt;email&lt;/code&gt;&lt;/a&gt;) turn an evaluated report or pasted JD into a subject line, body, and attachment checklist without sending, submitting, or clicking anything. Applications get you in the queue; research gets you a conversation.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Fastest way — one command:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx @santifer/career-ops init
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;💡 &lt;code&gt;npx&lt;/code&gt; ships with &lt;a href=&quot;https://nodejs.org&quot;&gt;Node.js&lt;/a&gt; — it runs the installer once, without installing anything globally. No Node yet? Install it first. (Already using a Claude Code / Gemini / Codex CLI? Then you already have it.)&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;This clones the latest release into &lt;code&gt;./career-ops&lt;/code&gt; and installs dependencies. Then:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd career-ops
claude   # or codex / qwen / opencode / agy / grok — open your AI CLI here
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;On first launch, career-ops walks you through setup — your CV, profile and target roles — just by chatting. Nothing to edit by hand.&lt;/strong&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Prefer to set it up manually? (git clone)&lt;/b&gt;&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/santifer/career-ops.git
cd career-ops &amp;amp;&amp;amp; npm install
npx playwright install chromium   # only needed for PDF generation

# 2. Check setup
npm run doctor                     # Validates all prerequisites

# 3. Configure
cp config/profile.example.yml config/profile.yml  # Edit with your details
cp templates/portals.example.yml portals.yml       # Customize companies

# 4. Add your CV
# Create cv.md in the project root with your CV in markdown

# 5. Open your AI CLI in this directory
claude   # or codex / opencode / qwen / agy / grok

# Then ask your CLI to adapt the system to you:
# &quot;Change the archetypes to backend engineering roles&quot;
# &quot;Translate the modes to English&quot;
# &quot;Add these 5 companies to portals.yml&quot;
# &quot;Update my profile with this CV I&#39;m pasting&quot;

# 6. Start using
# Paste a job URL or JD text to trigger auto-pipeline
# If your CLI supports slash commands, use /career-ops (or its CLI-specific alias)
# In Codex, ask for the same mode in plain language, e.g.:
# &quot;Run the career-ops scan mode&quot;
# &quot;Run the career-ops pipeline mode for data/pipeline.md&quot;
# &quot;Run the career-ops pdf mode for the latest evaluated role&quot;
# &quot;Run the career-ops tracker mode and summarize the current statuses&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;h3&gt;Global install&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm i -g @santifer/career-ops
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This installs the &lt;code&gt;career-ops&lt;/code&gt; binary globally so you can run it directly instead of via &lt;code&gt;npx&lt;/code&gt;. Unlike &lt;code&gt;npx @santifer/career-ops init&lt;/code&gt; (which bootstraps a project directory), the global install gives you a persistent &lt;code&gt;career-ops&lt;/code&gt; command available anywhere in your terminal.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Which one should you use?&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;npx @santifer/career-ops init&lt;/code&gt; — best for first use; creates a dedicated project folder.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;npm i -g @santifer/career-ops&lt;/code&gt; — best once you have a project folder and want to run career-ops commands directly.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;The system is designed to be customized by your AI coding CLI itself.&lt;/strong&gt; Modes, archetypes, scoring weights, negotiation scripts -- just ask it to change them. It reads the same files it uses, so it knows exactly what to edit.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/SETUP.md&quot;&gt;docs/SETUP.md&lt;/a&gt; for the full setup guide, &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/RUNNING_ON_A_BUDGET.md&quot;&gt;docs/RUNNING_ON_A_BUDGET.md&lt;/a&gt; for instructions on running career-ops cheaply using custom or local models (and &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/FREE_TIER.md&quot;&gt;docs/FREE_TIER.md&lt;/a&gt; for running it at zero cost on Antigravity CLI&#39;s free tier), &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/AUTOMATION.md&quot;&gt;docs/AUTOMATION.md&lt;/a&gt; for scheduling recurring scans and a zero-token triage-to-shortlist recipe, &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/APPLY_AUTOFILL.md&quot;&gt;docs/APPLY_AUTOFILL.md&lt;/a&gt; for details on the ATS auto-fill flow, and &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/FAQ.md&quot;&gt;docs/FAQ.md&lt;/a&gt; for answers to common setup questions. Design principles live in &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/ARCHITECTURE.md&quot;&gt;ARCHITECTURE.md&lt;/a&gt;; runtime flows in &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/ARCHITECTURE.md&quot;&gt;docs/ARCHITECTURE.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Antigravity CLI Integration&lt;/h2&gt; 
&lt;p&gt;career-ops supports Antigravity CLI natively, the same way it supports Claude Code and OpenCode. All slash commands are available through the shared skill entrypoint, using the same &lt;code&gt;modes/*.md&lt;/code&gt; evaluation logic.&lt;/p&gt; 
&lt;p&gt;Google has transitioned consumer Gemini CLI access to Antigravity CLI. &lt;code&gt;GEMINI.md&lt;/code&gt; is now a no-op compatibility guard so Antigravity does not duplicate the full project instructions when it reads both &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;GEMINI.md&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Native Antigravity CLI&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Run in the career-ops directory
cd career-ops
agy

# 2. Use the unified /career-ops command with subcommands:
/career-ops &quot;Senior AI Engineer at Anthropic...&quot;
/career-ops pipeline
/career-ops scan
/career-ops pdf
/career-ops tracker
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The skill is defined using the open standard in &lt;code&gt;.agents/skills/career-ops/SKILL.md&lt;/code&gt; and symlinked/referenced for each supported CLI (e.g. &lt;code&gt;.claude/&lt;/code&gt;, &lt;code&gt;.cursor/&lt;/code&gt;, &lt;code&gt;.qwen/&lt;/code&gt;, &lt;code&gt;.antigravitycli/&lt;/code&gt;, &lt;code&gt;.grok/&lt;/code&gt;).&lt;/p&gt; 
&lt;h2&gt;Codex Integration&lt;/h2&gt; 
&lt;p&gt;career-ops supports Codex through the same shared router, but the invocation model is different from CLIs that auto-register slash commands. For the full guide, see &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/CODEX.md&quot;&gt;docs/CODEX.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Interactive Codex&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd career-ops
codex
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Slash commands are not guaranteed in Codex. If &lt;code&gt;/career-ops&lt;/code&gt; is unavailable, ask Codex to run the mode directly in plain language:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123
Run the career-ops scan mode and summarize new matches.
Run the career-ops pipeline mode for data/pipeline.md.
Run the career-ops pdf mode for the latest evaluated role.
Run the career-ops tracker mode and summarize the current statuses.
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;One-shot Codex (&lt;code&gt;codex exec&lt;/code&gt;)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;codex exec &quot;Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123&quot;
codex exec &quot;Run career-ops scan mode in this repo and summarize new matches.&quot;
codex exec &quot;Run career-ops pipeline mode for data/pipeline.md.&quot;
codex exec &quot;Run career-ops pdf mode for the latest evaluated role.&quot;
codex exec &quot;Run career-ops tracker mode and summarize the current statuses.&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Grok Build CLI Integration&lt;/h2&gt; 
&lt;p&gt;career-ops supports Grok Build CLI natively, the same way it supports Claude Code and OpenCode. &lt;code&gt;AGENTS.md&lt;/code&gt; is auto-loaded as project rules, and all slash commands are available through the shared skill entrypoint.&lt;/p&gt; 
&lt;h3&gt;Native Grok Build CLI&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Run in the career-ops directory
cd career-ops
grok

# 2. Use the unified /career-ops command with subcommands:
/career-ops &quot;Senior AI Engineer at Anthropic...&quot;
/career-ops pipeline
/career-ops scan
/career-ops pdf
/career-ops tracker
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For headless batch workers, use &lt;code&gt;grok -p &quot;prompt&quot;&lt;/code&gt; (add &lt;code&gt;--yolo&lt;/code&gt; to auto-approve tool executions).&lt;/p&gt; 
&lt;h3&gt;Standalone Gemini API Script (No CLI install needed)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Get a free API key at https://aistudio.google.com/apikey
cp .env.example .env
# Edit .env, set GEMINI_API_KEY=your_key_here

# 2. Install dependencies
npm install

# 3. Evaluate a job description
node gemini-eval.mjs &quot;We are looking for a Senior AI Engineer...&quot;
node gemini-eval.mjs --file ./jds/my-job.txt
node agent-inbox.mjs add &quot;...&quot;   # queue a request for the next session
npm run gemini:eval -- &quot;JD text here&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Both options work without billing. Native CLI uses Google OAuth; the API script uses &lt;code&gt;gemini-3.6-flash&lt;/code&gt; (rate limits are model- and tier-dependent; see Google AI docs for current quotas).&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;p&gt;career-ops uses a shared command router. In CLIs that register slash commands, it looks like this:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/career-ops                → Show all available commands
/career-ops {paste a JD}   → Full auto-pipeline (evaluate + PDF + tracker)
/career-ops scan           → Scan portals for new offers
/career-ops pdf            → Generate ATS-optimized CV
/career-ops cover          → Cover letter generator (paste JD or /career-ops cover {slug})
/career-ops email          → Formal application email draft (draft-only; never sends, submits, or clicks)
/career-ops batch          → Batch evaluate multiple offers
/career-ops tracker        → View application status
/career-ops apply          → Fill application forms with AI
/career-ops outcome        → Record application outcome &amp;amp; archive artifacts
/career-ops pipeline       → Process pending URLs
/career-ops contacto       → Find hiring manager / recruiter / peer + draft a ≤300-char LinkedIn message per contact type
/career-ops deep           → Generate a structured 6-axis research prompt (AI strategy, recent moves, culture, challenges, competitors, candidate angle)
/career-ops training       → Evaluate a course/cert
/career-ops project        → Evaluate a portfolio project
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or just paste a job URL or description directly -- career-ops auto-detects it and runs the full pipeline.&lt;/p&gt; 
&lt;p&gt;In Codex, slash commands are not guaranteed. Use the same mode names in a prompt instead, or call them from &lt;code&gt;codex exec&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;How It Works&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;You paste a job URL or description
        │
        ▼
┌──────────────────┐
│  Archetype       │  Classifies: LLMOps / Agentic / PM / SA / FDE / Transformation
│  Detection       │
└────────┬─────────┘
         │
┌────────▼─────────┐
│  A-G Evaluation  │  Match, gaps, comp research, STAR stories, legitimacy
│  (reads cv.md)   │
└────────┬─────────┘
         │
    ┌────┼────┐
    ▼    ▼    ▼
 Report  PDF  Tracker
  .md   .pdf  entry
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Pre-configured Portals&lt;/h2&gt; 
&lt;p&gt;The scanner comes with &lt;strong&gt;100+ companies&lt;/strong&gt; ready to scan and &lt;strong&gt;45+ search queries&lt;/strong&gt; across major job boards. Copy &lt;code&gt;templates/portals.example.yml&lt;/code&gt; to &lt;code&gt;portals.yml&lt;/code&gt; and add your own:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;AI Labs:&lt;/strong&gt; Anthropic, OpenAI, Mistral, Cohere, LangChain, Pinecone &lt;strong&gt;Voice AI:&lt;/strong&gt; ElevenLabs, PolyAI, Parloa, Hume AI, Deepgram, Vapi, Bland AI &lt;strong&gt;AI Platforms:&lt;/strong&gt; Retool, Airtable, Vercel, Temporal, Glean, Arize AI &lt;strong&gt;Contact Center:&lt;/strong&gt; Ada, LivePerson, Sierra, Decagon, Talkdesk, Genesys &lt;strong&gt;Enterprise:&lt;/strong&gt; Salesforce, Twilio, Gong, Dialpad &lt;strong&gt;LLMOps:&lt;/strong&gt; Langfuse, Weights &amp;amp; Biases, Lindy, Cognigy, Speechmatics &lt;strong&gt;Automation:&lt;/strong&gt; n8n, Zapier, &lt;a href=&quot;http://Make.com&quot;&gt;Make.com&lt;/a&gt; &lt;strong&gt;European:&lt;/strong&gt; Factorial, Attio, Tinybird, Clarity AI, Travelperk&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Job boards searched:&lt;/strong&gt; 55+ provider modules cover ATS APIs, board-wide feeds, XML/RSS feeds, markdown feeds, and local parsers. See &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/SUPPORTED_JOB_BOARDS.md&quot;&gt;Supported job boards&lt;/a&gt; for the full table.&lt;/p&gt; 
&lt;p&gt;By default &lt;code&gt;node scan.mjs&lt;/code&gt; (a.k.a. &lt;code&gt;npm run scan&lt;/code&gt;) trusts what each ATS feed returns. Some companies leave stale postings in their public API even after the role is closed, so those expired entries can leak into &lt;code&gt;pipeline.md&lt;/code&gt;. Pass &lt;code&gt;--verify&lt;/code&gt; to launch Playwright after the API pass and drop expired postings before they hit the pipeline:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node scan.mjs --verify          # zero-token discovery + Playwright liveness check
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The verification is sequential and only runs against new offers (after dedup), so the cost stays bounded.&lt;/p&gt; 
&lt;h2&gt;Dashboard TUI&lt;/h2&gt; 
&lt;p&gt;The built-in terminal dashboard lets you browse your pipeline visually:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm run serve:dashboard   # launch the TUI
npm run build:dashboard   # optional: build the standalone binary
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Features: 6 filter tabs, 4 sort modes, grouped/flat view, lazy-loaded previews, inline status changes.&lt;/p&gt; 
&lt;p&gt;There is also an &lt;strong&gt;experimental web UI&lt;/strong&gt; (alpha, opt-in — nothing runs unless you start it): see &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/web/README.md&quot;&gt;&lt;code&gt;web/README.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Project Structure&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;career-ops/
├── AGENTS.md                    # Canonical agent instructions (all CLIs)
├── CLAUDE.md                    # Claude Code wrapper (imports AGENTS.md)
├── CODEX.md                     # Codex wrapper (imports AGENTS.md)
├── OPENCODE.md                  # OpenCode wrapper (imports AGENTS.md)
├── GEMINI.md                    # Legacy no-op guard to avoid Antigravity duplicate context
├── cv.md                        # Your CV (create this)
├── article-digest.md            # Your proof points (optional)
├── config/
│   └── profile.example.yml      # Template for your profile
├── modes/                       # Skill modes
│   ├── _shared.md               # Shared context (customize this)
│   ├── oferta.md                # Single evaluation
│   ├── pdf.md                   # PDF generation
│   ├── cover.md                 # Cover letter generation
│   ├── email.md                 # Formal application email drafts
│   ├── scan.md                  # Portal scanner
│   ├── batch.md                 # Batch processing
│   └── ...
├── templates/
│   ├── cv-template.html         # ATS-optimized CV template
│   ├── portals.example.yml      # Scanner config template
│   └── states.yml               # Canonical statuses
├── batch/
│   ├── batch-prompt.md          # Self-contained worker prompt
│   └── batch-runner.sh          # Orchestrator script
├── dashboard/                   # Go TUI pipeline viewer
├── data/                        # Your tracking data (gitignored)
├── reports/                     # Evaluation reports (gitignored)
├── output/                      # Generated PDFs (gitignored)
├── fonts/                       # Space Grotesk + DM Sans
├── docs/                        # Setup, customization, budget guide, architecture
└── examples/                    # Sample CV, report, proof points
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Tech Stack&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/Claude_Code-000?style=flat&amp;amp;logo=anthropic&amp;amp;logoColor=white&quot; alt=&quot;Claude Code&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Node.js-339933?style=flat&amp;amp;logo=node.js&amp;amp;logoColor=white&quot; alt=&quot;Node.js&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Playwright-2EAD33?style=flat&amp;amp;logo=playwright&amp;amp;logoColor=white&quot; alt=&quot;Playwright&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Go-00ADD8?style=flat&amp;amp;logo=go&amp;amp;logoColor=white&quot; alt=&quot;Go&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Bubble_Tea-FF75B5?style=flat&amp;amp;logo=go&amp;amp;logoColor=white&quot; alt=&quot;Bubble Tea&quot; /&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Agent&lt;/strong&gt;: AI coding CLI with shared skills and modes (&lt;code&gt;AGENTS.md&lt;/code&gt; + CLI wrapper)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;PDF&lt;/strong&gt;: Playwright + HTML template&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Cover letters&lt;/strong&gt;: HTML template + Playwright (A4 PDF, same pipeline as CVs)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Scanner&lt;/strong&gt;: Playwright + Greenhouse API + WebSearch&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;: Go + Bubble Tea + Lipgloss (Catppuccin Mocha theme)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Data&lt;/strong&gt;: Markdown tables + YAML config + TSV batch files&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Also Open Source&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/santifer/cv-santiago&quot;&gt;cv-santiago&lt;/a&gt;&lt;/strong&gt; -- The portfolio website (&lt;a href=&quot;http://santifer.io&quot;&gt;santifer.io&lt;/a&gt;) with AI chatbot, LLMOps dashboard, and case studies. If you need a portfolio to showcase alongside your job search, fork it and make it yours.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;FAQ&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;What is career-ops?&lt;/strong&gt; career-ops is an open-source, CLI-agnostic job-search command center. It turns any AI coding CLI into a pipeline that evaluates job offers against your CV, generates ATS-tailored PDFs, finds the right person to contact, and tracks everything in one place — while you keep the final decision. It is the first reference implementation of the CareerOps Manifesto. More at &lt;a href=&quot;https://career-ops.org&quot;&gt;career-ops.org&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Can I run career-ops for free, or on a cheaper / local model?&lt;/strong&gt; Yes. career-ops is CLI-agnostic and runs on free and local models — via OpenRouter free models, Ollama, or any OpenAI-compatible endpoint — so you are not tied to a paid subscription. See &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/RUNNING_ON_A_BUDGET.md&quot;&gt;docs/RUNNING_ON_A_BUDGET.md&lt;/a&gt; for the full setup.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;I pay for Claude Pro/Max but career-ops is burning API credits. Why?&lt;/strong&gt; Because an &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; in your environment takes precedence over your logged-in subscription: the CLI uses the key and bills per token. Run &lt;code&gt;echo $ANTHROPIC_API_KEY&lt;/code&gt;, and if it prints anything, remove it from your shell profile, restart the terminal and run &lt;code&gt;/login&lt;/code&gt;. Batch mode is the exception, since &lt;code&gt;claude -p&lt;/code&gt; workers do not use the interactive login: run &lt;code&gt;claude setup-token&lt;/code&gt; once and export the result as &lt;code&gt;CLAUDE_CODE_OAUTH_TOKEN&lt;/code&gt;. Full walkthrough in &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/RUNNING_ON_A_BUDGET.md#2b-already-paying-for-a-subscription-make-sure-you-are-using-it&quot;&gt;docs/RUNNING_ON_A_BUDGET.md&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Which AI CLIs does career-ops work with?&lt;/strong&gt; career-ops runs on any major AI coding CLI — Claude Code, Codex, Gemini / Antigravity, OpenCode, Grok, Qwen and more — through the open Agent Skill Standard, so it is never locked to a single vendor. Use the CLI you already have.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;How do I install career-ops on Windows?&lt;/strong&gt; career-ops runs on Windows. If skills fail to load with a symlink error during install, the fix is in &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/FAQ.md&quot;&gt;docs/FAQ.md&lt;/a&gt;. Full steps are in &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/docs/SETUP.md&quot;&gt;docs/SETUP.md&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Does career-ops auto-apply to jobs for me?&lt;/strong&gt; No. career-ops is a filter, not a spray-and-pray auto-applier. The AI evaluates, ranks and drafts; you review and decide. It never submits, sends, or clicks anything — you always have the final call. That human-in-the-loop design is the whole point.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Is career-ops free and open source?&lt;/strong&gt; Yes. career-ops is free and open source, and for the candidate it always will be — it is the first reference implementation of the &lt;a href=&quot;https://career-ops.org/manifesto&quot;&gt;CareerOps Manifesto&lt;/a&gt;. Read it, and if it says what you believe, sign it.&lt;/p&gt; 
&lt;h2&gt;About the Author&lt;/h2&gt; 
&lt;p&gt;I&#39;m &lt;a href=&quot;https://santifer.io/about&quot;&gt;Santiago Fernández de Valderrama Aparicio&lt;/a&gt; (santifer) -- Head of Applied AI, former founder (built and sold a business that still runs with my name on it). I built career-ops to manage my own job search. It worked: I used it to land my current role.&lt;/p&gt; 
&lt;p&gt;Curious how this repo is maintained in ~4 hours a week? Read &lt;a href=&quot;https://santifer.io/ai-agent-fleet&quot;&gt;Agentic maintenance: how career-ops is run by a fleet of AI agents&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;My portfolio and other open source projects → &lt;a href=&quot;https://santifer.io&quot;&gt;santifer.io&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Wikidata: &lt;a href=&quot;https://www.wikidata.org/wiki/Q138710224&quot;&gt;Santiago Fernández de Valderrama Aparicio&lt;/a&gt; · &lt;a href=&quot;https://www.wikidata.org/wiki/Q139007988&quot;&gt;career-ops&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Disclaimer&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;career-ops is a local, open-source tool, NOT a hosted service.&lt;/strong&gt; By using this software, you acknowledge:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;You control your data.&lt;/strong&gt; Your CV, contact info, and personal data stay on your machine and are sent directly to the AI provider you choose (Anthropic, OpenAI, etc.). We do not collect, store, or have access to any of your data.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;You control the AI.&lt;/strong&gt; The default prompts instruct the AI not to auto-submit applications, but AI models can behave unpredictably. If you modify the prompts or use different models, you do so at your own risk. &lt;strong&gt;Always review AI-generated content for accuracy before submitting.&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;You comply with third-party ToS.&lt;/strong&gt; You must use this tool in accordance with the Terms of Service of the career portals you interact with (Greenhouse, Lever, Workday, LinkedIn, etc.). Do not use this tool to spam employers or overwhelm ATS systems.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;No guarantees.&lt;/strong&gt; Evaluations are recommendations, not truth. AI models may hallucinate skills or experience. The authors are not liable for employment outcomes, rejected applications, account restrictions, or any other consequences.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/LEGAL_DISCLAIMER.md&quot;&gt;LEGAL_DISCLAIMER.md&lt;/a&gt; for full details. This software is provided under the &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/LICENSE&quot;&gt;MIT License&lt;/a&gt; &quot;as is&quot;, without warranty of any kind.&lt;/p&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;a href=&quot;https://github.com/santifer/career-ops/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=santifer/career-ops&quot; /&gt; &lt;/a&gt; 
&lt;p&gt;Every person who has shipped code, docs, translations or tests is listed in &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/CONTRIBUTORS.md&quot;&gt;CONTRIBUTORS.md&lt;/a&gt; — including non-code contributions, which the graph above cannot show.&lt;/p&gt; 
&lt;p&gt;Got hired using career-ops? &lt;a href=&quot;https://github.com/santifer/career-ops/issues/new?template=i-got-hired.yml&quot;&gt;Share your story!&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;License &amp;amp; Trademark&lt;/h2&gt; 
&lt;p&gt;The code is licensed under &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/LICENSE&quot;&gt;MIT&lt;/a&gt;. The &quot;career-ops&quot; name and brand are governed by the &lt;a href=&quot;https://raw.githubusercontent.com/santifer/career-ops/main/TRADEMARK.md&quot;&gt;Trademark Policy&lt;/a&gt;, permissive for community use, reserved for commercial product naming and endorsement.&lt;/p&gt; 
&lt;h2&gt;Let&#39;s Connect&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://santifer.io&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/santifer.io-000?style=for-the-badge&amp;amp;logo=safari&amp;amp;logoColor=white&quot; alt=&quot;Website&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://linkedin.com/in/santifer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/LinkedIn-0A66C2?style=for-the-badge&amp;amp;logo=linkedin&amp;amp;logoColor=white&quot; alt=&quot;LinkedIn&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://x.com/santifer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/X-000?style=for-the-badge&amp;amp;logo=x&amp;amp;logoColor=white&quot; alt=&quot;X&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/8pRpHETxa4&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;mailto:hi@santifer.io&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Email-EA4335?style=for-the-badge&amp;amp;logo=gmail&amp;amp;logoColor=white&quot; alt=&quot;Email&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>techjarves/Uncensored-Local-Studio</title>
      <link>https://github.com/techjarves/Uncensored-Local-Studio</link>
      <description>&lt;p&gt;Uncensored local AI studio for Windows, Linux, and macOS. Zero-setup GUI for Image Generation, GGUF LLMs, Text to Speech &amp; Speech to Text&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Uncensored AI Studio&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;A premium, zero-configuration local AI studio and offline GUI for Stable Diffusion (Image Generation), LLMs (Chat), Whisper (Speech-to-Text), and Kokoro (Text-to-Speech). Powered by hardware-accelerated GPU and NPU execution on Windows, Linux, and macOS.&lt;/strong&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Offline-100%25-green?style=for-the-badge&amp;amp;logo=offline&quot; alt=&quot;100% Offline&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-blue?style=for-the-badge&quot; alt=&quot;Platforms&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/License-MIT-orange?style=for-the-badge&quot; alt=&quot;License&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; 🎥 &lt;strong&gt;Watch the Setup &amp;amp; Demo Video:&lt;/strong&gt; &lt;a href=&quot;https://youtu.be/yeFvP3SWMak&quot;&gt;https://youtu.be/yeFvP3SWMak&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://youtu.be/yeFvP3SWMak&quot;&gt; &lt;img src=&quot;https://img.youtube.com/vi/yeFvP3SWMak/maxresdefault.jpg&quot; alt=&quot;Uncensored AI Studio Video Tutorial&quot; width=&quot;800&quot; style=&quot;border-radius: 8px;&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📖 Table of Contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#what-is-uncensored-ai-studio&quot;&gt;What is Uncensored AI Studio?&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#key-features&quot;&gt;Key Features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#workspace-architecture&quot;&gt;Workspace &amp;amp; Engine Architecture&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#supported-models&quot;&gt;Supported Models&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#folder-architecture&quot;&gt;Folder Architecture&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#getting-started&quot;&gt;Getting Started&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#windows-setup&quot;&gt;Windows Setup&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#linux-setup&quot;&gt;Linux Setup&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#macos-setup&quot;&gt;macOS Setup&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#hardware-compatibility-acceleration&quot;&gt;Hardware Compatibility &amp;amp; Acceleration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#troubleshooting-faq&quot;&gt;Troubleshooting &amp;amp; FAQ&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#building-from-source&quot;&gt;Building From Source&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#licensing&quot;&gt;Licensing&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;what-is-uncensored-ai-studio&quot;&gt;&lt;/a&gt;📖 What is Uncensored AI Studio?&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Uncensored AI Studio&lt;/strong&gt; is a completely offline, zero-setup, self-contained AI studio for Windows, Linux, and macOS. Unlike cloud-based AI systems, it runs entirely on your own hardware with no censorship, tracking, subscriptions, or login requirements.&lt;/p&gt; 
&lt;p&gt;It unifies four major local AI capabilities into one high-performance desktop interface:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;🎨 Image Generation (Stable Diffusion):&lt;/strong&gt; Generate and edit high-quality images offline using &lt;code&gt;.safetensors&lt;/code&gt;, &lt;code&gt;.gguf&lt;/code&gt;, or &lt;code&gt;.ckpt&lt;/code&gt; model weights.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;💬 Text Chat (LLMs):&lt;/strong&gt; Converse privately with open-source language models (GGUF format) powered by official, high-performance &lt;code&gt;llama.cpp&lt;/code&gt; backends.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🎙️ Speech-to-Text (Whisper):&lt;/strong&gt; Transcribe voice recordings and speech to text in real-time with an integrated &lt;code&gt;whisper.cpp&lt;/code&gt; engine.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🗣️ Text-to-Speech (Kokoro TTS):&lt;/strong&gt; Convert text outputs into highly natural, lifelike vocal audio offline using the &lt;code&gt;Kokoro-82M&lt;/code&gt; ONNX model.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;key-features&quot;&gt;&lt;/a&gt;🌟 Key Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;100% Offline &amp;amp; Private:&lt;/strong&gt; Run inferences locally. No internet, telemetry, cloud logging, or API keys required.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zero-Install Portability:&lt;/strong&gt; Entire runtime (Node.js, models, GPU backends) is self-contained. Zero global system environment changes.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Auto-Configured Acceleration:&lt;/strong&gt; Auto-detects hardware specs to load CUDA (Nvidia), ROCm (AMD), Vulkan (Intel/AMD/NVIDIA), Metal (macOS), or OpenVINO (Intel NPU) backends.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Integrated Model Manager:&lt;/strong&gt; Paste Hugging Face URLs to download weights directly, or drag-and-drop local weights to import them.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Live Performance Monitor:&lt;/strong&gt; Track CPU, RAM, GPU, and VRAM utilization in real-time directly inside the web UI.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Local Output Gallery:&lt;/strong&gt; Saves generated images side-by-side with prompt parameters and metadata JSON files.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;workspace-architecture&quot;&gt;&lt;/a&gt;⚙️ Workspace &amp;amp; Engine Architecture&lt;/h2&gt; 
&lt;p&gt;To avoid exhausting system RAM or VRAM, text and image engines are mutually exclusive by default. You can switch between workspaces inside the UI:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Image Generation Workspace:&lt;/strong&gt; Uses a dedicated &lt;code&gt;stable-diffusion.cpp&lt;/code&gt; backend node. Model weights are stored in &lt;code&gt;app/models/&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Text Chat Workspace:&lt;/strong&gt; Uses a portable &lt;code&gt;llama.cpp&lt;/code&gt; server backend. Model weights (.gguf) are stored in &lt;code&gt;app/llm-models/&lt;/code&gt;. A small Qwen2.5 Coder starter model can be downloaded directly from the Text Chat panel.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Speech Worker (Whisper):&lt;/strong&gt; Runs a localized &lt;code&gt;whisper-cli&lt;/code&gt; process to convert your vocal input to text.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Audio Output (Kokoro TTS):&lt;/strong&gt; Utilizes &lt;code&gt;kokoro-js&lt;/code&gt; locally on the server side to read responses in natural voices.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;supported-models&quot;&gt;&lt;/a&gt;Supported Models&lt;/h2&gt; 
&lt;p&gt;The app is designed around single-file local models that can be loaded directly by the bundled backend engines.&lt;/p&gt; 
&lt;h3&gt;Image generation&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Model type&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Supported&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Put files in&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Notes&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Stable Diffusion 1.5 checkpoints&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;app/models/&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Best compatibility. Use &lt;code&gt;.safetensors&lt;/code&gt; or &lt;code&gt;.ckpt&lt;/code&gt; files.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SDXL checkpoints&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Yes&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;app/models/&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Supported as single-file checkpoints. Requires more RAM/VRAM than SD 1.5.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Single-file SD/SDXL GGUF checkpoints&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Limited&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;app/models/&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Only complete single-file checkpoints are supported.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;OpenVINO image model folders&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Intel NPU only&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;app/openvino-models/&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Download from the Model Manager after running the OpenVINO setup.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CoreML image models&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Apple Silicon only&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;app/models/&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Requires macOS on Apple Silicon and the CoreML setup path.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Flux, HiDream, Hunyuan, Wan, Qwen Image, Z-Image workflows&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;No&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;N/A&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;These usually require separate diffusion, VAE, and text encoder files and are not one-click checkpoint loads in this app.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;LoRA, ControlNet, VAE-only, text-encoder-only, or diffusion-only files&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;No&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;N/A&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Companion files are not loaded as standalone image models.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Known-good image models available from the Model Manager:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Name&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Filename&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Type&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Approx. size&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Recommended use&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Juggernaut XL v9 Lightning&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;Juggernaut_RunDiffusionPhoto2_Lightning_4Steps.safetensors&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SDXL&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;6.6 GB&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;High-quality photorealism on mid/high tier machines.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;DreamShaper XL Lightning&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DreamShaperXL_Lightning.safetensors&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SDXL&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;6.6 GB&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;General SDXL images, fantasy, renders, and illustration.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;DreamShaper 8&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;DreamShaper_8_pruned.safetensors&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SD 1.5&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;2.1 GB&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Faster, lower-memory image generation.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CyberRealistic V8&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;CyberRealistic_V8_FP16.safetensors&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SD 1.5&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;2.0 GB&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Realistic SD 1.5 images and lower-memory systems.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Rev Animated&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;rev-animated-v1-2-2.safetensors&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;SD 1.5&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;2.0 GB&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Stylized/anime SD 1.5 images.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;LCM DreamShaper OpenVINO&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;OpenVINO/LCM_Dreamshaper_v7-fp16-ov&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;OpenVINO&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;2.7 GB&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Intel Core Ultra NPU test model.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Text, speech, and TTS&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Workspace&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Supported model files&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Put files in&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Notes&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Text Chat&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;.gguf&lt;/code&gt; llama.cpp models&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;app/llm-models/&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Use single-file GGUF chat/instruct models. Vision models may also require a matching &lt;code&gt;mmproj&lt;/code&gt; file.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Speech-to-Text&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;whisper.cpp &lt;code&gt;.bin&lt;/code&gt; models&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;app/speech-models/&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Use Whisper GGML/whisper.cpp model files.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Text-to-Speech&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Kokoro &lt;code&gt;.json&lt;/code&gt; manifests and model assets&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;app/tts-models/&lt;/code&gt; / &lt;code&gt;app/tts-runtime/&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Use the built-in Kokoro setup and Model Manager entries.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;Linux release binaries are built for Ubuntu 24.04-era systems and require &lt;code&gt;glibc 2.38+&lt;/code&gt; plus &lt;code&gt;GLIBCXX_3.4.32+&lt;/code&gt;. On older Ubuntu/Debian VMs, a model such as CyberRealistic may be valid but the backend can still fail before loading it. Upgrade the VM OS or build the backend from source.&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;folder-architecture&quot;&gt;&lt;/a&gt;📁 Folder Architecture&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;Uncensored-AI-Studio/
├── windows.bat                # Windows Launcher (Double-click entrypoint)
├── linux.sh                   # Linux Launcher (Terminal entrypoint)
├── mac.sh                     # macOS Launcher (Terminal entrypoint)
├── LICENSE                    # MIT Open Source License
├── .gitignore                 # Excludes models and output images from version control
├── README.md                  # Detailed system documentation
├── scripts/
│   ├── setup/                 # Platform setup and backend installers
│   ├── reset/                 # Clean install &amp;amp; environment repair
│   ├── server/                # UI web server and backend lifecycle manager
│   ├── workers/               # Local worker processes
│   ├── build/                 # Optional source build helpers
│   └── config/                # Runtime configuration catalogs
└── app/
    ├── frontend/              # UI source code (Vite + React)
    ├── models/                # Place image weights here (.safetensors, .gguf, .ckpt)
    ├── llm-models/            # Place text GGUF weights here
    └── outputs/               # Saved images and parameters metadata
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;getting-started&quot;&gt;&lt;/a&gt;🚀 Getting Started&lt;/h2&gt; 
&lt;p&gt;Ensure you have a modern web browser installed. Follow the quick guide below for your platform:&lt;/p&gt; 
&lt;h3&gt;Windows Setup&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Launch:&lt;/strong&gt; Double-click &lt;strong&gt;&lt;code&gt;windows.bat&lt;/code&gt;&lt;/strong&gt;.
  &lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
   &lt;p class=&quot;markdown-alert-title&quot;&gt;
    &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
     &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
    &lt;/svg&gt;Note&lt;/p&gt;
   &lt;p&gt;On the first run, the script will automatically download a portable Node.js runtime and configure pre-compiled GPU/CPU backend binaries.&lt;/p&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Add Models:&lt;/strong&gt; Drop &lt;code&gt;.safetensors&lt;/code&gt;, &lt;code&gt;.gguf&lt;/code&gt;, or &lt;code&gt;.ckpt&lt;/code&gt; weights into &lt;code&gt;app/models/&lt;/code&gt; (or download them via the &lt;strong&gt;Model Manager&lt;/strong&gt; tab in the UI).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Generate:&lt;/strong&gt; Open &lt;code&gt;http://localhost:1420&lt;/code&gt; in your browser, select your model, and write a prompt.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Linux Setup&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Make executable:&lt;/strong&gt; Open a terminal in the project folder and make the script executable:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;chmod +x linux.sh
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Launch:&lt;/strong&gt; Run &lt;strong&gt;&lt;code&gt;./linux.sh&lt;/code&gt;&lt;/strong&gt;. 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;NVIDIA GPU Users:&lt;/strong&gt; You will be prompted to set up the high-performance &lt;strong&gt;CUDA&lt;/strong&gt; backend (downloads prebuilt or automatically compiles from source as a fallback).&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;AMD Radeon Performance:&lt;/strong&gt; Run with &lt;strong&gt;&lt;code&gt;./linux.sh --max-perf&lt;/code&gt;&lt;/strong&gt; to add the ROCm backend (~1.3 GB download).&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Intel Core Ultra NPU:&lt;/strong&gt; Run with &lt;strong&gt;&lt;code&gt;./linux.sh --setup-openvino&lt;/code&gt;&lt;/strong&gt; to configure Intel NPU support (requires Intel Linux NPU driver).&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Add Models:&lt;/strong&gt; Drop your weights into &lt;code&gt;app/models/&lt;/code&gt; or download them via the &lt;strong&gt;Model Manager&lt;/strong&gt; tab.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Generate:&lt;/strong&gt; Open &lt;code&gt;http://localhost:1420&lt;/code&gt; in your browser.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;macOS Setup&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Make executable:&lt;/strong&gt; Open a terminal in the project folder and make the script executable:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;chmod +x mac.sh
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Launch:&lt;/strong&gt; Run &lt;strong&gt;&lt;code&gt;./mac.sh&lt;/code&gt;&lt;/strong&gt;.
  &lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
   &lt;p class=&quot;markdown-alert-title&quot;&gt;
    &lt;svg class=&quot;octicon octicon-report mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
     &lt;path d=&quot;M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
    &lt;/svg&gt;Important&lt;/p&gt;
   &lt;p&gt;The prebuilt macOS backend is optimized for &lt;strong&gt;Apple Silicon (M1 or newer)&lt;/strong&gt; and uses &lt;strong&gt;Metal&lt;/strong&gt; GPU acceleration. &lt;em&gt;(macOS Intel hardware is completely unsupported)&lt;/em&gt;.&lt;/p&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Add Models:&lt;/strong&gt; Drop your weights into &lt;code&gt;app/models/&lt;/code&gt; or download them via the &lt;strong&gt;Model Manager&lt;/strong&gt; tab.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Generate:&lt;/strong&gt; Open &lt;code&gt;http://localhost:1420&lt;/code&gt; in your browser.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;hardware-compatibility-acceleration&quot;&gt;&lt;/a&gt;🖥️ Hardware Compatibility &amp;amp; Acceleration&lt;/h2&gt; 
&lt;h3&gt;Windows&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;GPU Vendor&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Tech&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Status&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Notes&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Nvidia&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CUDA&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅ Native&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maps &lt;code&gt;sd-cuda.exe&lt;/code&gt; with Nvidia SDK 12 optimizations.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;AMD Radeon&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Vulkan&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅ Native&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maps &lt;code&gt;sd-vulkan.exe&lt;/code&gt; with Vulkan API acceleration.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Intel Arc&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Vulkan&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;✅ Native&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Maps &lt;code&gt;sd-vulkan.exe&lt;/code&gt; for Intel hardware.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Integrated / None&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CPU&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;⚠️ Fallback&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Runs on logical CPU threads (slow).&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Linux&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;GPU Vendor&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Primary&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Fallback&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Notes&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;NVIDIA&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CUDA / Vulkan&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Vulkan / CPU&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Auto-detects NVIDIA. Prompt-driven CUDA setup downloads prebuilt or compiles from source. Falls back to Vulkan for GTX.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;AMD Radeon&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;ROCm&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Vulkan&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;ROCm provides best AMD performance when host ROCm drivers are available.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Intel Arc / integrated&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Vulkan&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CPU&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Cross-vendor Vulkan support.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Intel Core Ultra NPU&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;OpenVINO NPU&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CPU&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Requires the Intel Linux NPU driver, kernel 6.6+, Python 3, and &lt;code&gt;./linux.sh --setup-openvino&lt;/code&gt;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Integrated / None&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CPU&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Runs on logical CPU threads (slow).&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;macOS&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Hardware&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Primary&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Fallback&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Notes&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Apple Silicon (M1 or newer)&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Metal&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;CPU&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Uses the official Darwin arm64 stable-diffusion.cpp backend.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;System Requirements &amp;amp; Notes:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;64-bit Windows 10 or Windows 11&lt;/strong&gt; is required for the portable Node.js 22 runtime used by the Windows launcher.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;glibc 2.38 or newer&lt;/strong&gt; is required for the prebuilt Linux backends (Ubuntu 24.04, Fedora 40+, etc.). The setup script will warn you if your glibc is older.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Linux runtime libraries:&lt;/strong&gt; The prebuilt backends require &lt;code&gt;libgomp.so.1&lt;/code&gt;; Vulkan additionally requires &lt;code&gt;libvulkan.so.1&lt;/code&gt; and a working GPU driver. The setup script now checks these before installing a backend and prints the exact distro package command when one is missing.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Linux OpenVINO NPU:&lt;/strong&gt; Intel Core Ultra, x86_64 Linux, kernel 6.6+, a working &lt;code&gt;/dev/accel/accel0&lt;/code&gt; device, Python 3 with &lt;code&gt;venv&lt;/code&gt;, and the Intel Linux NPU driver are required.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;troubleshooting-faq&quot;&gt;&lt;/a&gt;🛠️ Troubleshooting &amp;amp; FAQ&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt; Reset Environment: If a build fails or you want to clear dependencies&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Run &lt;code&gt;scripts/reset/reset.ps1&lt;/code&gt; (Windows) or &lt;code&gt;scripts/reset/reset.sh&lt;/code&gt; (Linux/macOS). This will clear temporary compilation and package caches to repair your environment. &lt;em&gt;(Note: This preserves your model weights and generated output images).&lt;/em&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt; Linux backends fail to start with &lt;code&gt;GLIBC_2.38 not found&lt;/code&gt;&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;The prebuilt binaries require glibc 2.38+ (e.g. Ubuntu 24.04). If your distribution uses an older glibc version, you can upgrade your operating system or compile the backend from source (see the &lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/#building-from-source&quot;&gt;Building From Source&lt;/a&gt; guide below).&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt; Port Conflicts: Default port address already busy&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;The web user interface runs on port &lt;code&gt;1420&lt;/code&gt; by default. The GPU backend manager attempts to bind to port &lt;code&gt;8080&lt;/code&gt; first, then automatically detects and falls back to a free system port if &lt;code&gt;8080&lt;/code&gt; is already occupied.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt; Linux ROCm not loading for AMD Radeon GPUs&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Ensure your AMD GPU hardware and host kernel are fully compatible with ROCm 7.13. If ROCm fails to initialize correctly, the application will automatically fall back to Vulkan acceleration.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt; Linux uses the integrated GPU instead of the discrete GPU&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;On dual-GPU Linux systems, Vulkan device order can put the integrated Intel GPU at &lt;code&gt;vulkan0&lt;/code&gt; and the discrete AMD/NVIDIA GPU at &lt;code&gt;vulkan1&lt;/code&gt;. The launcher now tries to prefer a discrete Vulkan device when &lt;code&gt;vulkaninfo --summary&lt;/code&gt; is available. To force a device manually, start the app with &lt;code&gt;SD_VULKAN_DEVICE=vulkan1 ./linux.sh&lt;/code&gt; or use another index such as &lt;code&gt;vulkan0&lt;/code&gt;/&lt;code&gt;vulkan2&lt;/code&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt; Windows exits with code &lt;code&gt;3221225781&lt;/code&gt; (0xC0000135)&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;This code means Windows could not locate a required backend DLL:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;For AMD/Intel Vulkan:&lt;/strong&gt; Update your GPU driver to one with full Vulkan runtime support, then rerun the setup script to restore &lt;code&gt;app/backend/win/vulkan/&lt;/code&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;For NVIDIA CUDA:&lt;/strong&gt; Install or update your NVIDIA graphics driver, then rerun the setup script to restore the CUDA runtime DLLs.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt; Generation shows &quot;server is not responding or crashed&quot;&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;This indicates that the local backend engine process terminated. Check your launch terminal (where you executed &lt;code&gt;windows.bat&lt;/code&gt;, &lt;code&gt;./linux.sh&lt;/code&gt;, or &lt;code&gt;./mac.sh&lt;/code&gt;) for the exact console error. Common causes include glibc version mismatches, missing Vulkan drivers, or system out-of-memory (OOM) issues.&lt;/p&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;building-from-source&quot;&gt;&lt;/a&gt;🔨 Building From Source&lt;/h2&gt; 
&lt;p&gt;The setup script (&lt;code&gt;scripts/setup/setup.sh&lt;/code&gt;) now automates building and setting up the CUDA backend from source when selected. If you want to manually build all backends (CPU, Vulkan, and CUDA) at once, you can run the included &lt;code&gt;scripts/build/build_from_source.sh&lt;/code&gt; script.&lt;/p&gt; 
&lt;p&gt;For macOS, the included &lt;code&gt;scripts/build/build_from_source.sh&lt;/code&gt; builds the Metal backend and copies it to &lt;code&gt;app/backend/mac/sd&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Requirements&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;git&lt;/code&gt;, &lt;code&gt;cmake&lt;/code&gt;, &lt;code&gt;make&lt;/code&gt; (or &lt;code&gt;ninja&lt;/code&gt;), and a C++17 compiler (&lt;code&gt;g++&lt;/code&gt; / &lt;code&gt;clang++&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;For &lt;strong&gt;CUDA&lt;/strong&gt;: the NVIDIA CUDA toolkit (&lt;code&gt;nvcc&lt;/code&gt;) must be on your &lt;code&gt;PATH&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;For &lt;strong&gt;Vulkan&lt;/strong&gt;: the Vulkan SDK / loader, a compatible driver, and &lt;code&gt;glslc&lt;/code&gt; (Ubuntu/Debian package: &lt;code&gt;glslc&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;For &lt;strong&gt;ROCm&lt;/strong&gt;: AMD ROCm development libraries.&lt;/li&gt; 
 &lt;li&gt;For &lt;strong&gt;macOS Metal&lt;/strong&gt;: Apple Command Line Tools or Xcode.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Build commands&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Clone upstream
git clone https://github.com/leejet/stable-diffusion.cpp.git
cd stable-diffusion.cpp
mkdir build &amp;amp;&amp;amp; cd build

# 2. Configure for your backend (pick ONE)
# CPU only
cmake .. -DSD_BUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release

# CUDA
cmake .. -DSD_CUDA=ON -DSD_BUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release

# Vulkan
cmake .. -DSD_VULKAN=ON -DSD_BUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release

# ROCm
cmake .. -DSD_HIPBLAS=ON -DSD_BUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release

# macOS Metal
cmake .. -DSD_METAL=ON -DSD_BUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release

# 3. Build
cmake --build . --config Release -j$(getconf _NPROCESSORS_ONLN 2&amp;gt;/dev/null || sysctl -n hw.ncpu)

# 4. Copy the binaries into this project
cp bin/sd* /path/to/Uncensored-AI-Studio/app/backend/linux/&amp;lt;backend&amp;gt;/
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;After copying, rename the server binary to match what &lt;code&gt;scripts/server/serve.cjs&lt;/code&gt; expects:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Vulkan: &lt;code&gt;sd&lt;/code&gt; → &lt;code&gt;sd-vulkan&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;ROCm: &lt;code&gt;sd&lt;/code&gt; → &lt;code&gt;sd-rocm&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Then restart the app with &lt;code&gt;./linux.sh&lt;/code&gt; (Linux) or &lt;code&gt;./mac.sh&lt;/code&gt; (macOS).&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;&lt;a id=&quot;licensing&quot;&gt;&lt;/a&gt;📝 License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the MIT License - see the &lt;a href=&quot;https://raw.githubusercontent.com/techjarves/Uncensored-Local-Studio/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file. Bundles &lt;a href=&quot;https://github.com/leejet/stable-diffusion.cpp&quot;&gt;stable-diffusion.cpp&lt;/a&gt; (MIT License). Model weights are subject to their respective creators&#39; licenses.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>bmad-code-org/BMAD-METHOD</title>
      <link>https://github.com/bmad-code-org/BMAD-METHOD</link>
      <description>&lt;p&gt;Breakthrough Method for Agile Ai Driven Development&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/main/banner-bmad-method.png&quot; alt=&quot;BMad Method&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Agile Ai Driven Development — turn an idea or change request into working software without giving up the thinking.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Ai Driven Development (AiDD) covers the whole effort, not only the code: what to build, how it holds together, and how it changes as you learn. BMad Method is the agile way to do it — decisions stay explicit, context carries forward, and the process sizes itself to the work. Small changes go straight to build. Complex work gets the depth it needs. The same method covers a weekend prototype and a system with years of history behind it.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/main/docs/images/bmad-delivery-loop.svg?sanitize=true&quot; alt=&quot;The BMad delivery loop: a vague notion starts at Clarify, a big clear idea at Plan, and a small change at Build and verify; Learn and adjust loops back to Plan&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;Start anywhere. Use BMad end to end, or carry its briefs, specifications, and architecture into your existing delivery workflow.&lt;/em&gt;&lt;/p&gt; 
&lt;h2&gt;Start Building&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; &lt;a href=&quot;https://nodejs.org&quot;&gt;Node.js&lt;/a&gt; 20.12+, &lt;a href=&quot;https://www.python.org&quot;&gt;Python&lt;/a&gt; 3.10+, and &lt;a href=&quot;https://docs.astral.sh/uv/&quot;&gt;uv&lt;/a&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx bmad-method install
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open your project in your AI coding tool, invoke &lt;code&gt;bmad-build&lt;/code&gt; with what you want to change, and keep making the decisions that matter. Run &lt;code&gt;bmad-help&lt;/code&gt; whenever you want guidance on what comes next or what is optional.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.bmad-method.org/tutorials/getting-started/&quot;&gt;Build your first project with BMad →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.bmad-method.org/how-to/established-projects/&quot;&gt;Add BMad to an existing codebase →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;BMad is free and open source, with no paywalled workflows or gated community. For prerelease builds, CI/CD, configuration overrides, and non-interactive setup, see the &lt;a href=&quot;https://docs.bmad-method.org/how-to/install-bmad/&quot;&gt;installation guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Why BMad?&lt;/h2&gt; 
&lt;p&gt;Coding assistants are effective at implementation, but they often turn unstated assumptions into code. BMad keeps you in control while its agents and workflows make the important decisions explicit and preserve them as context for the work that follows.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Right-sized process&lt;/strong&gt; — Go directly to implementation for clear changes or add deeper planning for larger initiatives.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;New or existing code&lt;/strong&gt; — Start from nothing, or establish verified context on a codebase you inherited and work from what is actually there.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Durable context&lt;/strong&gt; — Carry product and technical decisions forward instead of re-explaining them in every chat.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Specialized perspectives&lt;/strong&gt; — Bring in product, architecture, UX, development, and testing expertise when it helps.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Guided collaboration&lt;/strong&gt; — Use structured workflows and multiple-agent discussions without handing over judgment.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;One delivery path&lt;/strong&gt; — Move from early thinking through reviewed implementation, correction, and learning.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://docs.bmad-method.org/reference/workflow-map/&quot;&gt;See how the workflows fit together →&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;BMad Ecosystem&lt;/h2&gt; 
&lt;p&gt;Install the core method or add official modules for specialized work.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Purpose&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/bmad-code-org/BMAD-METHOD&quot;&gt;BMad Method&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Plan and deliver software, from new prototypes to established codebases&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/bmad-code-org/bmad-builder&quot;&gt;BMad Builder&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Skill, workflow, and agent builder&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite&quot;&gt;BMad Creative Intelligence Suite&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Creative thinking partners for innovation, design thinking, and storytelling&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise&quot;&gt;BMad Test Architect&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Enterprise testing add-on for BMad Method&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/bmad-code-org/bmad-loop&quot;&gt;BMad Loop&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Builds, verifies, and retros a whole epic unattended&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/bmad-code-org/bmad-module-game-dev-studio&quot;&gt;BMad Game Dev Studio&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Ideate, design, and build games in any framework, including Unity, Unreal, Godot, and Phaser&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Plan on the Web&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://bmadcode.com/web-bundles/&quot;&gt;Web bundles&lt;/a&gt; package selected BMad workflows as Google Gemini Gems and ChatGPT Custom GPTs. Use them for planning in your existing web subscription, then bring the resulting artifacts into your AI coding tool for implementation.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.bmad-method.org/tutorials/getting-started/&quot;&gt;Getting Started&lt;/a&gt;&lt;/strong&gt; — Install BMad and build a small project.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.bmad-method.org/reference/workflow-map/&quot;&gt;Workflow Map&lt;/a&gt;&lt;/strong&gt; — Understand the available paths and outputs.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.bmad-method.org/how-to/established-projects/&quot;&gt;Established Projects&lt;/a&gt;&lt;/strong&gt; — Add BMad to an existing codebase.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.bmad-method.org/how-to/upgrade-to-v6/&quot;&gt;Upgrade to V6&lt;/a&gt;&lt;/strong&gt; — Migrate from an earlier version.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Roadmap&lt;/h2&gt; 
&lt;p&gt;See what is in progress and what is planned on the &lt;a href=&quot;https://docs.bmad-method.org/roadmap/&quot;&gt;public roadmap&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/gk8jAdXWmj&quot;&gt;Discord&lt;/a&gt; — Get help, share ideas, and collaborate.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://youtube.com/@BMadCode&quot;&gt;YouTube&lt;/a&gt; — Watch tutorials and master classes.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bmad-code-org/BMAD-METHOD/issues&quot;&gt;GitHub Issues&lt;/a&gt; — Report bugs and request features.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bmad-code-org/BMAD-METHOD/discussions&quot;&gt;GitHub Discussions&lt;/a&gt; — Join longer community conversations.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://bmadcode.com&quot;&gt;BMad Code&lt;/a&gt; — Explore the wider ecosystem.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Support and Contributing&lt;/h2&gt; 
&lt;p&gt;BMad is free for everyone and always will be. Star the repository, &lt;a href=&quot;https://buymeacoffee.com/bmad&quot;&gt;buy me a coffee&lt;/a&gt;, or email &lt;a href=&quot;mailto:contact@bmadcode.com&quot;&gt;contact@bmadcode.com&lt;/a&gt; for corporate sponsorship.&lt;/p&gt; 
&lt;p&gt;Contributions are welcome. Read &lt;a href=&quot;https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; before opening a pull request.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT License — see &lt;a href=&quot;https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; for details.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;BMad&lt;/strong&gt; and &lt;strong&gt;BMAD-METHOD&lt;/strong&gt; are trademarks of BMad Code, LLC. See &lt;a href=&quot;https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/main/TRADEMARK.md&quot;&gt;TRADEMARK.md&lt;/a&gt; for details.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/bmad-code-org/BMAD-METHOD/graphs/contributors&quot;&gt;&lt;img src=&quot;https://contrib.rocks/image?repo=bmad-code-org/BMAD-METHOD&quot; alt=&quot;Contributors&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/main/CONTRIBUTORS.md&quot;&gt;CONTRIBUTORS.md&lt;/a&gt; for contributor information.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/bmad-method&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/bmad-method?color=blue&amp;amp;label=version&quot; alt=&quot;Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-MIT-yellow.svg?sanitize=true&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/gk8jAdXWmj&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-Join%20Community-7289da?logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>coreyhaines31/marketingskills</title>
      <link>https://github.com/coreyhaines31/marketingskills</link>
      <description>&lt;p&gt;Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Marketing Skills for AI Agents&lt;/h1&gt; 
&lt;p&gt;A collection of AI agent skills focused on marketing tasks. Built for technical marketers and founders who want AI coding agents to help with conversion optimization, copywriting, SEO, analytics, and growth engineering. Works with Claude Code, OpenAI Codex, Cursor, Windsurf, and any agent that supports the &lt;a href=&quot;https://agentskills.io&quot;&gt;Agent Skills spec&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Built by &lt;a href=&quot;https://corey.co?ref=marketingskills&quot;&gt;Corey Haines&lt;/a&gt;. Need hands-on help? Check out &lt;a href=&quot;https://conversionfactory.co?ref=marketingskills&quot;&gt;Conversion Factory&lt;/a&gt; — Corey&#39;s agency for conversion optimization, landing pages, and growth strategy. Want to learn more about marketing? Subscribe to &lt;a href=&quot;https://swipefiles.com?ref=marketingskills&quot;&gt;Swipe Files&lt;/a&gt;. Want to get dangerously good at using AI for marketing? Check out &lt;a href=&quot;https://conversionfactory.co/offers/ai-marketing-training?ref=marketingskills&quot;&gt;AI Marketing Training&lt;/a&gt;. Want an autonomous AI agent that uses these skills to be your CMO? Try &lt;a href=&quot;https://magistermarketing.com?ref=marketingskills&quot;&gt;Magister&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;New to the terminal and coding agents? Check out the companion guide &lt;a href=&quot;https://codingformarketers.com?ref=marketingskills&quot;&gt;Coding for Marketers&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Contributions welcome!&lt;/strong&gt; Found a way to improve a skill or have a new one to add? &lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/#contributing&quot;&gt;Open a PR&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Run into a problem or have a question? &lt;a href=&quot;https://github.com/coreyhaines31/marketingskills/issues&quot;&gt;Open an issue&lt;/a&gt; — we&#39;re happy to help.&lt;/p&gt; 
&lt;h2&gt;What are Skills?&lt;/h2&gt; 
&lt;p&gt;Skills are markdown files that give AI agents specialized knowledge and workflows for specific tasks. When you add these to your project, your agent can recognize when you&#39;re working on a marketing task and apply the right frameworks and best practices.&lt;/p&gt; 
&lt;h2&gt;How Skills Work Together&lt;/h2&gt; 
&lt;p&gt;Skills reference each other and build on shared context. The &lt;code&gt;product-marketing&lt;/code&gt; skill is the foundation — every other skill checks it first to understand your product, audience, and positioning before doing anything.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;                            ┌──────────────────────────────────────┐
                            │          product-marketing           │
                            │    (read by all other skills first)  │
                            └──────────────────┬───────────────────┘
                                               │
    ┌──────────────┬─────────────┬─────────────┼─────────────┬──────────────┬──────────────┐
    ▼              ▼             ▼             ▼             ▼              ▼              ▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐ ┌──────────┐ ┌─────────────┐ ┌───────────┐
│  SEO &amp;amp;   │ │   CRO    │ │Content &amp;amp; │ │  Paid &amp;amp;    │ │ Growth &amp;amp; │ │  Sales &amp;amp;    │ │ Strategy  │
│ Content  │ │          │ │   Copy   │ │Measurement │ │Retention │ │    GTM      │ │           │
├──────────┤ ├──────────┤ ├──────────┤ ├────────────┤ ├──────────┤ ├─────────────┤ ├───────────┤
│seo-audit │ │cro       │ │copywritng│ │ads         │ │referrals │ │revops       │ │mktg-ideas │
│ai-seo    │ │signup    │ │copy-edit │ │ad-creative │ │free-tools│ │sales-enable │ │mktg-psych │
│site-arch │ │onboarding│ │cold-email│ │ab-testing  │ │churn-    │ │launch       │ │customer-  │
│programm  │ │popups    │ │emails    │ │analytics   │ │ prevent  │ │pricing      │ │ research  │
│schema    │ │paywalls  │ │social    │ │            │ │community │ │competitors  │ │           │
│content   │ │          │ │video     │ │            │ │lead-magnt│ │comp-profile │ │           │
│aso       │ │          │ │image     │ │            │ │co-mktg   │ │directory    │ │           │
│          │ │          │ │sms       │ │            │ │          │ │prospecting  │ │           │
└────┬─────┘ └────┬─────┘ └────┬─────┘ └─────┬──────┘ └────┬─────┘ └──────┬──────┘ └─────┬─────┘
     │            │            │              │             │              │              │
     └────────────┴─────┬──────┴──────────────┴─────────────┴──────────────┴──────────────┘
                        │
         Skills cross-reference each other:
           copywriting ↔ cro ↔ ab-testing
           revops ↔ sales-enablement ↔ cold-email
           seo-audit ↔ schema ↔ ai-seo
           customer-research → copywriting, cro, competitors
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See each skill&#39;s &lt;strong&gt;Related Skills&lt;/strong&gt; section for the full dependency map.&lt;/p&gt; 
&lt;h2&gt;Available Skills&lt;/h2&gt; 
&lt;!-- SKILLS:START --&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Skill&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/ab-testing/&quot;&gt;ab-testing&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program....&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/ad-creative/&quot;&gt;ad-creative&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/ads/&quot;&gt;ads&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X,...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/ai-seo/&quot;&gt;ai-seo&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers....&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/analytics/&quot;&gt;analytics&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/aso/&quot;&gt;aso&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to audit or optimize an App Store or Google Play listing. Also use when the user mentions &#39;ASO...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/attribution/&quot;&gt;attribution&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to figure out which marketing actually drives conversions and revenue, choose or interpret an...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/churn-prevention/&quot;&gt;churn-prevention&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/co-marketing/&quot;&gt;co-marketing&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to find co-marketing partners, plan joint campaigns, or brainstorm partnership opportunities. Use...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/cold-email/&quot;&gt;cold-email&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Write B2B cold emails and follow-up sequences that get replies. Use when the user wants to write cold outreach emails,...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/community-marketing/&quot;&gt;community-marketing&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Build and leverage online communities to drive product growth and brand loyalty. Use when the user wants to create a...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/competitor-profiling/&quot;&gt;competitor-profiling&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to research, profile, or analyze competitors from their URLs. Also use when the user mentions...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/competitors/&quot;&gt;competitors&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create competitor comparison or alternative pages for SEO and sales enablement. Also use when...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/content-strategy/&quot;&gt;content-strategy&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to plan a content strategy, decide what content to create, or figure out what topics to cover. Also...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/copy-editing/&quot;&gt;copy-editing&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to edit, review, or improve existing marketing copy, or refresh outdated content. Also use when the...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/copywriting/&quot;&gt;copywriting&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages,...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/cro/&quot;&gt;cro&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to optimize, improve, or increase conversions on any marketing page or form — including homepage,...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/customer-research/&quot;&gt;customer-research&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to conduct, analyze, or synthesize customer research. Use when the user mentions &quot;customer...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/directory-submissions/&quot;&gt;directory-submissions&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to submit their product to startup, SaaS, AI, agent, MCP, no-code, or review directories for...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/emails/&quot;&gt;emails&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/free-tools/&quot;&gt;free-tools&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to plan, evaluate, or build a free tool for marketing purposes — lead generation, SEO value, or...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/image/&quot;&gt;image&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create, generate, edit, or optimize images for marketing — blog heroes, social graphics, product...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/influencer-marketing/&quot;&gt;influencer-marketing&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to run influencer, creator, or ambassador partnerships to promote their product — finding and...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/launch/&quot;&gt;launch&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to plan a product launch, feature announcement, or release strategy. Also use when the user...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/lead-magnets/&quot;&gt;lead-magnets&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create, plan, or optimize a lead magnet for email capture or lead generation. Also use when the...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/marketing-council/&quot;&gt;marketing-council&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants multiple expert perspectives on a marketing question — a simulated board of advisors staffed by...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/marketing-ideas/&quot;&gt;marketing-ideas&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user needs marketing ideas, inspiration, or strategies for their SaaS or software product. Also use when the...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/marketing-loops/&quot;&gt;marketing-loops&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to set up a recurring, self-running marketing workflow — a repeatable loop an AI agent runs on a...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/marketing-plan/&quot;&gt;marketing-plan&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user needs a comprehensive marketing plan for a client, a company they advise, or their own product. Also use...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/marketing-psychology/&quot;&gt;marketing-psychology&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to apply psychological principles, mental models, or behavioral science to marketing. Also use when...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/offers/&quot;&gt;offers&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to design, construct, or improve an offer — the thing they actually sell — including value framing,...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/onboarding/&quot;&gt;onboarding&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to optimize post-signup onboarding, user activation, first-run experience, or time-to-value. Also...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/paywalls/&quot;&gt;paywalls&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create or optimize in-app paywalls, upgrade screens, upsell modals, or feature gates. Also use...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/popups/&quot;&gt;popups&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create or optimize popups, modals, overlays, slide-ins, or banners for conversion purposes. Also...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/pricing/&quot;&gt;pricing&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/product-marketing/&quot;&gt;product-marketing&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create or update their product marketing context document. Also use when the user mentions...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/programmatic-seo/&quot;&gt;programmatic-seo&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create SEO-driven pages at scale using templates and data. Also use when the user mentions...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/prospecting/&quot;&gt;prospecting&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/public-relations/&quot;&gt;public-relations&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/referrals/&quot;&gt;referrals&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create, optimize, or analyze a referral program, affiliate program, or word-of-mouth strategy....&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/revops/&quot;&gt;revops&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes....&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/sales-enablement/&quot;&gt;sales-enablement&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/schema/&quot;&gt;schema&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to add, fix, or optimize schema markup and structured data on their site. Also use when the user...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/seo-audit/&quot;&gt;seo-audit&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions &quot;SEO...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/signup/&quot;&gt;signup&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to optimize signup, registration, account creation, or trial activation flows. Also use when the...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/site-architecture/&quot;&gt;site-architecture&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to plan, map, or restructure their website&#39;s page hierarchy, navigation, URL structure, or internal...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/sms/&quot;&gt;sms&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts,...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/social/&quot;&gt;social&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram,...&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/skills/video/&quot;&gt;video&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use...&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;!-- SKILLS:END --&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;Option 1: CLI Install (Recommended)&lt;/h3&gt; 
&lt;p&gt;Use &lt;a href=&quot;https://github.com/vercel-labs/skills&quot;&gt;npx skills&lt;/a&gt; to install skills directly:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install all skills
npx skills add coreyhaines31/marketingskills

# Install specific skills
npx skills add coreyhaines31/marketingskills --skill cro copywriting

# List available skills
npx skills add coreyhaines31/marketingskills --list
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The CLI detects which agents you have installed and asks where to install. For Claude Code it installs into &lt;code&gt;.claude/skills/&lt;/code&gt;; universal agents share &lt;code&gt;.agents/skills/&lt;/code&gt;.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;If you run the command from &lt;strong&gt;inside&lt;/strong&gt; an agent session (e.g., asking Claude Code to install the skills for you), the CLI runs non-interactively and may only install to the universal &lt;code&gt;.agents/skills/&lt;/code&gt; directory, which Claude Code does not read. Pass the agent explicitly:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add coreyhaines31/marketingskills -a claude-code
&lt;/code&gt;&lt;/pre&gt; 
&lt;/div&gt; 
&lt;h3&gt;Option 2: Claude Code Plugin&lt;/h3&gt; 
&lt;p&gt;Install via Claude Code&#39;s built-in plugin system:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Add the marketplace
/plugin marketplace add coreyhaines31/marketingskills

# Install all marketing skills
/plugin install marketing-skills
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Option 3: Clone and Copy&lt;/h3&gt; 
&lt;p&gt;Clone the entire repo and copy the skills folder:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/coreyhaines31/marketingskills.git
cp -r marketingskills/skills/* .agents/skills/
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Option 4: Git Submodule&lt;/h3&gt; 
&lt;p&gt;Add as a submodule for easy updates:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git submodule add https://github.com/coreyhaines31/marketingskills.git .agents/marketingskills
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then reference skills from &lt;code&gt;.agents/marketingskills/skills/&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Option 5: Fork and Customize&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Fork this repository&lt;/li&gt; 
 &lt;li&gt;Customize skills for your specific needs&lt;/li&gt; 
 &lt;li&gt;Clone your fork into your projects&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Option 6: SkillKit (Multi-Agent)&lt;/h3&gt; 
&lt;p&gt;Use &lt;a href=&quot;https://github.com/rohitg00/skillkit&quot;&gt;SkillKit&lt;/a&gt; to install skills across multiple AI agents (Claude Code, Cursor, Copilot, etc.):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install all skills
npx skillkit install coreyhaines31/marketingskills

# Install specific skills
npx skillkit install coreyhaines31/marketingskills --skill cro copywriting

# List available skills
npx skillkit install coreyhaines31/marketingskills --list
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Upgrading from v1.x to v2.0&lt;/h2&gt; 
&lt;p&gt;v2.0 renames 17 skills and consolidates &lt;code&gt;page-cro&lt;/code&gt; + &lt;code&gt;form-cro&lt;/code&gt; into a single &lt;code&gt;cro&lt;/code&gt; skill. If you installed the v1.x skills, you&#39;ll have &lt;strong&gt;stale old-name folders&lt;/strong&gt; in your install directory after upgrading — the new skills install alongside the old ones, so you&#39;ll see both &lt;code&gt;skills/page-cro/&lt;/code&gt; and &lt;code&gt;skills/cro/&lt;/code&gt;, etc. Clean them up:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# From the directory where you installed the skills (e.g., .agents/skills/ or .claude/skills/)
rm -rf page-cro form-cro \
       ab-test-setup analytics-tracking aso-audit competitor-alternatives \
       email-sequence free-tool-strategy launch-strategy onboarding-cro \
       paid-ads paywall-upgrade-cro popup-cro pricing-strategy \
       product-marketing-context referral-program schema-markup \
       signup-flow-cro social-content
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then reinstall the v2.0 skills via your usual method (e.g., &lt;code&gt;npx skills add coreyhaines31/marketingskills&lt;/code&gt;).&lt;/p&gt; 
&lt;h3&gt;Migrate the product marketing context file&lt;/h3&gt; 
&lt;p&gt;In v2.0 the context file moved from &lt;code&gt;.claude/&lt;/code&gt; to &lt;code&gt;.agents/&lt;/code&gt; and was renamed from &lt;code&gt;product-marketing-context.md&lt;/code&gt; to &lt;code&gt;product-marketing.md&lt;/code&gt;. Move your existing context file:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p .agents
# v2.0 file (or pre-v2.0 file with new name)
mv .claude/product-marketing.md .agents/product-marketing.md 2&amp;gt;/dev/null
# pre-v2.0 file with legacy name
mv .claude/product-marketing-context.md .agents/product-marketing.md 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Skills will still check &lt;code&gt;.claude/&lt;/code&gt; and the legacy &lt;code&gt;product-marketing-context.md&lt;/code&gt; filename as fallbacks, so nothing breaks if you don&#39;t migrate.&lt;/p&gt; 
&lt;h3&gt;Full rename map&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Old&lt;/th&gt; 
   &lt;th&gt;New&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ab-test-setup&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;ab-testing&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;analytics-tracking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;analytics&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;aso-audit&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;aso&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;competitor-alternatives&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;competitors&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;email-sequence&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;emails&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;form-cro&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;merged into &lt;code&gt;cro&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;free-tool-strategy&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;free-tools&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;launch-strategy&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;launch&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;onboarding-cro&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;onboarding&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;page-cro&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;cro&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;paid-ads&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;ads&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;paywall-upgrade-cro&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;paywalls&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;popup-cro&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;popups&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;pricing-strategy&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;pricing&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;product-marketing-context&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;product-marketing&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;referral-program&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;referrals&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;schema-markup&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;schema&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;signup-flow-cro&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;signup&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;social-content&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;social&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;p&gt;Once installed, just ask your agent to help with marketing tasks:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;Help me optimize this landing page for conversions&quot;
→ Uses cro skill

&quot;Write homepage copy for my SaaS&quot;
→ Uses copywriting skill

&quot;Set up GA4 tracking for signups&quot;
→ Uses analytics skill

&quot;Create a 5-email welcome sequence&quot;
→ Uses emails skill
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can also invoke skills directly:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/cro
/emails
/seo-audit
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Skill Categories&lt;/h2&gt; 
&lt;h3&gt;Conversion Optimization&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;cro&lt;/code&gt; - Pages and forms&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;signup&lt;/code&gt; - Registration flows&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;onboarding&lt;/code&gt; - Post-signup activation&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;popups&lt;/code&gt; - Modals and overlays&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;paywalls&lt;/code&gt; - In-app upgrade moments&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Content &amp;amp; Copy&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;copywriting&lt;/code&gt; - Marketing page copy&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;copy-editing&lt;/code&gt; - Edit and polish existing copy&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;cold-email&lt;/code&gt; - B2B cold outreach emails and sequences&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;emails&lt;/code&gt; - Automated email flows&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;social&lt;/code&gt; - Social media content&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;image&lt;/code&gt; - AI image generation, design tools, and optimization&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;SEO &amp;amp; Discovery&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;seo-audit&lt;/code&gt; - Technical and on-page SEO&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;ai-seo&lt;/code&gt; - AI search optimization (AEO, GEO, LLMO)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;programmatic-seo&lt;/code&gt; - Scaled page generation&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;site-architecture&lt;/code&gt; - Page hierarchy, navigation, URL structure&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;competitors&lt;/code&gt; - Comparison and alternative pages&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;schema&lt;/code&gt; - Structured data&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Paid &amp;amp; Distribution&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;ads&lt;/code&gt; - Google, Meta, LinkedIn ad campaigns&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;ad-creative&lt;/code&gt; - Bulk ad creative generation and iteration&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;social&lt;/code&gt; - Social media scheduling and strategy&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Measurement &amp;amp; Testing&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;analytics&lt;/code&gt; - Event tracking setup&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;ab-testing&lt;/code&gt; - Experiment design&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Retention&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;churn-prevention&lt;/code&gt; - Cancel flows, save offers, dunning, payment recovery&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Growth Engineering&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;co-marketing&lt;/code&gt; - Partner identification and joint campaigns&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;free-tools&lt;/code&gt; - Marketing tools and calculators&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;referrals&lt;/code&gt; - Referral and affiliate programs&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Strategy &amp;amp; Monetization&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;marketing-ideas&lt;/code&gt; - 140 SaaS marketing ideas&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;marketing-psychology&lt;/code&gt; - Mental models and psychology&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;launch&lt;/code&gt; - Product launches and announcements&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;pricing&lt;/code&gt; - Pricing, packaging, and monetization&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Sales &amp;amp; RevOps&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;revops&lt;/code&gt; - Lead lifecycle, scoring, routing, pipeline management&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;sales-enablement&lt;/code&gt; - Sales decks, one-pagers, objection docs, demo scripts&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Found a way to improve a skill? Have a new skill to suggest? PRs and issues welcome!&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for guidelines on adding or improving skills.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/coreyhaines31/marketingskills/main/LICENSE&quot;&gt;MIT&lt;/a&gt; - Use these however you want.&lt;/p&gt; 
&lt;br /&gt; 
&lt;br /&gt; 
&lt;a href=&quot;https://vercel.com/open-source-program&quot;&gt; &lt;img alt=&quot;Vercel OSS Program&quot; src=&quot;https://vercel.com/oss/program-badge-2026.svg?sanitize=true&quot; /&gt; &lt;/a&gt;</description>
      
    </item>
    
    <item>
      <title>calesthio/Crucix</title>
      <link>https://github.com/calesthio/Crucix</link>
      <description>&lt;p&gt;Your personal intelligence agent. Watches the world from multiple data sources and pings you when something changes.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;Crucix&lt;/h1&gt; 
 &lt;p&gt;&lt;strong&gt;Your own intelligence terminal. 27 sources. One command. Zero cloud.&lt;/strong&gt;&lt;/p&gt; 
 &lt;h2&gt;&lt;a href=&quot;https://www.crucix.live/&quot;&gt;Visit The Live Site: crucix.live&lt;/a&gt;&lt;/h2&gt; 
 &lt;p&gt;&lt;a href=&quot;https://www.crucix.live/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/live-crucix.live-00d4ff?style=for-the-badge&quot; alt=&quot;Live Website&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.crucix.live/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/open-live%20dashboard-0b1220?style=for-the-badge&amp;amp;logo=googlechrome&amp;amp;logoColor=white&quot; alt=&quot;Open Demo&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/#quick-start&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/node-22%2B-brightgreen&quot; alt=&quot;Node.js 22+&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-AGPLv3-blue.svg?sanitize=true&quot; alt=&quot;License: AGPL v3&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/#architecture&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/dependencies-1%20(express)-orange&quot; alt=&quot;Dependencies&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/#data-sources-27&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/OSINT%20sources-27-cyan&quot; alt=&quot;Sources&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/#docker&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docker-ready-blue?logo=docker&quot; alt=&quot;Docker&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Enter The Signal Network&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://x.com/crucixmonitor&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Signal%20Wire-%40crucixmonitor-111111?style=for-the-badge&amp;amp;logo=x&amp;amp;logoColor=white&quot; alt=&quot;Signal Wire&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/ChVy7SF4&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Ops%20Room-Discord-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Ops Room&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/docs/dashboard.png&quot; alt=&quot;Crucix Dashboard&quot; /&gt;&lt;/p&gt; 
 &lt;details&gt; 
  &lt;summary&gt;More screenshots&lt;/summary&gt; 
  &lt;table&gt; 
   &lt;thead&gt; 
    &lt;tr&gt; 
     &lt;th style=&quot;text-align:center&quot;&gt;Boot Sequence&lt;/th&gt; 
     &lt;th style=&quot;text-align:center&quot;&gt;World Map&lt;/th&gt; 
    &lt;/tr&gt; 
   &lt;/thead&gt; 
   &lt;tbody&gt; 
    &lt;tr&gt; 
     &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/docs/boot.png&quot; alt=&quot;Boot&quot; /&gt;&lt;/td&gt; 
     &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/docs/map.png&quot; alt=&quot;Map&quot; /&gt;&lt;/td&gt; 
    &lt;/tr&gt; 
   &lt;/tbody&gt; 
  &lt;/table&gt; 
  &lt;table&gt; 
   &lt;thead&gt; 
    &lt;tr&gt; 
     &lt;th style=&quot;text-align:center&quot;&gt;3D Globe View&lt;/th&gt; 
    &lt;/tr&gt; 
   &lt;/thead&gt; 
   &lt;tbody&gt; 
    &lt;tr&gt; 
     &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/docs/globe.png&quot; alt=&quot;Globe&quot; /&gt;&lt;/td&gt; 
    &lt;/tr&gt; 
   &lt;/tbody&gt; 
  &lt;/table&gt; 
 &lt;/details&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Live website:&lt;/strong&gt; &lt;a href=&quot;https://www.crucix.live/&quot;&gt;https://www.crucix.live/&lt;/a&gt; Explore the public demo first, then clone the repo to run Crucix locally.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Crucix pulls satellite fire detection, flight tracking, radiation monitoring, satellite constellation tracking, economic indicators, live market prices, conflict data, sanctions lists, and social sentiment from 27 open-source intelligence feeds — in parallel, every 15 minutes — and renders everything on a single self-contained Jarvis-style dashboard.&lt;/p&gt; 
&lt;p&gt;Hook it up to an LLM and it becomes a &lt;strong&gt;two-way intelligence assistant&lt;/strong&gt; — pushing multi-tier alerts to Telegram and Discord when something meaningful changes, responding to commands like &lt;code&gt;/brief&lt;/code&gt; and &lt;code&gt;/sweep&lt;/code&gt; from your phone, and generating actionable trade ideas grounded in real cross-domain data. Your own analyst that watches the world while you sleep.&lt;/p&gt; 
&lt;p&gt;Try the live demo first at &lt;a href=&quot;https://www.crucix.live/&quot;&gt;https://www.crucix.live/&lt;/a&gt;, then clone the repo when you want the full local stack.&lt;/p&gt; 
&lt;p&gt;No cloud. No telemetry. No subscriptions. Just &lt;code&gt;node server.mjs&lt;/code&gt; and you&#39;re running.&lt;/p&gt; 
&lt;h2&gt;Token / Asset Warning&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;Crucix has not launched any official token, coin, NFT, airdrop, presale, or other blockchain-based asset.&lt;/strong&gt; Any token or digital asset using the Crucix name, logo, or branding is not affiliated with or endorsed by Crucix. Do not buy it, promote it, connect a wallet to claim it, sign transactions, or send funds based on third-party posts, DMs, or websites.&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Why This Exists&lt;/h2&gt; 
&lt;p&gt;Most of the world&#39;s real-time intelligence — satellite imagery, radiation levels, conflict events, economic indicators, flight tracking, maritime activity — is publicly available. It&#39;s just scattered across dozens of government APIs, research institutions, and open data feeds that nobody has time to check individually.&lt;/p&gt; 
&lt;p&gt;Crucix brings it all into one place. Not behind a paywall, not locked in an enterprise platform, not requiring a security clearance. Just open data, aggregated and cross-correlated on your own machine, updated every 15 minutes.&lt;/p&gt; 
&lt;p&gt;It was built for anyone who wants to understand what&#39;s actually happening in the world right now — researchers, journalists, traders, OSINT analysts, or just curious people who believe access to information shouldn&#39;t depend on your budget.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Clone the repo
git clone https://github.com/calesthio/Crucix.git
cd Crucix

# 2. Install dependencies (just Express)
npm install

# 3. Copy env template and add your API keys (see below)
cp .env.example .env

# 4. Start the dashboard
npm run dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;If &lt;code&gt;npm run dev&lt;/code&gt; fails silently&lt;/strong&gt; (exits with no output), run Node directly instead:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node --trace-warnings server.mjs
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;This bypasses npm&#39;s script runner, which can swallow errors on some systems (particularly PowerShell on Windows). You can also run &lt;code&gt;node diag.mjs&lt;/code&gt; to diagnose the exact issue — it checks your Node version, tests each module import individually, and verifies port availability. See &lt;a href=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/#troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt; for more.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The dashboard opens automatically at &lt;code&gt;http://localhost:3117&lt;/code&gt; and immediately begins its first intelligence sweep. This initial sweep queries all 27 sources in parallel and typically takes 30–60 seconds — the dashboard will appear empty until the sweep completes and pushes the first data update. After that, it auto-refreshes every 15 minutes via SSE (Server-Sent Events). No manual page refresh needed.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Node.js 22+ (uses native &lt;code&gt;fetch&lt;/code&gt;, top-level &lt;code&gt;await&lt;/code&gt;, ESM)&lt;/p&gt; 
&lt;h3&gt;Docker&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/calesthio/Crucix.git
cd Crucix
cp .env.example .env    # add your API keys
docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Dashboard at &lt;code&gt;http://localhost:3117&lt;/code&gt;. Sweep data persists in &lt;code&gt;./runs/&lt;/code&gt; via volume mount. Includes a health check endpoint.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;What You Get&lt;/h2&gt; 
&lt;h3&gt;Live Dashboard&lt;/h3&gt; 
&lt;p&gt;A self-contained Jarvis-style HUD with:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;3D WebGL globe&lt;/strong&gt; (&lt;a href=&quot;http://Globe.gl&quot;&gt;Globe.gl&lt;/a&gt;) with atmosphere glow, star field, and smooth rotation — plus a classic flat map toggle&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;9 marker types&lt;/strong&gt; across both views: fire detections, air traffic, radiation sites, maritime chokepoints, SDR receivers, OSINT events, health alerts, geolocated news, conflict events&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Animated 3D flight corridor arcs&lt;/strong&gt; between air traffic hotspots and global hubs&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Region filters&lt;/strong&gt; (World, Americas, Europe, Middle East, Asia Pacific, Africa) — rotates the globe or zooms the flat map&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Live market data&lt;/strong&gt; — indexes, crypto, energy, commodities via Yahoo Finance (no API key needed)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Risk gauges&lt;/strong&gt; — VIX, high-yield spread, supply chain pressure index&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;OSINT feed&lt;/strong&gt; — English-language posts from 17 Telegram intelligence channels (expandable)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;News ticker&lt;/strong&gt; — merged RSS + GDELT headlines + Telegram posts, auto-scrolling&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Sweep delta&lt;/strong&gt; — live panel showing what changed since last sweep (new signals, escalations, de-escalations with severity)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Cross-source signals&lt;/strong&gt; — correlated intelligence across satellite, economic, conflict, and social domains&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Nuclear watch&lt;/strong&gt; — real-time radiation readings from Safecast + EPA RadNet&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Space watch&lt;/strong&gt; — CelesTrak satellite tracking: recent launches, ISS, military constellations, Starlink/OneWeb counts&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Leverageable ideas&lt;/strong&gt; — AI-generated trade ideas (with LLM) or signal-correlated ideas (without)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Performance Modes&lt;/h3&gt; 
&lt;p&gt;The &lt;code&gt;VISUALS FULL&lt;/code&gt; / &lt;code&gt;VISUALS LITE&lt;/code&gt; button in the top bar only changes rendering behavior - it does &lt;strong&gt;not&lt;/strong&gt; remove data sources or reduce sweep coverage.&lt;/p&gt; 
&lt;p&gt;When you switch to &lt;strong&gt;VISUALS LITE&lt;/strong&gt;, the dashboard:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Disables decorative background effects such as the radial/grid overlays and scanlines&lt;/li&gt; 
 &lt;li&gt;Removes expensive blur/backdrop-filter effects on panels and overlays&lt;/li&gt; 
 &lt;li&gt;Stops non-essential animations like the logo ring blink, conflict rings, and corridor flow effects&lt;/li&gt; 
 &lt;li&gt;Disables globe auto-rotation and turns off animated flight-arc dashes&lt;/li&gt; 
 &lt;li&gt;Converts the horizontal news ticker and OSINT stream into static, scrollable lists instead of continuously animated marquees&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Mobile-specific behavior:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;On mobile, &lt;code&gt;VISUALS LITE&lt;/code&gt; also forces the dashboard into &lt;strong&gt;flat map mode&lt;/strong&gt; if you are currently on the globe&lt;/li&gt; 
 &lt;li&gt;Future mobile loads will continue to start flat while low-perf mode is enabled&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The preference is saved in browser local storage, so the UI will remember your last setting.&lt;/p&gt; 
&lt;h3&gt;Auto-Refresh&lt;/h3&gt; 
&lt;p&gt;The server runs a sweep cycle every 15 minutes (configurable). Each cycle:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Queries all 27 sources in parallel (~30s)&lt;/li&gt; 
 &lt;li&gt;Synthesizes raw data into dashboard format&lt;/li&gt; 
 &lt;li&gt;Computes delta from previous run (what changed, escalated, de-escalated) — visible in the &lt;strong&gt;Sweep Delta&lt;/strong&gt; panel on the dashboard&lt;/li&gt; 
 &lt;li&gt;Generates LLM trade ideas (if configured)&lt;/li&gt; 
 &lt;li&gt;Evaluates breaking news alerts — multi-tier (FLASH / PRIORITY / ROUTINE) with semantic dedup. Sends to Telegram and/or Discord if configured. Works with LLM evaluation or falls back to rule-based alerting when LLM is unavailable.&lt;/li&gt; 
 &lt;li&gt;Pushes update to all connected browsers via SSE&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Telegram Bot (Two-Way)&lt;/h3&gt; 
&lt;p&gt;Crucix doubles as an interactive Telegram bot. Beyond sending alerts, it responds to commands directly from your chat:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/status&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;System health, last sweep time, source status, LLM status&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/sweep&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Trigger a manual sweep cycle&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/brief&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Compact text summary of the latest intelligence (direction, key metrics, top OSINT)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/portfolio&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Portfolio status (if Alpaca connected)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/alerts&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Recent alert history with tiers&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/mute&lt;/code&gt; / &lt;code&gt;/mute 2h&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Silence alerts for 1h (or custom duration)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/unmute&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Resume alerts&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/help&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Show all available commands&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;This requires &lt;code&gt;TELEGRAM_BOT_TOKEN&lt;/code&gt; and &lt;code&gt;TELEGRAM_CHAT_ID&lt;/code&gt; in &lt;code&gt;.env&lt;/code&gt;. The bot polls for messages every 5 seconds (configurable via &lt;code&gt;TELEGRAM_POLL_INTERVAL&lt;/code&gt;).&lt;/p&gt; 
&lt;h3&gt;Discord Bot (Two-Way)&lt;/h3&gt; 
&lt;p&gt;Crucix also supports Discord as a full-featured bot with slash commands and rich embed alerts. It mirrors the Telegram bot&#39;s capabilities with Discord-native formatting.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;What It Does&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/status&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;System health, last sweep time, source status, LLM status&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/sweep&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Trigger a manual sweep cycle&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/brief&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Compact text summary of the latest intelligence&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/portfolio&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Portfolio status (if Alpaca connected)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Alerts are delivered as rich embeds with color-coded sidebars: red for FLASH, yellow for PRIORITY, blue for ROUTINE. Each embed includes signal details, confidence scores, and cross-domain correlations.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Setup requires:&lt;/strong&gt; &lt;code&gt;DISCORD_BOT_TOKEN&lt;/code&gt;, &lt;code&gt;DISCORD_CHANNEL_ID&lt;/code&gt;, and optionally &lt;code&gt;DISCORD_GUILD_ID&lt;/code&gt; for instant slash command registration. See &lt;a href=&quot;https://raw.githubusercontent.com/calesthio/Crucix/master/#api-keys-setup&quot;&gt;API Keys Setup&lt;/a&gt; for details.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Webhook fallback:&lt;/strong&gt; If you don&#39;t want to run a full bot, set &lt;code&gt;DISCORD_WEBHOOK_URL&lt;/code&gt; instead. This enables one-way alerts (no slash commands) with zero dependencies — no &lt;code&gt;discord.js&lt;/code&gt; needed.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Optional dependency:&lt;/strong&gt; The full bot requires &lt;code&gt;discord.js&lt;/code&gt;. Install it with &lt;code&gt;npm install discord.js&lt;/code&gt;. If it&#39;s not installed, Crucix automatically falls back to webhook-only mode.&lt;/p&gt; 
&lt;h3&gt;Optional LLM Layer&lt;/h3&gt; 
&lt;p&gt;Connect any of 8 LLM providers for enhanced analysis:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;AI trade ideas&lt;/strong&gt; — quantitative analyst producing 5-8 actionable ideas citing specific data&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smarter alert evaluation&lt;/strong&gt; — LLM classifies signals into FLASH/PRIORITY/ROUTINE tiers with cross-domain correlation and confidence scoring&lt;/li&gt; 
 &lt;li&gt;Providers: Anthropic Claude, OpenAI, Google Gemini, OpenRouter (Unified API), OpenAI Codex (ChatGPT subscription), MiniMax, Mistral, Grok&lt;/li&gt; 
 &lt;li&gt;Graceful fallback — when LLM is unavailable, a rule-based engine takes over alert evaluation. LLM failures never crash the sweep cycle.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;API Keys Setup&lt;/h2&gt; 
&lt;p&gt;Copy &lt;code&gt;.env.example&lt;/code&gt; to &lt;code&gt;.env&lt;/code&gt; at the project root:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cp .env.example .env
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Required for Best Results (all free)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Key&lt;/th&gt; 
   &lt;th&gt;Source&lt;/th&gt; 
   &lt;th&gt;How to Get&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;FRED_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Federal Reserve Economic Data&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://fred.stlouisfed.org/docs/api/api_key.html&quot;&gt;fred.stlouisfed.org&lt;/a&gt; — instant, free&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;FIRMS_MAP_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;NASA FIRMS (satellite fire data)&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://firms.modaps.eosdis.nasa.gov/api/area/&quot;&gt;firms.modaps.eosdis.nasa.gov&lt;/a&gt; — instant, free&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;EIA_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;US Energy Information Administration&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://www.eia.gov/opendata/register.php&quot;&gt;api.eia.gov&lt;/a&gt; — instant, free&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;These three unlock the most valuable economic and satellite data. Each takes about 60 seconds to register.&lt;/p&gt; 
&lt;h3&gt;Optional (enable additional sources)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Key&lt;/th&gt; 
   &lt;th&gt;Source&lt;/th&gt; 
   &lt;th&gt;How to Get&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ACLED_EMAIL&lt;/code&gt; + &lt;code&gt;ACLED_PASSWORD&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Armed conflict event data&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://acleddata.com/register/&quot;&gt;acleddata.com/register&lt;/a&gt; — free, OAuth2&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;AISSTREAM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Maritime AIS vessel tracking&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://aisstream.io/&quot;&gt;aisstream.io&lt;/a&gt; — free&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ADSB_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Unfiltered flight tracking&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://rapidapi.com/adsbexchange/api/adsbexchange-com1&quot;&gt;RapidAPI&lt;/a&gt; — ~$10/mo&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;LLM Provider (optional, for AI-enhanced ideas)&lt;/h3&gt; 
&lt;p&gt;Set &lt;code&gt;LLM_PROVIDER&lt;/code&gt; to one of: &lt;code&gt;anthropic&lt;/code&gt;, &lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;gemini&lt;/code&gt;, &lt;code&gt;codex&lt;/code&gt;, &lt;code&gt;openrouter&lt;/code&gt;, &lt;code&gt;minimax&lt;/code&gt;, &lt;code&gt;mistral&lt;/code&gt;, &lt;code&gt;grok&lt;/code&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Provider&lt;/th&gt; 
   &lt;th&gt;Key Required&lt;/th&gt; 
   &lt;th&gt;Default Model&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;anthropic&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;claude-sonnet-4-6&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;openai&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;gpt-5.4&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;gemini&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;gemini-3.1-pro&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;openrouter&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;openrouter/auto&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;codex&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;None (uses &lt;code&gt;~/.codex/auth.json&lt;/code&gt;)&lt;/td&gt; 
   &lt;td&gt;gpt-5.3-codex&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;minimax&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;MiniMax-M2.5&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;mistral&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;mistral-large-latest&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;grok&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;grok-4-latest&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;For Codex, run &lt;code&gt;npx @openai/codex login&lt;/code&gt; to authenticate via your ChatGPT subscription.&lt;/p&gt; 
&lt;h3&gt;Telegram Bot + Alerts (optional)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Key&lt;/th&gt; 
   &lt;th&gt;How to Get&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;TELEGRAM_BOT_TOKEN&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create via &lt;a href=&quot;https://t.me/BotFather&quot;&gt;@BotFather&lt;/a&gt; on Telegram&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;TELEGRAM_CHAT_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Get via &lt;a href=&quot;https://t.me/userinfobot&quot;&gt;@userinfobot&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;TELEGRAM_CHANNELS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;em&gt;(Optional)&lt;/em&gt; Comma-separated extra channel IDs to monitor beyond the 17 built-in channels&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;TELEGRAM_POLL_INTERVAL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;em&gt;(Optional)&lt;/em&gt; Bot command polling interval in ms (default: 5000)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Discord Bot + Alerts (optional)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Key&lt;/th&gt; 
   &lt;th&gt;How to Get&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DISCORD_BOT_TOKEN&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create at &lt;a href=&quot;https://discord.com/developers/applications&quot;&gt;Discord Developer Portal&lt;/a&gt; → Bot → Token&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DISCORD_CHANNEL_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Right-click channel in Discord (Developer Mode on) → Copy Channel ID&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DISCORD_GUILD_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;em&gt;(Optional)&lt;/em&gt; Right-click server → Copy Server ID. Enables instant slash command registration (otherwise takes up to 1 hour for global commands)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DISCORD_WEBHOOK_URL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;em&gt;(Optional)&lt;/em&gt; Channel Settings → Integrations → Webhooks → New Webhook → Copy URL. Use this for alert-only mode without a bot&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Discord bot setup:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Go to &lt;a href=&quot;https://discord.com/developers/applications&quot;&gt;Discord Developer Portal&lt;/a&gt; and create a new application&lt;/li&gt; 
 &lt;li&gt;Go to &lt;strong&gt;Bot&lt;/strong&gt; → click &lt;strong&gt;Reset Token&lt;/strong&gt; → copy the token to &lt;code&gt;DISCORD_BOT_TOKEN&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Under &lt;strong&gt;Privileged Gateway Intents&lt;/strong&gt;, enable &lt;strong&gt;Message Content Intent&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Go to &lt;strong&gt;OAuth2&lt;/strong&gt; → &lt;strong&gt;URL Generator&lt;/strong&gt; → select &lt;code&gt;bot&lt;/code&gt; + &lt;code&gt;applications.commands&lt;/code&gt; scopes → select &lt;code&gt;Send Messages&lt;/code&gt; + &lt;code&gt;Embed Links&lt;/code&gt; permissions&lt;/li&gt; 
 &lt;li&gt;Copy the generated URL and open it in your browser to invite the bot to your server&lt;/li&gt; 
 &lt;li&gt;Install the dependency: &lt;code&gt;npm install discord.js&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Alerts work with or without an LLM on both Telegram and Discord. With an LLM configured, signal evaluation is richer and more context-aware. Without one, a deterministic rule engine evaluates signals based on severity, cross-domain correlation, and signal counts.&lt;/p&gt; 
&lt;h3&gt;Without Any Keys&lt;/h3&gt; 
&lt;p&gt;Crucix still works with zero API keys. 18+ sources require no authentication at all. Sources that need keys return structured errors and the rest of the sweep continues normally.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Architecture&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;crucix/
├── server.mjs                 # Express dev server (SSE, auto-refresh, LLM, bot commands)
├── crucix.config.mjs          # Configuration with env var overrides + delta thresholds
├── diag.mjs                   # Diagnostic script — run if server fails to start
├── .env.example               # All documented env vars
├── package.json               # Runtime: express | Optional: discord.js
├── docs/                      # Screenshots for README
│
├── apis/
│   ├── briefing.mjs           # Master orchestrator — runs all 27 sources in parallel
│   ├── save-briefing.mjs      # CLI: save timestamped + latest.json
│   ├── BRIEFING_PROMPT.md     # Intelligence synthesis protocol
│   ├── BRIEFING_TEMPLATE.md   # Briefing output structure
│   ├── utils/
│   │   ├── fetch.mjs          # safeFetch() — timeout, retries, abort, auto-JSON
│   │   └── env.mjs            # .env loader (no dotenv dependency)
│   └── sources/               # 27 self-contained source modules
│       ├── gdelt.mjs          # Each exports briefing() → structured data
│       ├── fred.mjs           # Can run standalone: node apis/sources/fred.mjs
│       ├── space.mjs          # CelesTrak satellite tracking
│       ├── yfinance.mjs       # Yahoo Finance — free live market data
│       └── ...                # 23 more
│
├── dashboard/
│   ├── inject.mjs             # Data synthesis + standalone HTML injection
│   └── public/
│       └── jarvis.html        # Self-contained Jarvis HUD
│
├── lib/
│   ├── llm/                   # LLM abstraction (8 providers, raw fetch, no SDKs)
│   │   ├── provider.mjs       # Base class
│   │   ├── anthropic.mjs      # Claude
│   │   ├── openai.mjs         # GPT
│   │   ├── gemini.mjs         # Gemini
│   │   ├── grok.mjs           # Grok
│   │   ├── openrouter.mjs     # OpenRouter (Unified API)
│   │   ├── codex.mjs          # Codex (ChatGPT subscription)
│   │   ├── minimax.mjs        # MiniMax (M2.5, 204K context)
│   │   ├── mistral.mjs        # Mistral AI
│   │   ├── ideas.mjs          # LLM-powered trade idea generation
│   │   └── index.mjs          # Factory: createLLMProvider()
│   ├── delta/                 # Change tracking between sweeps
│   │   ├── engine.mjs         # Delta computation — semantic dedup, configurable thresholds, severity scoring
│   │   ├── memory.mjs         # Hot memory (3 runs, atomic writes) + cold storage (daily archives)
│   │   └── index.mjs          # Re-exports
│   └── alerts/
│       ├── telegram.mjs       # Multi-tier alerts (FLASH/PRIORITY/ROUTINE) + two-way bot commands
│       └── discord.mjs        # Discord bot (slash commands, rich embeds) + webhook fallback
│
└── runs/                      # Runtime data (gitignored)
    ├── latest.json            # Most recent sweep output
    └── memory/                # Delta memory (hot.json + cold/YYYY-MM-DD.json)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Design Principles&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Pure ESM&lt;/strong&gt; — every file is &lt;code&gt;.mjs&lt;/code&gt; with explicit imports&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Minimal dependencies&lt;/strong&gt; — Express is the only runtime dependency. &lt;code&gt;discord.js&lt;/code&gt; is optional (for Discord bot). LLM providers use raw &lt;code&gt;fetch()&lt;/code&gt;, no SDKs.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Parallel execution&lt;/strong&gt; — &lt;code&gt;Promise.allSettled()&lt;/code&gt; fires all 27 sources simultaneously&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Graceful degradation&lt;/strong&gt; — missing keys produce errors, not crashes. LLM failures don&#39;t kill sweeps.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Each source is standalone&lt;/strong&gt; — run &lt;code&gt;node apis/sources/gdelt.mjs&lt;/code&gt; to test any source independently&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Self-contained dashboard&lt;/strong&gt; — the HTML file works with or without the server&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Data Sources (27)&lt;/h2&gt; 
&lt;h3&gt;Tier 1: Core OSINT &amp;amp; Geopolitical (11)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Source&lt;/th&gt; 
   &lt;th&gt;What It Tracks&lt;/th&gt; 
   &lt;th&gt;Auth&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;GDELT&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Global news events, conflict mapping (100+ languages)&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;OpenSky&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Real-time ADS-B flight tracking across 6 hotspot regions&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;NASA FIRMS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Satellite fire/thermal anomaly detection (3hr latency)&lt;/td&gt; 
   &lt;td&gt;Free key&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Maritime/AIS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Vessel tracking, dark ships, sanctions evasion&lt;/td&gt; 
   &lt;td&gt;Free key&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Safecast&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Citizen-science radiation monitoring near 6 nuclear sites&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;ACLED&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Armed conflict events: battles, explosions, protests&lt;/td&gt; 
   &lt;td&gt;Free (OAuth2)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;ReliefWeb&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;UN humanitarian crisis tracking&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;WHO&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Disease outbreaks and health emergencies&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;OFAC&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;US Treasury sanctions (SDN list)&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;OpenSanctions&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Aggregated global sanctions (30+ sources)&lt;/td&gt; 
   &lt;td&gt;Partial&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;ADS-B Exchange&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Unfiltered flight tracking including military&lt;/td&gt; 
   &lt;td&gt;Paid&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Tier 2: Economic &amp;amp; Financial (7)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Source&lt;/th&gt; 
   &lt;th&gt;What It Tracks&lt;/th&gt; 
   &lt;th&gt;Auth&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;FRED&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;22 key indicators: yield curve, CPI, VIX, fed funds, M2&lt;/td&gt; 
   &lt;td&gt;Free key&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;US Treasury&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;National debt, yields, fiscal data&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;BLS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;CPI, unemployment, nonfarm payrolls, PPI&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;EIA&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;WTI/Brent crude, natural gas, inventories&lt;/td&gt; 
   &lt;td&gt;Free key&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;GSCPI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;NY Fed Global Supply Chain Pressure Index&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;USAspending&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Federal spending and defense contracts&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;UN Comtrade&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Strategic commodity trade flows between major powers&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Tier 3: Weather, Environment, Tech, Social, SIGINT (7)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Source&lt;/th&gt; 
   &lt;th&gt;What It Tracks&lt;/th&gt; 
   &lt;th&gt;Auth&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;NOAA/NWS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Active US weather alerts&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;EPA RadNet&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;US government radiation monitoring&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;USPTO Patents&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Patent filings in 7 strategic tech areas&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Bluesky&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Social sentiment on geopolitical/market topics&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Reddit&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Social sentiment from key subreddits&lt;/td&gt; 
   &lt;td&gt;OAuth&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Telegram&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;17 curated OSINT/conflict/finance channels (web scraping, expandable via config)&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;KiwiSDR&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Global HF radio receiver network (~600 receivers)&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Tier 4: Space &amp;amp; Satellites (1)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Source&lt;/th&gt; 
   &lt;th&gt;What It Tracks&lt;/th&gt; 
   &lt;th&gt;Auth&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;CelesTrak&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Satellite launches, ISS tracking, military constellations, Starlink/OneWeb counts&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Tier 5: Live Market Data (1)&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Source&lt;/th&gt; 
   &lt;th&gt;What It Tracks&lt;/th&gt; 
   &lt;th&gt;Auth&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Yahoo Finance&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Real-time prices: SPY, QQQ, BTC, Gold, WTI, VIX + 9 more&lt;/td&gt; 
   &lt;td&gt;None&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;npm Scripts&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Script&lt;/th&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;npm run dev&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;node --trace-warnings server.mjs&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Start dashboard with auto-refresh&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;npm run sweep&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;node apis/briefing.mjs&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Run a single sweep, output JSON to stdout&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;npm run inject&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;node dashboard/inject.mjs&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Inject latest data into static HTML&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;npm run brief:save&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;node apis/save-briefing.mjs&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Run sweep + save timestamped JSON&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;npm run diag&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;node diag.mjs&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Run diagnostics (Node version, imports, port check)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;p&gt;All settings are in &lt;code&gt;.env&lt;/code&gt; with sensible defaults:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Variable&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;PORT&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;3117&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Dashboard server port&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;REFRESH_INTERVAL_MINUTES&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Auto-refresh interval&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;LLM_PROVIDER&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;disabled&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;anthropic&lt;/code&gt;, &lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;gemini&lt;/code&gt;, &lt;code&gt;codex&lt;/code&gt;, &lt;code&gt;openrouter&lt;/code&gt;, &lt;code&gt;minimax&lt;/code&gt;, &lt;code&gt;mistral&lt;/code&gt;, or &lt;code&gt;grok&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;API key (not needed for codex)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;LLM_MODEL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;per-provider default&lt;/td&gt; 
   &lt;td&gt;Override model selection&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;TELEGRAM_BOT_TOKEN&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;disabled&lt;/td&gt; 
   &lt;td&gt;For Telegram alerts + bot commands&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;TELEGRAM_CHAT_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;Your Telegram chat ID&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;TELEGRAM_CHANNELS&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;Extra channel IDs to monitor (comma-separated)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;TELEGRAM_POLL_INTERVAL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;5000&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Bot command polling interval (ms)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DISCORD_BOT_TOKEN&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;disabled&lt;/td&gt; 
   &lt;td&gt;For Discord alerts + slash commands&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DISCORD_CHANNEL_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;Discord channel for alerts&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DISCORD_GUILD_ID&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;Server ID (instant slash command registration)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;DISCORD_WEBHOOK_URL&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;Webhook URL (alert-only fallback, no bot needed)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Delta engine thresholds (how sensitive the system is to changes between sweeps) can be customized in &lt;code&gt;crucix.config.mjs&lt;/code&gt; under the &lt;code&gt;delta.thresholds&lt;/code&gt; section. The defaults are tuned to filter out noise while catching meaningful moves.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;API Endpoints&lt;/h2&gt; 
&lt;p&gt;When running &lt;code&gt;npm run dev&lt;/code&gt;:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Endpoint&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;GET /&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Jarvis HUD dashboard&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;GET /api/data&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Current synthesized intelligence data (JSON)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;GET /api/health&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Server status, uptime, source count, LLM status&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;GET /events&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;SSE stream for live push updates&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;h3&gt;&lt;code&gt;npm run dev&lt;/code&gt; exits silently (no output, no error)&lt;/h3&gt; 
&lt;p&gt;This is a known issue where npm&#39;s script runner can swallow errors, particularly on Windows PowerShell. Try these in order:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;1. Run Node directly (bypasses npm):&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node --trace-warnings server.mjs
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This is functionally identical to &lt;code&gt;npm run dev&lt;/code&gt; but gives you full error output.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2. Run the diagnostic script:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node diag.mjs
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This tests every import one by one, checks your Node.js version, and verifies port 3117 is available. It will tell you exactly what&#39;s failing.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3. Check if port 3117 is already in use:&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;A previous Crucix instance may still be running in the background.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# Windows PowerShell
netstat -ano | findstr 3117
taskkill /F /PID &amp;lt;the_PID_from_above&amp;gt;

# Or kill all Node processes
taskkill /F /IM node.exe
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# macOS / Linux
lsof -ti:3117 | xargs kill
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then try starting again. You can also change the port by setting &lt;code&gt;PORT=3118&lt;/code&gt; in your &lt;code&gt;.env&lt;/code&gt; file.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;4. Check Node.js version:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node --version
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Crucix requires Node.js 22 or later. If you have an older version, download the latest LTS from &lt;a href=&quot;https://nodejs.org/&quot;&gt;nodejs.org&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Dashboard shows empty panels after first start&lt;/h3&gt; 
&lt;p&gt;This is normal — the first sweep takes 30–60 seconds to query all 27 sources. The dashboard will populate automatically once the sweep completes. Check the terminal for sweep progress logs.&lt;/p&gt; 
&lt;h3&gt;Some sources show errors&lt;/h3&gt; 
&lt;p&gt;Expected behavior. Sources that require API keys will return structured errors if the key isn&#39;t set. The rest of the sweep continues normally. Check the Source Integrity section in the dashboard (or the server logs) to see which sources failed and why. The 3 most impactful free keys to add are &lt;code&gt;FRED_API_KEY&lt;/code&gt;, &lt;code&gt;FIRMS_MAP_KEY&lt;/code&gt;, and &lt;code&gt;EIA_API_KEY&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;OpenSky can also return &lt;code&gt;HTTP 429&lt;/code&gt; when its public hotspots are queried too aggressively. Crucix does not try to evade that limit. Instead, it surfaces the throttle/error in source health and preserves the most recent non-empty air traffic snapshot from &lt;code&gt;runs/&lt;/code&gt; so the dashboard flight layer does not suddenly go blank on a throttled sweep.&lt;/p&gt; 
&lt;h3&gt;Telegram bot not responding to commands&lt;/h3&gt; 
&lt;p&gt;Make sure both &lt;code&gt;TELEGRAM_BOT_TOKEN&lt;/code&gt; and &lt;code&gt;TELEGRAM_CHAT_ID&lt;/code&gt; are set in &lt;code&gt;.env&lt;/code&gt;. The bot only responds to messages from the configured chat ID (security measure). You should see &lt;code&gt;[Crucix] Telegram alerts enabled&lt;/code&gt; and &lt;code&gt;[Crucix] Bot command polling started&lt;/code&gt; in the server logs on startup. If not, double-check your token with &lt;code&gt;curl https://api.telegram.org/bot&amp;lt;YOUR_TOKEN&amp;gt;/getMe&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Discord bot not responding to slash commands&lt;/h3&gt; 
&lt;p&gt;Check these in order:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Make sure &lt;code&gt;DISCORD_BOT_TOKEN&lt;/code&gt; and &lt;code&gt;DISCORD_CHANNEL_ID&lt;/code&gt; are set in &lt;code&gt;.env&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Verify &lt;code&gt;discord.js&lt;/code&gt; is installed: &lt;code&gt;npm ls discord.js&lt;/code&gt;. If missing, run &lt;code&gt;npm install discord.js&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;If slash commands don&#39;t appear, set &lt;code&gt;DISCORD_GUILD_ID&lt;/code&gt; — without it, global commands can take up to 1 hour to propagate. Guild-specific commands register instantly&lt;/li&gt; 
 &lt;li&gt;Confirm the bot was invited with &lt;code&gt;bot&lt;/code&gt; + &lt;code&gt;applications.commands&lt;/code&gt; scopes and has &lt;code&gt;Send Messages&lt;/code&gt; + &lt;code&gt;Embed Links&lt;/code&gt; permissions in the target channel&lt;/li&gt; 
 &lt;li&gt;Check server logs for &lt;code&gt;[Discord] Bot logged in as ...&lt;/code&gt; on startup. If you see &lt;code&gt;[Discord] discord.js not installed&lt;/code&gt;, install it and restart&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Webhook-only fallback:&lt;/strong&gt; If you just want alerts without slash commands, set &lt;code&gt;DISCORD_WEBHOOK_URL&lt;/code&gt; instead of the bot token. No &lt;code&gt;discord.js&lt;/code&gt; needed.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;p&gt;The &lt;code&gt;docs/&lt;/code&gt; folder contains dashboard screenshots referenced by this README:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;File&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;docs/dashboard.png&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Full dashboard — hero image at the top of this README&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;docs/boot.png&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Cinematic boot sequence animation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;docs/map.png&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;D3 world map with marker types and flight arcs&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;docs/globe.png&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;3D WebGL globe view with atmosphere glow and markers&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;To update them: run the dashboard, wait for a sweep to complete, then use your browser&#39;s DevTools (&lt;code&gt;F12&lt;/code&gt; → &lt;code&gt;Ctrl+Shift+P&lt;/code&gt; → &quot;Capture full size screenshot&quot;) or a tool like &lt;a href=&quot;https://www.cockos.com/licecap/&quot;&gt;LICEcap&lt;/a&gt; for GIFs.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Found a bug? Want to add a 28th source? PRs welcome. Each source is a standalone module in &lt;code&gt;apis/sources/&lt;/code&gt; — just export a &lt;code&gt;briefing()&lt;/code&gt; function that returns structured data and add it to the orchestrator in &lt;code&gt;apis/briefing.mjs&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;If you find this useful, a star helps others find it too.&lt;/p&gt; 
&lt;p&gt;For contribution guidelines, review expectations, and source-add rules, see &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;. For security reports, see &lt;code&gt;SECURITY.md&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Contact&lt;/h2&gt; 
&lt;p&gt;For partnerships, integrations, or other non-issue inquiries, you can reach me at &lt;code&gt;celesthioailabs@gmail.com&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;For bugs and feature requests, please use GitHub Issues so discussion stays visible and actionable.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;a href=&quot;https://www.star-history.com/?repos=calesthio%2FCrucix&amp;amp;type=date&amp;amp;legend=top-left&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://api.star-history.com/image?repos=calesthio/Crucix&amp;amp;type=date&amp;amp;theme=dark&amp;amp;legend=top-left&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/image?repos=calesthio/Crucix&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/image?repos=calesthio/Crucix&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;AGPL-3.0&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>eyaltoledano/claude-task-master</title>
      <link>https://github.com/eyaltoledano/claude-task-master</link>
      <description>&lt;p&gt;An AI-powered task-management system you can drop into Cursor, Lovable, Windsurf, Roo, and others.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a name=&quot;readme-top&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://trendshift.io/repositories/13971&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/13971&quot; alt=&quot;eyaltoledano%2Fclaude-task-master | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://tryhamster.com/product/taskmaster&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/images/logo.png?raw=true&quot; alt=&quot;Taskmaster logo&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;b&gt;Taskmaster&lt;/b&gt;: A task management system for AI-driven development, designed to work seamlessly with any AI chat. &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://discord.gg/taskmasterai&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://dcbadge.limes.pink/api/server/https://discord.gg/taskmasterai?style=flat&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;https://tryhamster.com/docs/taskmaster&quot; target=&quot;_blank&quot;&gt;Docs&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/eyaltoledano/claude-task-master/actions/workflows/ci.yml&quot;&gt;&lt;img src=&quot;https://github.com/eyaltoledano/claude-task-master/actions/workflows/ci.yml/badge.svg?sanitize=true&quot; alt=&quot;CI&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/eyaltoledano/claude-task-master/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/eyaltoledano/claude-task-master?style=social&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://badge.fury.io/js/task-master-ai&quot;&gt;&lt;img src=&quot;https://badge.fury.io/js/task-master-ai.svg?sanitize=true&quot; alt=&quot;npm version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT%20with%20Commons%20Clause-blue.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.npmjs.com/package/task-master-ai&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/d18m/task-master-ai?style=flat&quot; alt=&quot;NPM Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/task-master-ai&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dm/task-master-ai?style=flat&quot; alt=&quot;NPM Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/task-master-ai&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dw/task-master-ai?style=flat&quot; alt=&quot;NPM Downloads&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;By &lt;a href=&quot;https://x.com/eyaltoledano&quot;&gt;@eyaltoledano&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://x.com/RalphEcom&quot;&gt;@RalphEcom&lt;/a&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://x.com/eyaltoledano&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/follow/eyaltoledano&quot; alt=&quot;Twitter Follow&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://x.com/RalphEcom&quot;&gt;&lt;img src=&quot;https://img.shields.io/twitter/follow/RalphEcom&quot; alt=&quot;Twitter Follow&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;A task management system for AI-driven development with Claude, designed to work seamlessly with Cursor AI.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;📚 &lt;strong&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster&quot;&gt;View Full Documentation&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;h3&gt;Quick Links&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/getting-started/quick-start/quick-start&quot;&gt;Quick Start Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/getting-started/quick-start/installation&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/getting-started/api-keys&quot;&gt;API Keys &amp;amp; Providers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/ide-setup/supported-editors&quot;&gt;Supported Editors&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/capabilities/mcp&quot;&gt;MCP Tools Reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/capabilities/cli-root-commands&quot;&gt;CLI Commands Reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/capabilities/task-structure&quot;&gt;Task Structure&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/task-workflow/dependencies&quot;&gt;Task Dependencies&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/task-workflow/tags&quot;&gt;Tags &amp;amp; Workstreams&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/task-workflow/research&quot;&gt;Research Command&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/automation/loop&quot;&gt;Loop Command&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/ai-providers/overview&quot;&gt;AI Providers Overview&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/team/overview&quot;&gt;Team Collaboration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/best-practices/index&quot;&gt;Best Practices&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/docs/taskmaster/getting-started/faq&quot;&gt;FAQ&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/CHANGELOG.md&quot;&gt;Changelog&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;More from Hamster&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/product/studio&quot;&gt;Hamster Studio&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/methods&quot;&gt;Product &amp;amp; Engineering Methods&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/skills&quot;&gt;Product &amp;amp; Engineering Skills&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://tryhamster.com/pricing&quot;&gt;Hamster Pricing&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Quick Install for Cursor 1.0+ (One-Click)&lt;/h4&gt; 
&lt;p&gt;&lt;a href=&quot;https://cursor.com/en/install-mcp?name=task-master-ai&amp;amp;config=eyJjb21tYW5kIjoibnB4IC15IC0tcGFja2FnZT10YXNrLW1hc3Rlci1haSB0YXNrLW1hc3Rlci1haSIsImVudiI6eyJBTlRIUk9QSUNfQVBJX0tFWSI6IllPVVJfQU5USFJPUElDX0FQSV9LRVlfSEVSRSIsIlBFUlBMRVhJVFlfQVBJX0tFWSI6IllPVVJfUEVSUExFWElUWV9BUElfS0VZX0hFUkUiLCJPUEVOQUlfQVBJX0tFWSI6IllPVVJfT1BFTkFJX0tFWV9IRVJFIiwiR09PR0xFX0FQSV9LRVkiOiJZT1VSX0dPT0dMRV9LRVlfSEVSRSIsIk1JU1RSQUxfQVBJX0tFWSI6IllPVVJfTUlTVFJBTF9LRVlfSEVSRSIsIkdST1FfQVBJX0tFWSI6IllPVVJfR1JPUV9LRVlfSEVSRSIsIk9QRU5ST1VURVJfQVBJX0tFWSI6IllPVVJfT1BFTlJPVVRFUl9LRVlfSEVSRSIsIlhBSV9BUElfS0VZIjoiWU9VUl9YQUlfS0VZX0hFUkUiLCJBWlVSRV9PUEVOQUlfQVBJX0tFWSI6IllPVVJfQVpVUkVfS0VZX0hFUkUiLCJPTExBTUFfQVBJX0tFWSI6IllPVVJfT0xMQU1BX0FQSV9LRVlfSEVSRSJ9fQ%3D%3D&quot;&gt;&lt;img src=&quot;https://cursor.com/deeplink/mcp-install-dark.svg?sanitize=true&quot; alt=&quot;Add task-master-ai MCP server to Cursor&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; After clicking the link, you&#39;ll still need to add your API keys to the configuration. The link installs the MCP server with placeholder keys that you&#39;ll need to replace with your actual API keys.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Claude Code Quick Install&lt;/h4&gt; 
&lt;p&gt;For Claude Code users:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;claude mcp add taskmaster-ai -- npx -y task-master-ai
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Don&#39;t forget to add your API keys to the configuration:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;in the root .env of your Project&lt;/li&gt; 
 &lt;li&gt;in the &quot;env&quot; section of your mcp config for taskmaster-ai&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Requirements&lt;/h2&gt; 
&lt;p&gt;Taskmaster utilizes AI across several commands, and those require a separate API key. You can use a variety of models from different AI providers provided you add your API keys. For example, if you want to use Claude 3.7, you&#39;ll need an Anthropic API key.&lt;/p&gt; 
&lt;p&gt;You can define 3 types of models to be used: the main model, the research model, and the fallback model (in case either the main or research fail). Whatever model you use, its provider API key must be present in either mcp.json or .env.&lt;/p&gt; 
&lt;p&gt;At least one (1) of the following is required:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Anthropic API key (Claude API)&lt;/li&gt; 
 &lt;li&gt;OpenAI API key&lt;/li&gt; 
 &lt;li&gt;Google Gemini API key&lt;/li&gt; 
 &lt;li&gt;Perplexity API key (for research model)&lt;/li&gt; 
 &lt;li&gt;xAI API Key (for research or main model)&lt;/li&gt; 
 &lt;li&gt;OpenRouter API Key (for research or main model)&lt;/li&gt; 
 &lt;li&gt;Claude Code (no API key required - requires Claude Code CLI)&lt;/li&gt; 
 &lt;li&gt;Codex CLI (OAuth via ChatGPT subscription - requires Codex CLI)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Using the research model is optional but highly recommended. You will need at least ONE API key (unless using Claude Code or Codex CLI with OAuth). Adding all API keys enables you to seamlessly switch between model providers at will.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;h3&gt;Option 1: MCP (Recommended)&lt;/h3&gt; 
&lt;p&gt;MCP (Model Control Protocol) lets you run Task Master directly from your editor.&lt;/p&gt; 
&lt;h4&gt;1. Add your MCP config at the following path depending on your editor&lt;/h4&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Editor&lt;/th&gt; 
   &lt;th&gt;Scope&lt;/th&gt; 
   &lt;th&gt;Linux/macOS Path&lt;/th&gt; 
   &lt;th&gt;Windows Path&lt;/th&gt; 
   &lt;th&gt;Key&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Global&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.cursor/mcp.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;%USERPROFILE%\.cursor\mcp.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;mcpServers&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;Project&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;project_folder&amp;gt;/.cursor/mcp.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;project_folder&amp;gt;\.cursor\mcp.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;mcpServers&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Windsurf&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Global&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.codeium/windsurf/mcp_config.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;%USERPROFILE%\.codeium\windsurf\mcp_config.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;mcpServers&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;VS Code&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Project&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;project_folder&amp;gt;/.vscode/mcp.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;&amp;lt;project_folder&amp;gt;\.vscode\mcp.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;servers&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Q CLI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Global&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;~/.aws/amazonq/mcp.json&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;mcpServers&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h5&gt;Manual Configuration&lt;/h5&gt; 
&lt;h6&gt;Cursor &amp;amp; Windsurf &amp;amp; Q Developer CLI (&lt;code&gt;mcpServers&lt;/code&gt;)&lt;/h6&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;task-master-ai&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [&quot;-y&quot;, &quot;task-master-ai&quot;],
      &quot;env&quot;: {
        // &quot;TASK_MASTER_TOOLS&quot;: &quot;all&quot;, // Options: &quot;all&quot;, &quot;standard&quot;, &quot;core&quot;, or comma-separated list of tools
        &quot;ANTHROPIC_API_KEY&quot;: &quot;YOUR_ANTHROPIC_API_KEY_HERE&quot;,
        &quot;PERPLEXITY_API_KEY&quot;: &quot;YOUR_PERPLEXITY_API_KEY_HERE&quot;,
        &quot;OPENAI_API_KEY&quot;: &quot;YOUR_OPENAI_KEY_HERE&quot;,
        &quot;GOOGLE_API_KEY&quot;: &quot;YOUR_GOOGLE_KEY_HERE&quot;,
        &quot;MISTRAL_API_KEY&quot;: &quot;YOUR_MISTRAL_KEY_HERE&quot;,
        &quot;GROQ_API_KEY&quot;: &quot;YOUR_GROQ_KEY_HERE&quot;,
        &quot;OPENROUTER_API_KEY&quot;: &quot;YOUR_OPENROUTER_KEY_HERE&quot;,
        &quot;XAI_API_KEY&quot;: &quot;YOUR_XAI_KEY_HERE&quot;,
        &quot;AZURE_OPENAI_API_KEY&quot;: &quot;YOUR_AZURE_KEY_HERE&quot;,
        &quot;OLLAMA_API_KEY&quot;: &quot;YOUR_OLLAMA_API_KEY_HERE&quot;
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;🔑 Replace &lt;code&gt;YOUR_…_KEY_HERE&lt;/code&gt; with your real API keys. You can remove keys you don&#39;t use.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you see &lt;code&gt;0 tools enabled&lt;/code&gt; in the MCP settings, restart your editor and check that your API keys are correctly configured.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h6&gt;VS Code (&lt;code&gt;servers&lt;/code&gt; + &lt;code&gt;type&lt;/code&gt;)&lt;/h6&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;servers&quot;: {
    &quot;task-master-ai&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [&quot;-y&quot;, &quot;task-master-ai&quot;],
      &quot;env&quot;: {
        // &quot;TASK_MASTER_TOOLS&quot;: &quot;all&quot;, // Options: &quot;all&quot;, &quot;standard&quot;, &quot;core&quot;, or comma-separated list of tools
        &quot;ANTHROPIC_API_KEY&quot;: &quot;YOUR_ANTHROPIC_API_KEY_HERE&quot;,
        &quot;PERPLEXITY_API_KEY&quot;: &quot;YOUR_PERPLEXITY_API_KEY_HERE&quot;,
        &quot;OPENAI_API_KEY&quot;: &quot;YOUR_OPENAI_KEY_HERE&quot;,
        &quot;GOOGLE_API_KEY&quot;: &quot;YOUR_GOOGLE_KEY_HERE&quot;,
        &quot;MISTRAL_API_KEY&quot;: &quot;YOUR_MISTRAL_KEY_HERE&quot;,
        &quot;GROQ_API_KEY&quot;: &quot;YOUR_GROQ_KEY_HERE&quot;,
        &quot;OPENROUTER_API_KEY&quot;: &quot;YOUR_OPENROUTER_KEY_HERE&quot;,
        &quot;XAI_API_KEY&quot;: &quot;YOUR_XAI_KEY_HERE&quot;,
        &quot;AZURE_OPENAI_API_KEY&quot;: &quot;YOUR_AZURE_KEY_HERE&quot;,
        &quot;OLLAMA_API_KEY&quot;: &quot;YOUR_OLLAMA_API_KEY_HERE&quot;
      },
      &quot;type&quot;: &quot;stdio&quot;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;🔑 Replace &lt;code&gt;YOUR_…_KEY_HERE&lt;/code&gt; with your real API keys. You can remove keys you don&#39;t use.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;2. (Cursor-only) Enable Taskmaster MCP&lt;/h4&gt; 
&lt;p&gt;Open Cursor Settings (Ctrl+Shift+J) ➡ Click on MCP tab on the left ➡ Enable task-master-ai with the toggle&lt;/p&gt; 
&lt;h4&gt;3. (Optional) Configure the models you want to use&lt;/h4&gt; 
&lt;p&gt;In your editor&#39;s AI chat pane, say:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;Change the main, research and fallback models to &amp;lt;model_name&amp;gt;, &amp;lt;model_name&amp;gt; and &amp;lt;model_name&amp;gt; respectively.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For example, to use Claude Code (no API key required):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;Change the main model to claude-code/sonnet
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/docs/models.md&quot;&gt;Table of available models&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/docs/examples/claude-code-usage.md&quot;&gt;Claude Code setup&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;4. Initialize Task Master&lt;/h4&gt; 
&lt;p&gt;In your editor&#39;s AI chat pane, say:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;Initialize taskmaster-ai in my project
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;5. Make sure you have a PRD (Recommended)&lt;/h4&gt; 
&lt;p&gt;For &lt;strong&gt;new projects&lt;/strong&gt;: Create your PRD at &lt;code&gt;.taskmaster/docs/prd.txt&lt;/code&gt;. For &lt;strong&gt;existing projects&lt;/strong&gt;: You can use &lt;code&gt;scripts/prd.txt&lt;/code&gt; or migrate with &lt;code&gt;task-master migrate&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;An example PRD template is available after initialization in &lt;code&gt;.taskmaster/templates/example_prd.txt&lt;/code&gt;.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;While a PRD is recommended for complex projects, you can always create individual tasks by asking &quot;Can you help me implement [description of what you want to do]?&quot; in chat.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;strong&gt;Always start with a detailed PRD.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The more detailed your PRD, the better the generated tasks will be.&lt;/p&gt; 
&lt;h4&gt;6. Common Commands&lt;/h4&gt; 
&lt;p&gt;Use your AI assistant to:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Parse requirements: &lt;code&gt;Can you parse my PRD at scripts/prd.txt?&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Plan next step: &lt;code&gt;What&#39;s the next task I should work on?&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Implement a task: &lt;code&gt;Can you help me implement task 3?&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;View multiple tasks: &lt;code&gt;Can you show me tasks 1, 3, and 5?&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Expand a task: &lt;code&gt;Can you help me expand task 4?&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Research fresh information&lt;/strong&gt;: &lt;code&gt;Research the latest best practices for implementing JWT authentication with Node.js&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Research with context&lt;/strong&gt;: &lt;code&gt;Research React Query v5 migration strategies for our current API implementation in src/api.js&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/docs/examples.md&quot;&gt;More examples on how to use Task Master in chat&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Option 2: Using Command Line&lt;/h3&gt; 
&lt;h4&gt;Installation&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install globally
npm install -g task-master-ai

# OR install locally within your project
npm install task-master-ai
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Initialize a new project&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# If installed globally
task-master init

# If installed locally
npx task-master init

# Initialize project with specific rules
task-master init --rules cursor,windsurf,vscode
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This will prompt you for project details and set up a new project with the necessary files and structure.&lt;/p&gt; 
&lt;h4&gt;Common Commands&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Initialize a new project
task-master init

# Parse a PRD and generate tasks
task-master parse-prd your-prd.txt

# List all tasks
task-master list

# Show the next task to work on
task-master next

# Show specific task(s) - supports comma-separated IDs
task-master show 1,3,5

# Research fresh information with project context
task-master research &quot;What are the latest best practices for JWT authentication?&quot;

# Move tasks between tags (cross-tag movement)
task-master move --from=5 --from-tag=backlog --to-tag=in-progress
task-master move --from=5,6,7 --from-tag=backlog --to-tag=done --with-dependencies
task-master move --from=5 --from-tag=backlog --to-tag=in-progress --ignore-dependencies

# Add rules after initialization
task-master rules add windsurf,roo,vscode
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Tool Loading Configuration&lt;/h2&gt; 
&lt;h3&gt;Optimizing MCP Tool Loading&lt;/h3&gt; 
&lt;p&gt;Task Master&#39;s MCP server supports selective tool loading to reduce context window usage. By default, all 36 tools are loaded (~21,000 tokens) to maintain backward compatibility with existing installations.&lt;/p&gt; 
&lt;p&gt;You can optimize performance by configuring the &lt;code&gt;TASK_MASTER_TOOLS&lt;/code&gt; environment variable:&lt;/p&gt; 
&lt;h3&gt;Available Modes&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Mode&lt;/th&gt; 
   &lt;th&gt;Tools&lt;/th&gt; 
   &lt;th&gt;Context Usage&lt;/th&gt; 
   &lt;th&gt;Use Case&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;all&lt;/code&gt; (default)&lt;/td&gt; 
   &lt;td&gt;36&lt;/td&gt; 
   &lt;td&gt;~21,000 tokens&lt;/td&gt; 
   &lt;td&gt;Complete feature set - all tools available&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;standard&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;15&lt;/td&gt; 
   &lt;td&gt;~10,000 tokens&lt;/td&gt; 
   &lt;td&gt;Common task management operations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;core&lt;/code&gt; (or &lt;code&gt;lean&lt;/code&gt;)&lt;/td&gt; 
   &lt;td&gt;7&lt;/td&gt; 
   &lt;td&gt;~5,000 tokens&lt;/td&gt; 
   &lt;td&gt;Essential daily development workflow&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;custom&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Variable&lt;/td&gt; 
   &lt;td&gt;Variable&lt;/td&gt; 
   &lt;td&gt;Comma-separated list of specific tools&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Configuration Methods&lt;/h3&gt; 
&lt;h4&gt;Method 1: Environment Variable in MCP Configuration&lt;/h4&gt; 
&lt;p&gt;Add &lt;code&gt;TASK_MASTER_TOOLS&lt;/code&gt; to your MCP configuration file&#39;s &lt;code&gt;env&lt;/code&gt; section:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-jsonc&quot;&gt;{
  &quot;mcpServers&quot;: {  // or &quot;servers&quot; for VS Code
    &quot;task-master-ai&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [&quot;-y&quot;, &quot;task-master-ai&quot;],
      &quot;env&quot;: {
        &quot;TASK_MASTER_TOOLS&quot;: &quot;standard&quot;,  // Options: &quot;all&quot;, &quot;standard&quot;, &quot;core&quot;, &quot;lean&quot;, or comma-separated list
        &quot;ANTHROPIC_API_KEY&quot;: &quot;your-key-here&quot;,
        // ... other API keys
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Method 2: Claude Code CLI (One-Time Setup)&lt;/h4&gt; 
&lt;p&gt;For Claude Code users, you can set the mode during installation:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Core mode example (~70% token reduction)
claude mcp add task-master-ai --scope user \
  --env TASK_MASTER_TOOLS=&quot;core&quot; \
  -- npx -y task-master-ai@latest

# Custom tools example
claude mcp add task-master-ai --scope user \
  --env TASK_MASTER_TOOLS=&quot;get_tasks,next_task,set_task_status&quot; \
  -- npx -y task-master-ai@latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Tool Sets Details&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Core Tools (7):&lt;/strong&gt; &lt;code&gt;get_tasks&lt;/code&gt;, &lt;code&gt;next_task&lt;/code&gt;, &lt;code&gt;get_task&lt;/code&gt;, &lt;code&gt;set_task_status&lt;/code&gt;, &lt;code&gt;update_subtask&lt;/code&gt;, &lt;code&gt;parse_prd&lt;/code&gt;, &lt;code&gt;expand_task&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Standard Tools (15):&lt;/strong&gt; All core tools plus &lt;code&gt;initialize_project&lt;/code&gt;, &lt;code&gt;analyze_project_complexity&lt;/code&gt;, &lt;code&gt;expand_all&lt;/code&gt;, &lt;code&gt;add_subtask&lt;/code&gt;, &lt;code&gt;remove_task&lt;/code&gt;, &lt;code&gt;generate&lt;/code&gt;, &lt;code&gt;add_task&lt;/code&gt;, &lt;code&gt;complexity_report&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;All Tools (36):&lt;/strong&gt; Complete set including project setup, task management, analysis, dependencies, tags, research, and more&lt;/p&gt; 
&lt;h3&gt;Recommendations&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;New users&lt;/strong&gt;: Start with &lt;code&gt;&quot;standard&quot;&lt;/code&gt; mode for a good balance&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Large projects&lt;/strong&gt;: Use &lt;code&gt;&quot;core&quot;&lt;/code&gt; mode to minimize token usage&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Complex workflows&lt;/strong&gt;: Use &lt;code&gt;&quot;all&quot;&lt;/code&gt; mode or custom selection&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Backward compatibility&lt;/strong&gt;: If not specified, defaults to &lt;code&gt;&quot;all&quot;&lt;/code&gt; mode&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Claude Code Support&lt;/h2&gt; 
&lt;p&gt;Task Master now supports Claude models through the Claude Code CLI, which requires no API key:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Models&lt;/strong&gt;: &lt;code&gt;claude-code/opus&lt;/code&gt; and &lt;code&gt;claude-code/sonnet&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Requirements&lt;/strong&gt;: Claude Code CLI installed&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Benefits&lt;/strong&gt;: No API key needed, uses your local Claude instance&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/docs/examples/claude-code-usage.md&quot;&gt;Learn more about Claude Code setup&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;h3&gt;If &lt;code&gt;task-master init&lt;/code&gt; doesn&#39;t respond&lt;/h3&gt; 
&lt;p&gt;Try running it with Node directly:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node node_modules/claude-task-master/scripts/init.js
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Or clone the repository and run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/eyaltoledano/claude-task-master.git
cd claude-task-master
node scripts/init.js
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Join Our Team&lt;/h2&gt; 
&lt;a href=&quot;https://tryhamster.com&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/images/hamster-hiring.png&quot; alt=&quot;Join Hamster&#39;s founding team&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;a href=&quot;https://github.com/eyaltoledano/claude-task-master/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=eyaltoledano/claude-task-master&quot; alt=&quot;Task Master project contributors&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.star-history.com/#eyaltoledano/claude-task-master&amp;amp;Timeline&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=eyaltoledano/claude-task-master&amp;amp;type=Timeline&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Licensing&lt;/h2&gt; 
&lt;p&gt;Task Master is licensed under the MIT License with Commons Clause. This means you can:&lt;/p&gt; 
&lt;p&gt;✅ &lt;strong&gt;Allowed&lt;/strong&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Use Task Master for any purpose (personal, commercial, academic)&lt;/li&gt; 
 &lt;li&gt;Modify the code&lt;/li&gt; 
 &lt;li&gt;Distribute copies&lt;/li&gt; 
 &lt;li&gt;Create and sell products built using Task Master&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;❌ &lt;strong&gt;Not Allowed&lt;/strong&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Sell Task Master itself&lt;/li&gt; 
 &lt;li&gt;Offer Task Master as a hosted service&lt;/li&gt; 
 &lt;li&gt;Create competing products based on Task Master&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file for the complete license text and &lt;a href=&quot;https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/docs/licensing.md&quot;&gt;licensing details&lt;/a&gt; for more information.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>DietrichGebert/ponytail</title>
      <link>https://github.com/DietrichGebert/ponytail</link>
      <description>&lt;p&gt;Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;assets/logo-dark.png&quot; /&gt; 
  &lt;img src=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/assets/logo.png&quot; width=&quot;220&quot; alt=&quot;Ponytail, the lazy senior dev&quot; /&gt; 
 &lt;/picture&gt; &lt;/p&gt; 
&lt;h1 align=&quot;center&quot;&gt;Ponytail&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;em&gt;He says nothing. He writes one line. It works.&lt;/em&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/stars/DietrichGebert/ponytail?style=flat-square&amp;amp;color=111111&amp;amp;label=stars&quot; alt=&quot;Stars&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/DietrichGebert/ponytail?style=flat-square&amp;amp;color=111111&amp;amp;label=release&quot; alt=&quot;Release&quot; /&gt; &lt;img src=&quot;https://img.shields.io/npm/v/@dietrichgebert/ponytail?style=flat-square&amp;amp;color=111111&amp;amp;label=npm&quot; alt=&quot;npm&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/works%20with-20%20agents-111111?style=flat-square&quot; alt=&quot;Works with 20 agents&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/license-MIT-111111?style=flat-square&quot; alt=&quot;MIT license&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/50668&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/trendshift/repositories/50668/daily&quot; alt=&quot;DietrichGebert/ponytail | Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://trendshift.io/repositories/50668&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/trendshift/repositories/50668/weekly&quot; alt=&quot;DietrichGebert/ponytail | Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;~54% less code (up to 94%) · ~20% cheaper · ~27% faster · 100% safe&lt;/strong&gt;&lt;br /&gt; &lt;sub&gt;Measured on real Claude Code sessions editing a real open-source repo (FastAPI + React), against the same agent with no skill. ~54% is the mean across 12 feature tasks (Haiku 4.5, n=4); it reaches 94% where an agent over-builds (a date picker) and is near zero where the code is already minimal. ponytail keeps every safety guard while a bare &quot;write one-liners&quot; prompt drops one. (The earlier single-shot benchmark reported 80-94% as a flat figure; against a fair agentic baseline that is the per-task ceiling, not the average.) &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/benchmarks/results/2026-06-18-agentic.md&quot;&gt;Full writeup&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/benchmarks/&quot;&gt;reproduce it&lt;/a&gt;.&lt;/sub&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;sub&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/README.es.md&quot;&gt;Español&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/README.ko.md&quot;&gt;한국어&lt;/a&gt;&lt;/sub&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://ponytail.dev/soon&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/assets/waitlist-banner.png&quot; alt=&quot;Something&#39;s coming, join the waitlist&quot; width=&quot;760&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;You know him. Long ponytail. Oval glasses. Has been at the company longer than the version control. You show him fifty lines; he looks at them, says nothing, and replaces them with one.&lt;/p&gt; 
&lt;p&gt;Ponytail puts him inside your AI agent.&lt;/p&gt; 
&lt;h2&gt;Before / after&lt;/h2&gt; 
&lt;p&gt;You ask for a date picker. Your agent installs flatpickr, writes a wrapper component, adds a stylesheet, and starts a discussion about timezones.&lt;/p&gt; 
&lt;p&gt;With ponytail:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;!-- ponytail: browser has one --&amp;gt;
&amp;lt;input type=&quot;date&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;More survivors in &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/examples/&quot;&gt;examples/&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Numbers&lt;/h2&gt; 
&lt;p&gt;The honest measurement is a real agent doing real work: a headless Claude Code session editing &lt;a href=&quot;https://github.com/fastapi/full-stack-fastapi-template&quot;&gt;tiangolo&#39;s full-stack-fastapi-template&lt;/a&gt; (a real FastAPI + React repo), scored on the &lt;code&gt;git diff&lt;/code&gt; it leaves behind. Twelve feature tickets, the same agent with and without the skill, n=4, Haiku 4.5.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/assets/benchmark-agentic.svg?sanitize=true&quot; width=&quot;860&quot; alt=&quot;Each arm as a percent of the no-skill baseline across LOC, tokens, cost and time (Haiku 4.5). ponytail is lowest on every metric (LOC 46%, tokens 78%, cost 80%, time 73%); caveman rises above 100% on tokens, cost and time; yagni-oneliner LOC 67%. Safety, separate adversarial tier: baseline, caveman and ponytail 100%, yagni-oneliner 95%.&quot; /&gt; &lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;vs no-skill baseline&lt;/th&gt; 
   &lt;th style=&quot;text-align:right&quot;&gt;LOC&lt;/th&gt; 
   &lt;th style=&quot;text-align:right&quot;&gt;tokens&lt;/th&gt; 
   &lt;th style=&quot;text-align:right&quot;&gt;cost&lt;/th&gt; 
   &lt;th style=&quot;text-align:right&quot;&gt;time&lt;/th&gt; 
   &lt;th style=&quot;text-align:right&quot;&gt;safe&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;ponytail&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;&lt;strong&gt;-54%&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;&lt;strong&gt;-22%&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;&lt;strong&gt;-20%&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;&lt;strong&gt;-27%&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;caveman (terse-prose control)&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;-20%&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;+7%&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;+3%&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;+2%&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;100%&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&quot;YAGNI + one-liners&quot; prompt&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;-33%&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;-14%&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;-21%&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;-30%&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;95%&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;ponytail is the only arm that cuts every metric, and the only one that stays fully safe while doing it. The cut is biggest where there is a real over-build trap (date picker 404 to 23 lines, color picker 287 to 23, because it reaches for a native &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; instead of a component) and near zero on code that is already minimal. Full method, per-task tables, and limitations: &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/benchmarks/results/2026-06-18-agentic.md&quot;&gt;benchmarks/results/2026-06-18-agentic.md&lt;/a&gt;.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Older single-shot numbers (isolated generation)&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Five everyday tasks, three models, three arms (no skill, &lt;a href=&quot;https://github.com/JuliusBrussee/caveman&quot;&gt;caveman&lt;/a&gt;, ponytail), ten runs, median reported. One prompt, one completion, counting lines of the answer:&lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/assets/benchmark-3model.svg?sanitize=true&quot; width=&quot;860&quot; alt=&quot;Median lines of code per arm across Haiku, Sonnet and Opus&quot; /&gt; &lt;/p&gt; 
 &lt;p&gt;This showed &lt;strong&gt;80-94% less code&lt;/strong&gt;. &lt;a href=&quot;https://github.com/DietrichGebert/ponytail/issues/126&quot;&gt;#126&lt;/a&gt; fairly pointed out that the bare-model baseline pads its answer with prose and options, so that gap is partly a conversational-baseline artifact. The agentic numbers above are the corrected, defensible version. Reproduce the single-shot run with &lt;code&gt;npx promptfoo eval -c benchmarks/promptfooconfig.yaml&lt;/code&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;p&gt;&lt;strong&gt;The rule was never &quot;fewest tokens.&quot;&lt;/strong&gt; It is: write only what the task needs, and never cut validation, error handling, security, or accessibility. The code ends up small because it is necessary, not golfed. Lower cost and latency are a side effect on the models that follow the ladder; a terse reasoning model that spends thinking tokens deliberating the rungs can go the other way (on GPT-5.5 it does).&lt;/p&gt; 
&lt;h2&gt;How it works&lt;/h2&gt; 
&lt;p&gt;Before writing code, the agent stops at the first rung that holds:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;1. Does this need to exist?   → no: skip it (YAGNI)
2. Already in this codebase?  → reuse it, don&#39;t rewrite
3. Stdlib does it?            → use it
4. Native platform feature?   → use it
5. Installed dependency?      → use it
6. One line?                  → one line
7. Only then: the minimum that works
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The ladder runs &lt;em&gt;after&lt;/em&gt; it understands the problem, not instead of it: it reads the code the change touches and traces the real flow before picking a rung. Lazy about the solution, never about reading.&lt;/p&gt; 
&lt;p&gt;Lazy, not negligent: trust-boundary validation, data-loss handling, security, and accessibility are never on the chopping block.&lt;/p&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;p&gt;The most effort ponytail will ever ask of you:&lt;/p&gt; 
&lt;p&gt;The Claude Code and Codex plugins run two tiny Node.js lifecycle hooks, so &lt;code&gt;node&lt;/code&gt; needs to be on your PATH (note for Nix/nvm users: it must be on the non-interactive shell&#39;s PATH). If it isn&#39;t, the skills still work, the always-on activation just stays quiet instead of erroring on every prompt.&lt;/p&gt; 
&lt;h3&gt;Claude Code&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;/plugin marketplace add DietrichGebert/ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code&gt;/plugin install ponytail@ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;(You have to send two separate prompts for the install to work)&lt;/p&gt; 
&lt;p&gt;Same steps in the Claude Code Desktop app&#39;s Code tab: type the two &lt;code&gt;/plugin&lt;/code&gt; commands above into the prompt box, or click the &lt;strong&gt;+&lt;/strong&gt; button next to it, choose &lt;strong&gt;Plugins&lt;/strong&gt; → &lt;strong&gt;Add plugin&lt;/strong&gt; to browse your configured marketplaces, and manage marketplaces from &lt;strong&gt;Customize&lt;/strong&gt; in the sidebar.&lt;/p&gt; 
&lt;h3&gt;Codex&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Run &lt;code&gt;codex&lt;/code&gt; and open &lt;code&gt;/hooks&lt;/code&gt;, review and trust its two lifecycle hooks, and start a new thread.&lt;/p&gt; 
&lt;p&gt;This same install also covers the Codex desktop app: restart the app after installing and it picks up the plugin.&lt;/p&gt; 
&lt;h3&gt;GitHub Copilot CLI&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;copilot plugin marketplace add DietrichGebert/ponytail
copilot plugin install ponytail@ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;In an interactive Copilot CLI session, use the slash equivalents:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Copilot CLI namespaces plugin commands by plugin name. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;/ponytail:ponytail ultra
/ponytail:ponytail-review
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Pi agent harness&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;pi install git:github.com/DietrichGebert/ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;OpenCode&lt;/h3&gt; 
&lt;p&gt;Add to &lt;code&gt;opencode.json&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{ &quot;plugin&quot;: [&quot;@dietrichgebert/ponytail&quot;] }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Run from a checkout instead (the plugin reuses &lt;code&gt;hooks/&lt;/code&gt; and &lt;code&gt;skills/&lt;/code&gt;):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{ &quot;plugin&quot;: [&quot;./.opencode/plugins/ponytail.mjs&quot;] }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Injects the ruleset every turn at the active level; adds the &lt;code&gt;/ponytail&lt;/code&gt; commands (see &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/#commands&quot;&gt;Commands&lt;/a&gt;). OpenCode also auto-loads this repo&#39;s &lt;code&gt;AGENTS.md&lt;/code&gt;, so the rules hold even without the plugin. The plugin adds the &lt;code&gt;lite/full/ultra/off&lt;/code&gt; levels.&lt;/p&gt; 
&lt;p&gt;The &lt;code&gt;./&lt;/code&gt; path resolves against your project&#39;s &lt;code&gt;opencode.json&lt;/code&gt;; to share one checkout across projects, point it at the absolute path of the &lt;code&gt;.mjs&lt;/code&gt; instead (it finds its &lt;code&gt;hooks/&lt;/code&gt; and &lt;code&gt;skills/&lt;/code&gt; relative to its own file).&lt;/p&gt; 
&lt;h3&gt;Gemini CLI&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gemini extensions install https://github.com/DietrichGebert/ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Loads the ruleset as always-on context every session and registers the &lt;code&gt;/ponytail&lt;/code&gt; commands; the &lt;code&gt;skills/&lt;/code&gt; ship too, activated when a task needs them. The Gemini adapter intentionally does not ship a root &lt;code&gt;hooks/hooks.json&lt;/code&gt;: Gemini auto-loads that path, while Ponytail&#39;s lifecycle hooks use Claude/Codex event names.&lt;/p&gt; 
&lt;h3&gt;Qoder&lt;/h3&gt; 
&lt;p&gt;Qoder auto-loads &lt;code&gt;AGENTS.md&lt;/code&gt; from the repo root as always-on context, so running ponytail from a checkout works with zero setup. For per-project rules, copy &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.qoder/rules/ponytail.md&quot;&gt;&lt;code&gt;.qoder/rules/ponytail.md&lt;/code&gt;&lt;/a&gt; into your project&#39;s &lt;code&gt;.qoder/rules/&lt;/code&gt;. The six ponytail skills (&lt;code&gt;/ponytail&lt;/code&gt;, &lt;code&gt;/ponytail-review&lt;/code&gt;, &lt;code&gt;/ponytail-audit&lt;/code&gt;, &lt;code&gt;/ponytail-debt&lt;/code&gt;, &lt;code&gt;/ponytail-gain&lt;/code&gt;, &lt;code&gt;/ponytail-help&lt;/code&gt;) are available via Qoder&#39;s Skill system; the plugin manifest at &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.qoder-plugin/plugin.json&quot;&gt;&lt;code&gt;.qoder-plugin/plugin.json&lt;/code&gt;&lt;/a&gt; points at the &lt;code&gt;skills/&lt;/code&gt; directory.&lt;/p&gt; 
&lt;p&gt;For full plugin-tier support (automatic mode activation + ruleset injection on every prompt), add the hooks from &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/hooks/qoder-hooks.json&quot;&gt;&lt;code&gt;hooks/qoder-hooks.json&lt;/code&gt;&lt;/a&gt; to your &lt;code&gt;.qoder/settings.json&lt;/code&gt;. Replace &lt;code&gt;PONYTAIL_DIR&lt;/code&gt; with the path to your ponytail checkout. Qoder&#39;s &lt;code&gt;UserPromptSubmit&lt;/code&gt; hook activates the default mode on first prompt and injects the ruleset every turn; &lt;code&gt;PreToolUse&lt;/code&gt; with &lt;code&gt;task|Task&lt;/code&gt; matcher injects the ruleset into subagents. Level switches (&lt;code&gt;/ponytail lite|full|ultra|off&lt;/code&gt;) work automatically.&lt;/p&gt; 
&lt;h3&gt;Antigravity CLI&lt;/h3&gt; 
&lt;p&gt;Google is renaming Gemini CLI to Antigravity CLI (the &lt;code&gt;agy&lt;/code&gt; binary); the same extension installs there:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;agy plugin install https://github.com/DietrichGebert/ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It reuses this repo&#39;s &lt;code&gt;gemini-extension.json&lt;/code&gt;. One difference: Antigravity converts the &lt;code&gt;/ponytail&lt;/code&gt; commands into skills, so you type them into the chat (e.g. &lt;code&gt;/ponytail-review&lt;/code&gt; as a message) instead of picking them from a slash menu. Until the migration completes (around June 18, 2026), &lt;code&gt;gemini extensions install&lt;/code&gt; still works too. To run it as an always-on rule instead, drop the ruleset into &lt;code&gt;.agents/rules/&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Hermes Agent&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;hermes plugins install DietrichGebert/ponytail --enable
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Restart Hermes after installing. The plugin injects the active Ponytail mode before each LLM turn, registers the bundled skills as &lt;code&gt;ponytail:&amp;lt;skill&amp;gt;&lt;/code&gt;, and adds &lt;code&gt;/ponytail&lt;/code&gt;, &lt;code&gt;/ponytail-review&lt;/code&gt;, &lt;code&gt;/ponytail-audit&lt;/code&gt;, &lt;code&gt;/ponytail-debt&lt;/code&gt;, &lt;code&gt;/ponytail-gain&lt;/code&gt;, and &lt;code&gt;/ponytail-help&lt;/code&gt;. In shared gateways, restrict &lt;code&gt;/ponytail&lt;/code&gt; to trusted users with Hermes slash-command access controls; runtime mode is process-local.&lt;/p&gt; 
&lt;h3&gt;CodeWhale&lt;/h3&gt; 
&lt;p&gt;Reads &lt;code&gt;AGENTS.md&lt;/code&gt; from the project root, zero setup. Copy &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/AGENTS.md&quot;&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/a&gt; to your project, or run &lt;code&gt;codewhale&lt;/code&gt; from a checkout of this repo. That&#39;s it.&lt;/p&gt; 
&lt;h3&gt;Swival&lt;/h3&gt; 
&lt;p&gt;Stage the collection in your library first, then add the skills you want:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;swival skills add --global https://github.com/DietrichGebert/ponytail  # stage into ~/.config/swival/library
swival skills add ponytail                                             # install the collection into this project
swival skills add --global ponytail                                    # or activate it in every project
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Swival also reads &lt;code&gt;AGENTS.md&lt;/code&gt; from the project root and &lt;code&gt;~/.config/swival/AGENTS.md&lt;/code&gt; globally, the instruction-only fallback.&lt;/p&gt; 
&lt;p&gt;On the command line, use a &lt;code&gt;$&lt;/code&gt; prefix to explicitly activate a skill. For example: &lt;code&gt;$ponytail-review&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Devin CLI&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;devin plugins install DietrichGebert/ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Installs ponytail as a Devin plugin; skills are available as &lt;code&gt;/ponytail:ponytail&lt;/code&gt;, &lt;code&gt;/ponytail:ponytail-review&lt;/code&gt;, and so on.&lt;/p&gt; 
&lt;h3&gt;OpenClaw&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;clawhub install ponytail
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Installs ponytail as an OpenClaw skill from ClawHub; the review, audit, debt, gain, and help skills install the same way (&lt;code&gt;clawhub install ponytail-review&lt;/code&gt;, and so on). OpenClaw applies it on coding tasks and also exposes it as a &lt;code&gt;/ponytail&lt;/code&gt; command. Without ClawHub, copy &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.openclaw/skills/&quot;&gt;&lt;code&gt;.openclaw/skills/ponytail&lt;/code&gt;&lt;/a&gt; into &lt;code&gt;~/.openclaw/skills/&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Grok Build&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;grok plugin install DietrichGebert/ponytail --trust
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Enable the plugin (off by default): &lt;code&gt;/plugins&lt;/code&gt; → Plugins → Space on &lt;code&gt;ponytail&lt;/code&gt;, or in &lt;code&gt;~/.grok/config.toml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[plugins]
enabled = [&quot;ponytail&quot;]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Start a new session (or reload plugins). Skills show as &lt;code&gt;/ponytail&lt;/code&gt;, &lt;code&gt;/ponytail-review&lt;/code&gt;, &lt;code&gt;/ponytail-audit&lt;/code&gt;, &lt;code&gt;/ponytail-debt&lt;/code&gt;, &lt;code&gt;/ponytail-gain&lt;/code&gt;, &lt;code&gt;/ponytail-help&lt;/code&gt;. Verify with &lt;code&gt;grok inspect&lt;/code&gt;. Grok can auto-invoke ponytail for coding tasks from its skill description; use &lt;code&gt;/ponytail&lt;/code&gt; (or &lt;code&gt;/ponytail lite&lt;/code&gt;, &lt;code&gt;/ponytail full&lt;/code&gt;, &lt;code&gt;/ponytail ultra&lt;/code&gt;) when activation needs to be explicit. Grok lifecycle hooks are not used because their SessionStart output cannot inject instructions.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; still works instruction-only from a checkout without the plugin.&lt;/p&gt; 
&lt;p&gt;That was it. He&#39;d be proud. He won&#39;t say it.&lt;/p&gt; 
&lt;p&gt;Active every session, with a handful of commands (see &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/#commands&quot;&gt;Commands&lt;/a&gt;). &lt;code&gt;/ponytail ultra&lt;/code&gt; exists for when the codebase has wronged you personally. Startup and mode-change text shows the current mode.&lt;/p&gt; 
&lt;p&gt;Set the level for every new session with the &lt;code&gt;PONYTAIL_DEFAULT_MODE&lt;/code&gt; env var (&lt;code&gt;lite&lt;/code&gt;/&lt;code&gt;full&lt;/code&gt;/&lt;code&gt;ultra&lt;/code&gt;/&lt;code&gt;off&lt;/code&gt;), or a &lt;code&gt;defaultMode&lt;/code&gt; field in &lt;code&gt;~/.config/ponytail/config.json&lt;/code&gt; (&lt;code&gt;%APPDATA%\ponytail\config.json&lt;/code&gt; on Windows). The default is &lt;code&gt;full&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;While active, the ruleset is also injected into every subagent spawned via the Agent tool. To scope that to specific agent types (say, keep it off read-only search agents), set the &lt;code&gt;PONYTAIL_SUBAGENT_MATCHER&lt;/code&gt; env var to a regex tested against the subagent&#39;s &lt;code&gt;agent_type&lt;/code&gt;. It is unanchored and case-insensitive: &lt;code&gt;explore|general&lt;/code&gt; matches either, &lt;code&gt;^general$&lt;/code&gt; is exact, and plugin agent types look like &lt;code&gt;plugin:name&lt;/code&gt;. Unset means inject into every subagent (the default); an invalid regex, or a subagent whose type the platform doesn&#39;t report, also falls back to injecting.&lt;/p&gt; 
&lt;p&gt;Cursor, Windsurf, Cline, GitHub Copilot Chat (the VS Code, JetBrains, and Visual Studio editor extension, not the standalone Copilot CLI covered under &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/#install&quot;&gt;Install&lt;/a&gt;), Aider, Kiro, Zed, CodeWhale, Swival, Qoder: copy the matching rules file from this repo (&lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.cursor/rules/&quot;&gt;&lt;code&gt;.cursor/rules/&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.windsurf/rules/&quot;&gt;&lt;code&gt;.windsurf/rules/&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.clinerules/&quot;&gt;&lt;code&gt;.clinerules/&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.github/copilot-instructions.md&quot;&gt;&lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/AGENTS.md&quot;&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.kiro/steering/&quot;&gt;&lt;code&gt;.kiro/steering/&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/.qoder/rules/&quot;&gt;&lt;code&gt;.qoder/rules/&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;Kiro: copy &lt;code&gt;.kiro/steering/ponytail.md&lt;/code&gt; to &lt;code&gt;~/.kiro/steering/&lt;/code&gt; (global) or &lt;code&gt;.kiro/steering/&lt;/code&gt; in your project.&lt;/p&gt; 
&lt;p&gt;GitHub Copilot CLI fallback (instruction-only mode): it reads &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; in a project, or copy the rules into &lt;code&gt;~/.copilot/copilot-instructions.md&lt;/code&gt; to run ponytail in every project. This path keeps always-on guidance, but does not add plugin mode switches or hooks.&lt;/p&gt; 
&lt;p&gt;VS Code with the Codex extension reads &lt;code&gt;AGENTS.md&lt;/code&gt;, which this repo ships, so it works from the repo root with no setup (&lt;code&gt;~/.codex/AGENTS.md&lt;/code&gt; makes Codex global).&lt;/p&gt; 
&lt;p&gt;JetBrains Junie can read &lt;code&gt;AGENTS.md&lt;/code&gt; once you point it there in Settings → Tools → Junie → Project Settings → Guidelines Path (it is not automatic yet). This repo ships &lt;code&gt;AGENTS.md&lt;/code&gt;; &lt;code&gt;.junie/guidelines.md&lt;/code&gt; is Junie&#39;s legacy path.&lt;/p&gt; 
&lt;p&gt;Amp (Sourcegraph) reads &lt;code&gt;AGENTS.md&lt;/code&gt; from the working directory and parent directories up to &lt;code&gt;$HOME&lt;/code&gt;, which this repo ships, so it works with no setup (&lt;code&gt;~/.config/amp/AGENTS.md&lt;/code&gt; works globally).&lt;/p&gt; 
&lt;p&gt;Jules (Google) reads &lt;code&gt;AGENTS.md&lt;/code&gt; from the repository root, which this repo ships, so it picks up the ruleset with no setup.&lt;/p&gt; 
&lt;p&gt;Which files map to which agent: &lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/docs/agent-portability.md&quot;&gt;Agent portability&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Uninstall&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Host&lt;/th&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Claude Code&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/plugin remove ponytail&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Codex&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;codex plugin remove ponytail&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Devin CLI&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;devin plugins remove ponytail&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Grok Build&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;grok plugin uninstall ponytail&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Pi agent&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;pi uninstall ponytail&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Cursor / Windsurf / Cline / Qoder / etc.&lt;/td&gt; 
   &lt;td&gt;Delete the copied rule file&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;These remove the plugin&#39;s own files. They leave behind a small amount of state ponytail writes outside the plugin folder: the mode flag, &lt;code&gt;~/.config/ponytail/config.json&lt;/code&gt;, and (if you accepted the setup nudge) a &lt;code&gt;statusLine&lt;/code&gt; entry in &lt;code&gt;~/.claude/settings.json&lt;/code&gt;. Run &lt;code&gt;node scripts/uninstall.js&lt;/code&gt; to clean those up too. &lt;strong&gt;Run it before the host remove command above&lt;/strong&gt; — the script is itself a plugin file, so removing the plugin first deletes it (or run it from a separate clone of this repo). It only removes the statusLine entry if it points at ponytail&#39;s own script, so a statusline you set up yourself is left untouched.&lt;/p&gt; 
&lt;h2&gt;Commands&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;What it does&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/ponytail [lite | full | ultra | off]&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Set the intensity, or turn it off. No argument reports the current level.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/ponytail-review&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Review the current diff for over-engineering, hands back a delete-list.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/ponytail-audit&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Audit the whole repo for over-engineering, not just the diff.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/ponytail-debt&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Harvest the &lt;code&gt;ponytail:&lt;/code&gt; shortcuts you&#39;ve deferred into a ledger, so &quot;later&quot; doesn&#39;t become &quot;never&quot;.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/ponytail-gain&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Show the measured impact scoreboard (less code, less cost, more speed) from the benchmark.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;/ponytail-help&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Quick reference for the commands above.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Commands need a skill-capable host (Claude Code, Codex, Devin CLI, OpenCode, Gemini, pi, Swival, Hermes Agent, Qoder, Grok Build). In Codex they&#39;re skills, invoke with &lt;code&gt;@&lt;/code&gt; (&lt;code&gt;@ponytail-review&lt;/code&gt;). The instruction-only adapters (Cursor, Windsurf, Cline, Copilot, Kiro, Antigravity) load the always-on ruleset without the commands.&lt;/p&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;When changing the compact rule text, keep the agent copies aligned:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node scripts/check-rule-copies.js
npm test
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The OpenClaw skill package (&lt;code&gt;.openclaw/skills/&lt;/code&gt;) is generated from &lt;code&gt;skills/&lt;/code&gt;; rerun &lt;code&gt;node scripts/build-openclaw-skills.js&lt;/code&gt; after changing a skill, the test suite fails if it is stale. To publish the skills to ClawHub, run &lt;code&gt;clawhub login&lt;/code&gt; once, then &lt;code&gt;node scripts/publish-openclaw-skills.js&lt;/code&gt; (it publishes all six at the &lt;code&gt;package.json&lt;/code&gt; version; pass &lt;code&gt;--dry-run&lt;/code&gt; to preview).&lt;/p&gt; 
&lt;p&gt;The correctness benchmark spawns Python for email and CSV checks; &lt;code&gt;python3&lt;/code&gt; is tried before &lt;code&gt;python&lt;/code&gt;. CSV checks need &lt;code&gt;pandas&lt;/code&gt; installed locally.&lt;/p&gt; 
&lt;h2&gt;FAQ&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Can I use it with &lt;a href=&quot;https://github.com/JuliusBrussee/caveman&quot;&gt;caveman&lt;/a&gt;?&lt;/strong&gt; Yes, and you should. Caveman shrinks what the agent says; ponytail shrinks what it builds. Different halves, no overlap: caveman leaves code byte-for-byte exact, ponytail stays out of the prose. Terse talk about minimal code.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Does it need a config file?&lt;/strong&gt; No. An optional &lt;code&gt;~/.config/ponytail/config.json&lt;/code&gt; or &lt;code&gt;PONYTAIL_DEFAULT_MODE&lt;/code&gt; env var can set the default level, but nothing is required.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;What if I really need the 120-line cache class?&lt;/strong&gt; You don&#39;t. Insist anyway and he&#39;ll build it. Slowly. Correctly. While looking at you.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Does it scale?&lt;/strong&gt; The code you never wrote scales infinitely. Zero bugs, zero CVEs, 100% uptime since forever.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Why &quot;ponytail&quot;?&lt;/strong&gt; You know exactly why.&lt;/p&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://greenpt.com/&quot;&gt; 
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;assets/logo-greenpt-dark.svg&quot; /&gt; 
   &lt;img src=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/assets/logo-greenpt.svg?sanitize=true&quot; width=&quot;260&quot; alt=&quot;GreenPT&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/DietrichGebert/ponytail/main/LICENSE&quot;&gt;MIT&lt;/a&gt;. The shortest license that works.&lt;/p&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;a href=&quot;https://www.star-history.com/dietrichgebert/ponytail#history&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://api.star-history.com/chart?repos=DietrichGebert/ponytail&amp;amp;type=Date&amp;amp;theme=dark&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/chart?repos=DietrichGebert/ponytail&amp;amp;type=Date&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/chart?repos=DietrichGebert/ponytail&amp;amp;type=Date&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt;</description>
      
    </item>
    
    <item>
      <title>polius/FileSync</title>
      <link>https://github.com/polius/FileSync</link>
      <description>&lt;p&gt;Send files from one device to many in real-time.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/polius/FileSync/main/web/assets/icon.png&quot; alt=&quot;FileSync Logo&quot; width=&quot;80&quot; /&gt; 
 &lt;h1 align=&quot;center&quot;&gt;FileSync&lt;/h1&gt; 
 &lt;p&gt;&lt;strong&gt;Send files from one device to many, in real time — private, peer-to-peer, with no size limit.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/polius/filesync/actions/workflows/release.yml&quot;&gt;&lt;img src=&quot;https://github.com/polius/filesync/actions/workflows/release.yml/badge.svg?sanitize=true&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/polius/filesync/releases&quot;&gt;&lt;img alt=&quot;GitHub Release&quot; src=&quot;https://img.shields.io/github/v/release/polius/filesync&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://hub.docker.com/r/poliuscorp/filesync&quot;&gt;&lt;img alt=&quot;Docker Pulls&quot; src=&quot;https://img.shields.io/docker/pulls/poliuscorp/filesync&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/LICENSE&quot;&gt;&lt;img alt=&quot;License: MIT&quot; src=&quot;https://img.shields.io/badge/License-MIT-blue.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/polius/FileSync/main/web/assets/filesync.png?v=4.0.0&quot; alt=&quot;FileSync&quot; /&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;🔒 &lt;strong&gt;Private by design&lt;/strong&gt; — files travel directly between browsers over encrypted WebRTC. The server only brokers the initial handshake; it never sees your file contents.&lt;/li&gt; 
 &lt;li&gt;🚀 &lt;strong&gt;No size limit&lt;/strong&gt; — received files stream straight to disk, so even multi-gigabyte transfers use almost no memory (over HTTPS — see &lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#how-received-files-are-saved&quot;&gt;how files are saved&lt;/a&gt;).&lt;/li&gt; 
 &lt;li&gt;👥 &lt;strong&gt;One-to-many&lt;/strong&gt; — share a room link or QR code and send to as many devices at once.&lt;/li&gt; 
 &lt;li&gt;🌐 &lt;strong&gt;Works across networks&lt;/strong&gt; — connects directly when possible, with automatic STUN/TURN relay fallback for restrictive NATs and firewalls.&lt;/li&gt; 
 &lt;li&gt;🪄 &lt;strong&gt;No installs, no accounts&lt;/strong&gt; — recipients just open a link in any modern browser. Optional password protection per room.&lt;/li&gt; 
 &lt;li&gt;🐳 &lt;strong&gt;Self-hosted&lt;/strong&gt; — a single Docker image you run yourself.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Table of contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#features&quot;&gt;Features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#table-of-contents&quot;&gt;Table of contents&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#how-to-use&quot;&gt;How to use&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#self-hosting&quot;&gt;Self-hosting&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#prerequisites&quot;&gt;Prerequisites&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#option-a--http-local-network--quick-start&quot;&gt;Option A — HTTP (local network / quick start)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#option-b--https-public-domain-recommended&quot;&gt;Option B — HTTPS (public domain, recommended)&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#stopping-filesync&quot;&gt;Stopping FileSync&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#required-ports&quot;&gt;Required ports&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#customizing-ports&quot;&gt;Customizing ports&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#configuration&quot;&gt;Configuration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#how-received-files-are-saved&quot;&gt;How received files are saved&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#under-the-hood&quot;&gt;Under the hood&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#license&quot;&gt;License&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;How to use&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Open&lt;/strong&gt; your FileSync URL — you land in a room with a unique link and a QR code.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Share&lt;/strong&gt; the link (or QR) with the people or devices you want to send to.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Drop in your files&lt;/strong&gt; — drag and drop them (or click &lt;strong&gt;Send Files&lt;/strong&gt;). Recipients see them appear and can download instantly.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Want to restrict access? Click &lt;strong&gt;Add password&lt;/strong&gt; to protect the room before sharing the link.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Self-hosting&lt;/h2&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/get-docker/&quot;&gt;Docker&lt;/a&gt; and &lt;a href=&quot;https://docs.docker.com/compose/install/&quot;&gt;Docker Compose&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Python 3 (only to generate the secret key below)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Every deployment needs a &lt;strong&gt;secret key&lt;/strong&gt; (it signs the TURN credentials used for NAT traversal). Generate one with:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;python3 -c &quot;import secrets, base64; print(base64.b64encode(secrets.token_bytes(32)).decode())&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;⚠️ Use your &lt;strong&gt;own&lt;/strong&gt; generated value — never ship the examples shown below.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Option A — HTTP (local network / quick start)&lt;/h3&gt; 
&lt;p&gt;Best for trying FileSync or running it on a trusted LAN. Note that large transfers (&amp;gt;~500 MB) are unreliable over plain HTTP — for those, use &lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/#option-b--https-public-domain-recommended&quot;&gt;Option B&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;1. Download&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/deploy/docker-compose.yml&quot;&gt;&lt;code&gt;deploy/docker-compose.yml&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2. Set your secret.&lt;/strong&gt; Replace &lt;strong&gt;both&lt;/strong&gt; &lt;code&gt;&amp;lt;SECRET_KEY&amp;gt;&lt;/code&gt; placeholders with your generated value:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;# (use your own generated value — these are illustrative)
- --static-auth-secret=Hs9k…your-generated-key…=
- SECRET_KEY=Hs9k…your-generated-key…=
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;3. Start it:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;strong&gt;&lt;code&gt;http://localhost&lt;/code&gt;&lt;/strong&gt; (or your server&#39;s IP).&lt;/p&gt; 
&lt;h3&gt;Option B — HTTPS (public domain, recommended)&lt;/h3&gt; 
&lt;p&gt;Caddy obtains and renews a Let&#39;s Encrypt certificate automatically. HTTPS also unlocks memory-safe streaming for files of any size.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;1. Download&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/deploy/docker-compose-ssl.yml&quot;&gt;&lt;code&gt;deploy/docker-compose-ssl.yml&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/deploy/Caddyfile&quot;&gt;&lt;code&gt;deploy/Caddyfile&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2. Set your secret.&lt;/strong&gt; Replace &lt;strong&gt;both&lt;/strong&gt; &lt;code&gt;&amp;lt;SECRET_KEY&amp;gt;&lt;/code&gt; placeholders (same as Option A).&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3. Set your domain.&lt;/strong&gt; In &lt;code&gt;Caddyfile&lt;/code&gt;, replace &lt;code&gt;yourdomain.com&lt;/code&gt; with your domain:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-caddyfile&quot;&gt;filesync.example.com {
    reverse_proxy filesync:80
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;4. Start it:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker-compose-ssl.yml up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;strong&gt;&lt;code&gt;https://yourdomain.com&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;h3&gt;Stopping FileSync&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose down                          # HTTP setup
docker compose -f docker-compose-ssl.yml down  # HTTPS setup
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Required ports&lt;/h2&gt; 
&lt;p&gt;Open these on your server/firewall to expose FileSync to the internet:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Port&lt;/th&gt; 
   &lt;th&gt;Protocol&lt;/th&gt; 
   &lt;th&gt;Purpose&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;80&lt;/code&gt; &lt;em&gt;(HTTP)&lt;/em&gt; / &lt;code&gt;443&lt;/code&gt; &lt;em&gt;(HTTPS)&lt;/em&gt;&lt;/td&gt; 
   &lt;td&gt;TCP&lt;/td&gt; 
   &lt;td&gt;Web interface&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;3478&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;TCP + UDP&lt;/td&gt; 
   &lt;td&gt;STUN/TURN — peer-to-peer connection setup&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;50000–50100&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;UDP&lt;/td&gt; 
   &lt;td&gt;TURN relay range — used when a direct connection isn&#39;t possible&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Port &lt;code&gt;3478&lt;/code&gt; handles connection setup. The &lt;code&gt;50000–50100&lt;/code&gt; UDP range carries relayed traffic for the ~5–10% of connections that can&#39;t go direct (typically a peer behind symmetric NAT or a UDP-blocking firewall).&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Customizing ports&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;HTTP port.&lt;/strong&gt; In &lt;code&gt;docker-compose.yml&lt;/code&gt;, change the &lt;strong&gt;first&lt;/strong&gt; number of the &lt;code&gt;filesync&lt;/code&gt; port mapping (the second is the internal container port — leave it as &lt;code&gt;80&lt;/code&gt;):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;ports:
  - &quot;8080:80&quot;   # serve on http://localhost:8080
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;HTTPS port.&lt;/strong&gt; Keep Caddy on &lt;code&gt;443&lt;/code&gt; and put your own reverse proxy (Nginx, Traefik, standalone Caddy) in front if you need a non-standard external port — terminate TLS there and forward to FileSync&#39;s internal HTTP port.&lt;/p&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;p&gt;Environment variables on the &lt;code&gt;filesync&lt;/code&gt; service:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Variable&lt;/th&gt; 
   &lt;th&gt;Required&lt;/th&gt; 
   &lt;th&gt;Default&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;SECRET_KEY&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;Signs TURN credentials and tokens. Must match the coturn &lt;code&gt;--static-auth-secret&lt;/code&gt;. The app won&#39;t start without it.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;How received files are saved&lt;/h2&gt; 
&lt;p&gt;FileSync writes received files to disk as the bytes arrive, so transfers use almost no memory regardless of size. It uses the first method the browser supports, falling back in order:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;File System Access API&lt;/strong&gt; — streams straight to a file you pick. Desktop Chromium browsers (Chrome, Edge, Brave, Opera) over HTTPS.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Service Worker&lt;/strong&gt; — streams into a normal browser download. All modern browsers over HTTPS.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Blob&lt;/strong&gt; — buffers the whole file in memory, then saves it. Last resort; the only option over plain HTTP, and unreliable past ~500 MB.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;The first two require a secure context (HTTPS, or &lt;code&gt;localhost&lt;/code&gt;), so &lt;strong&gt;serving FileSync over HTTPS is recommended&lt;/strong&gt; — it enables memory-safe transfers of any size.&lt;/p&gt; 
&lt;h2&gt;Under the hood&lt;/h2&gt; 
&lt;p&gt;FileSync uses native &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API&quot;&gt;WebRTC&lt;/a&gt; to transfer files directly between devices — peer-to-peer, with no intermediate server in the data path. Your files stay private throughout.&lt;/p&gt; 
&lt;p&gt;A lightweight WebSocket signaling server (served at &lt;code&gt;/ws&lt;/code&gt; by the FileSync app itself) assists only with the initial connection setup — relaying SDP offers/answers and ICE candidates between peers. Once a peer-to-peer connection is established, the signaling server steps back and file bytes flow directly between browsers. &lt;strong&gt;The server never has access to file contents.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/polius/FileSync/main/web/assets/comic.png&quot; alt=&quot;File Transfer - https://xkcd.com/949&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Released under the &lt;a href=&quot;https://raw.githubusercontent.com/polius/FileSync/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>cobusgreyling/loop-engineering</title>
      <link>https://github.com/cobusgreyling/loop-engineering</link>
      <description>&lt;p&gt;Practical patterns, starters &amp; CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Loop Engineering&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/%E2%9C%A8_Explore_the_Showcase-Design_systems_that_prompt_your_agents-0d1117?style=for-the-badge&amp;amp;labelColor=111a28&amp;amp;color=3ee8c5&quot; alt=&quot;Explore the Showcase&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/cobusgreyling/loop-engineering?style=social&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/actions/workflows/audit.yml&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/cobusgreyling/loop-engineering/audit.yml?label=loop-audit%20dogfood&quot; alt=&quot;loop-audit dogfood&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@cobusgreyling/loop&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@cobusgreyling/loop?label=loop&quot; alt=&quot;loop npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@cobusgreyling/loop-audit&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@cobusgreyling/loop-audit?label=loop-audit&quot; alt=&quot;loop-audit npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@cobusgreyling/loop-init&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@cobusgreyling/loop-init?label=loop-init&quot; alt=&quot;loop-init npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@cobusgreyling/loop-cost&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@cobusgreyling/loop-cost?label=loop-cost&quot; alt=&quot;loop-cost npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@cobusgreyling/loop-sync&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@cobusgreyling/loop-sync?label=loop-sync&quot; alt=&quot;loop-sync npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@cobusgreyling/loop-context&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@cobusgreyling/loop-context?label=loop-context&quot; alt=&quot;loop-context npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@cobusgreyling/loop-mcp-server&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@cobusgreyling/loop-mcp-server?label=loop-mcp-server&quot; alt=&quot;loop-mcp-server npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@cobusgreyling/loop-worktree&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@cobusgreyling/loop-worktree?label=loop-worktree&quot; alt=&quot;loop-worktree npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/raw/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true&quot; alt=&quot;MIT&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/GitHub_Pages-live%20%7C%20interactive-3ee8c5&quot; alt=&quot;Pages&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/assets/visuals/loop-engineering-logo.svg?sanitize=true&quot; alt=&quot;Loop Engineering logo&quot; width=&quot;88&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Stop prompting. Design the loop. Get a score.&lt;/strong&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/assets/visuals/LE5.jpeg&quot; alt=&quot;Loop Engineering — design the system that prompts your agents&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Front door (recommended) — one binary for init + doctor + status
npx @cobusgreyling/loop init . --pattern daily-triage --tool grok
npx @cobusgreyling/loop doctor .

# Same as before (still fully supported — forks need not change)
npx @cobusgreyling/loop-init .
# Optional: also scaffold a versioned harness (harness-foundry)
npx @cobusgreyling/loop init . --with-foundry
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;loop init&lt;/code&gt; (or &lt;code&gt;loop-init&lt;/code&gt;) scaffolds skills, state, and budget files, then prints your &lt;strong&gt;Loop Ready&lt;/strong&gt; score and first loop command. &lt;code&gt;loop doctor&lt;/code&gt; combines audit + sync + file checks into top-3 next actions. Swap &lt;code&gt;--tool&lt;/code&gt; for &lt;code&gt;claude&lt;/code&gt;, &lt;code&gt;codex&lt;/code&gt;, or &lt;code&gt;opencode&lt;/code&gt;. Use &lt;code&gt;--with-foundry&lt;/code&gt; when you want the loop as a composable runtime stack. See &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/cli-front-door.md&quot;&gt;docs/cli-front-door.md&lt;/a&gt;.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/QUICKSTART.md&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/assets/visuals/loop-audit-demo.gif&quot; alt=&quot;Loop Ready score climbs from 10 to 100 in 15 seconds&quot; width=&quot;100%&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;Loop engineering replaces you as the person who prompts the agent — you design the system that does it instead.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;New here?&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/QUICKSTART.md&quot;&gt;Quickstart (5 min)&lt;/a&gt; · &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/#interactive&quot;&gt;Interactive picker&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;For developers using Grok, Claude Code, Codex, Cursor, and other AI coding agents.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;&lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/&quot;&gt;→ Interactive showcase + pattern picker&lt;/a&gt;&lt;/strong&gt; · &lt;a href=&quot;https://cobusgreyling.substack.com/p/loop-engineering&quot;&gt;Essay&lt;/a&gt; · &lt;a href=&quot;https://addyosmani.com/blog/loop-engineering/&quot;&gt;Addy Osmani&lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;Contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/QUICKSTART.md&quot;&gt;Quickstart (5 min)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#quick-links&quot;&gt;Quick Links&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#why-this-matters&quot;&gt;Why This Matters&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#the-five-building-blocks--memory&quot;&gt;The Five Building Blocks + Memory&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#patterns&quot;&gt;Patterns&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#getting-started-5-minutes&quot;&gt;Getting Started (5 minutes)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#examples-by-tool&quot;&gt;Examples by Tool&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#operating--safety&quot;&gt;Operating &amp;amp; Safety&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#caveats&quot;&gt;Caveats&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#help-wanted&quot;&gt;Help wanted&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#license&quot;&gt;License&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quick Links&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Start here&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/QUICKSTART.md&quot;&gt;Quickstart (5 min)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;loop init&lt;/code&gt; → &lt;code&gt;loop doctor&lt;/code&gt; → first loop — &lt;strong&gt;start here if you just landed&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/cli-front-door.md&quot;&gt;CLI front door&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Unified &lt;code&gt;@cobusgreyling/loop&lt;/code&gt; — old packages stay open&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://cobusgreyling.substack.com/p/loop-engineering&quot;&gt;Loop Engineering essay&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;The concept, primitives, and Grok mapping — read for the why&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/pattern-picker.md&quot;&gt;Pattern Picker&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Which loop to run first — &lt;strong&gt;start here if unsure&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/primitives-matrix.md&quot;&gt;Primitives Matrix&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Cross-tool loop primitive mapping — bookmark this&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/loop-design-checklist.md&quot;&gt;Loop Design Checklist&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Ship readiness rubric&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/README.md&quot;&gt;Patterns&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;7 production patterns + &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/#interactive&quot;&gt;interactive picker&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/starters/&quot;&gt;Starters&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Clone-and-run kits (Grok, Claude Code, Codex, Opencode)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/examples/opencode/&quot;&gt;Opencode examples&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;CLI-first loops: cron/systemd + &lt;code&gt;opencode run&lt;/code&gt;, skills, worktrees&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop/&quot;&gt;&lt;strong&gt;loop&lt;/strong&gt; (front door)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Unified CLI&lt;/strong&gt; — &lt;code&gt;npx @cobusgreyling/loop init | doctor | status | audit | cost&lt;/code&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/cli-front-door.md&quot;&gt;cli-front-door&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-audit/&quot;&gt;loop-audit&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Loop Readiness Score CLI (v1.7 — constraints + governance + &lt;strong&gt;Harness Runtime&lt;/strong&gt;) — &lt;code&gt;npx @cobusgreyling/loop audit . --suggest&lt;/code&gt; · also &lt;code&gt;loop-audit&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-init/&quot;&gt;loop-init&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Scaffold starters + budget/run-log + constraints (v1.5) — &lt;code&gt;npx @cobusgreyling/loop init . --pattern daily-triage --tool grok&lt;/code&gt; · also &lt;code&gt;loop-init&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/harness-foundry&quot;&gt;harness-foundry&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Companion runtime:&lt;/strong&gt; versioned stacks, sessions, traces — &lt;code&gt;npx @cobusgreyling/harness-foundry init --from loop-engineering:daily-triage&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/outerloop&quot;&gt;outerloop&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Companion governance:&lt;/strong&gt; evidence → verdict → answerability&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-cost/&quot;&gt;loop-cost&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Token spend estimator — &lt;code&gt;npx @cobusgreyling/loop-cost&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-sync/&quot;&gt;loop-sync&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Drift detection between &lt;code&gt;STATE.md&lt;/code&gt; and &lt;code&gt;LOOP.md&lt;/code&gt; — &lt;code&gt;npx @cobusgreyling/loop-sync .&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-context/&quot;&gt;loop-context&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Stateful memory manager + circuit breaker for long runs — &lt;code&gt;npx @cobusgreyling/loop-context --check --ledger run.json&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/mcp-server/&quot;&gt;loop-mcp-server&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;MCP runtime lookup for patterns, skills, state — &lt;code&gt;npx @cobusgreyling/loop-mcp-server&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-worktree/&quot;&gt;loop-worktree&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Manage isolated git worktrees per fix attempt — &lt;code&gt;npx @cobusgreyling/loop-worktree create --run-id &amp;lt;id&amp;gt; --pattern &amp;lt;p&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-gate/&quot;&gt;loop-gate&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Mechanical enforcement of the path denylist + auto-merge allowlist from &lt;code&gt;gate.yaml&lt;/code&gt; — &lt;code&gt;npx @cobusgreyling/loop-gate check --action auto-merge --paths &amp;lt;f1,f2,...&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-sandbox/&quot;&gt;loop-sandbox&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Ephemeral git worktree isolation + patch capture — &lt;code&gt;npx @cobusgreyling/loop-sandbox run -- &amp;lt;cmd&amp;gt;&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/tools/loop-action/&quot;&gt;loop-action&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;GitHub Composite Action for running loops in CI — &lt;code&gt;uses: cobusgreyling/loop-engineering/tools/loop-action@main&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/goal-engineering&quot;&gt;Goal Engineering&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Companion:&lt;/strong&gt; loops discover, goals finish — &lt;code&gt;/goal&lt;/code&gt; + &lt;a href=&quot;https://github.com/cobusgreyling/goal-engineering/raw/main/docs/stack-cookbook.md&quot;&gt;stack cookbook&lt;/a&gt; (&lt;code&gt;npx @cobusgreyling/goal doctor .&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/memory-engineering&quot;&gt;Memory Engineering&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Companion:&lt;/strong&gt; stop re-explaining the repo — tiers, budget, Memory Ready score (&lt;code&gt;node tools/memory-init/cli.js .&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/fleet-engineering&quot;&gt;Fleet Engineering&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Companion:&lt;/strong&gt; govern populations of agents — registry, inbox, Fleet Ready score (&lt;code&gt;npx @cobusgreyling/fleet-init .&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/stories/&quot;&gt;Stories&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Real wins and honest failures&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Ecosystem stack&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;memory-engineering → loop-engineering → harness-foundry → outerloop → fleet-engineering
   (persist)            (patterns)         (runtime)        (verdict)     (population)
&lt;/code&gt;&lt;/pre&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Layer&lt;/th&gt; 
   &lt;th&gt;You get&lt;/th&gt; 
   &lt;th&gt;Start&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Tiers, recall budget, Memory Ready score&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/memory-engineering&quot;&gt;memory-engineering&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Design&lt;/strong&gt; (this repo)&lt;/td&gt; 
   &lt;td&gt;Patterns, starters, Loop Ready score&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;npx @cobusgreyling/loop init .&lt;/code&gt; then &lt;code&gt;loop doctor .&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Runtime&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Versioned harness, traces, evolve&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;npx @cobusgreyling/loop init . --with-foundry&lt;/code&gt; or &lt;a href=&quot;https://github.com/cobusgreyling/harness-foundry/raw/main/docs/showcase.md&quot;&gt;Foundry showcase&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Govern&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Evidence, verdict, answerability&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/outerloop&quot;&gt;outerloop&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Fleet&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Registry, inbox, budgets, kill switch&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;npx @cobusgreyling/fleet-init .&lt;/code&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/fleet-engineering/raw/main/docs/fleet-ready-score.md&quot;&gt;Fleet Ready&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Scale beyond one loop:&lt;/strong&gt; when agents forget across sessions, add &lt;a href=&quot;https://github.com/cobusgreyling/memory-engineering&quot;&gt;memory-engineering&lt;/a&gt;. When you have many agents/loops on a team, add &lt;a href=&quot;https://github.com/cobusgreyling/fleet-engineering&quot;&gt;fleet-engineering&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Next after Loop Ready 80+:&lt;/strong&gt; version the loop as a harness — &lt;code&gt;loop-init&lt;/code&gt; prints the CTA automatically; &lt;code&gt;loop-audit&lt;/code&gt; recommends Foundry when the score is strong but &lt;code&gt;.foundry/stack.yaml&lt;/code&gt; is missing.&lt;/p&gt; 
&lt;h3&gt;Community &amp;amp; announcements&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Discussion&lt;/th&gt; 
   &lt;th&gt;Summary&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/123&quot;&gt;Contributor quickstart&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Help wanted:&lt;/strong&gt; open &lt;code&gt;good first issues&lt;/code&gt; — comment &lt;em&gt;I&#39;ll take this&lt;/em&gt; to get assigned · see &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/#help-wanted&quot;&gt;Help wanted&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/145&quot;&gt;Community update&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;July 4:&lt;/strong&gt; 5.5k stars, traffic sources, contributor merges&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/219&quot;&gt;Community week (Jul 8)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;loop-worktree npm, MCP quickstart, tool appendices&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/294&quot;&gt;npm update (Jul 16)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;loop-context&lt;/code&gt; 1.2.0 + &lt;code&gt;loop-worktree&lt;/code&gt; 1.1.0 — daily budget, path locks&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/241&quot;&gt;Maintenance (Jul 10)&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Doc sync, branch prune, loop-audit 1.6.0 follow-up&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/89&quot;&gt;Prior release notes&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;v1.5.0 — loop-sync, constraints, MCP server&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/92&quot;&gt;Add your project&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;Pinned:&lt;/strong&gt; Loop Ready badge + adopters list&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/assets/visuals/section-divider.svg?sanitize=true&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Why This Matters&lt;/h2&gt; 
&lt;p&gt;Peter Steinberger:&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;“You shouldn’t be prompting coding agents anymore. You should be designing loops that prompt your agents.”&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Boris Cherny (Head of Claude Code at Anthropic):&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;“I don’t prompt Claude anymore. I have loops running that prompt Claude and figuring out what to do. My job is to write loops.”&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The leverage point has moved from crafting individual prompts to designing the control systems that orchestrate agents over time.&lt;/p&gt; 
&lt;h2&gt;The Five Building Blocks + Memory&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Primitive&lt;/th&gt; 
   &lt;th&gt;Job in the Loop&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Automations / Scheduling&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Discovery + triage on a cadence&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Worktrees&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Safe parallel execution&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Skills&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Persistent project knowledge&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Plugins &amp;amp; Connectors&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Reach into your real tools (MCP)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Sub-agents&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Maker / checker split&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;+ Memory / State&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Durable spine outside any conversation&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Full detail: &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/primitives.md&quot;&gt;docs/primitives.md&lt;/a&gt; · Cross-tool matrix: &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/primitives-matrix.md&quot;&gt;docs/primitives-matrix.md&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Visual Overview&lt;/h3&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/assets/visuals/primitives-infographic.jpg&quot; alt=&quot;The Five Building Blocks + Memory — Loop Engineering&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt; 
&lt;h3&gt;Anatomy of a Loop&lt;/h3&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/assets/visuals/loop-cycle-animated.svg?sanitize=true&quot; alt=&quot;Animated loop flow — schedule, triage, state, worktree, implement, verify, MCP, human gate&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;Mermaid diagram (copy-friendly)&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart LR
    A[Schedule / Automation] --&amp;gt; B[Triage Skill]
    B --&amp;gt; C[Read + Write STATE / Memory]
    C --&amp;gt; D[Isolated Worktree]
    D --&amp;gt; E[Implementer Sub-agent]
    E --&amp;gt; F[Verifier Sub-agent&amp;lt;br/&amp;gt;tests + gates]
    F --&amp;gt; G[MCP / Git / Tickets]
    G --&amp;gt; H{Human Gate?}
    H --&amp;gt;|safe / allowlisted| I[Commit / PR / Action]
    H --&amp;gt;|risky / ambiguous| J[Escalate to human&amp;lt;br/&amp;gt;with full context]
    I --&amp;gt; A
    J --&amp;gt; A
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;p&gt;Deeper diagrams — the actor-level sequence within one run, the run lifecycle&#39;s states, autonomy levels L1-L3, and how &lt;code&gt;tools/&lt;/code&gt; maps onto the primitives — live in &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/architecture-diagrams.md&quot;&gt;docs/architecture-diagrams.md&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;This reference repo now runs its own &lt;code&gt;validate-patterns&lt;/code&gt; + &lt;code&gt;audit&lt;/code&gt; workflows on every push/PR&lt;/strong&gt; (see &lt;code&gt;.github/workflows/&lt;/code&gt;). We also added &lt;code&gt;LOOP.md&lt;/code&gt; describing the loops that will maintain it.&lt;/p&gt; 
&lt;h2&gt;Patterns&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/assets/visuals/patterns-overview.svg?sanitize=true&quot; alt=&quot;Seven production loop patterns with cadence and token cost&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Pattern&lt;/th&gt; 
   &lt;th&gt;Cadence&lt;/th&gt; 
   &lt;th&gt;Starter&lt;/th&gt; 
   &lt;th&gt;Week 1&lt;/th&gt; 
   &lt;th&gt;Token cost&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/daily-triage.md&quot;&gt;Daily Triage&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;1d–2h&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/starters/minimal-loop/&quot;&gt;minimal-loop&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;L1&lt;/strong&gt; report&lt;/td&gt; 
   &lt;td&gt;Low&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/pr-babysitter.md&quot;&gt;PR Babysitter&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;5–15m&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/starters/pr-babysitter/&quot;&gt;pr-babysitter&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;L1 watch&lt;/td&gt; 
   &lt;td&gt;High&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/ci-sweeper.md&quot;&gt;CI Sweeper&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;5–15m&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/starters/ci-sweeper/&quot;&gt;ci-sweeper&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;L2 cautious&lt;/td&gt; 
   &lt;td&gt;Very high&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/dependency-sweeper.md&quot;&gt;Dependency Sweeper&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;6h–1d&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/starters/dependency-sweeper/&quot;&gt;dependency-sweeper&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;L2 patch-only&lt;/td&gt; 
   &lt;td&gt;Medium&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/changelog-drafter.md&quot;&gt;Changelog Drafter&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;1d or tag&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/starters/changelog-drafter/&quot;&gt;changelog-drafter&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;L1&lt;/strong&gt; draft&lt;/td&gt; 
   &lt;td&gt;Low&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/post-merge-cleanup.md&quot;&gt;Post-Merge Cleanup&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;1d–6h&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/starters/post-merge-cleanup/&quot;&gt;post-merge-cleanup&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;L1&lt;/strong&gt; off-peak&lt;/td&gt; 
   &lt;td&gt;Low&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/issue-triage.md&quot;&gt;Issue Triage&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;2h–1d&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/starters/issue-triage/&quot;&gt;issue-triage&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;strong&gt;L1&lt;/strong&gt; propose-only&lt;/td&gt; 
   &lt;td&gt;Low&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Not sure which to pick? Try the &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/#interactive&quot;&gt;interactive picker&lt;/a&gt; or &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/pattern-picker.md&quot;&gt;pattern-picker&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Machine-readable index: &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/patterns/registry.yaml&quot;&gt;patterns/registry.yaml&lt;/a&gt; (7 patterns)&lt;/p&gt; 
&lt;h2&gt;Getting Started (5 minutes)&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Scaffold + Loop Ready score (printed automatically)
npx @cobusgreyling/loop init . --pattern daily-triage --tool grok

# 2. One health check (audit + sync + files → top 3 actions)
npx @cobusgreyling/loop doctor .

# 3. Optional: cost estimate / badge / day-2 dashboard
npx @cobusgreyling/loop cost --pattern daily-triage --level L1
npx @cobusgreyling/loop badge .
npx @cobusgreyling/loop status .

# 4. See scores climb: empty → L1 → L2
bash scripts/before-after-demo.sh

# 5. Start report-only (Grok example)
/loop 1d Run loop-triage. Update STATE.md. No auto-fix in week one.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Same as before:&lt;/strong&gt; &lt;code&gt;npx @cobusgreyling/loop-init&lt;/code&gt; and &lt;code&gt;loop-audit&lt;/code&gt; still work — &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/cli-front-door.md&quot;&gt;CLI front door&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;All npm CLIs publish from tagged releases — see &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/RELEASE.md&quot;&gt;docs/RELEASE.md&lt;/a&gt;. No clone required.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Develop from source&lt;/strong&gt; (monorepo contributors):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd tools/loop &amp;amp;&amp;amp; npm ci &amp;amp;&amp;amp; npm test &amp;amp;&amp;amp; node dist/cli.js doctor ../..
cd tools/loop-init &amp;amp;&amp;amp; npm ci &amp;amp;&amp;amp; npm test &amp;amp;&amp;amp; node dist/cli.js /path/to/project --pattern daily-triage --tool grok
cd tools/loop-audit &amp;amp;&amp;amp; npm ci &amp;amp;&amp;amp; npm test &amp;amp;&amp;amp; node dist/cli.js /path/to/project --suggest
cd tools/loop-cost &amp;amp;&amp;amp; npm ci &amp;amp;&amp;amp; npm test &amp;amp;&amp;amp; node dist/cli.js --pattern ci-sweeper --cadence 15m
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Phased rollout: &lt;strong&gt;L1 report → L2 assisted fixes → L3 unattended&lt;/strong&gt; — see &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/loop-design-checklist.md&quot;&gt;loop-design-checklist&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Examples by Tool&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/examples/grok/daily-triage.md&quot;&gt;Grok&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/examples/claude-code/&quot;&gt;Claude Code&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/examples/codex/&quot;&gt;Codex&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/examples/openclaw/daily-triage.md&quot;&gt;OpenClaw&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/examples/opencode/&quot;&gt;Opencode&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/examples/github-actions/&quot;&gt;GitHub Actions&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Operating &amp;amp; Safety&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/failure-modes.md&quot;&gt;Failure Modes&lt;/a&gt; — incident-style catalog&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/anti-patterns.md&quot;&gt;Anti-Patterns&lt;/a&gt; — design mistakes before production&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/multi-loop.md&quot;&gt;Multi-Loop Coordination&lt;/a&gt; — when loops collide&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/operating-loops.md&quot;&gt;Operating Loops&lt;/a&gt; — cost, logging, when to kill&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/safety.md&quot;&gt;Safety&lt;/a&gt; — denylist, auto-merge, MCP scopes&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/SECURITY.md&quot;&gt;Security&lt;/a&gt; — reporting and unattended automation risks&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/concepts.md&quot;&gt;Concepts&lt;/a&gt; — intent debt, comprehension debt, harness vs loop&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/examples/mcp/&quot;&gt;MCP Cookbook&lt;/a&gt; — connector examples by pattern&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Caveats&lt;/h2&gt; 
&lt;p&gt;Loop engineering amplifies judgment — both good and bad.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Token costs&lt;/strong&gt; can explode with sub-agents and long-running loops.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Verification is still on you.&lt;/strong&gt; Unattended loops make unattended mistakes.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Comprehension debt&lt;/strong&gt; grows faster unless you read what the loop ships.&lt;/li&gt; 
 &lt;li&gt;Two people can run the same loop and get opposite results. The loop doesn&#39;t know. You do.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Addy Osmani:&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;“Build the loop. But build it like someone who intends to stay the engineer, not just the person who presses go.”&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Help wanted&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;First PR?&lt;/strong&gt; Pick one open issue below. Stories and adopters get &lt;strong&gt;same-day review&lt;/strong&gt; when possible. See &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/CONTRIBUTORS.md&quot;&gt;CONTRIBUTORS.md&lt;/a&gt; and the &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/123&quot;&gt;contributor quickstart&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;12 open&lt;/strong&gt; &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22&quot;&gt;&lt;code&gt;good first issue&lt;/code&gt;&lt;/a&gt;s (refreshed &lt;strong&gt;2026-08-10&lt;/strong&gt; — Wave 6 from real community PR pain). Comment &lt;strong&gt;&quot;I&#39;ll take this&quot;&lt;/strong&gt; for assignment.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Time&lt;/th&gt; 
   &lt;th&gt;Issue&lt;/th&gt; 
   &lt;th&gt;What you ship&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;~10 min&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/120&quot;&gt;#120 — Adopters list&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;One row in &lt;code&gt;docs/adopters.md&lt;/code&gt; (or &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/new?template=add-adopter.yml&quot;&gt;Add Adopter&lt;/a&gt; template)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;~15–20 min&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/118&quot;&gt;#118 — Daily Triage story&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/173&quot;&gt;#173 — Issue Triage story&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/119&quot;&gt;#119 — PR Babysitter failure&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Honest &lt;code&gt;stories/&lt;/code&gt; write-up + index row&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;~20–25 min&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/483&quot;&gt;#483 — Windows notes&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Windows/CRLF landing notes in QUICKSTART (pain from #476)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;~20–40 min&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/481&quot;&gt;#481 — append-run-log JSON test&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/480&quot;&gt;#480 — skill-dedup test&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/479&quot;&gt;#479 — loop-sync CRLF tests&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Regression tests locking fixes from #474–#476&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;~40–45 min&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/387&quot;&gt;#387 — Hermes CI Sweeper&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/388&quot;&gt;#388 — Hermes Issue Triage&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/484&quot;&gt;#484 — Windsurf Post-Merge&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/485&quot;&gt;#485 — Windsurf Changelog&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Fill pattern-coverage gaps in &lt;code&gt;examples/&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Anytime&lt;/td&gt; 
   &lt;td&gt;Templates&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/new?template=add-adopter.yml&quot;&gt;Add Adopter&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues/new?template=share-story.yml&quot;&gt;Share a story&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Hubs&lt;/td&gt; 
   &lt;td&gt;Discussions&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/326&quot;&gt;Show your loop&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/327&quot;&gt;Ask anything&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Recently shipped (thanks!):&lt;/strong&gt; Community batch from @pxmpsdev — goal-audit fixture + run-log guard (#474), readiness-core skill dedup (#475), loop-sync CRLF (#476), root &lt;code&gt;npm ci&lt;/code&gt; docs (#477). Earlier: Windsurf examples, loop-action/sandbox/gate QUICKSTART, CI Sweeper story.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Docs/examples triage:&lt;/strong&gt; @AIMindCrafter co-owns &lt;code&gt;docs/&lt;/code&gt;, &lt;code&gt;examples/&lt;/code&gt;, and &lt;code&gt;stories/&lt;/code&gt; (see &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/CODEOWNERS&quot;&gt;CODEOWNERS&lt;/a&gt; + &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/area-owners.md&quot;&gt;docs/area-owners.md&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;Maintainers re-seed the backlog with &lt;code&gt;bash scripts/create-good-first-issues.sh&lt;/code&gt; (idempotent; skips existing titles). Prefer &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22&quot;&gt;live open GFI filter&lt;/a&gt; over this table if a row looks stale.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Share production patterns, tool mappings, and failure stories. See &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; (contribution ladder + &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22&quot;&gt;&lt;code&gt;good first issue&lt;/code&gt; backlog&lt;/a&gt;), &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/CODE_OF_CONDUCT.md&quot;&gt;Code of Conduct&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/docs/adopters.md&quot;&gt;adopters&lt;/a&gt;, and hubs: &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/326&quot;&gt;Show your loop&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling/loop-engineering/discussions/327&quot;&gt;Ask anything&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Sources&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://cobusgreyling.substack.com/p/loop-engineering&quot;&gt;Cobus Greyling – Loop Engineering (Substack)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://addyosmani.com/blog/loop-engineering/&quot;&gt;Addy Osmani – Loop Engineering&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/resources/sources.md&quot;&gt;Attribution &amp;amp; further reading&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;em&gt;Practical, tool-aware reference for loop engineering, patterns you can clone, checklists you can ship against, and stories that include what broke.&lt;/em&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://cobusgreyling.substack.com/p/loop-engineering&quot;&gt;Essay&lt;/a&gt; · &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/&quot;&gt;Showcase&lt;/a&gt; · &lt;a href=&quot;https://github.com/cobusgreyling&quot;&gt;Cobus Greyling&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/star-history.html&quot;&gt; 
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;assets/visuals/star-history-dark.svg&quot; /&gt; 
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;assets/visuals/star-history.svg&quot; /&gt; 
   &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://raw.githubusercontent.com/cobusgreyling/loop-engineering/main/assets/visuals/star-history.svg?sanitize=true&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt;&lt;sub&gt;Static chart (CI-updated daily). &lt;a href=&quot;https://cobusgreyling.github.io/loop-engineering/star-history.html&quot;&gt;Live chart&lt;/a&gt; needs a GitHub token — stored in your browser only.&lt;/sub&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>plankanban/planka</title>
      <link>https://github.com/plankanban/planka</link>
      <description>&lt;p&gt;PLANKA is the Kanban-style project mastering tool for everyone&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/plankanban/planka/master/assets/logo.png&quot; alt=&quot;Logo&quot; /&gt;&lt;/p&gt; 
 &lt;h1&gt;PLANKA&lt;/h1&gt; 
 &lt;p&gt;&lt;em&gt;Project mastering driven by fun&lt;/em&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;img src=&quot;https://img.shields.io/github/package-json/v/plankanban/planka?style=flat-square&quot; alt=&quot;Version&quot; /&gt; &lt;a href=&quot;https://github.com/plankanban/planka/pkgs/container/planka&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docker_pulls-8M%2B-%23066da5?style=flat-square&amp;amp;color=red&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/plankanban/planka/graphs/contributors&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/contributors/plankanban/planka?style=flat-square&amp;amp;color=blue&quot; alt=&quot;Contributors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/WqqYNd7Jvt&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1041440072953765979?style=flat-square&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Chat&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://docs.planka.cloud/docs/installation/docker/production-version/&quot;&gt;Install&lt;/a&gt; · &lt;a href=&quot;https://planka.app&quot;&gt;Demo&lt;/a&gt; · &lt;a href=&quot;https://docs.planka.cloud/docs/welcome/&quot;&gt;Docs&lt;/a&gt; · &lt;a href=&quot;https://plankanban.github.io/planka/swagger-ui/&quot;&gt;API&lt;/a&gt; · &lt;a href=&quot;https://planka.app/pricing&quot;&gt;Cloud&lt;/a&gt; · &lt;a href=&quot;https://planka.app/pro&quot;&gt;Pro version&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/plankanban/planka/master/assets/demo.gif&quot; alt=&quot;Demo&quot; /&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Key Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Collaborative Kanban Boards:&lt;/strong&gt; Create projects, boards, lists, cards, and manage tasks with an intuitive drag-and-drop interface&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Real-Time Updates:&lt;/strong&gt; Instant syncing across all users, no refresh needed&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Rich Markdown Support:&lt;/strong&gt; Write beautifully formatted card descriptions with a powerful markdown editor&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Flexible Notifications:&lt;/strong&gt; Get alerts through 100+ providers, fully customizable to your workflow&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multilingual &amp;amp; Easy to Translate:&lt;/strong&gt; Full internationalization support for a global audience&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;How to Deploy&lt;/h2&gt; 
&lt;p&gt;PLANKA is easy to install using multiple methods - learn more in the &lt;a href=&quot;https://docs.planka.cloud/docs/welcome/&quot;&gt;installation guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For configuration and environment settings, see the &lt;a href=&quot;https://docs.planka.cloud/docs/category/configuration/&quot;&gt;configuration section&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Interested in a hosted or &lt;a href=&quot;https://planka.app/pro&quot;&gt;Pro version&lt;/a&gt; of PLANKA? Check out the pricing on our &lt;a href=&quot;https://planka.app/pricing&quot;&gt;website&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Notes App&lt;/h2&gt; 
&lt;p&gt;A testing version of the Notes app is now available on multiple platforms:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;iOS:&lt;/strong&gt; Join the &lt;a href=&quot;https://testflight.apple.com/join/5eJqTaJW&quot;&gt;TestFlight&lt;/a&gt; to try the app&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Windows &amp;amp; Android:&lt;/strong&gt; Download the app &lt;a href=&quot;https://planka-notes.hillerdaniel.de&quot;&gt;here&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contact&lt;/h2&gt; 
&lt;p&gt;For any security issues, please do not create a public issue on GitHub - instead, report it privately by emailing &lt;a href=&quot;mailto:security@planka.group&quot;&gt;security@planka.group&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; We do NOT offer any public support via email, please use GitHub.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Join our community:&lt;/strong&gt; Get help, share ideas, or contribute on our &lt;a href=&quot;https://discord.gg/WqqYNd7Jvt&quot;&gt;Discord server&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;PLANKA is &lt;a href=&quot;https://faircode.io&quot;&gt;fair-code&lt;/a&gt; distributed under the &lt;a href=&quot;https://github.com/plankanban/planka/raw/master/LICENSES/PLANKA%20Community%20License%20EN.md&quot;&gt;Fair Use License&lt;/a&gt; and &lt;a href=&quot;https://github.com/plankanban/planka/raw/master/LICENSES/PLANKA%20Commercial%20License%20EN.md&quot;&gt;PLANKA Pro/Enterprise License&lt;/a&gt;.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Source Available:&lt;/strong&gt; The source code is always visible&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Self-Hostable:&lt;/strong&gt; Deploy and host it anywhere&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Extensible:&lt;/strong&gt; Customize with your own functionality&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Enterprise Licenses:&lt;/strong&gt; Available for additional features and support&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For more details, check the &lt;a href=&quot;https://github.com/plankanban/planka/raw/master/LICENSES/PLANKA%20License%20Guide%20EN.md&quot;&gt;License Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Found a bug or have a feature request? Check out our &lt;a href=&quot;https://github.com/plankanban/planka/raw/master/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt; to get started.&lt;/p&gt; 
&lt;p&gt;For setting up the project locally, see the &lt;a href=&quot;https://docs.planka.cloud/docs/category/development/&quot;&gt;development section&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Thanks to all our contributors!&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/plankanban/planka/graphs/contributors&quot;&gt;&lt;img src=&quot;https://contrib.rocks/image?repo=plankanban/planka&quot; alt=&quot;Contributors&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>lodash/lodash</title>
      <link>https://github.com/lodash/lodash</link>
      <description>&lt;p&gt;A modern JavaScript utility library delivering modularity, performance, &amp; extras.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;lodash v4.18.1&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://lodash.com/&quot;&gt;Site&lt;/a&gt; | &lt;a href=&quot;https://lodash.com/docs&quot;&gt;Docs&lt;/a&gt; | &lt;a href=&quot;https://github.com/lodash/lodash/wiki/FP-Guide&quot;&gt;FP Guide&lt;/a&gt; | &lt;a href=&quot;https://github.com/lodash/lodash/raw/main/.github/CONTRIBUTING.md&quot;&gt;Contributing&lt;/a&gt; | &lt;a href=&quot;https://github.com/lodash/lodash/wiki&quot; title=&quot;Changelog, Roadmap, etc.&quot;&gt;Wiki&lt;/a&gt; | &lt;a href=&quot;https://github.com/openjs-foundation/cross-project-council/raw/main/CODE_OF_CONDUCT.md&quot;&gt;Code of Conduct&lt;/a&gt; | &lt;a href=&quot;https://github.com/lodash/lodash/raw/HEAD/GOVERNANCE.md&quot;&gt;Governance&lt;/a&gt; | &lt;a href=&quot;https://twitter.com/bestiejs&quot;&gt;Twitter&lt;/a&gt; | &lt;a href=&quot;https://gitter.im/lodash/lodash&quot;&gt;Chat&lt;/a&gt;&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;As announced on the &lt;a href=&quot;https://openjsf.org/blog/sta-supports-lodash&quot;&gt;OpenJS Foundation blog&lt;/a&gt;, Lodash has received support from the Sovereign Tech Agency and will transition to the Feature-Complete maturity stage so that it remains stable, secure, and sustainable long-term. As part of this effort, Lodash is rebooting its governance. A draft charter will be published shortly. The upcoming Technical Steering Committee (TSC) is already at work. For transparency, its members are listed in &lt;a href=&quot;https://github.com/lodash/lodash/raw/HEAD/GOVERNANCE.md&quot;&gt;GOVERNANCE.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;The &lt;a href=&quot;https://lodash.com/&quot;&gt;Lodash&lt;/a&gt; library exported as a &lt;a href=&quot;https://github.com/umdjs/umd&quot;&gt;UMD&lt;/a&gt; module.&lt;/p&gt; 
&lt;p&gt;Generated using &lt;a href=&quot;https://www.npmjs.com/package/lodash-cli&quot;&gt;lodash-cli&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;$ npm run build
$ lodash -o ./dist/lodash.js
$ lodash core -o ./dist/lodash.core.js
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/lodash/lodash/4.18.1/dist/lodash.core.js&quot;&gt;Core build&lt;/a&gt; (&lt;a href=&quot;https://raw.githubusercontent.com/lodash/lodash/4.18.1/dist/lodash.core.min.js&quot;&gt;~4 kB gzipped&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/lodash/lodash/4.18.1/dist/lodash.js&quot;&gt;Full build&lt;/a&gt; (&lt;a href=&quot;https://raw.githubusercontent.com/lodash/lodash/4.18.1/dist/lodash.min.js&quot;&gt;~24 kB gzipped&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.jsdelivr.com/projects/lodash&quot;&gt;CDN copies&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Lodash is released under the &lt;a href=&quot;https://raw.githubusercontent.com/lodash/lodash/4.18.1/LICENSE&quot;&gt;MIT license&lt;/a&gt; &amp;amp; supports modern environments.&lt;br /&gt; Review the &lt;a href=&quot;https://github.com/lodash/lodash/wiki/build-differences&quot;&gt;build differences&lt;/a&gt; &amp;amp; pick one that’s right for you.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;In a browser:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;script src=&quot;lodash.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Using npm:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;$ npm i -g npm
$ npm i --save lodash
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;In Node.js:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// Load the full build.
var _ = require(&#39;lodash&#39;);
// Load the core build.
var _ = require(&#39;lodash/core&#39;);
// Load the FP build for immutable auto-curried iteratee-first data-last methods.
var fp = require(&#39;lodash/fp&#39;);

// Load method categories.
var array = require(&#39;lodash/array&#39;);
var object = require(&#39;lodash/fp/object&#39;);

// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
var at = require(&#39;lodash/at&#39;);
var curryN = require(&#39;lodash/fp/curryN&#39;);
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Why Lodash?&lt;/h2&gt; 
&lt;p&gt;Lodash makes JavaScript easier by taking the hassle out of working with arrays,&lt;br /&gt; numbers, objects, strings, etc. Lodash’s modular methods are great for:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Iterating arrays, objects, &amp;amp; strings&lt;/li&gt; 
 &lt;li&gt;Manipulating &amp;amp; testing values&lt;/li&gt; 
 &lt;li&gt;Creating composite functions&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Module Formats&lt;/h2&gt; 
&lt;p&gt;Lodash is available in a &lt;a href=&quot;https://lodash.com/custom-builds&quot;&gt;variety of builds&lt;/a&gt; &amp;amp; module formats.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/lodash&quot;&gt;lodash&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://www.npmjs.com/browse/keyword/lodash-modularized&quot;&gt;per method packages&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/lodash-es&quot;&gt;lodash-es&lt;/a&gt;, &lt;a href=&quot;https://www.npmjs.com/package/babel-plugin-lodash&quot;&gt;babel-plugin-lodash&lt;/a&gt;, &amp;amp; &lt;a href=&quot;https://www.npmjs.com/package/lodash-webpack-plugin&quot;&gt;lodash-webpack-plugin&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lodash/lodash/tree/npm/fp&quot;&gt;lodash/fp&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/lodash-amd&quot;&gt;lodash-amd&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>affaan-m/ECC</title>
      <link>https://github.com/affaan-m/ECC</link>
      <description>&lt;p&gt;The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/hero.png&quot; alt=&quot;ECC - the agent harness operating system&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;Language:&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/README.md&quot;&gt;English&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/pt-BR/README.md&quot;&gt;Português (Brasil)&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/README.zh-CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/zh-TW/README.md&quot;&gt;繁體中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/ja-JP/README.md&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/ko-KR/README.md&quot;&gt;한국어&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/tr/README.md&quot;&gt;Türkçe&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/ru/README.md&quot;&gt;Русский&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/vi-VN/README.md&quot;&gt;Tiếng Việt&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/th/README.md&quot;&gt;ไทย&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/de-DE/README.md&quot;&gt;Deutsch&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/es/README.md&quot;&gt;Español&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://discord.gg/36yGMHGFbR&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1496644400590094540?logo=discord&amp;amp;logoColor=white&amp;amp;label=Discord&amp;amp;color=5865F2&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://ecc.tools&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Website-ecc.tools-E07856?logo=googlechrome&amp;amp;logoColor=white&quot; alt=&quot;Website&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/apps/ecc-tools&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/GitHub%20App-ECC%20Tools-181717?logo=github&amp;amp;logoColor=white&quot; alt=&quot;GitHub App&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true&quot; alt=&quot;MIT license&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/affaan-m/ECC/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.ecc.tools%2Fbadge%2Fstars&amp;amp;style=flat&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/affaan-m/ECC/network/members&quot;&gt;&lt;img src=&quot;https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.ecc.tools%2Fbadge%2Fforks&amp;amp;style=flat&quot; alt=&quot;Forks&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/affaan-m/ECC/graphs/contributors&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/contributors/affaan-m/ECC?style=flat&quot; alt=&quot;Contributors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/marketplace/ecc-tools&quot;&gt;&lt;img src=&quot;https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.ecc.tools%2Fbadge%2Finstalls&amp;amp;logo=github&quot; alt=&quot;GitHub App installs&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.npmjs.com/package/ecc-universal&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dw/ecc-universal?label=ecc-universal&amp;amp;logo=npm&quot; alt=&quot;ecc-universal npm downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/ecc-agentshield&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dw/ecc-agentshield?label=ecc-agentshield&amp;amp;logo=npm&quot; alt=&quot;ecc-agentshield npm downloads&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/-Shell-4EAA25?logo=gnu-bash&amp;amp;logoColor=white&quot; alt=&quot;Shell&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/-TypeScript-3178C6?logo=typescript&amp;amp;logoColor=white&quot; alt=&quot;TypeScript&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/-Python-3776AB?logo=python&amp;amp;logoColor=white&quot; alt=&quot;Python&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/-Go-00ADD8?logo=go&amp;amp;logoColor=white&quot; alt=&quot;Go&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/-Java-ED8B00?logo=openjdk&amp;amp;logoColor=white&quot; alt=&quot;Java&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/-Perl-39457E?logo=perl&amp;amp;logoColor=white&quot; alt=&quot;Perl&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/-Markdown-000000?logo=markdown&amp;amp;logoColor=white&quot; alt=&quot;Markdown&quot; /&gt; &lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;Official sources only.&lt;/strong&gt; Install ECC only from verified channels: the GitHub repository &lt;a href=&quot;https://github.com/affaan-m/ECC&quot;&gt;github.com/affaan-m/ECC&lt;/a&gt;, the npm packages &lt;a href=&quot;https://www.npmjs.com/package/ecc-universal&quot;&gt;&lt;code&gt;ecc-universal&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://www.npmjs.com/package/ecc-agentshield&quot;&gt;&lt;code&gt;ecc-agentshield&lt;/code&gt;&lt;/a&gt;, the &lt;a href=&quot;https://github.com/apps/ecc-tools&quot;&gt;GitHub App&lt;/a&gt;, the plugin slug &lt;code&gt;ecc@ecc&lt;/code&gt;, and the project website &lt;a href=&quot;https://ecc.tools&quot;&gt;ecc.tools&lt;/a&gt;. Third-party re-uploads and unofficial mirrors are not maintained or reviewed by the project and may contain malware.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Install with Claude Code&lt;/h2&gt; 
&lt;p&gt;Run these commands inside Claude Code:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;/plugin marketplace add https://github.com/affaan-m/ECC
/plugin install ecc@ecc
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;That installs ECC&#39;s skills, agents, commands, and plugin-managed hooks. If you choose this path, stop there. Do not also run a full manual install into Claude Code.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Guided package setup is coming in &lt;code&gt;ecc-universal&lt;/code&gt; 2.2.0. Use the native Claude plugin commands above while npm remains on 2.1.0.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;table aria-label=&quot;ECC primary links&quot;&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://ecc.tools/pricing&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/community/ecc-tools-mark.svg?sanitize=true&quot; height=&quot;42&quot; alt=&quot;ECC Tools&quot; /&gt;&lt;br /&gt; &lt;strong&gt;ECC Pro + GitHub App&lt;/strong&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;&lt;a href=&quot;https://github.com/apps/ecc-tools&quot;&gt;Install free&lt;/a&gt; · &lt;a href=&quot;https://ecc.tools/pricing&quot;&gt;Private repos from $19/seat/mo&lt;/a&gt;&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/sponsors/affaan-m&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/community/heart.svg?sanitize=true&quot; height=&quot;42&quot; alt=&quot;&quot; /&gt;&lt;br /&gt; &lt;strong&gt;Sponsor ECC&lt;/strong&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;Fund the open-source project&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://discord.gg/36yGMHGFbR&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/community/discord.svg?sanitize=true&quot; height=&quot;42&quot; alt=&quot;Discord&quot; /&gt;&lt;br /&gt; &lt;strong&gt;Community&lt;/strong&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;Discord · Q&amp;amp;A · Show and Tell&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;sub&gt;&lt;strong&gt;OSS stays free.&lt;/strong&gt; This repo is MIT-licensed forever. ECC Pro is the hosted GitHub App for private repos. &lt;a href=&quot;https://github.com/sponsors/affaan-m&quot;&gt;Sponsors&lt;/a&gt; and &lt;a href=&quot;https://ecc.tools/pricing&quot;&gt;Pro subscribers&lt;/a&gt; fund the work. That&#39;s why a single maintainer ships weekly across 7 harnesses.&lt;/sub&gt;&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;sub&gt;&lt;strong&gt;Partners &amp;amp; sponsors&lt;/strong&gt;&lt;/sub&gt;&lt;/p&gt; 
 &lt;p align=&quot;center&quot; aria-label=&quot;Partners and sponsors&quot;&gt; &lt;a href=&quot;https://www.coderabbit.ai&quot; title=&quot;CodeRabbit&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/sponsors/coderabbit.png&quot; height=&quot;54&quot; alt=&quot;CodeRabbit&quot; /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://www.greptile.com/go/ecc&quot; title=&quot;Greptile&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/sponsors/greptile.png&quot; height=&quot;54&quot; alt=&quot;Greptile&quot; /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://www.atlascloud.ai/?utm_source=github&amp;amp;utm_medium=link&amp;amp;utm_campaign=ECC&quot; title=&quot;Atlas Cloud&quot;&gt;
   &lt;picture&gt;
    &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;assets/images/sponsors/atlascloud-dark.svg&quot; /&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/sponsors/atlascloud.svg?sanitize=true&quot; width=&quot;154&quot; alt=&quot;Atlas Cloud&quot; /&gt;
   &lt;/picture&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://www.moonshot.ai&quot; title=&quot;Moonshot AI - Kimi&quot;&gt;
   &lt;picture&gt;
    &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;assets/images/sponsors/moonshot-dark.png&quot; /&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/sponsors/moonshot.png&quot; width=&quot;132&quot; alt=&quot;Moonshot AI - Kimi&quot; /&gt;
   &lt;/picture&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://compute.itomarkets.com&quot; title=&quot;Itô Markets&quot;&gt;
   &lt;picture&gt;
    &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;assets/images/sponsors/ito-transparent-light.png&quot; /&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/sponsors/ito-transparent.png&quot; width=&quot;96&quot; alt=&quot;Itô Markets&quot; /&gt;
   &lt;/picture&gt;&lt;/a&gt; &lt;/p&gt; 
 &lt;p&gt;&lt;sub&gt;&lt;strong&gt;Community sponsors:&lt;/strong&gt; &lt;a href=&quot;https://github.com/mikejmorgan-ai&quot;&gt;Mike Morgan&lt;/a&gt; · &lt;a href=&quot;https://github.com/jasonwu513&quot;&gt;@jasonwu513&lt;/a&gt; · &lt;a href=&quot;https://github.com/1anter&quot;&gt;@1anter&lt;/a&gt; · &lt;a href=&quot;https://github.com/massimotodaro&quot;&gt;@massimotodaro&lt;/a&gt; · &lt;a href=&quot;https://github.com/meadmccabe&quot;&gt;@meadmccabe&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;sub&gt;&lt;a href=&quot;https://github.com/sponsors/affaan-m&quot;&gt;&lt;strong&gt;Become a Sponsor&lt;/strong&gt;&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/SPONSORS.md&quot;&gt;Sponsor Tiers&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/SPONSORING.md&quot;&gt;Sponsorship Program&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/#install-ecc&quot;&gt;Jump to install ↓&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;ECC&lt;/h1&gt; 
&lt;p&gt;Your agent can write code, but ECC gives it a coordinated engineering system and toolbox: it plans before it builds, verifies changes with tests, reviews its own work from a fresh context, remembers what matters, and turns repeated wins into reusable skills and workflows.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;plan -&amp;gt; test -&amp;gt; implement -&amp;gt; review -&amp;gt; verify -&amp;gt; remember -&amp;gt; improve
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Instead of rebuilding that process in every prompt, you install it once and make it part of how your agent works.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Optimize the context window. Persist everything else.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;ECC is MIT-licensed open source. It works best with Claude Code today, has a supported Codex sync path, and provides capability-limited adapters for Cursor, OpenCode, Gemini, Zed, GitHub Copilot, Antigravity, Qwen, and other harnesses. See the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/#platform-support&quot;&gt;support status matrix&lt;/a&gt; before assuming feature parity.&lt;/p&gt; 
&lt;p&gt;Access to 68 agents, 287 skills, and 94 legacy command shims, plus hooks, rules, memory, continuous learning, and AgentShield security scanning. The agents are specialized for planning, review, build repair, security, architecture, and domain work.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Included&lt;/th&gt; 
   &lt;th style=&quot;text-align:right&quot;&gt;Count&lt;/th&gt; 
   &lt;th&gt;What it gives you&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agents&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;68 agents&lt;/td&gt; 
   &lt;td&gt;Planning, review, build repair, security, architecture, and domain work&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Skills&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;287 skills&lt;/td&gt; 
   &lt;td&gt;TDD, research, security, docs, frontend, data, ML, operations, and more&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Commands&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;94 commands&lt;/td&gt; 
   &lt;td&gt;Convenient entry points while ECC moves to a skills-first surface&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Hooks and memory&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;Runtime&lt;/td&gt; 
   &lt;td&gt;Enforcement, session summaries, continuous learning, instincts, and context controls&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Rules&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;Selective&lt;/td&gt; 
   &lt;td&gt;Always-loaded standards you choose by language or project&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;AgentShield&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;Included&lt;/td&gt; 
   &lt;td&gt;Scanning for prompts, hooks, MCP config, permissions, secrets, and agent files&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Install ECC&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;Guided package setup is coming in &lt;code&gt;ecc-universal&lt;/code&gt; 2.2.0. The current npm release, 2.1.0, does not include the guided setup commands. Use the native Claude plugin commands at the top of this README until 2.2.0 is published.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h3&gt;Pick one path only (per harness)&lt;/h3&gt; 
&lt;p&gt;You can use ECC with Claude Code, Codex, and other harnesses at the same time. Choose one install method for each harness:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Recommended today for Claude Code:&lt;/strong&gt; use the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/#install-with-claude-code&quot;&gt;native plugin commands above&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Coming in release 2.2:&lt;/strong&gt; guided package setup for Claude Code, Codex, and Kimi Code; see the preview at the bottom of this install area&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Works:&lt;/strong&gt; Claude Code plugin + Codex native plugin&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Works:&lt;/strong&gt; Claude Code plugin + the legacy Codex sync flow&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Avoid:&lt;/strong&gt; Claude Code plugin + full Claude manual install&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Avoid:&lt;/strong&gt; Codex sync + Codex marketplace plugin&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Do not stack install methods.&lt;/strong&gt; Installing ECC twice into the same harness can duplicate skills, commands, hooks, or configuration; installing it once into multiple harnesses does not.&lt;/p&gt; 
&lt;p&gt;If you already layered multiple installs and things look duplicated, skip straight to &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/#reset--uninstall-ecc&quot;&gt;Reset / Uninstall ECC&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Install trouble?&lt;/strong&gt; Open the short &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/new?template=install-problem.yml&quot;&gt;install or runtime problem form&lt;/a&gt;, or run &lt;code&gt;ecc feedback&lt;/code&gt;. ECC never uploads diagnostics automatically.&lt;/p&gt; 
&lt;h3&gt;Claude Code details&lt;/h3&gt; 
&lt;p&gt;Claude Code owns these built-in commands, including their errors when a marketplace, plugin, or conflicting scope already exists. ECC cannot intercept that parser. If either native command reports an existing install or scope conflict, wait for the 2.2.0 guided setup or resolve the conflicting Claude plugin scope before retrying; do not layer a manual install on top.&lt;/p&gt; 
&lt;p&gt;After ECC is installed, &lt;code&gt;/ecc:configure-ecc&lt;/code&gt; is the namespaced in-Claude reconfiguration skill. It delegates to the same safe setup flow, but it is available only after the plugin is installed and cannot replace Claude Code&#39;s built-in &lt;code&gt;/plugin&lt;/code&gt; command during a first install.&lt;/p&gt; 
&lt;p&gt;Claude Code plugins cannot distribute &lt;code&gt;rules&lt;/code&gt;, so add only the rule packs you actually want:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/affaan-m/ECC.git
cd ECC
mkdir -p ~/.claude/rules/ecc
cp -R rules/common ~/.claude/rules/ecc/
cp -R rules/typescript ~/.claude/rules/ecc/  # replace with your stack
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Start with &lt;code&gt;rules/common&lt;/code&gt; plus one language or framework pack you actually use. If you install the plugin, do not run &lt;code&gt;./install.sh --profile full&lt;/code&gt; afterward.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Prefer settings.json? Add the marketplace declaratively&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Add directly to your &lt;code&gt;~/.claude/settings.json&lt;/code&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;extraKnownMarketplaces&quot;: {
    &quot;ecc&quot;: {
      &quot;source&quot;: {
        &quot;source&quot;: &quot;github&quot;,
        &quot;repo&quot;: &quot;affaan-m/ECC&quot;
      }
    }
  },
  &quot;enabledPlugins&quot;: {
    &quot;ecc@ecc&quot;: true
  }
}
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;This gives you the same result as the two &lt;code&gt;/plugin&lt;/code&gt; commands above.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Naming + migration note (ecc@ecc, affaan-m/ECC, ecc-universal)&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC has three public identifiers, and they are not interchangeable:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;GitHub source repo: &lt;code&gt;affaan-m/ECC&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Claude marketplace/plugin identifier: &lt;code&gt;ecc@ecc&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;npm package: &lt;code&gt;ecc-universal&lt;/code&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;This is intentional. Anthropic marketplace/plugin installs are keyed by a canonical plugin identifier, so ECC uses &lt;code&gt;ecc@ecc&lt;/code&gt; to keep tool names and slash-command namespaces short enough for strict Desktop/API validators. Older posts may still show the former long marketplace identifier; treat that as a legacy alias only. Separately, the npm package stayed on &lt;code&gt;ecc-universal&lt;/code&gt;, so npm installs and marketplace installs intentionally use different names.&lt;/p&gt; 
 &lt;p&gt;npm releases are cut per version tag, not per commit, so &lt;code&gt;ecc-universal&lt;/code&gt; tracks releases (2.1, 2.2, ...) rather than every push to &lt;code&gt;main&lt;/code&gt;. Install from git if you want the bleeding edge.&lt;/p&gt; 
 &lt;p&gt;If your local Claude setup was wiped or reset, that does not mean you need to repurchase anything. Start with &lt;code&gt;node scripts/ecc.js list-installed&lt;/code&gt;, then run &lt;code&gt;node scripts/ecc.js doctor&lt;/code&gt; and &lt;code&gt;node scripts/ecc.js repair&lt;/code&gt; before reinstalling. That usually restores ECC-managed files without rebuilding your setup.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h3&gt;Codex App and CLI&lt;/h3&gt; 
&lt;p&gt;Current Codex releases can install ECC as a native repo-marketplace plugin. The marketplace entry uses the repository root so Codex&#39;s cache receives the manifest together with all referenced skills, MCP configuration, hook runtime, scripts, and assets:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;codex plugin marketplace add affaan-m/ECC
codex plugin add ecc@ecc
codex plugin list --json
node scripts/codex/check-plugin-cache.js
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Both add commands are idempotent. To refresh later, run &lt;code&gt;codex plugin marketplace upgrade ecc&lt;/code&gt; followed by &lt;code&gt;codex plugin add ecc@ecc&lt;/code&gt;. Codex stores one enabled plugin state in the active &lt;code&gt;CODEX_HOME&lt;/code&gt;; it does not offer Claude&#39;s &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;project&lt;/code&gt;, and &lt;code&gt;local&lt;/code&gt; scopes. Its native hooks require an explicit trust decision and do not use Claude&#39;s four ECC hook profiles. Inside Codex, invoke &lt;code&gt;$configure-ecc&lt;/code&gt; for the guided provider-aware flow.&lt;/p&gt; 
&lt;p&gt;The older &lt;code&gt;scripts/sync-ecc-to-codex.sh&lt;/code&gt; path remains a separate compatibility option for users who intentionally want copied and merged configuration in &lt;code&gt;~/.codex&lt;/code&gt;; it is not required for the native plugin. Run Codex once first so &lt;code&gt;~/.codex/config.toml&lt;/code&gt; exists, then:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/affaan-m/ECC.git
cd ECC
npm install
bash scripts/sync-ecc-to-codex.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can also open the ECC repository directly in Codex for a project-local setup. Codex reads the root &lt;code&gt;AGENTS.md&lt;/code&gt; and the trusted project configuration in &lt;code&gt;.codex/&lt;/code&gt; without a global sync. Do not add the native marketplace plugin on top of the sync flow.&lt;/p&gt; 
&lt;p&gt;For repo navigation, surface ownership, and PR diff packet guidance, read the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/CODEX-NAVIGATION-GUIDE.md&quot;&gt;Codex ECC Navigation Map&lt;/a&gt;. See the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/.codex-plugin/README.md&quot;&gt;.codex plugin notes&lt;/a&gt; for native lifecycle details.&lt;/p&gt; 
&lt;h3&gt;Other agents and editors&lt;/h3&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Cursor, OpenCode, Gemini, Zed, Antigravity, Qwen, Hermes, OpenClaw, Kimi, CodeBuddy, JoyCode, Copilot&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Clone ECC once, then choose the target that matches your harness:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/affaan-m/ECC.git
cd ECC
&lt;/code&gt;&lt;/pre&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Harness&lt;/th&gt; 
    &lt;th&gt;Install or setup&lt;/th&gt; 
    &lt;th&gt;Notes&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Cursor&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target cursor&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Project-local &lt;code&gt;.cursor/&lt;/code&gt; adapter&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;OpenCode&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;npm install &amp;amp;&amp;amp; npm run build:opencode &amp;amp;&amp;amp; ./install.sh --profile full --target opencode&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Builds the plugin payload before the full install&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Gemini CLI&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target gemini&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Project-local &lt;code&gt;.gemini/&lt;/code&gt; config&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Zed&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target zed&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Project-local &lt;code&gt;.zed/&lt;/code&gt; adapter&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Antigravity&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target antigravity&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/ANTIGRAVITY-GUIDE.md&quot;&gt;Antigravity guide&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Qwen CLI&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target qwen&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/QWEN-GUIDE.md&quot;&gt;Qwen guide&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Hermes&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target hermes&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/HERMES-SETUP.md&quot;&gt;Hermes setup guide&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;OpenClaw&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target openclaw&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Managed home-directory install&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Kimi Code CLI&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target kimi&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Project-local &lt;code&gt;.kimi-code/&lt;/code&gt; install&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;CodeBuddy&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target codebuddy&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Project-local &lt;code&gt;.codebuddy/&lt;/code&gt; install&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;JoyCode&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;./install.sh --profile minimal --target joycode&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Project-local &lt;code&gt;.joycode/&lt;/code&gt; install&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;GitHub Copilot support is already included in this repository. &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; provides the instruction layer, &lt;code&gt;.github/prompts/&lt;/code&gt; contains the reusable &lt;code&gt;/plan&lt;/code&gt;, &lt;code&gt;/tdd&lt;/code&gt;, &lt;code&gt;/security-review&lt;/code&gt;, &lt;code&gt;/build-fix&lt;/code&gt;, and &lt;code&gt;/refactor&lt;/code&gt; prompts, and &lt;code&gt;.vscode/settings.json&lt;/code&gt; enables &lt;code&gt;chat.promptFiles&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;For a harness without a native ECC target, use the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/MANUAL-ADAPTATION-GUIDE.md&quot;&gt;manual adaptation guide&lt;/a&gt;. It explains how to carry a small set of ECC skills and workflow instructions into chat-style tools without pretending hooks or native skill discovery are available.&lt;/p&gt; 
 &lt;p&gt;Cursor installs agent definitions under &lt;code&gt;.cursor/agents/ecc-*.md&lt;/code&gt;. Cursor-native loading behavior can vary by Cursor build. ECC does not install root &lt;code&gt;AGENTS.md&lt;/code&gt; into &lt;code&gt;.cursor/&lt;/code&gt;. The adapter keeps Cursor&#39;s context scoped to its native rules and agent surfaces.&lt;/p&gt; 
 &lt;p&gt;Deep per-harness notes (feature parity, hook adapters, limitations) live in &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/#platform-support&quot;&gt;Platform Support&lt;/a&gt; below.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Advanced Install Options&lt;/h2&gt; 
&lt;p&gt;The options stay here, directly under the main install paths, so you do not have to hunt through the README when the default setup is not the right fit.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Low-context install with no hook runtime&lt;/strong&gt;&lt;/summary&gt; 
 &lt;h3&gt;Low-context / no-hooks path&lt;/h3&gt; 
 &lt;p&gt;Use this when you want ECC&#39;s rules, agents, commands, platform config, and core workflows without runtime hooks:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./install.sh --profile minimal --target claude
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Windows:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;.\install.ps1 --profile minimal --target claude
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;This profile intentionally excludes &lt;code&gt;hooks-runtime&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;Claude manual installs place each skill directly under &lt;code&gt;~/.claude/skills/&amp;lt;skill-name&amp;gt;/&lt;/code&gt; (or &lt;code&gt;.claude/skills/&amp;lt;skill-name&amp;gt;/&lt;/code&gt; for &lt;code&gt;claude-project&lt;/code&gt;) so Claude Code can discover it. When upgrading an older ECC manual install, the installer migrates only nested &lt;code&gt;skills/ecc/&lt;/code&gt; files recorded in ECC install-state. If a flat skill directory is user-owned, ECC preserves it, prints a conflict warning, and keeps any older managed copy tracked for a safe uninstall instead of overwriting user files.&lt;/p&gt; 
 &lt;p&gt;For the normal core profile with hooks disabled:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./install.sh --profile core --without baseline:hooks --target claude
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Add the hook runtime later only if you want it:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./install.sh --target claude --modules hooks-runtime
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Choose only the components you need&lt;/strong&gt;&lt;/summary&gt; 
 &lt;h3&gt;Find the right components first&lt;/h3&gt; 
 &lt;p&gt;Ask the packaged advisor which components match your work:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node scripts/ecc.js consult &quot;security reviews&quot; --target claude
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;It returns matching components, related profiles, and preview/install commands. Use the preview command before installing if you want to inspect the exact file plan.&lt;/p&gt; 
 &lt;p&gt;You can also install explicit skills or capabilities:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./install.sh --target claude --skills tdd-workflow,security-review
node scripts/ecc.js install --profile minimal --target claude --with capability:machine-learning
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Manual component-by-component copying also works. Each component is fully independent:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Just agents
cp agents/*.md ~/.claude/agents/

# Rules directories (common + language-specific)
mkdir -p ~/.claude/rules/ecc
cp -r rules/common ~/.claude/rules/ecc/
cp -r rules/typescript ~/.claude/rules/ecc/   # pick your stack

# Core/general skills only (Claude Code loads skills from direct children
# of ~/.claude/skills; do not nest manual installs under ~/.claude/skills/ecc/)
mkdir -p ~/.claude/skills
cp -r .agents/skills/* ~/.claude/skills/
cp -r skills/search-first ~/.claude/skills/

# Optional: maintained slash-command compatibility during migration
mkdir -p ~/.claude/commands
cp commands/*.md ~/.claude/commands/
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Retired shims live in &lt;code&gt;legacy-command-shims/&lt;/code&gt;. Copy individual files from there only if you still need old names such as &lt;code&gt;/tdd&lt;/code&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Project-local rules instead of global rules&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Use project-local rules when ECC&#39;s standards should apply to one repository rather than every Claude Code session:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd your-project
mkdir -p .claude/rules/ecc
cp -R /path/to/ECC/rules/common .claude/rules/ecc/
cp -R /path/to/ECC/rules/typescript .claude/rules/ecc/
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Rules are always-loaded context, so begin with &lt;code&gt;common&lt;/code&gt; and one pack for the stack you actually use. When copying rules manually, copy the whole language directory (for example &lt;code&gt;rules/common&lt;/code&gt; or &lt;code&gt;rules/golang&lt;/code&gt;), not the files inside it, so relative references keep working and filenames do not collide.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Fully manual Claude install&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Use this only when you are intentionally skipping the plugin path:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/affaan-m/ECC.git
cd ECC
./install.sh --profile full
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Windows:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;git clone https://github.com/affaan-m/ECC.git
cd ECC
.\install.ps1 --profile full
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;If you choose this path, stop there. Do not also run &lt;code&gt;/plugin install&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;For hand-picked manual installs, Claude discovers skills as direct children of &lt;code&gt;~/.claude/skills/&lt;/code&gt;; do not nest them under &lt;code&gt;~/.claude/skills/ecc/&lt;/code&gt;.&lt;/p&gt; 
 &lt;h4&gt;Install hooks&lt;/h4&gt; 
 &lt;p&gt;Do not copy the raw repo &lt;code&gt;hooks/hooks.json&lt;/code&gt; into &lt;code&gt;~/.claude/settings.json&lt;/code&gt; or &lt;code&gt;~/.claude/hooks/hooks.json&lt;/code&gt;. That file is plugin/repo-oriented; use the installer so hook command paths are rewritten correctly:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash ./install.sh --target claude --modules hooks-runtime
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;That writes resolved hooks to &lt;code&gt;~/.claude/hooks/hooks.json&lt;/code&gt; and leaves any existing &lt;code&gt;~/.claude/settings.json&lt;/code&gt; untouched.&lt;/p&gt; 
 &lt;p&gt;If you installed ECC via &lt;code&gt;/plugin install&lt;/code&gt;, do not copy those hooks into &lt;code&gt;settings.json&lt;/code&gt;. Claude Code v2.1+ already auto-loads plugin &lt;code&gt;hooks/hooks.json&lt;/code&gt;, and duplicating them in &lt;code&gt;settings.json&lt;/code&gt; causes duplicate execution and cross-platform hook conflicts.&lt;/p&gt; 
 &lt;p&gt;On Windows, Claude&#39;s config root is &lt;code&gt;%USERPROFILE%\\.claude&lt;/code&gt;; install the hook runtime with:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;pwsh -File .\install.ps1 --target claude --modules hooks-runtime
&lt;/code&gt;&lt;/pre&gt; 
 &lt;h4&gt;Configure MCPs&lt;/h4&gt; 
 &lt;p&gt;Claude plugin installs intentionally do not auto-enable ECC&#39;s bundled MCP server definitions. This avoids overlong plugin MCP tool names on strict third-party gateways while keeping manual MCP setup available.&lt;/p&gt; 
 &lt;p&gt;Use Claude Code&#39;s &lt;code&gt;/mcp&lt;/code&gt; command or CLI-managed MCP setup for live Claude Code server changes; Claude Code persists those choices in &lt;code&gt;~/.claude.json&lt;/code&gt;. For repo-local MCP access, copy desired MCP server definitions from &lt;code&gt;mcp-configs/mcp-servers.json&lt;/code&gt; into a project-scoped &lt;code&gt;.mcp.json&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;ECC ships exactly one default connector (&lt;code&gt;chrome-devtools&lt;/code&gt;); everything else is a skill wrapping a CLI/REST API or an opt-in catalog entry. The rule and the June 2026 audit that retired the previous six defaults live in &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/MCP-CONNECTOR-POLICY.md&quot;&gt;docs/MCP-CONNECTOR-POLICY.md&lt;/a&gt;.&lt;/p&gt; 
 &lt;p&gt;If you already run your own copies of ECC-bundled MCPs, set:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export ECC_DISABLED_MCPS=&quot;chrome-devtools&quot;
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;ECC-managed install and Codex sync flows will skip or remove those bundled servers instead of re-adding duplicates. &lt;code&gt;ECC_DISABLED_MCPS&lt;/code&gt; is an ECC install/sync filter, not a live Claude Code toggle.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Replace &lt;code&gt;YOUR_*_HERE&lt;/code&gt; placeholders with your actual API keys.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Multi-model commands require additional setup&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;&lt;code&gt;multi-*&lt;/code&gt; commands are &lt;strong&gt;not&lt;/strong&gt; covered by the base plugin/rules install.&lt;/p&gt; 
 &lt;p&gt;To use &lt;code&gt;/multi-plan&lt;/code&gt;, &lt;code&gt;/multi-execute&lt;/code&gt;, &lt;code&gt;/multi-backend&lt;/code&gt;, &lt;code&gt;/multi-frontend&lt;/code&gt;, and &lt;code&gt;/multi-workflow&lt;/code&gt;, you must also install the &lt;code&gt;ccg-workflow&lt;/code&gt; runtime. Initialize it with &lt;code&gt;npx ccg-workflow&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;That runtime provides the external dependencies these commands expect, including:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;code&gt;~/.claude/bin/codeagent-wrapper&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;~/.claude/.ccg/prompts/*&lt;/code&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;Without &lt;code&gt;ccg-workflow&lt;/code&gt;, these &lt;code&gt;multi-*&lt;/code&gt; commands will not run correctly.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Custom API endpoints, model gateways, and self-hosted models&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC works through each harness&#39;s normal configuration, so you can use an official provider, a compatible custom API endpoint or model gateway, or a self-hosted model without changing ECC&#39;s workflows.&lt;/p&gt; 
 &lt;p&gt;For Claude Code, ECC does not hardcode Anthropic-hosted transport settings. Minimal gateway example:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export ANTHROPIC_BASE_URL=https://your-gateway.example.com
export ANTHROPIC_AUTH_TOKEN=your-token
claude
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;If your gateway remaps model names, configure that in Claude Code rather than in ECC. ECC&#39;s hooks, skills, commands, and rules are model-provider agnostic once the &lt;code&gt;claude&lt;/code&gt; CLI is already working. See Anthropic&#39;s &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/llm-gateway&quot;&gt;LLM gateway documentation&lt;/a&gt; and &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/model-config&quot;&gt;model configuration documentation&lt;/a&gt;.&lt;/p&gt; 
 &lt;p&gt;Run or self-host any open-source model behind that gateway using separate compute and serving setup. If you need GPU capacity, &lt;a href=&quot;https://compute.itomarkets.com&quot;&gt;Itô&lt;/a&gt; is ECC&#39;s preferred compute sponsor; any GPU provider works. The sponsorship link is passive: it does not invoke an RFQ, reserve capacity, provision compute, or configure serving. Separately, &lt;code&gt;ecc ito find&lt;/code&gt; invokes the explicitly configured canonical Itô CLI and submits a live authenticated RFQ; it does not reserve capacity. Managed inference through Itô is not live yet.&lt;/p&gt; 
 &lt;h3&gt;Self-host Kimi with ECC + Itô compute&lt;/h3&gt; 
 &lt;p&gt;The Kimi Code harness and the model-serving layer are separate. ECC configures the agent harness; you bring an API endpoint or self-host an open-weight Kimi model on your own GPU capacity. This adapter is verified against Kimi Code 0.31.x (&lt;code&gt;@moonshot-ai/kimi-code&lt;/code&gt;):&lt;/p&gt; 
 &lt;table aria-label=&quot;Local Kimi model path&quot; width=&quot;100%&quot;&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://compute.itomarkets.com&quot;&gt; 
      &lt;picture&gt;
       &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;assets/images/sponsors/ito-transparent-light.png&quot; /&gt;
       &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/sponsors/ito-transparent.png&quot; width=&quot;92&quot; alt=&quot;Itô Markets&quot; /&gt;
      &lt;/picture&gt;&lt;br /&gt; &lt;strong&gt;1. Get GPU capacity&lt;/strong&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;Use Itô or any GPU provider.&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.moonshot.ai&quot;&gt; 
      &lt;picture&gt;
       &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;assets/images/sponsors/moonshot-dark.png&quot; /&gt;
       &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/sponsors/moonshot.png&quot; width=&quot;126&quot; alt=&quot;Moonshot AI - Kimi&quot; /&gt;
      &lt;/picture&gt;&lt;br /&gt; &lt;strong&gt;2. Serve Kimi&lt;/strong&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;Expose the chosen checkpoint through a compatible endpoint.&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/.kimi/README.md&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/community/ecc-tools-mark.svg?sanitize=true&quot; height=&quot;52&quot; alt=&quot;ECC Tools&quot; /&gt;&lt;br /&gt; &lt;strong&gt;3. Run Kimi Code with ECC&lt;/strong&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;Install project instructions and skills, then start Kimi Code.&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;p&gt;Configure the endpoint with Kimi Code&#39;s &lt;a href=&quot;https://moonshotai.github.io/kimi-cli/en/configuration/providers.html&quot;&gt;official provider guide&lt;/a&gt;, then install ECC:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash ./install.sh --target kimi --profile minimal
node scripts/ecc.js doctor --target kimi
kimi
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Kimi Code discovers the installed &lt;code&gt;.kimi-code/AGENTS.md&lt;/code&gt; instructions and &lt;code&gt;.kimi-code/skills/&lt;/code&gt; workflows natively; project-level &lt;code&gt;.agents/skills/&lt;/code&gt; is also an official discovery location. ECC safely merges project MCP entries into &lt;code&gt;.kimi-code/mcp.json&lt;/code&gt; and does not change the user-level &lt;code&gt;~/.kimi-code/config.toml&lt;/code&gt;. Kimi Code supports native hooks, but ECC&#39;s current managed-project adapter does not configure them, so this installer does not offer Kimi hook profiles. The installer dry-run and regression suite verify that every managed Kimi write stays inside the project-local &lt;code&gt;.kimi-code/&lt;/code&gt; root.&lt;/p&gt; 
 &lt;h3&gt;Itô compute CLI bridge&lt;/h3&gt; 
 &lt;p&gt;&lt;code&gt;ecc ito&lt;/code&gt; delegates to the separately installed canonical Itô client; ECC does not maintain a second API client. &lt;code&gt;ecc ito login [--no-browser]&lt;/code&gt; performs device authorization, opens the Itô verification page by default, and persists a device token in macOS Keychain; &lt;code&gt;--no-browser&lt;/code&gt; suppresses the page handoff. ECC itself does no browser automation. &lt;code&gt;ecc ito auth&lt;/code&gt; is validation-only and rejects &lt;code&gt;--no-browser&lt;/code&gt;. The available operations are &lt;code&gt;ecc ito login&lt;/code&gt;, &lt;code&gt;ecc ito auth&lt;/code&gt;, &lt;code&gt;ecc ito find&lt;/code&gt;, &lt;code&gt;ecc ito status&lt;/code&gt;, and the separately gated &lt;code&gt;ecc ito evals&lt;/code&gt;. The matching MCP tools remain &lt;code&gt;ito_auth&lt;/code&gt;, &lt;code&gt;ito_find&lt;/code&gt;, and &lt;code&gt;ito_status&lt;/code&gt;; &lt;code&gt;ito_auth&lt;/code&gt; validates existing credentials and node qualification is CLI-only.&lt;/p&gt; 
 &lt;p&gt;The &lt;code&gt;ito-compute-cli&lt;/code&gt; package is currently unpublished. Build it locally from the Itô runtime repo (private while the desk hardens; design partners get access) under &lt;code&gt;cli/ito-compute-cli&lt;/code&gt;, run &lt;code&gt;npm ci&lt;/code&gt; and &lt;code&gt;npm run check&lt;/code&gt;, then set &lt;code&gt;ECC_ITO_CLI_EXECUTABLE&lt;/code&gt; to that build&#39;s absolute &lt;code&gt;dist/bin/ito.js&lt;/code&gt; path. Login never inherits &lt;code&gt;ITO_API_KEY&lt;/code&gt;; auth, find, and status forward &lt;code&gt;ITO_API_KEY&lt;/code&gt; directly when configured, and &lt;code&gt;ITO_AUTH_MODE=legacy&lt;/code&gt; is not required. &lt;code&gt;ecc ito logout&lt;/code&gt; revokes the current device credential and retains its local copy if remote revocation cannot be confirmed. Device tokens use macOS Keychain by default; explicit file fallback must retain owner-only directory/file permissions. ECC does not discover this credential-bearing client through &lt;code&gt;PATH&lt;/code&gt;. See the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/skills/ito-compute/SKILL.md&quot;&gt;&lt;code&gt;ito-compute&lt;/code&gt; skill&lt;/a&gt; for the full RFQ authority and MCP setup contract.&lt;/p&gt; 
 &lt;p&gt;&lt;code&gt;find&lt;/code&gt; submits a live authenticated RFQ. It does not reserve capacity. &lt;code&gt;evals&lt;/code&gt; requires both &lt;code&gt;ITO_ENABLE_SIXTYTWO_LIVE=1&lt;/code&gt; and &lt;code&gt;--live-sixtytwo&lt;/code&gt;, a separately installed &lt;code&gt;sixtytwo-cli==0.3.33&lt;/code&gt;, an explicit node list, and an existing absolute configuration directory. It cannot rent, launch, recover, repair, or purchase. ECC exposes no quote lock, purchase, workload, or inference path, and it never replaces a missing client or failed live call with a local result.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Reset, repair, or uninstall&lt;/strong&gt;&lt;/summary&gt; 
 &lt;h3&gt;Reset / Uninstall ECC&lt;/h3&gt; 
 &lt;p&gt;If ECC feels duplicated, intrusive, or broken, inspect the managed state before reinstalling:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node scripts/ecc.js list-installed
node scripts/ecc.js doctor
node scripts/ecc.js repair
node scripts/ecc.js uninstall --dry-run
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;For direct uninstall:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node scripts/uninstall.js --dry-run
node scripts/uninstall.js
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;If you are leaving, the uninstall command prints an optional &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/new?template=quick-feedback.yml&quot;&gt;20-second feedback form&lt;/a&gt;. It is a public GitHub issue, never blocks uninstall, and ECC does not upload diagnostics. You can also run &lt;code&gt;ecc feedback&lt;/code&gt; at any time to see the problem, feedback, and feature routes.&lt;/p&gt; 
 &lt;p&gt;Plugin users should remove the plugin from Claude Code, then delete only the rule folders they manually copied and no longer want. ECC only removes files recorded in its install-state. It does not claim unrelated files in your harness directories.&lt;/p&gt; 
 &lt;p&gt;If you stacked methods, clean up in this order:&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;Remove the Claude Code plugin install.&lt;/li&gt; 
  &lt;li&gt;Run the ECC uninstall command from the repo root to remove install-state-managed files.&lt;/li&gt; 
  &lt;li&gt;Delete any extra rule folders you copied manually and no longer want.&lt;/li&gt; 
  &lt;li&gt;Reinstall once, using a single path.&lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/details&gt; 
&lt;h2&gt;Coming soon: guided setup in release 2.2&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;These ECC package-runner commands are not available in the current npm release, 2.1.0. Do not run them until &lt;code&gt;ecc-universal&lt;/code&gt; 2.2.0 is published.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;The earlier README description—&lt;strong&gt;Recommended default:&lt;/strong&gt; run the guided Claude plugin setup—was published too soon. That recommendation is withdrawn until release 2.2.&lt;/p&gt; 
&lt;p&gt;For Claude Code plugin setup, updates, scope changes, and hook-profile changes:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx ecc-universal setup
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Release 2.2 will support the same guided setup through modern package runners:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Package runner&lt;/th&gt; 
   &lt;th&gt;Guided setup command&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;npm / npx&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;npx ecc-universal setup&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pnpm&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;pnpm dlx ecc-universal setup&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Yarn 2+&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;yarn dlx ecc-universal setup&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Bun&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;bunx ecc-universal setup&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Yarn Classic 1 does not provide &lt;code&gt;yarn dlx&lt;/code&gt;; use &lt;code&gt;npx&lt;/code&gt;, install the package globally, or upgrade Yarn for a temporary one-shot run after 2.2 is published.&lt;/p&gt; 
&lt;p&gt;The wizard inventories the official marketplace and every native Claude install scope before making changes, then installs, updates, or safely moves &lt;code&gt;ecc@ecc&lt;/code&gt; to the scope you choose. Rerun the same command whenever you want to update ECC, change scope, or change its hook profile. This setup wizard currently configures the Claude Code plugin; use the multi-harness wizard below for Codex or Kimi Code.&lt;/p&gt; 
&lt;p&gt;To configure more than one coding agent in one reviewed flow, use the multi-harness wizard:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx ecc-universal install --guided
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;It lets you select any combination of Claude Code, Codex, and Kimi Code, shows each install channel and destination, preflights every selection before the first write, and asks for one final confirmation.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Harness&lt;/th&gt; 
   &lt;th&gt;Guided install behavior&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Claude Code&lt;/td&gt; 
   &lt;td&gt;Native &lt;code&gt;ecc@ecc&lt;/code&gt; plugin with one &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;project&lt;/code&gt;, or &lt;code&gt;local&lt;/code&gt; scope and an ECC hook profile&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Codex&lt;/td&gt; 
   &lt;td&gt;Native Codex marketplace/plugin lifecycle; hook review and trust remain Codex-owned&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Kimi Code&lt;/td&gt; 
   &lt;td&gt;Managed project files under &lt;code&gt;./.kimi-code&lt;/code&gt;; ECC hooks, model/provider settings, and authentication are not configured&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;For automation, make every provider-specific choice explicit:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx ecc-universal install --guided \
  --harness claude --harness codex --harness kimi \
  --claude-scope local --claude-hooks standard \
  --profile core --yes
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Verify the native guided Codex path and managed Kimi path without writing first:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx ecc-universal install --guided --harness codex --dry-run
npx ecc-universal install --profile core --target kimi --dry-run
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Additional package-name commands will also become available through the 2.2 alias:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx ecc-universal consult &quot;security reviews&quot; --target claude
npx ecc-universal install --profile minimal --target claude --with capability:machine-learning
npx ecc-universal doctor --target kimi
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Do not use &lt;code&gt;npx ecc-install --profile minimal --target claude&lt;/code&gt;: &lt;code&gt;ecc-install&lt;/code&gt; is a binary name inside &lt;code&gt;ecc-universal&lt;/code&gt;, not a separately published npm package.&lt;/p&gt; 
&lt;p&gt;ECC also ships advanced managed adapters for &lt;code&gt;cursor&lt;/code&gt;, &lt;code&gt;antigravity&lt;/code&gt;, &lt;code&gt;gemini&lt;/code&gt;, &lt;code&gt;opencode&lt;/code&gt;, &lt;code&gt;codebuddy&lt;/code&gt;, &lt;code&gt;joycode&lt;/code&gt;, &lt;code&gt;qwen&lt;/code&gt;, &lt;code&gt;zed&lt;/code&gt;, &lt;code&gt;hermes&lt;/code&gt;, and &lt;code&gt;openclaw&lt;/code&gt;. Those targets still use their documented &lt;code&gt;ecc install --target ...&lt;/code&gt; paths until each adapter has passed the guided collision, update, repair, and uninstall lifecycle matrix. Neither wizard silently installs into every detected harness.&lt;/p&gt; 
&lt;h2&gt;Start Using ECC&lt;/h2&gt; 
&lt;p&gt;Start with the workflow you need, not the full catalog.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;What you are doing&lt;/th&gt; 
   &lt;th&gt;Start here&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Building a feature&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/ecc:plan &quot;describe the feature&quot;&lt;/code&gt;, then &lt;code&gt;tdd-workflow&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Fixing a bug&lt;/td&gt; 
   &lt;td&gt;Reproduce it with a failing test, then use &lt;code&gt;tdd-workflow&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Reviewing new code&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/code-review&lt;/code&gt; for a fresh-context review&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Repairing a build&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/build-fix&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Cleaning a codebase&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/refactor-clean&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Checking context pressure&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/context-budget&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Ending a long session&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/save-session&lt;/code&gt; or &lt;code&gt;/learn-eval&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Resuming later&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/resume-session&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Auditing agent config&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/security-scan&lt;/code&gt; or &lt;code&gt;npx -y ecc-agentshield scan --path .&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Plugin commands and manual commands&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Claude Code plugin commands use the namespaced form:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;/ecc:plan &quot;Add authentication&quot;
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Manual installs may expose the shorter compatibility form:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;/plan &quot;Add authentication&quot;
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Skills are the primary workflow surface. Commands remain convenient entry points and compatibility shims. Check what is installed with:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;/plugin list ecc@ecc
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Which agent should I use?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Skills are the canonical workflow surface; maintained slash entries stay available for command-first workflows.&lt;/p&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;I want to...&lt;/th&gt; 
    &lt;th&gt;Use this surface&lt;/th&gt; 
    &lt;th&gt;Agent used&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Plan a new feature&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/ecc:plan &quot;Add auth&quot;&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;planner&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Design system architecture&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/ecc:plan&lt;/code&gt; + architect agent&lt;/td&gt; 
    &lt;td&gt;architect&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Write code with tests first&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;tdd-workflow&lt;/code&gt; skill&lt;/td&gt; 
    &lt;td&gt;tdd-guide&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Review code I just wrote&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/code-review&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;code-reviewer&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Fix a failing build&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/build-fix&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;build-error-resolver&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Run end-to-end tests&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;e2e-testing&lt;/code&gt; skill&lt;/td&gt; 
    &lt;td&gt;e2e-runner&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Find security vulnerabilities&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/security-scan&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;security-reviewer&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Remove dead code&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/refactor-clean&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;refactor-cleaner&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Update documentation&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/update-docs&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;doc-updater&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Review Go code&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/go-review&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;go-reviewer&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Review Python code&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;/python-review&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;python-reviewer&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Review F# code&lt;/td&gt; 
    &lt;td&gt;&lt;em&gt;(invoke &lt;code&gt;fsharp-reviewer&lt;/code&gt; directly)&lt;/em&gt;&lt;/td&gt; 
    &lt;td&gt;fsharp-reviewer&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Review TypeScript/JavaScript code&lt;/td&gt; 
    &lt;td&gt;&lt;em&gt;(invoke &lt;code&gt;typescript-reviewer&lt;/code&gt; directly)&lt;/em&gt;&lt;/td&gt; 
    &lt;td&gt;typescript-reviewer&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Develop HarmonyOS apps&lt;/td&gt; 
    &lt;td&gt;&lt;em&gt;(invoke &lt;code&gt;harmonyos-app-resolver&lt;/code&gt; directly)&lt;/em&gt;&lt;/td&gt; 
    &lt;td&gt;harmonyos-app-resolver&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Audit database queries&lt;/td&gt; 
    &lt;td&gt;&lt;em&gt;(auto-delegated)&lt;/em&gt;&lt;/td&gt; 
    &lt;td&gt;database-reviewer&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Review production ML changes&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;mle-workflow&lt;/code&gt; skill + &lt;code&gt;mle-reviewer&lt;/code&gt; agent&lt;/td&gt; 
    &lt;td&gt;mle-reviewer&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Common workflows&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Slash forms below are shown where they remain part of the maintained command surface. Retired short-name shims such as &lt;code&gt;/tdd&lt;/code&gt; and &lt;code&gt;/eval&lt;/code&gt; live in &lt;code&gt;legacy-command-shims/&lt;/code&gt; for explicit opt-in only.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Starting a new feature:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;/ecc:plan &quot;Add user authentication with OAuth&quot;
                                              -&amp;gt; planner creates implementation blueprint
tdd-workflow skill                            -&amp;gt; tdd-guide enforces write-tests-first
/code-review                                  -&amp;gt; code-reviewer checks your work
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Fixing a bug:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;tdd-workflow skill                            -&amp;gt; tdd-guide: write a failing test that reproduces it
                                              -&amp;gt; implement the fix, verify test passes
/code-review                                  -&amp;gt; code-reviewer: catch regressions
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Preparing for production:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;/security-scan                                -&amp;gt; security-reviewer: OWASP Top 10 audit
e2e-testing skill                             -&amp;gt; e2e-runner: critical user flow tests
/test-coverage                                -&amp;gt; verify 80%+ coverage
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;h2&gt;What&#39;s New: ECC 2.1&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;NEW IN ECC 2.1: Plan Canvas · Kimi harness · self-hosted compute on Itô GPUs.&lt;/strong&gt; &lt;a href=&quot;https://github.com/affaan-m/ECC/raw/main/docs/releases/2.1.0/release-notes.md&quot;&gt;See the full release notes →&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h3&gt;Plan Canvas: review plans by pointing, not retyping&lt;/h3&gt; 
&lt;p&gt;Your agent writes a plan, then opens it in a loopback-only browser canvas. Click the part you mean, attach numbered annotations, chat from a side rail, and hit &lt;strong&gt;Approve plan&lt;/strong&gt; or &lt;strong&gt;Request changes&lt;/strong&gt;. The verdict maps straight onto &lt;code&gt;/plan&lt;/code&gt;&#39;s CONFIRM gate. Mermaid diagrams render live, and edits to the plan file reload the page.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/releases/2.1.0/assets/ecc-plan-canvas-demo.gif&quot; alt=&quot;Plan Canvas demo: reviewing an ECC plan in the browser, scrolling diagrams, attaching an anchored annotation, chatting with the agent, and approving the plan&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;It&#39;s harness- and model-agnostic: a plain CLI (&lt;code&gt;ecc-plan-canvas&lt;/code&gt;) speaking JSON, so any agent can drive it. Try it: ask your agent to &lt;code&gt;/ecc:plan&lt;/code&gt; anything, then review from the page instead of the terminal.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/raw/main/docs/releases/2.1.0/plan-canvas-demo.plan.md&quot;&gt;Open the plan used in this demo →&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Also in 2.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Kimi Code install target&lt;/strong&gt; (&lt;code&gt;--target kimi&lt;/code&gt;): ECC installs natively into &lt;a href=&quot;https://www.moonshot.ai&quot;&gt;Moonshot AI&lt;/a&gt;&#39;s Kimi Code CLI&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Self-host on GPUs&lt;/strong&gt;: a verified path with &lt;a href=&quot;https://compute.itomarkets.com&quot;&gt;Itô&lt;/a&gt;, ECC&#39;s preferred compute sponsor, including the opt-in &lt;code&gt;ecc ito find&lt;/code&gt; RFQ bridge (details and disclosures above in the install options)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Moonshot AI (Kimi), Itô, and Atlas Cloud&lt;/strong&gt; are now public sponsors&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Hermes + OpenClaw install targets&lt;/strong&gt;, a Codex navigation guide, consolidated PostToolUse hooks, and supply-chain hardening&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Current development: Unified Memory Vault&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;ecc memory&lt;/code&gt; gives Claude, Codex, Hermes, OpenClaw, Kimi, and other harnesses one local, inspectable Markdown format for durable context and handoffs. The optional &lt;code&gt;ecc-memory-mcp&lt;/code&gt; stdio server exposes the same bounded save/search/read/doctor surface without enabling itself by default. Full detail in &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/#share-context-between-harnesses&quot;&gt;Share context between harnesses&lt;/a&gt; below.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Previous releases&lt;/strong&gt;&lt;/summary&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Version&lt;/th&gt; 
    &lt;th&gt;Highlights&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v2.0.0&quot;&gt;v2.0.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;The Agent Harness Operating System: cross-harness graduation, control-pane substrate, &lt;code&gt;orch-*&lt;/code&gt; orchestrators, Discord + ECC bot, single-connector MCP policy&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.10.0&quot;&gt;v1.10.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Surface refresh, operator workflows, ECC 2.0 alpha&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.9.0&quot;&gt;v1.9.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Selective install, ECC Tools Pro, 12 language ecosystems&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.8.0&quot;&gt;v1.8.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Harness performance and cross-platform reliability&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.7.0&quot;&gt;v1.7.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Cross-platform expansion and presentation builder&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.6.0&quot;&gt;v1.6.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Codex Edition and the ECC Tools GitHub App&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.5.0&quot;&gt;v1.5.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Universal Edition&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.4.0&quot;&gt;v1.4.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Multi-language rules, installation wizard, PM2 orchestration&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.3.0&quot;&gt;v1.3.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Complete OpenCode plugin support&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.2.0&quot;&gt;v1.2.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Unified commands and skills&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.1.0&quot;&gt;v1.1.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Cross-platform support and community fixes&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/releases/tag/v1.0.0&quot;&gt;v1.0.0&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Official plugin release&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Release history in detail&lt;/strong&gt;&lt;/summary&gt; 
 &lt;h3&gt;v2.0.0: The Agent Harness Operating System (Jun 2026)&lt;/h3&gt; 
 &lt;p&gt;Stable graduation of the 2.0 line: the control-pane substrate (session adapters + MCP inventory), the worktree-lifecycle service, the &lt;code&gt;orch-*&lt;/code&gt; orchestrator family, and the launch of the &lt;a href=&quot;https://discord.gg/36yGMHGFbR&quot;&gt;ECC Discord community&lt;/a&gt;. Full notes: &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/releases/2.0.0/release-notes.md&quot;&gt;docs/releases/2.0.0/release-notes.md&lt;/a&gt;.&lt;/p&gt; 
 &lt;h3&gt;v2.0.0-rc.1: Surface Refresh, Operator Workflows, and ECC 2.0 Alpha (Apr 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Dashboard GUI&lt;/strong&gt;: New Tkinter-based desktop application (&lt;code&gt;ecc_dashboard.py&lt;/code&gt; or &lt;code&gt;npm run dashboard&lt;/code&gt;) with dark/light theme toggle, font customization, and project logo in header and taskbar.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Public surface synced to the live repo&lt;/strong&gt;: metadata, catalog counts, plugin manifests, and install-facing docs now match the actual OSS surface.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Operator and outbound workflow expansion&lt;/strong&gt;: &lt;code&gt;brand-voice&lt;/code&gt;, &lt;code&gt;social-graph-ranker&lt;/code&gt;, &lt;code&gt;connections-optimizer&lt;/code&gt;, &lt;code&gt;customer-billing-ops&lt;/code&gt;, &lt;code&gt;ecc-tools-cost-audit&lt;/code&gt;, &lt;code&gt;google-workspace-ops&lt;/code&gt;, &lt;code&gt;project-flow-ops&lt;/code&gt;, and &lt;code&gt;workspace-surface-audit&lt;/code&gt; round out the operator lane.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Media and launch tooling&lt;/strong&gt;: &lt;code&gt;manim-video&lt;/code&gt;, &lt;code&gt;remotion-video-creation&lt;/code&gt;, and upgraded social publishing surfaces make technical explainers and launch content part of the same system.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Framework and product surface growth&lt;/strong&gt;: &lt;code&gt;nestjs-patterns&lt;/code&gt;, richer Codex/OpenCode install surfaces, and expanded cross-harness packaging keep the repo usable beyond a single harness.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Itô prediction-market skill pack&lt;/strong&gt;: &lt;code&gt;ito-market-intelligence&lt;/code&gt;, &lt;code&gt;ito-basket-compare&lt;/code&gt;, &lt;code&gt;ito-trade-planner&lt;/code&gt;, &lt;code&gt;ito-data-atlas-agent&lt;/code&gt;, &lt;code&gt;prediction-market-oracle-research&lt;/code&gt;, and &lt;code&gt;prediction-market-risk-review&lt;/code&gt; add public, non-advisory market/basket workflows while keeping live Itô API access gated and separate from ECC Tools billing.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Optimization skill pack&lt;/strong&gt;: &lt;code&gt;parallel-execution-optimizer&lt;/code&gt;, &lt;code&gt;benchmark-optimization-loop&lt;/code&gt;, &lt;code&gt;data-throughput-accelerator&lt;/code&gt;, &lt;code&gt;latency-critical-systems&lt;/code&gt;, and &lt;code&gt;recursive-decision-ledger&lt;/code&gt; turn repeated speed/recursion prompts into bounded benchmark, throughput, and decision-ledger workflows.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;ECC 2.0 alpha in-tree&lt;/strong&gt;: the Rust control-plane prototype in &lt;code&gt;ecc2/&lt;/code&gt; builds locally and exposes &lt;code&gt;dashboard&lt;/code&gt;, &lt;code&gt;start&lt;/code&gt;, &lt;code&gt;sessions&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;stop&lt;/code&gt;, &lt;code&gt;resume&lt;/code&gt;, and &lt;code&gt;daemon&lt;/code&gt; commands.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Operator status snapshots&lt;/strong&gt;: &lt;code&gt;ecc status --markdown --write status.md&lt;/code&gt; turns the local state store into a portable handoff covering readiness, active sessions, skill-run health, install health, pending governance events, and linked work items from Linear/GitHub/handoffs.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Ecosystem hardening&lt;/strong&gt;: AgentShield, ECC Tools cost controls, billing portal work, and website refreshes continue to ship around the core plugin instead of drifting into separate silos.&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;v1.9.0: Selective Install and Language Expansion (Mar 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Selective install architecture&lt;/strong&gt;: Manifest-driven install pipeline with &lt;code&gt;install-plan.js&lt;/code&gt; and &lt;code&gt;install-apply.js&lt;/code&gt; for targeted component installation. State store tracks what&#39;s installed and enables incremental updates.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;6 new agents&lt;/strong&gt;: &lt;code&gt;typescript-reviewer&lt;/code&gt;, &lt;code&gt;pytorch-build-resolver&lt;/code&gt;, &lt;code&gt;java-build-resolver&lt;/code&gt;, &lt;code&gt;java-reviewer&lt;/code&gt;, &lt;code&gt;kotlin-reviewer&lt;/code&gt;, &lt;code&gt;kotlin-build-resolver&lt;/code&gt; expand language coverage to 10 languages.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;New skills&lt;/strong&gt;: &lt;code&gt;pytorch-patterns&lt;/code&gt;, &lt;code&gt;documentation-lookup&lt;/code&gt;, &lt;code&gt;bun-runtime&lt;/code&gt;, &lt;code&gt;nextjs-turbopack&lt;/code&gt;, 8 operational domain skills, and &lt;code&gt;mcp-server-patterns&lt;/code&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Session and state infrastructure&lt;/strong&gt;: SQLite state store with query CLI, session adapters for structured recording, skill evolution foundation for self-improving skills.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Orchestration overhaul&lt;/strong&gt;: Deterministic harness audit scoring, hardened orchestration status and launcher compatibility, observer loop prevention with 5-layer guard.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Observer reliability&lt;/strong&gt;: Memory explosion fix with throttling and tail sampling, sandbox access fix, lazy-start logic, and re-entrancy guard.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;12 language ecosystems&lt;/strong&gt;: New rules for Java, PHP, Perl, Kotlin/Android/KMP, C++, and Rust join existing TypeScript, Python, Go, and common rules.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Community contributions&lt;/strong&gt;: Korean and Chinese translations, biome hook optimization, video processing skills, operational skills, PowerShell installer, Antigravity IDE support.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;CI hardening&lt;/strong&gt;: 19 test failure fixes, catalog count enforcement, install manifest validation, and full test suite green.&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;v1.8.0: Harness Performance System (Mar 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Harness-first release&lt;/strong&gt;: ECC is explicitly framed as an agent harness performance system, not just a config pack.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Hook reliability overhaul&lt;/strong&gt;: SessionStart root fallback, Stop-phase session summaries, and script-based hooks replacing fragile inline one-liners.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Hook runtime controls&lt;/strong&gt;: &lt;code&gt;ECC_HOOK_PROFILE=minimal|standard|strict&lt;/code&gt; and &lt;code&gt;ECC_DISABLED_HOOKS=...&lt;/code&gt; for runtime gating without editing hook files.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;New harness commands&lt;/strong&gt;: &lt;code&gt;/harness-audit&lt;/code&gt;, &lt;code&gt;/loop-start&lt;/code&gt;, &lt;code&gt;/loop-status&lt;/code&gt;, &lt;code&gt;/quality-gate&lt;/code&gt;, &lt;code&gt;/model-route&lt;/code&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;NanoClaw v2&lt;/strong&gt;: model routing, skill hot-load, session branch/search/export/compact/metrics.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Cross-harness parity&lt;/strong&gt;: behavior tightened across Claude Code, Cursor, OpenCode, and Codex app/CLI.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;997 internal tests passing&lt;/strong&gt;: full suite green after hook/runtime refactor and compatibility updates.&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;v1.7.0: Cross-Platform Expansion and Presentation Builder (Feb 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Codex app + CLI support&lt;/strong&gt;: Direct &lt;code&gt;AGENTS.md&lt;/code&gt;-based Codex support, installer targeting, and Codex docs&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;code&gt;frontend-slides&lt;/code&gt; skill&lt;/strong&gt;: Zero-dependency HTML presentation builder with PPTX conversion guidance and strict viewport-fit rules&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;5 new generic business/content skills&lt;/strong&gt;: &lt;code&gt;article-writing&lt;/code&gt;, &lt;code&gt;content-engine&lt;/code&gt;, &lt;code&gt;market-research&lt;/code&gt;, &lt;code&gt;investor-materials&lt;/code&gt;, &lt;code&gt;investor-outreach&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Broader tool coverage&lt;/strong&gt;: Cursor, Codex, and OpenCode support tightened so the same repo ships cleanly across all major harnesses&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;992 internal tests&lt;/strong&gt;: Expanded validation and regression coverage across plugin, hooks, skills, and packaging&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;v1.6.0: Codex CLI, AgentShield, and Marketplace (Feb 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Codex CLI support&lt;/strong&gt;: New &lt;code&gt;/codex-setup&lt;/code&gt; command generates &lt;code&gt;codex.md&lt;/code&gt; for OpenAI Codex CLI compatibility&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;7 new skills&lt;/strong&gt;: &lt;code&gt;search-first&lt;/code&gt;, &lt;code&gt;swift-actor-persistence&lt;/code&gt;, &lt;code&gt;swift-protocol-di-testing&lt;/code&gt;, &lt;code&gt;regex-vs-llm-structured-text&lt;/code&gt;, &lt;code&gt;content-hash-cache-pattern&lt;/code&gt;, &lt;code&gt;cost-aware-llm-pipeline&lt;/code&gt;, &lt;code&gt;skill-stocktake&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;AgentShield integration&lt;/strong&gt;: &lt;code&gt;/security-scan&lt;/code&gt; runs AgentShield directly from Claude Code; 1282 tests, 102 rules&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;GitHub Marketplace&lt;/strong&gt;: ECC Tools GitHub App live at &lt;a href=&quot;https://github.com/marketplace/ecc-tools&quot;&gt;github.com/marketplace/ecc-tools&lt;/a&gt; with free/pro/enterprise tiers&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;30+ community PRs merged&lt;/strong&gt;: Contributions from 30 contributors across 6 languages&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;978 internal tests&lt;/strong&gt;: Expanded validation suite across agents, skills, commands, hooks, and rules&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;v1.4.1: Bug Fix (Feb 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Fixed instinct import content loss&lt;/strong&gt;: &lt;code&gt;parse_instinct_file()&lt;/code&gt; was silently dropping all content after frontmatter (Action, Evidence, Examples sections) during &lt;code&gt;/instinct-import&lt;/code&gt;. (&lt;a href=&quot;https://github.com/affaan-m/ECC/issues/148&quot;&gt;#148&lt;/a&gt;, &lt;a href=&quot;https://github.com/affaan-m/ECC/pull/161&quot;&gt;#161&lt;/a&gt;)&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;v1.4.0: Multi-Language Rules, Installation Wizard, and PM2 (Feb 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Interactive installation wizard&lt;/strong&gt;: New &lt;code&gt;configure-ecc&lt;/code&gt; skill provides guided setup with merge/overwrite detection&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;PM2 and multi-agent orchestration&lt;/strong&gt;: 6 new commands (&lt;code&gt;/pm2&lt;/code&gt;, &lt;code&gt;/multi-plan&lt;/code&gt;, &lt;code&gt;/multi-execute&lt;/code&gt;, &lt;code&gt;/multi-backend&lt;/code&gt;, &lt;code&gt;/multi-frontend&lt;/code&gt;, &lt;code&gt;/multi-workflow&lt;/code&gt;) for managing complex multi-service workflows&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Multi-language rules architecture&lt;/strong&gt;: Rules restructured from flat files into &lt;code&gt;common/&lt;/code&gt; + &lt;code&gt;typescript/&lt;/code&gt; + &lt;code&gt;python/&lt;/code&gt; + &lt;code&gt;golang/&lt;/code&gt; directories. Install only the languages you need&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Chinese (zh-CN) translations&lt;/strong&gt;: Complete translation of all agents, commands, skills, and rules (80+ files)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;GitHub Sponsors support&lt;/strong&gt;: Sponsor the project via GitHub Sponsors&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Enhanced &lt;a href=&quot;http://CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/strong&gt;: Detailed PR templates for each contribution type&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;v1.3.0: OpenCode Plugin Support (Feb 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Full OpenCode integration&lt;/strong&gt;: 12 agents, 24 commands, 16 skills with hook support via OpenCode&#39;s plugin system (20+ event types)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;3 native custom tools&lt;/strong&gt;: run-tests, check-coverage, security-audit&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;LLM documentation&lt;/strong&gt;: &lt;code&gt;llms.txt&lt;/code&gt; for comprehensive OpenCode docs&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;v1.2.0: Unified Commands and Skills (Feb 2026)&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Python/Django support&lt;/strong&gt;: Django patterns, security, TDD, and verification skills&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Java Spring Boot skills&lt;/strong&gt;: Patterns, security, TDD, and verification for Spring Boot&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Session management&lt;/strong&gt;: &lt;code&gt;/sessions&lt;/code&gt; command for session history&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Continuous learning v2&lt;/strong&gt;: Instinct-based learning with confidence scoring, import/export, evolution&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;See the full changelog in &lt;a href=&quot;https://github.com/affaan-m/ECC/releases&quot;&gt;Releases&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Why Choose ECC?&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Without a system&lt;/th&gt; 
   &lt;th&gt;With ECC&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Plans disappear into chat history&lt;/td&gt; 
   &lt;td&gt;Plans become editable artifacts before implementation starts&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&quot;Please use TDD&quot; is an instruction the model may forget&lt;/td&gt; 
   &lt;td&gt;TDD becomes a gated RED -&amp;gt; GREEN -&amp;gt; REFACTOR workflow with evidence&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;The same context writes and reviews the code&lt;/td&gt; 
   &lt;td&gt;A fresh-context reviewer looks for regressions and blind spots&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Memory means saving an enormous transcript&lt;/td&gt; 
   &lt;td&gt;Sessions are distilled into summaries, instincts, and reusable skills&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Quality checks depend on reminders&lt;/td&gt; 
   &lt;td&gt;Hooks can enforce deterministic checks outside the prompt&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent configuration is trusted by default&lt;/td&gt; 
   &lt;td&gt;AgentShield scans the harness itself as an attack surface&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;TDD: Test-Driven Development&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;/ecc:plan &quot;Add usage-based billing alerts&quot;
  -&amp;gt; confirm or edit the plan
  -&amp;gt; activate tdd-workflow
  -&amp;gt; capture RED evidence before implementation
  -&amp;gt; implement until GREEN
  -&amp;gt; review from fresh context
  -&amp;gt; fix findings with regression tests
  -&amp;gt; verify build, lint, types, and tests
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;A result is not just code. It&#39;s a trail of evidence: the plan, the failing test, the passing test, the review findings, and the final verification.&lt;/p&gt; 
&lt;h3&gt;Skills keep the context focused&lt;/h3&gt; 
&lt;p&gt;Rules, skills, agents, and hooks solve different problems. Keeping those jobs separate is how ECC adds capability without dumping the entire repository into every session.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Concept&lt;/th&gt; 
   &lt;th&gt;What it does&lt;/th&gt; 
   &lt;th&gt;Context behavior&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Skills&lt;/td&gt; 
   &lt;td&gt;Reusable workflows such as TDD, security review, or deep research&lt;/td&gt; 
   &lt;td&gt;Loaded when the task needs them&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agents&lt;/td&gt; 
   &lt;td&gt;Scoped workers with their own context and tool permissions&lt;/td&gt; 
   &lt;td&gt;Isolate planning, implementation, and review&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Rules&lt;/td&gt; 
   &lt;td&gt;Durable project or language standards&lt;/td&gt; 
   &lt;td&gt;Always loaded, so install them selectively&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Hooks&lt;/td&gt; 
   &lt;td&gt;Scripts triggered by harness events&lt;/td&gt; 
   &lt;td&gt;Run outside the model context&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Instincts&lt;/td&gt; 
   &lt;td&gt;Patterns learned from real sessions with confidence scores&lt;/td&gt; 
   &lt;td&gt;Recalled when relevant&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Share context between harnesses&lt;/h3&gt; 
&lt;p&gt;ECC&#39;s Memory Vault gives Claude, Codex, Hermes, OpenClaw, Kimi, and other harnesses one local, inspectable Markdown format for durable context and handoffs. Project and team memories live under &lt;code&gt;.ecc/memory/&lt;/code&gt;; user memories live under &lt;code&gt;~/.ecc/memory/&lt;/code&gt;.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g ecc-universal
ecc memory init --scope project
ecc memory search &quot;authentication migration&quot; --target-harness codex
ecc memory doctor
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Memory is unreviewed context, not executable policy. Verify important claims against authoritative sources and promote accepted knowledge into governed project documentation. The optional &lt;code&gt;ecc-memory-mcp&lt;/code&gt; server exposes the same bounded save, search, read, and doctor surface without enabling itself by default.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/skills/unified-memory/SKILL.md&quot;&gt;Open the Unified Memory workflow →&lt;/a&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Memory Vault in depth: scopes, handoffs, and trust boundaries&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;The Memory Vault stores portable &lt;code&gt;ecc.memory.v1&lt;/code&gt; Markdown documents instead of copying vendor transcripts or emailing context between agents. Project memories are protected by a fail-closed &lt;code&gt;.gitignore&lt;/code&gt;; use the team scope only for human-inspected, version-controlled sharing. Team memories remain unreviewed context even after they are committed.&lt;/p&gt; 
 &lt;p&gt;Skill-only, minimal, manual, and Claude plugin installs do not put the Memory Vault runtime on &lt;code&gt;PATH&lt;/code&gt;. Install the npm runtime separately before using the CLI or optional MCP server:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g ecc-universal
ecc memory --help
command -v ecc-memory-mcp
&lt;/code&gt;&lt;/pre&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Initialize the project vault.
ecc memory init --scope project

# Write a handoff body to a regular file, then target the next harness.
ecc memory handoff \
  --from hermes \
  --target codex \
  --title &quot;Continue authentication migration&quot; \
  --body-file ./handoff.md

# Recall it from another harness.
ecc memory search &quot;authentication migration&quot; --target-harness codex
ecc memory read &amp;lt;memory-id&amp;gt;

# Validate the vault before sharing team memories.
ecc memory doctor
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Memory bodies are accepted only through &lt;code&gt;--stdin&lt;/code&gt; or &lt;code&gt;--body-file&lt;/code&gt;, not as command-line values. The first release keeps every vault entry unreviewed and create-only; human review promotes accepted knowledge into governed project documentation rather than changing memory trust. Normal search recall returns active project and team memories. A direct ID read may inspect a non-active entry. User-scope recall must be requested explicitly. Agents must verify important claims against authoritative sources and must never treat recalled bodies as executable instructions or policy.&lt;/p&gt; 
 &lt;p&gt;For opt-in MCP access, add the &lt;code&gt;ecc-memory-vault&lt;/code&gt; entry from &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/mcp-configs/mcp-servers.json&quot;&gt;&lt;code&gt;mcp-configs/mcp-servers.json&lt;/code&gt;&lt;/a&gt; to each harness that needs it, then run &lt;code&gt;ecc-memory-mcp&lt;/code&gt;. The server exposes only &lt;code&gt;memory_save&lt;/code&gt;, &lt;code&gt;memory_search&lt;/code&gt;, &lt;code&gt;memory_read&lt;/code&gt;, and &lt;code&gt;memory_doctor&lt;/code&gt;. Each server must launch with a lowercase &lt;code&gt;ECC_MEMORY_HARNESS&lt;/code&gt; identity; the identity is server-bound and cannot be supplied by a tool caller. User scope additionally requires the operator-controlled &lt;code&gt;ECC_MEMORY_ALLOW_USER_SCOPE=1&lt;/code&gt; opt-in. See &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/skills/unified-memory/SKILL.md&quot;&gt;&lt;code&gt;skills/unified-memory/SKILL.md&lt;/code&gt;&lt;/a&gt; for the workflow and trust boundaries, and &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/design/ecc-memory-vault.md&quot;&gt;&lt;code&gt;docs/design/ecc-memory-vault.md&lt;/code&gt;&lt;/a&gt; for the capability contract.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Guides&lt;/h2&gt; 
&lt;p&gt;This repo is the raw code. The guides explain everything.&lt;/p&gt; 
&lt;table aria-label=&quot;ECC guides&quot; width=&quot;100%&quot;&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/the-shortform-guide.md&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/guides/shorthand-guide.png&quot; width=&quot;213&quot; height=&quot;120&quot; alt=&quot;The Shorthand Guide to ECC&quot; /&gt;&lt;br /&gt; &lt;strong&gt;The Shorthand Guide&lt;/strong&gt; &lt;/a&gt; &lt;br /&gt;&lt;sub&gt;Setup, foundations, and day-one use. &lt;b&gt;Read this first.&lt;/b&gt; (&lt;a href=&quot;https://x.com/affaan/status/2012378465664745795&quot;&gt;thread&lt;/a&gt;)&lt;/sub&gt; &lt;/td&gt; 
   &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/the-longform-guide.md&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/guides/longform-guide.png&quot; width=&quot;213&quot; height=&quot;120&quot; alt=&quot;The Longform Guide to ECC&quot; /&gt;&lt;br /&gt; &lt;strong&gt;The Longform Guide&lt;/strong&gt; &lt;/a&gt; &lt;br /&gt;&lt;sub&gt;Context economics, memory, evals, and parallel agents. (&lt;a href=&quot;https://x.com/affaan/status/2014040193557471352&quot;&gt;thread&lt;/a&gt;)&lt;/sub&gt; &lt;/td&gt; 
   &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/the-security-guide.md&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/assets/images/guides/security-guide.png&quot; width=&quot;213&quot; height=&quot;120&quot; alt=&quot;The Security Guide to ECC&quot; /&gt;&lt;br /&gt; &lt;strong&gt;The Security Guide&lt;/strong&gt; &lt;/a&gt; &lt;br /&gt;&lt;sub&gt;Prompt injection, hooks, MCP, and AgentShield. (&lt;a href=&quot;https://x.com/affaan/status/2033263813387223421&quot;&gt;thread&lt;/a&gt;)&lt;/sub&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Topic&lt;/th&gt; 
   &lt;th&gt;What You&#39;ll Learn&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Token Optimization&lt;/td&gt; 
   &lt;td&gt;Model selection, system prompt slimming, background processes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Memory Persistence&lt;/td&gt; 
   &lt;td&gt;Hooks that save/load context across sessions automatically&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Continuous Learning&lt;/td&gt; 
   &lt;td&gt;Auto-extract patterns from sessions into reusable skills&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Verification Loops&lt;/td&gt; 
   &lt;td&gt;Checkpoint vs continuous evals, grader types, pass@k metrics&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Parallelization&lt;/td&gt; 
   &lt;td&gt;Git worktrees, cascade method, when to scale instances&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Subagent Orchestration&lt;/td&gt; 
   &lt;td&gt;The context problem, iterative retrieval pattern&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/COMMANDS-QUICK-REF.md&quot;&gt;Commands Quick Reference&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/MANUAL-ADAPTATION-GUIDE.md&quot;&gt;Manual Adaptation Guide&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;What&#39;s Inside&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ECC/
|-- agents/           # 68 specialized subagents for delegation
|-- skills/           # 287 reusable workflows loaded on demand
|-- commands/         # 94 maintained slash-command shims
|-- rules/            # opt-in common and language standards
|-- hooks/            # runtime automation and enforcement
|-- scripts/          # install, repair, sync, orchestration, and checks
|-- .claude-plugin/   # Claude Code marketplace manifest
|-- .codex/           # Codex reference configuration and agent roles
|-- .opencode/        # OpenCode plugin, commands, and instructions
|-- .cursor/          # Cursor rules and hook adapter
|-- docs/             # public setup, architecture, and operating guides
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The root is the source of truth. Platform adapters package or map these same workflows instead of maintaining separate copies.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Annotated component catalog&lt;/strong&gt;&lt;/summary&gt; 
 &lt;pre&gt;&lt;code&gt;ECC/
|-- .claude-plugin/   # Plugin and marketplace manifests
|   |-- plugin.json         # Plugin metadata and component paths
|   |-- marketplace.json    # Marketplace catalog for /plugin marketplace add
|
|-- agents/           # 67 specialized subagents for delegation
|   |-- planner.md           # Feature implementation planning
|   |-- architect.md         # System design decisions
|   |-- tdd-guide.md         # Test-driven development
|   |-- code-reviewer.md     # Quality and security review
|   |-- security-reviewer.md # Vulnerability analysis
|   |-- build-error-resolver.md
|   |-- e2e-runner.md        # Playwright E2E testing
|   |-- refactor-cleaner.md  # Dead code cleanup
|   |-- doc-updater.md       # Documentation sync
|   |-- docs-lookup.md       # Documentation/API lookup
|   |-- chief-of-staff.md    # Communication triage and drafts
|   |-- loop-operator.md     # Autonomous loop execution
|   |-- harness-optimizer.md # Harness config tuning
|   |-- cpp-reviewer.md      # C++ code review
|   |-- cpp-build-resolver.md # C++ build error resolution
|   |-- fsharp-reviewer.md   # F# functional code review
|   |-- go-reviewer.md       # Go code review
|   |-- go-build-resolver.md # Go build error resolution
|   |-- python-reviewer.md   # Python code review
|   |-- database-reviewer.md # Database/Supabase review
|   |-- typescript-reviewer.md # TypeScript/JavaScript code review
|   |-- java-reviewer.md     # Java/Spring Boot code review
|   |-- java-build-resolver.md # Java/Maven/Gradle build errors
|   |-- kotlin-reviewer.md   # Kotlin/Android/KMP code review
|   |-- kotlin-build-resolver.md # Kotlin/Gradle build errors
|   |-- harmonyos-app-resolver.md # HarmonyOS/ArkTS app development
|   |-- rust-reviewer.md     # Rust code review
|   |-- rust-build-resolver.md # Rust build error resolution
|   |-- pytorch-build-resolver.md # PyTorch/CUDA training errors
|   |-- mle-reviewer.md      # Production ML pipeline, eval, serving, and monitoring review
|
|-- skills/           # Workflow definitions and domain knowledge
|   |-- coding-standards/           # Language best practices
|   |-- clickhouse-io/              # ClickHouse analytics, queries, data engineering
|   |-- backend-patterns/           # API, database, caching patterns
|   |-- frontend-patterns/          # React, Next.js patterns
|   |-- frontend-slides/            # HTML slide decks and PPTX-to-web presentation workflows
|   |-- article-writing/            # Long-form writing in a supplied voice without generic AI tone
|   |-- content-engine/             # Multi-platform social content and repurposing workflows
|   |-- market-research/            # Source-attributed market, competitor, and investor research
|   |-- investor-materials/         # Pitch decks, one-pagers, memos, and financial models
|   |-- investor-outreach/          # Personalized fundraising outreach and follow-up
|   |-- continuous-learning/        # Legacy v1 Stop-hook pattern extraction
|   |-- continuous-learning-v2/     # Instinct-based learning with confidence scoring
|   |-- iterative-retrieval/        # Progressive context refinement for subagents
|   |-- strategic-compact/          # Manual compaction suggestions (Longform Guide)
|   |-- tdd-workflow/               # TDD methodology
|   |-- security-review/            # Security checklist
|   |-- eval-harness/               # Verification loop evaluation (Longform Guide)
|   |-- verification-loop/          # Continuous verification (Longform Guide)
|   |-- videodb/                    # Video and audio: ingest, search, edit, generate, stream
|   |-- golang-patterns/            # Go idioms and best practices
|   |-- golang-testing/             # Go testing patterns, TDD, benchmarks
|   |-- cpp-coding-standards/       # C++ coding standards from C++ Core Guidelines
|   |-- cpp-testing/                # C++ testing with GoogleTest, CMake/CTest
|   |-- django-patterns/            # Django patterns, models, views
|   |-- django-security/            # Django security best practices
|   |-- django-tdd/                 # Django TDD workflow
|   |-- django-verification/        # Django verification loops
|   |-- laravel-patterns/           # Laravel architecture patterns
|   |-- laravel-security/           # Laravel security best practices
|   |-- laravel-tdd/                # Laravel TDD workflow
|   |-- laravel-verification/       # Laravel verification loops
|   |-- python-patterns/            # Python idioms and best practices
|   |-- python-testing/             # Python testing with pytest
|   |-- quarkus-patterns/           # Java Quarkus patterns
|   |-- quarkus-security/           # Quarkus security
|   |-- quarkus-tdd/                # Quarkus TDD
|   |-- quarkus-verification/       # Quarkus verification
|   |-- springboot-patterns/        # Java Spring Boot patterns
|   |-- springboot-security/        # Spring Boot security
|   |-- springboot-tdd/             # Spring Boot TDD
|   |-- springboot-verification/    # Spring Boot verification
|   |-- configure-ecc/              # Interactive installation wizard
|   |-- security-scan/              # AgentShield security auditor integration
|   |-- java-coding-standards/      # Java coding standards
|   |-- jpa-patterns/               # JPA/Hibernate patterns
|   |-- postgres-patterns/          # PostgreSQL optimization patterns
|   |-- nutrient-document-processing/ # Document processing with Nutrient API
|   |-- database-migrations/        # Migration patterns (Prisma, Drizzle, Django, Go)
|   |-- api-design/                 # REST API design, pagination, error responses
|   |-- deployment-patterns/        # CI/CD, Docker, health checks, rollbacks
|   |-- docker-patterns/            # Docker Compose, networking, volumes, container security
|   |-- e2e-testing/                # Playwright E2E patterns and Page Object Model
|   |-- content-hash-cache-pattern/ # SHA-256 content hash caching for file processing
|   |-- cost-aware-llm-pipeline/    # LLM cost optimization, model routing, budget tracking
|   |-- regex-vs-llm-structured-text/ # Decision framework: regex vs LLM for text parsing
|   |-- swift-actor-persistence/    # Thread-safe Swift data persistence with actors
|   |-- swift-protocol-di-testing/  # Protocol-based DI for testable Swift code
|   |-- search-first/               # Research-before-coding workflow
|   |-- skill-stocktake/            # Audit skills and commands for quality
|   |-- liquid-glass-design/        # iOS 26 Liquid Glass design system
|   |-- foundation-models-on-device/ # Apple on-device LLM with FoundationModels
|   |-- swift-concurrency-6-2/      # Swift 6.2 Approachable Concurrency
|   |-- mle-workflow/               # Production ML data contracts, evals, deployment, monitoring
|   |-- perl-patterns/              # Modern Perl 5.36+ idioms and best practices
|   |-- perl-security/              # Perl security patterns, taint mode, safe I/O
|   |-- perl-testing/               # Perl TDD with Test2::V0, prove, Devel::Cover
|   |-- autonomous-loops/           # Autonomous loop patterns: sequential pipelines, PR loops, DAG orchestration
|   |-- plankton-code-quality/      # Write-time code quality enforcement with Plankton hooks
|   |-- codehealth-mcp/             # Optional CodeScene Code Health MCP skill (opt-in)
|   |-- docs/examples/project-guidelines-template.md  # Template for project-specific skills
|
|-- commands/         # Maintained slash-entry compatibility; prefer skills/
|   |-- plan.md             # /plan - Implementation planning
|   |-- code-review.md      # /code-review - Quality review
|   |-- build-fix.md        # /build-fix - Fix build errors
|   |-- refactor-clean.md   # /refactor-clean - Dead code removal
|   |-- quality-gate.md     # /quality-gate - Verification gate
|   |-- learn.md            # /learn - Extract patterns mid-session (Longform Guide)
|   |-- learn-eval.md       # /learn-eval - Extract, evaluate, and save patterns
|   |-- checkpoint.md       # /checkpoint - Save verification state (Longform Guide)
|   |-- setup-pm.md         # /setup-pm - Configure package manager
|   |-- go-review.md        # /go-review - Go code review
|   |-- go-test.md          # /go-test - Go TDD workflow
|   |-- go-build.md         # /go-build - Fix Go build errors
|   |-- skill-create.md     # /skill-create - Generate skills from git history
|   |-- instinct-status.md  # /instinct-status - View learned instincts
|   |-- instinct-import.md  # /instinct-import - Import instincts
|   |-- instinct-export.md  # /instinct-export - Export instincts
|   |-- evolve.md           # /evolve - Cluster instincts into skills
|   |-- prune.md            # /prune - Delete expired pending instincts
|   |-- pm2.md              # /pm2 - PM2 service lifecycle management
|   |-- multi-plan.md       # /multi-plan - Multi-agent task decomposition
|   |-- multi-execute.md    # /multi-execute - Orchestrated multi-agent workflows
|   |-- multi-backend.md    # /multi-backend - Backend multi-service orchestration
|   |-- multi-frontend.md   # /multi-frontend - Frontend multi-service orchestration
|   |-- multi-workflow.md   # /multi-workflow - General multi-service workflows
|   |-- sessions.md         # /sessions - Session history management
|   |-- test-coverage.md    # /test-coverage - Test coverage analysis
|   |-- update-docs.md      # /update-docs - Update documentation
|   |-- update-codemaps.md  # /update-codemaps - Update codemaps
|   |-- python-review.md    # /python-review - Python code review
|-- legacy-command-shims/   # Opt-in archive for retired shims such as /tdd and /eval
|   |-- tdd.md              # /tdd - Prefer the tdd-workflow skill
|   |-- e2e.md              # /e2e - Prefer the e2e-testing skill
|   |-- eval.md             # /eval - Prefer the eval-harness skill
|   |-- verify.md           # /verify - Prefer the verification-loop skill
|   |-- orchestrate.md      # /orchestrate - Prefer dmux-workflows or multi-workflow
|
|-- rules/            # Always-follow guidelines (copy to ~/.claude/rules/ecc/)
|   |-- README.md            # Structure overview and installation guide
|   |-- common/              # Language-agnostic principles
|   |   |-- coding-style.md    # Immutability, file organization
|   |   |-- git-workflow.md    # Commit format, PR process
|   |   |-- testing.md         # TDD, 80% coverage requirement
|   |   |-- performance.md     # Model selection, context management
|   |   |-- patterns.md        # Design patterns, skeleton projects
|   |   |-- hooks.md           # Hook architecture, TodoWrite
|   |   |-- agents.md          # When to delegate to subagents
|   |   |-- security.md        # Mandatory security checks
|   |-- typescript/          # TypeScript/JavaScript specific
|   |-- python/              # Python specific
|   |-- golang/              # Go specific
|   |-- swift/               # Swift specific
|   |-- php/                 # PHP specific
|   |-- arkts/               # HarmonyOS / ArkTS specific
|
|-- hooks/            # Trigger-based automations
|   |-- README.md                 # Hook documentation, recipes, and customization guide
|   |-- hooks.json                # All hooks config (PreToolUse, PostToolUse, Stop, etc.)
|   |-- memory-persistence/       # Session lifecycle hooks (Longform Guide)
|   |-- strategic-compact/        # Compaction suggestions (Longform Guide)
|
|-- scripts/          # Cross-platform Node.js scripts
|   |-- lib/                     # Shared utilities
|   |   |-- utils.js             # Cross-platform file/path/system utilities
|   |   |-- package-manager.js   # Package manager detection and selection
|   |-- hooks/                   # Hook implementations
|   |   |-- session-start.js     # Load context on session start
|   |   |-- session-end.js       # Save state on session end
|   |   |-- pre-compact.js       # Pre-compaction state saving
|   |   |-- suggest-compact.js   # Strategic compaction suggestions
|   |   |-- evaluate-session.js  # Extract patterns from sessions
|   |-- setup-package-manager.js # Interactive PM setup
|
|-- tests/            # Test suite
|   |-- lib/                     # Library tests
|   |-- hooks/                   # Hook tests
|   |-- run-all.js               # Run all tests
|
|-- contexts/         # Dynamic system prompt injection contexts (Longform Guide)
|   |-- dev.md              # Development mode context
|   |-- review.md           # Code review mode context
|   |-- research.md         # Research/exploration mode context
|
|-- examples/         # Example configurations and sessions
|   |-- CLAUDE.md             # Example project-level config
|   |-- user-CLAUDE.md        # Example user-level config
|   |-- saas-nextjs-CLAUDE.md   # Real-world SaaS (Next.js + Supabase + Stripe)
|   |-- go-microservice-CLAUDE.md # Real-world Go microservice (gRPC + PostgreSQL)
|   |-- django-api-CLAUDE.md      # Real-world Django REST API (DRF + Celery)
|   |-- laravel-api-CLAUDE.md     # Real-world Laravel API (PostgreSQL + Redis)
|   |-- rust-api-CLAUDE.md        # Real-world Rust API (Axum + SQLx + PostgreSQL)
|
|-- mcp-configs/      # MCP server configurations
|   |-- mcp-servers.json    # GitHub, Supabase, Vercel, Railway, etc.
|
|-- ecc_dashboard.py  # Desktop GUI dashboard (Tkinter)
|
|-- marketplace.json  # Self-hosted marketplace config (for /plugin marketplace add)
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Dashboard GUI&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Launch the desktop dashboard to visually explore ECC components:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm run dashboard
# or
python3 ./ecc_dashboard.py
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Tabbed interface: Agents, Skills, Commands, Rules, Settings&lt;/li&gt; 
  &lt;li&gt;Dark/Light theme toggle&lt;/li&gt; 
  &lt;li&gt;Font customization (family and size)&lt;/li&gt; 
  &lt;li&gt;Project logo in header and taskbar&lt;/li&gt; 
  &lt;li&gt;Search and filter across all components&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Ecosystem Tools&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Skill Creator: generate skills from your git history&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Two ways to generate skills from your repository:&lt;/p&gt; 
 &lt;h3&gt;Option A: Local Analysis (Built-in)&lt;/h3&gt; 
 &lt;p&gt;Use the &lt;code&gt;/skill-create&lt;/code&gt; command for local analysis without external services:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;/skill-create                    # Analyze current repo
/skill-create --instincts        # Also generate instincts for continuous-learning-v2
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;This analyzes your git history locally and generates &lt;a href=&quot;http://SKILL.md&quot;&gt;SKILL.md&lt;/a&gt; files.&lt;/p&gt; 
 &lt;h3&gt;Option B: GitHub App (Advanced)&lt;/h3&gt; 
 &lt;p&gt;For advanced features (10k+ commits, auto-PRs, team sharing):&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/apps/ecc-tools&quot;&gt;Install ECC Tools GitHub App&lt;/a&gt; | &lt;a href=&quot;https://ecc.tools&quot;&gt;ecc.tools&lt;/a&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Comment on any issue:
/ecc-tools analyze
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Both options create:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://SKILL.md&quot;&gt;SKILL.md&lt;/a&gt; files&lt;/strong&gt;: Ready-to-use skills for the active harness&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Instinct collections&lt;/strong&gt;: For continuous-learning-v2&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Pattern extraction&lt;/strong&gt;: Learns from your commit history&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;AgentShield: security auditor for agent configs&lt;/strong&gt;&lt;/summary&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;Built at the Claude Code Hackathon (Cerebral Valley x Anthropic, Feb 2026). 1282 tests, 98% coverage, 102 static analysis rules.&lt;/p&gt; 
 &lt;/blockquote&gt; 
 &lt;p&gt;Scan your agent configuration for vulnerabilities, misconfigurations, and injection risks.&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Quick scan (no install needed)
npx ecc-agentshield scan

# Auto-fix safe issues
npx ecc-agentshield scan --fix

# Deep analysis with three Opus 4.6 agents
npx ecc-agentshield scan --opus --stream

# Generate secure config from scratch
npx ecc-agentshield init
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;What it scans:&lt;/strong&gt; &lt;a href=&quot;http://CLAUDE.md&quot;&gt;CLAUDE.md&lt;/a&gt;, settings.json, MCP configs, hooks, agent definitions, and skills across 5 categories: secrets detection (14 patterns), permission auditing, hook injection analysis, MCP server risk profiling, and agent config review.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;The &lt;code&gt;--opus&lt;/code&gt; flag&lt;/strong&gt; runs three Claude Opus 4.6 agents in a red-team/blue-team/auditor pipeline. The attacker finds exploit chains, the defender evaluates protections, and the auditor synthesizes both into a prioritized risk assessment. Adversarial reasoning, not just pattern matching.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Output formats:&lt;/strong&gt; Terminal (color-graded A-F), JSON (CI pipelines), Markdown, HTML. Exit code 2 on critical findings for build gates.&lt;/p&gt; 
 &lt;p&gt;Use &lt;code&gt;/security-scan&lt;/code&gt; in Claude Code to run it, or add to CI with the &lt;a href=&quot;https://github.com/affaan-m/agentshield&quot;&gt;GitHub Action&lt;/a&gt;.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/affaan-m/agentshield&quot;&gt;GitHub&lt;/a&gt; | &lt;a href=&quot;https://www.npmjs.com/package/ecc-agentshield&quot;&gt;npm&lt;/a&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Continuous Learning v2: instincts&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;The instinct-based learning system automatically learns your patterns:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;/instinct-status        # Show learned instincts with confidence
/instinct-import &amp;lt;file&amp;gt; # Import instincts from others
/instinct-export        # Export your instincts for sharing
/evolve                 # Cluster related instincts into skills
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;See &lt;code&gt;skills/continuous-learning-v2/&lt;/code&gt; for full documentation. Keep &lt;code&gt;continuous-learning/&lt;/code&gt; only when you explicitly want the legacy v1 Stop-hook learned-skill flow.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Key Concepts&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Agents, skills, hooks, and rules explained&lt;/strong&gt;&lt;/summary&gt; 
 &lt;h3&gt;Agents&lt;/h3&gt; 
 &lt;p&gt;Subagents handle delegated tasks with limited scope. Example:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;---
name: code-reviewer
description: Reviews code for quality, security, and maintainability
tools: Read, Grep, Glob, Bash
model: opus
---

You are a senior code reviewer...
&lt;/code&gt;&lt;/pre&gt; 
 &lt;h3&gt;Skills&lt;/h3&gt; 
 &lt;p&gt;Skills are the primary workflow surface. They can be invoked directly, suggested automatically, and reused by agents. ECC still ships maintained &lt;code&gt;commands/&lt;/code&gt; during migration, while retired short-name shims live under &lt;code&gt;legacy-command-shims/&lt;/code&gt; for explicit opt-in only. New workflow development should land in &lt;code&gt;skills/&lt;/code&gt; first.&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;# TDD Workflow

1. Define interfaces first
2. Write failing tests (RED)
3. Implement minimal code (GREEN)
4. Refactor (IMPROVE)
5. Verify 80%+ coverage
&lt;/code&gt;&lt;/pre&gt; 
 &lt;h3&gt;Hooks&lt;/h3&gt; 
 &lt;p&gt;Hooks fire on tool events. Example: warn about console.log:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;matcher&quot;: &quot;tool == \&quot;Edit\&quot; &amp;amp;&amp;amp; tool_input.file_path matches \&quot;\\\\.(ts|tsx|js|jsx)$\&quot;&quot;,
  &quot;hooks&quot;: [{
    &quot;type&quot;: &quot;command&quot;,
    &quot;command&quot;: &quot;#!/bin/bash\ngrep -n &#39;console\\.log&#39; \&quot;$file_path\&quot; &amp;amp;&amp;amp; echo &#39;[Hook] Remove console.log&#39; &amp;gt;&amp;amp;2&quot;
  }]
}
&lt;/code&gt;&lt;/pre&gt; 
 &lt;h3&gt;Rules&lt;/h3&gt; 
 &lt;p&gt;Rules are always-follow guidelines, organized into &lt;code&gt;common/&lt;/code&gt; (language-agnostic) + language-specific directories:&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;rules/
  common/          # Universal principles (always install)
  typescript/      # TS/JS specific patterns and tools
  python/          # Python specific patterns and tools
  golang/          # Go specific patterns and tools
  swift/           # Swift specific patterns and tools
  php/             # PHP specific patterns and tools
  arkts/           # HarmonyOS / ArkTS patterns and constraints
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/rules/README.md&quot;&gt;&lt;code&gt;rules/README.md&lt;/code&gt;&lt;/a&gt; for installation and structure details.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Cross-Platform Support&lt;/h2&gt; 
&lt;p&gt;ECC&#39;s core Node.js CLI and managed installers run on &lt;strong&gt;Windows, macOS, and Linux&lt;/strong&gt;, but optional capabilities are not at full parity. Some continuous-learning, GAN, and orchestration paths still require Bash or Python; harnesses also expose different hook, agent, and skill APIs.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Platform&lt;/th&gt; 
   &lt;th&gt;Status&lt;/th&gt; 
   &lt;th&gt;Current limitation&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Linux&lt;/td&gt; 
   &lt;td&gt;Supported core&lt;/td&gt; 
   &lt;td&gt;Optional features may require Bash, Python, or provider-specific tools.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;macOS&lt;/td&gt; 
   &lt;td&gt;Supported core&lt;/td&gt; 
   &lt;td&gt;The standalone GAN shell path is not compatible with the system Bash 3.2 and currently has a score-parsing defect (&lt;a href=&quot;https://github.com/affaan-m/ECC/issues/2674&quot;&gt;#2674&lt;/a&gt;).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Windows + WSL&lt;/td&gt; 
   &lt;td&gt;Supported core&lt;/td&gt; 
   &lt;td&gt;WSL follows the Linux paths; Windows host integrations still vary by harness.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Windows native&lt;/td&gt; 
   &lt;td&gt;Supported with limitations&lt;/td&gt; 
   &lt;td&gt;Continuous-learning v2&#39;s observer daemon and memory-vault writes have open native-Windows defects (&lt;a href=&quot;https://github.com/affaan-m/ECC/issues/2489&quot;&gt;#2489&lt;/a&gt;, &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/2626&quot;&gt;#2626&lt;/a&gt;). Shell-backed optional features require Git Bash/WSL or are unavailable.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Treat &lt;code&gt;stable&lt;/code&gt;, &lt;code&gt;beta&lt;/code&gt;, &lt;code&gt;experimental&lt;/code&gt;, and &lt;code&gt;instruction-only&lt;/code&gt; below as capability statements, not marketing tiers.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Package manager detection&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;The plugin automatically detects your preferred package manager (npm, pnpm, yarn, or bun) with the following priority:&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;&lt;strong&gt;Environment variable&lt;/strong&gt;: &lt;code&gt;CLAUDE_PACKAGE_MANAGER&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Project config&lt;/strong&gt;: &lt;code&gt;.claude/package-manager.json&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;package.json&lt;/strong&gt;: &lt;code&gt;packageManager&lt;/code&gt; field&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Lock file&lt;/strong&gt;: Detection from package-lock.json, yarn.lock, pnpm-lock.yaml, or bun.lockb&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Global config&lt;/strong&gt;: &lt;code&gt;~/.claude/package-manager.json&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Fallback&lt;/strong&gt;: First available package manager&lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;p&gt;To set your preferred package manager:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Via environment variable
export CLAUDE_PACKAGE_MANAGER=pnpm

# Via global config
node scripts/setup-package-manager.js --global pnpm

# Via project config
node scripts/setup-package-manager.js --project bun

# Detect current setting
node scripts/setup-package-manager.js --detect
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Or use the &lt;code&gt;/setup-pm&lt;/code&gt; command.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Hook runtime controls (env vars)&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Use runtime flags to tune strictness or disable specific hooks temporarily:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Hook strictness profile (default: standard)
export ECC_HOOK_PROFILE=standard

# Comma-separated hook IDs to disable
export ECC_DISABLED_HOOKS=&quot;pre:bash:tmux-reminder,post:edit:typecheck&quot;

# Cap SessionStart additional context (default: 8000 chars)
export ECC_SESSION_START_MAX_CHARS=4000

# Disable SessionStart additional context entirely for low-context/local-model setups
export ECC_SESSION_START_CONTEXT=off

# Session-tmp retention window in days (default: 30).
# Set to 0, off, false, disabled, never, or none to keep all sessions (disable pruning).
export ECC_SESSION_RETENTION_DAYS=14

# Cap how many learned instincts SessionStart injects into context (default: 6)
export ECC_MAX_INJECTED_INSTINCTS=6

# Minimum confidence an instinct needs to be injected, 0-1 (default: 0.7)
export ECC_INSTINCT_CONFIDENCE_THRESHOLD=0.7

# SessionStart ranks injected instincts by confidence + project/stack relevance
# (default: on). Project-scoped instincts, and instincts whose domain/trigger
# matches the detected stack (languages, frameworks, plus terraform/dbt markers),
# get a small ranking boost so they surface above unrelated higher-confidence
# ones. Set to off/false/0/no to rank by confidence alone.
export ECC_INSTINCT_RELEVANCE_RANKING=on

# Keep context/scope/loop warnings but suppress API-rate cost estimates
export ECC_CONTEXT_MONITOR_COST_WARNINGS=off
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Windows PowerShell:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;[Environment]::SetEnvironmentVariable(&#39;ECC_CONTEXT_MONITOR_COST_WARNINGS&#39;, &#39;off&#39;, &#39;User&#39;)
[Environment]::SetEnvironmentVariable(&#39;ECC_SESSION_RETENTION_DAYS&#39;, &#39;14&#39;, &#39;User&#39;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Agent data home (multi-harness isolation)&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Memory persistence hooks (session summaries, learned skills, session aliases, metrics) store data under a single agent data root. By default that root is &lt;code&gt;~/.claude&lt;/code&gt;. When you use ECC in both Claude Code and Cursor on the same machine, set a separate root for Cursor so the two environments do not overwrite each other&#39;s session files:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Cursor-only boundary (Claude Code keeps the default ~/.claude)
export ECC_AGENT_DATA_HOME=&quot;$HOME/.cursor/ecc&quot;
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Paths resolved under that root include:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;code&gt;$ECC_AGENT_DATA_HOME/session-data/&lt;/code&gt;: session summaries&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;$ECC_AGENT_DATA_HOME/skills/learned/&lt;/code&gt;: learned skills from evaluate-session&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;$ECC_AGENT_DATA_HOME/session-aliases.json&lt;/code&gt;: session aliases&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;$ECC_AGENT_DATA_HOME/metrics/&lt;/code&gt;: cost and activity metrics&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;See &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/2065&quot;&gt;affaan-m/ECC#2065&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Platform Support&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Harness&lt;/th&gt; 
   &lt;th&gt;Status&lt;/th&gt; 
   &lt;th&gt;Recommended distribution&lt;/th&gt; 
   &lt;th&gt;Important limitation&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Claude Code&lt;/td&gt; 
   &lt;td&gt;Stable primary&lt;/td&gt; 
   &lt;td&gt;Plugin or selective installer&lt;/td&gt; 
   &lt;td&gt;The plugin advertises the installed catalog to the model; use a selective/manual profile when context footprint matters. Optional shell-backed skills are not portable to every OS.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Codex&lt;/td&gt; 
   &lt;td&gt;Supported sync; marketplace experimental&lt;/td&gt; 
   &lt;td&gt;Repo config or &lt;code&gt;sync-ecc-to-codex.sh&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;No ECC hook runtime. The marketplace package can omit shared repository content from Codex&#39;s cache; use sync for the reliable path.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Cursor&lt;/td&gt; 
   &lt;td&gt;Beta project adapter&lt;/td&gt; 
   &lt;td&gt;Selective installer into &lt;code&gt;.cursor/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Agent discovery varies by Cursor build, and ECC&#39;s installer paths do not yet expose identical hook sets (&lt;a href=&quot;https://github.com/affaan-m/ECC/issues/2419&quot;&gt;#2419&lt;/a&gt;).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;OpenCode&lt;/td&gt; 
   &lt;td&gt;Beta built plugin&lt;/td&gt; 
   &lt;td&gt;Build plugin, then selective installer&lt;/td&gt; 
   &lt;td&gt;ECC ships a subset of the catalog and the reference config pins Anthropic models; select models available to your provider (&lt;a href=&quot;https://github.com/affaan-m/ECC/issues/2617&quot;&gt;#2617&lt;/a&gt;).&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;GitHub Copilot&lt;/td&gt; 
   &lt;td&gt;Instruction-only&lt;/td&gt; 
   &lt;td&gt;Checked-in instructions and prompt files&lt;/td&gt; 
   &lt;td&gt;No ECC hooks, runtime agents, delegation, or native skill discovery.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Gemini, Zed, Antigravity, Qwen, Hermes, OpenClaw, Kimi, CodeBuddy, JoyCode&lt;/td&gt; 
   &lt;td&gt;Experimental/minimal adapters&lt;/td&gt; 
   &lt;td&gt;Harness-specific selective target&lt;/td&gt; 
   &lt;td&gt;File placement and instruction portability are tested; full Claude feature parity is not claimed.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Cross-tool capability map&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Capability&lt;/th&gt; 
   &lt;th&gt;Claude Code&lt;/th&gt; 
   &lt;th&gt;Codex&lt;/th&gt; 
   &lt;th&gt;Cursor&lt;/th&gt; 
   &lt;th&gt;OpenCode&lt;/th&gt; 
   &lt;th&gt;GitHub Copilot&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Instructions&lt;/td&gt; 
   &lt;td&gt;Native&lt;/td&gt; 
   &lt;td&gt;Native &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Project rules&lt;/td&gt; 
   &lt;td&gt;Plugin instructions&lt;/td&gt; 
   &lt;td&gt;Native instruction file&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Skills&lt;/td&gt; 
   &lt;td&gt;Native installed set&lt;/td&gt; 
   &lt;td&gt;Native synced set&lt;/td&gt; 
   &lt;td&gt;Build-dependent/project set&lt;/td&gt; 
   &lt;td&gt;Built subset&lt;/td&gt; 
   &lt;td&gt;Prompt/instruction references only&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agents/delegation&lt;/td&gt; 
   &lt;td&gt;Native agents&lt;/td&gt; 
   &lt;td&gt;Codex multi-agent roles&lt;/td&gt; 
   &lt;td&gt;Build-dependent project agents&lt;/td&gt; 
   &lt;td&gt;Plugin agents&lt;/td&gt; 
   &lt;td&gt;Not supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ECC hooks&lt;/td&gt; 
   &lt;td&gt;Native plugin hooks&lt;/td&gt; 
   &lt;td&gt;Not supported&lt;/td&gt; 
   &lt;td&gt;Cursor hook adapter; install-path differences remain&lt;/td&gt; 
   &lt;td&gt;Plugin events&lt;/td&gt; 
   &lt;td&gt;Not supported&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;MCP configuration&lt;/td&gt; 
   &lt;td&gt;Available, explicit activation&lt;/td&gt; 
   &lt;td&gt;TOML merge through sync&lt;/td&gt; 
   &lt;td&gt;Explicit project/user config&lt;/td&gt; 
   &lt;td&gt;Provider/plugin config&lt;/td&gt; 
   &lt;td&gt;Not supplied by ECC&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Parity with Claude Code&lt;/td&gt; 
   &lt;td&gt;Primary reference&lt;/td&gt; 
   &lt;td&gt;Partial&lt;/td&gt; 
   &lt;td&gt;Partial&lt;/td&gt; 
   &lt;td&gt;Partial&lt;/td&gt; 
   &lt;td&gt;Not a parity target&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Key architectural decisions:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://AGENTS.md&quot;&gt;AGENTS.md&lt;/a&gt;&lt;/strong&gt; at root is the universal cross-tool file (read by Claude Code, Cursor, Codex, and OpenCode; GitHub Copilot uses &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; instead)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;DRY adapter pattern&lt;/strong&gt; lets Cursor reuse Claude Code&#39;s hook scripts without duplication&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Skills format&lt;/strong&gt; (&lt;a href=&quot;http://SKILL.md&quot;&gt;SKILL.md&lt;/a&gt; with YAML frontmatter) works across Claude Code, Codex, and OpenCode&lt;/li&gt; 
 &lt;li&gt;Codex&#39;s lack of hooks is compensated by &lt;code&gt;AGENTS.md&lt;/code&gt;, optional &lt;code&gt;model_instructions_file&lt;/code&gt; overrides, and sandbox permissions&lt;/li&gt; 
&lt;/ul&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Cursor IDE support in depth&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC provides Cursor IDE support with hooks, rules, agents, skills, commands, and MCP configs adapted for Cursor&#39;s project layout.&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# macOS/Linux
./install.sh --target cursor typescript
./install.sh --target cursor python golang swift php
&lt;/code&gt;&lt;/pre&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# Windows PowerShell
.\install.ps1 --target cursor typescript
.\install.ps1 --target cursor python golang swift php
&lt;/code&gt;&lt;/pre&gt; 
 &lt;h4&gt;What&#39;s included for Cursor&lt;/h4&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Component&lt;/th&gt; 
    &lt;th&gt;Count&lt;/th&gt; 
    &lt;th&gt;Details&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Hook Events&lt;/td&gt; 
    &lt;td&gt;15&lt;/td&gt; 
    &lt;td&gt;sessionStart, beforeShellExecution, afterFileEdit, beforeMCPExecution, beforeSubmitPrompt, and 10 more&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Hook Scripts&lt;/td&gt; 
    &lt;td&gt;16&lt;/td&gt; 
    &lt;td&gt;Thin Node.js scripts delegating to &lt;code&gt;scripts/hooks/&lt;/code&gt; via shared adapter&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Rules&lt;/td&gt; 
    &lt;td&gt;34&lt;/td&gt; 
    &lt;td&gt;9 common (alwaysApply) + 25 language-specific (TypeScript, Python, Go, Swift, PHP)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Agents&lt;/td&gt; 
    &lt;td&gt;48&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.cursor/agents/ecc-*.md&lt;/code&gt; when installed; prefixed to avoid collisions with user or marketplace agents&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Skills&lt;/td&gt; 
    &lt;td&gt;Shared + Bundled&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.cursor/skills/&lt;/code&gt; for translated additions&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Commands&lt;/td&gt; 
    &lt;td&gt;Shared&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.cursor/commands/&lt;/code&gt; if installed&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;MCP Config&lt;/td&gt; 
    &lt;td&gt;Shared&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.cursor/mcp.json&lt;/code&gt; if installed&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;h4&gt;Cursor loading notes&lt;/h4&gt; 
 &lt;p&gt;ECC does not install root &lt;code&gt;AGENTS.md&lt;/code&gt; into &lt;code&gt;.cursor/&lt;/code&gt;. Cursor treats nested &lt;code&gt;AGENTS.md&lt;/code&gt; files as directory context, so copying ECC&#39;s repo identity into a host project would pollute that project.&lt;/p&gt; 
 &lt;p&gt;Cursor-native loading behavior can vary by Cursor build. ECC installs agents as &lt;code&gt;.cursor/agents/ecc-*.md&lt;/code&gt;; if your Cursor build does not expose project agents, those files still work as explicit reference definitions instead of hidden global prompt context.&lt;/p&gt; 
 &lt;h4&gt;Memory and data isolation (Cursor + Claude Code)&lt;/h4&gt; 
 &lt;p&gt;ECC memory hooks reuse the same &lt;code&gt;scripts/hooks/*.js&lt;/code&gt; as Claude Code. For Cursor, ECC tries to keep memory &lt;strong&gt;out of &lt;code&gt;~/.claude&lt;/code&gt; automatically&lt;/strong&gt;:&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;&lt;strong&gt;Cursor &lt;code&gt;sessionStart&lt;/code&gt; hook&lt;/strong&gt; (installed to &lt;code&gt;.cursor/hooks.json&lt;/code&gt; on &lt;code&gt;--target cursor&lt;/code&gt;) injects &lt;code&gt;ECC_AGENT_DATA_HOME&lt;/code&gt; for the whole composer session.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Hook runtime default&lt;/strong&gt;: when &lt;code&gt;CURSOR_VERSION&lt;/code&gt; or &lt;code&gt;CURSOR_PROJECT_DIR&lt;/code&gt; is present, hooks default to &lt;code&gt;~/.cursor/ecc&lt;/code&gt; if the env var is unset.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Project config&lt;/strong&gt;: &lt;code&gt;.cursor/ecc-agent-data.json&lt;/code&gt; documents and overrides the path (&lt;code&gt;agentDataHome&lt;/code&gt;).&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Always-on rule&lt;/strong&gt;: &lt;code&gt;.cursor/rules/ecc-agent-data-home.mdc&lt;/code&gt; reminds the agent where memory lives.&lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;p&gt;You can still override explicitly:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export ECC_AGENT_DATA_HOME=&quot;$HOME/.cursor/ecc&quot;
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;To &lt;strong&gt;share&lt;/strong&gt; memory with Claude Code on purpose, set &lt;code&gt;ECC_AGENT_DATA_HOME=~/.claude&lt;/code&gt; in the shell or in &lt;code&gt;.cursor/ecc-agent-data.json&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;Continuous learning v2 instincts remain separate under &lt;code&gt;CLV2_HOMUNCULUS_DIR&lt;/code&gt; (default &lt;code&gt;~/.local/share/ecc-homunculus&lt;/code&gt;).&lt;/p&gt; 
 &lt;h4&gt;Hook architecture (DRY adapter pattern)&lt;/h4&gt; 
 &lt;p&gt;Cursor has &lt;strong&gt;more hook events than Claude Code&lt;/strong&gt; (20 vs 8). The &lt;code&gt;.cursor/hooks/adapter.js&lt;/code&gt; module transforms Cursor&#39;s stdin JSON to Claude Code&#39;s format, allowing existing &lt;code&gt;scripts/hooks/*.js&lt;/code&gt; to be reused without duplication.&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;Cursor stdin JSON -&amp;gt; adapter.js -&amp;gt; transforms -&amp;gt; scripts/hooks/*.js
                                                (shared with Claude Code)
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Key hooks:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;beforeShellExecution&lt;/strong&gt;: Blocks dev servers outside tmux (exit 2), git push review&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;afterFileEdit&lt;/strong&gt;: Auto-format + TypeScript check + console.log warning&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;beforeSubmitPrompt&lt;/strong&gt;: Detects secrets (sk-, ghp_, AKIA patterns) in prompts&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;beforeTabFileRead&lt;/strong&gt;: Blocks Tab from reading .env, .key, .pem files (exit 2)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;beforeMCPExecution / afterMCPExecution&lt;/strong&gt;: MCP audit logging&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h4&gt;Rules format&lt;/h4&gt; 
 &lt;p&gt;Cursor rules use YAML frontmatter with &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;globs&lt;/code&gt;, and &lt;code&gt;alwaysApply&lt;/code&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;---
description: &quot;TypeScript coding style extending common rules&quot;
globs: [&quot;**/*.ts&quot;, &quot;**/*.tsx&quot;, &quot;**/*.js&quot;, &quot;**/*.jsx&quot;]
alwaysApply: false
---
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Codex macOS app + CLI support in depth&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC provides a supported Codex repo/sync path for the macOS app and CLI, with a reference configuration, Codex-specific &lt;a href=&quot;http://AGENTS.md&quot;&gt;AGENTS.md&lt;/a&gt; supplement, and shared skills. The ECC marketplace route remains experimental. For repo navigation, surface ownership, and PR diff packet guidance, start with &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/CODEX-NAVIGATION-GUIDE.md&quot;&gt;&lt;code&gt;docs/CODEX-NAVIGATION-GUIDE.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Run Codex CLI in the repo: AGENTS.md and .codex/ are auto-detected
codex

# Automatic setup: sync ECC assets (AGENTS.md, skills, MCP servers) into ~/.codex
npm install &amp;amp;&amp;amp; bash scripts/sync-ecc-to-codex.sh

# Or manually: copy the reference config to your home directory
cp .codex/config.toml ~/.codex/config.toml
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;The sync script safely merges ECC MCP servers into your existing &lt;code&gt;~/.codex/config.toml&lt;/code&gt; using an &lt;strong&gt;add-only&lt;/strong&gt; strategy: it never removes or modifies your existing servers. Run with &lt;code&gt;--dry-run&lt;/code&gt; to preview changes, or &lt;code&gt;--update-mcp&lt;/code&gt; to force-refresh ECC servers to the latest recommended config.&lt;/p&gt; 
 &lt;p&gt;For Context7, ECC uses the canonical Codex section name &lt;code&gt;[mcp_servers.context7]&lt;/code&gt; while still launching the &lt;code&gt;@upstash/context7-mcp&lt;/code&gt; package. If you already have a legacy &lt;code&gt;[mcp_servers.context7-mcp]&lt;/code&gt; entry, &lt;code&gt;--update-mcp&lt;/code&gt; migrates it to the canonical section name.&lt;/p&gt; 
 &lt;p&gt;Codex macOS app:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Open this repository as your workspace.&lt;/li&gt; 
  &lt;li&gt;The root &lt;code&gt;AGENTS.md&lt;/code&gt; is auto-detected.&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;.codex/config.toml&lt;/code&gt; and &lt;code&gt;.codex/agents/*.toml&lt;/code&gt; work best when kept project-local.&lt;/li&gt; 
  &lt;li&gt;The reference &lt;code&gt;.codex/config.toml&lt;/code&gt; intentionally does not pin &lt;code&gt;model&lt;/code&gt; or &lt;code&gt;model_provider&lt;/code&gt;, so Codex uses its own current default unless you override it.&lt;/li&gt; 
  &lt;li&gt;Optional: copy &lt;code&gt;.codex/config.toml&lt;/code&gt; to &lt;code&gt;~/.codex/config.toml&lt;/code&gt; for global defaults; keep the multi-agent role files project-local unless you also copy &lt;code&gt;.codex/agents/&lt;/code&gt;.&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h4&gt;What&#39;s included for Codex&lt;/h4&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Component&lt;/th&gt; 
    &lt;th&gt;Count&lt;/th&gt; 
    &lt;th&gt;Details&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Config&lt;/td&gt; 
    &lt;td&gt;1&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.codex/config.toml&lt;/code&gt;: top-level approvals/sandbox/web_search, MCP servers, notifications, profiles&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;http://AGENTS.md&quot;&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;2&lt;/td&gt; 
    &lt;td&gt;Root (universal) + &lt;code&gt;.codex/AGENTS.md&lt;/code&gt; (Codex-specific supplement)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Skills&lt;/td&gt; 
    &lt;td&gt;32&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.agents/skills/&lt;/code&gt;: &lt;a href=&quot;http://SKILL.md&quot;&gt;SKILL.md&lt;/a&gt; + agents/openai.yaml per skill&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;MCP Servers&lt;/td&gt; 
    &lt;td&gt;6&lt;/td&gt; 
    &lt;td&gt;GitHub, Context7, Exa, Memory, Playwright, Sequential Thinking (7 with Supabase via &lt;code&gt;--update-mcp&lt;/code&gt; sync)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Profiles&lt;/td&gt; 
    &lt;td&gt;2&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;strict&lt;/code&gt; (read-only sandbox) and &lt;code&gt;yolo&lt;/code&gt; (full auto-approve)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Agent Roles&lt;/td&gt; 
    &lt;td&gt;3&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.codex/agents/&lt;/code&gt;: explorer, reviewer, docs-researcher&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;Skills at &lt;code&gt;.agents/skills/&lt;/code&gt; are auto-loaded by Codex. Canonical Anthropic skills such as &lt;code&gt;claude-api&lt;/code&gt;, &lt;code&gt;frontend-design&lt;/code&gt;, and &lt;code&gt;skill-creator&lt;/code&gt; are intentionally not re-bundled here. Install those from &lt;a href=&quot;https://github.com/anthropics/skills&quot;&gt;&lt;code&gt;anthropics/skills&lt;/code&gt;&lt;/a&gt; when you want the official versions.&lt;/p&gt; 
 &lt;h4&gt;Key limitation&lt;/h4&gt; 
 &lt;p&gt;Codex does &lt;strong&gt;not yet provide Claude-style hook execution parity&lt;/strong&gt;. ECC enforcement there is instruction-based via &lt;code&gt;AGENTS.md&lt;/code&gt;, optional &lt;code&gt;model_instructions_file&lt;/code&gt; overrides, and sandbox/approval settings.&lt;/p&gt; 
 &lt;h4&gt;Multi-agent support&lt;/h4&gt; 
 &lt;p&gt;Current Codex builds support stable multi-agent workflows.&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Enable &lt;code&gt;features.multi_agent = true&lt;/code&gt; in &lt;code&gt;.codex/config.toml&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Define roles under &lt;code&gt;[agents.&amp;lt;name&amp;gt;]&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Point each role at a file under &lt;code&gt;.codex/agents/&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Use &lt;code&gt;/agent&lt;/code&gt; in the CLI to inspect or steer child agents&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;ECC ships three sample role configs:&lt;/p&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Role&lt;/th&gt; 
    &lt;th&gt;Purpose&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;explorer&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Read-only codebase evidence gathering before edits&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;reviewer&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Correctness, security, and missing-test review&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;docs_researcher&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Documentation and API verification before release/docs changes&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Zed support&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC provides Zed project support through a conservative &lt;code&gt;.zed&lt;/code&gt; adapter for project-local settings, flattened rules, agents, commands, and skills.&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./install.sh --profile minimal --target zed
&lt;/code&gt;&lt;/pre&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;.\install.ps1 --profile minimal --target zed
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;The adapter writes ECC-managed files under &lt;code&gt;.zed/&lt;/code&gt; and keeps BYOK/OpenRouter credentials out of the repo. Configure Zed account or API keys through Zed&#39;s own settings UI or your local user settings.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;OpenCode support in depth&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC provides a beta OpenCode plugin integration with instructions, a catalog subset, commands, custom tools, and hook events. It does not provide feature parity with Claude Code, and the reference model IDs must exist in the user&#39;s configured provider.&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install OpenCode
npm install -g opencode

# Run in the repository root
opencode
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;The configuration is automatically detected from &lt;code&gt;.opencode/opencode.json&lt;/code&gt;.&lt;/p&gt; 
 &lt;h4&gt;Hook support via plugins&lt;/h4&gt; 
 &lt;p&gt;OpenCode&#39;s plugin system has 20+ event types:&lt;/p&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Claude Code Hook&lt;/th&gt; 
    &lt;th&gt;OpenCode Plugin Event&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;PreToolUse&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;tool.execute.before&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;PostToolUse&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;tool.execute.after&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Stop&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;session.idle&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;SessionStart&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;session.created&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;SessionEnd&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;session.deleted&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;&lt;strong&gt;Additional OpenCode events&lt;/strong&gt;: &lt;code&gt;file.edited&lt;/code&gt;, &lt;code&gt;file.watcher.updated&lt;/code&gt;, &lt;code&gt;message.updated&lt;/code&gt;, &lt;code&gt;lsp.client.diagnostics&lt;/code&gt;, &lt;code&gt;tui.toast.show&lt;/code&gt;, and more.&lt;/p&gt; 
 &lt;h4&gt;Plugin installation&lt;/h4&gt; 
 &lt;p&gt;&lt;strong&gt;Option 1: Use directly&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd ECC
opencode
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Option 2: Install as npm package&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install ecc-universal
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Then add to your &lt;code&gt;opencode.json&lt;/code&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;plugin&quot;: [&quot;ecc-universal&quot;]
}
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;That npm plugin entry enables ECC&#39;s published OpenCode plugin module (hooks/events and plugin tools). It does &lt;strong&gt;not&lt;/strong&gt; automatically add ECC&#39;s full command/agent/instruction catalog to your project config.&lt;/p&gt; 
 &lt;p&gt;For the full ECC OpenCode setup, either:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;run OpenCode inside this repository, or&lt;/li&gt; 
  &lt;li&gt;copy the bundled &lt;code&gt;.opencode/&lt;/code&gt; config assets into your project and wire the &lt;code&gt;instructions&lt;/code&gt;, &lt;code&gt;agent&lt;/code&gt;, and &lt;code&gt;command&lt;/code&gt; entries in &lt;code&gt;opencode.json&lt;/code&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h4&gt;Documentation&lt;/h4&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Migration Guide&lt;/strong&gt;: &lt;code&gt;.opencode/MIGRATION.md&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;OpenCode Plugin README&lt;/strong&gt;: &lt;code&gt;.opencode/README.md&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Consolidated Rules&lt;/strong&gt;: &lt;code&gt;.opencode/instructions/INSTRUCTIONS.md&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;LLM Documentation&lt;/strong&gt;: &lt;code&gt;llms.txt&lt;/code&gt; (complete OpenCode docs for LLMs)&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;GitHub Copilot support in depth&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC provides &lt;strong&gt;GitHub Copilot support&lt;/strong&gt; for VS Code via Copilot Chat&#39;s native instruction and prompt file system. No extra tooling required.&lt;/p&gt; 
 &lt;h4&gt;What&#39;s included for GitHub Copilot&lt;/h4&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Component&lt;/th&gt; 
    &lt;th&gt;File&lt;/th&gt; 
    &lt;th&gt;Purpose&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Core instructions&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Always-loaded rules: coding style, security, testing, git workflow&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;VS Code settings&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.vscode/settings.json&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Per-task instruction files for code gen, test gen, and commit messages&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Plan prompt&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.github/prompts/plan.prompt.md&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Phased implementation planning&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;TDD prompt&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.github/prompts/tdd.prompt.md&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Red-Green-Improve cycle&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Security review prompt&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.github/prompts/security-review.prompt.md&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Deep OWASP-aligned security analysis&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Build fix prompt&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.github/prompts/build-fix.prompt.md&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Systematic build and CI error resolution&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Refactor prompt&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;.github/prompts/refactor.prompt.md&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Dead code cleanup and simplification&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;The files are already in place: open any repo that contains this project and GitHub Copilot Chat will automatically pick up &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;. The committed &lt;code&gt;.vscode/settings.json&lt;/code&gt; enables &lt;code&gt;chat.promptFiles&lt;/code&gt; so VS Code can load the reusable prompts from &lt;code&gt;.github/prompts/&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;To use the workflow prompts in Copilot Chat:&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;Open the Copilot Chat panel in VS Code.&lt;/li&gt; 
  &lt;li&gt;Click the &lt;strong&gt;paperclip / attach&lt;/strong&gt; icon and select &lt;strong&gt;Prompt...&lt;/strong&gt;, or type &lt;code&gt;/&lt;/code&gt; and choose a prompt.&lt;/li&gt; 
  &lt;li&gt;Select the prompt (e.g. &lt;code&gt;plan&lt;/code&gt;, &lt;code&gt;tdd&lt;/code&gt;, &lt;code&gt;security-review&lt;/code&gt;).&lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;h4&gt;Feature coverage&lt;/h4&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;ECC Feature&lt;/th&gt; 
    &lt;th&gt;Copilot equivalent&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Coding standards&lt;/td&gt; 
    &lt;td&gt;Always-on via &lt;code&gt;copilot-instructions.md&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Security checklist&lt;/td&gt; 
    &lt;td&gt;Always-on + &lt;code&gt;security-review&lt;/code&gt; prompt&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Testing / TDD&lt;/td&gt; 
    &lt;td&gt;Always-on + &lt;code&gt;tdd&lt;/code&gt; prompt&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Implementation planning&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;plan&lt;/code&gt; prompt&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Code review&lt;/td&gt; 
    &lt;td&gt;External PR review via CodeRabbit + Greptile&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Build error resolution&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;build-fix&lt;/code&gt; prompt&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Refactoring&lt;/td&gt; 
    &lt;td&gt;&lt;code&gt;refactor&lt;/code&gt; prompt&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Commit message format&lt;/td&gt; 
    &lt;td&gt;Per-task instruction in &lt;code&gt;settings.json&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Hooks / automation&lt;/td&gt; 
    &lt;td&gt;Not supported (Copilot has no hook system)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Agents / delegation&lt;/td&gt; 
    &lt;td&gt;Not supported (Copilot has no subagent API)&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;h4&gt;Limitations&lt;/h4&gt; 
 &lt;p&gt;GitHub Copilot does not have a hook system or a subagent API, so ECC&#39;s hook automations (auto-format, TypeScript check, session persistence, dev-server guard) and agent delegation are unavailable. The instruction and prompt layer still brings the full ECC coding philosophy (standards, security, TDD, and workflow) into every Copilot Chat session.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;What changed in v2.0.0&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC v2.0.0 stabilizes the 2.0 line with the public Hermes operator story, 281 skills, 67 agents, 94 command shims, session adapters, MCP inventory, worktree lifecycle services, orchestrator workflows, and the ECC Discord community.&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/releases/2.0.0/release-notes.md&quot;&gt;v2.0.0 release notes&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/ECC-2.0-REFERENCE-ARCHITECTURE.md&quot;&gt;ECC 2.0 reference architecture&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/HERMES-SETUP.md&quot;&gt;Hermes setup guide&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/MIGRATION-1X-TO-2.0.md&quot;&gt;Migration guide from 1.x&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Token Optimization&lt;/h2&gt; 
&lt;p&gt;Agent usage can be expensive if you don&#39;t manage token consumption. These settings significantly reduce costs without sacrificing quality. Full guide: &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/token-optimization.md&quot;&gt;docs/token-optimization.md&lt;/a&gt;.&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Recommended settings&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Add to &lt;code&gt;~/.claude/settings.json&lt;/code&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;model&quot;: &quot;sonnet&quot;,
  &quot;env&quot;: {
    &quot;MAX_THINKING_TOKENS&quot;: &quot;10000&quot;,
    &quot;CLAUDE_AUTOCOMPACT_PCT_OVERRIDE&quot;: &quot;50&quot;,
    &quot;CLAUDE_CODE_SUBAGENT_MODEL&quot;: &quot;haiku&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Setting&lt;/th&gt; 
    &lt;th&gt;Default&lt;/th&gt; 
    &lt;th&gt;Recommended&lt;/th&gt; 
    &lt;th&gt;Impact&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;opus&lt;/td&gt; 
    &lt;td&gt;&lt;strong&gt;sonnet&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;~60% cost reduction; handles 80%+ of coding tasks&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;MAX_THINKING_TOKENS&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;31,999&lt;/td&gt; 
    &lt;td&gt;&lt;strong&gt;10,000&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;~70% reduction in hidden thinking cost per request&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;CLAUDE_AUTOCOMPACT_PCT_OVERRIDE&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;95&lt;/td&gt; 
    &lt;td&gt;&lt;strong&gt;50&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;Compacts earlier, better quality in long sessions&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;ECC_CONTEXT_MONITOR_COST_WARNINGS&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;on&lt;/td&gt; 
    &lt;td&gt;&lt;strong&gt;off for subscription users&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;Suppresses agent-facing API-rate estimate warnings while keeping context/scope/loop warnings&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;Switch to Opus only when you need deep architectural reasoning:&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;/model opus
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Daily workflow commands&lt;/strong&gt;&lt;/summary&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Command&lt;/th&gt; 
    &lt;th&gt;When to Use&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;/model sonnet&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Default for most tasks&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;/model opus&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Complex architecture, debugging, deep reasoning&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;/clear&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Between unrelated tasks (free, instant reset)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;/compact&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;At logical task breakpoints (research done, milestone complete)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;code&gt;/cost&lt;/code&gt;&lt;/td&gt; 
    &lt;td&gt;Monitor token spending during session&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;If you use a subscription and the context monitor&#39;s API-rate estimates are not useful, set &lt;code&gt;ECC_CONTEXT_MONITOR_COST_WARNINGS=off&lt;/code&gt;. This only suppresses the agent-facing cost warnings; it does not disable context exhaustion, scope, or loop warnings.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Strategic compaction&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;The &lt;code&gt;strategic-compact&lt;/code&gt; skill suggests &lt;code&gt;/compact&lt;/code&gt; at logical breakpoints instead of relying on auto-compaction at 95% context. See &lt;code&gt;skills/strategic-compact/SKILL.md&lt;/code&gt; for the full decision guide.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;When to compact:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;After research/exploration, before implementation&lt;/li&gt; 
  &lt;li&gt;After completing a milestone, before starting the next&lt;/li&gt; 
  &lt;li&gt;After debugging, before continuing feature work&lt;/li&gt; 
  &lt;li&gt;After a failed approach, before trying a new one&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;When NOT to compact:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Mid-implementation (you&#39;ll lose variable names, file paths, partial state)&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Context window management&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;&lt;strong&gt;Critical:&lt;/strong&gt; Don&#39;t enable all MCPs at once. Each MCP tool description consumes tokens from your 200k window, potentially reducing it to ~70k.&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Keep under 10 MCPs enabled per project&lt;/li&gt; 
  &lt;li&gt;Keep under 80 tools active&lt;/li&gt; 
  &lt;li&gt;Use &lt;code&gt;/mcp&lt;/code&gt; to disable unused Claude Code MCP servers; those runtime choices persist in &lt;code&gt;~/.claude.json&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Use &lt;code&gt;ECC_DISABLED_MCPS&lt;/code&gt; only to filter ECC-generated MCP configs during install/sync flows&lt;/li&gt; 
  &lt;li&gt;If context is getting heavy, run &lt;code&gt;/context-budget&lt;/code&gt; and remove rules you do not need&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;Agent teams cost warning:&lt;/strong&gt; Agent Teams spawns multiple context windows. Each teammate consumes tokens independently. Only use for tasks where parallelism provides clear value (multi-module work, parallel reviews). For simple sequential tasks, subagents are more token-efficient.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Requirements&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Claude Code CLI version + hooks auto-loading behavior&lt;/strong&gt;&lt;/summary&gt; 
 &lt;h3&gt;Claude Code CLI version&lt;/h3&gt; 
 &lt;p&gt;&lt;strong&gt;Minimum version: v2.1.0 or later.&lt;/strong&gt; The plugin requires Claude Code CLI v2.1.0+ due to changes in how the plugin system handles hooks.&lt;/p&gt; 
 &lt;p&gt;Check your version:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;claude --version
&lt;/code&gt;&lt;/pre&gt; 
 &lt;h3&gt;Important: hooks auto-loading behavior&lt;/h3&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;WARNING: &lt;strong&gt;For Contributors:&lt;/strong&gt; Do NOT add a &lt;code&gt;&quot;hooks&quot;&lt;/code&gt; field to &lt;code&gt;.claude-plugin/plugin.json&lt;/code&gt;. This is enforced by a regression test.&lt;/p&gt; 
 &lt;/blockquote&gt; 
 &lt;p&gt;Claude Code v2.1+ &lt;strong&gt;automatically loads&lt;/strong&gt; &lt;code&gt;hooks/hooks.json&lt;/code&gt; from any installed plugin by convention. Explicitly declaring it in &lt;code&gt;plugin.json&lt;/code&gt; causes a duplicate detection error:&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;Duplicate hooks file detected: ./hooks/hooks.json resolves to already-loaded file
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;History:&lt;/strong&gt; This has caused repeated fix/revert cycles in this repo (&lt;a href=&quot;https://github.com/affaan-m/ECC/issues/29&quot;&gt;#29&lt;/a&gt;, &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/52&quot;&gt;#52&lt;/a&gt;, &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/103&quot;&gt;#103&lt;/a&gt;). The behavior changed between Claude Code versions, leading to confusion. There is now a regression test to prevent this from being reintroduced.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Security&lt;/h2&gt; 
&lt;p&gt;Install ECC only from official sources:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;GitHub repository: &lt;a href=&quot;https://github.com/affaan-m/ECC&quot;&gt;https://github.com/affaan-m/ECC&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Claude Code plugin: &lt;code&gt;ecc@ecc&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;npm packages: &lt;a href=&quot;https://www.npmjs.com/package/ecc-universal&quot;&gt;&lt;code&gt;ecc-universal&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://www.npmjs.com/package/ecc-agentshield&quot;&gt;&lt;code&gt;ecc-agentshield&lt;/code&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;GitHub App: &lt;a href=&quot;https://github.com/apps/ecc-tools&quot;&gt;https://github.com/apps/ecc-tools&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Website: &lt;a href=&quot;https://ecc.tools&quot;&gt;https://ecc.tools&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Scan a project with AgentShield:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx -y ecc-agentshield scan --path .
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Report a vulnerability.&lt;/strong&gt; Use the private process in &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt; (GitHub private vulnerability reporting). Please do not open public issues for security reports.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Built-in guardrails.&lt;/strong&gt; GateGuard gates destructive shell commands (including &lt;code&gt;rm&lt;/code&gt;, force/path &lt;code&gt;git checkout&lt;/code&gt;, and destructive &lt;code&gt;find -exec&lt;/code&gt;) before they run; the supply-chain IOC scanner runs in CI; and AgentShield audits your own agent, hook, MCP, permission, and secret surfaces (&lt;code&gt;/security-scan&lt;/code&gt;).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Hooks, MCP servers, and context controls&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Hooks can run shell commands, MCP servers can hold credentials, and project instructions can enter an agent&#39;s context. Treat all three as executable configuration.&lt;/p&gt; 
 &lt;p&gt;Do not copy raw &lt;code&gt;hooks/hooks.json&lt;/code&gt; into &lt;code&gt;~/.claude/settings.json&lt;/code&gt; after a plugin install. Modern Claude Code versions load plugin hooks automatically, and a second copy can make them fire twice.&lt;/p&gt; 
 &lt;p&gt;Use &lt;code&gt;/mcp&lt;/code&gt; for Claude Code runtime disables; Claude Code persists those choices in &lt;code&gt;~/.claude.json&lt;/code&gt;.&lt;/p&gt; 
 &lt;p&gt;&lt;code&gt;ECC_DISABLED_MCPS&lt;/code&gt; is an ECC install/sync filter, not a live Claude Code toggle.&lt;/p&gt; 
 &lt;p&gt;If context is getting heavy, run &lt;code&gt;/context-budget&lt;/code&gt;, remove rules you do not need, and disable unused MCP servers. See the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/token-optimization.md&quot;&gt;token optimization guide&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;p&gt;Security references:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/SECURITY.md&quot;&gt;Security policy&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/the-security-guide.md&quot;&gt;Security guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/MCP-CONNECTOR-POLICY.md&quot;&gt;MCP connector policy&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/security/supply-chain-incident-response.md&quot;&gt;Supply-chain incident response&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;ECC appears twice or hooks fire twice&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;The usual cause is installing the Claude plugin and then running &lt;code&gt;./install.sh --profile full&lt;/code&gt; on top of it.&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;Remove the Claude Code plugin install.&lt;/li&gt; 
  &lt;li&gt;Run &lt;code&gt;node scripts/ecc.js uninstall --dry-run&lt;/code&gt; from the ECC checkout.&lt;/li&gt; 
  &lt;li&gt;Remove extra rule folders you manually copied and no longer want.&lt;/li&gt; 
  &lt;li&gt;Reinstall once, using one path.&lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;p&gt;For hook-specific checks, see the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/hooks/README.md&quot;&gt;hooks README&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;My hooks aren&#39;t working / &quot;Duplicate hooks file&quot; errors&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;&lt;strong&gt;Do NOT add a &lt;code&gt;&quot;hooks&quot;&lt;/code&gt; field to &lt;code&gt;.claude-plugin/plugin.json&lt;/code&gt;.&lt;/strong&gt; Claude Code v2.1+ automatically loads &lt;code&gt;hooks/hooks.json&lt;/code&gt; from installed plugins. Explicitly declaring it causes duplicate detection errors. See &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/29&quot;&gt;#29&lt;/a&gt;, &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/52&quot;&gt;#52&lt;/a&gt;, &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/103&quot;&gt;#103&lt;/a&gt;.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Codex marketplace installs but skills do not load&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Run the cache check from an ECC checkout:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;node scripts/codex/check-plugin-cache.js
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;If it reports unresolved parent references, use &lt;code&gt;bash scripts/sync-ecc-to-codex.sh&lt;/code&gt;. Registration in &lt;code&gt;codex plugin list&lt;/code&gt; confirms the marketplace entry, not that every referenced file reached the plugin cache. Runtime skill loading from local/repo marketplaces is still unreliable upstream (&lt;a href=&quot;https://github.com/openai/codex/issues/26037&quot;&gt;openai/codex#26037&lt;/a&gt;); see &lt;a href=&quot;https://github.com/affaan-m/ECC/issues/2128&quot;&gt;#2128&lt;/a&gt; for the full investigation.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;My context window is shrinking&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Too many MCP servers eat your context. Each MCP tool description consumes tokens from your 200k window, potentially reducing it to ~70k. SessionStart context is capped at 8000 characters by default; lower it with &lt;code&gt;ECC_SESSION_START_MAX_CHARS=4000&lt;/code&gt; or disable it with &lt;code&gt;ECC_SESSION_START_CONTEXT=off&lt;/code&gt; for local-model or low-context setups.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Disable unused MCPs from Claude Code with &lt;code&gt;/mcp&lt;/code&gt;. Claude Code writes those runtime choices to &lt;code&gt;~/.claude.json&lt;/code&gt;; &lt;code&gt;.claude/settings.json&lt;/code&gt; and &lt;code&gt;.claude/settings.local.json&lt;/code&gt; are not reliable toggles for already-loaded MCP servers.&lt;/p&gt; 
 &lt;p&gt;Keep under 10 MCPs enabled and under 80 tools active.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Can I use only some components (e.g., just agents)?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Yes. Use the manual component copies in &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/#advanced-install-options&quot;&gt;Advanced Install Options&lt;/a&gt; and copy only what you need:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Just agents
cp agents/*.md ~/.claude/agents/

# Just rules
mkdir -p ~/.claude/rules/ecc/
cp -r rules/common ~/.claude/rules/ecc/
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Each component is fully independent.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Does this work with Cursor / OpenCode / Codex / Antigravity / GitHub Copilot?&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Yes. ECC is cross-platform:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Cursor&lt;/strong&gt;: Pre-translated configs in &lt;code&gt;.cursor/&lt;/code&gt;. See &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/#platform-support&quot;&gt;Platform Support&lt;/a&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Gemini CLI&lt;/strong&gt;: Experimental project-local support via &lt;code&gt;.gemini/GEMINI.md&lt;/code&gt; and shared installer plumbing.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;OpenCode&lt;/strong&gt;: Beta plugin integration in &lt;code&gt;.opencode/&lt;/code&gt;; provider model selection and catalog parity remain limited.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Codex&lt;/strong&gt;: Supported repo/sync path for macOS app and CLI; ECC&#39;s marketplace package remains experimental.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;GitHub Copilot (VS Code)&lt;/strong&gt;: Instruction and prompt layer via &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;, &lt;code&gt;.vscode/settings.json&lt;/code&gt;, and &lt;code&gt;.github/prompts/&lt;/code&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Antigravity&lt;/strong&gt;: Tightly integrated setup for workflows, skills, and flattened rules in &lt;code&gt;.agent/&lt;/code&gt;. See &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/ANTIGRAVITY-GUIDE.md&quot;&gt;Antigravity Guide&lt;/a&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;JoyCode / CodeBuddy&lt;/strong&gt;: Project-local selective install adapters for commands, agents, skills, and flattened rules. See &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/JOYCODE-GUIDE.md&quot;&gt;JoyCode Adapter Guide&lt;/a&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Qwen CLI&lt;/strong&gt;: Home-directory selective install adapter for commands, agents, skills, rules, and Qwen config. See &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/QWEN-GUIDE.md&quot;&gt;Qwen CLI Adapter Guide&lt;/a&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Zed&lt;/strong&gt;: Project-local selective install adapter for &lt;code&gt;.zed/settings.json&lt;/code&gt;, flattened rules, commands, agents, and skills.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Non-native harnesses&lt;/strong&gt;: Manual fallback path for chat-style interfaces. See &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/MANUAL-ADAPTATION-GUIDE.md&quot;&gt;Manual Adaptation Guide&lt;/a&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;: Native. This is the primary target.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;My platform is not listed&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Use the &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/MANUAL-ADAPTATION-GUIDE.md&quot;&gt;manual adaptation guide&lt;/a&gt;, or open a &lt;a href=&quot;https://github.com/affaan-m/ECC/discussions&quot;&gt;GitHub discussion&lt;/a&gt; with the harness name and the file, skill, command, and hook formats it supports.&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;Running Tests&lt;/h2&gt; 
&lt;p&gt;The plugin includes a comprehensive test suite:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Run all tests
node tests/run-all.js

# Run individual test files
node tests/lib/utils.test.js
node tests/lib/package-manager.test.js
node tests/hooks/hooks.test.js
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Background&lt;/h2&gt; 
&lt;p&gt;I&#39;ve been using Claude Code since the experimental rollout. Won the Anthropic x Forum Ventures hackathon in Sep 2025 with &lt;a href=&quot;https://x.com/DRodriguezFX&quot;&gt;@DRodriguezFX&lt;/a&gt;, built &lt;a href=&quot;https://zenith.chat&quot;&gt;zenith.chat&lt;/a&gt; entirely with agentic workflows.&lt;/p&gt; 
&lt;p&gt;These configs are battle-tested across multiple production applications.&lt;/p&gt; 
&lt;h2&gt;Community and Project&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Sponsors and ECC Pro&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;ECC stays free because sponsors and Pro users fund the work. Sponsor logos are at the top of this README; the full roster and tiers are in &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/SPONSORS.md&quot;&gt;SPONSORS.md&lt;/a&gt;.&lt;/p&gt; 
 &lt;p&gt;ECC Pro adds private-repo analysis, PR-triggered audits, AgentShield-backed scanning, automatic push and PR checks, pooled team usage, and priority support through the hosted GitHub App.&lt;/p&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td width=&quot;25%&quot; align=&quot;center&quot;&gt;&lt;a href=&quot;https://ecc.tools/pricing&quot;&gt;&lt;strong&gt;ECC Pro&lt;/strong&gt;&lt;br /&gt;&lt;sub&gt;Hosted GitHub App for private repos&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td width=&quot;25%&quot; align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/sponsors/affaan-m&quot;&gt;&lt;strong&gt;Sponsor ECC&lt;/strong&gt;&lt;br /&gt;&lt;sub&gt;Fund the OSS work&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td width=&quot;25%&quot; align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/affaan-m/ECC/discussions&quot;&gt;&lt;strong&gt;Community&lt;/strong&gt;&lt;br /&gt;&lt;sub&gt;Q&amp;amp;A, ideas, and Show and Tell&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td width=&quot;25%&quot; align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/apps/ecc-tools&quot;&gt;&lt;strong&gt;GitHub App&lt;/strong&gt;&lt;br /&gt;&lt;sub&gt;PR audits and hosted workflows&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/sponsors/affaan-m&quot;&gt;Become a sponsor&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/SPONSORS.md&quot;&gt;Sponsor tiers&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/SPONSORING.md&quot;&gt;Sponsorship program&lt;/a&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Contributing&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Contributions are welcome across skills, agents, rules, hooks, docs, tests, adapters, and security improvements.&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/CONTRIBUTING.md&quot;&gt;Contributing guide&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/SKILL-DEVELOPMENT-GUIDE.md&quot;&gt;Skill development guide&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/docs/SKILL-PLACEMENT-POLICY.md&quot;&gt;Skill placement policy&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/COMMANDS-QUICK-REF.md&quot;&gt;Command quick reference&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;The short version:&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;Fork the repo&lt;/li&gt; 
  &lt;li&gt;Create your skill in &lt;code&gt;skills/your-skill-name/SKILL.md&lt;/code&gt; (with YAML frontmatter)&lt;/li&gt; 
  &lt;li&gt;Or create an agent in &lt;code&gt;agents/your-agent.md&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Submit a PR with a clear description of what it does and when to use it&lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;p&gt;&lt;strong&gt;Ideas for contributions:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Language-specific skills (Rust, C#, Kotlin, Java): Go, Python, Perl, Swift, TypeScript, and HarmonyOS/ArkTS already included&lt;/li&gt; 
  &lt;li&gt;Framework-specific configs (Rails, FastAPI): Django, NestJS, Spring Boot, and Laravel already included&lt;/li&gt; 
  &lt;li&gt;DevOps agents (Kubernetes, Terraform, AWS, Docker)&lt;/li&gt; 
  &lt;li&gt;Testing strategies (different frameworks, visual regression)&lt;/li&gt; 
  &lt;li&gt;Domain-specific knowledge (ML, data engineering, mobile)&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Links&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Shorthand Guide (Start Here):&lt;/strong&gt; &lt;a href=&quot;https://x.com/affaan/status/2012378465664745795&quot;&gt;The Shorthand Guide to ECC&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Longform Guide (Advanced):&lt;/strong&gt; &lt;a href=&quot;https://x.com/affaan/status/2014040193557471352&quot;&gt;The Longform Guide to ECC&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Security Guide:&lt;/strong&gt; &lt;a href=&quot;https://raw.githubusercontent.com/affaan-m/ECC/main/the-security-guide.md&quot;&gt;Security Guide&lt;/a&gt; | &lt;a href=&quot;https://x.com/affaan/status/2033263813387223421&quot;&gt;Thread&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Follow:&lt;/strong&gt; &lt;a href=&quot;https://x.com/affaan&quot;&gt;@affaan&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT. Use it freely, adapt it to your workflow, and contribute back when you can.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Star this repo if it helps. Read the guides. Build something great.&lt;/strong&gt;&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
