<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: mibii</title>
    <description>The latest articles on Forem by mibii (@mibii).</description>
    <link>https://forem.com/mibii</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1066881%2F765e062a-120d-4ee6-a07b-71a91c3d5ce7.jpeg</url>
      <title>Forem: mibii</title>
      <link>https://forem.com/mibii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mibii"/>
    <language>en</language>
    <item>
      <title>Claude Code + Notion: Full Workflow From Zero to Automated Knowledge System</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Sun, 12 Apr 2026 00:40:42 +0000</pubDate>
      <link>https://forem.com/mibii/claude-code-notion-full-workflow-from-zero-to-automated-knowledge-system-j7j</link>
      <guid>https://forem.com/mibii/claude-code-notion-full-workflow-from-zero-to-automated-knowledge-system-j7j</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Obsidian vs Notion:&lt;/strong&gt; If you read the Obsidian version of this guide, here's the key difference upfront. Obsidian stores plain Markdown files — Claude Code reads them directly, zero setup. Notion stores everything in a proprietary database — you need MCP to bridge them. That adds 15 minutes of setup. The payoff is real-time sync and team collaboration that Obsidian can't match.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why Connect Them at All
&lt;/h2&gt;

&lt;p&gt;When you work in Claude Code, your Notion workspace is invisible. Every time you need context from a spec, a meeting note, or a project page — you're copying and pasting between tabs.&lt;/p&gt;

&lt;p&gt;With Notion MCP connected, Claude Code can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search your entire workspace from the terminal&lt;/li&gt;
&lt;li&gt;Pull a PRD or spec directly into a coding session&lt;/li&gt;
&lt;li&gt;Create and update pages without leaving your terminal&lt;/li&gt;
&lt;li&gt;Sync documents you drafted locally to Notion for team review&lt;/li&gt;
&lt;li&gt;Query databases in plain English ("show me all open tasks due this week")&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The workflow becomes: &lt;strong&gt;draft in Claude Code → push to Notion when you need collaboration → pull feedback back when you're ready to continue.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No copy-paste. No version confusion. The two stay in sync.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 1: Install Everything
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1 — Install Claude Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; claude-code

&lt;span class="c"&gt;# Windows&lt;/span&gt;
winget &lt;span class="nb"&gt;install &lt;/span&gt;Anthropic.ClaudeCode

&lt;span class="c"&gt;# Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://claude.ai/install.sh | bash

&lt;span class="c"&gt;# Verify&lt;/span&gt;
claude doctor
claude auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Claude Pro ($20/mo) or Max subscription.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt; is deprecated. Use the native installer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 2 — Have a Notion Account
&lt;/h3&gt;

&lt;p&gt;If you don't have one: &lt;a href="https://notion.so" rel="noopener noreferrer"&gt;notion.so&lt;/a&gt;. Free plan works for personal use. For team collaboration, you'll need Plus or higher.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 2: Connect Notion to Claude Code
&lt;/h2&gt;

&lt;p&gt;Unlike Obsidian (plain files), Notion requires an authenticated connection through MCP. Two methods — pick one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Method A — Official Plugin (Recommended, 5 minutes)
&lt;/h3&gt;

&lt;p&gt;Notion built and maintains an official Claude Code plugin that installs everything in one command: MCP server + Skills + slash commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude plugin add makenotion/claude-code-notion-plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then authenticate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude will prompt you to complete an OAuth flow in your browser. Log in with your Notion account, authorize access, done.&lt;/p&gt;

&lt;p&gt;Verify the connection:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"List a random page title from my Notion workspace"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it returns real content — you're connected.&lt;/p&gt;

&lt;h3&gt;
  
  
  Method B — Manual MCP Setup (More Control)
&lt;/h3&gt;

&lt;p&gt;Add Notion's hosted MCP server directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http notion https://mcp.notion.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start a session and complete OAuth:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude will detect the server and prompt for authentication on first Notion tool use.&lt;/p&gt;

&lt;p&gt;Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp list
&lt;span class="c"&gt;# Should show: notion  https://mcp.notion.com/mcp  connected&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Share with Your Team
&lt;/h3&gt;

&lt;p&gt;Add to &lt;code&gt;.mcp.json&lt;/code&gt; in your project root (commit this):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"notion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.notion.com/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each team member authenticates with their own Notion account. Claude respects individual permissions — it can only access what each person can access.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Important:&lt;/strong&gt; Notion MCP uses OAuth — it acts with your full Notion permissions. Claude can access everything you can access. Be intentional about what you ask it to do.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Part 3: What Notion MCP Can Actually Do
&lt;/h2&gt;

&lt;p&gt;Once connected, Claude Code gets these tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&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;notion-search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full-text search across your workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notion-fetch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read a specific page by URL or ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notion-create-pages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create new pages in any location&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notion-update-page&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edit existing page content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notion-query-database&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Query a Notion database with filters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notion-add-comment&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Post comments on pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;notion-list-users&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List workspace members&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notion's hosted MCP server converts everything to Markdown before sending to Claude — optimized for AI consumption, not the raw JSON block format from the original API. This matters: it's significantly more token-efficient.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 4: CLAUDE.md for Notion Workflows
&lt;/h2&gt;

&lt;p&gt;Tell Claude about your Notion structure so it doesn't have to guess.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Project Context&lt;/span&gt;

&lt;span class="gu"&gt;## Notion Workspace Structure&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Engineering**&lt;/span&gt; — technical specs, ADRs, runbooks
&lt;span class="p"&gt;  -&lt;/span&gt; Specs database: [your-database-url]
&lt;span class="p"&gt;  -&lt;/span&gt; ADR database: [your-database-url]
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Product**&lt;/span&gt; — PRDs, roadmap, research
&lt;span class="p"&gt;  -&lt;/span&gt; PRD database: [your-database-url]
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Meetings**&lt;/span&gt; — all meeting notes, searchable by date and project
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Tasks**&lt;/span&gt; — sprint board and backlog

&lt;span class="gu"&gt;## Document Conventions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; PRDs have properties: Status (Draft/Review/Approved), Owner, Sprint
&lt;span class="p"&gt;-&lt;/span&gt; ADRs follow format: Context → Decision → Consequences
&lt;span class="p"&gt;-&lt;/span&gt; Meeting notes always include: Date, Attendees, Decisions, Action Items

&lt;span class="gu"&gt;## What Claude Can Do Here&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Search Notion for context before starting any implementation task
&lt;span class="p"&gt;-&lt;/span&gt; Pull specs into coding sessions without me copy-pasting
&lt;span class="p"&gt;-&lt;/span&gt; Create draft docs in Notion from local files when review is needed
&lt;span class="p"&gt;-&lt;/span&gt; Update task status in the sprint board after completing work
&lt;span class="p"&gt;-&lt;/span&gt; Query the meetings database to find decisions on any topic

&lt;span class="gu"&gt;## What Claude Should NOT Do&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Never delete Notion pages — archive them instead
&lt;span class="p"&gt;-&lt;/span&gt; Don't update pages in the Product space without checking with me
&lt;span class="p"&gt;-&lt;/span&gt; Always show me what it plans to create before creating it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Part 5: Core Workflows
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Workflow 1 — Pull Context Before Coding
&lt;/h3&gt;

&lt;p&gt;You're about to implement a feature. Instead of digging through Notion manually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; "Find the spec for the authentication refactor and summarize what I need to implement"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude searches your workspace, finds the PRD, reads it, and gives you a focused summary. You can then say:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; "Now implement the JWT refresh token logic based on that spec"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude codes with full spec context — no copy-paste required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow 2 — Push Docs for Team Review
&lt;/h3&gt;

&lt;p&gt;You drafted a technical spec locally in Markdown. Time to get team feedback.&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;.claude/commands/push-to-notion.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Push a local document to Notion for collaboration&lt;/span&gt;
&lt;span class="na"&gt;allowed-tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Bash, Glob, Read, mcp__notion__notion-create-pages,&lt;/span&gt;
  &lt;span class="s"&gt;mcp__notion__notion-search, mcp__notion__notion-fetch,&lt;/span&gt;
  &lt;span class="s"&gt;mcp__notion__notion-update-page, AskUserQuestion&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Push to Notion&lt;/span&gt;

Push a local document to Notion. Only syncs changes — won't overwrite
if already in sync.

&lt;span class="gu"&gt;## Process&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Read the file at $ARGUMENTS
&lt;span class="p"&gt;2.&lt;/span&gt; Search Notion for an existing page with the same title
&lt;span class="p"&gt;3.&lt;/span&gt; If found: compare content, update only changed sections
&lt;span class="p"&gt;4.&lt;/span&gt; If not found: create new page in the Engineering/Specs database
&lt;span class="p"&gt;5.&lt;/span&gt; Return the Notion URL

Always ask before creating or updating anything.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /push-to-notion docs/auth-refactor-spec.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Workflow 3 — Pull Feedback Back
&lt;/h3&gt;

&lt;p&gt;After teammates have commented in Notion:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; "Fetch the auth refactor spec from Notion, show me all comments, and apply any approved changes to docs/auth-refactor-spec.md"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude reads the page, extracts comments, applies changes to your local file. Your local file stays as the source of truth; Notion is the collaboration layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow 4 — Daily Standup Prep
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; "Search Notion for all tasks assigned to me that are In Progress or Blocked. Also find any meeting notes from yesterday. Summarize what I worked on and what's blocking me."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;30-second standup prep from your terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow 5 — Create Meeting Notes
&lt;/h3&gt;

&lt;p&gt;During or after a meeting, dictate or type bullet points, then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; "Create a meeting note in Notion for today's architecture review. Attendees: Alice, Bob, Carlos. Here are my notes: [paste bullets]. Format it properly with Decisions and Action Items sections."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude creates a properly formatted page in your Meetings database.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow 6 — Query Your Database
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; "Show me all PRDs with status Draft that haven't been updated in the last two weeks"
&amp;gt; "List all open action items from meetings where I'm the owner"
&amp;gt; "Find every ADR we've made about database architecture"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Natural language queries over your Notion databases — no Notion formula syntax required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow 7 — Generate Docs from Code
&lt;/h3&gt;

&lt;p&gt;You just finished building a feature:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; "Read the code in src/auth/ and generate a technical runbook for this authentication system. Create it as a new page in the Engineering/Runbooks section of Notion."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude reads your code, writes structured documentation, pushes it to the right place in Notion.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 6: Notion vs Obsidian — Honest Comparison
&lt;/h2&gt;

&lt;p&gt;Since many people use both, here's the direct comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Obsidian + Claude Code&lt;/th&gt;
&lt;th&gt;Notion + Claude Code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Setup time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;30 seconds (just &lt;code&gt;cd vault &amp;amp;&amp;amp; claude&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;15–20 minutes (MCP + OAuth)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Works offline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes — plain files&lt;/td&gt;
&lt;td&gt;No — requires API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Team collaboration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Needs Obsidian Sync or git&lt;/td&gt;
&lt;td&gt;Native — built in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude access method&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Direct file read/write&lt;/td&gt;
&lt;td&gt;MCP tools (structured)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Token efficiency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (plain text)&lt;/td&gt;
&lt;td&gt;High (Notion converts to Markdown)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Database queries&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No (just files)&lt;/td&gt;
&lt;td&gt;Yes — powerful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Comments/review&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mobile&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Via Obsidian app&lt;/td&gt;
&lt;td&gt;Via Notion app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Personal knowledge, developers&lt;/td&gt;
&lt;td&gt;Teams, mixed technical/non-technical&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt; solo developer or researcher → Obsidian. Team workflows or non-technical collaborators → Notion.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 7: Troubleshooting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OAuth flow doesn't start&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Force re-authentication&lt;/span&gt;
claude mcp remove notion
claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http notion https://mcp.notion.com/mcp
claude  &lt;span class="c"&gt;# authenticate fresh&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;"Page not found" errors&lt;/strong&gt;&lt;br&gt;
Notion MCP can only access pages explicitly shared with the integration. If you used Method B (manual), go to the Notion page → Share → Invite your integration.&lt;/p&gt;

&lt;p&gt;With Method A (official plugin), OAuth grants access to your entire workspace automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP server not showing in tool list&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp list     &lt;span class="c"&gt;# verify it's registered&lt;/span&gt;
claude doctor       &lt;span class="c"&gt;# check for environment issues&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Headless / CI environments&lt;/strong&gt;&lt;br&gt;
OAuth requires a browser interaction — it won't work in fully automated pipelines. For CI, use the open-source server with a bearer token instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;NOTION_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;secret_xxxxx
claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; stdio notion-local &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;-y&lt;/span&gt; @notionhq/notion-mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: the open-source server is no longer actively maintained by Notion. Use for automation only, not as your primary connection.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 8: Common Mistakes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Not telling Claude your workspace structure.&lt;/strong&gt;&lt;br&gt;
Claude searches by keyword. If your database is called "Q1 2026 Initiatives" but you ask for "current projects", it might not find it. Put your key database names in CLAUDE.md.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Giving Claude too broad access.&lt;/strong&gt;&lt;br&gt;
Start with one database. Add more as you verify behavior. Claude acts with your full permissions — broad access means broad possible impact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using it as a search engine only.&lt;/strong&gt;&lt;br&gt;
The real value is the loop: pull context → code → push back. If you're only doing read operations, you're using 20% of the capability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forgetting to share pages (Method B).&lt;/strong&gt;&lt;br&gt;
With manual setup, Claude can only see pages shared with your integration. New pages need to be shared individually unless you grant workspace-wide access during setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Start Summary
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Install Claude Code&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; claude-code
claude auth login

&lt;span class="c"&gt;# 2. Add Notion plugin (installs MCP + Skills + commands)&lt;/span&gt;
claude plugin add makenotion/claude-code-notion-plugin

&lt;span class="c"&gt;# 3. Start a session and authenticate&lt;/span&gt;
claude
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /mcp   &lt;span class="c"&gt;# complete OAuth in browser&lt;/span&gt;

&lt;span class="c"&gt;# 4. Verify&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"List a random page from my Notion workspace"&lt;/span&gt;

&lt;span class="c"&gt;# 5. Add workspace context to CLAUDE.md&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /init
&lt;span class="c"&gt;# Edit CLAUDE.md to describe your Notion structure&lt;/span&gt;

&lt;span class="c"&gt;# 6. First real workflow&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Find my current sprint tasks and summarize what's in progress"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Total setup time: under 20 minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Difference from Obsidian
&lt;/h2&gt;

&lt;p&gt;With Obsidian, Claude Code &lt;em&gt;is&lt;/em&gt; in your vault — it reads and writes files directly.&lt;/p&gt;

&lt;p&gt;With Notion, Claude Code &lt;em&gt;talks to&lt;/em&gt; your workspace — through structured MCP tools that Notion designed specifically for AI agents.&lt;/p&gt;

&lt;p&gt;Both work. The Notion approach adds a connection layer but gains real-time sync, team collaboration, and database queries that file-based systems can't match.&lt;/p&gt;

&lt;p&gt;If your work involves other people — specs that need review, meeting notes shared with a team, tasks tracked in a shared database — the Notion setup is worth the extra 15 minutes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Based on official Notion MCP documentation (developers.notion.com), github.com/makenotion/claude-code-notion-plugin, shinzo.ai, hannahstulberg.substack.com, and code.claude.com/docs/en/mcp. April 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>notion</category>
      <category>productivity</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Claude Code + Obsidian: Build a Second Brain That Actually Thinks</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Fri, 10 Apr 2026 08:35:53 +0000</pubDate>
      <link>https://forem.com/mibii/claude-code-obsidian-build-a-second-brain-that-actually-thinks-d61</link>
      <guid>https://forem.com/mibii/claude-code-obsidian-build-a-second-brain-that-actually-thinks-d61</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Who this is for:&lt;/strong&gt; Developers, researchers, or knowledge workers who take notes in Obsidian and want Claude Code to read, write, and act on their vault — not just answer questions about it.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why This Combination Works
&lt;/h2&gt;

&lt;p&gt;Claude Code has one fundamental problem: &lt;strong&gt;it forgets everything between sessions.&lt;/strong&gt; Every time you start a new session, you're starting from scratch.&lt;/p&gt;

&lt;p&gt;Obsidian has one fundamental advantage: &lt;strong&gt;everything is a plain Markdown file on your local disk.&lt;/strong&gt; No API. No proprietary format. Just files.&lt;/p&gt;

&lt;p&gt;Put them together and the problem disappears. Claude Code can read every note you've ever written, understand your thinking patterns, and pick up exactly where you left off — because your vault &lt;em&gt;is&lt;/em&gt; its persistent memory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Without Obsidian:    Session 1 ──X── Session 2 ──X── Session 3
                      (context lost)   (context lost)

With Obsidian vault: Session 1 ──→── Session 2 ──→── Session 3
                      (vault grows)    (vault grows)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The setup is surprisingly simple. Obsidian stores plain text. Claude Code reads plain text. No integration layer needed — just point Claude at your vault folder.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 1: Install Everything
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1 — Install Obsidian
&lt;/h3&gt;

&lt;p&gt;Download from &lt;a href="https://obsidian.md" rel="noopener noreferrer"&gt;obsidian.md&lt;/a&gt; for your platform (macOS, Windows, Linux, iOS, Android). It's free.&lt;/p&gt;

&lt;p&gt;On macOS via Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; obsidian
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Create your vault:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/second-brain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open Obsidian → "Open folder as vault" → select &lt;code&gt;~/second-brain&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Install Claude Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; claude-code

&lt;span class="c"&gt;# Windows&lt;/span&gt;
winget &lt;span class="nb"&gt;install &lt;/span&gt;Anthropic.ClaudeCode

&lt;span class="c"&gt;# Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://claude.ai/install.sh | bash

&lt;span class="c"&gt;# Verify&lt;/span&gt;
claude doctor
claude auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Claude Pro ($20/mo) or Max subscription.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt; is deprecated. Use the native installer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 3 — Connect Them (30 seconds)
&lt;/h3&gt;

&lt;p&gt;This is the whole "integration." Navigate to your vault in the terminal and run Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/second-brain
claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Claude Code now has full read/write access to every note in your vault. No plugins required. No API setup. No tokens to configure.&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;/init&lt;/code&gt; to generate a starter &lt;code&gt;CLAUDE.md&lt;/code&gt; from your vault:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude will scan your folder structure, detect any existing patterns, and create a &lt;code&gt;CLAUDE.md&lt;/code&gt; at the vault root. This file is loaded into every future session automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 2: Vault Structure
&lt;/h2&gt;

&lt;p&gt;Structure matters a lot here. Claude Code traverses directories, but deep nesting burns tokens on path resolution and leaves less room for actual note content. Flat is better.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recommended Structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/second-brain/
├── CLAUDE.md                ← Claude's persistent context (auto-loaded)
├── .claude/
│   ├── settings.json        ← hooks config
│   └── skills/              ← vault automation skills
│       ├── daily/
│       │   └── SKILL.md
│       ├── research/
│       │   └── SKILL.md
│       └── weekly-review/
│           └── SKILL.md
├── daily/                   ← daily notes (YYYY-MM-DD.md)
│   └── 2026/
├── projects/                ← one folder per active project
│   ├── project-a/
│   └── project-b/
├── areas/                   ← ongoing responsibilities
├── resources/               ← reference material, clippings
├── _inbox/                  ← unprocessed capture
├── _attachments/            ← images, PDFs (Claude ignores these)
└── templates/               ← note templates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Naming conventions that help Claude:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Name files like sentences, not IDs. &lt;code&gt;CAN-bus-traffic-without-DBC.md&lt;/code&gt; gives Claude usable context before reading a single line. &lt;code&gt;untitled-48.md&lt;/code&gt; gives it nothing. Obsidian's backlink system and Claude's context signals both depend on the same thing: meaningful filenames.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hide noise from Obsidian's file explorer:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Obsidian → Settings → Files &amp;amp; Links → Excluded files, add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_attachments/, .claude/, node_modules/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Part 3: CLAUDE.md for Your Vault
&lt;/h2&gt;

&lt;p&gt;This is the most important file in the entire setup. Write it for the model, not for humans.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Second Brain — Claude Context&lt;/span&gt;

&lt;span class="gu"&gt;## Who I Am&lt;/span&gt;
Software developer and technical writer. Based in London.
Main interests: distributed systems, developer tools, technical writing.

&lt;span class="gu"&gt;## Vault Structure&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`daily/`&lt;/span&gt; — daily notes, format YYYY-MM-DD.md
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`projects/`&lt;/span&gt; — active projects, one subfolder each
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`areas/`&lt;/span&gt; — ongoing responsibilities (writing, health, finance)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`resources/`&lt;/span&gt; — reference notes, web clips, book notes
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`_inbox/`&lt;/span&gt; — unprocessed capture, process weekly

&lt;span class="gu"&gt;## Note Format&lt;/span&gt;
All notes use YAML frontmatter:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  yaml
&lt;/h2&gt;

&lt;p&gt;title: Note Title&lt;br&gt;
date: 2026-04-10&lt;br&gt;
tags: [tag1, tag2]&lt;/p&gt;
&lt;h2&gt;
  
  
  status: draft | active | archived
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
## Linking Conventions
- Use [[wikilinks]] for internal connections
- Tag topics with #tag-name (lowercase, hyphenated)
- Mark open tasks with `- [ ]`, completed with `- [x]`

## What Claude Can Do Here
- Create and edit notes following the format above
- Search vault using `grep -r "query" ~/second-brain/`
- Link related notes together
- Extract tasks from daily notes into project files
- Generate weekly summaries from daily notes
- Research topics and save findings to resources/

## What Claude Should NOT Do
- Never delete notes — move to _archive/ instead
- Never change a note's filename without asking first
- Never modify templates/ files
- Don't create files in _attachments/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
shell&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep it under 100 lines.&lt;/strong&gt; Every line that stays should answer: "Would removing this cause Claude to make a mistake?"&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 4: Getting Claude Inside Obsidian (Without Leaving the App)
&lt;/h2&gt;

&lt;p&gt;Running between terminal and Obsidian is annoying. Three solutions, pick one:&lt;/p&gt;
&lt;h3&gt;
  
  
  Option A — Terminal Plugin (Simplest)
&lt;/h3&gt;

&lt;p&gt;Install the &lt;strong&gt;Terminal&lt;/strong&gt; community plugin by polyipseity:&lt;/p&gt;

&lt;p&gt;Obsidian → Settings → Community plugins → Browse → search "Terminal" → Install → Enable.&lt;/p&gt;

&lt;p&gt;Click the terminal icon in the left ribbon. A real terminal opens inside Obsidian. Run &lt;code&gt;claude&lt;/code&gt; from there. You can see your notes and talk to Claude simultaneously.&lt;/p&gt;
&lt;h3&gt;
  
  
  Option B — MCP Bridge (Most Powerful)
&lt;/h3&gt;

&lt;p&gt;Install the &lt;strong&gt;Obsidian Claude Code MCP&lt;/strong&gt; community plugin by Ian Sinnott. It runs a dual-transport MCP server that exposes 7 structured tools to Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# After installing the plugin in Obsidian, register it with Claude Code&lt;/span&gt;
claude mcp add obsidian-vault &lt;span class="nt"&gt;--transport&lt;/span&gt; sse http://localhost:27123/sse
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude now has dedicated tools for vault operations — not just raw file reads. Works even when Obsidian is closed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option C — Sidebar Embed
&lt;/h3&gt;

&lt;p&gt;Install &lt;strong&gt;Claude Sidebar&lt;/strong&gt; by Derek Larson. Embeds a full Claude Code terminal directly in Obsidian's right panel. Click the bot icon in the ribbon → Claude opens beside your notes.&lt;/p&gt;

&lt;p&gt;Best for: people who never want to leave Obsidian.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 5: The Core Workflows
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Workflow 1 — Daily Note
&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;.claude/skills/daily/SKILL.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;today&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Morning planning session. Use at the start of the day to create today's daily note and plan.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Daily Note Workflow&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Check if today's note exists at &lt;span class="sb"&gt;`daily/2026/YYYY-MM-DD.md`&lt;/span&gt;
&lt;span class="p"&gt;   -&lt;/span&gt; If not, create it using the template at &lt;span class="sb"&gt;`templates/daily.md`&lt;/span&gt;
&lt;span class="p"&gt;2.&lt;/span&gt; Read yesterday's daily note — extract any incomplete tasks
&lt;span class="p"&gt;3.&lt;/span&gt; Read the current week's project notes — surface active priorities
&lt;span class="p"&gt;4.&lt;/span&gt; Create today's note with sections:
&lt;span class="p"&gt;   -&lt;/span&gt; ## Focus (top 3 priorities)
&lt;span class="p"&gt;   -&lt;/span&gt; ## Tasks (carried over + new)
&lt;span class="p"&gt;   -&lt;/span&gt; ## Notes (freeform capture)
&lt;span class="p"&gt;   -&lt;/span&gt; ## End of day (leave empty)
&lt;span class="p"&gt;5.&lt;/span&gt; Ask me if I want to add anything before finishing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; Each morning, open terminal in vault and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /today
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or just: &lt;code&gt;"Run the today skill"&lt;/code&gt; — Claude matches by description.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow 2 — Research and Capture
&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;.claude/skills/research/SKILL.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;research&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Research a topic, synthesize findings, and save to resources/ folder.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Research Workflow&lt;/span&gt;

When asked to research a topic:
&lt;span class="p"&gt;1.&lt;/span&gt; Search the vault first — check if notes already exist
   &lt;span class="sb"&gt;`grep -r "topic" ~/second-brain/resources/`&lt;/span&gt;
&lt;span class="p"&gt;2.&lt;/span&gt; Search the web for current information
&lt;span class="p"&gt;3.&lt;/span&gt; Synthesize into a structured note:
&lt;span class="p"&gt;   -&lt;/span&gt; ## Overview (what it is)
&lt;span class="p"&gt;   -&lt;/span&gt; ## Key Concepts (the important parts)
&lt;span class="p"&gt;   -&lt;/span&gt; ## Connections (links to existing vault notes)
&lt;span class="p"&gt;   -&lt;/span&gt; ## Sources (URLs)
&lt;span class="p"&gt;4.&lt;/span&gt; Save to &lt;span class="sb"&gt;`resources/topic-name.md`&lt;/span&gt; with proper frontmatter
&lt;span class="p"&gt;5.&lt;/span&gt; Add [[wikilinks]] to related notes already in the vault
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Research Raft consensus algorithm and save to my vault"&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Find everything I have on distributed systems and create a map of content"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Workflow 3 — Meeting Notes → Action Items
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Read my note from the team meeting on 2026-04-08 and extract all action items assigned to me. Create tasks in projects/current-sprint/tasks.md"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude reads the meeting note, understands context, extracts your tasks specifically, and creates structured task items — linked back to the meeting note.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow 4 — Weekly Review
&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;.claude/skills/weekly-review/SKILL.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;weekly-review&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;End-of-week review. Summarize the week, close open tasks, and plan next week.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Weekly Review Workflow&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Read all daily notes from this week (Mon–Fri)
&lt;span class="p"&gt;2.&lt;/span&gt; Extract:
&lt;span class="p"&gt;   -&lt;/span&gt; Completed tasks (✅)
&lt;span class="p"&gt;   -&lt;/span&gt; Incomplete tasks (still open)
&lt;span class="p"&gt;   -&lt;/span&gt; Themes and patterns across the week
&lt;span class="p"&gt;   -&lt;/span&gt; New notes created in projects/
&lt;span class="p"&gt;3.&lt;/span&gt; Generate weekly summary note at &lt;span class="sb"&gt;`daily/2026/YYYY-WW-weekly.md`&lt;/span&gt;:
&lt;span class="p"&gt;   -&lt;/span&gt; ## What got done
&lt;span class="p"&gt;   -&lt;/span&gt; ## What didn't (and why)
&lt;span class="p"&gt;   -&lt;/span&gt; ## Patterns this week
&lt;span class="p"&gt;   -&lt;/span&gt; ## Next week priorities
&lt;span class="p"&gt;4.&lt;/span&gt; Ask: "Any wins or lessons you want to add before I save?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; Every Friday:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /weekly-review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Workflow 5 — Connect the Dots
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Read all notes tagged #distributed-systems from the last 3 months. Find recurring themes I haven't explicitly connected yet. Create a map of content note."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the setup compounds. Claude has seen every note you've written. It finds connections you missed — not because it's smarter than you, but because it remembers everything you've captured over months.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 6: Vault CLAUDE.md vs Project CLAUDE.md
&lt;/h2&gt;

&lt;p&gt;You can run Claude Code inside a code project that's separate from your Obsidian vault, and still give it access to vault context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# In your code project&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app

&lt;span class="c"&gt;# Give Claude access to your vault knowledge base&lt;/span&gt;
claude &lt;span class="nt"&gt;--add-dir&lt;/span&gt; ~/second-brain/resources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use a symlink in your vault to pull project docs in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/second-brain
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; ~/projects/my-app/docs project-docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Claude sees both your code and your vault notes in the same session.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 7: Useful Plugins to Install
&lt;/h2&gt;

&lt;p&gt;These are optional but make the experience noticeably better:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plugin&lt;/th&gt;
&lt;th&gt;What it adds&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Templater&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Auto-create daily notes with consistent frontmatter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dataview&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Query your vault like a database — Claude can write these queries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Periodic Notes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Daily/weekly/monthly note creation on schedule&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Smart Connections&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Semantic search via local embeddings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Terminal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Run Claude Code inside Obsidian (see Part 4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Web Clipper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Save web pages to vault — Claude can then read and summarize them&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Calendar&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Visual calendar for daily notes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Install: Obsidian → Settings → Community plugins → Turn off Safe mode → Browse.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 8: Common Mistakes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Using vague prompts.&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;"Summarize my work"&lt;/code&gt; → Claude guesses.&lt;br&gt;
&lt;code&gt;"Summarize all notes tagged #client-work from the last two weeks and list open deliverables"&lt;/code&gt; → Claude executes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forgetting to update CLAUDE.md.&lt;/strong&gt;&lt;br&gt;
As your vault evolves, your context file goes stale. Review it monthly. Add a line at the top: &lt;code&gt;Last updated: YYYY-MM-DD&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Letting Claude pollute your vault.&lt;/strong&gt;&lt;br&gt;
Your vault should contain your authentic thinking. Claude's outputs — plans, summaries, memory — should go into &lt;code&gt;_claude/&lt;/code&gt; or &lt;code&gt;projects/&lt;/code&gt; folders, clearly marked. Keep generated content separate from your own notes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep nesting.&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Projects/Active/Q1/Research/Sources/topic.md&lt;/code&gt; costs more tokens to work with than &lt;code&gt;research/topic.md&lt;/code&gt;. Flatten where possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No consistent note format.&lt;/strong&gt;&lt;br&gt;
If some notes have YAML frontmatter and others don't, Claude has to guess at structure. Enforce templates from the start with Templater.&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 9: What This Looks Like Day-to-Day
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Morning (2 minutes):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/second-brain
claude
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /today
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude reads yesterday's note, surfaces unfinished tasks, creates today's note. You review, add anything, close terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;During the day:&lt;/strong&gt;&lt;br&gt;
You take notes in Obsidian normally. Web clips, meeting notes, ideas. Claude isn't involved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When you need research:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Research WebAssembly SIMD support and save to resources/"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude searches the web, checks what you already have in the vault, writes a structured note, links it to related notes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;End of week:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /weekly-review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude reads all week's notes, generates the summary, asks for additions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Over time:&lt;/strong&gt;&lt;br&gt;
The vault grows. Claude gets smarter about your specific context. The more you've written, the more connections it can surface. The system compounds.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Honest Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code still has a context window. Very large vaults require targeted queries — Claude can't read 800 notes in one session.&lt;/li&gt;
&lt;li&gt;This requires terminal comfort. If command line is unfamiliar, the setup friction is real.&lt;/li&gt;
&lt;li&gt;Claude writes to your files. Review what it creates before treating it as your own thinking.&lt;/li&gt;
&lt;li&gt;Local only — no mobile sync out of the box. Use Obsidian Sync or git for cross-device.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick Start Summary
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Install&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; obsidian
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; claude-code

&lt;span class="c"&gt;# 2. Create vault&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/second-brain
&lt;span class="c"&gt;# Open Obsidian → "Open folder as vault"&lt;/span&gt;

&lt;span class="c"&gt;# 3. Connect&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/second-brain
claude
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /init

&lt;span class="c"&gt;# 4. Edit CLAUDE.md to describe your vault structure&lt;/span&gt;

&lt;span class="c"&gt;# 5. First real task&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Create a minimal folder structure for a developer's second brain"&lt;/span&gt;

&lt;span class="c"&gt;# 6. Install Terminal plugin in Obsidian so you never leave the app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the full setup. Start with the daily note workflow. Get that reliable first. Then add research and weekly review. The system will tell you what it needs next.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Based on xda-developers.com, starmorph.com/blog, mauriciogomes.com, dev.to/numbpill3d, mindstudio.ai, geeky-gadgets.com, and medium.com/@martk. April 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>obsidian</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>Claude Code Cheatsheet: The Terminal AI Agent That Actually Codes</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Fri, 10 Apr 2026 07:31:02 +0000</pubDate>
      <link>https://forem.com/mibii/claude-code-cheatsheet-the-terminal-ai-agent-that-actually-codes-36bk</link>
      <guid>https://forem.com/mibii/claude-code-cheatsheet-the-terminal-ai-agent-that-actually-codes-36bk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Claude Code is Anthropic's terminal-based agentic coding tool. It reads your codebase, edits files, runs commands, and manages git — all through natural language. This is your practical reference from setup to advanced workflows.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 The Mental Model: Why Not Just Use Chat?
&lt;/h2&gt;

&lt;p&gt;In chat you are the middleman:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You → copy file → paste to Claude → get answer → paste back → run → error → repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code removes you from the loop for the mechanical parts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "Add rate limiting to the auth endpoints"
Claude Code: reads files → understands architecture → edits code → runs tests → commits
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The difference:&lt;/strong&gt; Claude Code has direct access to your filesystem, terminal, and git. It acts, not just talks. You review diffs and approve — the thinking stays yours, the typing goes away.&lt;/p&gt;




&lt;h2&gt;
  
  
  📁 Project Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-project/
├── CLAUDE.md                  ← project memory, auto-loaded every session
├── .claude/
│   ├── settings.json          ← hooks config (commit to git)
│   ├── settings.local.json    ← permissions (gitignore this)
│   ├── commands/              ← custom slash commands (.md files)
│   │   ├── review.md
│   │   └── fix-issue.md
│   ├── skills/                ← auto-activated workflow modules
│   │   ├── code-review/
│   │   │   └── SKILL.md
│   │   └── test-writer/
│   │       └── SKILL.md
│   └── agents/                ← subagent definitions (.yml files)
│       └── code-reviewer.yml
├── .mcp.json                  ← MCP server definitions
└── src/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Personal (cross-project):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.claude/
├── CLAUDE.md        ← global preferences, always loaded
├── commands/        ← personal slash commands
└── skills/          ← personal skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚙️ Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS&lt;/span&gt;
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; claude-code

&lt;span class="c"&gt;# Windows&lt;/span&gt;
winget &lt;span class="nb"&gt;install &lt;/span&gt;Anthropic.ClaudeCode

&lt;span class="c"&gt;# Linux / native binary (recommended)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://claude.ai/install.sh | bash

&lt;span class="c"&gt;# Verify&lt;/span&gt;
claude doctor

&lt;span class="c"&gt;# Authenticate&lt;/span&gt;
claude auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt; is deprecated. Use the native installer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Claude Pro ($20/mo) or Max subscription, or API key from Anthropic Console.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 First Run In Any Project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
claude          &lt;span class="c"&gt;# starts interactive session&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /init         &lt;span class="c"&gt;# generates starter CLAUDE.md from your codebase&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /status       &lt;span class="c"&gt;# see loaded context and model&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /plan         &lt;span class="c"&gt;# map project before touching anything&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start with: &lt;code&gt;"What does this project do and how is it structured?"&lt;/code&gt; — let Claude orient itself first.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 CLAUDE.md — Project Memory
&lt;/h2&gt;

&lt;p&gt;Claude reads this every session. The single most impactful thing to set up.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Project: E-commerce API&lt;/span&gt;

&lt;span class="gu"&gt;## Build &amp;amp; Test Commands&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`npm run dev`&lt;/span&gt; — start dev server on port 3000
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`npm test`&lt;/span&gt; — run Jest test suite
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`npm run lint`&lt;/span&gt; — ESLint + Prettier check
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`npm run build`&lt;/span&gt; — production build

&lt;span class="gu"&gt;## Architecture&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Next.js 15 with App Router
&lt;span class="p"&gt;-&lt;/span&gt; PostgreSQL with Prisma ORM
&lt;span class="p"&gt;-&lt;/span&gt; Authentication via JWT (see src/auth/)
&lt;span class="p"&gt;-&lt;/span&gt; All API routes in src/app/api/

&lt;span class="gu"&gt;## Code Conventions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; TypeScript strict mode — no &lt;span class="sb"&gt;`any`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Server components by default; &lt;span class="sb"&gt;`"use client"`&lt;/span&gt; only when needed
&lt;span class="p"&gt;-&lt;/span&gt; Write tests for all new utility functions
&lt;span class="p"&gt;-&lt;/span&gt; Conventional commits: feat:, fix:, chore:, docs:

&lt;span class="gu"&gt;## What NOT to Do&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Never modify db/migrations/ manually
&lt;span class="p"&gt;-&lt;/span&gt; Never commit .env files
&lt;span class="p"&gt;-&lt;/span&gt; Don't use &lt;span class="sb"&gt;`console.log`&lt;/span&gt; — use logger.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Rules for a good CLAUDE.md:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Target 50–100 lines. Every line should earn its place.&lt;/li&gt;
&lt;li&gt;Ask: "Would removing this cause Claude to make a mistake?" If no → cut it.&lt;/li&gt;
&lt;li&gt;500+ lines = context bloat = Claude ignores rules buried inside.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;# text&lt;/code&gt; shortcut inside a session to instantly append a note.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;/memory&lt;/code&gt; to open and edit it mid-session.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⌨️ CLI Flags
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&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;claude "prompt"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Start with a prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude -p "prompt"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;One-shot, non-interactive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude -c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Continue last session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude --resume&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Resume by ID or name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude -n "name"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Name the session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude --worktree&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run in isolated git worktree&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude --effort high&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Max reasoning effort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude --model opus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Override model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude --add-dir ../lib&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Grant access to additional directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude --debug&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enable debug logging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;claude --allowedTools "Bash(git:*)"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Restrict tool access&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ⚡ Slash Commands
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Session
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&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;/clear&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete all conversation history&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;Compress context into summary (keeps thread)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/context&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;View token usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/rewind&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Undo last turn&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;Show token costs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Model &amp;amp; Config
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&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;/model&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Switch model (sonnet / opus / haiku)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/model opusplan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Plan with Opus, execute with Sonnet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;`/effort low\&lt;/td&gt;
&lt;td&gt;med\&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;{% raw %}&lt;code&gt;"ultrathink"&lt;/code&gt; keyword&lt;/td&gt;
&lt;td&gt;Trigger deep reasoning on next turn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/config&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open settings UI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Workflow
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&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;/plan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Toggle plan mode — propose before acting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Multi-agent code review pipeline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/simplify&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3-agent architecture review before PR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/batch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Parallel changes across isolated worktrees&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/loop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Schedule recurring tasks (cron-like)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/debug&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Automatic debugging workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/voice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Voice input mode&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Memory
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&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;/memory&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Edit CLAUDE.md files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Generate CLAUDE.md from codebase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;# text&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Quick-add note to memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@path&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File autocomplete in prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;!command&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run shell command inline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ⌨️ Keyboard Shortcuts
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Shift+Tab&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cycle permission modes (normal → auto-accept → plan)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Shift+Tab × 2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enter plan mode directly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Option+T&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Toggle extended thinking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Option+P&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open model picker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl+G&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open current file/diff in editor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Esc+Esc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open rewind/undo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl+C&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cancel current operation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Tab&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Toggle thinking&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧩 Skills — Auto-Activated Workflows
&lt;/h2&gt;

&lt;p&gt;Skills are Markdown modules Claude loads &lt;strong&gt;on demand&lt;/strong&gt; when context matches — not stuffed into every prompt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/skills/my-skill/
├── SKILL.md       ← instructions + YAML frontmatter
├── scripts/       ← executable automation
└── references/    ← docs loaded on demand
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example skill:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;generate-commit-messages&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Generates clear commit messages from git diffs. Use when&lt;/span&gt;
  &lt;span class="s"&gt;writing commit messages or reviewing staged changes.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Generating Commit Messages&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Run &lt;span class="sb"&gt;`git diff --staged`&lt;/span&gt; to see staged changes
&lt;span class="p"&gt;2.&lt;/span&gt; Write a commit message:
&lt;span class="p"&gt;   -&lt;/span&gt; Summary under 50 chars, imperative mood
&lt;span class="p"&gt;   -&lt;/span&gt; Blank line, then detailed description
&lt;span class="p"&gt;3.&lt;/span&gt; Follow conventional commits: feat:, fix:, docs:, chore:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Skills vs Commands:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; = comprehensive workflows, auto-invoked by context match&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commands&lt;/strong&gt; = quick prompts, invoked explicitly with &lt;code&gt;/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🪝 Hooks — Deterministic Event Scripts
&lt;/h2&gt;

&lt;p&gt;Hooks run shell scripts at lifecycle points. Use for behavior Claude can't reliably self-enforce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In &lt;code&gt;.claude/settings.json&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PostToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Write(*.py)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"python -m black &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$file&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo 'Running: $TOOL_INPUT'"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Stop"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"notify-send 'Claude finished'"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key hook events:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Event&lt;/th&gt;
&lt;th&gt;Blockable&lt;/th&gt;
&lt;th&gt;When&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Before any tool executes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;After tool completes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreCompact&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Before context compaction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PermissionRequest&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Permission dialog shown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;WorktreeCreate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Before new worktree&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TaskCompleted&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Task marked complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Stop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Claude finished turn&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Common patterns:&lt;/strong&gt; auto-format on write, block dangerous commands, secret detection pre-commit, notify on completion.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Subagents — Parallel Isolated Workers
&lt;/h2&gt;

&lt;p&gt;Subagents are specialized Claude instances with their own context windows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Define in &lt;code&gt;.claude/agents/&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;code-reviewer&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Use for thorough code reviews. Focus on security, performance, maintainability.&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-sonnet-4-6&lt;/span&gt;
&lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;orange&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="s"&gt;You are an expert code reviewer.&lt;/span&gt;
&lt;span class="na"&gt;Structure all feedback as&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Summary → Critical Issues → Suggestions → Positives.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Agent team patterns:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern&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;strong&gt;Orchestrator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Central dispatcher routes tasks to specialists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pipeline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sequential handoff (research → draft → review)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Map-Reduce&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Parallel then merge (review 10 files at once)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Supervisor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Monitor and retry failed agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Swarm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dynamic peer delegation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Boris Cherny (Claude Code creator) runs 10–15 sessions simultaneously with separate git worktrees. Each session gets its own plan. Competing implementations are then compared.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🔌 MCP Servers — External Tool Connections
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add via CLI&lt;/span&gt;
claude mcp add github &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;-y&lt;/span&gt; @modelcontextprotocol/server-github
claude mcp add playwright &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;-y&lt;/span&gt; @playwright/mcp

&lt;span class="c"&gt;# Or in .mcp.json (committed, shared with team)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"github"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-github"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"postgres"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@mcp/postgres"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"DB_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${DATABASE_URL}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Popular MCP servers:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Server&lt;/th&gt;
&lt;th&gt;What it unlocks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;PRs, issues, repos, actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JIRA / Linear&lt;/td&gt;
&lt;td&gt;Ticket workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slack&lt;/td&gt;
&lt;td&gt;Notifications, search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Postgres / Supabase&lt;/td&gt;
&lt;td&gt;Direct DB queries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Playwright&lt;/td&gt;
&lt;td&gt;Browser automation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notion&lt;/td&gt;
&lt;td&gt;Knowledge base&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📊 Context Management
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0–50%&lt;/td&gt;
&lt;td&gt;🟢&lt;/td&gt;
&lt;td&gt;Work freely&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;50–70%&lt;/td&gt;
&lt;td&gt;🟡&lt;/td&gt;
&lt;td&gt;Monitor with &lt;code&gt;/context&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;70–90%&lt;/td&gt;
&lt;td&gt;🟠&lt;/td&gt;
&lt;td&gt;Run &lt;code&gt;/compact&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;90%+&lt;/td&gt;
&lt;td&gt;🔴&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/clear&lt;/code&gt; — mandatory&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;/clear&lt;/code&gt; vs &lt;code&gt;/compact&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/compact&lt;/code&gt; — summarizes history, preserves thread. Use between sub-tasks.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/clear&lt;/code&gt; — deletes all history. Use when switching to a different task entirely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;File edits persist after both. Only the conversation is affected.&lt;/p&gt;




&lt;h2&gt;
  
  
  💸 Cost Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/effort low&lt;/code&gt; for quick iteration — saves thinking tokens&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/model haiku&lt;/code&gt; for mechanical repetitive tasks (renaming, formatting)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/compact&lt;/code&gt; proactively — larger context = higher cost per token&lt;/li&gt;
&lt;li&gt;Batch API: 60% off for non-urgent async work&lt;/li&gt;
&lt;li&gt;Prompt Caching: 30% savings on repetitive sessions with same CLAUDE.md&lt;/li&gt;
&lt;li&gt;Per-skill effort: add &lt;code&gt;effort: low&lt;/code&gt; to commit/scaffold skills, &lt;code&gt;effort: high&lt;/code&gt; to security-audit skills&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚡ The Core Workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. cd project &amp;amp;&amp;amp; claude

2. "What does this project do?"    ← orient Claude first

3. Shift+Tab → Plan Mode
   "Implement OAuth2 with PKCE"    ← Claude proposes, you review

4. Approve the plan

5. Shift+Tab → Normal Mode         ← Claude executes
   (review diffs, accept/reject)

6. /review                         ← multi-agent review

7. git diff                        ← your final check

8. /compact (if context &amp;gt; 70%)

9. Repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt; Plan Mode for anything touching 3+ files. Direct ask for obvious single-line fixes.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 Who Is This For
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Use Claude Code if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You work in the terminal and are comfortable reading diffs&lt;/li&gt;
&lt;li&gt;Your tasks involve multiple files or whole-codebase understanding&lt;/li&gt;
&lt;li&gt;You want to keep your existing tools and just add AI to the loop&lt;/li&gt;
&lt;li&gt;You have repetitive mechanical work (tests, docs, refactoring) eating time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;❌ &lt;strong&gt;Skip Claude Code if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want inline autocomplete in an IDE → use Cursor or Copilot&lt;/li&gt;
&lt;li&gt;You're doing a quick one-off question → chat is faster and free&lt;/li&gt;
&lt;li&gt;You need enterprise audit trails and compliance → look at Amp&lt;/li&gt;
&lt;li&gt;You don't yet read diffs comfortably → build that skill first&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🆚 Claude Code vs Other Tools
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Terminal-native, agentic, whole-codebase tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IDE-integrated autocomplete + chat panel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GitHub Copilot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Inline autocomplete, tight GitHub integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Aider&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lightweight CLI alternative, supports local models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemini CLI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Visual assets, free tier to experiment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude chat&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One-off questions, no file access needed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📚 Key Resources
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;Where&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Official docs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;code.claude.com/docs&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skills docs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;code.claude.com/docs/en/skills&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hooks docs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;code.claude.com/docs/en/hooks&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP servers&lt;/td&gt;
&lt;td&gt;&lt;code&gt;code.claude.com/docs/en/mcp&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Awesome Claude Code&lt;/td&gt;
&lt;td&gt;&lt;code&gt;github.com/hesreallyhim/awesome-claude-code&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community skills&lt;/td&gt;
&lt;td&gt;&lt;code&gt;skillsplayground.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ultimate guide&lt;/td&gt;
&lt;td&gt;&lt;code&gt;github.com/FlorianBruniaux/claude-code-ultimate-guide&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;em&gt;Based on official Claude Code documentation (code.claude.com), shipyard.build/blog, blakecrosley.com, FlorianBruniaux/claude-code-ultimate-guide, mindwiredai.com. April 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>OpenClaw Cheatsheet: The Autonomous AI Agent That Runs on Your Machine</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Fri, 10 Apr 2026 07:27:15 +0000</pubDate>
      <link>https://forem.com/mibii/openclaw-cheatsheet-the-autonomous-ai-agent-that-runs-on-your-machine-50gj</link>
      <guid>https://forem.com/mibii/openclaw-cheatsheet-the-autonomous-ai-agent-that-runs-on-your-machine-50gj</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — OpenClaw is an open-source autonomous AI agent runtime. It connects an LLM of your choice to your machine, your files, and your messaging apps. It has 247k+ GitHub stars. It is powerful and genuinely dangerous if misconfigured. This article is your map.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 The Mental Model
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You (Telegram / iMessage / Discord)
        ↓
   Gateway — always-on router, never reasons
        ↓
  Agent Runtime — calls LLM, executes tools, loops
        ↓
   LLM (Claude / GPT / Ollama / DeepSeek — your choice)
        ↓
 Files · Browser · Email · Shell · APIs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;LLM = the brain. OpenClaw = the hands, legs, and dispatcher.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is not a chatbot. It takes actions, not just generates text. It can read your email while you sleep, process files on a schedule, and reply to your Telegram messages on your behalf — adaptively, not from a rigid script.&lt;/p&gt;




&lt;h2&gt;
  
  
  📁 Workspace File Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.openclaw/
├── openclaw.json          ← main config (models, channels, agents)
└── workspace/
    ├── SOUL.md            ← agent's personality and boundaries
    ├── AGENTS.md          ← operating instructions
    ├── MEMORY.md          ← what the agent remembers (auto-updated)
    ├── USER.md            ← your profile (name, timezone, accounts)
    ├── TOOLS.md           ← tool notes and conventions
    ├── BOOTSTRAP.md       ← first-run setup ritual (deleted after)
    ├── HEARTBEAT.md       ← background check-in schedule
    ├── IDENTITY.md        ← agent name, avatar, emoji
    └── skills/
        └── my-skill/
            ├── SKILL.md   ← instructions + YAML frontmatter
            └── scripts/   ← executable automation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Think of &lt;code&gt;SOUL.md&lt;/code&gt; as your &lt;code&gt;CLAUDE.md&lt;/code&gt; — but for your always-on agent. Start here before anything else.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;openclaw

&lt;span class="c"&gt;# Windows&lt;/span&gt;
winget &lt;span class="nb"&gt;install &lt;/span&gt;OpenClaw.OpenClaw

&lt;span class="c"&gt;# Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://openclaw.ai/install.sh | sh

&lt;span class="c"&gt;# Verify&lt;/span&gt;
openclaw &lt;span class="nt"&gt;--version&lt;/span&gt;
openclaw doctor   &lt;span class="c"&gt;# checks your environment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Node 22+, one messaging app connected, an LLM API key (or local Ollama)&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 First Run
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw start              &lt;span class="c"&gt;# starts the Gateway daemon&lt;/span&gt;
openclaw channels list      &lt;span class="c"&gt;# see available channels&lt;/span&gt;
openclaw channels add telegram
openclaw agents add main &lt;span class="nt"&gt;--model&lt;/span&gt; anthropic:claude-opus-4-6
openclaw agents set-identity &lt;span class="nt"&gt;--from-identity&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then message your bot: &lt;code&gt;Hey, let's get you set up. Read BOOTSTRAP.md and walk me through it.&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ If your first message is a real question, BOOTSTRAP never runs. Send the setup message first.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🔧 Core CLI Commands
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&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;openclaw start&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Start the Gateway daemon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw stop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stop the Gateway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Health check&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw doctor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full environment diagnostics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw agents list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List configured agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw agents add &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create a new agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw channels list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show connected channels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw channels status --probe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Test channel connectivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw skills list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List installed skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw skills add &amp;lt;skill&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Install from ClawHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw memory search &amp;lt;query&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Semantic search your memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openclaw logs --tail 50&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stream recent logs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📝 Workspace Files — What Goes Where
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SOUL.md — Agent Constitution
&lt;/h3&gt;

&lt;p&gt;Persona, tone, hard limits. Injected every session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Identity&lt;/span&gt;
You are Alex, a personal assistant who is direct and never verbose.

&lt;span class="gh"&gt;# Hard limits&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Never send emails without explicit confirmation
&lt;span class="p"&gt;-&lt;/span&gt; Never delete files without showing what will be deleted first
&lt;span class="p"&gt;-&lt;/span&gt; Always ask before executing shell commands in production directories
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  USER.md — Your Profile
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# User Profile&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Name: Your Name
&lt;span class="p"&gt;-&lt;/span&gt; Timezone: Europe/London
&lt;span class="p"&gt;-&lt;/span&gt; Key accounts: electricity (British Gas), broadband (BT)
&lt;span class="p"&gt;-&lt;/span&gt; Morning briefing: 8:00 AM
&lt;span class="p"&gt;-&lt;/span&gt; Preferred reminder: evening before deadline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  AGENTS.md — Operating Instructions
&lt;/h3&gt;

&lt;p&gt;Build commands, code conventions, what NOT to do. Same concept as &lt;code&gt;CLAUDE.md&lt;/code&gt; in Claude Code.&lt;/p&gt;

&lt;h3&gt;
  
  
  MEMORY.md — Persistent Memory
&lt;/h3&gt;

&lt;p&gt;Auto-updated by the agent. Uses vector + BM25 search. Lives in SQLite. Do not edit manually.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Skills — Modular Capabilities
&lt;/h2&gt;

&lt;p&gt;Skills are Markdown files that tell the agent how to handle a domain. The agent reads them &lt;strong&gt;on demand&lt;/strong&gt; — not injected into every prompt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github-pr-reviewer&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Review GitHub pull requests and post structured feedback&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# GitHub PR Reviewer&lt;/span&gt;

When asked to review a pull request:
&lt;span class="p"&gt;1.&lt;/span&gt; Use web_fetch to retrieve the PR diff
&lt;span class="p"&gt;2.&lt;/span&gt; Analyze for correctness, security issues, code style
&lt;span class="p"&gt;3.&lt;/span&gt; Structure as: Summary → Issues → Suggestions
&lt;span class="p"&gt;4.&lt;/span&gt; Post via GitHub API only if explicitly asked
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Install from ClawHub:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw skills add github-pr-reviewer
openclaw skills add email-triage
openclaw skills add daily-briefing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;ClawHub has 5,700+ skills. Cisco researchers found silent data exfiltration in a community skill. Treat every SKILL.md like an &lt;code&gt;npm&lt;/code&gt; package from an unknown author — read the code first.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🪝 Hooks — Event-Driven Automation
&lt;/h2&gt;

&lt;p&gt;Hooks are TypeScript handlers that fire on lifecycle events. Deterministic logic that runs before/after the LLM.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Event&lt;/th&gt;
&lt;th&gt;When it fires&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;command:new&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;New session starts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;agent:bootstrap&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Before system prompt is finalized&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;before_tool_call&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Before any tool executes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;after_tool_call&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;After tool completes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;before_compaction&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Before context is compressed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;session_start / session_end&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Session lifecycle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gateway_start / gateway_stop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Daemon lifecycle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreCommit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Before git commit (secret detection)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example use cases:&lt;/strong&gt; auto-format on file write, block dangerous shell commands, log all tool calls, inject environment context at session start.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Multi-Agent Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw agents add main &lt;span class="nt"&gt;--model&lt;/span&gt; anthropic:claude-opus-4-6
openclaw agents add code-reviewer &lt;span class="nt"&gt;--model&lt;/span&gt; anthropic:claude-opus-4-6 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--workspace&lt;/span&gt; ./src &lt;span class="nt"&gt;--tools&lt;/span&gt; file,shell,git
openclaw agents add researcher &lt;span class="nt"&gt;--model&lt;/span&gt; openai:gpt-4.1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tools&lt;/span&gt; web_fetch,file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Agent team patterns:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern&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;strong&gt;Orchestrator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Central task dispatcher routes to specialists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pipeline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sequential handoff (research → draft → review)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Map-Reduce&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Parallel then merge (multiple files at once)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Supervisor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Monitor and retry failed tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Swarm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dynamic peer delegation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📊 Context Management
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0–50%&lt;/td&gt;
&lt;td&gt;Work freely&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;50–70%&lt;/td&gt;
&lt;td&gt;Monitor token usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;70–90%&lt;/td&gt;
&lt;td&gt;Run &lt;code&gt;/compact&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;90%+&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/clear&lt;/code&gt; — mandatory&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Memory compaction: older turns are summarized, not dropped. Semantic content preserved.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 Security — Read This Before You Start
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CVE-2026-25253 (CVSS 8.8):&lt;/strong&gt; Patched RCE — a malicious web page could leak the Gateway auth token and execute arbitrary commands. Update immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt injection is real.&lt;/strong&gt; If your agent reads emails or web pages, malicious instructions in that content can hijack it. A researcher demonstrated an agent leaking its full config (including API keys) via a spoofed email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minimum security checklist:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run before connecting to any external network&lt;/span&gt;
openclaw audit

&lt;span class="c"&gt;# Never hardcode keys — use env vars&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk-...
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENCLAW_GATEWAY_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;...

&lt;span class="c"&gt;# Add to .gitignore&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"openclaw.local.json"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; .gitignore
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;".env"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; .gitignore

&lt;span class="c"&gt;# Enable DM pairing (default — don't disable)&lt;/span&gt;
&lt;span class="c"&gt;# Only approve known users via pairing codes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Before installing any skill:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who made it? Check GitHub stars, last commit, issues&lt;/li&gt;
&lt;li&gt;What permissions does it request?&lt;/li&gt;
&lt;li&gt;Does it make outbound network calls?&lt;/li&gt;
&lt;li&gt;Read every line of SKILL.md&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧭 Who Is This For — Honestly
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Use OpenClaw if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're comfortable in a terminal and understand environment variables&lt;/li&gt;
&lt;li&gt;You need adaptive automation where logic can't be reduced to if-else&lt;/li&gt;
&lt;li&gt;You want a personal agent on your own infrastructure, data stays local&lt;/li&gt;
&lt;li&gt;You're a developer who wants to study how production AI agents actually work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;❌ &lt;strong&gt;Skip OpenClaw if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't know how to read a command-line error&lt;/li&gt;
&lt;li&gt;You need compliance, audit trails, or enterprise governance&lt;/li&gt;
&lt;li&gt;Your task has deterministic logic — a scheduler will be safer and cheaper&lt;/li&gt;
&lt;li&gt;You want a quick setup with no maintenance overhead&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚡ OpenClaw vs Other Tools
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenClaw&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Adaptive personal agent, agentic workflows, LLM-driven decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jenkins / GitHub Actions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CI/CD, reproducible pipelines, audit logs — no LLM needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;xStarter / Task Scheduler&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simple scheduled scripts, deterministic triggers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;n8n / Make / Zapier&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Visual workflow builder, SaaS integrations, no-code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LangChain / custom code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full architectural control, enterprise integrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude chat&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One-off tasks where you want to stay in the loop&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;The right tool is not the smartest one. It's the one that solves your problem with the least risk.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💡 Pro Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start minimal.&lt;/strong&gt; Add SOUL.md + USER.md first. Add skills only when you feel the need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep AGENTS.md under 500 lines.&lt;/strong&gt; Longer = context bloat = ignored rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use &lt;code&gt;--dev&lt;/code&gt; flag&lt;/strong&gt; to isolate state while experimenting: &lt;code&gt;openclaw --dev start&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Back up your workspace directory.&lt;/strong&gt; It's plain Markdown — git-track it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test skills in isolation&lt;/strong&gt; before connecting them to live channels.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run &lt;code&gt;openclaw audit&lt;/code&gt; regularly&lt;/strong&gt;, especially after adding new skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MEMORY.md is auto-updated&lt;/strong&gt; — the agent writes what it learns. Review it occasionally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;openclaw doctor&lt;/code&gt;&lt;/strong&gt; is your first stop for any issue.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📚 Key Resources
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Official docs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docs.openclaw.ai&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;&lt;code&gt;github.com/openclaw/openclaw&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ClawHub (skills)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;clawhub.ai&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security audit tool&lt;/td&gt;
&lt;td&gt;&lt;code&gt;openclaw audit&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community&lt;/td&gt;
&lt;td&gt;Discord via official docs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;em&gt;Based on OpenClaw documentation, freecodecamp.org, bibek-poudel.medium.com, arxiv.org (ClawSafety), digitalocean.com, and vallettasoftware.com. April 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
    <item>
      <title>OpenClaw: автономный агент для тех, кто знает что делает</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Fri, 10 Apr 2026 00:25:01 +0000</pubDate>
      <link>https://forem.com/mibii/openclaw-avtonomnyi-aghient-dlia-tiekh-kto-znaiet-chto-dielaiet-27ln</link>
      <guid>https://forem.com/mibii/openclaw-avtonomnyi-aghient-dlia-tiekh-kto-znaiet-chto-dielaiet-27ln</guid>
      <description>&lt;p&gt;В конце января 2026 года open-source проект с незамысловатым названием буквально взорвал GitHub. За несколько недель — почти 250 тысяч звёзд, форки от китайских корпораций, интерес от Tencent. Что же такое OpenClaw на самом деле?&lt;/p&gt;

&lt;p&gt;Коротко: это не ещё один чат-бот. Это агентская оболочка, которая берёт LLM (Claude, GPT, Gemini, локальные модели — на ваш выбор) и превращает её в автономного исполнителя, живущего на вашей машине или сервере.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;LLM — это мозг. OpenClaw — руки, ноги и диспетчер. Он не думает сам, но решает что сделать, когда вызвать модель, что запомнить и какой инструмент задействовать.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Как это устроено
&lt;/h2&gt;

&lt;p&gt;Архитектура OpenClaw состоит из трёх слоёв:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gateway&lt;/strong&gt; — постоянно работающий процесс, который принимает сообщения из мессенджеров (Telegram, WhatsApp, iMessage, Discord, Slack) и маршрутизирует их. Сам он не думает — только роутит.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent Runtime&lt;/strong&gt; — слой, который вызывает LLM, получает ответ, исполняет инструменты (файлы, браузер, почта, скрипты) и снова идёт к модели, пока задача не выполнена.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AGENTS.md&lt;/strong&gt; — текстовый файл, аналог CLAUDE.md, где описана личность агента, его инструменты и правила поведения.&lt;/p&gt;

&lt;p&gt;Агент работает непрерывно. Он может проверять почту пока вы спите, обрабатывать входящие файлы по расписанию, отвечать на сообщения в Telegram от вашего имени — и всё это адаптивно, не по жёсткому скрипту.&lt;/p&gt;

&lt;h2&gt;
  
  
  Для каких задач OpenClaw подходит
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Обработка входящих&lt;/strong&gt; — мониторинг почты, сортировка, черновики ответов, уведомления в Telegram по критериям&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Работа с файлами&lt;/strong&gt; — обработка документов, извлечение данных, конвертация форматов по триггеру или расписанию&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Исследования&lt;/strong&gt; — автоматический сбор информации, поиск, суммаризация с сохранением в локальные файлы&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Персональный ассистент&lt;/strong&gt; — агент в вашем мессенджере, который знает ваши предпочтения и действует от вашего имени&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ключевое отличие от обычной автоматизации: OpenClaw справляется с задачами, где нет жёсткого алгоритма. "Если письмо про счёт — ответь, что обработаем за 2 дня" — это не условие в if-else, это смысловое суждение, которое делает LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Кому это нужно, а кому нет
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Подходит:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ Разработчик или технический специалист, который комфортно работает с терминалом, понимает как работают API и знает что такое переменные окружения&lt;/p&gt;

&lt;p&gt;✅ Тот, кому нужна адаптивная автоматизация — когда логика задачи не укладывается в жёсткий скрипт и требует "понимания" контекста&lt;/p&gt;

&lt;p&gt;✅ Исследователь или indie-разработчик, который хочет персонального агента с полным контролем над данными на своей инфраструктуре&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Не подходит:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;❌ Тот, кто не понимает как запустить командную строку. Один из мейнтейнеров проекта прямо написал: &lt;em&gt;"Если вы не понимаете как запустить командную строку — этот проект слишком опасен для вас"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;❌ Команды с жёсткими требованиями к compliance и аудиту. Агент с доступом к файлам, почте и API — это широкая поверхность атаки&lt;/p&gt;

&lt;p&gt;❌ Задачи с детерминированной логикой — здесь LLM только добавляет непредсказуемость туда, где она не нужна&lt;/p&gt;

&lt;h2&gt;
  
  
  Когда лучше выбрать другой инструмент
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&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;strong&gt;Jenkins / GitHub Actions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CI/CD, деплой, тесты. Жёсткие пайплайны где важна воспроизводимость и аудит. LLM здесь лишний.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;xStarter / Task Scheduler&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Запуск скриптов по расписанию или триггеру. Если логика простая и детерминированная — xStarter проще, предсказуемее и не требует API-ключей.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;n8n / Make / Zapier&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Интеграции между сервисами с визуальным редактором. Если нужно соединить CRM с почтой — не нужен агент с LLM.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LangChain / собственный код&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Если нужен полный контроль над архитектурой агента, специфические инструменты или enterprise-интеграции.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Просто чат с Claude&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Если задача разовая, требует вашего участия и контроля — зачем городить агента? Чат быстрее и понятнее.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Критика: что реально стоит знать
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Безопасность.&lt;/strong&gt; Исследователи из Cisco протестировали сторонний скилл для OpenClaw и обнаружили в нём эксфильтрацию данных и prompt injection — без каких-либо предупреждений. Репозиторий скиллов не имеет достаточной проверки. Устанавливайте только то, что понимаете.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Агент работает с реальными данными в реальном времени. Он может отправить письмо, удалить файл, создать профиль на датинг-платформе — был реальный случай, когда агент завёл аккаунт на MoltMatch без явного указания пользователя. Широкие права + автономность = непредсказуемые побочные эффекты.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt injection&lt;/strong&gt; — отдельная история. Если агент читает письма или веб-страницы, вредоносные инструкции в этих данных могут перехватить управление. Это не баг OpenClaw конкретно — это системная проблема всех агентских систем с широким доступом.&lt;/p&gt;

&lt;p&gt;В марте 2026 года Китай запретил государственным структурам использовать OpenClaw по соображениям безопасности. Это показательно.&lt;/p&gt;

&lt;h2&gt;
  
  
  Вывод
&lt;/h2&gt;

&lt;p&gt;OpenClaw — это мощный инструмент для конкретного профиля пользователя. Если вы технический специалист, хотите реального автономного агента на своей инфраструктуре, понимаете риски и готовы аккуратно управлять правами доступа — это интересный эксперимент с реальной практической ценностью.&lt;/p&gt;

&lt;p&gt;Если вы хотите просто "автоматизировать рутину" и не готовы разбираться в том, что именно агент делает с вашими данными — возьмите xStarter, n8n или Make. Они скучнее, но предсказуемее. А предсказуемость в автоматизации часто важнее интеллекта.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Хороший инструмент — не самый умный, а тот, который решает вашу задачу с минимальными рисками. OpenClaw умный. Но риски у него настоящие.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;Материал основан на открытых источниках: Wikipedia, freecodecamp.org, arxiv.org, официальная документация openclaw.ai. Апрель 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>agents</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Hunting Vulnerable axios Versions Across Your Node.js Monorepo</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Thu, 02 Apr 2026 10:08:20 +0000</pubDate>
      <link>https://forem.com/mibii/hunting-vulnerable-axios-versions-across-your-nodejs-monorepo-2hbj</link>
      <guid>https://forem.com/mibii/hunting-vulnerable-axios-versions-across-your-nodejs-monorepo-2hbj</guid>
      <description>&lt;p&gt;When a dependency ships a bad version, your &lt;code&gt;node_modules&lt;/code&gt; tree doesn't warn you. Here's a small PowerShell script that does.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Large Node.js projects accumulate dependencies fast. A monorepo with dozens of services can have hundreds of nested &lt;code&gt;package.json&lt;/code&gt; and &lt;code&gt;package-lock.json&lt;/code&gt; files, each potentially pinning a different version of a shared library.&lt;/p&gt;

&lt;p&gt;When a specific version of a popular library — say, &lt;code&gt;axios&lt;/code&gt; — turns out to carry a bug or a security regression, you need to know &lt;em&gt;exactly&lt;/em&gt; where it's referenced, across every file, at a glance. Grepping by hand doesn't scale, and most dependency auditing tools only look at the top-level lockfile.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Why these versions?&lt;/strong&gt;&lt;br&gt;
Versions &lt;code&gt;1.14.1&lt;/code&gt; and &lt;code&gt;0.30.4&lt;/code&gt; are the target of this scanner — known problematic releases that should be identified and upgraded as soon as possible.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The approach
&lt;/h2&gt;

&lt;p&gt;The script is a two-phase scanner written in PowerShell. It's designed to be dropped anywhere in your repo and run with a single command — no dependencies, no config files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1&lt;/strong&gt; recursively walks the directory tree from wherever the script lives, collecting all &lt;code&gt;package.json&lt;/code&gt; and &lt;code&gt;package-lock.json&lt;/code&gt; files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$foundFiles&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Get-ChildItem&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$startPath&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Recurse&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Where-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$targetFiles&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-contains&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Phase 2&lt;/strong&gt; reads each file line by line, looking for the keyword &lt;code&gt;axios&lt;/code&gt;. Every matching line is printed to the console with its line number, and the keyword is highlighted in red so you can spot it instantly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="kr"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-lt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="kr"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Escape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$keyword&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nv"&gt;$hitList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Line&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Gotcha — reserved variable name&lt;/strong&gt;&lt;br&gt;
PowerShell's automatic variable &lt;code&gt;$matches&lt;/code&gt; is populated by the &lt;code&gt;-match&lt;/code&gt; operator itself. Using it as a collection causes a cryptic runtime error: &lt;em&gt;"A hash table can only be added to another hash table."&lt;/em&gt;&lt;br&gt;
The fix: name your collection &lt;code&gt;$hitList&lt;/code&gt; and use &lt;code&gt;List[PSCustomObject]&lt;/code&gt; instead of a plain array.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# WRONG — $matches is reserved by PowerShell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$matches&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;@()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$matches&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c"&gt;# runtime error!&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# CORRECT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$hitList&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;System.Collections.Generic.List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]]::&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$hitList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The alarm system
&lt;/h2&gt;

&lt;p&gt;Beyond general search, the script maintains a second collection — &lt;code&gt;$alarmList&lt;/code&gt; — that fires only when a line contains one of the flagged version strings. This runs in the same loop, so there's zero extra I/O cost.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$dangerVersions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;@(&lt;/span&gt;&lt;span class="s2"&gt;"1.14.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.30.4"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="kr"&gt;foreach&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ver&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$dangerVersions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="kr"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Escape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ver&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nv"&gt;$alarmList&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;PSCustomObject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Version&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$ver&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;File&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DirectoryName&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c"&gt;# full path to folder&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;LineNum&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$lines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Trim&lt;/span&gt;&lt;span class="err"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After all files are scanned, the alarm block prints a consolidated summary at the very bottom — version found, filename, directory path, and the exact line — so there's no ambiguity about what needs updating:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!                                              !
!   ⚠️  ALARM — VULNERABLE VERSIONS DETECTED  ⚠️  !
!                                              !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  ▶ Version    : 0.30.4
  ▶ File       : package-lock.json
  ▶ Directory  : C:\projects\my-app\services\api
  ▶ Line #     : 1042
  ▶ Content    : "version": "0.30.4",
  ───────────────────────────────────────────────────
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The console output also uses color: &lt;code&gt;axios&lt;/code&gt; keyword in red, dangerous version numbers in yellow, file headers in magenta — making it easy to scan hundreds of lines at a glance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Running the script
&lt;/h2&gt;

&lt;p&gt;Save the file as &lt;code&gt;axios-finder.ps1&lt;/code&gt;, place it anywhere inside your project root, then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\axios-finder.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your execution policy blocks unsigned scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;powershell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ExecutionPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Bypass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;\axios-finder.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No Node.js, no npm, no extra modules required. It runs on any machine with PowerShell 5.1 or later — which means any modern Windows box, out of the box.&lt;/p&gt;




&lt;h2&gt;
  
  
  Full script
&lt;/h2&gt;

&lt;p&gt;The complete script with colored output, per-file hit counts, version highlighting, and the alarm block is available on GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/mibii/axios-bad-version-finder" rel="noopener noreferrer"&gt;https://github.com/mibii/axios-bad-version-finder&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Found this useful? &lt;strong&gt;&lt;a href="https://buymeacoffee.com/techmobilebox" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;/strong&gt; , Drop a ❤️ or leave a comment — happy to extend the script to support other libraries or output formats.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>security</category>
      <category>node</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Prop Trading 2.0 (Trade-to-Earn)</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Wed, 11 Mar 2026 23:20:15 +0000</pubDate>
      <link>https://forem.com/mibii/prop-trading-20-trade-to-earn-3830</link>
      <guid>https://forem.com/mibii/prop-trading-20-trade-to-earn-3830</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Q-big-One trading core is an alternative to MetaTrader 4/5.&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  I developed my own trading core and called it Q-big-One.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Event Sourcing + WAL: Full audit trail. Instant crash recovery via event replay.&lt;/li&gt;
&lt;li&gt;Full Source Control: Every line is yours. Customise risk, commissions, execution.&lt;/li&gt;
&lt;li&gt;Cloud Native: Docker/Kubernetes ready. AWS, GCP, bare metal.&lt;/li&gt;
&lt;li&gt;Multi-Asset: Crypto, Forex, CFD — all in one engine with per-symbol config.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkc1zzvbzw06t6i0t31j5.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkc1zzvbzw06t6i0t31j5.JPG" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Cases:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Ultimate Sandbox&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Every broker platform is just a sandbox until orders hit the LP. This engine gives you the exact same technology brokers use to "play" against traders. Understand the mechanics of B-Book, slippage, and stop-hunts by being the one who controls them.&lt;/p&gt;

&lt;p&gt;Master the Game by Owning the Board&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;A-Book / Real Market Bridge&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Connect the "Tick Feeder" module to your real Binance/Bybit account via API keys. The core now acts as a massive router. You trade on 100 internal accounts inside the core, and the core aggregates net exposure and hedges it on the real market.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Internal Virtual Volume → Real Liquidity&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Self-Hosted "Personal Prop Firm"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Stop paying fees to prop firms for challenges. Spin up your own environment. Create unlimited accounts, run different bots, and act as the &lt;strong&gt;Liquidity Provider&lt;/strong&gt; for your own strategies. Test execution, slippage, and spread widening in a controlled "Matrix" where you control the laws of physics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infinite AccountsCustom Risk RulesZero Fees&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sample use case Prop Trading 2.0 (Trade-to-Earn: &lt;a href="https://qbig.one/" rel="noopener noreferrer"&gt;(https://qbig.one/)&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;No loss money, No registration, No charge money. You enter the terminal, see a pool of funded accounts, and hit CLAIM. &lt;br&gt;
The backend mints an anonymous JWT, binds it to your device, and hands you the keys. Strategy flopped? Hit RELEASE, return the account, grab another. Zero friction, zero commitment. Earn your first grade. &lt;/p&gt;

&lt;h2&gt;
  
  
  Аккаунт эволюционирует: 🔘 Bronze ➔ 🥈 Silver ➔ 👑 Proven Alpha.
&lt;/h2&gt;

&lt;p&gt;Prop Firm offers no-charge options. Prop Firm provides capital (virtual) to everyone; if a trader is successful, they receive PROVEN_ALPHA status, A-Book Bridge begins mirroring it to the real market, and Prop Firm shares the profit with the trader.&lt;/p&gt;

</description>
      <category>qbigone</category>
      <category>tradingengine</category>
      <category>rust</category>
      <category>propfirm</category>
    </item>
    <item>
      <title>Building Your Own PowerShell Security Auditor!</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Sun, 01 Jun 2025 13:19:35 +0000</pubDate>
      <link>https://forem.com/mibii/building-your-own-powershell-security-auditor-4lap</link>
      <guid>https://forem.com/mibii/building-your-own-powershell-security-auditor-4lap</guid>
      <description>&lt;p&gt;From Novice to Cyber Helper: Building Your Own PowerShell Security Auditor! &lt;/p&gt;

&lt;h2&gt;
  
  
  Hey fellow coding enthusiasts!
&lt;/h2&gt;

&lt;p&gt;We all started our programming journey somewhere, and one of the best ways to learn is by building something practical that solves a real (even if small) problem. Today, I want to share the experience of developing a simple yet useful tool in PowerShell: a local system security auditor. This project perfectly demonstrates how you can combine system commands, process manipulation, and even create a graphical user interface (GUI) – all using PowerShell!&lt;br&gt;
We'll go from an idea to an interactive application that not only highlights suspicious activity but also offers to take action.&lt;/p&gt;
&lt;h2&gt;
  
  
  Let's dive in!
&lt;/h2&gt;

&lt;p&gt;Step 1: The Idea and First Drafts – What Do We Want to Check?&lt;br&gt;
Initially, the task was simple: write a script to quickly assess certain security aspects of a local system. The key areas we decided to focus on were:&lt;br&gt;
Network Activity: Which ports is our system listening on? Are there any non-standard ones or processes with suspiciously high PIDs (Process Identifiers)?&lt;br&gt;
Process Integrity: Are all running processes digitally signed? Unsigned binaries can be a sign of trouble.&lt;br&gt;
The first thought for network analysis was the good old netstat -ano. For checking signatures, the built-in Windows mechanism Get-AuthenticodeSignature.&lt;/p&gt;
&lt;h1&gt;
  
  
  Initial (simplified) idea
&lt;/h1&gt;

&lt;p&gt;$netstatOutput = netstat -ano | findstr LISTENING&lt;/p&gt;
&lt;h1&gt;
  
  
  ... some text parsing here ...
&lt;/h1&gt;

&lt;p&gt;$processes = Get-Process&lt;br&gt;
foreach ($proc in $processes) {&lt;br&gt;
    # ... signature check ...&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This is a starting point. But we want to do it cooler and more "PowerShell-idiomatically"!&lt;br&gt;
Step 2: The PowerShell Way – Objects Instead of Plain Text&lt;br&gt;
Parsing the text output of netstat is a thankless and fragile task. PowerShell loves objects! And for network connections, there's a wonderful cmdlet: Get-NetTCPConnection.&lt;/p&gt;

&lt;p&gt;✅ Key Insight: Instead of parsing strings, Get-NetTCPConnection -State Listen immediately gives us objects with convenient properties like LocalPort and OwningProcess (that very PID). This makes the code cleaner and more reliable.&lt;/p&gt;
&lt;h1&gt;
  
  
  A more "correct" approach
&lt;/h1&gt;

&lt;p&gt;$listeningConnections = Get-NetTCPConnection -State Listen&lt;br&gt;
foreach ($conn in $listeningConnections) {&lt;br&gt;
    $pid = $conn.OwningProcess&lt;br&gt;
    $port = $conn.LocalPort&lt;br&gt;
    # ... further analysis ...&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Additionally, we decided it would be useful to see not just the PID for each listening port, but also the path to the process's executable. This is done using Get-Process -Id $pid | Select-Object Path, ProcessName.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Graphical User Interface – Making It Pretty and Understandable
&lt;/h2&gt;

&lt;p&gt;Outputting results to the console is fine, but a popup window with a report looks much more professional and user-friendly. This is where the magic of the .NET Framework, accessible directly from PowerShell, comes in!&lt;br&gt;
✅ Key Insight: Add-Type -AssemblyName System.Windows.Forms opens up the entire world of Windows Forms to us. We can create forms, text boxes, buttons – everything needed for a simple GUI.&lt;br&gt;
Add-Type -AssemblyName System.Windows.Forms&lt;br&gt;
Add-Type -AssemblyName System.Drawing # For sizes, colors, etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Show-ResultPopup {
    param ($text)
    $popup = New-Object Windows.Forms.Form
    $popup.Text = "System Audit Result"
    # ... configure sizes, controls (TextBox) ...
    $popup.ShowDialog() # Show the window modally
    $popup.Dispose()    # IMPORTANT: Release resources!
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don't forget .Dispose() for forms! This releases the resources used by GUI elements when they are no longer needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Signature Check – Trust, but Verify
&lt;/h2&gt;

&lt;p&gt;For checking the digital signatures of executable files, Get-AuthenticodeSignature -FilePath $path is our best friend. If the Status property of the result is not Valid, it's a reason for concern (or, as we found out, sometimes a peculiarity of UWP apps).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$signature = Get-AuthenticodeSignature -FilePath "C:\Path\To\File.exe"
if ($signature.Status -ne [System.Management.Automation.SignatureStatus]::Valid) {
    # Suspicious!
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Interactivity – Giving the User a Choice!
&lt;/h2&gt;

&lt;p&gt;Simply showing a list of "suspicious" unsigned processes is half the battle. What if we gave the user the option to try and "kill" (terminate) them right there?&lt;br&gt;
✅ Key Insight: Here we combine System.Windows.Forms.MessageBox to request confirmation from the user and Stop-Process to terminate the process.&lt;br&gt;
Request Admin Rights: Terminating processes often requires administrator privileges. The script should check for this and, if possible, offer to restart with elevated rights.&lt;br&gt;
Confirmation Dialog: For each "problematic" process, display a MessageBox with details (name, PID, path) and the question: "Terminate?".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$userChoice = [System.Windows.Forms.MessageBox]::Show($ownerForm, "Terminate process X?", "Confirmation", [System.Windows.Forms.MessageBoxButtons]::YesNo)
if ($userChoice -eq [System.Windows.Forms.DialogResult]::Yes) {
    Stop-Process -Id $processId -Force -ErrorAction SilentlyContinue
    # Log the result
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note the -Force for Stop-Process and error handling (at least -ErrorAction SilentlyContinue or a full try-catch).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: A Beginner's Headache – Encodings! 😵
&lt;/h2&gt;

&lt;p&gt;During development, especially when we added non-English messages (Cyrillic in our original case) to MessageBox, we ran into a problem: instead of proper characters, we saw "mojibake" (Ð”Ð»Ñ etc.).&lt;br&gt;
✅ Key Insight (and a common beginner mistake): This is an encoding issue with the .ps1 file. PowerShell expects a certain encoding (often UTF-8 with BOM), but the file might be saved in another (e.g., ANSI).&lt;br&gt;
Solution: Always save your .ps1 files containing non-ASCII characters in UTF-8 with BOM (Byte Order Mark) encoding. Most code editors (VS Code, PowerShell ISE, Notepad++) allow you to do this.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Did We End Up With?
&lt;/h2&gt;

&lt;p&gt;We created a small but functional PowerShell script that:&lt;br&gt;
Analyzes network listeners.&lt;br&gt;
Checks the digital signatures of running processes.&lt;br&gt;
Displays results in a user-friendly GUI.&lt;br&gt;
Interactively offers the user to terminate processes with invalid signatures.&lt;/p&gt;

&lt;p&gt;Considers the need for administrator privileges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons and Takeaways for Beginners:
&lt;/h2&gt;

&lt;p&gt;Use PowerShell's Native Tools: Cmdlets that work with objects (Get-NetTCPConnection, Get-Process) are preferable to parsing text from external utilities.&lt;br&gt;
Don't Be Afraid of .NET: PowerShell integrates beautifully with .NET, opening up vast possibilities (e.g., for GUI creation).&lt;br&gt;
Handle Errors: try-catch blocks and proper use of -ErrorAction will make your script more robust.&lt;br&gt;
Manage Resources: For GUI objects, don't forget Dispose().&lt;br&gt;
Encodings – Your Friend (or Foe): Remember UTF-8 with BOM for files with international characters.&lt;br&gt;
Iterative Development: Start small and gradually add functionality. Our script also went through several stages of improvement!&lt;/p&gt;

&lt;p&gt;This project is an excellent example of how you can combine system administration, a bit of programming, and user interface creation with a powerful tool like PowerShell.&lt;br&gt;
I hope this experience inspires you to create your own useful utilities! Experiment, learn, and share your successes.&lt;br&gt;
Happy coding! 💻✨&lt;/p&gt;

</description>
      <category>ps1</category>
    </item>
    <item>
      <title>Uber Taxi Idea for everything</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Thu, 17 Apr 2025 12:48:59 +0000</pubDate>
      <link>https://forem.com/mibii/uber-taxi-idea-for-everything-1l8n</link>
      <guid>https://forem.com/mibii/uber-taxi-idea-for-everything-1l8n</guid>
      <description>&lt;p&gt;Uber Taxi Idea for everything. &lt;br&gt;
   Do you have something to offer others, but still don't have your own website? Or you have a website or a page on a social network, but you need to increase the visibility of your offers. &lt;br&gt;
The service &lt;a href="https://infometka.com" rel="noopener noreferrer"&gt;https://infometka.com&lt;/a&gt; let your offers become more and more visible. &lt;br&gt;
   The idea of ​​the service is to grow together, and not to create separate, disparate websites that each one has to promote separately to achieve visibility. Infometka on the map - it looks like your mini website on the Globe map. It will connect you with your customers (using a feedback form, links to your social networks, direct chat or bot)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrc6txcrvw1c3vi024ao.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrc6txcrvw1c3vi024ao.JPG" alt="Image description" width="800" height="938"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp2q5hvgokcnsox7gruz.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp2q5hvgokcnsox7gruz.JPG" alt="Image description" width="800" height="936"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>infometka</category>
      <category>visibility</category>
      <category>p2p</category>
      <category>offers</category>
    </item>
    <item>
      <title>Бесплатный стартовый веб-сайт, для потенциальных клиетов</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Mon, 10 Mar 2025 07:48:10 +0000</pubDate>
      <link>https://forem.com/mibii/biesplatnyi-startovyi-vieb-sait-dlia-potientsialnykh-kliietov-1mp1</link>
      <guid>https://forem.com/mibii/biesplatnyi-startovyi-vieb-sait-dlia-potientsialnykh-kliietov-1mp1</guid>
      <description>&lt;p&gt;В конкурентном мире фриланса, чтобы выделиться и создать лояльную клиентскую базу, требуется больше, чем просто качественное выполнение работы — это предложение реальной ценности с самого начала. Одна из эффективных стратегий — предоставить потенциальным клиентам бесплатный стартовый веб-сайт. Такой подход не только демонстрирует вашу приверженность их успеху, но и закладывает основу для будущего сотрудничества.&lt;/p&gt;

&lt;p&gt;Вот как можно преподнести эту идею, чтобы привлечь клиентов, которым нужен сайт, но которые не знают, с чего начать:&lt;/p&gt;

&lt;p&gt;Пример аргумента, который следует использовать, когда фрилансер обращается к потенциальным клиентам:&lt;/p&gt;

&lt;p&gt;Возможно, вам нужен сайт, но вы не уверены, каким он должен быть. Это нормально, поэтому я сделаю для вас сайт — бесплатно — который просто станет отправной точкой, основой для дальнейшего совершенствования. Сайт, который вы сможете дальше развивать, с моей помощью или с помощью любого другого фрилансера, или даже самостоятельно.&lt;br&gt;
Представьте, что вы получаете свой собственный сайт, который станет вашим собственным путем к новым знаниям и возможностям. Все начинается с желания что-то улучшить, с попыток узнать и понять — как это можно сделать? С помощью чего? Так вы узнаете новое, расширяете свой кругозор. К вам приходят новые идеи, открываются неожиданные перспективы.&lt;br&gt;
Мы живем в то время, когда вопросы становятся важнее ответов. Возникновение вопросов порождает желание найти ответы, а это ведет к росту и развитию. Ваш сайт может стать катализатором этого процесса, помогая вам:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Лучше понять свой бизнес или проект&lt;/li&gt;
&lt;li&gt;Найти новых клиентов и партнеров&lt;/li&gt;
&lt;li&gt;Экспериментировать с новыми идеями&lt;/li&gt;
&lt;li&gt;Учиться и развиваться в мире современных технологий.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Получив бесплатно первую версию сайта, вы, скорее всего, вернетесь ко мне за дальнейшими улучшениями или консультациями по мере развития ваших потребностей. В этот момент мы можем обсудить небольшое вознаграждение за мои постоянные услуги.&lt;br&gt;
Не упустите шанс начать это захватывающее путешествие. Давайте создадим для вас базовый сайт, который станет основой вашего присутствия в Интернете. А затем вместе мы улучшим его, адаптируем к вашим растущим потребностям и целям. Помните, каждый великий проект начинается с маленького шага. Сделайте этот шаг сегодня — свяжитесь со мной, и давайте воплотим ваши идеи в реальность!"&lt;/p&gt;

&lt;h2&gt;
  
  
  Помогаю своим клиентам продвигать их новый веб-сайт
&lt;/h2&gt;

&lt;p&gt;Вы работаете над веб-сайтом для своих клиентов? Вот дополнительный способ добавить ценность: как только сайт будет готов, предложите своему клиенту возможность разместить информацию о нем на &lt;a href="https://infometka.com/" rel="noopener noreferrer"&gt;https://infometka.com/&lt;/a&gt;. (это совершенно бесплатно). К этому моменту клиент начнет продвигать свой новый сайт и свой бизнес. (это веская причина — клиент не просто получает свой собственный новый сайт, но и начинает бесплатное продвижение)&lt;br&gt;
Эта услуга позволяет любому человеку — будь то стационарный бизнес, например кафе, или предлагающий мобильные услуги, например такси или ремонт дома, — оказаться на карте. Таким образом, ваши клиенты начнут продвигать свой новый веб-сайт и бизнес, что даст им преимущество в охвате своей аудитории. Это беспроигрышный вариант, который может сделать ваше предложение еще более привлекательным.&lt;/p&gt;

&lt;p&gt;Приняв этот подход, ориентированный на ценность, вы не только создаете доверие и взаимопонимание со своими клиентами, но и позиционируете себя как партнера в их долгосрочном успехе. Предложение бесплатного стартового сайта может привести к постоянной работе и рекомендациям, что делает его разумной стратегией на сегодняшнем рынке фриланса.&lt;/p&gt;

&lt;p&gt;Удачи и счастливого фриланса!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Most Honest Smart Contract: A Necessary Shift in Tokenization Draft</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Tue, 11 Feb 2025 11:39:45 +0000</pubDate>
      <link>https://forem.com/mibii/the-most-honest-smart-contract-a-necessary-shift-in-tokenizationdraft-3675</link>
      <guid>https://forem.com/mibii/the-most-honest-smart-contract-a-necessary-shift-in-tokenizationdraft-3675</guid>
      <description>&lt;h2&gt;
  
  
  Why We Need a Truly Fair Smart Contract
&lt;/h2&gt;

&lt;p&gt;Blockchain technology was meant to free financial systems from centralized control, but today’s token landscape tells a different story. Instead of decentralization, we see projects with hidden privileges, presales benefiting insiders, and distribution schemes designed to enrich a few at the expense of many.&lt;/p&gt;

&lt;p&gt;We don’t need another blockchain—we need a smart contract that enforces fairness at the protocol level. A contract that ensures tokens are distributed openly, over time, and without any centralized control.&lt;/p&gt;

&lt;p&gt;OpenZeppelin, the go-to library for smart contract templates, provides useful building blocks—but not moral safeguards. No existing template guarantees a fair, time-based distribution with no backdoors for the creator. That’s why this contract is necessary. It ensures that the token's value emerges from its broadest possible adoption, not from manipulation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Principles of the Most Honest Smart Contract
&lt;/h2&gt;

&lt;p&gt;For a smart contract to be truly fair, it must adhere to the following principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed Supply: The total number of tokens must be immutable from the moment of deployment.&lt;/li&gt;
&lt;li&gt;Fair Distribution: should provide mechanisms to ensure broad and time-based token distribution.&lt;/li&gt;
&lt;li&gt;No Special Preferences: The creator must have no special privileges, no reserved tokens, and no way to manipulate distribution.&lt;/li&gt;
&lt;li&gt;No Post-Deployment Control: Once deployed, the contract must be self-executing, requiring no administrative intervention.&lt;/li&gt;
&lt;li&gt;Time-Based Distribution: Tokens should be issued gradually over time to prevent early hoarding.&lt;/li&gt;
&lt;li&gt;Open Access: Anyone should be able to claim tokens, ensuring the broadest possible distribution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why OpenZeppelin Falls Short
&lt;/h2&gt;

&lt;p&gt;OpenZeppelin’s templates are designed for flexibility, not for enforcing fairness. Here’s why they don’t solve the problem:&lt;/p&gt;

&lt;p&gt;OpenZeppelin, the go-to library for smart contract templates, provides useful building blocks—but not moral safeguards. No existing template guarantees a fair, time-based distribution with no backdoors for the creator. That’s why this contract is necessary. It ensures that the token's value emerges from its broadest possible adoption, not from manipulation.&lt;/p&gt;

&lt;p&gt;No Built-in Fair Distribution: OpenZeppelin does not provide mechanisms to ensure broad and time-based token distribution.&lt;br&gt;
These features reflect the industry’s priorities—control, not fairness. That’s why this contract is different. It isn’t just code; it’s a commitment to the principles that blockchain was meant to uphold.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons from Bitcoin: Why Fairness Creates Value
&lt;/h2&gt;

&lt;p&gt;Bitcoin is the ultimate proof that fairness leads to resilience. Its success was not driven by insider allocations or liquidity tricks—it thrived because its creator disappeared, leaving behind an immutable system.&lt;/p&gt;

&lt;h2&gt;
  
  
  This contract follows the same logic:
&lt;/h2&gt;

&lt;p&gt;No Founder Control: The creator has no special privileges or allocation rights.&lt;br&gt;
No Presale or Private Investors: Everyone starts on equal footing.&lt;br&gt;
Automated, Transparent Distribution: Tokens are allocated based on a predictable and open mechanism, not hidden deals.&lt;br&gt;
This is not just a technical challenge but a moral imperative. Let us build systems that future generations will recognize as fair—systems written not in ink, but in code.&lt;/p&gt;

&lt;p&gt;The most honest token should be distributed freely, ensuring equitable access for all. Only through wide-reaching, fair distribution can a token acquire intrinsic value. &lt;/p&gt;

&lt;p&gt;In essence, the ideal model resembles testnet faucets—dispensing tokens for testing and development—but with two critical distinctions: a strict cap on total supply and a carefully designed issuance mechanism. This approach ensures fairness, decentralization, and grassroots adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lets start this journey !
&lt;/h2&gt;

&lt;p&gt;Let's return the words "decentralization" and "blockchain" to their true high meaning. And let's start creating something that, after its creation, works independently even from its creator.  &lt;a href="https://most-honest-token.gitbook.io/honest-token" rel="noopener noreferrer"&gt;Fairest and Most Honest Token Smart Contract Project&lt;/a&gt;&lt;/p&gt;

</description>
      <category>solidity</category>
      <category>smartcontract</category>
      <category>honesttoken</category>
      <category>web3</category>
    </item>
    <item>
      <title>Fairest and Most Honest Token Smart Contract</title>
      <dc:creator>mibii</dc:creator>
      <pubDate>Wed, 05 Feb 2025 11:02:06 +0000</pubDate>
      <link>https://forem.com/mibii/fairest-and-most-honest-token-smart-contract-47b9</link>
      <guid>https://forem.com/mibii/fairest-and-most-honest-token-smart-contract-47b9</guid>
      <description>&lt;p&gt;Lets start this journey ! &lt;/p&gt;

&lt;p&gt;Let's return the words decentralization and blockchain to their true high meaning. &lt;br&gt;
And let's start creating something that, after its creation, works independently even from its creator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://most-honest-token.gitbook.io/honest-token" rel="noopener noreferrer"&gt;https://most-honest-token.gitbook.io/honest-token&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Develop THE MOST HONEST TOKEN, founded on fixed token emission and the fairest distribution algorithm imaginable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Token Principles:
&lt;/h2&gt;

&lt;p&gt;No presale, ICO, IDO, or private sale.&lt;/p&gt;

&lt;p&gt;No allocations for the creator, developers, or investors.&lt;/p&gt;

&lt;p&gt;No hidden reserves or special privileges for any address.&lt;/p&gt;

&lt;p&gt;Distribution should be free, requiring only network gas fees.&lt;/p&gt;

&lt;p&gt;No post-deployment control: contract is immutable once deployed.&lt;/p&gt;

&lt;p&gt;Open-source and verifiable by anyone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://explorer.gitcoin.co/#/projects/0xc6ba6f3ab8448f15ba06aeec26fa65abef21f6356c940164f9d7b7673702e524" rel="noopener noreferrer"&gt;https://explorer.gitcoin.co/#/projects/0xc6ba6f3ab8448f15ba06aeec26fa65abef21f6356c940164f9d7b7673702e524&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mosthonesttoken</category>
      <category>web3</category>
      <category>honesttoken</category>
      <category>fairesttoken</category>
    </item>
  </channel>
</rss>
